From f382f091aa97d10056b4c433aa55298fece010d4 Mon Sep 17 00:00:00 2001
From: Marius Cramer <m.cramer@pixcept.de>
Date: Wed, 13 Aug 2014 07:16:30 -0400
Subject: [PATCH] Merge remote-tracking branch 'ispc/master'

---
 interface/web/tools/lib/lang/es_interface.lng                     |   10 
 interface/web/admin/templates/server_config_web_edit.htm          |    8 
 interface/web/help/lib/lang/es_faq_manage_questions_list.lng      |    2 
 interface/web/mail/lib/lang/es_mail_content_filter.lng            |    2 
 interface/web/mail/lib/lang/es_mail_get.lng                       |   10 
 interface/web/mail/mail_user_edit.php                             |   24 
 interface/web/admin/lib/lang/es_server_config.lng                 |  299 +-
 interface/web/client/templates/client_edit_address.htm            |    4 
 interface/web/admin/templates/system_config_mail_edit.htm         |    6 
 interface/web/themes/default/css/styles.css                       |   10 
 interface/web/client/lib/lang/nl_client.lng                       |    1 
 interface/web/client/lib/lang/tr_client.lng                       |    1 
 interface/web/mail/lib/lang/es_mail_domain_list.lng               |    2 
 interface/web/mail/lib/lang/es_mail_relay_recipient_list.lng      |    2 
 interface/web/admin/lib/lang/es_server.lng                        |    4 
 interface/web/sites/lib/lang/es_database.lng                      |   42 
 interface/web/client/lib/lang/ja_reseller.lng                     |    3 
 interface/web/sites/lib/lang/es_aps_packages_list.lng             |   12 
 interface/web/mail/lib/lang/en_mail_user_list.lng                 |    4 
 interface/web/sites/lib/lang/es_web_childdomain.lng               |  130 
 interface/web/client/lib/lang/el_client.lng                       |    1 
 interface/web/dns/templates/dns_soa_edit.htm                      |   38 
 interface/web/sites/lib/lang/es_aps_update_packagelist.lng        |    8 
 interface/web/sites/web_vhost_domain_edit.php                     |   83 
 interface/web/mail/lib/lang/es_spamfilter_policy.lng              |   50 
 interface/web/mailuser/lib/lang/es_mail_user_filter.lng           |   36 
 interface/web/dns/lib/lang/es_dns_a.lng                           |    2 
 interface/web/dns/lib/lang/es_dns_txt.lng                         |    2 
 interface/web/mail/lib/lang/es_mail_aliasdomain_list.lng          |    2 
 interface/web/dns/lib/lang/es_dns_import.lng                      |    8 
 interface/web/client/lib/lang/fr_client.lng                       |    1 
 interface/web/client/lib/lang/hr_client.lng                       |    1 
 interface/web/client/lib/lang/es.lng                              |   25 
 interface/web/client/templates/reseller_edit_address.htm          |    4 
 interface/web/client/lib/lang/es_client.lng                       |  131 
 interface/web/login/lib/lang/es_login_as.lng                      |   15 
 interface/lib/plugins/dns_dns_soa_plugin.inc.php                  |   64 
 interface/web/admin/lib/lang/es_package_install.lng               |    8 
 interface/web/sites/lib/lang/es_database_user_list.lng            |    6 
 interface/lib/classes/tools_sites.inc.php                         |   33 
 interface/web/dns/lib/lang/es_dns_alias.lng                       |    2 
 interface/web/client/lib/lang/hu_reseller.lng                     |    3 
 interface/web/mail/lib/lang/es_mail_domain.lng                    |   16 
 install/lib/update.lib.php                                        |   12 
 interface/web/client/lib/lang/tr_reseller.lng                     |    3 
 interface/web/client/lib/lang/ar_reseller.lng                     |    3 
 interface/web/mail/lib/lang/es_spamfilter_policy_list.lng         |   10 
 interface/web/mail/templates/mail_user_list.htm                   |   16 
 interface/web/client/domain_del.php                               |   14 
 interface/web/admin/lib/lang/es_language_import.lng               |    4 
 interface/web/client/lib/lang/bg_client.lng                       |    1 
 interface/web/mail/lib/lang/es_spamfilter_users.lng               |   14 
 interface/web/client/lib/lang/se_client.lng                       |    1 
 interface/web/client/lib/lang/es_domain_list.lng                  |    8 
 interface/web/admin/list/server.list.php                          |   14 
 interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng         |   12 
 interface/web/sites/lib/lang/es_aps.lng                           |  110 
 interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng      |    2 
 interface/web/dns/lib/lang/es_dns_mx.lng                          |    4 
 interface/web/dns/lib/lang/es_dns_ptr.lng                         |    2 
 interface/web/dns/dns_soa_edit.php                                |  242 +-
 server/conf/hhvm_starter.master                                   |   10 
 interface/web/mailuser/lib/lang/es_mail_user_filter_list.lng      |   12 
 interface/web/dns/lib/lang/fr_dns_wizard.lng                      |   29 
 interface/web/sites/web_childdomain_edit.php                      |    2 
 interface/web/dns/lib/lang/es_dns_a_list.lng                      |    2 
 interface/web/admin/lib/lang/en_server_config.lng                 |    2 
 interface/web/admin/lib/lang/es.lng                               |   20 
 interface/web/client/client_template_edit.php                     |    9 
 interface/web/client/lib/lang/es_client_circle_list.lng           |   16 
 interface/web/sites/lib/lang/es_web_sites_stats_list.lng          |    2 
 interface/web/admin/lib/lang/es_software_update_list.lng          |    2 
 interface/web/admin/lib/lang/es_tpl_default_admin.lng             |   28 
 interface/lib/lang/es.lng                                         |   39 
 interface/web/dashboard/lib/lang/es_dashlet_quota.lng             |   12 
 interface/web/dns/lib/lang/es.lng                                 |    2 
 interface/web/themes/blue/css/styles.css                          |   10 
 interface/web/admin/lib/lang/es_software_package_list.lng         |   12 
 interface/lib/classes/soap_handler.inc.php                        |    2 
 interface/web/sites/lib/lang/es_web_vhost_domain_list.lng         |    2 
 interface/web/tools/lib/lang/es_import_ispconfig.lng              |   24 
 interface/web/mailuser/lib/lang/es.lng                            |   12 
 interface/web/sites/lib/lang/es_webdav_user.lng                   |   20 
 interface/web/client/lib/lang/en_client.lng                       |    1 
 interface/web/monitor/lib/lang/es.lng                             |   32 
 interface/web/mail/lib/lang/es_mail_user_filter.lng               |   12 
 install/sql/ispconfig3.sql                                        |    5 
 interface/web/admin/lib/lang/es_system_config.lng                 |  109 
 interface/web/sites/webdav_user_edit.php                          |   36 
 interface/web/dns/dns_wizard.php                                  |  105 
 interface/web/sites/lib/lang/es_database_user.lng                 |   42 
 interface/web/client/lib/lang/se_reseller.lng                     |    3 
 interface/web/sites/database_user_edit.php                        |    7 
 interface/web/admin/lib/lang/es_directive_snippets.lng            |   14 
 interface/web/mail/lib/lang/es_mail_alias.lng                     |    4 
 interface/web/client/lib/lang/it_client.lng                       |    1 
 interface/web/tools/lib/lang/es.lng                               |    6 
 interface/web/admin/lib/lang/en.lng                               |    4 
 interface/web/mail/lib/lang/es_mail_user_list.lng                 |    8 
 server/plugins-available/mail_plugin_dkim.inc.php                 |   20 
 interface/web/client/lib/lang/pl_reseller.lng                     |    3 
 interface/web/client/domain_edit.php                              |   68 
 interface/web/mail/list/mail_user.list.php                        |   36 
 interface/lib/classes/remote.d/client.inc.php                     |    3 
 interface/web/dns/lib/lang/es_dns_rp.lng                          |    2 
 interface/web/sites/lib/lang/es_web_folder_list.lng               |    4 
 interface/web/dns/lib/lang/es_dns_wizard.lng                      |   36 
 interface/web/mailuser/lib/lang/es_index.lng                      |   18 
 interface/web/mail/lib/lang/es_mail_transport_list.lng            |    2 
 interface/web/client/lib/lang/ru_reseller.lng                     |    3 
 interface/web/mail/lib/lang/es_mail_mailinglist_list.lng          |    4 
 interface/web/client/lib/lang/en_reseller.lng                     |    3 
 interface/web/sites/database_edit.php                             |   38 
 interface/web/mail/mail_domain_dkim_create.php                    |    6 
 interface/web/admin/form/server_config.tform.php                  |    7 
 interface/web/login/lib/lang/es.lng                               |   20 
 interface/web/client/lib/lang/pt_reseller.lng                     |    3 
 interface/web/client/client_edit.php                              |   31 
 interface/web/client/lib/lang/es_resellers_list.lng               |    6 
 interface/web/dns/lib/lang/fr_dns_dkim.lng                        |   12 
 interface/lib/plugins/mail_mail_domain_plugin.inc.php             |  114 +
 interface/web/sites/shell_user_edit.php                           |    6 
 interface/web/dns/lib/lang/es_dns_aaaa.lng                        |    2 
 interface/web/sites/lib/lang/es_cron.lng                          |    6 
 interface/web/admin/lib/lang/es_server_ip_list.lng                |    4 
 interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng    |   20 
 interface/web/admin/lib/lang/fr_server_config.lng                 |  281 +-
 interface/web/client/lib/lang/ar_client.lng                       |    1 
 interface/web/client/lib/lang/es_domain.lng                       |    8 
 interface/web/help/lib/lang/es_support_message.lng                |   16 
 interface/web/mail/lib/lang/es_mail_aliasdomain.lng               |    6 
 interface/web/mail/lib/lang/es_mail_get_list.lng                  |    2 
 interface/web/client/lib/lang/nl_reseller.lng                     |    3 
 interface/web/sites/lib/lang/es_ftp_user_list.lng                 |    2 
 interface/web/mail/lib/lang/es_mail_alias_list.lng                |    2 
 interface/web/mail/templates/mail_domain_edit.htm                 |   28 
 interface/web/admin/lib/lang/es_users_list.lng                    |    6 
 interface/web/admin/lib/lang/es_server_php_list.lng               |   10 
 interface/web/client/form/client_template.tform.php               |   55 
 interface/web/client/lib/lang/fr_reseller.lng                     |    3 
 interface/web/client/lib/lang/hr_reseller.lng                     |    3 
 interface/web/admin/lib/lang/es_users.lng                         |   16 
 interface/web/admin/lib/lang/es_software_repo.lng                 |    2 
 interface/web/dns/lib/lang/es_dns_hinfo.lng                       |    2 
 interface/web/tools/lib/lang/es_index.lng                         |    4 
 interface/web/sites/lib/lang/es_ftp_user.lng                      |   12 
 interface/web/client/lib/lang/cz_reseller.lng                     |    3 
 interface/lib/classes/validate_reseller.inc.php                   |    4 
 server/conf/vhost.conf.master                                     |   47 
 interface/web/dashboard/lib/lang/es_dashlet_limits.lng            |   22 
 interface/web/client/lib/lang/en_client_template.lng              |    5 
 interface/web/mail/lib/lang/es_mail_transport.lng                 |    4 
 interface/web/mail/lib/lang/es_mail_whitelist_list.lng            |    4 
 interface/web/client/lib/lang/fi_client.lng                       |    1 
 interface/web/dns/lib/lang/es_dns_srv.lng                         |   12 
 interface/web/dns/templates/dns_wizard.htm                        |   36 
 interface/web/admin/lib/lang/es_server_ip.lng                     |    4 
 interface/web/client/lib/lang/it_reseller.lng                     |    3 
 interface/web/client/lib/lang/es_client_message_template_list.lng |    6 
 interface/web/mailuser/lib/lang/es_mail_user_password.lng         |   16 
 interface/web/sites/lib/lang/es_shell_user.lng                    |   40 
 interface/web/dns/dns_import.php                                  |   41 
 interface/web/mail/lib/lang/es_mail_domain_catchall.lng           |    4 
 interface/web/tools/lib/lang/es_usersettings.lng                  |    8 
 interface/web/admin/form/system_config.tform.php                  |   69 
 interface/web/admin/lib/lang/es_remote_user.lng                   |   66 
 interface/web/client/lib/lang/ro_client.lng                       |    1 
 interface/web/sites/lib/lang/es_cron_list.lng                     |    4 
 interface/web/admin/lib/lang/es_directive_snippets_list.lng       |   10 
 interface/web/client/templates/domain_edit.htm                    |    8 
 interface/web/mail/lib/lang/es_mail_blacklist_list.lng            |    4 
 interface/web/sites/lib/lang/es.lng                               |   24 
 interface/web/mail/lib/lang/es_mail_user.lng                      |   59 
 interface/web/client/form/reseller.tform.php                      |   12 
 interface/web/sites/lib/lang/es_database_admin_list.lng           |    2 
 interface/web/sites/lib/lang/es_web_folder.lng                    |    2 
 interface/web/client/lib/lang/hu_client.lng                       |    1 
 interface/web/mail/lib/lang/es_mail_content_filter_list.lng       |    2 
 interface/web/sites/lib/lang/es_database_user_admin_list.lng      |    8 
 interface/web/sites/templates/web_vhost_domain_edit.htm           |   28 
 interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php       |   50 
 interface/web/client/lib/lang/id_client.lng                       |    1 
 interface/web/sites/lib/lang/es_shell_user_list.lng               |   12 
 server/plugins-available/mail_plugin.inc.php                      |    2 
 interface/web/client/templates/client_template_edit_limits.htm    |   30 
 interface/web/dns/templates/dns_import.htm                        |    9 
 interface/web/client/lib/lang/br_reseller.lng                     |    3 
 interface/web/client/lib/lang/ru_client.lng                       |    1 
 interface/web/client/lib/lang/en.lng                              |    2 
 interface/web/client/lib/lang/de_reseller.lng                     |    5 
 interface/web/client/lib/lang/es_clients_list.lng                 |    2 
 interface/web/sites/lib/lang/es_user_quota_stats_list.lng         |    4 
 interface/web/mail/lib/lang/es_mail_blacklist.lng                 |    2 
 server/lib/classes/cron.d/100-monitor_email_quota.inc.php         |   11 
 interface/lib/plugins/dns_dns_slave_plugin.inc.php                |   50 
 interface/web/dns/lib/lang/es_dns_soa_list.lng                    |    1 
 interface/web/client/lib/lang/es_client_message_template.lng      |   16 
 interface/web/client/lib/lang/id_reseller.lng                     |    3 
 interface/web/client/lib/lang/pt_client.lng                       |    1 
 interface/web/mail/lib/lang/es.lng                                |    7 
 interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng       |   10 
 interface/web/tools/lib/lang/es_tpl_default.lng                   |    6 
 interface/web/dns/templates/dns_slave_edit.htm                    |   38 
 interface/web/mail/lib/lang/fr_mail_domain.lng                    |   17 
 interface/web/mail/lib/lang/es_mail_spamfilter_list.lng           |    2 
 interface/web/mail/lib/lang/es_spamfilter_whitelist_list.lng      |    4 
 interface/web/dns/lib/lang/es_dns_cname.lng                       |    2 
 interface/web/client/lib/lang/es_reseller.lng                     |  143 
 install/lib/installer_base.lib.php                                |    7 
 interface/web/mail/lib/lang/es_spamfilter_whitelist.lng           |    6 
 install/sql/incremental/upd_dev_collection.sql                    |   10 
 interface/web/mail/lib/lang/es_spamfilter_config.lng              |   20 
 interface/lib/classes/remoting.inc.php                            |    4 
 interface/web/client/lib/lang/es_client_template.lng              |   73 
 interface/web/client/lib/lang/fi_reseller.lng                     |    3 
 interface/web/help/lib/lang/es.lng                                |    6 
 interface/web/sites/lib/lang/es_web_vhost_domain.lng              |  144 
 interface/web/client/lib/lang/cz_client.lng                       |    1 
 interface/web/dns/lib/lang/es_dns_ns.lng                          |    2 
 interface/web/mail/lib/lang/es_mail_relay_recipient.lng           |    8 
 interface/web/admin/lib/lang/es_iptables_list.lng                 |   12 
 interface/web/client/lib/lang/ja_client.lng                       |    1 
 interface/web/dns/dns_slave_edit.php                              |  124 
 interface/web/tools/lib/lang/es_resync.lng                        |   20 
 interface/web/client/lib/lang/de_client.lng                       |    3 
 interface/web/sites/ftp_user_edit.php                             |    6 
 interface/web/sites/lib/lang/es_aps_instances_list.lng            |   22 
 interface/web/client/lib/lang/es_client_template_list.lng         |    2 
 interface/lib/classes/auth.inc.php                                |    2 
 interface/web/mail/lib/lang/es_spamfilter_blacklist_list.lng      |    4 
 interface/web/client/lib/lang/es_client_del.lng                   |    2 
 interface/web/dns/lib/lang/es_dns_slave.lng                       |    4 
 interface/web/mail/lib/lang/es_spamfilter_blacklist.lng           |    6 
 interface/web/mail/lib/lang/es_mail_forward_list.lng              |    2 
 interface/web/client/lib/lang/el_reseller.lng                     |    3 
 docs/Remote_API_docs.txt                                          |    2 
 interface/web/help/lib/lang/es_help_faq_sections_list.lng         |   12 
 interface/web/sites/lib/lang/es_database_list.lng                 |    2 
 interface/web/client/lib/lang/bg_reseller.lng                     |    3 
 interface/web/mail/lib/lang/es_mail_mailinglist.lng               |   22 
 interface/web/client/lib/lang/ro_reseller.lng                     |    3 
 interface/web/admin/lib/lang/es_server_php.lng                    |   28 
 interface/web/tools/lib/lang/fr_resync.lng                        |   26 
 interface/web/client/lib/lang/es_client_circle.lng                |   14 
 interface/web/sites/lib/lang/es_web_folder_user.lng               |   14 
 interface/web/client/lib/lang/br_client.lng                       |    1 
 interface/web/admin/templates/system_config_sites_edit.htm        |   12 
 interface/web/client/lib/lang/es_client_message.lng               |   16 
 interface/web/admin/lib/lang/en_system_config.lng                 |    5 
 interface/web/client/form/client.tform.php                        |   12 
 interface/web/mail/lib/lang/es_user_quota_stats_list.lng          |    4 
 interface/web/mail/mail_domain_edit.php                           |  117 -
 interface/web/client/lib/lang/sk_client.lng                       |    1 
 interface/web/admin/lib/lang/es_remote_action.lng                 |    8 
 interface/web/sites/lib/lang/es_webdav_user_list.lng              |    2 
 interface/lib/classes/client_templates.inc.php                    |   18 
 interface/web/mail/lib/lang/es_mail_whitelist.lng                 |    4 
 interface/web/dns/lib/lang/es_dns_soa.lng                         |   16 
 interface/web/client/lib/lang/pl_client.lng                       |    1 
 interface/web/admin/lib/lang/es_iptables.lng                      |    8 
 interface/web/help/lib/lang/es_support_message_list.lng           |    2 
 interface/web/client/lib/lang/sk_reseller.lng                     |    3 
 interface/web/sites/lib/lang/es_web_folder_user_list.lng          |    4 
 interface/web/admin/system_config_edit.php                        |    3 
 interface/web/mailuser/lib/lang/es_mail_user_cc.lng               |   14 
 265 files changed, 3,048 insertions(+), 2,004 deletions(-)

diff --git a/docs/Remote_API_docs.txt b/docs/Remote_API_docs.txt
index a11c78d..6f1c4fd 100644
--- a/docs/Remote_API_docs.txt
+++ b/docs/Remote_API_docs.txt
@@ -1,3 +1,3 @@
 
 
-The remote API documentation is in the remote_client/API-docs subfolder.
\ No newline at end of file
+The remote API documentation is in the remoting_client/API-docs subfolder.
diff --git a/install/lib/installer_base.lib.php b/install/lib/installer_base.lib.php
index 6128c5c..c1d9c48 100644
--- a/install/lib/installer_base.lib.php
+++ b/install/lib/installer_base.lib.php
@@ -498,6 +498,13 @@
 					$this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
 				}
 
+				$query = "GRANT SELECT, INSERT, DELETE ON ".$value['db'].".`mail_backup` TO '".$value['user']."'@'".$host."' ";
+				if ($verbose){
+					echo $query ."\n";
+				}
+				if(!$this->dbmaster->query($query)) {
+					$this->warning('Unable to set rights of user in master database: '.$value['db']."\n Query: ".$query."\n Error: ".$this->dbmaster->errorMessage);
+				}
 			}
 
 			/*
diff --git a/install/lib/update.lib.php b/install/lib/update.lib.php
index f81ed45..d2d11bf 100644
--- a/install/lib/update.lib.php
+++ b/install/lib/update.lib.php
@@ -160,13 +160,15 @@
 
 		//* get the version of the db schema from the server table
 		$found = true;
+		$dev_patch = false;
 		while($found == true) {
-			$next_db_version = intval($current_db_version + 1);
+			if($dev_patch == true) $next_db_version = 'dev_collection';
+			else $next_db_version = intval($current_db_version + 1);
 			$sql_patch_filename = realpath(dirname(__FILE__).'/../').'/sql/incremental/upd_'.str_pad($next_db_version, 4, '0', STR_PAD_LEFT).'.sql';
 			$php_patch_filename = realpath(dirname(__FILE__).'/../').'/patches/upd_'.str_pad($next_db_version, 4, '0', STR_PAD_LEFT).'.php';
 			
 			// comma separated list of version numbers were a update has to be done silently
-			$silent_update_versions = '75';
+			$silent_update_versions = 'dev_collection,75';
 
 			if(is_file($sql_patch_filename)) {
 
@@ -204,8 +206,12 @@
 					$php_patch->onAfterSQL();
 				}
 
-				$current_db_version = $next_db_version;
+				if($dev_patch == false) $current_db_version = $next_db_version;
+				else $found = false;
+				
 				if(isset($php_patch)) unset($php_patch);
+			} elseif($dev_patch == false) {
+				$dev_patch = true;
 			} else {
 				$found = false;
 			}
diff --git a/install/sql/incremental/upd_dev_collection.sql b/install/sql/incremental/upd_dev_collection.sql
new file mode 100644
index 0000000..e60ae02
--- /dev/null
+++ b/install/sql/incremental/upd_dev_collection.sql
@@ -0,0 +1,10 @@
+ALTER TABLE `mail_user`
+	CHANGE `uid` `uid` int(11) NOT NULL DEFAULT '5000',
+	CHANGE `gid` `gid` int(11) NOT NULL DEFAULT '5000';
+
+ALTER TABLE `client_template` ADD `default_mailserver` INT(11) NOT NULL DEFAULT 1;
+ALTER TABLE `client_template` ADD `default_webserver` INT(11) NOT NULL DEFAULT 1;
+ALTER TABLE `client_template` ADD `default_dnsserver` INT(11) NOT NULL DEFAULT 1;
+ALTER TABLE `client_template` ADD `default_slave_dnsserver` INT(11) NOT NULL DEFAULT 1;
+ALTER TABLE `client_template` ADD `default_dbserver` INT(11) NOT NULL DEFAULT 1;
+ALTER TABLE  `client` ADD  `contact_firstname` VARCHAR( 64 ) NOT NULL DEFAULT '' AFTER  `gender`;
diff --git a/install/sql/ispconfig3.sql b/install/sql/ispconfig3.sql
index 54ac567..7f81f7c 100644
--- a/install/sql/ispconfig3.sql
+++ b/install/sql/ispconfig3.sql
@@ -146,6 +146,7 @@
   `company_name` varchar(64) DEFAULT NULL,
   `company_id` varchar(255) DEFAULT NULL,
   `gender` enum('','m','f') NOT NULL DEFAULT '',
+  `contact_firstname` varchar( 64 ) NOT NULL DEFAULT '',
   `contact_name` varchar(64) DEFAULT NULL,
   `customer_no` varchar(64) DEFAULT NULL,
   `vat_id` varchar(64) DEFAULT NULL,
@@ -897,8 +898,8 @@
   `login` varchar(255) NOT NULL default '',
   `password` varchar(255) NOT NULL default '',
   `name` varchar(255) NOT NULL default '',
-  `uid` int(11) unsigned NOT NULL default '5000',
-  `gid` int(11) unsigned NOT NULL default '5000',
+  `uid` int(11) NOT NULL default '5000',
+  `gid` int(11) NOT NULL default '5000',
   `maildir` varchar(255) NOT NULL default '',
   `quota` bigint(20) NOT NULL default '-1',
   `cc` varchar(255) NOT NULL default '',
diff --git a/interface/lib/classes/auth.inc.php b/interface/lib/classes/auth.inc.php
index 706dd04..070662f 100644
--- a/interface/lib/classes/auth.inc.php
+++ b/interface/lib/classes/auth.inc.php
@@ -50,7 +50,7 @@
 
 		$userid = $app->functions->intval($userid);
 		$client = $app->db->queryOneRecord("SELECT client.limit_client FROM sys_user, client WHERE sys_user.userid = $userid AND sys_user.client_id = client.client_id");
-		if($client['limit_client'] > 0) {
+		if($client['limit_client'] != 0) {
 			return true;
 		} else {
 			return false;
diff --git a/interface/lib/classes/client_templates.inc.php b/interface/lib/classes/client_templates.inc.php
index 64beb9e..993936b 100644
--- a/interface/lib/classes/client_templates.inc.php
+++ b/interface/lib/classes/client_templates.inc.php
@@ -109,7 +109,7 @@
 		$sql = "SELECT template_master, template_additional,limit_client FROM client WHERE client_id = " . $app->functions->intval($clientId);
 		$record = $app->db->queryOneRecord($sql);
 		$masterTemplateId = $record['template_master'];
-		$is_reseller = ($record['limit_client'] > 0)?true:false;
+		$is_reseller = ($record['limit_client'] != 0)?true:false;
 
 		if($record['template_additional'] != '') {
 			// we have to call the update_client_templates function
@@ -146,7 +146,7 @@
 			if (is_array($addLimits)){
 				foreach($addLimits as $k => $v){
 					/* we can remove this condition, but it is easier to debug with it (don't add ids and other non-limit values) */
-					if (strpos($k, 'limit') !== false or $k == 'ssh_chroot' or $k == 'web_php_options' or $k == 'force_suexec'){
+					if (strpos($k, 'limit') !== false or strpos($k, 'default') !== false or $k == 'ssh_chroot' or $k == 'web_php_options' or $k == 'force_suexec'){
 						$app->log('Template processing key ' . $k . ' for client ' . $clientId, LOGLEVEL_DEBUG);
 
 						/* process the numerical limits */
@@ -158,6 +158,15 @@
 								/* silent adjustment of the minimum cron frequency to 1 minute */
 								/* maybe this control test should be done via validator definition in tform.php file, but I don't know how */
 								if ($limits[$k] < 1) $limits[$k] = 1;
+								break;
+
+							case 'default_mailserver':
+							case 'default_webserver':
+							case 'default_dnsserver':
+							case 'default_slave_dnsserver':
+							case 'default_dbserver':
+								/* additional templates don't override default server from main template */
+								if ($limits[$k] == 0) $limits[$k] = $v;
 								break;
 
 							default:
@@ -225,7 +234,10 @@
 		$update = '';
 		if(!$is_reseller) unset($limits['limit_client']); // Only Resellers may have limit_client set in template to ensure that we do not convert a client to reseller accidently.
 		foreach($limits as $k => $v){
-			if ((strpos($k, 'limit') !== false or $k == 'ssh_chroot' or $k == 'web_php_options' or $k == 'force_suexec') && !is_array($v)){
+			if (strpos($k, 'default') !== false and $v == 0) {
+				continue; // template doesn't define default server, client's default musn't be changed
+			}
+			if ((strpos($k, 'limit') !== false or strpos($k, 'default') !== false or $k == 'ssh_chroot' or $k == 'web_php_options' or $k == 'force_suexec') && !is_array($v)){
 				if ($update != '') $update .= ', ';
 				$update .= '`' . $k . "`='" . $v . "'";
 			}
diff --git a/interface/lib/classes/remote.d/client.inc.php b/interface/lib/classes/remote.d/client.inc.php
index 5cafc62..445312b 100644
--- a/interface/lib/classes/remote.d/client.inc.php
+++ b/interface/lib/classes/remote.d/client.inc.php
@@ -182,6 +182,9 @@
 		$app->uses('remoting_lib');
 		$app->remoting_lib->loadFormDef('../client/form/' . (isset($params['limit_client']) && $params['limit_client'] > 0 ? 'reseller' : 'client') . '.tform.php');
 		$old_rec = $app->remoting_lib->getDataRecord($client_id);
+		
+		//* merge old record with params, so only new values have to be set in $params
+		$params = $app->functions->array_merge($old_rec,$params);
 
 		// we need the previuos templates assigned here
 		$this->oldTemplatesAssigned = $app->db->queryAllRecords('SELECT * FROM `client_template_assigned` WHERE `client_id` = ' . $client_id);
diff --git a/interface/lib/classes/remoting.inc.php b/interface/lib/classes/remoting.inc.php
index 5541fcb..f42d22b 100644
--- a/interface/lib/classes/remoting.inc.php
+++ b/interface/lib/classes/remoting.inc.php
@@ -340,6 +340,10 @@
 
 		//* Load the form definition
 		$app->remoting_lib->loadFormDef($formdef_file);
+		
+		//* get old record and merge with params, so only new values have to be set in $params
+		$old_rec = $app->remoting_lib->getDataRecord($primary_id);
+		$params = $app->functions->array_merge($old_rec,$params);
 
 		//* Get the SQL query
 		$sql = $app->remoting_lib->getSQL($params, 'UPDATE', $primary_id);
diff --git a/interface/lib/classes/soap_handler.inc.php b/interface/lib/classes/soap_handler.inc.php
index c2bf643..704e21b 100644
--- a/interface/lib/classes/soap_handler.inc.php
+++ b/interface/lib/classes/soap_handler.inc.php
@@ -49,7 +49,7 @@
 
 			$name = substr($f, 0, strpos($f, '.'));
 
-			include $dir . '/' . $f;
+			include_once $dir . '/' . $f;
 			$class_name = 'remoting_' . $name;
 			if(class_exists($class_name, false)) {
 				$this->classes[$class_name] = new $class_name();
diff --git a/interface/lib/classes/tools_sites.inc.php b/interface/lib/classes/tools_sites.inc.php
index c636bbc..3400c5b 100644
--- a/interface/lib/classes/tools_sites.inc.php
+++ b/interface/lib/classes/tools_sites.inc.php
@@ -47,7 +47,7 @@
 					$name=str_replace('['.$keyword.']', $this->getClientID($dataRecord), $name);
 					break;
 				case 'DOMAINID':
-					$name=str_replace('['.$keyword.']', $dataRecord['parent_domain_id'], $name);
+					$name=str_replace('['.$keyword.']', $dataRecord['parent_domain_id'] ? $dataRecord['parent_domain_id'] : '[DOMAINID]', $name);
 					break;
 				}
 			}
@@ -92,7 +92,7 @@
 			} elseif(isset($dataRecord['sys_groupid'])) {
 				$client_group_id = $dataRecord['sys_groupid'];
 			} else {
-				$client_group_id = 0;
+				return '[CLIENTNAME]';
 			}
 		}
 
@@ -119,7 +119,7 @@
 			} elseif(isset($dataRecord['sys_groupid'])) {
 				$client_group_id = $dataRecord['sys_groupid'];
 			} else {
-				$client_group_id = 0;
+				return '[CLIENTID]';
 			}
 		}
 		$tmp = $app->db->queryOneRecord("SELECT client_id FROM sys_group WHERE groupid = " . $app->functions->intval($client_group_id));
@@ -144,10 +144,20 @@
 		return $res;
 	}
 
-	function getDomainModuleDomains() {
+	function getDomainModuleDomains($not_used_in_table = null, $selected_domain = null) {
 		global $app;
 
 		$sql = "SELECT domain_id, domain FROM domain WHERE";
+		if ($not_used_in_table) {
+			if (strpos($not_used_in_table, 'dns') !== false) {
+				$field = "origin";
+				$select = "SUBSTRING($field, 1, CHAR_LENGTH($field) - 1)";
+			} else {
+				$field = "domain";
+				$select = $field;
+			}
+			$sql .= " domain NOT IN (SELECT $select FROM ?? WHERE $field != ?) AND";
+		}
 		if ($_SESSION["s"]["user"]["typ"] == 'admin') {
 			$sql .= " 1";
 		} else {
@@ -155,7 +165,7 @@
 			$sql .= " sys_groupid IN (".$groups.")";
 		}
 		$sql .= " ORDER BY domain";
-		return $app->db->queryAllRecords($sql);
+		return $app->db->queryAllRecords($sql, $not_used_in_table, $selected_domain);
 	}
 
 	function checkDomainModuleDomain($domain_id) {
@@ -171,6 +181,19 @@
 		return $domain['domain'];
 	}
 
+	function getClientIdForDomain($domain_id) {
+		global $app;
+
+		$sql = "SELECT sys_groupid FROM domain WHERE domain_id = " . $app->functions->intval($domain_id);
+		if ($_SESSION["s"]["user"]["typ"] != 'admin') {
+			$groups = ( $_SESSION["s"]["user"]["groups"] ) ? $_SESSION["s"]["user"]["groups"] : 0;
+			$sql .= " AND sys_groupid IN (".$groups.")";
+		}
+		$domain = $app->db->queryOneRecord($sql);
+		if(!$domain || !$domain['sys_groupid']) return false;
+		return $domain['sys_groupid'];
+	}
+
 }
 
 ?>
diff --git a/interface/lib/classes/validate_reseller.inc.php b/interface/lib/classes/validate_reseller.inc.php
index c02c4fd..d4fc862 100644
--- a/interface/lib/classes/validate_reseller.inc.php
+++ b/interface/lib/classes/validate_reseller.inc.php
@@ -36,8 +36,8 @@
 	function limit_client($field_name, $field_value, $validator) {
 		global $app;
 
-		if($field_value <= 0) {
-			return $app->tform->lng('limit_client_error_positive');
+		if($field_value <= 0 && $field_value != -1) {
+			return $app->tform->lng('limit_client_error_positive_or_unlimited');
 		} else {
 			return '';
 		}
diff --git a/interface/lib/lang/es.lng b/interface/lib/lang/es.lng
index 63b6245..38f6103 100644
--- a/interface/lib/lang/es.lng
+++ b/interface/lib/lang/es.lng
@@ -34,14 +34,14 @@
 $wb['top_menu_dns'] = 'DNS';
 $wb['top_menu_tools'] = 'Herramientas';
 $wb['top_menu_help'] = 'Ayuda';
-$wb['top_menu_billing'] = 'Cobranza';
+$wb['top_menu_billing'] = 'Cobros';
 $wb['top_menu_domain'] = 'Dominios';
 $wb['top_menu_dashboard'] = 'Inicio';
 $wb['latest_news_txt'] = 'Noticias';
 $wb['top_menu_vm'] = 'VServer';
 $wb['daynamesmin_su'] = 'Do';
 $wb['daynamesmin_mo'] = 'Lu';
-$wb['daynamesmin_tu'] = 'Mar';
+$wb['daynamesmin_tu'] = 'Ma';
 $wb['daynamesmin_we'] = 'Mi';
 $wb['daynamesmin_th'] = 'Ju';
 $wb['daynamesmin_fr'] = 'Vi';
@@ -68,16 +68,16 @@
 $wb['datepicker_nextText'] = 'Próximo';
 $wb['datepicker_prevText'] = 'Anterior';
 $wb['logout_txt'] = 'SALIR';
-$wb['conf_format_dateshort_human_readable'] = 'yyyy-mm-dd';
+$wb['conf_format_dateshort_human_readable'] = 'dd-mm-yyyy';
 $wb['submit_confirmation'] = '¿Realmente desea realizar esta acción?';
 $wb['number_format_decimals_client'] = '2';
-$wb['top_menu_mailuser'] = 'Mailuser';
-$wb['globalsearch_resultslimit_of_txt'] = 'of';
-$wb['globalsearch_resultslimit_results_txt'] = 'results';
-$wb['globalsearch_noresults_text_txt'] = 'No results.';
-$wb['globalsearch_noresults_limit_txt'] = '0 results';
-$wb['globalsearch_searchfield_watermark_txt'] = 'Search';
-$wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['top_menu_mailuser'] = 'Correo';
+$wb['globalsearch_resultslimit_of_txt'] = 'de';
+$wb['globalsearch_resultslimit_results_txt'] = 'resultados';
+$wb['globalsearch_noresults_text_txt'] = 'Sin resultados.';
+$wb['globalsearch_noresults_limit_txt'] = '0 resultados';
+$wb['globalsearch_searchfield_watermark_txt'] = 'Buscar';
+$wb['globalsearch_suggestions_text_txt'] = 'Sugerencias';
 $wb['global_tabchange_warning_txt'] = 'Changed data in this tab will be changed if you press OK. On cancel they will be discarded.';
 $wb['global_tabchange_discard_txt'] = 'You have unsaved changes in this tab. Changes will be discarded if you continue.';
 $wb['datalog_changes_txt'] = 'The following changes are not yet populated to all servers:';
@@ -137,14 +137,15 @@
 $wb['gender_m_txt'] = 'Mr.';
 $wb['gender_f_txt'] = 'Ms.';
 $wb['client_cannot_be_deleted_because_of_billing_module_txt'] = 'This client has records in the billing module, therefore he cannot be deleted.';
-$wb['yes_txt'] = 'Yes';
+$wb['yes_txt'] = 'Sí';
 $wb['no_txt'] = 'No';
-$wb['None'] = 'None';
-$wb['strength_1'] = 'Weak';
-$wb['strength_2'] = 'Fair';
-$wb['strength_3'] = 'Good';
-$wb['strength_4'] = 'Strong';
-$wb['strength_5'] = 'Very Strong';
-$wb['weak_password_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length and have a strength of \\"{strength}\\".';
-$wb['weak_password_length_txt'] = 'The chosen password does not match the security guidelines. It has to be at least {chars} chars in length.';
+$wb['None'] = 'Ninguno';
+$wb['strength_1'] = 'Débil';
+$wb['strength_2'] = 'Pasable';
+$wb['strength_3'] = 'Buena';
+$wb['strength_4'] = 'Fuerte';
+$wb['strength_5'] = 'Muy fuerte';
+$wb['weak_password_txt'] = 'La contraseña elegida no cumple las directrices de seguridad. Debe tener al menos {chars} caracteres y una fortaleza \"{strength}\".';
+$wb['weak_password_length_txt'] = 'La contraseña elegida no cumple las directrices de seguridad. Debe tener al menos {chars} caracteres.';
+$wb['Firewall'] = 'Cortafuegos';
 ?>
diff --git a/interface/lib/plugins/dns_dns_slave_plugin.inc.php b/interface/lib/plugins/dns_dns_slave_plugin.inc.php
new file mode 100644
index 0000000..aa2e20f
--- /dev/null
+++ b/interface/lib/plugins/dns_dns_slave_plugin.inc.php
@@ -0,0 +1,50 @@
+<?php
+/**
+ * dns_dns_slave_plugin plugin
+ *
+ * @author Sergio Cambra <sergio@programatica.es> 2014
+ */
+
+
+class dns_dns_slave_plugin {
+
+	var $plugin_name        = 'dns_dns_slave_plugin';
+	var $class_name         = 'dns_dns_slave_plugin';
+
+	/*
+            This function is called when the plugin is loaded
+    */
+	function onLoad() {
+		global $app;
+		//Register for the events
+		$app->plugin->registerEvent('dns:dns_slave:on_after_insert', 'dns_dns_slave_plugin', 'dns_dns_slave_edit');
+		$app->plugin->registerEvent('dns:dns_slave:on_after_update', 'dns_dns_slave_plugin', 'dns_dns_slave_edit');
+	}
+
+	/*
+		Function to change dns slave owner
+    */
+	function dns_dns_slave_edit($event_name, $page_form) {
+		global $app, $conf;
+
+		// make sure that the record belongs to the client group and not the admin group when a dmin inserts it
+		if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($page_form->dataRecord["client_group_id"])) {
+			$client_group_id = $app->functions->intval($page_form->dataRecord["client_group_id"]);
+			$app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$page_form->id);
+		}
+		if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
+			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
+			$app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$page_form->id);
+		}
+
+		//** When the client group has changed, change also the owner of the record if the owner is not the admin user
+		if($page_form->oldDataRecord && $page_form->oldDataRecord["client_group_id"] != $page_form->dataRecord["client_group_id"] && $page_form->dataRecord["sys_userid"] != 1) {
+			$client_group_id = $app->functions->intval($page_form->dataRecord["client_group_id"]);
+			$tmp = $app->db->queryOneREcord("SELECT userid FROM sys_user WHERE default_group = ".$client_group_id);
+			if($tmp["userid"] > 0) {
+				$app->db->query("UPDATE dns_slave SET sys_userid = ".$tmp["userid"]." WHERE id = ".$page_form->id);
+			}
+		}
+	}
+
+}
diff --git a/interface/lib/plugins/dns_dns_soa_plugin.inc.php b/interface/lib/plugins/dns_dns_soa_plugin.inc.php
new file mode 100644
index 0000000..1cada0e
--- /dev/null
+++ b/interface/lib/plugins/dns_dns_soa_plugin.inc.php
@@ -0,0 +1,64 @@
+<?php
+/**
+ * dns_dns_soa_plugin plugin
+ *
+ * @author Sergio Cambra <sergio@programatica.es> 2014
+ */
+
+
+class dns_dns_soa_plugin {
+
+	var $plugin_name        = 'dns_dns_soa_plugin';
+	var $class_name         = 'dns_dns_soa_plugin';
+
+	/*
+            This function is called when the plugin is loaded
+    */
+	function onLoad() {
+		global $app;
+		//Register for the events
+		$app->plugin->registerEvent('dns:dns_soa:on_after_insert', 'dns_dns_soa_plugin', 'dns_dns_soa_edit');
+		$app->plugin->registerEvent('dns:dns_soa:on_after_update', 'dns_dns_soa_plugin', 'dns_dns_soa_edit');
+	}
+
+	/*
+		Function to change dns soa owner
+    */
+	function dns_dns_soa_edit($event_name, $page_form) {
+		global $app, $conf;
+
+		if ($event_name == 'dns:dns_soa:on_after_update') {
+			$tmp = $app->db->diffrec($page_form->oldDataRecord, $app->tform->getDataRecord($page_form->id));
+			if($tmp['diff_num'] > 0) {
+				// Update the serial number of the SOA record
+				$soa = $app->db->queryOneRecord("SELECT serial FROM dns_soa WHERE id = ".$page_form->id);
+				$app->db->query("UPDATE dns_soa SET serial = '".$app->validate_dns->increase_serial($soa["serial"])."' WHERE id = ".$page_form->id);
+			}
+
+			//** When the client group has changed, change also the owner of the record if the owner is not the admin user
+			if($page_form->oldDataRecord["client_group_id"] != $page_form->dataRecord["client_group_id"] && $page_form->dataRecord["sys_userid"] != 1) {
+				$client_group_id = $app->functions->intval($page_form->dataRecord["client_group_id"]);
+				$tmp = $app->db->queryOneREcord("SELECT userid FROM sys_user WHERE default_group = ".$client_group_id);
+				if($tmp["userid"] > 0) {
+					$app->db->query("UPDATE dns_soa SET sys_userid = ".$tmp["userid"]." WHERE id = ".$page_form->id);
+					$app->db->query("UPDATE dns_rr SET sys_userid = ".$tmp["userid"]." WHERE zone = ".$page_form->id);
+				}
+			}
+		}
+
+		// make sure that the record belongs to the client group and not the admin group when a dmin inserts it
+		if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($page_form->dataRecord["client_group_id"])) {
+			$client_group_id = $app->functions->intval($page_form->dataRecord["client_group_id"]);
+			$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE id = ".$page_form->id);
+			// And we want to update all rr records too, that belong to this record
+			$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$page_form->id);
+		}
+		if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($page_form->dataRecord["client_group_id"])) {
+			$client_group_id = $app->functions->intval($page_form->dataRecord["client_group_id"]);
+			$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE id = ".$page_form->id);
+			// And we want to update all rr records too, that belong to this record
+			$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$page_form->id);
+		}
+	}
+
+}
diff --git a/interface/lib/plugins/mail_mail_domain_plugin.inc.php b/interface/lib/plugins/mail_mail_domain_plugin.inc.php
new file mode 100644
index 0000000..13f6009
--- /dev/null
+++ b/interface/lib/plugins/mail_mail_domain_plugin.inc.php
@@ -0,0 +1,114 @@
+<?php
+/**
+ * mail_mail_domain_plugin plugin
+ *
+ * @author Sergio Cambra <sergio@programatica.es> 2014
+ */
+
+
+class mail_mail_domain_plugin {
+
+	var $plugin_name        = 'mail_mail_domain_plugin';
+	var $class_name         = 'mail_mail_domain_plugin';
+
+	/*
+            This function is called when the plugin is loaded
+    */
+	function onLoad() {
+		global $app;
+		//Register for the events
+		$app->plugin->registerEvent('mail:mail_domain:on_after_insert', 'mail_mail_domain_plugin', 'mail_mail_domain_edit');
+		$app->plugin->registerEvent('mail:mail_domain:on_after_update', 'mail_mail_domain_plugin', 'mail_mail_domain_edit');
+	}
+
+	/*
+		Function to create the sites_web_domain rule and insert it into the custom rules
+    */
+	function mail_mail_domain_edit($event_name, $page_form) {
+		global $app, $conf;
+
+		// make sure that the record belongs to the clinet group and not the admin group when a dmin inserts it
+		// also make sure that the user can not delete entry created by an admin
+		if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($page_form->dataRecord["client_group_id"])) {
+			$client_group_id = $app->functions->intval($page_form->dataRecord["client_group_id"]);
+			$updates = "sys_groupid = $client_group_id, sys_perm_group = 'ru'";
+			if ($event_name == 'mail:mail_domain:on_after_update') {
+				$tmp = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE default_group = $client_group_id");
+				$client_user_id = ($tmp['userid'] > 0)?$tmp['userid']:1;
+				$updates = "sys_userid = $client_user_id, $updates";
+			}
+			$app->db->query("UPDATE mail_domain SET $updates WHERE domain_id = ".$page_form->id);
+		}
+		if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($page_form->dataRecord["client_group_id"])) {
+			$client_group_id = $app->functions->intval($page_form->dataRecord["client_group_id"]);
+			$updates = "sys_groupid = $client_group_id, sys_perm_group = 'riud'";
+			if ($event_name == 'mail:mail_domain:on_after_update') {
+				$tmp = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE default_group = $client_group_id");
+				$client_user_id = ($tmp['userid'] > 0)?$tmp['userid']:1;
+				$updates = "sys_userid = $client_user_id, $updates";
+			}
+			$app->db->query("UPDATE mail_domain SET $updates WHERE domain_id = ".$page_form->id);
+		}
+
+		//** If the domain name or owner has been changed, change the domain and owner in all mailbox records
+		if($page_form->oldDataRecord && ($page_form->oldDataRecord['domain'] != $page_form->dataRecord['domain'] ||
+				(isset($page_form->dataRecord['client_group_id']) && $page_form->oldDataRecord['sys_groupid'] != $page_form->dataRecord['client_group_id']))) {
+			$app->uses('getconf');
+			$mail_config = $app->getconf->get_server_config($page_form->dataRecord["server_id"], 'mail');
+
+			//* Update the mailboxes
+			$mailusers = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE email like '%@".$app->db->quote($page_form->oldDataRecord['domain'])."'");
+			$sys_groupid = $app->functions->intval((isset($page_form->dataRecord['client_group_id']))?$page_form->dataRecord['client_group_id']:$page_form->oldDataRecord['sys_groupid']);
+			$tmp = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE default_group = $sys_groupid");
+			$client_user_id = $app->functions->intval(($tmp['userid'] > 0)?$tmp['userid']:1);
+			if(is_array($mailusers)) {
+				foreach($mailusers as $rec) {
+					// setting Maildir, Homedir, UID and GID
+					$mail_parts = explode("@", $rec['email']);
+					$maildir = str_replace("[domain]", $page_form->dataRecord['domain'], $mail_config["maildir_path"]);
+					$maildir = str_replace("[localpart]", $mail_parts[0], $maildir);
+					$maildir = $app->db->quote($maildir);
+					$email = $app->db->quote($mail_parts[0].'@'.$page_form->dataRecord['domain']);
+					$app->db->datalogUpdate('mail_user', "maildir = '$maildir', email = '$email', sys_userid = $client_user_id, sys_groupid = '$sys_groupid'", 'mailuser_id', $rec['mailuser_id']);
+				}
+			}
+
+			//* Update the aliases
+			$forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source like '%@".$app->db->quote($page_form->oldDataRecord['domain'])."' OR destination like '%@".$app->db->quote($page_form->oldDataRecord['domain'])."'");
+			if(is_array($forwardings)) {
+				foreach($forwardings as $rec) {
+					$destination = $app->db->quote(str_replace($page_form->oldDataRecord['domain'], $page_form->dataRecord['domain'], $rec['destination']));
+					$source = $app->db->quote(str_replace($page_form->oldDataRecord['domain'], $page_form->dataRecord['domain'], $rec['source']));
+					$app->db->datalogUpdate('mail_forwarding', "source = '$source', destination = '$destination', sys_userid = $client_user_id, sys_groupid = '$sys_groupid'", 'forwarding_id', $rec['forwarding_id']);
+				}
+			}
+
+			//* Update the mailinglist
+			$mailing_lists = $app->db->queryAllRecords("SELECT mailinglist_id FROM mail_mailinglist WHERE domain = '".$app->db->quote($page_form->oldDataRecord['domain'])."'");
+			if(is_array($mailing_lists)) {
+				foreach($mailing_lists as $rec) {
+					$app->db->datalogUpdate('mail_mailinglist', "sys_userid = $client_user_id, sys_groupid = '$sys_groupid'", 'mailinglist_id', $rec['mailinglist_id']);
+				}
+			}
+
+			//* Update the mailget records
+			$mail_gets = $app->db->queryAllRecords("SELECT mailget_id, destination FROM mail_get WHERE destination LIKE '%@".$app->db->quote($page_form->oldDataRecord['domain'])."'");
+			if(is_array($mail_gets)) {
+				foreach($mail_gets as $rec) {
+					$destination = $app->db->quote(str_replace($page_form->oldDataRecord['domain'], $page_form->dataRecord['domain'], $rec['destination']));
+					$app->db->datalogUpdate('mail_get', "destination = '$destination', sys_userid = $client_user_id, sys_groupid = '$sys_groupid'", 'mailget_id', $rec['mailget_id']);
+				}
+			}
+
+			if ($page_form->oldDataRecord["domain"] != $page_form->dataRecord['domain']) {
+				//* Delete the old spamfilter record
+				$tmp = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = '@".$app->db->quote($page_form->oldDataRecord["domain"])."'");
+				$app->db->datalogDelete('spamfilter_users', 'id', $tmp["id"]);
+				unset($tmp);
+			}
+			$app->db->query("UPDATE spamfilter_users SET email=REPLACE(email, '".$app->db->quote($page_form->oldDataRecord['domain'])."', '".$app->db->quote($page_form->dataRecord['domain'])."'), sys_userid = $client_user_id, sys_groupid = $sys_groupid WHERE email LIKE '%@".$app->db->quote($page_form->oldDataRecord['domain'])."'");
+
+		} // end if domain name changed
+	}
+
+}
diff --git a/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php b/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php
index 2764269..d063fbb 100644
--- a/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php
+++ b/interface/lib/plugins/sites_web_vhost_domain_plugin.inc.php
@@ -85,7 +85,7 @@
 				$client_id = $app->functions->intval($client["client_id"]);
 			}
 
-			$tmp = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE default_group = $client_group_id");
+			$tmp = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE default_group = ?", $client_group_id);
 			$client_user_id = $app->functions->intval(($tmp['userid'] > 0)?$tmp['userid']:1);
 
 			// Set the values for document_root, system_user and system_group
@@ -113,10 +113,42 @@
 					unset($records);
 					unset($rec);
 
+					// Update the webdav user(s) too
+					$records = $app->db->queryAllRecords("SELECT webdav_user_id FROM webdav_user WHERE parent_domain_id = ".$page_form->id);
+					foreach($records as $rec) {
+						$app->db->datalogUpdate('webdav_user', "sys_userid = '".$app->functions->intval($web_rec['sys_userid'])."', sys_groupid = '".$app->functions->intval($web_rec['sys_groupid'])."'", 'webdav_user_id', $app->functions->intval($rec['webdav_user_id']));
+					}
+					unset($records);
+					unset($rec);
+
+					// Update the web folder(s) too
+					$records = $app->db->queryAllRecords("SELECT web_folder_id FROM web_folder WHERE parent_domain_id = ".$page_form->id);
+					foreach($records as $rec) {
+						$app->db->datalogUpdate('web_folder', "sys_userid = '".$app->functions->intval($web_rec['sys_userid'])."', sys_groupid = '".$app->functions->intval($web_rec['sys_groupid'])."'", 'web_folder_id', $app->functions->intval($rec['web_folder_id']));
+					}
+					unset($records);
+					unset($rec);
+
+					//* Update all web folder users
+					$records = $app->db->queryAllRecords("SELECT web_folder_user.web_folder_user_id FROM web_folder_user, web_folder WHERE web_folder_user.web_folder_id = web_folder.web_folder_id AND web_folder.parent_domain_id = ".$page_form->id);
+					foreach($records as $rec) {
+						$app->db->datalogUpdate('web_folder_user', "sys_userid = '".$app->functions->intval($web_rec['sys_userid'])."', sys_groupid = '".$app->functions->intval($web_rec['sys_groupid'])."'", 'web_folder_user_id', $app->functions->intval($rec['web_folder_user_id']));
+					}
+					unset($records);
+					unset($rec);
+
 					// Update the Shell user(s) too
 					$records = $app->db->queryAllRecords("SELECT shell_user_id FROM shell_user WHERE parent_domain_id = ".$page_form->id);
 					foreach($records as $rec) {
 						$app->db->datalogUpdate('shell_user', "sys_userid = '".$web_rec['sys_userid']."', sys_groupid = '".$web_rec['sys_groupid']."', puser = '$system_user', pgroup = '$system_group', dir = '$document_root'", 'shell_user_id', $app->functions->intval($rec['shell_user_id']));
+					}
+					unset($records);
+					unset($rec);
+
+					// Update the cron(s) too
+					$records = $app->db->queryAllRecords("SELECT id FROM cron WHERE parent_domain_id = ".$page_form->id);
+					foreach($records as $rec) {
+						$app->db->datalogUpdate('cron', "sys_userid = '".$app->functions->intval($web_rec['sys_userid'])."', sys_groupid = '".$app->functions->intval($web_rec['sys_groupid'])."'", 'id', $app->functions->intval($rec['id']));
 					}
 					unset($records);
 					unset($rec);
@@ -143,6 +175,22 @@
 					foreach($records as $rec) {
 						$app->db->datalogUpdate('web_database', "sys_userid = '".$app->functions->intval($web_rec['sys_userid'])."', sys_groupid = '".$app->functions->intval($web_rec['sys_groupid'])."'", 'database_id', $app->functions->intval($rec['database_id']));
 					}
+
+					//* Update all database users
+					$records = $app->db->queryAllRecords("SELECT web_database_user.database_user_id FROM web_database_user, web_database WHERE web_database_user.database_user_id IN (web_database.database_user_id, web_database.database_ro_user_id) AND web_database.parent_domain_id = ".$page_form->id);
+					foreach($records as $rec) {
+						$app->db->datalogUpdate('web_database_user', "sys_userid = '".$app->functions->intval($web_rec['sys_userid'])."', sys_groupid = '".$app->functions->intval($web_rec['sys_groupid'])."'", 'database_user_id', $app->functions->intval($rec['database_user_id']));
+					}
+					unset($records);
+					unset($rec);
+
+					// Update APS instances
+					$records = $app->db->queryAllRecords("SELECT instance_id FROM aps_instances_settings WHERE name = 'main_domain' AND value = '".$app->db->quote($page_form->oldDataRecord["domain"])."'");
+					if(is_array($records) && !empty($records)){
+						foreach($records as $rec){
+							$app->db->datalogUpdate('aps_instances', "sys_userid = '".$app->functions->intval($web_rec['sys_userid'])."', sys_groupid = '".$app->functions->intval($web_rec['sys_groupid'])."', customer_id = '".$app->functions->intval($client_id)."'", 'id', $rec['instance_id']);
+						}
+					}
 					unset($records);
 					unset($rec);
 
diff --git a/interface/web/admin/form/server_config.tform.php b/interface/web/admin/form/server_config.tform.php
index ccbd8b6..8c6f899 100644
--- a/interface/web/admin/form/server_config.tform.php
+++ b/interface/web/admin/form/server_config.tform.php
@@ -880,6 +880,13 @@
 			'width' => '10',
 			'maxlength' => '255'
 		),
+		'php_handler' => array(
+			'datatype' => 'VARCHAR',
+			'formtype' => 'SELECT',
+			'default' => 'fast-cgi',
+			'value' => array('no' => 'disabled_txt', 'fast-cgi' => 'Fast-CGI', 'cgi' => 'CGI', 'mod' => 'Mod-PHP', 'suphp' => 'SuPHP', 'php-fpm' => 'PHP-FPM'),
+			'searchable' => 2
+		),
 		'nginx_cgi_socket' => array(
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
diff --git a/interface/web/admin/form/system_config.tform.php b/interface/web/admin/form/system_config.tform.php
index 2e08130..86ed19f 100644
--- a/interface/web/admin/form/system_config.tform.php
+++ b/interface/web/admin/form/system_config.tform.php
@@ -172,6 +172,28 @@
 			'default' => 'n',
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
+		'default_webserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '1',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => '',
+			'name'  => 'default_webserver'
+		),
+		'default_dbserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '1',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => '',
+			'name'  => 'default_dbserver'
+		),
 		//#################################
 		// ENDE Datatable fields
 		//#################################
@@ -321,6 +343,53 @@
 			'default' => '',
 			'value'  => array('' => 'No', 'ssl' => 'SSL', 'tls' => 'STARTTLS')
 		),
+		'default_mailserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '1',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => '',
+			'name'  => 'default_mailserver'
+		),
+		//#################################
+		// ENDE Datatable fields
+		//#################################
+	)
+);
+
+$form["tabs"]['dns'] = array (
+	'title'  => "DNS",
+	'width'  => 70,
+	'template'  => "templates/system_config_dns_edit.htm",
+	'fields'  => array (
+		//#################################
+		// Begin Datatable fields
+		//#################################
+		'default_dnsserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '1',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => '',
+			'name'  => 'default_dnsserver'
+		),
+		'default_slave_dnsserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '1',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => '',
+			'name'  => 'default_slave_dnsserver'
+		),
 		//#################################
 		// ENDE Datatable fields
 		//#################################
diff --git a/interface/web/admin/lib/lang/en.lng b/interface/web/admin/lib/lang/en.lng
index d9cbc7f..0d075c1 100644
--- a/interface/web/admin/lib/lang/en.lng
+++ b/interface/web/admin/lib/lang/en.lng
@@ -41,6 +41,8 @@
 
 $wb['Interface'] = 'Interface';
 $wb['Interface Config'] = 'Main Config';
+    $wb['Sites'] = 'Sites';
+    $wb['DNS'] = 'DNS';
     $wb['Domains'] = 'Domains';
     $wb['Misc'] = 'Misc';
 
@@ -59,4 +61,4 @@
 $wb['Remote Actions'] = 'Remote Actions';
 $wb['Do OS-Update'] = 'Do OS-Update';
 $wb['Do ISPConfig-Update'] = 'Do ISPConfig-Update';
-?>
\ No newline at end of file
+?>
diff --git a/interface/web/admin/lib/lang/en_server_config.lng b/interface/web/admin/lib/lang/en_server_config.lng
index f0ac804..9331b50 100644
--- a/interface/web/admin/lib/lang/en_server_config.lng
+++ b/interface/web/admin/lib/lang/en_server_config.lng
@@ -200,4 +200,6 @@
 $wb["overquota_db_notify_admin_txt"] = 'Send DB quota warnings to admin';
 $wb["overquota_db_notify_client_txt"] = 'Send DB quota warnings to client';
 $wb['monitor_system_updates_txt'] = 'Check for Linux updates';
+$wb['php_handler_txt'] = "PHP Handler";
+$wb['disabled_txt'] = 'Disabled';
 ?>
diff --git a/interface/web/admin/lib/lang/en_system_config.lng b/interface/web/admin/lib/lang/en_system_config.lng
index 51131ef..3fa210f 100644
--- a/interface/web/admin/lib/lang/en_system_config.lng
+++ b/interface/web/admin/lib/lang/en_system_config.lng
@@ -73,4 +73,9 @@
 $wb['No'] = 'No';
 $wb['min_password_length_txt'] = 'Minimum password length';
 $wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb["default_mailserver_txt"] = 'Default Mailserver';
+$wb["default_webserver_txt"] = 'Default Webserver';
+$wb["default_dnsserver_txt"] = 'Default DNS Server';
+$wb["default_slave_dnsserver_txt"] = 'Default Secondary DNS Server';
+$wb["default_dbserver_txt"] = 'Default Database Server';
 ?>
diff --git a/interface/web/admin/lib/lang/es.lng b/interface/web/admin/lib/lang/es.lng
index cdb4e27..cd26b06 100644
--- a/interface/web/admin/lib/lang/es.lng
+++ b/interface/web/admin/lib/lang/es.lng
@@ -14,7 +14,7 @@
 $wb['System'] = 'Sistema';
 $wb['Add user'] = 'Añadir usuario';
 $wb['Edit user'] = 'Editar usuarios';
-$wb['CP Users'] = 'Usuarios del Panel';
+$wb['CP Users'] = 'Usuarios del panel';
 $wb['Add group'] = 'Añadir grupo';
 $wb['Edit group'] = 'Editar grupo';
 $wb['Edit server'] = 'Editar servidor';
@@ -29,7 +29,7 @@
 $wb['Software'] = 'Software';
 $wb['Repositories'] = 'Repositorios';
 $wb['Server Services'] = 'Servicios del servidor';
-$wb['Interface Config'] = 'Interfaz de configuración';
+$wb['Interface Config'] = 'Configuración de interfaz';
 $wb['Packages'] = 'Paquetes';
 $wb['Updates'] = 'Actualizaciones';
 $wb['Merge'] = 'Unir';
@@ -39,12 +39,14 @@
 $wb['Do ISPConfig-Update'] = 'Actualizar ISPConfig 3';
 $wb['1001'] = 'El usuario o la contraseña está vacío.';
 $wb['1002'] = 'El usuario o la contraseña esta mal.';
-$wb['User Management'] = 'User Management';
-$wb['Rescue'] = 'Rescue';
-$wb['Server IP addresses'] = 'Server IP addresses';
-$wb['Additional PHP Versions'] = 'Additional PHP Versions';
-$wb['Directive Snippets'] = 'Directive Snippets';
-$wb['Interface'] = 'Interface';
-$wb['Domains'] = 'Domains';
+$wb['User Management'] = 'Gestión de Usuarios';
+$wb['Rescue'] = 'Rescate';
+$wb['Server IP addresses'] = 'Direcciones IP del servidor';
+$wb['Additional PHP Versions'] = 'Versiones adicionales de PHP';
+$wb['Directive Snippets'] = 'Fragmentos de Directivas';
+$wb['Interface'] = 'Interfaz';
+$wb['Domains'] = 'Dominios';
 $wb['Misc'] = 'Misc';
+$wb['Sites'] = 'Sitios';
+$wb['DNS'] = 'DNS';
 ?>
diff --git a/interface/web/admin/lib/lang/es_directive_snippets.lng b/interface/web/admin/lib/lang/es_directive_snippets.lng
index 0f09c12..8c1d1c2 100644
--- a/interface/web/admin/lib/lang/es_directive_snippets.lng
+++ b/interface/web/admin/lib/lang/es_directive_snippets.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['Directive Snippets'] = 'Directive Snippets';
-$wb['name_txt'] = 'Name of Snippet';
-$wb['type_txt'] = 'Type';
-$wb['snippet_txt'] = 'Snippet';
-$wb['active_txt'] = 'Active';
-$wb['directive_snippets_name_empty'] = 'Please specify a name for the snippet.';
-$wb['directive_snippets_name_error_unique'] = 'There is already a directive snippet with this name.';
+$wb['Directive Snippets'] = 'Fragmentos de Directivas';
+$wb['name_txt'] = 'Nombre';
+$wb['type_txt'] = 'Tipo';
+$wb['snippet_txt'] = 'Código';
+$wb['active_txt'] = 'Activo';
+$wb['directive_snippets_name_empty'] = 'Por favor especifica un nombre para el fragmento.';
+$wb['directive_snippets_name_error_unique'] = 'Ya hay un fragmento de directivas con este nombre.';
 $wb['variables_txt'] = 'Variables';
 ?>
diff --git a/interface/web/admin/lib/lang/es_directive_snippets_list.lng b/interface/web/admin/lib/lang/es_directive_snippets_list.lng
index 4124ea3..3778d3e 100644
--- a/interface/web/admin/lib/lang/es_directive_snippets_list.lng
+++ b/interface/web/admin/lib/lang/es_directive_snippets_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Directive Snippets';
-$wb['active_txt'] = 'Active';
-$wb['name_txt'] = 'Name of Snippet';
-$wb['type_txt'] = 'Type';
-$wb['add_new_record_txt'] = 'Add Directive Snippet';
+$wb['list_head_txt'] = 'Fragmentos de Directivas';
+$wb['active_txt'] = 'Activa';
+$wb['name_txt'] = 'Nombre';
+$wb['type_txt'] = 'Tipo';
+$wb['add_new_record_txt'] = 'Añadir Fragmento de Directivas';
 ?>
diff --git a/interface/web/admin/lib/lang/es_iptables.lng b/interface/web/admin/lib/lang/es_iptables.lng
index c7b4d97..cab5a09 100644
--- a/interface/web/admin/lib/lang/es_iptables.lng
+++ b/interface/web/admin/lib/lang/es_iptables.lng
@@ -1,13 +1,13 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
-$wb['multiport_txt'] = 'Multi Port';
-$wb['singleport_txt'] = 'Single Port';
+$wb['multiport_txt'] = 'Multi Puerto';
+$wb['singleport_txt'] = 'Puerto Único';
 $wb['protocol_txt'] = 'Protocolo';
 $wb['table_txt'] = 'Tabla';
-$wb['target_txt'] = 'Objetivo';
+$wb['target_txt'] = 'Destino';
 $wb['state_txt'] = 'Estado';
 $wb['destination_ip_txt'] = 'Dirección de destino';
-$wb['source_ip_txt'] = 'Origen de la dirección';
+$wb['source_ip_txt'] = 'Dirección de origen';
 $wb['active_txt'] = 'Activar';
 $wb['iptables_error_unique'] = 'Ya existe un registro de servidor de seguridad de este servidor.';
 ?>
diff --git a/interface/web/admin/lib/lang/es_iptables_list.lng b/interface/web/admin/lib/lang/es_iptables_list.lng
index 7598994..36f2dd2 100644
--- a/interface/web/admin/lib/lang/es_iptables_list.lng
+++ b/interface/web/admin/lib/lang/es_iptables_list.lng
@@ -2,14 +2,14 @@
 $wb['list_head_txt'] = 'IPTables';
 $wb['add_new_rule_txt'] = 'Añadir reglas a IPTables';
 $wb['server_id_txt'] = 'Servidor';
-$wb['multiport_txt'] = 'Multi Port';
-$wb['singleport_txt'] = 'Single Port';
+$wb['multiport_txt'] = 'Multi Puerto';
+$wb['singleport_txt'] = 'Puerto Único';
 $wb['protocol_txt'] = 'Protocolo';
 $wb['table_txt'] = 'Tabla';
-$wb['target_txt'] = 'Objetivo';
+$wb['target_txt'] = 'Destino';
 $wb['state_txt'] = 'Estado';
-$wb['destination_ip_txt'] = 'Dirección destino';
-$wb['source_ip_txt'] = 'Origen de la dirección';
-$wb['active_txt'] = 'Activar';
+$wb['destination_ip_txt'] = 'Dirección de destino';
+$wb['source_ip_txt'] = 'Dirección de origen';
+$wb['active_txt'] = 'Activa';
 $wb['iptables_error_unique'] = 'Ya existe un registro de servidor de seguridad de este servidor.';
 ?>
diff --git a/interface/web/admin/lib/lang/es_language_import.lng b/interface/web/admin/lib/lang/es_language_import.lng
index dd10346..fe357a8 100644
--- a/interface/web/admin/lib/lang/es_language_import.lng
+++ b/interface/web/admin/lib/lang/es_language_import.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Fichero de importación de idioma';
+$wb['list_head_txt'] = 'Importar Fichero de Idioma';
 $wb['language_import_txt'] = 'Elija el fichero de idioma';
 $wb['btn_save_txt'] = 'Importar el fichero de idioma';
 $wb['language_overwrite_txt'] = 'Sobreescribir los ficheros, si existen';
 $wb['btn_cancel_txt'] = 'Atrás';
 $wb['ignore_version_txt'] = 'Saltar comprobación de la versión ISPConfig';
-$wb['list_desc_txt'] = 'WARNING: Do not import language files from untrustworthy sources.';
+$wb['list_desc_txt'] = 'AVISO: No importes ficheros de idioma de fuentes no fiables.';
 ?>
diff --git a/interface/web/admin/lib/lang/es_package_install.lng b/interface/web/admin/lib/lang/es_package_install.lng
index 574dd11..3b9a89e 100644
--- a/interface/web/admin/lib/lang/es_package_install.lng
+++ b/interface/web/admin/lib/lang/es_package_install.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['repo_name_txt'] = 'Repository';
+$wb['repo_name_txt'] = 'Repositorio';
 $wb['repo_url_txt'] = 'URL';
-$wb['repo_username_txt'] = 'User (optional)';
-$wb['repo_password_txt'] = 'Password (optional)';
-$wb['active_txt'] = 'Active';
+$wb['repo_username_txt'] = 'Usuario (opcional)';
+$wb['repo_password_txt'] = 'Contraseña (opcional)';
+$wb['active_txt'] = 'Activar';
 ?>
diff --git a/interface/web/admin/lib/lang/es_remote_action.lng b/interface/web/admin/lib/lang/es_remote_action.lng
index 5abe234..1ce8f59 100644
--- a/interface/web/admin/lib/lang/es_remote_action.lng
+++ b/interface/web/admin/lib/lang/es_remote_action.lng
@@ -1,10 +1,10 @@
 <?php
 $wb['select_server_txt'] = 'Seleccionar servidor';
 $wb['btn_do_txt'] = 'Ejecutar acción';
-$wb['do_osupdate_caption'] = 'Hacer OS-Update el servidor remoto';
-$wb['do_osupdate_desc'] = 'Esta acción hace un aptitude upgrade-y en su servidor seleccionado <strong> <br> USAR ESTE BAJO SU PROPIO RIESGO </strong>';
-$wb['do_ispcupdate_caption'] = 'Es ISPConfig 3 - Actualización en el servidor remoto';
-$wb['do_ispcupdate_desc'] = 'Esta acción hace una actualización de ISPConfig3 en su servidor seleccionado<strong><br>USAR ESTE BAJO SU PROPIO RIESGO</strong>';
+$wb['do_osupdate_caption'] = 'Hacer actualización de sistema operativo en el servidor remoto';
+$wb['do_osupdate_desc'] = 'Esta acción hace un aptitude upgrade -y en el servidor seleccionado <br> <strong> USAR ESTO BAJO SU PROPIO RIESGO </strong>';
+$wb['do_ispcupdate_caption'] = 'Actualizar ISPConfig 3 en el servidor remoto';
+$wb['do_ispcupdate_desc'] = 'Esta acción hace una actualización de ISPConfig3 en el servidor seleccionado<br><strong>USAR ESTO BAJO SU PROPIO RIESGO</strong>';
 $wb['action_scheduled'] = 'La acción está prevista para su ejecución';
 $wb['select_all_server'] = 'Todos los servidores';
 $wb['ispconfig_update_title'] = 'Instrucciones para actualizar ISPConfig';
diff --git a/interface/web/admin/lib/lang/es_remote_user.lng b/interface/web/admin/lib/lang/es_remote_user.lng
index 739543a..d34570d 100644
--- a/interface/web/admin/lib/lang/es_remote_user.lng
+++ b/interface/web/admin/lib/lang/es_remote_user.lng
@@ -6,42 +6,42 @@
 $wb['username_error_empty'] = 'El nombre de usuario no puede está vacío.';
 $wb['password_error_empty'] = 'La contraseña no puede está vacío.';
 $wb['password_strength_txt'] = 'Fortaleza de la contraseña:';
-$wb['Mail domain functions'] = 'Funciones del dominio de correo';
+$wb['Mail domain functions'] = 'Funciones de dominio de correo';
 $wb['Mail user functions'] = 'Funciones de usuario de correo';
 $wb['Mail alias functions'] = 'Funciones de alias de correo';
-$wb['Mail forward functions'] = 'Funciones de forward';
-$wb['Mail catchall functions'] = 'Funciones de catchall';
-$wb['Mail transport functions'] = 'Funciones de transport';
-$wb['Mail whitelist functions'] = 'Funciones de whitelist';
-$wb['Mail blacklist functions'] = 'Funciones de blacklist';
-$wb['Mail spamfilter user functions'] = 'Funciones de spamfilter usuario';
-$wb['Mail spamfilter policy functions'] = 'Funciones de politica spamfilter';
-$wb['Mail fetchmail functions'] = 'Funciones de fetchmail';
-$wb['Mail user filter functions'] = 'Funciones de usuario de  filter';
-$wb['Mail filter functions'] = 'Funciones de filter';
-$wb['Client functions'] = 'Funciones del Cliente';
-$wb['Sites cron functions'] = 'Funciones de cron';
+$wb['Mail forward functions'] = 'Funciones de reenvíos de correo';
+$wb['Mail catchall functions'] = 'Funciones de correo recoge-todo';
+$wb['Mail transport functions'] = 'Funciones de transportes de correo';
+$wb['Mail whitelist functions'] = 'Funciones de listas blancas';
+$wb['Mail blacklist functions'] = 'Funciones de listas negras';
+$wb['Mail spamfilter user functions'] = 'Funciones de usuarios de spam';
+$wb['Mail spamfilter policy functions'] = 'Funciones de política de spam';
+$wb['Mail fetchmail functions'] = 'Funciones de cuentas Fetchmail';
+$wb['Mail user filter functions'] = 'Funciones de filtros de usuario';
+$wb['Mail filter functions'] = 'Funciones de filtros de correo';
+$wb['Client functions'] = 'Funciones de cliente';
+$wb['Sites cron functions'] = 'Funciones de tareas cron';
 $wb['Sites database functions'] = 'Funciones de bases de datos';
-$wb['Sites FTP-User functions'] = 'Funciones Sites FTP-User';
-$wb['Sites Shell-User functions'] = 'Funciones de Shell-User';
-$wb['Sites Domain functions'] = 'Funciones de Dominio';
-$wb['Sites Aliasdomain functions'] = 'Funciones de Aliasdominio';
-$wb['Sites Subdomain functions'] = 'Funciones de Subdominio';
-$wb['DNS zone functions'] = 'Funciones de zona';
+$wb['Sites FTP-User functions'] = 'Funciones usuarios FTP';
+$wb['Sites Shell-User functions'] = 'Funciones de usuario de consola';
+$wb['Sites Domain functions'] = 'Funciones de dominio';
+$wb['Sites Aliasdomain functions'] = 'Funciones de alias de dominio';
+$wb['Sites Subdomain functions'] = 'Funciones de subdominio';
+$wb['DNS zone functions'] = 'Funciones de zona DNS';
 $wb['DNS a functions'] = 'Funciones de DNS';
-$wb['DNS aaaa functions'] = 'Funciones de aaaa';
+$wb['DNS aaaa functions'] = 'Funciones de DNS aaaa';
 $wb['DNS alias functions'] = 'Funciones de DNS alias';
-$wb['DNS cname functions'] = 'Funciones de cname';
-$wb['DNS hinfo functions'] = 'Funciones de hinfo';
-$wb['DNS mx functions'] = 'Funciones de mx';
-$wb['DNS ns functions'] = 'Funciones de ns';
-$wb['DNS ptr functions'] = 'Funciones de ptr';
-$wb['DNS rp functions'] = 'Funciones de rp';
-$wb['DNS srv functions'] = 'Funciones de srv';
-$wb['DNS txt functions'] = 'Funciones de txt';
-$wb['Mail mailing list functions'] = 'Funciones de mailinglist';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
+$wb['DNS cname functions'] = 'Funciones de DNS cname';
+$wb['DNS hinfo functions'] = 'Funciones de DNS hinfo';
+$wb['DNS mx functions'] = 'Funciones de DNS mx';
+$wb['DNS ns functions'] = 'Funciones de DNS ns';
+$wb['DNS ptr functions'] = 'Funciones de DNS ptr';
+$wb['DNS rp functions'] = 'Funciones de DNS rp';
+$wb['DNS srv functions'] = 'Funciones de DNS srv';
+$wb['DNS txt functions'] = 'Funciones de DNS txt';
+$wb['Mail mailing list functions'] = 'Funciones de listas de correo';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
 ?>
diff --git a/interface/web/admin/lib/lang/es_server.lng b/interface/web/admin/lib/lang/es_server.lng
index 2b96119..c43cfbf 100644
--- a/interface/web/admin/lib/lang/es_server.lng
+++ b/interface/web/admin/lib/lang/es_server.lng
@@ -10,6 +10,6 @@
 $wb['active_txt'] = 'Activar';
 $wb['mirror_server_id_txt'] = 'Es el espejo del Servidor';
 $wb['- None -'] = '- Ninguno -';
-$wb['proxy_server_txt'] = 'Servidor-Proxy';
-$wb['firewall_server_txt'] = 'Servidor-Cortafuegos';
+$wb['proxy_server_txt'] = 'Proxy';
+$wb['firewall_server_txt'] = 'Cortafuegos';
 ?>
diff --git a/interface/web/admin/lib/lang/es_server_config.lng b/interface/web/admin/lib/lang/es_server_config.lng
index b16f0fa..734d83b 100644
--- a/interface/web/admin/lib/lang/es_server_config.lng
+++ b/interface/web/admin/lib/lang/es_server_config.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['jailkit_chroot_home_txt'] = 'Carpeta Jailkit chroot';
-$wb['jailkit_chroot_app_sections_txt'] = 'Secciones de aplicacón Jailkit chroot';
-$wb['jailkit_chroot_app_programs_txt'] = 'Aplicaciones Jailkit chrooted';
+$wb['jailkit_chroot_home_txt'] = 'Carpeta de jaula';
+$wb['jailkit_chroot_app_sections_txt'] = 'Secciones de aplicaciones';
+$wb['jailkit_chroot_app_programs_txt'] = 'Aplicaciones enjauladas';
 $wb['website_path_txt'] = 'Ruta del sitio web';
 $wb['website_symlinks_txt'] = 'Enlaces simbólicos del sitio web';
-$wb['website_symlinks_rel_txt'] = 'Hacer relitivos enlaces simbólicos';
+$wb['website_symlinks_rel_txt'] = 'Hacer enlaces simbólicos relativos';
 $wb['vhost_conf_dir_txt'] = 'Directorio de configuración de vhost';
 $wb['vhost_conf_enabled_dir_txt'] = 'Directorio de configuración de vhost activados';
 $wb['getmail_config_dir_txt'] = 'Directorio de configuración de Getmail';
@@ -16,13 +16,13 @@
 $wb['fastcgi_max_requests_txt'] = 'Peticiones máximas de FastCGI';
 $wb['fastcgi_bin_txt'] = 'Binario de FastCGI';
 $wb['module_txt'] = 'Módulo';
-$wb['maildir_path_txt'] = 'Ruta de maildir';
-$wb['homedir_path_txt'] = 'Ruta de homedir';
-$wb['mailuser_uid_txt'] = 'UID usuario de correo';
-$wb['mailuser_gid_txt'] = 'GID usuario de correo';
+$wb['maildir_path_txt'] = 'Ruta de buzones';
+$wb['homedir_path_txt'] = 'Ruta base de correo';
+$wb['mailuser_uid_txt'] = 'UID del usuario de correo';
+$wb['mailuser_gid_txt'] = 'GID del usuario de correo';
 $wb['mailuser_name_txt'] = 'Nombre del usuario de correo';
 $wb['mailuser_group_txt'] = 'Grupo del usuario de correo';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
+$wb['mailbox_virtual_uidgid_maps_txt'] = 'Usar ID de usuario de Linux de sitios web para los buzones (solo si en el mismo servidor)';
 $wb['relayhost_txt'] = 'Servidor de retransmisión';
 $wb['relayhost_user_txt'] = 'Usuario de retransmisión';
 $wb['relayhost_password_txt'] = 'Contraseña de retramisión';
@@ -31,170 +31,167 @@
 $wb['ip_address_txt'] = 'Dirección IP';
 $wb['netmask_txt'] = 'Máscara de red';
 $wb['gateway_txt'] = 'Pasarela';
-$wb['hostname_txt'] = 'Nombre de la host (hostname)';
+$wb['hostname_txt'] = 'Nombre del servidor';
 $wb['nameservers_txt'] = 'Servidores de nombres';
 $wb['auto_network_configuration_txt'] = 'Configuración de red';
-$wb['website_basedir_txt'] = 'Basedir del sitio Web';
+$wb['website_basedir_txt'] = 'Directorio base del sitio Web';
 $wb['ip_address_error_wrong'] = 'Formato incorrecto de dirección IP.';
 $wb['netmask_error_wrong'] = 'Formato incorrecto de máscara de red.';
 $wb['gateway_error_wrong'] = 'Formato incorrecto de pasarela.';
-$wb['hostname_error_empty'] = 'El nombre de maquina está vacío.';
-$wb['nameservers_error_empty'] = 'El servidor de nombres (nameserver) está vacío.';
-$wb['jailkit_chroot_cron_programs_txt'] = 'Aplicaciones Jailkit cron chrooted';
+$wb['hostname_error_empty'] = 'El nombre del servidor está vacío.';
+$wb['nameservers_error_empty'] = 'El servidor de nombres está vacío.';
+$wb['jailkit_chroot_cron_programs_txt'] = 'Aplicaciones enjauladas para cron';
 $wb['config_dir_txt'] = 'Directorio de configuración';
 $wb['init_script_txt'] = 'Nombre del script de inicio de cron';
-$wb['crontab_dir_txt'] = 'Ruta para las crontabs individuales';
+$wb['crontab_dir_txt'] = 'Ruta para los crontabs individuales';
 $wb['wget_txt'] = 'Ruta al programa wget';
 $wb['security_level_txt'] = 'Nivel de seguridad';
 $wb['web_user_txt'] = 'Usuario de Apache';
 $wb['web_group_txt'] = 'Grupo de Apache';
-$wb['loglevel_txt'] = 'Loglevel';
-$wb['apps_vhost_port_txt'] = 'Apps-vhost port';
-$wb['apps_vhost_ip_txt'] = 'Apps-vhost IP';
-$wb['apps_vhost_servername_txt'] = 'Apps-vhost Dominio';
-$wb['bind_user_txt'] = 'BIND Usuario';
-$wb['bind_group_txt'] = 'BIND Grupo';
-$wb['bind_zonefiles_dir_txt'] = 'BIND zonefiles directorio';
-$wb['named_conf_path_txt'] = 'BIND named.conf ruta';
-$wb['bind_user_error_empty'] = 'BIND usuario está vacío.';
-$wb['bind_group_error_empty'] = 'BIND grupo está vacío.';
-$wb['bind_zonefiles_dir_error_empty'] = 'BIND directorio zone de archivos está vacío.';
-$wb['named_conf_path_error_empty'] = 'BIND named.conf ruta está vacío.';
-$wb['named_conf_local_path_error_empty'] = 'BIND named.conf.local ruta está vacío.';
-$wb['mail_filter_syntax_txt'] = 'MailFilter Sintaxis';
-$wb['pop3_imap_daemon_txt'] = 'POP3/IMAP Daemon';
+$wb['loglevel_txt'] = 'Nivel de registro';
+$wb['apps_vhost_port_txt'] = 'Puerto de vhost de aplicaciones';
+$wb['apps_vhost_ip_txt'] = 'IP de vhost de aplicaciones';
+$wb['apps_vhost_servername_txt'] = 'Dominio de vhost de aplicaciones';
+$wb['bind_user_txt'] = 'Usuario de BIND';
+$wb['bind_group_txt'] = 'Grupo de BIND';
+$wb['bind_zonefiles_dir_txt'] = 'Directorio de archivos de zona';
+$wb['named_conf_path_txt'] = 'Ruta de named.conf';
+$wb['bind_user_error_empty'] = 'Usuario de BIND está vacío.';
+$wb['bind_group_error_empty'] = 'Grupo de BIND está vacío.';
+$wb['bind_zonefiles_dir_error_empty'] = 'Directorio de archivos de zona está vacío.';
+$wb['named_conf_path_error_empty'] = 'Ruta de named.conf está vacío.';
+$wb['named_conf_local_path_error_empty'] = 'Ruta de named.conf.local está vacío.';
+$wb['mail_filter_syntax_txt'] = 'Sintaxis de filtro de correo';
+$wb['pop3_imap_daemon_txt'] = 'Servidor POP3/IMAP';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
 $wb['php_open_basedir_error_empty'] = 'PHP open_basedir está vacío.';
-$wb['htaccess_allow_override_txt'] = '.htaccess AllowOverride';
-$wb['htaccess_allow_override_error_empty'] = '.htaccess AllowOverride está vacío.';
-$wb['awstats_conf_dir_txt'] = 'awstats conf carpeta';
-$wb['awstats_data_dir_txt'] = 'awstats data carpeta';
-$wb['awstats_pl_txt'] = 'awstats.pl script';
-$wb['awstats_buildstaticpages_pl_txt'] = 'awstats_buildstaticpages.pl script';
-$wb['backup_dir_txt'] = 'Copia de seguridad del directorio';
-$wb['named_conf_local_path_txt'] = 'BIND named.conf.local ruta';
-$wb['php_ini_path_cgi_txt'] = 'CGI php.ini ruta';
-$wb['php_ini_path_apache_txt'] = 'Apache php.ini ruta';
-$wb['check_apache_config_txt'] = 'Prueba de configuración de apache en el reinicio';
-$wb['CA_path_txt'] = 'CA ruta';
-$wb['CA_pass_txt'] = 'CA frase de contraseña';
+$wb['htaccess_allow_override_txt'] = 'AllowOverride en .htaccess';
+$wb['htaccess_allow_override_error_empty'] = 'AllowOverride en .htaccess está vacío.';
+$wb['awstats_conf_dir_txt'] = 'Carpeta de configuración de awstats';
+$wb['awstats_data_dir_txt'] = 'Carpeta de datos de awstats';
+$wb['awstats_pl_txt'] = 'Script awstats.pl';
+$wb['awstats_buildstaticpages_pl_txt'] = 'Script awstats_buildstaticpages.pl';
+$wb['backup_dir_txt'] = 'Directorio de copias de seguridad';
+$wb['named_conf_local_path_txt'] = 'Ruta de named.conf.local';
+$wb['php_ini_path_cgi_txt'] = 'Ruta al php.ini de CGI';
+$wb['php_ini_path_apache_txt'] = 'Ruta al php.ini de Apache';
+$wb['check_apache_config_txt'] = 'Comprobar configuración de apache en el reinicio';
+$wb['CA_path_txt'] = 'Ruta CA';
+$wb['CA_pass_txt'] = 'Contraseña de CA';
 $wb['ufw_enable_txt'] = 'Habilitar';
-$wb['ufw_manage_builtins_txt'] = 'Administrar reglas Builtin';
+$wb['ufw_manage_builtins_txt'] = 'Administrar reglas predefinidas';
 $wb['ufw_ipv6_txt'] = 'Habilitar IPv6';
-$wb['ufw_default_input_policy_txt'] = 'Politica por defecto Input';
-$wb['ufw_default_output_policy_txt'] = 'Politica por defecto Output';
-$wb['ufw_default_forward_policy_txt'] = 'Politica por defecto Forward';
-$wb['ufw_default_application_policy_txt'] = 'Politica por defecto Application';
+$wb['ufw_default_input_policy_txt'] = 'Politica por defecto de entrada';
+$wb['ufw_default_output_policy_txt'] = 'Politica por defecto de salida';
+$wb['ufw_default_forward_policy_txt'] = 'Politica por defecto de redirección';
+$wb['ufw_default_application_policy_txt'] = 'Politica por defecto de aplicación';
 $wb['ufw_log_level_txt'] = 'Nivel de registro';
 $wb['network_config_warning_txt'] = 'La opción de configuración de la red solo está disponible para los servidores de Debian y Ubuntu. No habilite esta opción si su interfaz de red no es eth0.';
-$wb['fastcgi_config_syntax_txt'] = 'La sintaxis de configuración de FastCGI';
+$wb['fastcgi_config_syntax_txt'] = 'Sintaxis de configuración de FastCGI';
 $wb['server_type_txt'] = 'Tipo de servidor';
-$wb['nginx_vhost_conf_dir_txt'] = 'Nginx Vhost config dir';
-$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Nginx Vhost config enabled dir';
-$wb['nginx_user_txt'] = 'Nginx usuario';
-$wb['nginx_group_txt'] = 'Nginx grupo';
-$wb['nginx_cgi_socket_txt'] = 'Nginx CGI Socket';
-$wb['backup_dir_error_empty'] = 'Copia de seguridad directorio está vacío.';
-$wb['maildir_path_error_empty'] = 'Maildir ruta está vacío.';
-$wb['homedir_path_error_empty'] = 'Homedir ruta está vacío.';
-$wb['mailuser_uid_error_empty'] = 'Mailuser UID está vacío.';
-$wb['mailuser_gid_error_empty'] = 'Mailuser GID está vacío.';
-$wb['mailuser_name_error_empty'] = 'Mailuser nombre está vacío.';
-$wb['mailuser_group_error_empty'] = 'Mailuser Grupo está vacío.';
-$wb['getmail_config_dir_error_empty'] = 'Getmail config dir está vacío.';
-$wb['website_basedir_error_empty'] = 'Sitio web basedir está vacío.';
-$wb['website_path_error_empty'] = 'Sitio web ruta está vacío.';
-$wb['website_symlinks_error_empty'] = 'Sitio web symlinks está vacío.';
-$wb['vhost_conf_dir_error_empty'] = 'Vhost config dir está vacío.';
-$wb['vhost_conf_enabled_dir_error_empty'] = 'Vhost config enabled dir está vacío.';
-$wb['nginx_vhost_conf_dir_error_empty'] = 'Nginx Vhost config dir está vacío.';
-$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Nginx Vhost config enabled dir está vacío.';
-$wb['apache_user_error_empty'] = 'Apache usuario está vacío.';
-$wb['apache_group_error_empty'] = 'Apache gropo está vacío.';
-$wb['nginx_user_error_empty'] = 'Nginx user está vacío.';
-$wb['nginx_group_error_empty'] = 'Nginx group está vacío.';
-$wb['php_ini_path_apache_error_empty'] = 'Apache php.ini ruta está vacío.';
-$wb['php_ini_path_cgi_error_empty'] = 'CGI php.ini ruta está vacío.';
-$wb['nginx_cgi_socket_empty'] = 'Nginx CGI Socket está vacío.';
-$wb['apps_vhost_port_error_empty'] = 'Apps-vhost puerto está vacío.';
-$wb['apps_vhost_ip_error_empty'] = 'Apps-vhost IP está vacío.';
-$wb['fastcgi_starter_path_error_empty'] = 'FastCGI starter ruta está vacío.';
-$wb['fastcgi_starter_script_error_empty'] = 'FastCGI starter script está vacío.';
-$wb['fastcgi_alias_error_empty'] = 'FastCGI Alias está vacío.';
-$wb['fastcgi_phpini_path_error_empty'] = 'FastCGI php.ini ruta está vacío.';
-$wb['fastcgi_children_error_empty'] = 'FastCGI Children está vacío.';
-$wb['fastcgi_max_requests_error_empty'] = 'FastCGI max. Requests está vacío.';
-$wb['fastcgi_bin_error_empty'] = 'FastCGI Bin está vacío.';
-$wb['jailkit_chroot_home_error_empty'] = 'Jailkit chroot home está vacío.';
-$wb['jailkit_chroot_app_sections_error_empty'] = 'Jailkit chroot app sections está vacío.';
-$wb['jailkit_chroot_app_programs_error_empty'] = 'Jailkit chrooted applications está vacío.';
-$wb['jailkit_chroot_cron_programs_error_empty'] = 'Jailkit cron chrooted applications está vacío.';
-$wb['vlogger_config_dir_error_empty'] = 'Config directorio está vacío.';
-$wb['cron_init_script_error_empty'] = 'Cron init script name está vacío.';
-$wb['crontab_dir_error_empty'] = 'ruta for individual crontabs está vacío.';
-$wb['cron_wget_error_empty'] = 'ruta to wget program está vacío.';
-$wb['php_fpm_init_script_txt'] = 'PHP-FPM init script';
-$wb['php_fpm_init_script_error_empty'] = 'PHP-FPM init script está vacío.';
-$wb['php_fpm_ini_path_txt'] = 'PHP-FPM php.ini ruta';
-$wb['php_fpm_ini_path_error_empty'] = 'PHP-FPM php.ini ruta está vacío.';
-$wb['php_fpm_pool_dir_txt'] = 'PHP-FPM pool directorio';
-$wb['php_fpm_pool_dir_error_empty'] = 'PHP-FPM pool directorio está vacío.';
-$wb['php_fpm_start_port_txt'] = 'PHP-FPM start port';
-$wb['php_fpm_start_port_error_empty'] = 'PHP-FPM start port está vacío.';
-$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directorio';
-$wb['php_fpm_socket_dir_error_empty'] = 'PHP-FPM socket directorio está vacío.';
+$wb['nginx_vhost_conf_dir_txt'] = 'Directorio de configuración de vhost';
+$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Directorio de configuración de vhost activados';
+$wb['nginx_user_txt'] = 'Usuario de Nginx';
+$wb['nginx_group_txt'] = 'Grupo de Nginx';
+$wb['nginx_cgi_socket_txt'] = 'Socket CGI de Nginx';
+$wb['backup_dir_error_empty'] = 'Directorio de copias de seguridad está vacío.';
+$wb['maildir_path_error_empty'] = 'Ruta de buzones está vacía.';
+$wb['homedir_path_error_empty'] = 'Ruta base de correo está vacía.';
+$wb['mailuser_uid_error_empty'] = 'UID del usuario de correo está vacío.';
+$wb['mailuser_gid_error_empty'] = 'GID del usuario de correo está vacío.';
+$wb['mailuser_name_error_empty'] = 'Nombre del usuario de correo está vacío.';
+$wb['mailuser_group_error_empty'] = 'Grupo del usuario de correo está vacío.';
+$wb['getmail_config_dir_error_empty'] = 'Directorio de configuración de Getmail está vacío.';
+$wb['website_basedir_error_empty'] = 'Directorio base del sitio web está vacío.';
+$wb['website_path_error_empty'] = 'Ruta del sitio web está vacía.';
+$wb['website_symlinks_error_empty'] = 'Enlaces simbólicos del sitio web está vacío.';
+$wb['vhost_conf_dir_error_empty'] = 'Directorio de configuración de vhost está vacío.';
+$wb['vhost_conf_enabled_dir_error_empty'] = 'Directorio de configuración de vhost activados está vacío.';
+$wb['nginx_vhost_conf_dir_error_empty'] = 'Directorio de configuración de vhost está vacío.';
+$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Directorio de configuración de vhost activados está vacío.';
+$wb['apache_user_error_empty'] = 'Usuario de Apache está vacío.';
+$wb['apache_group_error_empty'] = 'Grupo de Apache está vacío.';
+$wb['nginx_user_error_empty'] = 'Usuario de Nginx está vacío.';
+$wb['nginx_group_error_empty'] = 'Grupo de Nginx está vacío.';
+$wb['php_ini_path_apache_error_empty'] = 'Ruta al php.ini de Apache está vacío.';
+$wb['php_ini_path_cgi_error_empty'] = 'Ruta al php.ini de CGI está vacío.';
+$wb['nginx_cgi_socket_empty'] = 'Socket CGI de Nginx está vacío.';
+$wb['apps_vhost_port_error_empty'] = 'Puerto de vhost de aplicaciones está vacío.';
+$wb['apps_vhost_ip_error_empty'] = 'IP de vhost de aplicaciones está vacía.';
+$wb['fastcgi_starter_path_error_empty'] = 'Ruta de scripts de FastCGI está vacía.';
+$wb['fastcgi_starter_script_error_empty'] = 'Script de inicio de FastCGI está vacío.';
+$wb['fastcgi_alias_error_empty'] = 'Alias de FastCGI está vacío.';
+$wb['fastcgi_phpini_path_error_empty'] = 'Ruta al php.ini de FastCGI está vacío.';
+$wb['fastcgi_children_error_empty'] = 'Hijos de FastCGI está vacío.';
+$wb['fastcgi_max_requests_error_empty'] = 'Peticiones máximas de FastCGI está vacío.';
+$wb['fastcgi_bin_error_empty'] = 'Binario de FastCGI está vacío.';
+$wb['jailkit_chroot_home_error_empty'] = 'Carpeta de jaula está vacía.';
+$wb['jailkit_chroot_app_sections_error_empty'] = 'Secciones de aplicaciones está vacío.';
+$wb['jailkit_chroot_app_programs_error_empty'] = 'Aplicaciones enjauladas está vacío.';
+$wb['jailkit_chroot_cron_programs_error_empty'] = 'Aplicaciones enjauladas para cron está vacío.';
+$wb['vlogger_config_dir_error_empty'] = 'Directorio de configuración está vacío.';
+$wb['cron_init_script_error_empty'] = 'Nombre del script de inicio de cron está vacío.';
+$wb['crontab_dir_error_empty'] = 'Ruta para los crontabs individuales está vacía.';
+$wb['cron_wget_error_empty'] = 'Ruta al programa wget está vacía.';
+$wb['php_fpm_init_script_txt'] = 'Script de inicio de PHP-FPM';
+$wb['php_fpm_init_script_error_empty'] = 'Script de inicio de PHP-FPM está vacío.';
+$wb['php_fpm_ini_path_txt'] = 'Ruta al php.ini de PHP-FPM';
+$wb['php_fpm_ini_path_error_empty'] = 'Ruta al php.ini de PHP-FPM está vacío.';
+$wb['php_fpm_pool_dir_txt'] = 'Directorio de pool de PHP-FPM';
+$wb['php_fpm_pool_dir_error_empty'] = 'Directorio de pool de PHP-FPM está vacío.';
+$wb['php_fpm_start_port_txt'] = 'Puerto de inicio de PHP-FPM';
+$wb['php_fpm_start_port_error_empty'] = 'Puerto de inicio de PHP-FPM está vacío.';
+$wb['php_fpm_socket_dir_txt'] = 'Directorio de socket de PHP-FPM';
+$wb['php_fpm_socket_dir_error_empty'] = 'Directorio de socket de PHP-FPM está vacío.';
 $wb['try_rescue_txt'] = 'Habilitar el servicio de monitoreo y reiniciar en caso de fallo';
 $wb['do_not_try_rescue_mysql_txt'] = 'Desactivar el seguimiento de MySQL';
-$wb['do_not_try_rescue_mail_txt'] = 'Desactivar el seguimiento de Ecorreo';
-$wb['rescue_description_txt'] = '<b>Información:</b> ¡Si desea apagar mysql tiene que seleccionar la casilla de verificación Deshabilitar MySQL monitor y esperar 2-3 minutos. <br> Si usted no espera 2-3 minutos, el rescate se intenta reiniciar mysql!';
+$wb['do_not_try_rescue_mail_txt'] = 'Desactivar el seguimiento de correo';
+$wb['rescue_description_txt'] = '<b>Información:</b> ¡Si desea apagar mysql tiene que seleccionar la casilla de verificación Deshabilitar MySQL monitor y esperar 2-3 minutos. <br> Si usted no espera 2-3 minutos, el rescate intentará reiniciar mysql!';
 $wb['enable_sni_txt'] = 'Habilitar SNI';
 $wb['do_not_try_rescue_httpd_txt'] = 'Desactivar el seguimiento de HTTPD';
-$wb['set_folder_permissions_on_update_txt'] = 'Juego de permisos de las carpetas de actualización';
+$wb['set_folder_permissions_on_update_txt'] = 'Establecer permisos de carpetas al actualizar';
 $wb['add_web_users_to_sshusers_group_txt'] = 'Añadir usuarios de la web a los sshusers del grupo';
-$wb['connect_userid_to_webid_txt'] = 'Connect ID de usuario de Linux para webid';
-$wb['connect_userid_to_webid_start_txt'] = 'Inicio de identificación para identificación de usuario/webid conexión';
-$wb['website_autoalias_txt'] = 'Website auto alias';
-$wb['website_autoalias_note_txt'] = 'Placeholders:';
-$wb['backup_mode_txt'] = 'Backup mode';
-$wb['backup_mode_userzip'] = 'Backup web files owned by web user as zip';
-$wb['backup_mode_rootgz'] = 'Backup all files in web directory as root user';
+$wb['connect_userid_to_webid_txt'] = 'Conectar ID de usuario de Linux con webid';
+$wb['connect_userid_to_webid_start_txt'] = 'Inicio de ID para conectar ID de usuario con webid';
+$wb['website_autoalias_txt'] = 'Alias automático de sitios web';
+$wb['website_autoalias_note_txt'] = 'Marcadores:';
+$wb['backup_mode_txt'] = 'Modo de copias de seguridad';
+$wb['backup_mode_userzip'] = 'Copiar archivos del usuario web en un zip';
+$wb['backup_mode_rootgz'] = 'Copiar todos los archivos como usuario root';
 $wb['realtime_blackhole_list_txt'] = 'Real-time Blackhole List';
-$wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)';
-$wb['ssl_settings_txt'] = 'SSL Settings';
-$wb['permissions_txt'] = 'Permissions';
-$wb['php_settings_txt'] = 'PHP Settings';
-$wb['apps_vhost_settings_txt'] = 'Apps Vhost Settings';
-$wb['awstats_settings_txt'] = 'AWStats Settings';
-$wb['firewall_txt'] = 'Firewall';
-$wb['mailbox_quota_stats_txt'] = 'Mailbox quota statistics';
-$wb['enable_ip_wildcard_txt'] = 'Enable IP wildcard (*)';
-$wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attributes)';
-$wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin';
-$wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client';
-$wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.';
-$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin';
-$wb['overquota_notify_client_txt'] = 'Send quota warnings to client';
-$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client';
-$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days';
-$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages';
-$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level';
-$wb['no_notifications_txt'] = 'No Notifications';
-$wb['monit_url_txt'] = 'Monit URL';
-$wb['monit_user_txt'] = 'Monit User';
-$wb['monit_password_txt'] = 'Monit Password';
-$wb['monit_url_error_regex'] = 'Invalid Monit URL';
-$wb['monit_url_note_txt'] = 'Placeholder:';
-$wb['munin_url_txt'] = 'Munin URL';
-$wb['munin_user_txt'] = 'Munin User';
-$wb['munin_password_txt'] = 'Munin Password';
-$wb['munin_url_error_regex'] = 'Invalid Munin URL';
-$wb['munin_url_note_txt'] = 'Placeholder:';
-$wb["dkim_path_txt"] = 'DKIM Path';
-$wb['backup_delete_txt'] = 'Delete backups on domain/website delete';
-$wb["v6_prefix_txt"] = 'IPv6 Prefix';
-$wb["vhost_rewrite_v6_txt"] = 'Rewrite IPv6 on Mirror';
-$wb["v6_prefix_length"] = 'Prefix too long according to defined IPv6 ';
-$wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?';
-$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted';
-$wb['monitor_system_updates_txt'] = 'Check for Linux updates';
+$wb['realtime_blackhole_list_note_txt'] = '(Separar RBL's con comas)';
+$wb['ssl_settings_txt'] = 'Configuración SSL';
+$wb['permissions_txt'] = 'Permisos';
+$wb['php_settings_txt'] = 'Configuración de PHP';
+$wb['apps_vhost_settings_txt'] = 'Configuración de Vhost de Aplicaciones';
+$wb['awstats_settings_txt'] = 'Configuración de AWStats';
+$wb['firewall_txt'] = 'Cortafuegos';
+$wb['mailbox_quota_stats_txt'] = 'Estadísticas de cuota de buzones';
+$wb['enable_ip_wildcard_txt'] = 'Activar IP comodín (*)';
+$wb['web_folder_protection_txt'] = 'Hacer carpetas web inmutables (atributos extendidos)';
+$wb['overtraffic_notify_admin_txt'] = 'Enviar notificación de tráfico superado al administrador';
+$wb['overtraffic_notify_client_txt'] = 'Enviar notificación de tráfico superado al cliente';
+$wb['rbl_error_regex'] = 'Por favor especifica nombres RBL válidos.';
+$wb['overquota_notify_admin_txt'] = 'Enviar avisos de cuota al administrador';
+$wb['overquota_notify_client_txt'] = 'Enviar avisos de cuota al cliente';
+$wb['overquota_notify_onok_txt'] = 'Enviar mensajes de cuota correcta al cliente';
+$wb['overquota_notify_freq_txt'] = 'Enviar avisos de cuota cada X días';
+$wb['overquota_notify_freq_note_txt'] = '0 = enviar mensaje sólo una vez, sin repetir mensajes';
+$wb['admin_notify_events_txt'] = 'Enviar correo al administrador empezando con el siguiente nivel';
+$wb['no_notifications_txt'] = 'Sin notificaciones';
+$wb['monit_url_txt'] = 'URL de Monit';
+$wb['monit_user_txt'] = 'Usuario de Monit';
+$wb['monit_password_txt'] = 'Contraseña de Monit';
+$wb['monit_url_error_regex'] = 'URL de Monit no válida';
+$wb['monit_url_note_txt'] = 'Marcadores:';
+$wb['munin_url_txt'] = 'URL de Munin';
+$wb['munin_user_txt'] = 'Usuario de Munin';
+$wb['munin_password_txt'] = 'Contraseña de Munin';
+$wb['munin_url_error_regex'] = 'URL de Munin no válida';
+$wb['munin_url_note_txt'] = 'Marcadores:';
+$wb['backup_dir_is_mount_txt'] = '¿El directorio de copias de seguridad es un punto de montaje?';
+$wb['backup_dir_mount_cmd_txt'] = 'Comando para montar, si el directorio de copias de seguridad no está montado';
+$wb['monitor_system_updates_txt'] = 'Comprobar actualizaciones de linux';
+$wb['php_handler_txt'] = "Manejador de PHP";
+$wb['disabled_txt'] = "Desactivado";
 ?>
diff --git a/interface/web/admin/lib/lang/es_server_ip.lng b/interface/web/admin/lib/lang/es_server_ip.lng
index 14935f1..92869bb 100644
--- a/interface/web/admin/lib/lang/es_server_ip.lng
+++ b/interface/web/admin/lib/lang/es_server_ip.lng
@@ -1,11 +1,13 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['ip_address_txt'] = 'Dirección IP';
-$wb['virtualhost_txt'] = 'NameVirtualHost HTTP';
+$wb['virtualhost_txt'] = 'Host virtual con nombre HTTP';
 $wb['ip_error_wrong'] = 'Dirección IP no válida';
 $wb['ip_error_unique'] = 'La dirección IP debe ser única';
 $wb['client_id_txt'] = 'Cliente';
 $wb['ip_type_txt'] = 'Tipo';
 $wb['virtualhost_port_txt'] = 'Puertos HTTP';
 $wb['error_port_syntax'] = 'Caracteres no válidos en el campo Puerto, introduzca números separados por comas solo. Ejemplo: 80,443';
+$wb['IP Address'] = 'Dirección IP';
+$wb['IP Addresses'] = 'Direcciones IP';
 ?>
diff --git a/interface/web/admin/lib/lang/es_server_ip_list.lng b/interface/web/admin/lib/lang/es_server_ip_list.lng
index 8aee59d..adb974b 100644
--- a/interface/web/admin/lib/lang/es_server_ip_list.lng
+++ b/interface/web/admin/lib/lang/es_server_ip_list.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Dirección IP';
+$wb['list_head_txt'] = 'Direcciones IP';
 $wb['server_id_txt'] = 'Servidor';
 $wb['ip_address_txt'] = 'Dirección IP';
 $wb['add_new_record_txt'] = 'Añadir nueva dirección IP';
 $wb['client_id_txt'] = 'Cliente';
 $wb['virtualhost_txt'] = 'HTTP Vhost';
-$wb['virtualhost_port_txt'] = 'HTTP Ports';
+$wb['virtualhost_port_txt'] = 'Puertos HTTP';
 $wb['ip_type_txt'] = 'Tipo';
 ?>
diff --git a/interface/web/admin/lib/lang/es_server_php.lng b/interface/web/admin/lib/lang/es_server_php.lng
index addbfa4..3ff4fa2 100644
--- a/interface/web/admin/lib/lang/es_server_php.lng
+++ b/interface/web/admin/lib/lang/es_server_php.lng
@@ -1,16 +1,16 @@
 <?php
-$wb['server_id_txt'] = 'Server';
-$wb['client_id_txt'] = 'Client';
-$wb['name_txt'] = 'PHP Name';
-$wb['Name'] = 'Name';
-$wb['FastCGI Settings'] = 'FastCGI Settings';
-$wb['PHP-FPM Settings'] = 'PHP-FPM Settings';
-$wb['Additional PHP Versions'] = 'Additional PHP Versions';
-$wb['Form to edit additional PHP versions'] = 'Form to edit additional PHP versions';
-$wb['server_php_name_error_empty'] = 'The Name field must not be empty.';
-$wb['php_fastcgi_binary_txt'] = 'Path to the PHP FastCGI binary';
-$wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory';
-$wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script';
-$wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory';
-$wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory';
+$wb['server_id_txt'] = 'Servidor';
+$wb['client_id_txt'] = 'Cliente';
+$wb['name_txt'] = 'Versión de PHP';
+$wb['Name'] = 'Nombre';
+$wb['FastCGI Settings'] = 'Configuraciones FastCGI';
+$wb['PHP-FPM Settings'] = 'Configuraciones PHP-FPM';
+$wb['Additional PHP Versions'] = 'Versiones adicionales de PHP';
+$wb['Form to edit additional PHP versions'] = 'Formulario para editar versiones adicionales de PHP';
+$wb['server_php_name_error_empty'] = 'El campo nombre no debe estar vacío.';
+$wb['php_fastcgi_binary_txt'] = 'Ruta al binario FastCGI de PHP';
+$wb['php_fastcgi_ini_dir_txt'] = 'Ruta al directorio de php.ini';
+$wb['php_fpm_init_script_txt'] = 'Ruta al script de inicio de PHP-FPM';
+$wb['php_fpm_ini_dir_txt'] = 'Ruta al directorio de php.ini';
+$wb['php_fpm_pool_dir_txt'] = 'Ruta al directorio de pool de PHP-FPM';
 ?>
diff --git a/interface/web/admin/lib/lang/es_server_php_list.lng b/interface/web/admin/lib/lang/es_server_php_list.lng
index b402fd1..d70f02d 100644
--- a/interface/web/admin/lib/lang/es_server_php_list.lng
+++ b/interface/web/admin/lib/lang/es_server_php_list.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Additional PHP Versions';
-$wb['server_id_txt'] = 'Server';
-$wb['add_new_record_txt'] = 'Add new PHP version';
-$wb['client_id_txt'] = 'Client';
-$wb['name_txt'] = 'PHP Name';
+$wb['list_head_txt'] = 'Versiones adicionales de PHP';
+$wb['server_id_txt'] = 'Servidor';
+$wb['add_new_record_txt'] = 'Añadir nueva versión de PHP';
+$wb['client_id_txt'] = 'Cliente';
+$wb['name_txt'] = 'Nombre de PHP';
 ?>
diff --git a/interface/web/admin/lib/lang/es_software_package_list.lng b/interface/web/admin/lib/lang/es_software_package_list.lng
index 3986ef8..7aadef7 100644
--- a/interface/web/admin/lib/lang/es_software_package_list.lng
+++ b/interface/web/admin/lib/lang/es_software_package_list.lng
@@ -4,10 +4,10 @@
 $wb['package_title_txt'] = 'Paquete';
 $wb['package_description_txt'] = 'Descripción';
 $wb['action_txt'] = 'Acción';
-$wb['toolsarea_head_txt'] = 'Packages';
-$wb['repoupdate_txt'] = 'Update package list';
-$wb['package_id_txt'] = 'local App-ID';
-$wb['no_packages_txt'] = 'No packages available';
-$wb['edit_txt'] = 'Edit';
-$wb['delete_txt'] = 'Delete';
+$wb['toolsarea_head_txt'] = 'Paquetes';
+$wb['repoupdate_txt'] = 'Actualizar lista de paquetes';
+$wb['package_id_txt'] = 'App-ID local';
+$wb['no_packages_txt'] = 'No hay paquetes disponibles';
+$wb['edit_txt'] = 'Editar';
+$wb['delete_txt'] = 'Eliminar';
 ?>
diff --git a/interface/web/admin/lib/lang/es_software_repo.lng b/interface/web/admin/lib/lang/es_software_repo.lng
index b8487cf..161d08e 100644
--- a/interface/web/admin/lib/lang/es_software_repo.lng
+++ b/interface/web/admin/lib/lang/es_software_repo.lng
@@ -4,5 +4,5 @@
 $wb['repo_username_txt'] = 'Usuario (opcional)';
 $wb['repo_password_txt'] = 'Contraseña (opcional)';
 $wb['active_txt'] = 'Activar';
-$wb['Software Repository which may contain addons or updates'] = 'Software Repository which may contain addons or updates';
+$wb['Software Repository which may contain addons or updates'] = 'Repositorio de software que puede contener extensiones o actualizaciones';
 ?>
diff --git a/interface/web/admin/lib/lang/es_software_update_list.lng b/interface/web/admin/lib/lang/es_software_update_list.lng
index deb2a3c..92cf4a8 100644
--- a/interface/web/admin/lib/lang/es_software_update_list.lng
+++ b/interface/web/admin/lib/lang/es_software_update_list.lng
@@ -5,5 +5,5 @@
 $wb['version_txt'] = 'Versión';
 $wb['action_txt'] = 'Acción';
 $wb['server_select_txt'] = 'Seleccionar servidor';
-$wb['no_updates_txt'] = 'No updates available';
+$wb['no_updates_txt'] = 'No hay actualizaciones disponibles';
 ?>
diff --git a/interface/web/admin/lib/lang/es_system_config.lng b/interface/web/admin/lib/lang/es_system_config.lng
index bafbf9b..503d844 100644
--- a/interface/web/admin/lib/lang/es_system_config.lng
+++ b/interface/web/admin/lib/lang/es_system_config.lng
@@ -10,64 +10,69 @@
 $wb['shelluser_prefix_error_regex'] = 'Caracteres no permitidos en el prefijo del usuario de la consola.';
 $wb['dblist_phpmyadmin_link_txt'] = 'Enlace a phpmyadmin en la lista de bases de datos';
 $wb['mailboxlist_webmail_link_txt'] = 'Enlace al correo web en la lista de buzones de correo';
-$wb['webmail_url_txt'] = 'Webmail URL';
-$wb['phpmyadmin_url_txt'] = 'PHPMyAdmin URL';
+$wb['webmail_url_txt'] = 'URL de correo web';
+$wb['phpmyadmin_url_txt'] = 'URL de PHPMyAdmin';
 $wb['use_domain_module_txt'] = 'Utilice el módulo dominio para añadir nuevos dominios';
-$wb['use_domain_module_hint'] = 'Si se utiliza este módulo, los clientes sólo se puede seleccionar uno de los dominios de la administración crea para ellos. Ellos no pueden liberar a editar el campo dominio. Usted tiene que volver a entrar después de cambiar este valor, para hacer los cambios visibles.';
+$wb['use_domain_module_hint'] = 'Si se utiliza este módulo, los clientes sólo pueden seleccionar uno de los dominios que el administrador crea para ellos. No podrán editar el campo dominio libremente. Usted tiene que volver a entrar después de cambiar este valor para hacer los cambios visibles.';
 $wb['new_domain_txt'] = 'HTML para crear un nuevo dominio';
-$wb['dashboard_atom_url_admin_txt'] = 'Panel URL del feed átomo (admin)';
-$wb['dashboard_atom_url_reseller_txt'] = 'Panel URL del feed átomo (revendedor)';
-$wb['dashboard_atom_url_client_txt'] = 'Panel URL del feed átomo (cliente)';
+$wb['dashboard_atom_url_admin_txt'] = 'URL del feed atom del panel (admin)';
+$wb['dashboard_atom_url_reseller_txt'] = 'URL del feed atom del panel (revendedor)';
+$wb['dashboard_atom_url_client_txt'] = 'URL del feed atom del panel (cliente)';
 $wb['webdavuser_prefix_txt'] = 'Prefijo de usuario WebDAV';
-$wb['webdavuser_prefix_error_regex'] = 'Char no se permite en el prefijo de usuario webdav.';
-$wb['webftp_url_txt'] = 'WebFTP URL';
-$wb['enable_custom_login_txt'] = 'Permitir que el nombre de inicio de sesión personalizado';
-$wb['mailmailinglist_link_txt'] = 'Enlace a la lista de correo en la lista de lista de correo';
+$wb['webdavuser_prefix_error_regex'] = 'Caracteres no permitidos en el prefijo del nombre de usuario webdav.';
+$wb['webftp_url_txt'] = 'URL de WebFTP';
+$wb['enable_custom_login_txt'] = 'Permitir personalizar el nombre de usuario';
+$wb['mailmailinglist_link_txt'] = 'Enlace a la lista de correo en la lista de listas de correo';
 $wb['mailmailinglist_url_txt'] = 'URL Lista de correo';
-$wb['admin_mail_txt'] = 'Los administradores de correo electrónico';
+$wb['admin_mail_txt'] = 'Correo electrónico de los administradores';
 $wb['monitor_key_txt'] = 'Monitorear palabra clave';
 $wb['admin_name_txt'] = 'Nombre de los administradores';
 $wb['system_config_desc_txt'] = '';
-$wb['smtp_missing_admin_mail_txt'] = 'Please enter the admin name and admin mail address if you want to use smtp mail sending.';
-$wb['tab_change_discard_txt'] = 'Discard changes on tab change';
-$wb['tab_change_warning_txt'] = 'Tab change warning';
-$wb['tab_change_warning_note_txt'] = 'Show a warning on tab change in edit forms if any data has been altered by the user.';
-$wb['vhost_subdomains_txt'] = 'Create subdomains as web site';
-$wb['vhost_subdomains_note_txt'] = 'You cannot disable this as long as vhost subdomains exist in the system!';
-$wb['vhost_aliasdomains_txt'] = 'Create aliasdomains as web site';
-$wb['vhost_aliasdomains_note_txt'] = 'You cannot disable this as long as vhost aliasdomains exist in the system!';
-$wb['maintenance_mode_txt'] = 'Maintenance Mode';
-$wb['smtp_enabled_txt'] = 'Use SMTP to send system mails';
-$wb['smtp_host_txt'] = 'SMTP host';
-$wb['smtp_port_txt'] = 'SMTP port';
-$wb['smtp_user_txt'] = 'SMTP user';
-$wb['smtp_pass_txt'] = 'SMTP password';
-$wb['smtp_crypt_txt'] = 'Use SSL/TLS encrypted connection for SMTP';
-$wb['phpmyadmin_url_error_regex'] = 'Invalid phpmyadmin URL';
-$wb['use_combobox_txt'] = 'Use jQuery UI Combobox';
-$wb['use_loadindicator_txt'] = 'Use Load Indicator';
-$wb['f5_to_reload_js_txt'] = 'If you change this, you might have to press F5 to make the browser reload JavaScript libraries or empty your browser cache.';
-$wb['client_username_web_check_disabled_txt'] = 'Disable client username check for the word \'web\'.';
-$wb['mailbox_show_autoresponder_tab_txt'] = 'Show autoresponder tab in mail account details';
-$wb['mailbox_show_mail_filter_tab_txt'] = 'Show mail filter tab in mail account details';
-$wb['mailbox_show_custom_rules_tab_txt'] = 'Show custom mailfilter tab in mail account details';
-$wb['webmail_url_error_regex'] = 'Invalid webmail URL';
-$wb['phpmyadmin_url_note_txt'] = 'Placeholder:';
-$wb['webmail_url_note_txt'] = 'Placeholder:';
-$wb['available_dashlets_note_txt'] = 'Available Dashlets:';
-$wb['admin_dashlets_left_txt'] = 'Left Admin Dashlets';
-$wb['admin_dashlets_right_txt'] = 'Right Admin Dashlets';
-$wb['reseller_dashlets_left_txt'] = 'Left Reseller Dashlets';
-$wb['reseller_dashlets_right_txt'] = 'Right Reseller Dashlets';
-$wb['client_dashlets_left_txt'] = 'Left Client Dashlets';
-$wb['client_dashlets_right_txt'] = 'Right Client Dashlets';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['session_timeout_txt'] = 'Session timeout (minutes)';
-$wb['session_allow_endless_txt'] = 'Enable \\"stay logged in\\"';
+$wb['smtp_missing_admin_mail_txt'] = 'Por favor introduce el nombre y correo electrónico de los administradores si quieres usar envío de correo por smtp.';
+$wb['tab_change_discard_txt'] = 'Descartar cambios al cambiar de pestaña';
+$wb['tab_change_warning_txt'] = 'Aviso al cambiar de pestaña';
+$wb['tab_change_warning_note_txt'] = 'Mostrar un aviso al cambiar de pestaña en los formularios de edición si el usuario ha cambiado algún dato.';
+$wb['vhost_subdomains_txt'] = 'Crear subdominios como sitio web';
+$wb['vhost_subdomains_note_txt'] = '¡No se puede desactivar mientras existan subdominios virtuales en el sistema!';
+$wb['maintenance_mode_txt'] = 'Modo mantenimiento';
+$wb['smtp_enabled_txt'] = 'Usar SMTP para enviar correos del sistema';
+$wb['smtp_host_txt'] = 'Servidor SMTP';
+$wb['smtp_port_txt'] = 'Puerto SMTP';
+$wb['smtp_user_txt'] = 'Usuario SMTP';
+$wb['smtp_pass_txt'] = 'Contraseña SMTP';
+$wb['smtp_crypt_txt'] = 'Usar SSL/TLS para cifrar la conexión SMTP';
+$wb['phpmyadmin_url_error_regex'] = 'URL de phpmyadmin no válida';
+$wb['use_combobox_txt'] = 'Usar Combobox de jQuery UI';
+$wb['use_loadindicator_txt'] = 'Usar indicador de carga';
+$wb['f5_to_reload_js_txt'] = 'Si cambias esto, podrías tener que pulsar F5 para que tu navegador recargue las librerías JavaScript o vacíar la caché del navegador.';
+$wb['client_username_web_check_disabled_txt'] = 'Desactivar comprobación de la palabra 'web' en el nombre de cliente.';
+$wb['mailbox_show_autoresponder_tab_txt'] = 'Mostrar pestaña autoresponder en los detalles de la cuenta de correo';
+$wb['mailbox_show_mail_filter_tab_txt'] = 'Mostrar pestaña filtro de correo en los detalles de la cuenta de correo';
+$wb['mailbox_show_custom_rules_tab_txt'] = 'Mostrar pestaña filtros personalizados en los detalles de la cuenta de correo';
+$wb['webmail_url_error_regex'] = 'URL de webmail no válida';
+$wb['phpmyadmin_url_note_txt'] = 'Marcadores:';
+$wb['webmail_url_note_txt'] = 'Marcadores:';
+$wb['available_dashlets_note_txt'] = 'Módulos disponibles:';
+$wb['admin_dashlets_left_txt'] = 'Módulos a la izquierda (administrador)';
+$wb['admin_dashlets_right_txt'] = 'Módulos a la derecha (administrador)';
+$wb['reseller_dashlets_left_txt'] = 'Módulos a la izquierda (revendedor)';
+$wb['reseller_dashlets_right_txt'] = 'Módulos a la derecha (revendedor)';
+$wb['client_dashlets_left_txt'] = 'Módulos a la izquierda (cliente)';
+$wb['client_dashlets_right_txt'] = 'Módulos a la derecha (cliente)';
+$wb['customer_no_template_txt'] = 'Plantilla de nº de cliente';
+$wb['customer_no_template_error_regex_txt'] = 'La plantilla de nº de cliente contiene caracteres no válidos';
+$wb['customer_no_start_txt'] = 'Valor inicial de nº de cliente';
+$wb['customer_no_counter_txt'] = 'Contador de nº de cliente';
+$wb['session_timeout_txt'] = 'Caducidad de sesión (minutos)';
+$wb['session_allow_endless_txt'] = 'Activar \"permanecer conectado\"';
 $wb['No'] = 'No';
-$wb['min_password_length_txt'] = 'Minimum password length';
-$wb['min_password_strength_txt'] = 'Minimum password strength';
+$wb['min_password_length_txt'] = 'Longitud de contraseña mínima';
+$wb['min_password_strength_txt'] = 'Fortaleza de contraseña mínima';
+$wb['Sites'] = 'Sitios';
+$wb['System Config'] = 'Configuración de sistema';
+$wb['default_mailserver_txt'] = 'Servidor de correo por defecto';
+$wb['default_webserver_txt'] = 'Servidor web por defecto';
+$wb['default_dnsserver_txt'] = 'Servidor DNS por defecto';
+$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundario por defecto';
+$wb['default_dbserver_txt'] = 'Servidor de bases de datos por defecto';
 ?>
diff --git a/interface/web/admin/lib/lang/es_tpl_default_admin.lng b/interface/web/admin/lib/lang/es_tpl_default_admin.lng
index eee3af5..a8763cc 100644
--- a/interface/web/admin/lib/lang/es_tpl_default_admin.lng
+++ b/interface/web/admin/lib/lang/es_tpl_default_admin.lng
@@ -1,18 +1,18 @@
 <?php
 $wb['tpl_default_admin_head_txt'] = 'Global Default-Theme Settings';
 $wb['tpl_default_admin_desc_txt'] = '';
-$wb['server_id_txt'] = 'Server';
-$wb['client_id_txt'] = 'Client';
-$wb['name_txt'] = 'PHP Name';
-$wb['Name'] = 'Name';
-$wb['FastCGI Settings'] = 'FastCGI Settings';
-$wb['PHP-FPM Settings'] = 'PHP-FPM Settings';
-$wb['Additional PHP Versions'] = 'Additional PHP Versions';
-$wb['Form to edit additional PHP versions'] = 'Form to edit additional PHP versions';
-$wb['server_php_name_error_empty'] = 'The Name field must not be empty.';
-$wb['php_fastcgi_binary_txt'] = 'Path to the PHP FastCGI binary';
-$wb['php_fastcgi_ini_dir_txt'] = 'Path to the php.ini directory';
-$wb['php_fpm_init_script_txt'] = 'Path to the PHP-FPM init script';
-$wb['php_fpm_ini_dir_txt'] = 'Path to the php.ini directory';
-$wb['php_fpm_pool_dir_txt'] = 'Path to the PHP-FPM pool directory';
+$wb['server_id_txt'] = 'Servidor';
+$wb['client_id_txt'] = 'Cliente';
+$wb['name_txt'] = 'Nombre';
+$wb['Name'] = 'Nombre';
+$wb['FastCGI Settings'] = 'Configuraciones FastCGI';
+$wb['PHP-FPM Settings'] = 'Configuraciones PHP-FPM';
+$wb['Additional PHP Versions'] = 'Versiones de PHP adicionales';
+$wb['Form to edit additional PHP versions'] = 'Formulario para editar versiones de PHP adicionales';
+$wb['server_php_name_error_empty'] = 'El campo nombre no debe estar vacío.';
+$wb['php_fastcgi_binary_txt'] = 'Ruta al binario FastCGI de PHP';
+$wb['php_fastcgi_ini_dir_txt'] = 'Ruta al directorio de php.ini';
+$wb['php_fpm_init_script_txt'] = 'Ruta al script de inicio de PHP-FPM';
+$wb['php_fpm_ini_dir_txt'] = 'Ruta al directorio de php.ini';
+$wb['php_fpm_pool_dir_txt'] = 'Ruta al directorio de pool de PHP-FPM';
 ?>
diff --git a/interface/web/admin/lib/lang/es_users.lng b/interface/web/admin/lib/lang/es_users.lng
index 481f7cd..89be5a7 100644
--- a/interface/web/admin/lib/lang/es_users.lng
+++ b/interface/web/admin/lib/lang/es_users.lng
@@ -13,10 +13,10 @@
 $wb['language_txt'] = 'Idioma';
 $wb['name_txt'] = 'Nombre';
 $wb['vorname_txt'] = 'Apellidos';
-$wb['unternehmen_txt'] = 'Compañía';
+$wb['unternehmen_txt'] = 'Empresa';
 $wb['strasse_txt'] = 'Calle';
 $wb['ort_txt'] = 'Localidad';
-$wb['plz_txt'] = 'CP';
+$wb['plz_txt'] = 'Código Postal';
 $wb['land_txt'] = 'País';
 $wb['email_txt'] = 'Correo';
 $wb['url_txt'] = 'URL';
@@ -25,10 +25,10 @@
 $wb['groups_txt'] = 'Grupos';
 $wb['default_group_txt'] = 'Grupo por defecto';
 $wb['startmodule_err'] = 'El modulo inicial no está incluido en los módulos';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['username_error_collision'] = 'The username may not be web or web plus a number.\\"';
-$wb['client_not_admin_err'] = 'A user that belongs to a client can not be set to type: admin';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
+$wb['username_error_collision'] = 'El nombre de usuario no puede ser web o web seguido de un número.';
+$wb['client_not_admin_err'] = 'Un usuario que pertenece a un cliente no puede ser administrador.';
 ?>
diff --git a/interface/web/admin/lib/lang/es_users_list.lng b/interface/web/admin/lib/lang/es_users_list.lng
index d8bb7bf..468b869 100644
--- a/interface/web/admin/lib/lang/es_users_list.lng
+++ b/interface/web/admin/lib/lang/es_users_list.lng
@@ -3,7 +3,7 @@
 $wb['username_txt'] = 'Usuario';
 $wb['add_new_record_txt'] = 'Añadir nuevo usuario';
 $wb['warning_txt'] = '<b>AVISO: </b> ¡No modifique ninguna configuración de usuario aquí. Utilice las opciones del cliente y distribuidor en el módulo de clientes en su lugar. Cualquier modificación de los usuarios o grupos aquí, puede causar pérdida de datos!';
-$wb['client_id_txt'] = 'User ID';
-$wb['active_txt'] = 'Active';
-$wb['groups_txt'] = 'Groups';
+$wb['client_id_txt'] = 'ID';
+$wb['active_txt'] = 'Activo';
+$wb['groups_txt'] = 'Grupos';
 ?>
diff --git a/interface/web/admin/lib/lang/fr_server_config.lng b/interface/web/admin/lib/lang/fr_server_config.lng
index a8d112d..671bc9b 100644
--- a/interface/web/admin/lib/lang/fr_server_config.lng
+++ b/interface/web/admin/lib/lang/fr_server_config.lng
@@ -1,52 +1,50 @@
 <?php
 $wb['jailkit_chroot_home_txt'] = 'Accueil du chroot Jailkit';
-$wb['jailkit_chroot_app_sections_txt'] = 'Sections des applications chrootées Jailkit';
-$wb['jailkit_chroot_app_programs_txt'] = 'Applications chrootées Jailkit';
+$wb['jailkit_chroot_app_sections_txt'] = 'Sections des applications chrooté Jailkit';
+$wb['jailkit_chroot_app_programs_txt'] = 'Applications chrooté Jailkit';
 $wb['website_path_txt'] = 'Chemin du site web';
 $wb['website_symlinks_txt'] = 'Liens symboliques du site web';
-$wb['website_symlinks_rel_txt'] = 'Make relative symlinks';
-$wb['vhost_conf_dir_txt'] = 'Répertoire de configuration des VHosts';
-$wb['vhost_conf_enabled_dir_txt'] = 'Répertoire de configuration des VHosts actifs';
-$wb['getmail_config_dir_txt'] = 'Répertoire de configuration de Getmail';
+$wb['website_symlinks_rel_txt'] = 'Cré des liens symboliques relatives';
+$wb['vhost_conf_dir_txt'] = 'Rértoire de configuration des VHosts';
+$wb['vhost_conf_enabled_dir_txt'] = 'Rértoire de configuration des VHosts actifs';
+$wb['getmail_config_dir_txt'] = 'Rértoire de configuration de Getmail';
 $wb['fastcgi_starter_path_txt'] = 'Chemin du lanceur de FastCGI';
 $wb['fastcgi_starter_script_txt'] = 'Script lanceur de FastCGI';
 $wb['fastcgi_alias_txt'] = 'Alias de FastCGI';
 $wb['fastcgi_phpini_path_txt'] = 'Chemin du php.ini de FastCGI';
 $wb['fastcgi_children_txt'] = 'Enfant de FastCGI';
-$wb['fastcgi_max_requests_txt'] = 'Nombre maximal de requêtes FastCGI';
-$wb['fastcgi_bin_txt'] = 'Exécutable FastCGI';
+$wb['fastcgi_max_requests_txt'] = 'Nombre maximal de requês FastCGI';
+$wb['fastcgi_bin_txt'] = 'Exétable FastCGI';
 $wb['module_txt'] = 'Module';
 $wb['maildir_path_txt'] = 'Chemin Maildir';
 $wb['homedir_path_txt'] = 'Chemin Homedir';
-$wb['dkim_path_txt'] = 'Chemin DKIM';
 $wb['mailuser_uid_txt'] = 'UID de l\'utilisateur mail';
 $wb['mailuser_gid_txt'] = 'GID de l\'utilisateur mail';
 $wb['mailuser_name_txt'] = 'Nom d\'utilisateur mail';
 $wb['mailuser_group_txt'] = 'Groupe de l\'utilisateur mail';
-$wb['mailbox_virtual_uidgid_maps_txt'] = 'Use Websites Linux uid for mailbox (only if both on the same server)';
-$wb['relayhost_txt'] = 'Hôte de relais';
+$wb['relayhost_txt'] = 'Hôde relais';
 $wb['relayhost_user_txt'] = 'Utilisateur du relais';
 $wb['relayhost_password_txt'] = 'Mot de passe du relais';
 $wb['mailbox_size_limit_txt'] = 'Taille maximale de la boite mail';
 $wb['message_size_limit_txt'] = 'Taille maximale des messages';
 $wb['ip_address_txt'] = 'Adresse IP';
-$wb['netmask_txt'] = 'Masque de réseau';
+$wb['netmask_txt'] = 'Masque de réau';
 $wb['gateway_txt'] = 'Passerelle';
-$wb['hostname_txt'] = 'Hôte';
+$wb['hostname_txt'] = 'Hô;
 $wb['nameservers_txt'] = 'Serveurs de nom';
-$wb['auto_network_configuration_txt'] = 'Configuration du réseau';
-$wb['website_basedir_txt'] = 'Répertoire de base web';
-$wb['ip_address_error_wrong'] = 'Format de ladresse IP invalide.';
-$wb['netmask_error_wrong'] = 'Format du masque de réseau invalide.';
+$wb['auto_network_configuration_txt'] = 'Configuration du réau';
+$wb['website_basedir_txt'] = 'Rértoire de base web';
+$wb['ip_address_error_wrong'] = 'Format de l\'adresse IP invalide.';
+$wb['netmask_error_wrong'] = 'Format du masque de réau invalide.';
 $wb['gateway_error_wrong'] = 'Format de la passerelle invalide.';
-$wb['hostname_error_empty'] = 'Lhôte est vide.';
+$wb['hostname_error_empty'] = 'L\'hôest vide.';
 $wb['nameservers_error_empty'] = 'Le serveur de nom est vide.';
-$wb['jailkit_chroot_cron_programs_txt'] = 'Applications Cron Jailkit chrootées';
-$wb['config_dir_txt'] = 'Répertoire de configuration';
+$wb['jailkit_chroot_cron_programs_txt'] = 'Applications Cron Jailkit chrooté';
+$wb['config_dir_txt'] = 'Rértoire de configuration';
 $wb['init_script_txt'] = 'Nom du script Cron de lancement';
-$wb['crontab_dir_txt'] = 'Chemin des différentes tables Cron';
+$wb['crontab_dir_txt'] = 'Chemin des difféntes tables Cron';
 $wb['wget_txt'] = 'Chemin du programme wget';
-$wb['security_level_txt'] = 'Niveau de sécurité';
+$wb['security_level_txt'] = 'Niveau de sérité
 $wb['web_user_txt'] = 'Utilisateur Apache';
 $wb['web_group_txt'] = 'Groupe Apache';
 $wb['loglevel_txt'] = 'Loglevel';
@@ -57,144 +55,147 @@
 $wb['bind_group_txt'] = 'Groupe BIND';
 $wb['bind_zonefiles_dir_txt'] = 'Dossier pour les zones BIND';
 $wb['named_conf_path_txt'] = 'Chemin named.conf BIND';
-$wb['bind_user_error_empty'] = 'Lutilisateur BIND est vide.';
+$wb['bind_user_error_empty'] = 'L\'utilisateur BIND est vide.';
 $wb['bind_group_error_empty'] = 'Le groupe BIND est vide.';
 $wb['bind_zonefiles_dir_error_empty'] = 'Le dossier de zones BIND est vide.';
 $wb['named_conf_path_error_empty'] = 'Le chemin du named.conf BIND est vide.';
 $wb['named_conf_local_path_error_empty'] = 'Le chemin du named.conf.local BIND est vide.';
 $wb['mail_filter_syntax_txt'] = 'Syntaxe filtre email';
-$wb['pop3_imap_daemon_txt'] = 'Démon POP3/IMAP';
+$wb['pop3_imap_daemon_txt'] = 'Dén POP3/IMAP';
 $wb['php_open_basedir_txt'] = 'open_basedir PHP';
-$wb['php_open_basedir_error_empty'] = 'lopen_basedir PHP est vide.';
-$wb['htaccess_allow_override_txt'] = 'AllowOverride .htaccess';
-$wb['htaccess_allow_override_error_empty'] = 'lAllowOverride .htaccess est vide.';
+$wb['php_open_basedir_error_empty'] = 'l\'open_basedir PHP est vide.';
+$wb['htaccess_allow_override_txt'] = 'AllowOverride .htaccess (permet de cré de rées dans .htaccess qui passent outre php config du serveur)';
+$wb['htaccess_allow_override_error_empty'] = 'l\'AllowOverride .htaccess est vide.';
 $wb['awstats_conf_dir_txt'] = 'Dossier de configuration AWstats';
-$wb['awstats_data_dir_txt'] = 'Dossier de données AWstats';
+$wb['awstats_data_dir_txt'] = 'Dossier de donné AWstats';
 $wb['awstats_pl_txt'] = 'Script awstats.pl';
 $wb['awstats_buildstaticpages_pl_txt'] = 'Script awstats_buildstaticpages.pl';
 $wb['backup_dir_txt'] = 'Dossier de sauvegarde';
 $wb['named_conf_local_path_txt'] = 'Chemin named.conf.local BIND';
 $wb['php_ini_path_cgi_txt'] = 'Chemin php.ini CGI';
 $wb['php_ini_path_apache_txt'] = 'Chemin php.ini Apache';
-$wb['check_apache_config_txt'] = 'Tester la configuration Apache au redémarrage';
+$wb['check_apache_config_txt'] = 'Tester la configuration Apache au redérrage';
 $wb['ufw_enable_txt'] = 'Enable';
-$wb['ufw_manage_builtins_txt'] = 'Manage Builtin Rules';
-$wb['ufw_ipv6_txt'] = 'Enable IPv6';
-$wb['ufw_default_input_policy_txt'] = 'Default Input Policy';
-$wb['ufw_default_output_policy_txt'] = 'Default Output Policy';
-$wb['ufw_default_forward_policy_txt'] = 'Default Forward Policy';
-$wb['ufw_default_application_policy_txt'] = 'Default Application Policy';
-$wb['ufw_log_level_txt'] = 'Log Level';
-$wb['network_config_warning_txt'] = 'The network configuration option is only available for Debian and Ubuntu Servers. Do not enable this option if your network interface is not eth0.';
-$wb['CA_path_txt'] = 'CA Path';
-$wb['CA_pass_txt'] = 'CA passphrase';
+$wb['ufw_manage_builtins_txt'] = 'Gér les Rées Intéé;
+$wb['ufw_ipv6_txt'] = 'Activer l\'IPv6';
+$wb['ufw_default_input_policy_txt'] = 'Politique Entrant (Input) par déult';
+$wb['ufw_default_output_policy_txt'] = 'Politique Sortant (Output) par déult';
+$wb['ufw_default_forward_policy_txt'] = 'Politique de Forward par déult';
+$wb['ufw_default_application_policy_txt'] = 'Politique Application par déult';
+$wb['ufw_log_level_txt'] = 'Niveau de Log';
+$wb['network_config_warning_txt'] = 'L\'option de configuration du réau n'est disponible QUE pour les serveurs Debian et Ubuntu. NE PAS activer cette option si votre carte réau n'est pas en eth0.';
+$wb['CA_path_txt'] = 'Chemin CA';
+$wb['CA_pass_txt'] = 'Mot de passe CA';
 $wb['fastcgi_config_syntax_txt'] = 'FastCGI config syntax';
-$wb['server_type_txt'] = 'Server Type';
-$wb['nginx_vhost_conf_dir_txt'] = 'Nginx Vhost config dir';
-$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Nginx Vhost config enabled dir';
-$wb['nginx_user_txt'] = 'Nginx user';
-$wb['nginx_group_txt'] = 'Nginx group';
+$wb['server_type_txt'] = 'Type de Serveur';
+$wb['nginx_vhost_conf_dir_txt'] = 'Repertoire Nginx Vhost config';
+$wb['nginx_vhost_conf_enabled_dir_txt'] = 'Repertoire Nginx Vhost config activé
+$wb['nginx_user_txt'] = 'Utilisateur Nginx';
+$wb['nginx_group_txt'] = 'Gorupe Nginx';
 $wb['nginx_cgi_socket_txt'] = 'Nginx CGI Socket';
-$wb['backup_dir_error_empty'] = 'Backup directory is empty.';
-$wb['maildir_path_error_empty'] = 'Maildir Path is empty.';
-$wb['homedir_path_error_empty'] = 'Homedir Path is empty.';
-$wb['mailuser_uid_error_empty'] = 'Mailuser UID is empty.';
-$wb['mailuser_gid_error_empty'] = 'Mailuser GID is empty.';
-$wb['mailuser_name_error_empty'] = 'Mailuser Name is empty.';
-$wb['mailuser_group_error_empty'] = 'Mailuser Group is empty.';
-$wb['getmail_config_dir_error_empty'] = 'Getmail config dir is empty.';
-$wb['website_basedir_error_empty'] = 'Website basedir is empty.';
-$wb['website_path_error_empty'] = 'Website path is empty.';
-$wb['website_symlinks_error_empty'] = 'Website symlinks is empty.';
-$wb['vhost_conf_dir_error_empty'] = 'Vhost config dir is empty.';
-$wb['vhost_conf_enabled_dir_error_empty'] = 'Vhost config enabled dir is empty.';
-$wb['nginx_vhost_conf_dir_error_empty'] = 'Nginx Vhost config dir is empty.';
-$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Nginx Vhost config enabled dir is empty.';
-$wb['apache_user_error_empty'] = 'Apache user is empty.';
-$wb['apache_group_error_empty'] = 'Apache group is empty.';
-$wb['nginx_user_error_empty'] = 'Nginx user is empty.';
-$wb['nginx_group_error_empty'] = 'Nginx group is empty.';
-$wb['php_ini_path_apache_error_empty'] = 'Apache php.ini path is empty.';
-$wb['php_ini_path_cgi_error_empty'] = 'CGI php.ini path is empty.';
-$wb['nginx_cgi_socket_empty'] = 'Nginx CGI Socket is empty.';
-$wb['apps_vhost_port_error_empty'] = 'Apps-vhost port is empty.';
-$wb['apps_vhost_ip_error_empty'] = 'Apps-vhost IP is empty.';
-$wb['fastcgi_starter_path_error_empty'] = 'FastCGI starter path is empty.';
-$wb['fastcgi_starter_script_error_empty'] = 'FastCGI starter script is empty.';
-$wb['fastcgi_alias_error_empty'] = 'FastCGI Alias is empty.';
-$wb['fastcgi_phpini_path_error_empty'] = 'FastCGI php.ini Path is empty.';
-$wb['fastcgi_children_error_empty'] = 'FastCGI Children is empty.';
-$wb['fastcgi_max_requests_error_empty'] = 'FastCGI max. Requests is empty.';
-$wb['fastcgi_bin_error_empty'] = 'FastCGI Bin is empty.';
-$wb['jailkit_chroot_home_error_empty'] = 'Jailkit chroot home is empty.';
-$wb['jailkit_chroot_app_sections_error_empty'] = 'Jailkit chroot app sections is empty.';
-$wb['jailkit_chroot_app_programs_error_empty'] = 'Jailkit chrooted applications is empty.';
-$wb['jailkit_chroot_cron_programs_error_empty'] = 'Jailkit cron chrooted applications is empty.';
-$wb['vlogger_config_dir_error_empty'] = 'Config directory is empty.';
-$wb['cron_init_script_error_empty'] = 'Cron init script name is empty.';
-$wb['crontab_dir_error_empty'] = 'Path for individual crontabs is empty.';
-$wb['cron_wget_error_empty'] = 'Path to wget program is empty.';
+$wb['backup_dir_error_empty'] = 'Repertoire Backup est vide.';
+$wb['maildir_path_error_empty'] = 'Chemin Maildir est vide.';
+$wb['homedir_path_error_empty'] = 'Chemin Homedir est vide.';
+$wb['mailuser_uid_error_empty'] = 'Mailuser UID vide.';
+$wb['mailuser_gid_error_empty'] = 'Mailuser GID vide.';
+$wb['mailuser_name_error_empty'] = 'Nom Mailuser vide.';
+$wb['mailuser_group_error_empty'] = 'Groupe Mailuser vide.';
+$wb['getmail_config_dir_error_empty'] = 'Repertoire Getmail config est vide.';
+$wb['website_basedir_error_empty'] = 'Chemin racine du site web est vide.';
+$wb['website_path_error_empty'] = 'Chemin du site web est vide.';
+$wb['website_symlinks_error_empty'] = 'Liens symboliques du site web est vide.';
+$wb['vhost_conf_dir_error_empty'] = 'Repertoire Vhost config est vide.';
+$wb['vhost_conf_enabled_dir_error_empty'] = 'Repertoire avtive Vhost config est vide.';
+$wb['nginx_vhost_conf_dir_error_empty'] = 'Repertoire Nginx Vhost config est vide.';
+$wb['nginx_vhost_conf_enabled_dir_error_empty'] = 'Repertoire  config enabled est vide.';
+$wb['apache_user_error_empty'] = 'Utilisateur Apache est vide.';
+$wb['apache_group_error_empty'] = 'Groupe Apache est vide.';
+$wb['nginx_user_error_empty'] = 'Utilisateur Nginx est vide.';
+$wb['nginx_group_error_empty'] = 'Groupe Nginx est vide.';
+$wb['php_ini_path_apache_error_empty'] = 'Chemin Apache php.ini est vide.';
+$wb['php_ini_path_cgi_error_empty'] = 'Chemin CGI php.ini est vide.';
+$wb['nginx_cgi_socket_empty'] = 'Nginx CGI Socket est vide.';
+$wb['apps_vhost_port_error_empty'] = 'Port Apps-vhost est vide.';
+$wb['apps_vhost_ip_error_empty'] = 'IP Apps-vhost est vide.';
+$wb['fastcgi_starter_path_error_empty'] = 'Chemin FastCGI starter est vide.';
+$wb['fastcgi_starter_script_error_empty'] = 'Script FastCGI starter est vide.';
+$wb['fastcgi_alias_error_empty'] = 'Alias FastCGI est vide.';
+$wb['fastcgi_phpini_path_error_empty'] = 'Chemin FastCGI php.ini est vide.';
+$wb['fastcgi_children_error_empty'] = 'FastCGI Children est vide.';
+$wb['fastcgi_max_requests_error_empty'] = 'Max. Reqû FastCGI est vide.';
+$wb['fastcgi_bin_error_empty'] = 'FastCGI Bin est vide.';
+$wb['jailkit_chroot_home_error_empty'] = 'Jailkit chroot home est vide.';
+$wb['jailkit_chroot_app_sections_error_empty'] = 'Jailkit chroot app sections est vide.';
+$wb['jailkit_chroot_app_programs_error_empty'] = 'Jailkit chrooted applications est vide.';
+$wb['jailkit_chroot_cron_programs_error_empty'] = 'Jailkit cron chrooted applications est vide.';
+$wb['vlogger_config_dir_error_empty'] = 'Repertoire Config est vide.';
+$wb['cron_init_script_error_empty'] = 'Nom de script Cron init est vide.';
+$wb['crontab_dir_error_empty'] = 'Chemin pour crontabs individuels est vide.';
+$wb['cron_wget_error_empty'] = 'Chemin au programme wget program est vide.';
 $wb['php_fpm_init_script_txt'] = 'PHP-FPM init script';
-$wb['php_fpm_init_script_error_empty'] = 'PHP-FPM init script is empty.';
-$wb['php_fpm_ini_path_txt'] = 'PHP-FPM php.ini path';
-$wb['php_fpm_ini_path_error_empty'] = 'PHP-FPM php.ini path is empty.';
-$wb['php_fpm_pool_dir_txt'] = 'PHP-FPM pool directory';
-$wb['php_fpm_pool_dir_error_empty'] = 'PHP-FPM pool directory is empty.';
+$wb['php_fpm_init_script_error_empty'] = 'PHP-FPM init script est vide.';
+$wb['php_fpm_ini_path_txt'] = 'Chemin PHP-FPM php.ini ';
+$wb['php_fpm_ini_path_error_empty'] = 'Chemin PHP-FPM php.ini est vide.';
+$wb['php_fpm_pool_dir_txt'] = 'Repertoire PHP-FPM pool';
+$wb['php_fpm_pool_dir_error_empty'] = 'Repertoire PHP-FPM pool est vide.';
 $wb['php_fpm_start_port_txt'] = 'PHP-FPM start port';
-$wb['php_fpm_start_port_error_empty'] = 'PHP-FPM start port is empty.';
-$wb['php_fpm_socket_dir_txt'] = 'PHP-FPM socket directory';
-$wb['php_fpm_socket_dir_error_empty'] = 'PHP-FPM socket directory is empty.';
-$wb['try_rescue_txt'] = 'Enable service monitoring and restart on failure';
-$wb['do_not_try_rescue_mysql_txt'] = 'Disable MySQL monitoring';
-$wb['do_not_try_rescue_mail_txt'] = 'Disable Email monitoring';
-$wb['rescue_description_txt'] = '<b>Information:</b> If you want to shut down mysql you have to select the Disable MySQL monitor checkbox and then wait 2-3 minutes.<br>if you do not wait 2-3 minutes, rescue will try to restart mysql!';
-$wb['enable_sni_txt'] = 'Enable SNI';
-$wb['do_not_try_rescue_httpd_txt'] = 'Disable HTTPD monitoring';
-$wb['set_folder_permissions_on_update_txt'] = 'Set folder permissions on update';
-$wb['add_web_users_to_sshusers_group_txt'] = 'Add web users to -sshusers- group';
-$wb['connect_userid_to_webid_txt'] = 'Connect Linux userid to webid';
-$wb['connect_userid_to_webid_start_txt'] = 'Start ID for userid/webid connect';
-$wb['website_autoalias_txt'] = 'Website auto alias';
+$wb['php_fpm_start_port_error_empty'] = 'PHP-FPM start port est vide.';
+$wb['php_fpm_socket_dir_txt'] = 'Repertoire PHP-FPM socket';
+$wb['php_fpm_socket_dir_error_empty'] = 'Repertoire PHP-FPM socket est vide.';
+$wb['try_rescue_txt'] = 'Activer le service de monitoring et redérrer sur éec';
+$wb['do_not_try_rescue_mysql_txt'] = 'Déctiver le monitoring MySQL';
+$wb['do_not_try_rescue_mail_txt'] = 'Déctiver le monitoring Email';
+$wb['rescue_description_txt'] = '<b>Information:</b> Si vous voulez arreter mysql vous devez selectionner la case Déctiver le monitoring MySQL puis attendre 2 à minutes.<br>Si vous n'attendez pas 2 à minutes, rescue va tenter de redérrer mysql!';
+$wb['enable_sni_txt'] = 'Activer SNI';
+$wb['do_not_try_rescue_httpd_txt'] = 'Déctiver le monitoring HTTPD ';
+$wb['set_folder_permissions_on_update_txt'] = 'Regler les permissions des dossiers lors de mise a jour';
+$wb['add_web_users_to_sshusers_group_txt'] = 'Ajouter des utilisateur web au groupe -sshusers- ';
+$wb['connect_userid_to_webid_txt'] = 'Lier Linux userid au webid';
+$wb['connect_userid_to_webid_start_txt'] = 'ID de dért pour la liason userid/webid';
+$wb['website_autoalias_txt'] = 'Auto alias Site web';
 $wb['website_autoalias_note_txt'] = 'Placeholders:';
-$wb['backup_mode_txt'] = 'Backup mode';
-$wb['backup_mode_userzip'] = 'Backup web files owned by web user as zip';
-$wb['backup_mode_rootgz'] = 'Backup all files in web directory as root user';
-$wb['realtime_blackhole_list_txt'] = 'Real-time Blackhole List';
-$wb['realtime_blackhole_list_note_txt'] = '(Separate RBL\'s with commas)';
-$wb['ssl_settings_txt'] = 'SSL Settings';
+$wb['backup_mode_txt'] = 'Mode Sauvegarde';
+$wb['backup_mode_userzip'] = 'Sauvegarder les fichiers web dont l'utilisateur est propriéire en tant que zip';
+$wb['backup_mode_rootgz'] = 'Sauvegarder tous les fichiers dans le repertoire web en tant qu\'utilisateur root';
+$wb['realtime_blackhole_list_txt'] = 'Blackhole (trou noir) List en temps ré';
+$wb['realtime_blackhole_list_note_txt'] = '(Separer les RBL avec des virgules)';
+$wb['ssl_settings_txt'] = 'Réages SSL';
 $wb['permissions_txt'] = 'Permissions';
-$wb['php_settings_txt'] = 'PHP Settings';
-$wb['apps_vhost_settings_txt'] = 'Apps Vhost Settings';
-$wb['awstats_settings_txt'] = 'AWStats Settings';
-$wb['firewall_txt'] = 'Firewall';
-$wb['mailbox_quota_stats_txt'] = 'Mailbox quota statistics';
-$wb['enable_ip_wildcard_txt'] = 'Enable IP wildcard (*)';
-$wb['web_folder_protection_txt'] = 'Make web folders immutable (extended attributes)';
-$wb['overtraffic_notify_admin_txt'] = 'Send overtraffic notification to admin';
-$wb['overtraffic_notify_client_txt'] = 'Send overtraffic notification to client';
-$wb['rbl_error_regex'] = 'Please specify valid RBL hostnames.';
-$wb['overquota_notify_admin_txt'] = 'Send quota warnings to admin';
-$wb['overquota_notify_client_txt'] = 'Send quota warnings to client';
-$wb['overquota_notify_onok_txt'] = 'Send quota ok message to client';
-$wb['overquota_notify_freq_txt'] = 'Send quota warning each X days';
-$wb['overquota_notify_freq_note_txt'] = '0 = send message just once, no repeated messages';
-$wb['admin_notify_events_txt'] = 'Send email to admin starting with the following level';
-$wb['no_notifications_txt'] = 'No Notifications';
-$wb['monit_url_txt'] = 'Monit URL';
-$wb['monit_user_txt'] = 'Monit User';
-$wb['monit_password_txt'] = 'Monit Password';
-$wb['monit_url_error_regex'] = 'Invalid Monit URL';
+$wb['php_settings_txt'] = 'Réages PHP';
+$wb['apps_vhost_settings_txt'] = 'Réages Apps Vhost';
+$wb['awstats_settings_txt'] = 'Réages AWStats';
+$wb['firewall_txt'] = 'PAre-Feu';
+$wb['mailbox_quota_stats_txt'] = 'Statistiques du Mailbox quota';
+$wb['enable_ip_wildcard_txt'] = 'Autoriser un joker (wildcard) IP (*)';
+$wb['web_folder_protection_txt'] = 'Rendre les dossiers web immuables (attributs éndus)';
+$wb['overtraffic_notify_admin_txt'] = 'Envoyer notification d\'overtraffic à\'admin';
+$wb['overtraffic_notify_client_txt'] = 'Envoyer notification d\'overtraffic au client';
+$wb['rbl_error_regex'] = 'Merci de renseigner des noms d'hô RBL valides.';
+$wb['overquota_notify_admin_txt'] = 'Envoyer alertes quota à\'admin';
+$wb['overquota_notify_client_txt'] = 'Envoyer alertes quota au client';
+$wb['overquota_notify_onok_txt'] = 'Envoyer message quota ok au client';
+$wb['overquota_notify_freq_txt'] = 'Envoyer des alertes de quota tous les X jours';
+$wb['overquota_notify_freq_note_txt'] = '0 = envoyer le message uniquement une fois, sans repetition';
+$wb['admin_notify_events_txt'] = 'Envoyer email à\'admin a partir du niveau suivant';
+$wb['no_notifications_txt'] = 'Pas de Notifications';
+$wb['monit_url_txt'] = 'URL Monit';
+$wb['monit_user_txt'] = 'Utilisateur Monit';
+$wb['monit_password_txt'] = 'Mot de passe Monit';
+$wb['monit_url_error_regex'] = 'URL Monit non valide';
 $wb['monit_url_note_txt'] = 'Placeholder:';
-$wb['munin_url_txt'] = 'Munin URL';
-$wb['munin_user_txt'] = 'Munin User';
-$wb['munin_password_txt'] = 'Munin Password';
-$wb['munin_url_error_regex'] = 'Invalid Munin URL';
+$wb['munin_url_txt'] = 'URL Munin';
+$wb['munin_user_txt'] = 'Utilisateur Munin';
+$wb['munin_password_txt'] = 'Mot de passe Munin';
+$wb['munin_url_error_regex'] = 'URL Munin non valide ';
 $wb['munin_url_note_txt'] = 'Placeholder:';
-$wb['backup_delete_txt'] = 'Delete backups on domain/website delete';
-$wb["v6_prefix_txt"] = 'IPv6 Prefix';
-$wb["vhost_rewrite_v6_txt"] = 'Rewrite IPv6 on Mirror';
-$wb["v6_prefix_length"] = 'Prefix too long according to defined IPv6 ';
-$wb['backup_dir_is_mount_txt'] = 'Backup directory is a mount?';
-$wb['backup_dir_mount_cmd_txt'] = 'Mount command, if backup directory not mounted';
-$wb['monitor_system_updates_txt'] = 'Check for Linux updates';
+$wb['backup_dir_is_mount_txt'] = 'Repertoir de Backup/sauvegarde est un mount?';
+$wb['backup_dir_mount_cmd_txt'] = 'Commande Mount, si le repertoire de sauvegarde/backup n'est pas monté
+$wb['monitor_system_updates_txt'] = 'Verifier pour des mises àour Linux';
+$wb['dkim_path_txt'] = 'Chemin DKIM';
+$wb["v6_prefix_txt"] = 'Prefix IPv6';
+$wb["vhost_rewrite_v6_txt"] = 'Récrire IPv6 sur miroir';
+$wb["v6_prefix_length"] = 'D\'aprèl'IPv6 déni, le préx est trop long ';
+$wb["overquota_db_notify_admin_txt"] = 'Envoyer avertissement DB quota à\'admin';
+$wb["overquota_db_notify_client_txt"] = 'Envoyer avertissement DB quota au client';
 ?>
+
diff --git a/interface/web/admin/list/server.list.php b/interface/web/admin/list/server.list.php
index 85b6e65..0309b7a 100644
--- a/interface/web/admin/list/server.list.php
+++ b/interface/web/admin/list/server.list.php
@@ -5,7 +5,7 @@
 	- DOUBLE
 	- CURRENCY
 	- VARCHAR
-	- TEXT
+	- SELECT
 	- DATE
 */
 
@@ -58,7 +58,7 @@
 
 $liste['item'][] = array( 'field'  => 'mail_server',
 	'datatype' => 'VARCHAR',
-	'formtype' => 'TEXT',
+	'formtype' => 'SELECT',
 	'op'  => 'like',
 	'prefix' => '%',
 	'suffix' => '%',
@@ -67,7 +67,7 @@
 
 $liste['item'][] = array( 'field'  => 'web_server',
 	'datatype' => 'VARCHAR',
-	'formtype' => 'TEXT',
+	'formtype' => 'SELECT',
 	'op'  => 'like',
 	'prefix' => '%',
 	'suffix' => '%',
@@ -76,7 +76,7 @@
 
 $liste['item'][] = array( 'field'  => 'dns_server',
 	'datatype' => 'VARCHAR',
-	'formtype' => 'TEXT',
+	'formtype' => 'SELECT',
 	'op'  => 'like',
 	'prefix' => '%',
 	'suffix' => '%',
@@ -85,7 +85,7 @@
 
 $liste['item'][] = array( 'field'  => 'file_server',
 	'datatype' => 'VARCHAR',
-	'formtype' => 'TEXT',
+	'formtype' => 'SELECT',
 	'op'  => 'like',
 	'prefix' => '%',
 	'suffix' => '%',
@@ -94,7 +94,7 @@
 
 $liste['item'][] = array( 'field'  => 'db_server',
 	'datatype' => 'VARCHAR',
-	'formtype' => 'TEXT',
+	'formtype' => 'SELECT',
 	'op'  => 'like',
 	'prefix' => '%',
 	'suffix' => '%',
@@ -103,7 +103,7 @@
 
 $liste['item'][] = array( 'field'  => 'vserver_server',
 	'datatype' => 'VARCHAR',
-	'formtype' => 'TEXT',
+	'formtype' => 'SELECT',
 	'op'  => 'like',
 	'prefix' => '%',
 	'suffix' => '%',
diff --git a/interface/web/admin/system_config_edit.php b/interface/web/admin/system_config_edit.php
index 3a2ac8e..a793a83 100644
--- a/interface/web/admin/system_config_edit.php
+++ b/interface/web/admin/system_config_edit.php
@@ -64,6 +64,9 @@
 			$server_id = $this->id;
 
 			$this->dataRecord = $app->getconf->get_global_config($section);
+			if (is_null($this->dataRecord)) {
+				$this->dataRecord = array();
+			}
 			if ($section == 'domains'){
 				if (isset($this->dataRecord['use_domain_module'])){
 					$_SESSION['use_domain_module_old_value'] = $this->dataRecord['use_domain_module'];
diff --git a/interface/web/admin/templates/server_config_web_edit.htm b/interface/web/admin/templates/server_config_web_edit.htm
index d813952..87bb4af 100644
--- a/interface/web/admin/templates/server_config_web_edit.htm
+++ b/interface/web/admin/templates/server_config_web_edit.htm
@@ -233,6 +233,14 @@
                     <label for="php_ini_check_minutes">{tmpl_var name='php_ini_check_minutes_txt'}</label>
                     <input name="php_ini_check_minutes" id="php_ini_check_minutes" value="{tmpl_var name='php_ini_check_minutes'}" size="40" type="text" class="textInput" /> {tmpl_var name='php_ini_check_minutes_info_txt'}
                 </div>
+                <div class="ctrlHolder">
+                    <label for="php_handler">{tmpl_var name='php_handler_txt'}</label>
+                    <div class="multiField">
+                        <select name="php_handler" id="php_handler" class="selectInput">
+                            {tmpl_var name='php_handler'}
+                        </select>
+                    </div>
+                </div>
             </div>
             <div class="subsectiontoggle"><span></span>{tmpl_var name='apps_vhost_settings_txt'}<em></em></div>
             <div style="display:none;">
diff --git a/interface/web/admin/templates/system_config_mail_edit.htm b/interface/web/admin/templates/system_config_mail_edit.htm
index 98966fd..b231495 100644
--- a/interface/web/admin/templates/system_config_mail_edit.htm
+++ b/interface/web/admin/templates/system_config_mail_edit.htm
@@ -85,6 +85,12 @@
                     {tmpl_var name='smtp_crypt'}
                 </select>
             </div>
+            <div class="ctrlHolder">
+                <label for="default_mailserver">{tmpl_var name='default_mailserver_txt'}</label>
+                <select name="default_mailserver" id="default_mailserver" class="selectInput">
+                    {tmpl_var name='default_mailserver'}
+                </select>
+            </div>
         </fieldset>
             
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
diff --git a/interface/web/admin/templates/system_config_sites_edit.htm b/interface/web/admin/templates/system_config_sites_edit.htm
index f98493e..7811b17 100644
--- a/interface/web/admin/templates/system_config_sites_edit.htm
+++ b/interface/web/admin/templates/system_config_sites_edit.htm
@@ -63,6 +63,18 @@
                     {tmpl_var name='reseller_can_use_options'}
                 </div>
             </div>
+            <div class="ctrlHolder">
+                <label for="default_webserver">{tmpl_var name='default_webserver_txt'}</label>
+                <select name="default_webserver" id="default_webserver" class="selectInput">
+                    {tmpl_var name='default_webserver'}
+                </select>
+            </div>
+            <div class="ctrlHolder">
+                <label for="default_dbserver">{tmpl_var name='default_dbserver_txt'}</label>
+                <select name="default_dbserver" id="default_dbserver" class="selectInput">
+                    {tmpl_var name='default_dbserver'}
+                </select>
+            </div>
         </fieldset>
             
         <input type="hidden" name="id" value="{tmpl_var name='id'}">
diff --git a/interface/web/client/client_edit.php b/interface/web/client/client_edit.php
index 54b8d1d..ecfa30f 100644
--- a/interface/web/client/client_edit.php
+++ b/interface/web/client/client_edit.php
@@ -291,14 +291,29 @@
 		}
 
 		//* Set the default servers
-		$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE mail_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
-		$default_mailserver = $app->functions->intval($tmp['server_id']);
-		$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE web_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
-		$default_webserver = $app->functions->intval($tmp['server_id']);
-		$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE dns_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
-		$default_dnsserver = $app->functions->intval($tmp['server_id']);
-		$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE db_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
-		$default_dbserver = $app->functions->intval($tmp['server_id']);
+		$tmp = $app->getconf->get_global_config('mail');
+		$default_mailserver = $app->functions->intval($tmp['default_mailserver']);
+		if (!$default_mailserver) {
+			$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE mail_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
+			$default_mailserver = $app->functions->intval($tmp['server_id']);
+		}
+		$tmp = $app->getconf->get_global_config('sites');
+		$default_webserver = $app->functions->intval($tmp['default_webserver']);
+		$default_dbserver = $app->functions->intval($tmp['default_dbserver']);
+		if (!$default_webserver) {
+			$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE web_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
+			$default_webserver = $app->functions->intval($tmp['server_id']);
+		}
+		if (!$default_dbserver) {
+			$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE db_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
+			$default_dbserver = $app->functions->intval($tmp['server_id']);
+		}
+		$tmp = $app->getconf->get_global_config('dns');
+		$default_dnsserver = $app->functions->intval($tmp['default_dnsserver']);
+		if (!$default_dnsserver) {
+			$tmp = $app->db->queryOneRecord('SELECT server_id FROM server WHERE dns_server = 1 AND mirror_server_id = 0 LIMIT 0,1');
+			$default_dnsserver = $app->functions->intval($tmp['server_id']);
+		}
 
 		$sql = "UPDATE client SET mail_servers = $default_mailserver, web_servers = $default_webserver, dns_servers = $default_dnsserver, default_slave_dnsserver = $default_dnsserver, db_servers = $default_dbserver WHERE client_id = ".$this->id;
 		$app->db->query($sql);
diff --git a/interface/web/client/client_template_edit.php b/interface/web/client/client_template_edit.php
index bc5c6d2..256ff49 100644
--- a/interface/web/client/client_template_edit.php
+++ b/interface/web/client/client_template_edit.php
@@ -88,10 +88,17 @@
 		global $app;
 
 		$app->uses('client_templates');
+		if (isset($this->dataRecord["template_type"])) {
+			$template_type = $this->dataRecord["template_type"];
+		} else {
+			$tmp = $app->tform->getDataRecord($this->id);
+			$template_type = $tmp['template_type'];
+		}
+
 		/*
 		 * the template has changed. apply the new data to all clients
 		 */
-		if ($this->dataRecord["template_type"] == 'm'){
+		if ($template_type == 'm'){
 			$sql = "SELECT client_id FROM client WHERE template_master = " . $this->id;
 		} else {
 			$sql = "SELECT client_id FROM client WHERE template_additional LIKE '%/" . $this->id . "/%' OR template_additional LIKE '" . $this->id . "/%' OR template_additional LIKE '%/" . $this->id . "' UNION SELECT client_id FROM client_template_assigned WHERE client_template_id = " . $this->id;
diff --git a/interface/web/client/domain_del.php b/interface/web/client/domain_del.php
index 2ec8e86..6bc07e6 100644
--- a/interface/web/client/domain_del.php
+++ b/interface/web/client/domain_del.php
@@ -62,13 +62,25 @@
 		 */
 		$domain = $this->dataRecord['domain'];
 
+		$sql = "SELECT id FROM dns_soa WHERE origin = '" . $app->db->quote($domain.".") . "'";
+		$res = $app->db->queryOneRecord($sql);
+		if (is_array($res)){
+			$app->error($wb['error_domain_in dnsuse']);
+		}
+
+		$sql = "SELECT id FROM dns_slave WHERE origin = '" . $app->db->quote($domain.".") . "'";
+		$res = $app->db->queryOneRecord($sql);
+		if (is_array($res)){
+			$app->error($wb['error_domain_in dnsslaveuse']);
+		}
+
 		$sql = "SELECT domain_id FROM mail_domain WHERE domain = '" . $app->db->quote($domain) . "'";
 		$res = $app->db->queryOneRecord($sql);
 		if (is_array($res)){
 			$app->error($wb['error_domain_in mailuse']);
 		}
 
-		$sql = "SELECT domain_id FROM web_domain WHERE domain = '" . $app->db->quote($domain) . "'";
+		$sql = "SELECT domain_id FROM web_domain WHERE (domain = '" . $app->db->quote($domain) . "' AND type IN ('alias', 'vhost', 'vhostalias')) OR (domain LIKE '%." . $app->db->quote($domain) . "' AND type IN ('subdomain', 'vhostsubdomain'))";
 		$res = $app->db->queryOneRecord($sql);
 		if (is_array($res)){
 			$app->error($wb['error_domain_in webuse']);
diff --git a/interface/web/client/domain_edit.php b/interface/web/client/domain_edit.php
index cca5c2d..cda557c 100644
--- a/interface/web/client/domain_edit.php
+++ b/interface/web/client/domain_edit.php
@@ -89,7 +89,7 @@
 			if(is_array($clients)) {
 				foreach( $clients as $client) {
 					$selected = ($client["groupid"] == $tmp_data_record["sys_groupid"])?'SELECTED':'';
-					$client_select .= "<option value='$client[groupid]' $selected>$client[name]</option>\r\n";
+					$client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n";
 				}
 			}
 			$app->tpl->setVar("client_group_id", $client_select);
@@ -147,9 +147,10 @@
 			}
 			else {
 				/*
-				 * We edit a existing one, but there is nothing to edit
+				 * We edit a existing one, but domain name can't be changed
 				*/
-				$this->dataRecord = $app->tform->getDataRecord($this->id);
+				$oldData = $app->tform->getDataRecord($this->id);
+				$this->dataRecord["domain"] = $oldData["domain"];
 			}
 		} elseif ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
 			if ($this->id == 0) {
@@ -165,9 +166,10 @@
 			}
 			else {
 				/*
-				 * We edit a existing one, but there is nothing to edit
+				 * We edit a existing one, but domain name can't be changed
 				*/
-				$this->dataRecord = $app->tform->getDataRecord($this->id);
+				$oldData = $app->tform->getDataRecord($this->id);
+				$this->dataRecord["domain"] = $oldData["domain"];
 			}
 		} else {
 			if($this->id > 0) {
@@ -199,6 +201,62 @@
 		}
 	}
 
+	function onAfterUpdate() {
+		global $app, $conf;
+
+		if($_SESSION["s"]["user"]["typ"] != 'admin' && isset($this->dataRecord["client_group_id"])) {
+			$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
+			$client = $app->db->queryOneRecord("SELECT client.client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
+			$group = $app->db->queryOneRecord("SELECT sys_group.groupid FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$client['client_id']." AND sys_group.groupid = ".$this->dataRecord["client_group_id"]." ORDER BY client.company_name, client.contact_name, sys_group.name";
+			$this->dataRecord["client_group_id"] = $group["groupid"];
+                }
+
+		// make sure that the record belongs to the client group and not the admin group when admin inserts it
+		// also make sure that the user can not delete domain created by a admin
+		if(isset($this->dataRecord["client_group_id"])) {
+			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
+			$app->db->query("UPDATE domain SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE domain_id = ".$this->id);
+
+			$data = new tform_actions();
+			$tform = $app->tform;
+			$app->tform = new tform();
+
+			$app->tform->loadFormDef("../dns/form/dns_soa.tform.php");
+			$data->oldDataRecord = $app->db->queryOneRecord("SELECT * FROM dns_soa WHERE origin LIKE '".$this->dataRecord['domain'].".'");
+			if ($data->oldDataRecord) {
+				$data->dataRecord = array_merge($data->oldDataRecord, array('client_group_id' => $this->dataRecord["client_group_id"]));
+				$data->id = $data->dataRecord['id'];
+				$app->plugin->raiseEvent("dns:dns_soa:on_after_update", $data);
+			}
+
+			$app->tform->loadFormDef("../dns/form/dns_slave.tform.php");
+			$data->oldDataRecord = $app->db->queryOneRecord("SELECT * FROM dns_slave WHERE origin LIKE '".$this->dataRecord['domain'].".'");
+			if ($data->oldDataRecord) {
+				$data->dataRecord = array_merge($data->oldDataRecord, array('client_group_id' => $this->dataRecord["client_group_id"]));
+				$data->id = $data->dataRecord['id'];
+				$app->plugin->raiseEvent("dns:dns_slave:on_after_update", $data);
+			}
+
+			$app->tform->loadFormDef("../mail/form/mail_domain.tform.php");
+			$data->oldDataRecord = $app->db->queryOneRecord("SELECT * FROM mail_domain WHERE domain = '".$this->dataRecord['domain']."'");
+			if ($data->oldDataRecord) {
+				$data->dataRecord = array_merge($data->oldDataRecord, array('client_group_id' => $this->dataRecord["client_group_id"]));
+				$data->id = $data->dataRecord['domain_id'];
+				$app->plugin->raiseEvent("mail:mail_domain:on_after_update", $data);
+			}
+
+			$app->tform->loadFormDef("../sites/form/web_vhost_domain.tform.php");
+			$data->oldDataRecord = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain = '".$this->dataRecord['domain']."'");
+			if ($data->oldDataRecord) {
+				$data->dataRecord = array_merge($data->oldDataRecord, array('client_group_id' => $this->dataRecord["client_group_id"]));
+				$data->id = $data->dataRecord['domain_id'];
+				$app->plugin->raiseEvent("sites:web_vhost_domain:on_after_update", $data);
+			}
+
+			$app->tform = $tform;
+		}
+	}
+
 }
 
 $page = new page_action;
diff --git a/interface/web/client/form/client.tform.php b/interface/web/client/form/client.tform.php
index 5764266..3625452 100644
--- a/interface/web/client/form/client.tform.php
+++ b/interface/web/client/form/client.tform.php
@@ -106,6 +106,18 @@
 			'default' => '',
 			'value'  => array('' => '', 'm' => 'gender_m_txt', 'f' => 'gender_f_txt')
 		),
+		'contact_firstname' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'default' => '',
+			'value'  => '',
+			'separator' => '',
+			'width'  => '30',
+			'maxlength' => '255',
+			'rows'  => '',
+			'cols'  => '',
+			'searchable' => 1
+		),
 		'contact_name' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
diff --git a/interface/web/client/form/client_template.tform.php b/interface/web/client/form/client_template.tform.php
index dff2dcf..b1fd7d3 100644
--- a/interface/web/client/form/client_template.tform.php
+++ b/interface/web/client/form/client_template.tform.php
@@ -115,6 +115,17 @@
 			'rows'  => '',
 			'cols'  => ''
 		),
+		'default_mailserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '0',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => array(''),
+			'name'  => 'default_mailserver'
+		),
 		'limit_maildomain' => array (
 			'datatype' => 'INTEGER',
 			'formtype' => 'TEXT',
@@ -311,6 +322,17 @@
 			'rows'  => '',
 			'cols'  => ''
 		),
+		'default_webserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '0',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => array(''),
+			'name'  => 'default_webserver'
+		),
 		'limit_web_domain' => array (
 			'datatype' => 'INTEGER',
 			'formtype' => 'TEXT',
@@ -491,6 +513,17 @@
 			'default' => 'y',
 			'value'  => array(0 => 'n', 1 => 'y')
 		),
+		'default_dnsserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '0',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => array(''),
+			'name'  => 'default_dnsserver'
+		),
 		'limit_dns_zone' => array (
 			'datatype' => 'INTEGER',
 			'formtype' => 'TEXT',
@@ -504,6 +537,17 @@
 			'maxlength' => '10',
 			'rows'  => '',
 			'cols'  => ''
+		),
+		'default_slave_dnsserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '0',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => array(''),
+			'name'  => 'default_slave_dnsserver'
 		),
 		'limit_dns_slave_zone' => array (
 			'datatype'      => 'INTEGER',
@@ -549,6 +593,17 @@
 			'cols'		=> ''
 		),
 		*/
+		'default_dbserver' => array (
+			'datatype' => 'INTEGER',
+			'formtype' => 'SELECT',
+			'default' => '0',
+			'datasource' => array (  'type' => 'CUSTOM',
+				'class'=> 'custom_datasource',
+				'function'=> 'client_servers'
+			),
+			'value'  => array(''),
+			'name'  => 'default_dbserver'
+		),
 		'limit_database' => array (
 			'datatype' => 'INTEGER',
 			'formtype' => 'TEXT',
diff --git a/interface/web/client/form/reseller.tform.php b/interface/web/client/form/reseller.tform.php
index fa469c9..8efedf7 100644
--- a/interface/web/client/form/reseller.tform.php
+++ b/interface/web/client/form/reseller.tform.php
@@ -106,6 +106,18 @@
 			'default' => '',
 			'value'  => array('' => '', 'm' => 'gender_m_txt', 'f' => 'gender_f_txt')
 		),
+		'contact_firstname' => array (
+			'datatype' => 'VARCHAR',
+			'formtype' => 'TEXT',
+			'default' => '',
+			'value'  => '',
+			'separator' => '',
+			'width'  => '30',
+			'maxlength' => '255',
+			'rows'  => '',
+			'cols'  => '',
+			'searchable' => 1
+		),
 		'contact_name' => array (
 			'datatype' => 'VARCHAR',
 			'formtype' => 'TEXT',
diff --git a/interface/web/client/lib/lang/ar_client.lng b/interface/web/client/lib/lang/ar_client.lng
index 6f14c60..4b4e75c 100644
--- a/interface/web/client/lib/lang/ar_client.lng
+++ b/interface/web/client/lib/lang/ar_client.lng
@@ -14,6 +14,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies';
 $wb['default_mailserver_txt'] = 'Default Mailserver';
 $wb['company_name_txt'] = 'Company name';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Contact name';
 $wb['username_txt'] = 'Username';
 $wb['password_txt'] = 'Password';
diff --git a/interface/web/client/lib/lang/ar_reseller.lng b/interface/web/client/lib/lang/ar_reseller.lng
index 5269311..bfac98c 100644
--- a/interface/web/client/lib/lang/ar_reseller.lng
+++ b/interface/web/client/lib/lang/ar_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies';
 $wb['default_mailserver_txt'] = 'Default Mailserver';
 $wb['company_name_txt'] = 'Company name';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Contact name';
 $wb['username_txt'] = 'Username';
 $wb['password_txt'] = 'Password';
@@ -89,7 +90,7 @@
 $wb['ssh_chroot_txt'] = 'SSH-Chroot Options';
 $wb['web_php_options_txt'] = 'PHP Options';
 $wb['limit_client_error'] = 'The max. number of clients is reached.';
-$wb['limit_client_error_positive'] = 'The number of clients must be > 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0';
 $wb['limit_web_quota_txt'] = 'Web Quota';
 $wb['limit_traffic_quota_txt'] = 'Traffic Quota';
 $wb['limit_trafficquota_error_notint'] = 'Traffic Quota must be a number.';
diff --git a/interface/web/client/lib/lang/bg_client.lng b/interface/web/client/lib/lang/bg_client.lng
index 61f28de..1c19e89 100644
--- a/interface/web/client/lib/lang/bg_client.lng
+++ b/interface/web/client/lib/lang/bg_client.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Макс. брой spamfilter policys';
 $wb['default_mailserver_txt'] = 'Пощенски сървър по подразбиране';
 $wb['company_name_txt'] = 'Компания';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Лице за контакт';
 $wb['username_txt'] = 'Потребителско име';
 $wb['password_txt'] = 'Парола';
diff --git a/interface/web/client/lib/lang/bg_reseller.lng b/interface/web/client/lib/lang/bg_reseller.lng
index c0a239a..efd4210 100644
--- a/interface/web/client/lib/lang/bg_reseller.lng
+++ b/interface/web/client/lib/lang/bg_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policys';
 $wb['default_mailserver_txt'] = 'Мейл сървър по подразбиране';
 $wb['company_name_txt'] = 'Име на компанията';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Име за контакти';
 $wb['username_txt'] = 'Потребителско име';
 $wb['password_txt'] = 'Парола';
@@ -89,7 +90,7 @@
 $wb['ssh_chroot_txt'] = 'SSH-Chroot опции';
 $wb['web_php_options_txt'] = 'PHP опции';
 $wb['limit_client_error'] = 'Макс. брой на Клиентите е достигнат.';
-$wb['limit_client_error_positive'] = 'Брой клиенти трябва да е  > 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'Брой клиенти трябва да е  > 0';
 $wb['limit_web_quota_txt'] = 'Web Квота';
 $wb['limit_traffic_quota_txt'] = 'Трафик квота';
 $wb['limit_trafficquota_error_notint'] = 'Трафик квота трябва да е число';
diff --git a/interface/web/client/lib/lang/br_client.lng b/interface/web/client/lib/lang/br_client.lng
index 265752e..f00bed5 100644
--- a/interface/web/client/lib/lang/br_client.lng
+++ b/interface/web/client/lib/lang/br_client.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Número máximo de políticas de filtros spam';
 $wb['default_mailserver_txt'] = 'Servidor de Correio Padrão';
 $wb['company_name_txt'] = 'Empresa';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Contato';
 $wb['username_txt'] = 'Nome de Usuário';
 $wb['password_txt'] = 'Senha';
diff --git a/interface/web/client/lib/lang/br_reseller.lng b/interface/web/client/lib/lang/br_reseller.lng
index d0aea72..d6e2b5b 100644
--- a/interface/web/client/lib/lang/br_reseller.lng
+++ b/interface/web/client/lib/lang/br_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Número máximo de políticas de spamfilter';
 $wb['default_mailserver_txt'] = 'Servidor de Correio Padrão';
 $wb['company_name_txt'] = 'Empresa';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Contato';
 $wb['username_txt'] = 'Usuário';
 $wb['password_txt'] = 'Senha';
@@ -89,7 +90,7 @@
 $wb['ssh_chroot_txt'] = 'Opções do Chroot-SSH';
 $wb['web_php_options_txt'] = 'Opções do PHP';
 $wb['limit_client_error'] = 'O número máximo de clientes foi atingido.';
-$wb['limit_client_error_positive'] = 'O número de clientes precisa ser > 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'O número de clientes precisa ser > 0';
 $wb['limit_web_quota_txt'] = 'Cota Web';
 $wb['limit_traffic_quota_txt'] = 'Cota de Tráfego';
 $wb['limit_trafficquota_error_notint'] = 'a cota de tráfego deve ser um número.';
diff --git a/interface/web/client/lib/lang/cz_client.lng b/interface/web/client/lib/lang/cz_client.lng
index 92f95a0..a164dc1 100644
--- a/interface/web/client/lib/lang/cz_client.lng
+++ b/interface/web/client/lib/lang/cz_client.lng
@@ -14,6 +14,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. počet spamfiltrových politik';
 $wb['default_mailserver_txt'] = 'Výchozí e-mailový server';
 $wb['company_name_txt'] = 'Název společnosti';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Název kontaktu';
 $wb['username_txt'] = 'Uživatelské jméno';
 $wb['password_txt'] = 'Heslo';
diff --git a/interface/web/client/lib/lang/cz_reseller.lng b/interface/web/client/lib/lang/cz_reseller.lng
index 49f5449..7de0c0b 100644
--- a/interface/web/client/lib/lang/cz_reseller.lng
+++ b/interface/web/client/lib/lang/cz_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. počet spamfiltrových politik';
 $wb['default_mailserver_txt'] = 'Výchozí e-mailový server';
 $wb['company_name_txt'] = 'Název společnosti';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Název kontaktu';
 $wb['username_txt'] = 'Uživatelské jméno';
 $wb['password_txt'] = 'Heslo';
@@ -88,7 +89,7 @@
 $wb['ssh_chroot_txt'] = 'SSH chroot - dostupná volba pro klienta';
 $wb['web_php_options_txt'] = 'PHP volby';
 $wb['limit_client_error'] = 'Max. počet klientů dosažen.';
-$wb['limit_client_error_positive'] = 'Počet klientů musí být > 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'Počet klientů musí být > 0';
 $wb['limit_web_quota_txt'] = 'Webová kvóta';
 $wb['limit_traffic_quota_txt'] = 'Přenosová kvóta';
 $wb['limit_trafficquota_error_notint'] = 'Přenosová kvót musí být číslo.';
diff --git a/interface/web/client/lib/lang/de_client.lng b/interface/web/client/lib/lang/de_client.lng
index 62bd311..dbaa9a5 100644
--- a/interface/web/client/lib/lang/de_client.lng
+++ b/interface/web/client/lib/lang/de_client.lng
@@ -13,7 +13,8 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. Anzahl an Spamfilter Richtlinien';
 $wb['default_mailserver_txt'] = 'Standardmailserver';
 $wb['company_name_txt'] = 'Firmenname';
-$wb['contact_name_txt'] = 'Kontakt';
+$wb['contact_firstname_txt'] = 'Vorname';
+$wb['contact_name_txt'] = 'Nachname';
 $wb['username_txt'] = 'Benutzername';
 $wb['password_txt'] = 'Passwort';
 $wb['language_txt'] = 'Sprache';
diff --git a/interface/web/client/lib/lang/de_reseller.lng b/interface/web/client/lib/lang/de_reseller.lng
index b3ba52f..1595e56 100644
--- a/interface/web/client/lib/lang/de_reseller.lng
+++ b/interface/web/client/lib/lang/de_reseller.lng
@@ -13,7 +13,8 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. Anzahl an Spamfilter Richtlinien';
 $wb['default_mailserver_txt'] = 'Standardmailserver';
 $wb['company_name_txt'] = 'Firmenname';
-$wb['contact_name_txt'] = 'Kontakt';
+$wb['contact_firstname_txt'] = 'Vorname';
+$wb['contact_name_txt'] = 'Nachname';
 $wb['username_txt'] = 'Benutzername';
 $wb['password_txt'] = 'Passwort';
 $wb['password_strength_txt'] = 'Passwortkomplexität';
@@ -97,7 +98,7 @@
 $wb['limit_wildcard_txt'] = 'Wildcard Subdomain verfügbar';
 $wb['limit_ssl_txt'] = 'SSL verfügbar';
 $wb['limit_client_error'] = 'Die maximale Anzahl an Kunden wurde erreicht.';
-$wb['limit_client_error_positive'] = 'Die Anzahl an Kunden muss > 0 sein';
+$wb['limit_client_error_positive_or_unlimited'] = 'Die Anzahl an Kunden muss > 0 sein';
 $wb['limit_web_quota_txt'] = 'Speicherplatzbeschränkung';
 $wb['limit_traffic_quota_txt'] = 'Transfervolumenbeschränkung';
 $wb['limit_trafficquota_error_notint'] = 'Transfervolumenbeschränkung muss eine Zahl sein.';
diff --git a/interface/web/client/lib/lang/el_client.lng b/interface/web/client/lib/lang/el_client.lng
index e68db31..07a5c9f 100644
--- a/interface/web/client/lib/lang/el_client.lng
+++ b/interface/web/client/lib/lang/el_client.lng
@@ -14,6 +14,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Όριο πολιτικών spamfilter';
 $wb['default_mailserver_txt'] = 'Προκαθορισμένος Mailserver';
 $wb['company_name_txt'] = 'Όνομα εταιρίας';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Πρόσωπο Επικοινωνίας';
 $wb['username_txt'] = 'Όνομα Χρήστη';
 $wb['password_txt'] = 'Συνθηματικό';
diff --git a/interface/web/client/lib/lang/el_reseller.lng b/interface/web/client/lib/lang/el_reseller.lng
index eec08b7..578774b 100644
--- a/interface/web/client/lib/lang/el_reseller.lng
+++ b/interface/web/client/lib/lang/el_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Όριο πολιτικών spamfilter';
 $wb['default_mailserver_txt'] = 'Προκαθορισμένος Mailserver';
 $wb['company_name_txt'] = 'Όνομα Εταιρίας';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Πρόσωπο Επικοινωνίας';
 $wb['username_txt'] = 'Όνομα Χρήστη';
 $wb['password_txt'] = 'Συνθηματικό';
@@ -89,7 +90,7 @@
 $wb['ssh_chroot_txt'] = 'Επιλογές SSH-Chroot';
 $wb['web_php_options_txt'] = 'Επιλογές PHP';
 $wb['limit_client_error'] = 'Έχετε φτάσει το μέγιστο πλήθος πελατών.';
-$wb['limit_client_error_positive'] = 'Το πλήθος πελατών πρέπει να είναι > 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'Το πλήθος πελατών πρέπει να είναι > 0';
 $wb['limit_web_quota_txt'] = 'Όριο χώρου Web';
 $wb['limit_traffic_quota_txt'] = 'Όριο ταχύτητας';
 $wb['limit_trafficquota_error_notint'] = 'Το Όριο ταχύτητας πρέπει να είναι αριθμός.';
diff --git a/interface/web/client/lib/lang/en.lng b/interface/web/client/lib/lang/en.lng
index d901b7a..66f2b7d 100644
--- a/interface/web/client/lib/lang/en.lng
+++ b/interface/web/client/lib/lang/en.lng
@@ -19,6 +19,8 @@
 $wb['Domains'] = 'Domains';
 $wb['domain_txt'] = 'Domain';
 $wb['client_txt'] = 'Client';
+$wb['error_domain_in dnsuse'] = 'This domain cannot be deleted, because it is in use as dns zone';
+$wb['error_domain_in dnsslaveuse'] = 'This domain cannot be deleted, because it is in use as secondary dns zone';
 $wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain';
 $wb['error_domain_in webuse'] = 'This domain cannot be deleted, because it is in use as web-domain';
 $wb['error_client_can_not_add_domain'] = 'You cannot add a new domain';
diff --git a/interface/web/client/lib/lang/en_client.lng b/interface/web/client/lib/lang/en_client.lng
index c94ab12..493ad19 100644
--- a/interface/web/client/lib/lang/en_client.lng
+++ b/interface/web/client/lib/lang/en_client.lng
@@ -15,6 +15,7 @@
 $wb["limit_spamfilter_policy_txt"] = 'Max. number of spamfilter policies';
 $wb["default_mailserver_txt"] = 'Default Mailserver';
 $wb["company_name_txt"] = 'Company name';
+$wb["contact_firstname_txt"] = 'Contact firstname';
 $wb["contact_name_txt"] = 'Contact name';
 $wb["username_txt"] = 'Username';
 $wb["password_txt"] = 'Password';
diff --git a/interface/web/client/lib/lang/en_client_template.lng b/interface/web/client/lib/lang/en_client_template.lng
index 5d8c3f3..9aacf40 100644
--- a/interface/web/client/lib/lang/en_client_template.lng
+++ b/interface/web/client/lib/lang/en_client_template.lng
@@ -2,6 +2,7 @@
 $wb["template_type_txt"] = 'Template type';
 $wb["template_name_txt"] = 'Template name';
 $wb["limit_client_error_notint"] = 'Client Limit is not a number.';
+$wb["default_mailserver_txt"] = 'Default Mailserver';
 $wb["limit_maildomain_txt"] = 'Max. number of email domains';
 $wb["limit_mailbox_txt"] = 'Max. number of mailboxes';
 $wb["limit_mailalias_txt"] = 'Max. number of email aliases';
@@ -23,11 +24,14 @@
 $wb["limit_cron_txt"] = 'Max. number of cron jobs';
 $wb["limit_cron_type_txt"] = 'Max. type of cron jobs (chrooted and full implies url)';
 $wb["limit_cron_frequency_txt"] = 'Min. delay between executions';
+$wb["default_webserver_txt"] = 'Default Webserver';
 $wb["limit_web_domain_txt"] = 'Max. number of web domains';
 $wb["limit_web_aliasdomain_txt"] = 'Max. number of web aliasdomains';
 $wb["limit_web_subdomain_txt"] = 'Max. number of web subdomains';
 $wb["limit_ftp_user_txt"] = 'Max. number of FTP users';
+$wb["default_dnsserver_txt"] = 'Default DNS Server';
 $wb["limit_dns_zone_txt"] = 'Max. number of DNS zones';
+$wb["default_slave_dnsserver_txt"] = 'Default Secondary DNS Server';
 $wb["limit_dns_slave_zone_txt"] = 'Max. number of secondary DNS zones';
 $wb["limit_dns_record_txt"] = 'Max. number DNS records';
 $wb["limit_shell_user_txt"] = 'Max. number of Shell users';
@@ -57,6 +61,7 @@
 $wb["limit_dns_zone_error_notint"] = 'The dns zone limit must be a number.';
 $wb["limit_dns_slave_zone_error_notint"] = 'The dns slave zone limit must be a number.';
 $wb["limit_dns_record_error_notint"] = 'The dns record limit must be a number.';
+$wb["default_dbserver_txt"] = 'Default Database Server';
 $wb["limit_database_txt"] = 'Max. number of Databases';
 $wb["limit_database_error_notint"] = 'The database limit must be a number.';
 $wb["limit_cron_error_notint"] = 'The cron limit must be a number.';
diff --git a/interface/web/client/lib/lang/en_reseller.lng b/interface/web/client/lib/lang/en_reseller.lng
index 6291c0b..b94c30e 100644
--- a/interface/web/client/lib/lang/en_reseller.lng
+++ b/interface/web/client/lib/lang/en_reseller.lng
@@ -15,6 +15,7 @@
 $wb["limit_spamfilter_policy_txt"] = 'Max. number of spamfilter policies';
 $wb["default_mailserver_txt"] = 'Default Mailserver';
 $wb["company_name_txt"] = 'Company name';
+$wb["contact_firstname_txt"] = 'Contact firstname';
 $wb["contact_name_txt"] = 'Contact name';
 $wb["username_txt"] = 'Username';
 $wb["password_txt"] = 'Password';
@@ -108,7 +109,7 @@
 $wb["limit_wildcard_txt"] = "Wildcard subdomain available";
 $wb["limit_ssl_txt"] = "SSL available";
 $wb["limit_client_error"] = 'The max. number of clients is reached.';
-$wb["limit_client_error_positive"] = 'The number of clients must be > 0';
+$wb["limit_client_error_positive_or_unlimited"] = 'The number of clients must be > 0 or -1 (unlimited)';
 $wb["limit_web_quota_txt"] = 'Web Quota';
 $wb["limit_traffic_quota_txt"] = 'Traffic Quota';
 $wb["limit_trafficquota_error_notint"] = 'Traffic Quota must be a number.';
diff --git a/interface/web/client/lib/lang/es.lng b/interface/web/client/lib/lang/es.lng
index da72048..268db99 100644
--- a/interface/web/client/lib/lang/es.lng
+++ b/interface/web/client/lib/lang/es.lng
@@ -5,8 +5,9 @@
 $wb['Add Client'] = 'Añadir cliente';
 $wb['Edit Client'] = 'Editar cliente';
 $wb['Clients'] = 'Clientes';
-$wb['Templates'] = 'Templates';
-$wb['Limit-Templates'] = 'Limit-Templates';
+$wb['Templates'] = 'Plantillas';
+$wb['Limit-Templates'] = 'Plantillas de límites';
+$wb['Email-Templates'] = 'Plantillas de correo';
 $wb['Add Reseller'] = 'Añadir revendedor';
 $wb['Edit Reseller'] = 'Editar revendedor';
 $wb['Resellers'] = 'Revendedores';
@@ -14,13 +15,15 @@
 $wb['add_additional_template_txt'] = 'Añadir plantilla adicional';
 $wb['delete_additional_template_txt'] = 'Eliminar plantilla adicional';
 $wb['Messaging'] = 'Mensajes';
-$wb['Send email'] = 'Send Email';
-$wb['Edit Client Circle'] = 'Edit Client Circle';
-$wb['Domains'] = 'Domains';
-$wb['domain_txt'] = 'Domain';
-$wb['client_txt'] = 'Client';
-$wb['error_domain_in mailuse'] = 'This domain cannot be deleted, because it is in use as mail-domain';
-$wb['error_domain_in webuse'] = 'This domain cannot be deleted, because it is in use as web-domain';
-$wb['error_client_can_not_add_domain'] = 'You cannot add a new domain';
-$wb['error_client_group_id_empty'] = 'You have to select a customer<br>';
+$wb['Send email'] = 'Enviar correo';
+$wb['Edit Client Circle'] = 'Editar círculo de clientes';
+$wb['Domains'] = 'Dominios';
+$wb['domain_txt'] = 'Dominio';
+$wb['client_txt'] = 'Cliente';
+$wb['error_domain_in dnsuse'] = 'No se puede eliminar este dominio, porque está en uso como zona dns';
+$wb['error_domain_in dnsslaveuse'] = 'No se puede eliminar este dominio, porque está en uso como zona dns secundaria';
+$wb['error_domain_in mailuse'] = 'No se puede eliminar este dominio, porque está en uso como dominio de correo';
+$wb['error_domain_in webuse'] = 'No se puede eliminar este dominio, porque está en uso como sitio web';
+$wb['error_client_can_not_add_domain'] = 'No puedes añadir más dominios';
+$wb['error_client_group_id_empty'] = 'Tienes que seleccionar un cliente<br>';
 ?>
diff --git a/interface/web/client/lib/lang/es_client.lng b/interface/web/client/lib/lang/es_client.lng
index c17dd30..83d2833 100644
--- a/interface/web/client/lib/lang/es_client.lng
+++ b/interface/web/client/lib/lang/es_client.lng
@@ -9,12 +9,13 @@
 $wb['limit_mailrouting_txt'] = 'Número máximo de enrutadores de correo';
 $wb['limit_mailfilter_txt'] = 'Número máximo de filtros de correo';
 $wb['limit_fetchmail_txt'] = 'Número máximo de cuentas Fetchmail';
-$wb['limit_mailquota_txt'] = 'Cuota del buzón de correo';
+$wb['limit_mailquota_txt'] = 'Cuota de correo';
 $wb['limit_spamfilter_wblist_txt'] = 'Número máximo de filtros de listas blancas y negras de spam';
 $wb['limit_spamfilter_user_txt'] = 'Número máximo de usuarios de filtros de spam';
 $wb['limit_spamfilter_policy_txt'] = 'Número máximo de políticas de filtro de spam';
 $wb['default_mailserver_txt'] = 'Servidor de correo por defecto';
 $wb['company_name_txt'] = 'Nombre de la empresa';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Nombre de contacto';
 $wb['username_txt'] = 'Usuario';
 $wb['password_txt'] = 'Contraseña';
@@ -24,37 +25,37 @@
 $wb['street_txt'] = 'Calle';
 $wb['zip_txt'] = 'Código Postal';
 $wb['city_txt'] = 'Localidad';
-$wb['state_txt'] = 'Estado o provincia';
+$wb['state_txt'] = 'Estado o Provincia';
 $wb['country_txt'] = 'País';
 $wb['telephone_txt'] = 'Teléfono fijo';
-$wb['mobile_txt'] = 'Móvil o celular';
+$wb['mobile_txt'] = 'Móvil';
 $wb['fax_txt'] = 'Fax';
 $wb['email_txt'] = 'Correo';
 $wb['internet_txt'] = 'Internet';
 $wb['icq_txt'] = 'ICQ';
-$wb['company_id_txt'] = 'Empresa ID';
+$wb['company_id_txt'] = 'ID de Empresa';
 $wb['notes_txt'] = 'Notas';
 $wb['company_txt'] = 'Empresa';
 $wb['title_txt'] = 'Título';
 $wb['firstname_txt'] = 'Nombre';
 $wb['surname_txt'] = 'Apellidos';
 $wb['limit_client_txt'] = 'Número máximo de clientes';
-$wb['limit_domain_txt'] = 'limit_domain';
-$wb['limit_subdomain_txt'] = 'limit_subdomain';
-$wb['limit_webquota_txt'] = 'limit_webquota';
+$wb['limit_domain_txt'] = 'Número máximo de dominios ';
+$wb['limit_subdomain_txt'] = 'Número máximo de subdominios';
+$wb['limit_webquota_txt'] = 'Cuota de web';
 $wb['limit_database_txt'] = 'Número máximo de bases de datos';
-$wb['ip_address_txt'] = 'ip_address';
+$wb['ip_address_txt'] = 'Dirección IP';
 $wb['limit_client_error_notint'] = 'El límite de subclientes debe ser un número.';
 $wb['firstname_error_empty'] = 'El nombre está vacío';
 $wb['contact_error_empty'] = 'El nombre de contacto está vacío';
 $wb['default_webserver_txt'] = 'Servidor web por defecto';
-$wb['limit_web_domain_txt'] = 'Número máximo de dominios';
+$wb['limit_web_domain_txt'] = 'Número máximo de sitios web';
 $wb['limit_web_aliasdomain_txt'] = 'Número máximo de alias de dominios';
 $wb['limit_web_subdomain_txt'] = 'Número máximo de subdominios';
 $wb['limit_ftp_user_txt'] = 'Número máximo de usuarios FTP';
 $wb['default_dnsserver_txt'] = 'Servidor DNS por defecto';
 $wb['limit_dns_zone_txt'] = 'Número máximo de zonas DNS';
-$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
+$wb['limit_dns_slave_zone_txt'] = 'Número máximo de zonas DNS secundarias';
 $wb['limit_dns_record_txt'] = 'Número máximo de registros DNS';
 $wb['limit_shell_user_txt'] = 'Número máximo de usuarios de consola';
 $wb['username_error_empty'] = 'El nombre de usuario está vacío.';
@@ -68,7 +69,7 @@
 $wb['limit_mailfilter_error_notint'] = 'El límite de filtros de correo debe ser un número';
 $wb['limit_mailfetchmail_error_notint'] = 'El límite de cuentas Fetchmail debe ser un número';
 $wb['limit_mailquota_error_notint'] = 'El límite de cuota de correo debe ser un número';
-$wb['limit_spamfilter_wblist_error_notint'] = 'El límite de filtros de spam debe ser un número';
+$wb['limit_spamfilter_wblist_error_notint'] = 'El límite de filtros de listas blancas y negras de spam debe ser un número';
 $wb['limit_spamfilter_user_error_notint'] = 'El límite de usuarios de filtros de spam debe ser un número';
 $wb['limit_spamfilter_policy_error_notint'] = 'El límite de políticas de spam debe ser un número';
 $wb['limit_web_domain_error_notint'] = 'El límite de sitios web debe ser un número';
@@ -77,7 +78,7 @@
 $wb['limit_ftp_user_error_notint'] = 'El límite de usuarios FTP debe ser un número';
 $wb['limit_shell_user_error_notint'] = 'El límite de usuarios de consola debe ser un número';
 $wb['limit_dns_zone_error_notint'] = 'El límite de zonas DNS debe ser un número';
-$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
+$wb['limit_dns_slave_zone_error_notint'] = 'El límite de zonas DNS secundarias debe ser un número';
 $wb['default_dbserver_txt'] = 'Servidor de bases de datos por defecto';
 $wb['limit_database_error_notint'] = 'El límite de bases de datos debe ser un número';
 $wb['username_error_regex'] = 'El usuario contiene carácteres no válidos';
@@ -91,67 +92,67 @@
 $wb['limit_cron_error_notint'] = 'El límite de tareas cron debe ser un número.';
 $wb['limit_cron_error_frequency'] = 'El límite de la frecuencia de cron debe ser un número.';
 $wb['limit_client_error'] = 'Se ha alcanzado el número máximo de clientes.';
-$wb['limit_mailaliasdomain_error_notint'] = 'El límite de alias de dominio de correodebe ser un número.';
+$wb['limit_mailaliasdomain_error_notint'] = 'El límite de alias de dominio de correo debe ser un número.';
 $wb['limit_web_quota_txt'] = 'Cuota Web';
 $wb['limit_traffic_quota_txt'] = 'Cuota de Tráfico';
-$wb['limit_trafficquota_error_notint'] = 'Cuota Tráfico debe ser un número.';
+$wb['limit_trafficquota_error_notint'] = 'Cuota de Tráfico debe ser un número.';
 $wb['limit_webdav_user_txt'] = 'Numero máximo de usuarios Webdav';
 $wb['limit_webdav_user_error_notint'] = 'El límite de usuarios Webdav debe ser un número.';
-$wb['limit_backup_txt'] = 'Backupfunction available';
+$wb['limit_backup_txt'] = 'Copias de seguridad disponibles';
 $wb['customer_no_txt'] = 'Número Cliente';
-$wb['vat_id_txt'] = 'VAT ID';
+$wb['vat_id_txt'] = 'ID de IVA';
 $wb['required_fields_txt'] = '* Campos Requeridos';
-$wb['limit_mailmailinglist_error_notint'] = 'El límite de registro de la lista de correo debe ser un número.';
+$wb['limit_mailmailinglist_error_notint'] = 'El límite de listas de correo debe ser un número.';
 $wb['limit_openvz_vm_txt'] = 'Max. número de servidores virtuales';
-$wb['limit_openvz_vm_template_id_txt'] = 'Fuerza plantilla de servidor virtual';
-$wb['limit_openvz_vm_error_notint'] = 'El límite del servidor virtual debe ser un número.';
-$wb['web_php_options_notempty'] = 'No hay opción de PHP(s) seleccionado. Seleccione al menos una opción de PHP.';
-$wb['ssh_chroot_notempty'] = 'No hay opción chroot SSH seleccionado. Seleccione al menos una opción SSH.';
+$wb['limit_openvz_vm_template_id_txt'] = 'Restringir plantilla de servidor virtual';
+$wb['limit_openvz_vm_error_notint'] = 'El límite de servidores virtuales debe ser un número.';
+$wb['web_php_options_notempty'] = 'No hay opciones de PHP seleccionadas. Seleccione al menos una opción de PHP.';
+$wb['ssh_chroot_notempty'] = 'No hay opción chroot SSH seleccionada. Seleccione al menos una opción SSH.';
 $wb['username_error_collision'] = 'El nombre de usuario no puede comenzar con la palabra -web- o web- seguida de un número.';
-$wb['active_template_additional_txt'] = 'Active Addons';
-$wb['add_additional_template_txt'] = 'Add additional template';
-$wb['delete_additional_template_txt'] = 'Delete additional template';
-$wb['limit_cgi_txt'] = 'CGI available';
-$wb['limit_ssi_txt'] = 'SSI available';
-$wb['limit_perl_txt'] = 'Perl available';
-$wb['limit_ruby_txt'] = 'Ruby available';
-$wb['limit_python_txt'] = 'Python available';
-$wb['force_suexec_txt'] = 'SuEXEC forced';
-$wb['limit_hterror_txt'] = 'Custom error docs available';
-$wb['limit_wildcard_txt'] = 'Wildcard subdomain available';
-$wb['limit_ssl_txt'] = 'SSL available';
-$wb['bank_account_number_txt'] = 'Bank account no.';
-$wb['bank_account_owner_txt'] = 'Bank account owner';
-$wb['bank_code_txt'] = 'Bank code';
-$wb['bank_name_txt'] = 'Bank name';
+$wb['active_template_additional_txt'] = 'Plantillas adicionales activas';
+$wb['add_additional_template_txt'] = 'Añadir plantilla adicional';
+$wb['delete_additional_template_txt'] = 'Elimintar plantilla adicional';
+$wb['limit_cgi_txt'] = 'CGI disponible';
+$wb['limit_ssi_txt'] = 'SSI disponible';
+$wb['limit_perl_txt'] = 'Perl disponible';
+$wb['limit_ruby_txt'] = 'Ruby disponible';
+$wb['limit_python_txt'] = 'Python disponible';
+$wb['force_suexec_txt'] = 'SuEXEC obligatorio';
+$wb['limit_hterror_txt'] = 'Archivos de error personalizados disponibles';
+$wb['limit_wildcard_txt'] = 'Subdominio comodín disponible';
+$wb['limit_ssl_txt'] = 'SSL disponible';
+$wb['bank_account_number_txt'] = 'Número de Cuenta Bancaria';
+$wb['bank_account_owner_txt'] = 'Propietario de Cuenta Bancaria';
+$wb['bank_code_txt'] = 'Código de Banco';
+$wb['bank_name_txt'] = 'Nombre de Banco';
 $wb['bank_account_iban_txt'] = 'IBAN';
 $wb['bank_account_swift_txt'] = 'BIC / Swift';
-$wb['web_limits_txt'] = 'Web Limits';
-$wb['email_limits_txt'] = 'Email Limits';
-$wb['database_limits_txt'] = 'Database Limits';
-$wb['cron_job_limits_txt'] = 'Cron Job Limits';
-$wb['dns_limits_txt'] = 'DNS Limits';
-$wb['virtualization_limits_txt'] = 'Virtualization Limits';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['email_error_isemail'] = 'Please enter a valid email address.';
-$wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
-$wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
-$wb['paypal_email_txt'] = 'PayPal Email';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
-$wb['aps_limits_txt'] = 'APS Installer Limits';
-$wb['limit_aps_txt'] = 'Max. number of APS instances';
-$wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['locked_txt'] = 'Locked (disables all webs etc.)';
-$wb['canceled_txt'] = 'Canceled (disables client login)';
-$wb['gender_txt'] = 'Title';
-$wb['gender_m_txt'] = 'Mr.';
-$wb['gender_f_txt'] = 'Ms.';
-$wb['added_by_txt'] = 'Added by';
-$wb['added_date_txt'] = 'Added date';
-$wb['parent_client_id_txt'] = 'Client of reseller';
-$wb['none_txt'] = 'none';
+$wb['web_limits_txt'] = 'Límites de Web';
+$wb['email_limits_txt'] = 'Límites de Correo';
+$wb['database_limits_txt'] = 'Límites de Bases de Datos';
+$wb['cron_job_limits_txt'] = 'Límites de Tareas Cron';
+$wb['dns_limits_txt'] = 'Límites de DNS';
+$wb['virtualization_limits_txt'] = 'Límites de Virtualización';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
+$wb['email_error_isemail'] = 'Por favor introduce una dirección de correo válida.';
+$wb['customer_no_error_unique'] = 'El número de cliente debe ser único (o vacío).';
+$wb['paypal_email_error_isemail'] = 'Por favor introduce una dirección de correo válida como cuenta de Paypal.';
+$wb['paypal_email_txt'] = 'Cuenta de PayPal';
+$wb['err_msg_master_tpl_set'] = 'Todas los límites personalizados se ignoran si se selecciona una plantilla principal distinta de \"custom\".';
+$wb['aps_limits_txt'] = 'Límites de Instaladores APS';
+$wb['limit_aps_txt'] = 'Número máximo de instancias APS';
+$wb['limit_aps_error_notint'] = 'El límite de instancias APS debe ser un número.';
+$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundario por defecto';
+$wb['locked_txt'] = 'Bloqueado (desactiva todos los sitios web, etc.)';
+$wb['canceled_txt'] = 'Cancelado (desactiva inicio de sesión)';
+$wb['gender_txt'] = 'Título';
+$wb['gender_m_txt'] = 'Sr.';
+$wb['gender_f_txt'] = 'Sra.';
+$wb['added_by_txt'] = 'Creado por';
+$wb['added_date_txt'] = 'Fecha de alta';
+$wb['parent_client_id_txt'] = 'Cliente de revendedor';
+$wb['none_txt'] = 'ninguno';
 ?>
diff --git a/interface/web/client/lib/lang/es_client_circle.lng b/interface/web/client/lib/lang/es_client_circle.lng
index f98a144..5c668a8 100644
--- a/interface/web/client/lib/lang/es_client_circle.lng
+++ b/interface/web/client/lib/lang/es_client_circle.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['Client Circle'] = 'Client Circle';
-$wb['Circle'] = 'Circle';
-$wb['circle_txt'] = 'Circle';
-$wb['circle_name_txt'] = 'Circle Name';
-$wb['client_ids_txt'] = 'Clients/Resellers';
-$wb['description_txt'] = 'Description';
-$wb['active_txt'] = 'Active';
+$wb['Client Circle'] = 'Círculo de Clientes';
+$wb['Circle'] = 'Círculo';
+$wb['circle_txt'] = 'Círculo';
+$wb['circle_name_txt'] = 'Nombre de Círculo';
+$wb['client_ids_txt'] = 'Clientes/Revendedores';
+$wb['description_txt'] = 'Descripción';
+$wb['active_txt'] = 'Activo';
 ?>
diff --git a/interface/web/client/lib/lang/es_client_circle_list.lng b/interface/web/client/lib/lang/es_client_circle_list.lng
index 00fd0b3..3702852 100644
--- a/interface/web/client/lib/lang/es_client_circle_list.lng
+++ b/interface/web/client/lib/lang/es_client_circle_list.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['list_head_txt'] = 'Client Circles';
-$wb['circle_id_txt'] = 'Circle ID';
-$wb['circle_name_txt'] = 'Circle Name';
-$wb['description_txt'] = 'Description';
-$wb['add_new_record_txt'] = 'Add new circle';
-$wb['filter_txt'] = 'Filter';
-$wb['delete_txt'] = 'Delete';
-$wb['active_txt'] = 'Active';
+$wb['list_head_txt'] = 'Círculos de Clientes';
+$wb['circle_id_txt'] = 'ID de Círculo';
+$wb['circle_name_txt'] = 'Nombre de Círculo';
+$wb['description_txt'] = 'Descripción';
+$wb['add_new_record_txt'] = 'Añadir nuevo círculo';
+$wb['filter_txt'] = 'Filtro';
+$wb['delete_txt'] = 'Eliminar';
+$wb['active_txt'] = 'Activo';
 ?>
diff --git a/interface/web/client/lib/lang/es_client_del.lng b/interface/web/client/lib/lang/es_client_del.lng
index a40194b..2e611a3 100644
--- a/interface/web/client/lib/lang/es_client_del.lng
+++ b/interface/web/client/lib/lang/es_client_del.lng
@@ -3,5 +3,5 @@
 $wb['delete_explanation'] = 'Esta acción eliminara los siguientes registros asociados a este cliente';
 $wb['btn_save_txt'] = 'Eliminar cliente';
 $wb['btn_cancel_txt'] = 'Cancelar sin eliminar cliente';
-$wb['confirm_client_delete_txt'] = 'Are you sure you want to delete this client?';
+$wb['confirm_client_delete_txt'] = '¿Está seguro de que quiere eliminar este cliente?';
 ?>
diff --git a/interface/web/client/lib/lang/es_client_message.lng b/interface/web/client/lib/lang/es_client_message.lng
index 120c416..40d8bca 100644
--- a/interface/web/client/lib/lang/es_client_message.lng
+++ b/interface/web/client/lib/lang/es_client_message.lng
@@ -1,20 +1,20 @@
 <?php
 $wb['btn_send_txt'] = 'Enviar correo';
 $wb['btn_cancel_txt'] = 'Cancelar';
-$wb['sender_txt'] = 'Dirección de correo del remitente';
+$wb['sender_txt'] = 'Dirección del remitente';
 $wb['subject_txt'] = 'Asunto';
 $wb['message_txt'] = 'Mensaje';
 $wb['form_legend_client_txt'] = 'Enviar mensaje de correo para todos los clientes.';
 $wb['form_legend_admin_txt'] = 'Enviar mensaje de correo a todos los clientes y revendedores.';
 $wb['sender_invalid_error'] = 'El correo del remitente no es válido.';
-$wb['subject_invalid_error'] = 'El sujeto está vacío.';
+$wb['subject_invalid_error'] = 'El asunto está vacío.';
 $wb['message_invalid_error'] = 'El mensaje está vacío.';
-$wb['email_sent_to_txt'] = 'El correo enviado a:';
+$wb['email_sent_to_txt'] = 'Correo enviado a:';
 $wb['page_head_txt'] = 'Send customer information';
-$wb['recipient_txt'] = 'Recipient';
-$wb['all_clients_resellers_txt'] = 'All clients and resellers';
-$wb['all_clients_txt'] = 'All clients';
+$wb['recipient_txt'] = 'Destinatarios';
+$wb['all_clients_resellers_txt'] = 'Todos los clientes y revendedores';
+$wb['all_clients_txt'] = 'Todos los clientes';
 $wb['variables_txt'] = 'Variables:';
-$wb['gender_m_txt'] = 'Mr.';
-$wb['gender_f_txt'] = 'Ms.';
+$wb['gender_m_txt'] = 'Sr.';
+$wb['gender_f_txt'] = 'Sra.';
 ?>
diff --git a/interface/web/client/lib/lang/es_client_message_template.lng b/interface/web/client/lib/lang/es_client_message_template.lng
index 65e5fbf..b49ae54 100644
--- a/interface/web/client/lib/lang/es_client_message_template.lng
+++ b/interface/web/client/lib/lang/es_client_message_template.lng
@@ -1,11 +1,11 @@
 <?php
-$wb['template_type_txt'] = 'Email type';
-$wb['template_name_txt'] = 'Template name';
-$wb['subject_txt'] = 'Subject';
-$wb['message_txt'] = 'Message';
-$wb['Email template'] = 'Email template';
-$wb['Settings'] = 'Setting';
+$wb['template_type_txt'] = 'Tipo de correo';
+$wb['template_name_txt'] = 'Nombre de plantilla';
+$wb['subject_txt'] = 'Asunto';
+$wb['message_txt'] = 'Mensaje';
+$wb['Email template'] = 'Plantilla de correo';
+$wb['Settings'] = 'Configuración';
 $wb['variables_txt'] = 'Variables';
-$wb['variables_description_txt'] = '(The username and password variables are only available in welcome emails.)';
-$wb['duplicate_welcome_error'] = 'There can be only one default welcome email template. Please edit the existing template instead of adding a new one.';
+$wb['variables_description_txt'] = '(Las variables username y password solo están disponibles en los correos de bienvenida.)';
+$wb['duplicate_welcome_error'] = 'Solo puede haber una plantilla de correo de bienvenida por defecto. Por favor edita la plantilla existente en vez de añadir una nueva.';
 ?>
diff --git a/interface/web/client/lib/lang/es_client_message_template_list.lng b/interface/web/client/lib/lang/es_client_message_template_list.lng
index d9c307e..01f045b 100644
--- a/interface/web/client/lib/lang/es_client_message_template_list.lng
+++ b/interface/web/client/lib/lang/es_client_message_template_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Email templates';
-$wb['template_type_txt'] = 'Message for';
-$wb['template_name_txt'] = 'Template name';
+$wb['list_head_txt'] = 'Plantillas de correo';
+$wb['template_type_txt'] = 'Mensaje para';
+$wb['template_name_txt'] = 'Nombre de plantilla';
 ?>
diff --git a/interface/web/client/lib/lang/es_client_template.lng b/interface/web/client/lib/lang/es_client_template.lng
index 7dc88be..156f272 100644
--- a/interface/web/client/lib/lang/es_client_template.lng
+++ b/interface/web/client/lib/lang/es_client_template.lng
@@ -1,5 +1,6 @@
 <?php
 $wb['limit_client_error_notint'] = 'El límite de subclientes debe ser un número.';
+$wb['default_mailserver_txt'] = 'Servidor de correo por defecto';
 $wb['limit_maildomain_txt'] = 'Número máximo de dominios de correo';
 $wb['limit_mailbox_txt'] = 'Número máximo de buzones de correo';
 $wb['limit_mailalias_txt'] = 'Número máximo de alias de correo';
@@ -8,21 +9,24 @@
 $wb['limit_mailrouting_txt'] = 'Número máximo de enrutadores de correo';
 $wb['limit_mailfilter_txt'] = 'Número máximo de filtros de correo';
 $wb['limit_fetchmail_txt'] = 'Número máximo de cuentas Fetchmail';
-$wb['limit_mailquota_txt'] = 'Cuota del buzón de correo';
+$wb['limit_mailquota_txt'] = 'Cuota de correo';
 $wb['limit_spamfilter_wblist_txt'] = 'Número máximo de filtros de listas blancas y negras de spam';
 $wb['limit_spamfilter_user_txt'] = 'Número máximo de usuarios de filtros de spam';
 $wb['limit_spamfilter_policy_txt'] = 'Número máximo de políticas de filtros de spam';
 $wb['limit_client_txt'] = 'Número máximo de clientes';
-$wb['limit_domain_txt'] = 'limit_domain';
-$wb['limit_subdomain_txt'] = 'limit_subdomain';
-$wb['limit_webquota_txt'] = 'limit_webquota';
+$wb['limit_domain_txt'] = 'Número máximo de dominios ';
+$wb['limit_subdomain_txt'] = 'Número máximo de subdominios ';
+$wb['limit_webquota_txt'] = 'Cuota de web';
 $wb['limit_database_txt'] = 'Número máximo de bases de datos';
-$wb['limit_web_domain_txt'] = 'Número máximo de dominios web';
-$wb['limit_web_aliasdomain_txt'] = 'Número máximo de alias de dominio';
+$wb['default_webserver_txt'] = 'Servidor web por defecto';
+$wb['limit_web_domain_txt'] = 'Número máximo de sitios web';
+$wb['limit_web_aliasdomain_txt'] = 'Número máximo de alias de dominios';
 $wb['limit_web_subdomain_txt'] = 'Número máximo de subdominios';
 $wb['limit_ftp_user_txt'] = 'Número máximo de usuarios FTP';
+$wb['default_dnsserver_txt'] = 'Servidor DNS por defecto';
 $wb['limit_dns_zone_txt'] = 'Número máximo de zonas DNS';
-$wb['limit_dns_slave_zone_txt'] = 'Max. number of secondary DNS zones';
+$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundario por defecto';
+$wb['limit_dns_slave_zone_txt'] = 'Número máximo de zonas DNS secundarias';
 $wb['limit_dns_record_txt'] = 'Número máximo de registros DNS';
 $wb['limit_shell_user_txt'] = 'Número máximo de usuarios de consola';
 $wb['limit_maildomain_error_notint'] = 'El límite de dominios de correo debe ser un número.';
@@ -43,8 +47,9 @@
 $wb['limit_ftp_user_error_notint'] = 'El límite de usuarios FTP debe ser un número.';
 $wb['limit_shell_user_error_notint'] = 'El límite de usuarios de consola debe ser un número.';
 $wb['limit_dns_zone_error_notint'] = 'El límite de registros DNS debe ser un número.';
-$wb['limit_dns_slave_zone_error_notint'] = 'El límite de zonas DNS esclavas debe ser un número.';
+$wb['limit_dns_slave_zone_error_notint'] = 'El límite de zonas DNS secundarias debe ser un número.';
 $wb['limit_dns_record_error_notint'] = 'El límite de registros DNS debe ser un número.';
+$wb['default_dbserver_txt'] = 'Servidor de bases de datos por defecto';
 $wb['limit_database_error_notint'] = 'El límite de bases de datos debe ser un número.';
 $wb['error_template_name_empty'] = 'Por favor, introduzca un nombre de plantilla';
 $wb['limit_cron_txt'] = 'Número máximo de tareas cron';
@@ -59,35 +64,35 @@
 $wb['limit_trafficquota_error_notint'] = 'Cuota de Tráfico debe ser un número.';
 $wb['template_del_aborted_txt'] = 'Eliminación abortada. Hay un cliente que tiene esta plantilla seleccionada.';
 $wb['limit_webdav_user_txt'] = 'Número máximo de usuarios Webdav';
-$wb['limit_webdav_user_error_notint'] = 'La lista de correo límite de registro debe ser un número.';
-$wb['limit_backup_txt'] = 'Backupfunction available';
-$wb['limit_mailmailinglist_txt'] = 'Max. número de listas de correo';
-$wb['limit_mailmailinglist_error_notint'] = 'The mailing list record limit must be a number.';
+$wb['limit_webdav_user_error_notint'] = 'El límite de usuarios Webdav debe ser un número.';
+$wb['limit_backup_txt'] = 'Copias de seguridad disponibles';
+$wb['limit_mailmailinglist_txt'] = 'Número maximo de listas de correo';
+$wb['limit_mailmailinglist_error_notint'] = 'El límite de listas de correo debe ser un número.';
 $wb['limit_openvz_vm_txt'] = 'Max. número de servidores virtuales';
-$wb['limit_openvz_vm_template_id_txt'] = 'Fuerza plantilla de servidor virtual';
-$wb['limit_openvz_vm_error_notint'] = 'El límite del servidor virtual debe ser un número.';
+$wb['limit_openvz_vm_template_id_txt'] = 'Restringir plantilla de servidor virtual';
+$wb['limit_openvz_vm_error_notint'] = 'El límite de servidores virtuales debe ser un número.';
 $wb['ssh_chroot_txt'] = 'Opciones SSH-Chroot';
 $wb['web_php_options_txt'] = 'Opciones de PHP';
 $wb['template_type_txt'] = 'Tipo de Plantilla';
 $wb['template_name_txt'] = 'Nombre de plantilla';
-$wb['limit_cgi_txt'] = 'CGI available';
-$wb['limit_ssi_txt'] = 'SSI available';
-$wb['limit_perl_txt'] = 'Perl available';
-$wb['limit_ruby_txt'] = 'Ruby available';
-$wb['limit_python_txt'] = 'Python available';
-$wb['force_suexec_txt'] = 'SuEXEC forced';
-$wb['limit_hterror_txt'] = 'Custom error docs available';
-$wb['limit_wildcard_txt'] = 'Wildcard subdomain available';
-$wb['limit_ssl_txt'] = 'SSL available';
-$wb['web_limits_txt'] = 'Web Limits';
-$wb['email_limits_txt'] = 'Email Limits';
-$wb['database_limits_txt'] = 'Database Limits';
-$wb['cron_job_limits_txt'] = 'Cron Job Limits';
-$wb['dns_limits_txt'] = 'DNS Limits';
-$wb['virtualization_limits_txt'] = 'Virtualization Limits';
-$wb['aps_limits_txt'] = 'APS Installer Limits';
-$wb['limit_aps_txt'] = 'Max. number of APS instances';
-$wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
-$wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
-$wb['client_limits_txt'] = 'Client Limits';
+$wb['limit_cgi_txt'] = 'CGI disponible';
+$wb['limit_ssi_txt'] = 'SSI disponible';
+$wb['limit_perl_txt'] = 'Perl disponible';
+$wb['limit_ruby_txt'] = 'Ruby disponible';
+$wb['limit_python_txt'] = 'Python disponible';
+$wb['force_suexec_txt'] = 'SuEXEC obligatorio';
+$wb['limit_hterror_txt'] = 'Archivos de error personalizados disponibles';
+$wb['limit_wildcard_txt'] = 'Subdominio comodín disponible';
+$wb['limit_ssl_txt'] = 'SSL disponible';
+$wb['web_limits_txt'] = 'Límites de Web';
+$wb['email_limits_txt'] = 'Límites de Correo';
+$wb['database_limits_txt'] = 'Límites de Bases de Datos';
+$wb['cron_job_limits_txt'] = 'Límites de Tareas Cron';
+$wb['dns_limits_txt'] = 'Límites de DNS';
+$wb['virtualization_limits_txt'] = 'Límites de Virtualización';
+$wb['aps_limits_txt'] = 'Límites de Instaladores APS';
+$wb['limit_aps_txt'] = 'Número máximo de instancias APS';
+$wb['limit_aps_error_notint'] = 'El límite de instancias APS debe ser un número.';
+$wb['limit_domainmodule_txt'] = 'Número máximo de dominios';
+$wb['client_limits_txt'] = 'Límites de Clientes';
 ?>
diff --git a/interface/web/client/lib/lang/es_client_template_list.lng b/interface/web/client/lib/lang/es_client_template_list.lng
index 66aefc7..fcbc9da 100644
--- a/interface/web/client/lib/lang/es_client_template_list.lng
+++ b/interface/web/client/lib/lang/es_client_template_list.lng
@@ -2,5 +2,5 @@
 $wb['list_head_txt'] = 'Plantillas de clientes';
 $wb['template_type_txt'] = 'Tipo';
 $wb['template_name_txt'] = 'Nombre';
-$wb['template_id_txt'] = 'Template ID';
+$wb['template_id_txt'] = 'ID de plantilla';
 ?>
diff --git a/interface/web/client/lib/lang/es_clients_list.lng b/interface/web/client/lib/lang/es_clients_list.lng
index ea8eff1..18ff25e 100644
--- a/interface/web/client/lib/lang/es_clients_list.lng
+++ b/interface/web/client/lib/lang/es_clients_list.lng
@@ -7,5 +7,5 @@
 $wb['country_txt'] = 'País';
 $wb['add_new_record_txt'] = 'Añadir un nuevo cliente';
 $wb['username_txt'] = 'Nombre de usuario';
-$wb['customer_no_txt'] = 'Customer No.';
+$wb['customer_no_txt'] = 'Nº de Cliente';
 ?>
diff --git a/interface/web/client/lib/lang/es_domain.lng b/interface/web/client/lib/lang/es_domain.lng
index a66a225..218b6fd 100644
--- a/interface/web/client/lib/lang/es_domain.lng
+++ b/interface/web/client/lib/lang/es_domain.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['domain_error_empty'] = 'The domain-name is empty';
-$wb['domain_error_unique'] = 'The domain already exists';
-$wb['domain_error_regex'] = 'This domain-name is not allowed';
-$wb['Domain'] = 'Domain';
+$wb['domain_error_empty'] = 'El nombre de dominio está vacío';
+$wb['domain_error_unique'] = 'El dominio ya existe';
+$wb['domain_error_regex'] = 'Este nombre de domino no está permitido';
+$wb['Domain'] = 'Dominio';
 ?>
diff --git a/interface/web/client/lib/lang/es_domain_list.lng b/interface/web/client/lib/lang/es_domain_list.lng
index d2262b6..27c6adc 100644
--- a/interface/web/client/lib/lang/es_domain_list.lng
+++ b/interface/web/client/lib/lang/es_domain_list.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['list_head_txt'] = 'Domains';
-$wb['add_new_record_txt'] = 'Add new Domain';
-$wb['domain_txt'] = 'Domain';
-$wb['user_txt'] = 'Client';
+$wb['list_head_txt'] = 'Dominios';
+$wb['add_new_record_txt'] = 'Añadir nuevo dominio';
+$wb['domain_txt'] = 'Dominio';
+$wb['user_txt'] = 'Cliente';
 ?>
diff --git a/interface/web/client/lib/lang/es_reseller.lng b/interface/web/client/lib/lang/es_reseller.lng
index 5c38086..086f385 100644
--- a/interface/web/client/lib/lang/es_reseller.lng
+++ b/interface/web/client/lib/lang/es_reseller.lng
@@ -9,12 +9,13 @@
 $wb['limit_mailrouting_txt'] = 'Número máximo de enrutadores de correo';
 $wb['limit_mailfilter_txt'] = 'Número máximo de filtros de correo';
 $wb['limit_fetchmail_txt'] = 'Número máximo de cuentas Fetchmail';
-$wb['limit_mailquota_txt'] = 'Cuota del buzón de correo';
+$wb['limit_mailquota_txt'] = 'Cuota de correo';
 $wb['limit_spamfilter_wblist_txt'] = 'Número máximo de filtros de listas blancas y negras de spam';
 $wb['limit_spamfilter_user_txt'] = 'Número máximo de usuarios de filtros de spam';
 $wb['limit_spamfilter_policy_txt'] = 'Número máximo de políticas de filtro de spam';
 $wb['default_mailserver_txt'] = 'Servidor de correo por defecto';
 $wb['company_name_txt'] = 'Nombre de la empresa';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Nombre de contacto';
 $wb['username_txt'] = 'Usuario';
 $wb['password_txt'] = 'Contraseña';
@@ -24,10 +25,10 @@
 $wb['street_txt'] = 'Calle';
 $wb['zip_txt'] = 'Código Postal';
 $wb['city_txt'] = 'Localidad';
-$wb['state_txt'] = 'Estado o provincia';
+$wb['state_txt'] = 'Estado o Provincia';
 $wb['country_txt'] = 'País';
 $wb['telephone_txt'] = 'Teléfono fijo';
-$wb['mobile_txt'] = 'Móvil o celular';
+$wb['mobile_txt'] = 'Móvil';
 $wb['fax_txt'] = 'Fax';
 $wb['email_txt'] = 'Correo';
 $wb['internet_txt'] = 'Internet';
@@ -36,21 +37,21 @@
 $wb['title_txt'] = 'Título';
 $wb['firstname_txt'] = 'Nombre';
 $wb['surname_txt'] = 'Apellidos';
-$wb['limit_domain_txt'] = 'limit_domain';
-$wb['limit_subdomain_txt'] = 'limit_subdomain';
-$wb['limit_webquota_txt'] = 'limit_webquota';
+$wb['limit_domain_txt'] = 'Número máximo de dominios ';
+$wb['limit_subdomain_txt'] = 'Número máximo de subdominios';
+$wb['limit_webquota_txt'] = 'Cuota de web';
 $wb['limit_database_txt'] = 'Número máximo de bases de datos';
 $wb['limit_cron_txt'] = 'Número máximo de tareas cron';
 $wb['limit_cron_type_txt'] = 'Tipo máximo de tareas cron (chrooted y full implican URL)';
 $wb['limit_cron_frequency_txt'] = 'Espera mínima entre ejecuciones';
-$wb['ip_address_txt'] = 'ip_address';
+$wb['ip_address_txt'] = 'Dirección IP';
 $wb['limit_client_error_notint'] = 'El límite de subclientes debe ser un número.';
 $wb['firstname_error_empty'] = 'El nombre está vacío';
 $wb['contact_error_empty'] = 'El nombre de contacto está vacío';
 $wb['default_webserver_txt'] = 'Servidor web por defecto';
-$wb['limit_web_domain_txt'] = 'Número máximo de dominios';
+$wb['limit_web_domain_txt'] = 'Número máximo de sitios web';
 $wb['limit_web_aliasdomain_txt'] = 'Número máximo de alias de dominios';
-$wb['limit_web_subdomain_txt'] = 'Número máximo de subdominios';
+$wb['limit_web_subdomain_txt'] = 'Número máximo de subdominios web';
 $wb['limit_ftp_user_txt'] = 'Número máximo de usuarios FTP';
 $wb['default_dnsserver_txt'] = 'Servidor DNS por defecto';
 $wb['limit_dns_zone_txt'] = 'Número máximo de zonas DNS';
@@ -69,7 +70,7 @@
 $wb['limit_mailfilter_error_notint'] = 'El límite de filtros de correo debe ser un número';
 $wb['limit_mailfetchmail_error_notint'] = 'El límite de cuentas Fetchmail debe ser un número';
 $wb['limit_mailquota_error_notint'] = 'El límite de cuota de correo debe ser un número';
-$wb['limit_spamfilter_wblist_error_notint'] = 'El límite de filtros de spam debe ser un número';
+$wb['limit_spamfilter_wblist_error_notint'] = 'El límite de filtros de listas blancas y negras de spam debe ser un número';
 $wb['limit_spamfilter_user_error_notint'] = 'El límite de usuarios de filtros de spam debe ser un número';
 $wb['limit_spamfilter_policy_error_notint'] = 'El límite de políticas de spam debe ser un número';
 $wb['limit_web_domain_error_notint'] = 'El límite de sitios web debe ser un número';
@@ -78,8 +79,8 @@
 $wb['limit_ftp_user_error_notint'] = 'El límite de usuarios FTP debe ser un número';
 $wb['limit_shell_user_error_notint'] = 'El límite de usuarios de consola debe ser un número';
 $wb['limit_dns_zone_error_notint'] = 'El límite de zonas DNS debe ser un número';
-$wb['limit_dns_slave_zone_error_notint'] = 'The dns slave zone limit must be a number.';
-$wb['limit_dns_record_error_notint'] = 'El límite de registros dns debe ser un número';
+$wb['limit_dns_slave_zone_error_notint'] = 'El límite de zonas DNS secundarias debe ser un número';
+$wb['limit_dns_record_error_notint'] = 'El límite de registros DNS debe ser un número';
 $wb['default_dbserver_txt'] = 'Servidor de bases de datos por defecto';
 $wb['limit_database_error_notint'] = 'El límite de bases de datos debe ser un número';
 $wb['limit_cron_error_notint'] = 'El límite de tareas cron debe ser un número.';
@@ -90,73 +91,73 @@
 $wb['ssh_chroot_txt'] = 'Opciones SSH-Chroot';
 $wb['web_php_options_txt'] = 'Opciones PHP';
 $wb['limit_client_error'] = 'Se ha alcanzado el número máximo de clientes.';
-$wb['limit_client_error_positive'] = 'El número de clientes debe ser > 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'El límite de clientes debe ser mayor que cero o -1 (ilimitado)';
 $wb['limit_web_quota_txt'] = 'Cuota Web';
 $wb['limit_traffic_quota_txt'] = 'Cuota de Tráfico';
-$wb['limit_trafficquota_error_notint'] = 'Cuota Tráfico debe ser un número.';
+$wb['limit_trafficquota_error_notint'] = 'Cuota de Tráfico debe ser un número.';
 $wb['customer_no_txt'] = 'Número Cliente';
-$wb['vat_id_txt'] = 'VAT ID';
+$wb['vat_id_txt'] = 'ID de IVA';
 $wb['required_fields_txt'] = '* Campos Requeridos';
 $wb['limit_webdav_user_txt'] = 'Numero máximo de usuarios Webdav';
 $wb['limit_webdav_user_error_notint'] = 'El límite de usuarios Webdav debe ser un número.';
-$wb['limit_backup_txt'] = 'Backupfunction available';
-$wb['company_txt'] = 'Compañia';
-$wb['limit_mailmailinglist_error_notint'] = 'La lista de correo límite de registro debe ser un número.';
+$wb['limit_backup_txt'] = 'Copias de seguridad disponibles';
+$wb['company_txt'] = 'Empresa';
+$wb['limit_mailmailinglist_error_notint'] = 'El límite de listas de correo debe ser un número.';
 $wb['limit_openvz_vm_txt'] = 'Max. número de servidores virtuales';
-$wb['limit_openvz_vm_template_id_txt'] = 'Fuerza plantilla de servidor virtual';
-$wb['limit_openvz_vm_error_notint'] = 'El límite del servidor virtual debe ser un número.';
-$wb['web_php_options_notempty'] = 'No hay opción de PHP (s) seleccionado. Seleccione al menos una opción de PHP.';
-$wb['ssh_chroot_notempty'] = 'No hay opción chroot SSH seleccionado. Seleccione al menos una opción SSH.';
+$wb['limit_openvz_vm_template_id_txt'] = 'Restringir plantilla de servidor virtual';
+$wb['limit_openvz_vm_error_notint'] = 'El límite de servidores virtuales debe ser un número.';
+$wb['web_php_options_notempty'] = 'No hay opciones de PHP seleccionadas. Seleccione al menos una opción de PHP.';
+$wb['ssh_chroot_notempty'] = 'No hay opción chroot SSH seleccionada. Seleccione al menos una opción SSH.';
 $wb['username_error_collision'] = 'El nombre de usuario no puede comenzar con la palabra -web- o -web- seguida de un número.';
-$wb['add_additional_template_txt'] = 'Add additional template';
-$wb['delete_additional_template_txt'] = 'Delete additional template';
-$wb['limit_cgi_txt'] = 'CGI available';
-$wb['limit_ssi_txt'] = 'SSI available';
-$wb['limit_perl_txt'] = 'Perl available';
-$wb['limit_ruby_txt'] = 'Ruby available';
-$wb['limit_python_txt'] = 'Python available';
-$wb['force_suexec_txt'] = 'SuEXEC forced';
-$wb['limit_hterror_txt'] = 'Custom error docs available';
-$wb['limit_wildcard_txt'] = 'Wildcard subdomain available';
-$wb['limit_ssl_txt'] = 'SSL available';
-$wb['web_limits_txt'] = 'Web Limits';
-$wb['email_limits_txt'] = 'Email Limits';
-$wb['database_limits_txt'] = 'Database Limits';
-$wb['cron_job_limits_txt'] = 'Cron Job Limits';
-$wb['dns_limits_txt'] = 'DNS Limits';
-$wb['virtualization_limits_txt'] = 'Virtualization Limits';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['email_error_isemail'] = 'Please enter a valid email address.';
-$wb['customer_no_error_unique'] = 'The customer no. must be unique (or empty).';
-$wb['paypal_email_error_isemail'] = 'Please enter a valid PayPal email address.';
-$wb['paypal_email_txt'] = 'PayPal Email';
-$wb['company_id_txt'] = 'Company/Entrepreneur ID';
-$wb['bank_account_number_txt'] = 'Bank account no.';
-$wb['bank_account_owner_txt'] = 'Bank account owner';
-$wb['bank_code_txt'] = 'Bank code';
-$wb['bank_name_txt'] = 'Bank name';
+$wb['add_additional_template_txt'] = 'Añadir plantilla adicional';
+$wb['delete_additional_template_txt'] = 'Elimintar plantilla adicional';
+$wb['limit_cgi_txt'] = 'CGI disponible';
+$wb['limit_ssi_txt'] = 'SSI disponible';
+$wb['limit_perl_txt'] = 'Perl disponible';
+$wb['limit_ruby_txt'] = 'Ruby disponible';
+$wb['limit_python_txt'] = 'Python disponible';
+$wb['force_suexec_txt'] = 'SuEXEC obligatorio';
+$wb['limit_hterror_txt'] = 'Archivos de error personalizados disponibles';
+$wb['limit_wildcard_txt'] = 'Subdominio comodín disponible';
+$wb['limit_ssl_txt'] = 'SSL disponible';
+$wb['web_limits_txt'] = 'Límites de Web';
+$wb['email_limits_txt'] = 'Límites de Correo';
+$wb['database_limits_txt'] = 'Límites de Bases de Datos';
+$wb['cron_job_limits_txt'] = 'Límites de Tareas Cron';
+$wb['dns_limits_txt'] = 'Límites de DNS';
+$wb['virtualization_limits_txt'] = 'Límites de Virtualización';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
+$wb['email_error_isemail'] = 'Por favor introduce una dirección de correo válida.';
+$wb['customer_no_error_unique'] = 'El número de cliente debe ser único (o vacío).';
+$wb['paypal_email_error_isemail'] = 'Por favor introduce una dirección de correo válida como cuenta de Paypal.';
+$wb['paypal_email_txt'] = 'Cuenta de PayPal';
+$wb['company_id_txt'] = 'ID de Empresa';
+$wb['bank_account_number_txt'] = 'Número de Cuenta Bancaria';
+$wb['bank_account_owner_txt'] = 'Propietario de Cuenta Bancaria';
+$wb['bank_code_txt'] = 'Código de Banco';
+$wb['bank_name_txt'] = 'Nombre de Banco';
 $wb['bank_account_iban_txt'] = 'IBAN';
 $wb['bank_account_swift_txt'] = 'BIC / Swift';
-$wb['aps_limits_txt'] = 'APS Installer Limits';
-$wb['limit_aps_txt'] = 'Max. number of APS instances';
-$wb['limit_aps_error_notint'] = 'The APS instances limit must be a number.';
-$wb['default_slave_dnsserver_txt'] = 'Default Secondary DNS Server';
-$wb['locked_txt'] = 'Locked';
-$wb['canceled_txt'] = 'Canceled';
-$wb['gender_m_txt'] = 'Mr.';
-$wb['gender_f_txt'] = 'Ms.';
-$wb['gender_txt'] = 'Title';
-$wb['customer_no_template_txt'] = 'Customer No. template';
-$wb['customer_no_template_error_regex_txt'] = 'The customer No. template contains invalid characters';
-$wb['customer_no_start_txt'] = 'Customer No. start value';
-$wb['customer_no_counter_txt'] = 'Customer No. counter';
-$wb['added_by_txt'] = 'Added by';
-$wb['added_date_txt'] = 'Added date';
-$wb['limit_domainmodule_error_notint'] = 'Domainmodule limit must be a number.';
-$wb['limit_domainmodule_txt'] = 'Domainmodule Limit';
-$wb['client_limits_txt'] = 'Client Limits';
-$wb['err_msg_master_tpl_set'] = 'All custom limit settings are ignored if any master template other than \\"custom\\" is selected.';
+$wb['aps_limits_txt'] = 'Límites de Instaladores APS';
+$wb['limit_aps_txt'] = 'Número máximo de instancias APS';
+$wb['limit_aps_error_notint'] = 'El límite de instancias APS debe ser un número.';
+$wb['default_slave_dnsserver_txt'] = 'Servidor DNS secundario por defecto';
+$wb['locked_txt'] = 'Bloqueado';
+$wb['canceled_txt'] = 'Cancelado';
+$wb['gender_m_txt'] = 'Sr.';
+$wb['gender_f_txt'] = 'Sra.';
+$wb['gender_txt'] = 'Título';
+$wb['customer_no_template_txt'] = 'Plantilla de número de cliente';
+$wb['customer_no_template_error_regex_txt'] = 'La plantilla de número de cliente contiene caracteres no válidos';
+$wb['customer_no_start_txt'] = 'Valor inicial de número de cliente';
+$wb['customer_no_counter_txt'] = 'Contador de número de cliente';
+$wb['added_by_txt'] = 'Creado por';
+$wb['added_date_txt'] = 'Fecha de alta';
+$wb['limit_domainmodule_error_notint'] = 'El límite de dominios debe ser un número';
+$wb['limit_domainmodule_txt'] = 'Número máximo de dominios';
+$wb['client_limits_txt'] = 'Límites de Clientes';
+$wb['err_msg_master_tpl_set'] = 'Todas los límites personalizados se ignoran si se selecciona una plantilla principal distinta de \"custom\".';
 ?>
diff --git a/interface/web/client/lib/lang/es_resellers_list.lng b/interface/web/client/lib/lang/es_resellers_list.lng
index 0bcf446..610b8ef 100644
--- a/interface/web/client/lib/lang/es_resellers_list.lng
+++ b/interface/web/client/lib/lang/es_resellers_list.lng
@@ -1,11 +1,11 @@
 <?php
 $wb['list_head_txt'] = 'Revendedores';
 $wb['client_id_txt'] = 'ID';
-$wb['company_name_txt'] = 'Nombre de la empresa';
+$wb['company_name_txt'] = 'Nombre de empresa';
 $wb['contact_name_txt'] = 'Nombre de contacto';
 $wb['city_txt'] = 'Localidad';
 $wb['country_txt'] = 'País';
 $wb['add_new_record_txt'] = 'Añadir un nuevo revendedor';
-$wb['customer_no_txt'] = 'Customer No.';
-$wb['username_txt'] = 'Username';
+$wb['customer_no_txt'] = 'Número de Cliente';
+$wb['username_txt'] = 'Usuario';
 ?>
diff --git a/interface/web/client/lib/lang/fi_client.lng b/interface/web/client/lib/lang/fi_client.lng
index f4b5dfa..ca2544f 100755
--- a/interface/web/client/lib/lang/fi_client.lng
+++ b/interface/web/client/lib/lang/fi_client.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Roskapostisuodattimen kohtelutapojen määrä';
 $wb['default_mailserver_txt'] = 'Oletuspostipalvelin';
 $wb['company_name_txt'] = 'Yrityksen nimi';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Yhteyshekilö';
 $wb['username_txt'] = 'Käyttäjätunnus';
 $wb['password_txt'] = 'Salasana';
diff --git a/interface/web/client/lib/lang/fi_reseller.lng b/interface/web/client/lib/lang/fi_reseller.lng
index fb5d968..fb50513 100644
--- a/interface/web/client/lib/lang/fi_reseller.lng
+++ b/interface/web/client/lib/lang/fi_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Roskapostin kohtelutapojen enimmäismäärä';
 $wb['default_mailserver_txt'] = 'Oletuspostipalvelin';
 $wb['company_name_txt'] = 'Yrityksen nimi';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Yhteyshenkilö';
 $wb['username_txt'] = 'Käyttäjätunnus';
 $wb['password_txt'] = 'Salasana';
@@ -88,7 +89,7 @@
 $wb['ssh_chroot_txt'] = 'SSH-Chroot-valinnat';
 $wb['web_php_options_txt'] = 'PHP-valinnat';
 $wb['limit_client_error'] = 'Asiakkaiden enimmäismäärä on käytössä.';
-$wb['limit_client_error_positive'] = 'Asiakkaiden määrän pitää olla nollaa suurempi';
+$wb['limit_client_error_positive_or_unlimited'] = 'Asiakkaiden määrän pitää olla nollaa suurempi';
 $wb['limit_web_quota_txt'] = 'WWW-levytila';
 $wb['limit_traffic_quota_txt'] = 'Liikenneraja';
 $wb['limit_trafficquota_error_notint'] = 'Liikennerajan pitää olla numeerinen.';
diff --git a/interface/web/client/lib/lang/fr_client.lng b/interface/web/client/lib/lang/fr_client.lng
index ffb062d..4366fa1 100644
--- a/interface/web/client/lib/lang/fr_client.lng
+++ b/interface/web/client/lib/lang/fr_client.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Nombre maximal de règles du filtre antispam';
 $wb['default_mailserver_txt'] = 'Serveur mail par défaut';
 $wb['company_name_txt'] = 'Nom de l\'entreprise';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Nom de contact';
 $wb['username_txt'] = 'Nom d\'utilisateur';
 $wb['password_txt'] = 'Mot de passe';
diff --git a/interface/web/client/lib/lang/fr_reseller.lng b/interface/web/client/lib/lang/fr_reseller.lng
index ac42cb8..0447db7 100644
--- a/interface/web/client/lib/lang/fr_reseller.lng
+++ b/interface/web/client/lib/lang/fr_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Nombre maximal de règles du filtre antispam';
 $wb['default_mailserver_txt'] = 'Serveur mail par défaut';
 $wb['company_name_txt'] = 'Nom de l\'entreprise';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Nom de contact';
 $wb['username_txt'] = 'Nom d\'utilisateur';
 $wb['password_txt'] = 'Mot de passe';
@@ -86,7 +87,7 @@
 $wb['ssh_chroot_txt'] = 'Options Chroot SSH';
 $wb['web_php_options_txt'] = 'Options PHP';
 $wb['limit_client_error'] = 'Le nombre maximum de client a été atteint.';
-$wb['limit_client_error_positive'] = 'Le nombre de clients doit être plus grand que 0.';
+$wb['limit_client_error_positive_or_unlimited'] = 'Le nombre de clients doit être plus grand que 0.';
 $wb['limit_dns_slave_zone_txt'] = 'Nombre maximum de zones DNS secondaire';
 $wb['limit_dns_slave_zone_error_notint'] = 'La limite de zones DNS secondaire doit être un nombre';
 $wb['limit_dns_record_error_notint'] = 'Le nombre maximum d\'enregistrements DNS doit être un nombre.';
diff --git a/interface/web/client/lib/lang/hr_client.lng b/interface/web/client/lib/lang/hr_client.lng
index 66357a5..bcf3f20 100644
--- a/interface/web/client/lib/lang/hr_client.lng
+++ b/interface/web/client/lib/lang/hr_client.lng
@@ -14,6 +14,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Maksimalan broj spamfilter pravila';
 $wb['default_mailserver_txt'] = 'Izaberi email server';
 $wb['company_name_txt'] = 'Poduzeće';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Kontakt osoba';
 $wb['username_txt'] = 'Korisničko ime';
 $wb['password_txt'] = 'Šifra';
diff --git a/interface/web/client/lib/lang/hr_reseller.lng b/interface/web/client/lib/lang/hr_reseller.lng
index 277f34a..b282b34 100644
--- a/interface/web/client/lib/lang/hr_reseller.lng
+++ b/interface/web/client/lib/lang/hr_reseller.lng
@@ -14,6 +14,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Maksimalan broj spamfilter pravila';
 $wb['default_mailserver_txt'] = 'Izaberi email server';
 $wb['company_name_txt'] = 'Poduzeće';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Kontakt osoba';
 $wb['username_txt'] = 'Korisničko ime';
 $wb['password_txt'] = 'Šifra';
@@ -93,7 +94,7 @@
 $wb['ssh_chroot_txt'] = 'SSH-Chroot opcije';
 $wb['web_php_options_txt'] = 'PHP opcije';
 $wb['limit_client_error'] = 'Maksimalan broj klijenata!';
-$wb['limit_client_error_positive'] = 'Broj klijenata mora biti veći od 0.';
+$wb['limit_client_error_positive_or_unlimited'] = 'Broj klijenata mora biti veći od 0.';
 $wb['limit_web_quota_txt'] = 'Diskovni prostor';
 $wb['limit_traffic_quota_txt'] = 'Maksimalni promet';
 $wb['limit_trafficquota_error_notint'] = 'Maksimalni promet mora biti znamenka.';
diff --git a/interface/web/client/lib/lang/hu_client.lng b/interface/web/client/lib/lang/hu_client.lng
index 91017a7..bab1c67 100644
--- a/interface/web/client/lib/lang/hu_client.lng
+++ b/interface/web/client/lib/lang/hu_client.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies';
 $wb['default_mailserver_txt'] = 'Alap levelező szerver';
 $wb['company_name_txt'] = 'Cégnév';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Kapcsolattartó';
 $wb['username_txt'] = 'Felhasználónév';
 $wb['password_txt'] = 'Jelszó';
diff --git a/interface/web/client/lib/lang/hu_reseller.lng b/interface/web/client/lib/lang/hu_reseller.lng
index f9c61a7..03089e0 100644
--- a/interface/web/client/lib/lang/hu_reseller.lng
+++ b/interface/web/client/lib/lang/hu_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies';
 $wb['default_mailserver_txt'] = 'Default Mailserver';
 $wb['company_name_txt'] = 'Cégnév';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Kapcsolattartó';
 $wb['username_txt'] = 'Felhasználónév';
 $wb['password_txt'] = 'Jelszó';
@@ -89,7 +90,7 @@
 $wb['ssh_chroot_txt'] = 'SSH-Chroot Options';
 $wb['web_php_options_txt'] = 'PHP Options';
 $wb['limit_client_error'] = 'The max. number of clients is reached.';
-$wb['limit_client_error_positive'] = 'The number of clients must be > 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0';
 $wb['limit_web_quota_txt'] = 'Web Quota';
 $wb['limit_traffic_quota_txt'] = 'Traffic Quota';
 $wb['limit_trafficquota_error_notint'] = 'Traffic Quota must be a number.';
diff --git a/interface/web/client/lib/lang/id_client.lng b/interface/web/client/lib/lang/id_client.lng
index a72da01..4c76c1c 100644
--- a/interface/web/client/lib/lang/id_client.lng
+++ b/interface/web/client/lib/lang/id_client.lng
@@ -14,6 +14,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Jumlah maks kebijakan spamfilter';
 $wb['default_mailserver_txt'] = 'Server Mail Default';
 $wb['company_name_txt'] = 'Nama Perusahaan';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Nama Kontak';
 $wb['username_txt'] = 'Nama Pengguna';
 $wb['password_txt'] = 'Kata Sandi';
diff --git a/interface/web/client/lib/lang/id_reseller.lng b/interface/web/client/lib/lang/id_reseller.lng
index 334212a..e06cb4b 100644
--- a/interface/web/client/lib/lang/id_reseller.lng
+++ b/interface/web/client/lib/lang/id_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Jumlah maks kebijakan spamfilter';
 $wb['default_mailserver_txt'] = 'Server Mail Default';
 $wb['company_name_txt'] = 'Nama Perusahaan';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Nama Kontak';
 $wb['username_txt'] = 'Nama Pengguna';
 $wb['password_txt'] = 'Kata Sandi';
@@ -86,7 +87,7 @@
 $wb['ssh_chroot_txt'] = 'Opsi SSH-Chroot';
 $wb['web_php_options_txt'] = 'Opsi PHP';
 $wb['limit_client_error'] = 'Jumlah maks klien telah tercapai.';
-$wb['limit_client_error_positive'] = 'Jumlah klien harus > 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'Jumlah klien harus > 0';
 $wb['limit_web_quota_txt'] = 'Kuota Web';
 $wb['limit_traffic_quota_txt'] = 'Kuota Trafik';
 $wb['limit_trafficquota_error_notint'] = 'Kuota Trafik harus berupa angka.';
diff --git a/interface/web/client/lib/lang/it_client.lng b/interface/web/client/lib/lang/it_client.lng
index 4015170..ddb725e 100644
--- a/interface/web/client/lib/lang/it_client.lng
+++ b/interface/web/client/lib/lang/it_client.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Numero massimo di spamfilter policys';
 $wb['default_mailserver_txt'] = 'Mailserver predefinito';
 $wb['company_name_txt'] = 'Nome Azienda';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Nome contatto';
 $wb['username_txt'] = 'Nome utente';
 $wb['password_txt'] = 'Password';
diff --git a/interface/web/client/lib/lang/it_reseller.lng b/interface/web/client/lib/lang/it_reseller.lng
index 5269311..bfac98c 100644
--- a/interface/web/client/lib/lang/it_reseller.lng
+++ b/interface/web/client/lib/lang/it_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies';
 $wb['default_mailserver_txt'] = 'Default Mailserver';
 $wb['company_name_txt'] = 'Company name';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Contact name';
 $wb['username_txt'] = 'Username';
 $wb['password_txt'] = 'Password';
@@ -89,7 +90,7 @@
 $wb['ssh_chroot_txt'] = 'SSH-Chroot Options';
 $wb['web_php_options_txt'] = 'PHP Options';
 $wb['limit_client_error'] = 'The max. number of clients is reached.';
-$wb['limit_client_error_positive'] = 'The number of clients must be > 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0';
 $wb['limit_web_quota_txt'] = 'Web Quota';
 $wb['limit_traffic_quota_txt'] = 'Traffic Quota';
 $wb['limit_trafficquota_error_notint'] = 'Traffic Quota must be a number.';
diff --git a/interface/web/client/lib/lang/ja_client.lng b/interface/web/client/lib/lang/ja_client.lng
index 8189572..f2401e9 100644
--- a/interface/web/client/lib/lang/ja_client.lng
+++ b/interface/web/client/lib/lang/ja_client.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = '迷惑メールフィルタのポリシーの最大数';
 $wb['default_mailserver_txt'] = 'デフォルトのメールサーバー';
 $wb['company_name_txt'] = '社名';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = '担当者名';
 $wb['username_txt'] = 'ユーザー名';
 $wb['password_txt'] = 'パスワード';
diff --git a/interface/web/client/lib/lang/ja_reseller.lng b/interface/web/client/lib/lang/ja_reseller.lng
index b089126..54ab7d4 100644
--- a/interface/web/client/lib/lang/ja_reseller.lng
+++ b/interface/web/client/lib/lang/ja_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'スパムフィルターポリシーの最大数';
 $wb['default_mailserver_txt'] = 'デフォルトのメールサーバー';
 $wb['company_name_txt'] = '社名';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = '担当者名';
 $wb['username_txt'] = 'ユーザー名';
 $wb['password_txt'] = 'パスワード';
@@ -89,7 +90,7 @@
 $wb['ssh_chroot_txt'] = 'SSH-Chrootオプション';
 $wb['web_php_options_txt'] = 'PHPオプション';
 $wb['limit_client_error'] = 'クライアントの最大数に達しました。';
-$wb['limit_client_error_positive'] = 'クライアント数は1以上で指定してください。';
+$wb['limit_client_error_positive_or_unlimited'] = 'クライアント数は1以上で指定してください。';
 $wb['limit_web_quota_txt'] = 'Web Quota';
 $wb['limit_traffic_quota_txt'] = 'Traffic Quota';
 $wb['limit_trafficquota_error_notint'] = 'Traffic Quota must be a number.';
diff --git a/interface/web/client/lib/lang/nl_client.lng b/interface/web/client/lib/lang/nl_client.lng
index 899a1f6..320afce 100644
--- a/interface/web/client/lib/lang/nl_client.lng
+++ b/interface/web/client/lib/lang/nl_client.lng
@@ -14,6 +14,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. aantal spamfilter policys';
 $wb['default_mailserver_txt'] = 'Standaard mailserver';
 $wb['company_name_txt'] = 'Bedrijfsnaam';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Contactpersoon';
 $wb['username_txt'] = 'Gebruikersnaam';
 $wb['password_txt'] = 'Wachtwoord';
diff --git a/interface/web/client/lib/lang/nl_reseller.lng b/interface/web/client/lib/lang/nl_reseller.lng
index 3a74771..5dffa20 100644
--- a/interface/web/client/lib/lang/nl_reseller.lng
+++ b/interface/web/client/lib/lang/nl_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. aantal spamfilter policys';
 $wb['default_mailserver_txt'] = 'Standaard Mailserver';
 $wb['company_name_txt'] = 'Bedrijfsnaam';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Contactpersoon';
 $wb['username_txt'] = 'Gebruikersnaam';
 $wb['password_txt'] = 'Wachtwoord';
@@ -89,7 +90,7 @@
 $wb['ssh_chroot_txt'] = 'SSH-Chroot Opties';
 $wb['web_php_options_txt'] = 'PHP Opties';
 $wb['limit_client_error'] = 'Het max. aantal klanten is bereikt.';
-$wb['limit_client_error_positive'] = 'Het aantal klanten moet > 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'Het aantal klanten moet > 0';
 $wb['limit_web_quota_txt'] = 'Web Quota';
 $wb['limit_traffic_quota_txt'] = 'Traffic Quota';
 $wb['limit_trafficquota_error_notint'] = 'Traffic Quota moet een numerieke waarde zijn.';
diff --git a/interface/web/client/lib/lang/pl_client.lng b/interface/web/client/lib/lang/pl_client.lng
index d870081..3d0664c 100644
--- a/interface/web/client/lib/lang/pl_client.lng
+++ b/interface/web/client/lib/lang/pl_client.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Maksymalna ilość polityk filtrów spamu';
 $wb['default_mailserver_txt'] = 'Domyślny serwer e-mail';
 $wb['company_name_txt'] = 'Nazwa firmy';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Nazwa kontaktu';
 $wb['username_txt'] = 'Nazwa użytkownika';
 $wb['password_txt'] = 'Hasło';
diff --git a/interface/web/client/lib/lang/pl_reseller.lng b/interface/web/client/lib/lang/pl_reseller.lng
index 03c47d7..e8a6bc7 100644
--- a/interface/web/client/lib/lang/pl_reseller.lng
+++ b/interface/web/client/lib/lang/pl_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Maksymalna ilość polityk filtrów spamu';
 $wb['default_mailserver_txt'] = 'Domyślny serwer poczty';
 $wb['company_name_txt'] = 'Nazwa firmy';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Nazwa kontaktu';
 $wb['username_txt'] = 'Nazwa użytkownika';
 $wb['password_txt'] = 'Hasło';
@@ -89,7 +90,7 @@
 $wb['ssh_chroot_txt'] = 'Opcje roota SSH';
 $wb['web_php_options_txt'] = 'Opcje PHP';
 $wb['limit_client_error'] = 'Maksymalna ilość klientów została przekroczona.';
-$wb['limit_client_error_positive'] = 'Liczba klientów musi być > 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'Liczba klientów musi być > 0';
 $wb['limit_web_quota_txt'] = 'Limit przestrzeni';
 $wb['limit_traffic_quota_txt'] = 'Limit transferu';
 $wb['limit_trafficquota_error_notint'] = 'Limit transferu musi być liczbą';
diff --git a/interface/web/client/lib/lang/pt_client.lng b/interface/web/client/lib/lang/pt_client.lng
index 30e8571..d3f7969 100644
--- a/interface/web/client/lib/lang/pt_client.lng
+++ b/interface/web/client/lib/lang/pt_client.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Número máximo de políticas de filtros spam';
 $wb['default_mailserver_txt'] = 'Servidor de Correio Padrão';
 $wb['company_name_txt'] = 'Empresa';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Contato';
 $wb['username_txt'] = 'Nome de Utilizador ';
 $wb['password_txt'] = 'Senha';
diff --git a/interface/web/client/lib/lang/pt_reseller.lng b/interface/web/client/lib/lang/pt_reseller.lng
index 51a8bd8..dc3b476 100644
--- a/interface/web/client/lib/lang/pt_reseller.lng
+++ b/interface/web/client/lib/lang/pt_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Número máximo de políticas de spamfilter';
 $wb['default_mailserver_txt'] = 'Servidor de Correio Padrão';
 $wb['company_name_txt'] = 'Empresa';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Contato';
 $wb['username_txt'] = 'Utilizador ';
 $wb['password_txt'] = 'Senha';
@@ -89,7 +90,7 @@
 $wb['ssh_chroot_txt'] = 'Opções do Chroot-SSH';
 $wb['web_php_options_txt'] = 'Opções do PHP';
 $wb['limit_client_error'] = 'O número máximo de clientes foi atingido.';
-$wb['limit_client_error_positive'] = 'O número de clientes precisa ser > 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'O número de clientes precisa ser > 0';
 $wb['limit_web_quota_txt'] = 'Cota Web';
 $wb['limit_traffic_quota_txt'] = 'Cota de Tráfego';
 $wb['limit_trafficquota_error_notint'] = 'Traffic Quota must be a number.';
diff --git a/interface/web/client/lib/lang/ro_client.lng b/interface/web/client/lib/lang/ro_client.lng
index ec3138b..4d39bf2 100644
--- a/interface/web/client/lib/lang/ro_client.lng
+++ b/interface/web/client/lib/lang/ro_client.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Numar maxim de reguli filtre spam ';
 $wb['default_mailserver_txt'] = 'Default Mailserver';
 $wb['company_name_txt'] = 'Nume companie';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Nume Contact ';
 $wb['username_txt'] = 'Username';
 $wb['password_txt'] = 'Parola';
diff --git a/interface/web/client/lib/lang/ro_reseller.lng b/interface/web/client/lib/lang/ro_reseller.lng
index 5269311..bfac98c 100644
--- a/interface/web/client/lib/lang/ro_reseller.lng
+++ b/interface/web/client/lib/lang/ro_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies';
 $wb['default_mailserver_txt'] = 'Default Mailserver';
 $wb['company_name_txt'] = 'Company name';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Contact name';
 $wb['username_txt'] = 'Username';
 $wb['password_txt'] = 'Password';
@@ -89,7 +90,7 @@
 $wb['ssh_chroot_txt'] = 'SSH-Chroot Options';
 $wb['web_php_options_txt'] = 'PHP Options';
 $wb['limit_client_error'] = 'The max. number of clients is reached.';
-$wb['limit_client_error_positive'] = 'The number of clients must be > 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0';
 $wb['limit_web_quota_txt'] = 'Web Quota';
 $wb['limit_traffic_quota_txt'] = 'Traffic Quota';
 $wb['limit_trafficquota_error_notint'] = 'Traffic Quota must be a number.';
diff --git a/interface/web/client/lib/lang/ru_client.lng b/interface/web/client/lib/lang/ru_client.lng
index 780f1d7..ee91b18 100644
--- a/interface/web/client/lib/lang/ru_client.lng
+++ b/interface/web/client/lib/lang/ru_client.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Макс.число правил спам-фильтра';
 $wb['default_mailserver_txt'] = 'Почтовый сервер по-умолчанию';
 $wb['company_name_txt'] = 'Название компании';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Контактное лицо';
 $wb['username_txt'] = 'Логин';
 $wb['password_txt'] = 'Пароль';
diff --git a/interface/web/client/lib/lang/ru_reseller.lng b/interface/web/client/lib/lang/ru_reseller.lng
index cf16435..2ce7db7 100644
--- a/interface/web/client/lib/lang/ru_reseller.lng
+++ b/interface/web/client/lib/lang/ru_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Макс. количество правил спам-фильтра';
 $wb['default_mailserver_txt'] = 'Mail-сервер по-умолчанию';
 $wb['company_name_txt'] = 'Компания';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Контактное лицо';
 $wb['username_txt'] = 'Логин';
 $wb['password_txt'] = 'Пароль';
@@ -89,7 +90,7 @@
 $wb['ssh_chroot_txt'] = 'Опции SSH-Chroot';
 $wb['web_php_options_txt'] = 'Опции PHP';
 $wb['limit_client_error'] = 'Достигнуто макс. число клиентов.';
-$wb['limit_client_error_positive'] = 'Число клиентов должно быть > 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'Число клиентов должно быть > 0';
 $wb['limit_web_quota_txt'] = 'Квота Web';
 $wb['limit_traffic_quota_txt'] = 'Квота трафика';
 $wb['limit_trafficquota_error_notint'] = 'Квота трафика должна быть числом.';
diff --git a/interface/web/client/lib/lang/se_client.lng b/interface/web/client/lib/lang/se_client.lng
index 0e48447..6f59c85 100644
--- a/interface/web/client/lib/lang/se_client.lng
+++ b/interface/web/client/lib/lang/se_client.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies';
 $wb['default_mailserver_txt'] = 'Förvald epostserver';
 $wb['company_name_txt'] = 'Företagsnamn';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Kontaktnamn';
 $wb['username_txt'] = 'Användarnamn';
 $wb['password_txt'] = 'Lösenord';
diff --git a/interface/web/client/lib/lang/se_reseller.lng b/interface/web/client/lib/lang/se_reseller.lng
index ae818db..7c48272 100644
--- a/interface/web/client/lib/lang/se_reseller.lng
+++ b/interface/web/client/lib/lang/se_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. number of spamfilter policies';
 $wb['default_mailserver_txt'] = 'Default Mailserver';
 $wb['company_name_txt'] = 'Company name';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Contact name';
 $wb['username_txt'] = 'Username';
 $wb['password_txt'] = 'Password';
@@ -89,7 +90,7 @@
 $wb['ssh_chroot_txt'] = 'SSH-Chroot Options';
 $wb['web_php_options_txt'] = 'PHP Options';
 $wb['limit_client_error'] = 'The max. number of clients is reached.';
-$wb['limit_client_error_positive'] = 'The number of clients must be > 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'The number of clients must be > 0';
 $wb['limit_web_quota_txt'] = 'Web Quota';
 $wb['limit_traffic_quota_txt'] = 'Traffic Quota';
 $wb['limit_trafficquota_error_notint'] = 'Traffic Quota must be a number.';
diff --git a/interface/web/client/lib/lang/sk_client.lng b/interface/web/client/lib/lang/sk_client.lng
index 1bb9b0d..ec69f45 100644
--- a/interface/web/client/lib/lang/sk_client.lng
+++ b/interface/web/client/lib/lang/sk_client.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. počet Spamfilter politík';
 $wb['default_mailserver_txt'] = 'Predvolený Mailserver';
 $wb['company_name_txt'] = 'Názov firmy';
+$wb['contact_firstname_txt'] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Meno kontaktnej osoby';
 $wb['username_txt'] = 'Užívateľské meno';
 $wb['password_txt'] = 'Heslo';
diff --git a/interface/web/client/lib/lang/sk_reseller.lng b/interface/web/client/lib/lang/sk_reseller.lng
index e215544..f76b783 100644
--- a/interface/web/client/lib/lang/sk_reseller.lng
+++ b/interface/web/client/lib/lang/sk_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. počet Spamfilter politík';
 $wb['default_mailserver_txt'] = 'Predvolený Mailserver';
 $wb['company_name_txt'] = 'Názov firmy';
+$wb["contact_firstname_txt"] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Meno kontaktnej osoby';
 $wb['username_txt'] = 'Užívateľské meno';
 $wb['password_txt'] = 'Heslo';
@@ -86,7 +87,7 @@
 $wb['ssh_chroot_txt'] = 'SSH-Chroot Možnosti';
 $wb['web_php_options_txt'] = 'PHP Možnosti';
 $wb['limit_client_error'] = 'Max. počet klientov je dosiahnutý.';
-$wb['limit_client_error_positive'] = 'počet klientov, musí byť> 0';
+$wb['limit_client_error_positive_or_unlimited'] = 'počet klientov, musí byť> 0';
 $wb['limit_web_quota_txt'] = 'Web Quota';
 $wb['limit_traffic_quota_txt'] = 'Traffic Quota';
 $wb['limit_trafficquota_error_notint'] = 'Traffic Quota must be a number.';
diff --git a/interface/web/client/lib/lang/tr_client.lng b/interface/web/client/lib/lang/tr_client.lng
index 4cc9d67..3d0ce94 100644
--- a/interface/web/client/lib/lang/tr_client.lng
+++ b/interface/web/client/lib/lang/tr_client.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. spam filtre kuralı sayısı';
 $wb['default_mailserver_txt'] = 'Varsayılan Mail Sunucusu';
 $wb['company_name_txt'] = 'Şirket adı';
+$wb["contact_firstname_txt"] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Kontak adı';
 $wb['username_txt'] = 'Kullanıcı adı';
 $wb['password_txt'] = 'Şifre';
diff --git a/interface/web/client/lib/lang/tr_reseller.lng b/interface/web/client/lib/lang/tr_reseller.lng
index 6e451df..b19727c 100644
--- a/interface/web/client/lib/lang/tr_reseller.lng
+++ b/interface/web/client/lib/lang/tr_reseller.lng
@@ -13,6 +13,7 @@
 $wb['limit_spamfilter_policy_txt'] = 'Max. spamfilter policy sayısı';
 $wb['default_mailserver_txt'] = 'Varsayılan Mail Sunucusu';
 $wb['company_name_txt'] = 'Şirket adı';
+$wb["contact_firstname_txt"] = 'Contact firstname';
 $wb['contact_name_txt'] = 'Kontak adı';
 $wb['username_txt'] = 'Kullanıcı adı';
 $wb['password_txt'] = 'Şifre';
@@ -89,7 +90,7 @@
 $wb['ssh_chroot_txt'] = 'SSH-Chroot Seçenekleri';
 $wb['web_php_options_txt'] = 'PHP Seçenekleri';
 $wb['limit_client_error'] = 'Max. müşteri limitine ulaşıldı.';
-$wb['limit_client_error_positive'] = 'Müşteri sayısı sıfırdan büyük olmalı';
+$wb['limit_client_error_positive_or_unlimited'] = 'Müşteri sayısı sıfırdan büyük olmalı';
 $wb['limit_web_quota_txt'] = 'Web Kotası';
 $wb['limit_traffic_quota_txt'] = 'Trafik Kotası';
 $wb['limit_trafficquota_error_notint'] = 'Trafik kotası sayı olmak zorunda.';
diff --git a/interface/web/client/templates/client_edit_address.htm b/interface/web/client/templates/client_edit_address.htm
index ea4b591..b3c5757 100644
--- a/interface/web/client/templates/client_edit_address.htm
+++ b/interface/web/client/templates/client_edit_address.htm
@@ -15,6 +15,10 @@
                     {tmpl_var name='gender'}
                 </select>
             </div>
+			<div class="ctrlHolder">
+                <label for="contact_firstname">{tmpl_var name='contact_firstname_txt'}</label>
+                <input name="contact_firstname" id="contact_firstname" value="{tmpl_var name='contact_firstname'}" size="30" maxlength="255" type="text" class="textInput" />
+            </div>
             <div class="ctrlHolder">
                 <label for="contact_name">{tmpl_var name='contact_name_txt'}*</label>
                 <input name="contact_name" id="contact_name" value="{tmpl_var name='contact_name'}" size="30" maxlength="255" type="text" class="textInput" />
diff --git a/interface/web/client/templates/client_template_edit_limits.htm b/interface/web/client/templates/client_template_edit_limits.htm
index dc83c6e..71ab963 100644
--- a/interface/web/client/templates/client_template_edit_limits.htm
+++ b/interface/web/client/templates/client_template_edit_limits.htm
@@ -8,6 +8,12 @@
 			<div class="subsectiontoggle"><span class="showing"></span>{tmpl_var name='web_limits_txt'}<em class="showing"></em></div>
             <div>
                 <div class="ctrlHolder">
+                    <label for="default_webserver">{tmpl_var name='default_webserver_txt'}</label>
+                    <select name="default_webserver" id="default_webserver" class="selectInput">
+                        {tmpl_var name='default_webserver'}
+                    </select>
+                </div>
+                <div class="ctrlHolder">
                     <label for="limit_web_domain">{tmpl_var name='limit_web_domain_txt'}</label>
                     <input name="limit_web_domain" id="limit_web_domain" value="{tmpl_var name='limit_web_domain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
                 </div>
@@ -115,6 +121,12 @@
             <div class="subsectiontoggle"><span></span>{tmpl_var name='email_limits_txt'}<em></em></div>
             <div style="display:none;">
                 <div class="ctrlHolder">
+                    <label for="default_mailserver">{tmpl_var name='default_mailserver_txt'}</label>
+                    <select name="default_mailserver" id="default_mailserver" class="selectInput">
+                        {tmpl_var name='default_mailserver'}
+                    </select>
+                </div>
+                <div class="ctrlHolder">
                     <label for="limit_maildomain">{tmpl_var name='limit_maildomain_txt'}</label>
                     <input name="limit_maildomain" id="limit_maildomain" value="{tmpl_var name='limit_maildomain'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
                 </div>
@@ -174,6 +186,12 @@
             <div class="subsectiontoggle"><span></span>{tmpl_var name='database_limits_txt'}<em></em></div>
             <div style="display:none;">
                 <div class="ctrlHolder">
+                    <label for="default_dbserver">{tmpl_var name='default_dbserver_txt'}</label>
+                    <select name="default_dbserver" id="default_dbserver" class="selectInput">
+                        {tmpl_var name='default_dbserver'}
+                    </select>
+                </div>
+                <div class="ctrlHolder">
                     <label for="limit_database">{tmpl_var name='limit_database_txt'}</label>
                     <input name="limit_database" id="limit_database" value="{tmpl_var name='limit_database'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
                 </div>
@@ -202,9 +220,21 @@
             <div class="subsectiontoggle"><span></span>{tmpl_var name='dns_limits_txt'}<em></em></div>
             <div style="display:none;">
                 <div class="ctrlHolder">
+                    <label for="default_dnsserver">{tmpl_var name='default_dnsserver_txt'}</label>
+                    <select name="default_dnsserver" id="default_dnsserver" class="selectInput">
+                        {tmpl_var name='default_dnsserver'}
+                    </select>
+                </div>
+                <div class="ctrlHolder">
                     <label for="limit_dns_zone">{tmpl_var name='limit_dns_zone_txt'}</label>
                     <input name="limit_dns_zone" id="limit_dns_zone" value="{tmpl_var name='limit_dns_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
                 </div>
+				<div class="ctrlHolder">
+                    <label for="default_slave_dnsserver">{tmpl_var name='default_slave_dnsserver_txt'}</label>
+                    <select name="default_slave_dnsserver" id="default_slave_dnsserver" class="selectInput">
+                        {tmpl_var name='default_slave_dnsserver'}
+                    </select>
+                </div>
                 <div class="ctrlHolder">
                     <label for="limit_dns_slave_zone">{tmpl_var name='limit_dns_slave_zone_txt'}</label>
                     <input name="limit_dns_slave_zone" id="limit_dns_slave_zone" value="{tmpl_var name='limit_dns_slave_zone'}" size="10" maxlength="10" type="text" class="textInput formLengthLimit" />
diff --git a/interface/web/client/templates/domain_edit.htm b/interface/web/client/templates/domain_edit.htm
index aaafa6e..551dbbe 100644
--- a/interface/web/client/templates/domain_edit.htm
+++ b/interface/web/client/templates/domain_edit.htm
@@ -7,22 +7,16 @@
             <div class="ctrlHolder">
                 <label for="domain">{tmpl_var name='domain_txt'}</label>
                 <tmpl_if name="edit_disabled">
-                <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" disabled="disabled" />
+                <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" readonly="readonly" />
                 <tmpl_else>
                 <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" />
                 </tmpl_if>
             </div>
             <div class="ctrlHolder">
                 <label for="client_group_id">{tmpl_var name='client_txt'}</label>
-                <tmpl_if name="edit_disabled">
-                <select name="client_group_id" id="client_group_id" class="selectInput" disabled="disabled">
-                    {tmpl_var name='client_group_id'}
-                </select>
-                <tmpl_else>
                 <select name="client_group_id" id="client_group_id" class="selectInput">
                     {tmpl_var name='client_group_id'}
                 </select>
-                </tmpl_if>
             </div>
         </fieldset>
 
diff --git a/interface/web/client/templates/reseller_edit_address.htm b/interface/web/client/templates/reseller_edit_address.htm
index 4156254..41160cf 100644
--- a/interface/web/client/templates/reseller_edit_address.htm
+++ b/interface/web/client/templates/reseller_edit_address.htm
@@ -15,6 +15,10 @@
                     {tmpl_var name='gender'}
                 </select>
             </div>
+			<div class="ctrlHolder">
+                <label for="contact_firstname">{tmpl_var name='contact_firstname_txt'}</label>
+                <input name="contact_firstname" id="contact_firstname" value="{tmpl_var name='contact_firstname'}" size="30" maxlength="255" type="text" class="textInput" />
+            </div>
             <div class="ctrlHolder">
                 <label for="contact_name">{tmpl_var name='contact_name_txt'}*</label>
                 <input name="contact_name" id="contact_name" value="{tmpl_var name='contact_name'}" size="30" maxlength="255" type="text" class="textInput" />
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng
index be994b5..df87dc4 100644
--- a/interface/web/dashboard/lib/lang/es_dashlet_limits.lng
+++ b/interface/web/dashboard/lib/lang/es_dashlet_limits.lng
@@ -1,30 +1,30 @@
 <?php
-$wb['limits_txt'] = 'Cuenta límites';
+$wb['limits_txt'] = 'Límites';
 $wb['of_txt'] = 'de';
 $wb['unlimited_txt'] = 'Ilimitado';
 $wb['limit_maildomain_txt'] = 'Número de dominios de correo';
 $wb['limit_mailbox_txt'] = 'Número de buzón de correo';
 $wb['limit_mailalias_txt'] = 'Número de alias de correo';
-$wb['limit_mailaliasdomain_txt'] = 'Número de alias de dominio';
+$wb['limit_mailaliasdomain_txt'] = 'Número de alias de dominio de correo';
 $wb['limit_mailforward_txt'] = 'Número de reenvío de correo';
 $wb['limit_mailcatchall_txt'] = 'Número de correo recoge-todo';
 $wb['limit_mailmailinglist_txt'] = 'Número de listas de correo';
 $wb['limit_mailrouting_txt'] = 'Número de enrutado de correo';
 $wb['limit_mailfilter_txt'] = 'Número de filtros de correo';
-$wb['limit_fetchmail_txt'] = 'Número de fetchmail usuarios';
-$wb['limit_spamfilter_wblist_txt'] = 'Número de filtro de spam blanca / negra filtros';
-$wb['limit_spamfilter_user_txt'] = 'Número de filtro de spam usuarios';
-$wb['limit_spamfilter_policy_txt'] = 'Número de filtro de spam polícas';
+$wb['limit_fetchmail_txt'] = 'Número de cuentas Fetchmail';
+$wb['limit_spamfilter_wblist_txt'] = 'Número de lista blanca / negra de spam';
+$wb['limit_spamfilter_user_txt'] = 'Número de usuarios de filtro de spam';
+$wb['limit_spamfilter_policy_txt'] = 'Número de políticas de filtros de spam';
 $wb['limit_cron_txt'] = 'Número de tareas programadas';
-$wb['limit_web_domain_txt'] = 'Número de dominios web';
+$wb['limit_web_domain_txt'] = 'Número de sitios web';
 $wb['limit_web_aliasdomain_txt'] = 'Número de alias de dominios web';
 $wb['limit_web_subdomain_txt'] = 'Número de subdominios web';
-$wb['limit_ftp_user_txt'] = 'Número de usuario FTP';
+$wb['limit_ftp_user_txt'] = 'Número de usuarios FTP';
 $wb['limit_dns_zone_txt'] = 'Número de zonas DNS';
-$wb['limit_dns_slave_zone_txt'] = 'Número de zonas DNS esclavas';
+$wb['limit_dns_slave_zone_txt'] = 'Número de zonas DNS secundarias';
 $wb['limit_dns_record_txt'] = 'Número de registros DNS';
-$wb['limit_shell_user_txt'] = 'Número de usario de consola';
-$wb['limit_webdav_user_txt'] = 'Número de usario de WebDAV';
+$wb['limit_shell_user_txt'] = 'Número de usuarios de consola';
+$wb['limit_webdav_user_txt'] = 'Número de usuarios de WebDAV';
 $wb['limit_client_txt'] = 'Número de clientes';
 $wb['limit_database_txt'] = 'Número de bases de datos';
 ?>
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng b/interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng
index 1ab1e66..305c725 100644
--- a/interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng
+++ b/interface/web/dashboard/lib/lang/es_dashlet_mailquota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['mailquota_txt'] = 'Mailbox Quota';
-$wb['email_txt'] = 'Email Address';
-$wb['name_txt'] = 'Name';
-$wb['used_txt'] = 'Used Space';
-$wb['quota_txt'] = 'Quota';
-$wb['no_email_accounts_txt'] = 'No email accounts found.';
+$wb['mailquota_txt'] = 'Cuota de buzones';
+$wb['email_txt'] = 'Dirección de correo';
+$wb['name_txt'] = 'Nombre';
+$wb['used_txt'] = 'Espacio Usado';
+$wb['quota_txt'] = 'Cuota';
+$wb['no_email_accounts_txt'] = 'No se encontraron cuentas de correo.';
 ?>
diff --git a/interface/web/dashboard/lib/lang/es_dashlet_quota.lng b/interface/web/dashboard/lib/lang/es_dashlet_quota.lng
index de7b5a8..29fcda9 100644
--- a/interface/web/dashboard/lib/lang/es_dashlet_quota.lng
+++ b/interface/web/dashboard/lib/lang/es_dashlet_quota.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['quota_txt'] = 'Website Harddisk Quota';
-$wb['domain_txt'] = 'Domain / Website';
-$wb['used_txt'] = 'Used space';
-$wb['hard_txt'] = 'Hard limit';
-$wb['soft_txt'] = 'Soft limit';
-$wb['no_sites_txt'] = 'No web sites found.';
+$wb['quota_txt'] = 'Cuota de Disco de Sitio Web';
+$wb['domain_txt'] = 'Dominio / Sitio Web';
+$wb['used_txt'] = 'Espacio Usado';
+$wb['hard_txt'] = 'Límite máximo';
+$wb['soft_txt'] = 'Límite de aviso';
+$wb['no_sites_txt'] = 'No se encontraron sitios web.';
 ?>
diff --git a/interface/web/dns/dns_import.php b/interface/web/dns/dns_import.php
index c78e41a..5598b56 100644
--- a/interface/web/dns/dns_import.php
+++ b/interface/web/dns/dns_import.php
@@ -56,7 +56,8 @@
 	$server_id = $app->functions->intval($_POST['server_id_value']);
 	$post_server_id = true;
 } else {
-	$server_id = 1;
+	$settings = $app->getconf->get_global_config('dns');
+	$server_id = $app->functions->intval($settings['default_dnsserver']);
 	$post_server_id = false;
 }
 
@@ -151,6 +152,44 @@
 
 }
 
+/*
+ * Now we have to check, if we should use the domain-module to select the domain
+ * or not
+ */
+$app->uses('ini_parser,getconf');
+$settings = $app->getconf->get_global_config('domains');
+if ($settings['use_domain_module'] == 'y') {
+	/*
+	 * The domain-module is in use.
+	*/
+	$domains = $app->tools_sites->getDomainModuleDomains("dns_soa");
+	/*
+	 * We can leave domain empty if domain is filename
+	*/
+	$domain_select = "<option value=''></option>\r\n";
+	if(is_array($domains) && sizeof($domains) > 0) {
+		/* We have domains in the list, so create the drop-down-list */
+		foreach( $domains as $domain) {
+			$domain_select .= "<option value=" . $domain['domain_id'] ;
+			if ($domain['domain'] == $_POST['domain']) {
+				$domain_select .= " selected";
+			}
+			$domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . ".</option>\r\n";
+		}
+	}
+	$app->tpl->setVar("domain_option", $domain_select);
+	/* check if the selected domain can be used! */
+	if ($domain) {
+		$domain_check = $app->tools_sites->checkDomainModuleDomain($domain);
+		if(!$domain_check) {
+			// invalid domain selected
+			$domain = NULL;
+		} else {
+			$domain = $domain_check;
+		}
+	}
+}
+
 $lng_file = 'lib/lang/'.$_SESSION['s']['language'].'_dns_import.lng';
 include $lng_file;
 $app->tpl->setVar($wb);
diff --git a/interface/web/dns/dns_slave_edit.php b/interface/web/dns/dns_slave_edit.php
index dfca92e..0ae2ac4 100644
--- a/interface/web/dns/dns_slave_edit.php
+++ b/interface/web/dns/dns_slave_edit.php
@@ -61,6 +61,9 @@
 			if(!$app->tform->checkResellerLimit('limit_dns_slave_zone')) {
 				$app->error('Reseller: '.$app->tform->wordbook["limit_dns_slave_zone_txt"]);
 			}
+		} else {
+			$settings = $app->getconf->get_global_config('dns');
+			$app->tform->formDef['tabs']['dns_slave']['fields']['server_id']['default'] = intval($settings['default_slave_dnsserver']);
 		}
 
 		parent::onShowNew();
@@ -69,22 +72,30 @@
 	function onShowEnd() {
 		global $app, $conf;
 
-		// If user is admin, we will allow him to select to whom this record belongs
-		if($_SESSION["s"]["user"]["typ"] == 'admin') {
-			// Getting Domains of the user
-			$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name";
-			$clients = $app->db->queryAllRecords($sql);
-			$client_select = '';
-			if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>";
-			//$tmp_data_record = $app->tform->getDataRecord($this->id);
-			if(is_array($clients)) {
-				foreach( $clients as $client) {
-					$selected = @(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':'';
-					$client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n";
+		$app->uses('ini_parser,getconf');
+		$settings = $app->getconf->get_global_config('domains');
+
+		/*
+		 * Now we have to check, if we should use the domain-module to select the domain
+		 * or not
+		 */
+		if ($settings['use_domain_module'] != 'y') {
+			// If user is admin, we will allow him to select to whom this record belongs
+			if($_SESSION["s"]["user"]["typ"] == 'admin') {
+				// Getting Domains of the user
+				$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name";
+				$clients = $app->db->queryAllRecords($sql);
+				$client_select = '';
+				if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>";
+				//$tmp_data_record = $app->tform->getDataRecord($this->id);
+				if(is_array($clients)) {
+					foreach( $clients as $client) {
+						$selected = @(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':'';
+						$client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n";
+					}
 				}
-			}
-			$app->tpl->setVar("client_group_id", $client_select);
-		} else if($app->auth->has_clients($_SESSION['s']['user']['userid'])) {
+				$app->tpl->setVar("client_group_id", $client_select);
+			} else if($app->auth->has_clients($_SESSION['s']['user']['userid'])) {
 
 				// Get the limits of the client
 				$client_group_id = intval($_SESSION["s"]["user"]["default_group"]);
@@ -105,6 +116,32 @@
 				$app->tpl->setVar("client_group_id", $client_select);
 
 			}
+		} else {
+			/*
+			 * The domain-module is in use.
+			*/
+			$domains = $app->tools_sites->getDomainModuleDomains("dns_slave", $this->dataRecord["origin"]);
+			$domain_select = '';
+			if(is_array($domains) && sizeof($domains) > 0) {
+				/* We have domains in the list, so create the drop-down-list */
+				foreach( $domains as $domain) {
+					$domain_select .= "<option value=" . $domain['domain_id'] ;
+					if ($domain['domain'].'.' == $this->dataRecord["origin"]) {
+						$domain_select .= " selected";
+					}
+					$domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . ".</option>\r\n";
+				}
+			}
+			else {
+				/*
+				 * We have no domains in the domain-list. This means, we can not add ANY new domain.
+				 * To avoid, that the variable "domain_option" is empty and so the user can
+				 * free enter a domain, we have to create a empty option!
+				*/
+				$domain_select .= "<option value=''></option>\r\n";
+			}
+			$app->tpl->setVar("domain_option", $domain_select);
+		}
 
 		if($this->id > 0) {
 			//* we are editing a existing record
@@ -119,6 +156,22 @@
 
 	function onSubmit() {
 		global $app, $conf;
+
+		/* check if the domain module is used - and check if the selected domain can be used! */
+		$app->uses('ini_parser,getconf');
+		$settings = $app->getconf->get_global_config('domains');
+		if ($settings['use_domain_module'] == 'y') {
+			if ($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
+				$this->dataRecord['client_group_id'] = $app->tools_sites->getClientIdForDomain($this->dataRecord['origin']);
+			}
+			$domain_check = $app->tools_sites->checkDomainModuleDomain($this->dataRecord['origin']);
+			if(!$domain_check) {
+				// invalid domain selected
+				$app->tform->errorMessage .= $app->tform->lng("origin_error_empty")."<br />";
+			} else {
+				$this->dataRecord['origin'] = $domain_check.'.';
+			}
+		}
 
 		if($_SESSION["s"]["user"]["typ"] != 'admin') {
 			// Get the limits of the client
@@ -167,47 +220,6 @@
 		if(is_array($duplicate_slave) && !empty($duplicate_slave)) $app->error($app->tform->wordbook["origin_error_unique"]);
 
 		parent::onInsert();
-	}
-
-	function onAfterInsert() {
-		global $app, $conf;
-
-		// make sure that the record belongs to the client group and not the admin group when a dmin inserts it
-		if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
-			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-			$app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$this->id);
-		}
-		if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
-			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-			$app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$this->id);
-		}
-
-	}
-
-	function onAfterUpdate() {
-		global $app, $conf;
-
-		$tmp = $app->db->diffrec($this->oldDataRecord, $app->tform->getDataRecord($this->id));
-
-		// make sure that the record belongs to the client group and not the admin group when a dmin inserts it
-		if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
-			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-			$app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$this->id);
-		}
-		if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
-			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-			$app->db->query("UPDATE dns_slave SET sys_groupid = $client_group_id WHERE id = ".$this->id);
-		}
-
-		//** When the client group has changed, change also the owner of the record if the owner is not the admin user
-		if($this->oldDataRecord["client_group_id"] != $this->dataRecord["client_group_id"] && $this->dataRecord["sys_userid"] != 1) {
-			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-			$tmp = $app->db->queryOneREcord("SELECT userid FROM sys_user WHERE default_group = ".$client_group_id);
-			if($tmp["userid"] > 0) {
-				$app->db->query("UPDATE dns_slave SET sys_userid = ".$tmp["userid"]." WHERE id = ".$this->id);
-			}
-		}
-
 	}
 
 }
diff --git a/interface/web/dns/dns_soa_edit.php b/interface/web/dns/dns_soa_edit.php
index 17c704e..96088ef 100644
--- a/interface/web/dns/dns_soa_edit.php
+++ b/interface/web/dns/dns_soa_edit.php
@@ -71,6 +71,9 @@
 			if(!$app->tform->checkResellerLimit('limit_dns_zone')) {
 				$app->error('Reseller: '.$app->tform->wordbook["limit_dns_zone_txt"]);
 			}
+		} else {
+			$settings = $app->getconf->get_global_config('dns');
+			$app->tform->formDef['tabs']['dns_soa']['fields']['server_id']['default'] = intval($settings['default_dnsserver']);
 		}
 
 		parent::onShowNew();
@@ -79,22 +82,30 @@
 	function onShowEnd() {
 		global $app, $conf;
 
-		// If user is admin, we will allow him to select to whom this record belongs
-		if($_SESSION["s"]["user"]["typ"] == 'admin') {
-			// Getting Domains of the user
-			$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name";
-			$clients = $app->db->queryAllRecords($sql);
-			$client_select = '';
-			if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>";
-			//$tmp_data_record = $app->tform->getDataRecord($this->id);
-			if(is_array($clients)) {
-				foreach( $clients as $client) {
-					$selected = @(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':'';
-					$client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n";
+		$app->uses('ini_parser,getconf');
+		$settings = $app->getconf->get_global_config('domains');
+
+		/*
+		 * Now we have to check, if we should use the domain-module to select the domain
+		 * or not
+		 */
+		if ($settings['use_domain_module'] != 'y') {
+			// If user is admin, we will allow him to select to whom this record belongs
+			if($_SESSION["s"]["user"]["typ"] == 'admin') {
+				// Getting Domains of the user
+				$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name";
+				$clients = $app->db->queryAllRecords($sql);
+				$client_select = '';
+				if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>";
+				//$tmp_data_record = $app->tform->getDataRecord($this->id);
+				if(is_array($clients)) {
+					foreach( $clients as $client) {
+						$selected = @(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':'';
+						$client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n";
+					}
 				}
-			}
-			$app->tpl->setVar("client_group_id", $client_select);
-		} else if($app->auth->has_clients($_SESSION['s']['user']['userid'])) {
+				$app->tpl->setVar("client_group_id", $client_select);
+			} else if($app->auth->has_clients($_SESSION['s']['user']['userid'])) {
 
 				// Get the limits of the client
 				$client_group_id = intval($_SESSION["s"]["user"]["default_group"]);
@@ -115,7 +126,7 @@
 				$app->tpl->setVar("client_group_id", $client_select);
 
 			}
-		$app->tpl->setVar("client_group_id", $client_select);
+		}
 
 //	}
 
@@ -147,6 +158,33 @@
 
 	}
 
+	if ($settings['use_domain_module'] == 'y') {
+		/*
+		 * The domain-module is in use.
+		*/
+		$domains = $app->tools_sites->getDomainModuleDomains("dns_soa", $this->dataRecord["origin"]);
+		$domain_select = '';
+		if(is_array($domains) && sizeof($domains) > 0) {
+			/* We have domains in the list, so create the drop-down-list */
+			foreach( $domains as $domain) {
+				$domain_select .= "<option value=" . $domain['domain_id'] ;
+				if ($domain['domain'].'.' == $this->dataRecord["origin"]) {
+					$domain_select .= " selected";
+				}
+				$domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . ".</option>\r\n";
+			}
+		}
+		else {
+			/*
+			 * We have no domains in the domain-list. This means, we can not add ANY new domain.
+			 * To avoid, that the variable "domain_option" is empty and so the user can
+			 * free enter a domain, we have to create a empty option!
+			*/
+			$domain_select .= "<option value=''></option>\r\n";
+		}
+		$app->tpl->setVar("domain_option", $domain_select);
+	}
+
 	if($this->id > 0) {
 		//* we are editing a existing record
 		$app->tpl->setVar("edit_disabled", 1);
@@ -161,82 +199,80 @@
 function onSubmit() {
 	global $app, $conf;
 
-	if($_SESSION["s"]["user"]["typ"] != 'admin') {
-		// Get the limits of the client
-		$client_group_id = $_SESSION["s"]["user"]["default_group"];
-		$client = $app->db->queryOneRecord("SELECT limit_dns_zone, dns_servers FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
-
-		$client['dns_servers_ids'] = explode(',', $client['dns_servers']);
-
-		// Check if chosen server is in authorized servers for this client
-		if (!(is_array($client['dns_servers_ids']) && in_array($this->dataRecord["server_id"], $client['dns_servers_ids'])) && $_SESSION["s"]["user"]["typ"] != 'admin') {
-			$app->error($app->tform->wordbook['error_not_allowed_server_id']);
+	if ($app->tform->getCurrentTab() == 'dns_soa') {
+		/* check if the domain module is used - and check if the selected domain can be used! */
+		$app->uses('ini_parser,getconf');
+		$settings = $app->getconf->get_global_config('domains');
+		if ($settings['use_domain_module'] == 'y') {
+			if ($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
+				$this->dataRecord['client_group_id'] = $app->tools_sites->getClientIdForDomain($this->dataRecord['origin']);
+			}
+			$domain_check = $app->tools_sites->checkDomainModuleDomain($this->dataRecord['origin']);
+			if(!$domain_check) {
+				// invalid domain selected
+				$app->tform->errorMessage .= $app->tform->lng("origin_error_empty")."<br />";
+			} else {
+				$this->dataRecord['origin'] = $domain_check.'.';
+			}
 		}
 
-		// When the record is updated
-		if($this->id > 0) {
-			// restore the server ID if the user is not admin and record is edited
-			$tmp = $app->db->queryOneRecord("SELECT server_id FROM dns_soa WHERE id = ".$app->functions->intval($this->id));
-			$this->dataRecord["server_id"] = $tmp["server_id"];
-			unset($tmp);
-			// When the record is inserted
-		} else {
-			// Check if the user may add another maildomain.
-			if($client["limit_dns_zone"] >= 0) {
-				$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_soa WHERE sys_groupid = $client_group_id");
-				if($tmp["number"] >= $client["limit_dns_zone"]) {
-					$app->error($app->tform->wordbook["limit_dns_zone_txt"]);
+		if($_SESSION["s"]["user"]["typ"] != 'admin') {
+			// Get the limits of the client
+			$client_group_id = $_SESSION["s"]["user"]["default_group"];
+			$client = $app->db->queryOneRecord("SELECT limit_dns_zone, dns_servers FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
+
+			$client['dns_servers_ids'] = explode(',', $client['dns_servers']);
+
+			// Check if chosen server is in authorized servers for this client
+			if (!(is_array($client['dns_servers_ids']) && in_array($this->dataRecord["server_id"], $client['dns_servers_ids'])) && $_SESSION["s"]["user"]["typ"] != 'admin') {
+				$app->error($app->tform->wordbook['error_not_allowed_server_id']);
+			}
+
+			// When the record is updated
+			if($this->id > 0) {
+				// restore the server ID if the user is not admin and record is edited
+				$tmp = $app->db->queryOneRecord("SELECT server_id FROM dns_soa WHERE id = ".$app->functions->intval($this->id));
+				$this->dataRecord["server_id"] = $tmp["server_id"];
+				unset($tmp);
+				// When the record is inserted
+			} else {
+				// Check if the user may add another maildomain.
+				if($client["limit_dns_zone"] >= 0) {
+					$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_soa WHERE sys_groupid = $client_group_id");
+					if($tmp["number"] >= $client["limit_dns_zone"]) {
+						$app->error($app->tform->wordbook["limit_dns_zone_txt"]);
+					}
 				}
 			}
 		}
+
+		/*
+			// Update the serial number of the SOA record
+			$soa = $app->db->queryOneRecord("SELECT serial FROM dns_soa WHERE id = ".$this->id);
+			$this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]);
+			*/
+
+
+		//* Check if soa, ns and mbox have a dot at the end
+		if(strlen($this->dataRecord["origin"]) > 0 && substr($this->dataRecord["origin"], -1, 1) != '.') $this->dataRecord["origin"] .= '.';
+		if(strlen($this->dataRecord["ns"]) > 0 && substr($this->dataRecord["ns"], -1, 1) != '.') $this->dataRecord["ns"] .= '.';
+		if(strlen($this->dataRecord["mbox"]) > 0 && substr($this->dataRecord["mbox"], -1, 1) != '.') $this->dataRecord["mbox"] .= '.';
+
+		//* Replace @ in mbox
+		if(stristr($this->dataRecord["mbox"], '@')) {
+			$this->dataRecord["mbox"] = str_replace('@', '.', $this->dataRecord["mbox"]);
+		}
+
+		$this->dataRecord["xfer"] = preg_replace('/\s+/', '', $this->dataRecord["xfer"]);
+		$this->dataRecord["also_notify"] = preg_replace('/\s+/', '', $this->dataRecord["also_notify"]);
+
+		//* Check if a secondary zone with the same name already exists
+		$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_slave WHERE origin = ? AND server_id = ?", $this->dataRecord["origin"], $this->dataRecord["server_id"]);
+		if($tmp["number"] > 0) {
+			$app->error($app->tform->wordbook["origin_error_unique"]);
+		}
 	}
-
-	/*
-		// Update the serial number of the SOA record
-		$soa = $app->db->queryOneRecord("SELECT serial FROM dns_soa WHERE id = ".$this->id);
-		$this->dataRecord["serial"] = $app->validate_dns->increase_serial($soa["serial"]);
-		*/
-
-
-	//* Check if soa, ns and mbox have a dot at the end
-	if(strlen($this->dataRecord["origin"]) > 0 && substr($this->dataRecord["origin"], -1, 1) != '.') $this->dataRecord["origin"] .= '.';
-	if(strlen($this->dataRecord["ns"]) > 0 && substr($this->dataRecord["ns"], -1, 1) != '.') $this->dataRecord["ns"] .= '.';
-	if(strlen($this->dataRecord["mbox"]) > 0 && substr($this->dataRecord["mbox"], -1, 1) != '.') $this->dataRecord["mbox"] .= '.';
-
-	//* Replace @ in mbox
-	if(stristr($this->dataRecord["mbox"], '@')) {
-		$this->dataRecord["mbox"] = str_replace('@', '.', $this->dataRecord["mbox"]);
-	}
-
-	$this->dataRecord["xfer"] = preg_replace('/\s+/', '', $this->dataRecord["xfer"]);
-	$this->dataRecord["also_notify"] = preg_replace('/\s+/', '', $this->dataRecord["also_notify"]);
-
-	//* Check if a secondary zone with the same name already exists
-	$tmp = $app->db->queryOneRecord("SELECT count(id) as number FROM dns_slave WHERE origin = ? AND server_id = ?", $this->dataRecord["origin"], $this->dataRecord["server_id"]);
-	if($tmp["number"] > 0) {
-		$app->error($app->tform->wordbook["origin_error_unique"]);
-	}
-
 	parent::onSubmit();
-}
-
-function onAfterInsert() {
-	global $app, $conf;
-
-	// make sure that the record belongs to the client group and not the admin group when a dmin inserts it
-	if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
-		$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-		$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE id = ".$this->id);
-		// And we want to update all rr records too, that belong to this record
-		$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
-	}
-	if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
-		$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-		$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE id = ".$this->id);
-		// And we want to update all rr records too, that belong to this record
-		$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
-	}
-
 }
 
 function onBeforeUpdate () {
@@ -254,42 +290,6 @@
 		}
 		unset($rec);
 	}
-}
-
-function onAfterUpdate() {
-	global $app, $conf;
-
-	$tmp = $app->db->diffrec($this->oldDataRecord, $app->tform->getDataRecord($this->id));
-	if($tmp['diff_num'] > 0) {
-		// Update the serial number of the SOA record
-		$soa = $app->db->queryOneRecord("SELECT serial FROM dns_soa WHERE id = ".$this->id);
-		$app->db->query("UPDATE dns_soa SET serial = '".$app->validate_dns->increase_serial($soa["serial"])."' WHERE id = ".$this->id);
-	}
-
-	// make sure that the record belongs to the client group and not the admin group when a dmin inserts it
-	if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
-		$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-		$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE id = ".$this->id);
-		// And we want to update all rr records too, that belong to this record
-		$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
-	}
-	if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
-		$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-		$app->db->query("UPDATE dns_soa SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE id = ".$this->id);
-		// And we want to update all rr records too, that belong to this record
-		$app->db->query("UPDATE dns_rr SET sys_groupid = $client_group_id WHERE zone = ".$this->id);
-	}
-
-	//** When the client group has changed, change also the owner of the record if the owner is not the admin user
-	if($this->oldDataRecord["client_group_id"] != $this->dataRecord["client_group_id"] && $this->dataRecord["sys_userid"] != 1) {
-		$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-		$tmp = $app->db->queryOneREcord("SELECT userid FROM sys_user WHERE default_group = ".$client_group_id);
-		if($tmp["userid"] > 0) {
-			$app->db->query("UPDATE dns_soa SET sys_userid = ".$tmp["userid"]." WHERE id = ".$this->id);
-			$app->db->query("UPDATE dns_rr SET sys_userid = ".$tmp["userid"]." WHERE zone = ".$this->id);
-		}
-	}
-
 }
 
 }
diff --git a/interface/web/dns/dns_wizard.php b/interface/web/dns/dns_wizard.php
index 370d3df..b27c66a 100644
--- a/interface/web/dns/dns_wizard.php
+++ b/interface/web/dns/dns_wizard.php
@@ -53,7 +53,8 @@
 	$server_id = $app->functions->intval($_POST['server_id_value']);
 	$post_server_id = true;
 } else {
-	$server_id = 1;
+	$settings = $app->getconf->get_global_config('dns');
+	$server_id = $app->functions->intval($settings['default_dnsserver']);
 	$post_server_id = false;
 }
 
@@ -70,6 +71,9 @@
 unset($n);
 $app->tpl->setVar("template_id_option", $template_id_option);
 
+$app->uses('ini_parser,getconf');
+$domains_settings = $app->getconf->get_global_config('domains');
+
 // If the user is administrator
 if($_SESSION['s']['user']['typ'] == 'admin') {
 
@@ -82,19 +86,21 @@
 	}
 	$app->tpl->setVar("server_id", $server_id_option);
 
-	// load the list of clients
-	$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name";
-	$clients = $app->db->queryAllRecords($sql);
-	$client_select = '';
-	if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>";
-	if(is_array($clients)) {
-		foreach( $clients as $client) {
-			$selected = ($client["groupid"] == $sys_groupid)?'SELECTED':'';
-			$client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n";
+	if ($domains_settings['use_domain_module'] != 'y') {
+		// load the list of clients
+		$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name";
+		$clients = $app->db->queryAllRecords($sql);
+		$client_select = '';
+		if($_SESSION["s"]["user"]["typ"] == 'admin') $client_select .= "<option value='0'></option>";
+		if(is_array($clients)) {
+			foreach( $clients as $client) {
+				$selected = ($client["groupid"] == $sys_groupid)?'SELECTED':'';
+				$client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n";
+			}
 		}
-	}
 
-	$app->tpl->setVar("client_group_id", $client_select);
+		$app->tpl->setVar("client_group_id", $client_select);
+	}
 }
 
 if ($_SESSION["s"]["user"]["typ"] != 'admin' && $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
@@ -104,19 +110,21 @@
 	$client = $app->db->queryOneRecord("SELECT client.client_id, client.contact_name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname, sys_group.name FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
 
 
-	// load the list of clients
-	$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$app->functions->intval($client['client_id'])." ORDER BY client.company_name, client.contact_name, sys_group.name";
-	$clients = $app->db->queryAllRecords($sql);
-	$tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$app->functions->intval($client['client_id']));
-	$client_select = '<option value="'.$tmp['groupid'].'">'.$client['contactname'].'</option>';
-	if(is_array($clients)) {
-		foreach( $clients as $client) {
-			$selected = ($client["groupid"] == $sys_groupid)?'SELECTED':'';
-			$client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n";
+	if ($domains_settings['use_domain_module'] != 'y') {
+		// load the list of clients
+		$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$app->functions->intval($client['client_id'])." ORDER BY client.company_name, client.contact_name, sys_group.name";
+		$clients = $app->db->queryAllRecords($sql);
+		$tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$app->functions->intval($client['client_id']));
+		$client_select = '<option value="'.$tmp['groupid'].'">'.$client['contactname'].'</option>';
+		if(is_array($clients)) {
+			foreach( $clients as $client) {
+				$selected = ($client["groupid"] == $sys_groupid)?'SELECTED':'';
+				$client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n";
+			}
 		}
-	}
 
-	$app->tpl->setVar("client_group_id", $client_select);
+		$app->tpl->setVar("client_group_id", $client_select);
+	}
 }
 
 if($_SESSION["s"]["user"]["typ"] != 'admin')
@@ -157,6 +165,37 @@
 	}
 }
 
+/*
+ * Now we have to check, if we should use the domain-module to select the domain
+ * or not
+ */
+if ($domains_settings['use_domain_module'] == 'y') {
+	/*
+	 * The domain-module is in use.
+	*/
+	$domains = $app->tools_sites->getDomainModuleDomains("dns_soa");
+	$domain_select = '';
+	if(is_array($domains) && sizeof($domains) > 0) {
+		/* We have domains in the list, so create the drop-down-list */
+		foreach( $domains as $domain) {
+			$domain_select .= "<option value=" . $domain['domain_id'] ;
+			if ($domain['domain'] == $_POST['domain']) {
+				$domain_select .= " selected";
+			}
+			$domain_select .= ">" . $app->functions->idn_decode($domain['domain']) . ".</option>\r\n";
+		}
+	}
+	else {
+		/*
+		 * We have no domains in the domain-list. This means, we can not add ANY new domain.
+		 * To avoid, that the variable "domain_option" is empty and so the user can
+		 * free enter a domain, we have to create a empty option!
+		*/
+		$domain_select .= "<option value=''></option>\r\n";
+	}
+	$app->tpl->setVar("domain_option", $domain_select);
+}
+
 if($_POST['create'] == 1) {
 
 	$error = '';
@@ -180,8 +219,22 @@
 
 	// apply filters
 	if(isset($_POST['domain']) && $_POST['domain'] != ''){
-		$_POST['domain'] = $app->functions->idn_encode($_POST['domain']);
-		$_POST['domain'] = strtolower($_POST['domain']);
+		/* check if the domain module is used - and check if the selected domain can be used! */
+		if ($domains_settings['use_domain_module'] == 'y') {
+			if ($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
+				$_POST['client_group_id'] = $app->tools_sites->getClientIdForDomain($_POST['domain']);
+			}
+			$domain_check = $app->tools_sites->checkDomainModuleDomain($_POST['domain']);
+			if(!$domain_check) {
+				// invalid domain selected
+				$_POST['domain'] = '';
+			} else {
+				$_POST['domain'] = $domain_check;
+			}
+		} else {
+			$_POST['domain'] = $app->functions->idn_encode($_POST['domain']);
+			$_POST['domain'] = strtolower($_POST['domain']);
+		}
 	}
 	if(isset($_POST['ns1']) && $_POST['ns1'] != ''){
 		$_POST['ns1'] = $app->functions->idn_encode($_POST['ns1']);
@@ -245,7 +298,7 @@
 	if($_POST['ns2'] != '') $tpl_content = str_replace('{NS2}', $_POST['ns2'], $tpl_content);
 	if($_POST['email'] != '') $tpl_content = str_replace('{EMAIL}', $_POST['email'], $tpl_content);
 	if(isset($_POST['dkim']) && preg_match('/^[\w\.\-\/]{2,255}\.[a-zA-Z0-9\-]{2,30}[\.]{0,1}$/', $_POST['domain'])) {
-		$sql = $app->db->queryOneRecord("SELECT dkim_public, dkim_selecotr FROM mail_domain WHERE domain = ? AND dkim = 'y' AND ".$app->tform->getAuthSQL('r'), $_POST['domain']);
+		$sql = $app->db->queryOneRecord("SELECT dkim_public, dkim_selector FROM mail_domain WHERE domain = ? AND dkim = 'y' AND ".$app->tform->getAuthSQL('r'), $_POST['domain']);
 		$public_key = $sql['dkim_public'];
 		if ($public_key!='') {
 			if (empty($sql['dkim_selector'])) $sql['dkim_selector'] = 'default';
diff --git a/interface/web/dns/lib/lang/es.lng b/interface/web/dns/lib/lang/es.lng
index 1a3a008..06fa94a 100644
--- a/interface/web/dns/lib/lang/es.lng
+++ b/interface/web/dns/lib/lang/es.lng
@@ -18,5 +18,5 @@
 $wb['Add DNS Zone'] = 'Agregar Zona DNS';
 $wb['Templates'] = 'Plantillas';
 $wb['Secondary Zones'] = 'Zonas secundarias';
-$wb['Import Zone File'] = 'Zona de importación de archivo';
+$wb['Import Zone File'] = 'Importar archivo de zona';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_a.lng b/interface/web/dns/lib/lang/es_dns_a.lng
index 5de2a0d..c6df3dd 100644
--- a/interface/web/dns/lib/lang/es_dns_a.lng
+++ b/interface/web/dns/lib/lang/es_dns_a.lng
@@ -13,5 +13,5 @@
 $wb['data_error_empty'] = 'La dirección IP está vacía.';
 $wb['data_error_regex'] = 'El formato de la dirección IP no es válido.';
 $wb['data_error_duplicate'] = 'Registro A duplicado.';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['ttl_range_error'] = 'TTL mínimo es 60 segundos';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_a_list.lng b/interface/web/dns/lib/lang/es_dns_a_list.lng
index f9e8e1f..2cab326 100644
--- a/interface/web/dns/lib/lang/es_dns_a_list.lng
+++ b/interface/web/dns/lib/lang/es_dns_a_list.lng
@@ -4,7 +4,7 @@
 $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
 $wb['name_txt'] = 'Nombre';
-$wb['data_txt'] = 'Fecha';
+$wb['data_txt'] = 'Valor';
 $wb['aux_txt'] = 'Prioridad';
 $wb['type_txt'] = 'Tipo';
 $wb['add_new_record_txt'] = 'Añadir nuevo registro A';
diff --git a/interface/web/dns/lib/lang/es_dns_aaaa.lng b/interface/web/dns/lib/lang/es_dns_aaaa.lng
index a9994d3..adfcb6a 100644
--- a/interface/web/dns/lib/lang/es_dns_aaaa.lng
+++ b/interface/web/dns/lib/lang/es_dns_aaaa.lng
@@ -12,5 +12,5 @@
 $wb['name_error_regex'] = 'El nombre de la máquina tiene un formato incorrecto.';
 $wb['data_error_empty'] = 'La dirección IP está vacía.';
 $wb['data_error_regex'] = 'La dirección IP tiene un formato no válido.';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['ttl_range_error'] = 'TTL mínimo es 60 segundos';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_alias.lng b/interface/web/dns/lib/lang/es_dns_alias.lng
index 899d229..49d96f2 100644
--- a/interface/web/dns/lib/lang/es_dns_alias.lng
+++ b/interface/web/dns/lib/lang/es_dns_alias.lng
@@ -12,5 +12,5 @@
 $wb['name_error_regex'] = 'El formato del nombre de la máquina es incorrecto.';
 $wb['data_error_empty'] = 'El nombre de la maquina de destino está vacío';
 $wb['data_error_regex'] = 'El formato del nombre de la maquina de destino no es válido';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['ttl_range_error'] = 'TTL mínimo es 60 segundos';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_cname.lng b/interface/web/dns/lib/lang/es_dns_cname.lng
index c4cdc1c..e404390 100644
--- a/interface/web/dns/lib/lang/es_dns_cname.lng
+++ b/interface/web/dns/lib/lang/es_dns_cname.lng
@@ -13,5 +13,5 @@
 $wb['data_error_empty'] = 'El nombre de la máquina de destino está vacío.';
 $wb['data_error_regex'] = 'El nombre de la máquina de destino tiene un formato no válido.';
 $wb['data_error_duplicate'] = 'Duplicar el registro A o el registro CNAME';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['ttl_range_error'] = 'TTL mínimo es 60 segundos';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_hinfo.lng b/interface/web/dns/lib/lang/es_dns_hinfo.lng
index 0f0a4c4..0888fb6 100644
--- a/interface/web/dns/lib/lang/es_dns_hinfo.lng
+++ b/interface/web/dns/lib/lang/es_dns_hinfo.lng
@@ -12,5 +12,5 @@
 $wb['name_error_regex'] = 'El formato del nombre de máquina es incorrecto.';
 $wb['data_error_empty'] = 'La información del servidor está vacía.';
 $wb['data_error_regex'] = 'La información del servidor tiene un formato no válido.';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['ttl_range_error'] = 'TTL mínimo es 60 segundos';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_import.lng b/interface/web/dns/lib/lang/es_dns_import.lng
index b3bee50..7223f5c 100644
--- a/interface/web/dns/lib/lang/es_dns_import.lng
+++ b/interface/web/dns/lib/lang/es_dns_import.lng
@@ -1,14 +1,14 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['client_txt'] = 'Cliente';
-$wb['btn_save_txt'] = 'Import Zonefile';
+$wb['btn_save_txt'] = 'Importar Archivo';
 $wb['btn_cancel_txt'] = 'Cancelar';
 $wb['domain_txt'] = 'Dominio';
 $wb['zone_file_successfully_imported_txt'] = '¡El archivo de zona ha sido importado con éxito!';
 $wb['error_no_valid_zone_file_txt'] = '¡Esto parece que no hay archivo de zona válido!';
-$wb['zonefile_to_import_txt'] = 'Zona de archivo';
+$wb['zonefile_to_import_txt'] = 'Archivo de zona';
 $wb['domain_field_desc_txt'] = 'Se puede dejar vacío si el nombre de dominio es el nombre del archivo o el contenido de la zona de archivo.';
 $wb['title'] = 'Archivos de zona de importación';
-$wb['no_file_uploaded_error'] = 'No hay fichero en zona subida';
-$wb['zone_file_import_txt'] = 'Zone File Import';
+$wb['no_file_uploaded_error'] = 'No se ha subido un fichero de zona';
+$wb['zone_file_import_txt'] = 'Importar Archivo de Zona';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_mx.lng b/interface/web/dns/lib/lang/es_dns_mx.lng
index 1933738..f301093 100644
--- a/interface/web/dns/lib/lang/es_dns_mx.lng
+++ b/interface/web/dns/lib/lang/es_dns_mx.lng
@@ -13,6 +13,6 @@
 $wb['name_error_regex'] = 'El formato del nombre de la máquina es incorrecto.';
 $wb['data_error_empty'] = 'El nombre del servidor de correo está vacío.';
 $wb['data_error_regex'] = 'El nombre del servidor de correo no es válido.';
-$wb['duplicate_mx_record_txt'] = 'Duplicate MX record.';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['duplicate_mx_record_txt'] = 'Registro MX duplicado.';
+$wb['ttl_range_error'] = 'TTL mínimo es 60 segundos';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_ns.lng b/interface/web/dns/lib/lang/es_dns_ns.lng
index 50ec8dc..f50e866 100644
--- a/interface/web/dns/lib/lang/es_dns_ns.lng
+++ b/interface/web/dns/lib/lang/es_dns_ns.lng
@@ -12,5 +12,5 @@
 $wb['name_error_regex'] = 'El formato de la zona es incorrecto';
 $wb['data_error_empty'] = 'El servidor de nombres está vacío.';
 $wb['data_error_regex'] = 'El formato del servidor de nombres no es válido.';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['ttl_range_error'] = 'TTL mínimo es 60 segundos';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_ptr.lng b/interface/web/dns/lib/lang/es_dns_ptr.lng
index 66ba9bc..1c9df5b 100644
--- a/interface/web/dns/lib/lang/es_dns_ptr.lng
+++ b/interface/web/dns/lib/lang/es_dns_ptr.lng
@@ -12,5 +12,5 @@
 $wb['name_error_regex'] = 'El nombre tiene un formato incorrecto.';
 $wb['data_error_empty'] = 'El nombre canónico está vacío.';
 $wb['data_error_regex'] = 'El formato del nombre canónico no es válido.';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['ttl_range_error'] = 'TTL mínimo es 60 segundos';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_rp.lng b/interface/web/dns/lib/lang/es_dns_rp.lng
index b484769..2303906 100644
--- a/interface/web/dns/lib/lang/es_dns_rp.lng
+++ b/interface/web/dns/lib/lang/es_dns_rp.lng
@@ -12,5 +12,5 @@
 $wb['name_error_regex'] = 'El formato de nombre de la máquina no es correcto.';
 $wb['data_error_empty'] = 'El nombre de la persona responsable está vacío.';
 $wb['data_error_regex'] = 'El nombre de la persona responsable no es válido.';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['ttl_range_error'] = 'TTL mínimo es 60 segundos';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_slave.lng b/interface/web/dns/lib/lang/es_dns_slave.lng
index 2de0f53..5143bc5 100644
--- a/interface/web/dns/lib/lang/es_dns_slave.lng
+++ b/interface/web/dns/lib/lang/es_dns_slave.lng
@@ -12,6 +12,6 @@
 $wb['origin_error_regex'] = 'La zona tiene un formato inválido.';
 $wb['ns_error_regex'] = 'Registro NS tiene un formato inválido.';
 $wb['eg_domain_tld'] = 'e.g. domain.tld.';
-$wb['ipv4_form_txt'] = 'IPv4 form - e.g. 1.2.3.4';
-$wb['secondary_zone_txt'] = 'Secondary DNS Zone';
+$wb['ipv4_form_txt'] = 'Formato IPv4 - e.g. 1.2.3.4';
+$wb['secondary_zone_txt'] = 'Zona DNS Secundaria';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_soa.lng b/interface/web/dns/lib/lang/es_dns_soa.lng
index 45c66a9..7986d72 100644
--- a/interface/web/dns/lib/lang/es_dns_soa.lng
+++ b/interface/web/dns/lib/lang/es_dns_soa.lng
@@ -2,7 +2,7 @@
 $wb['server_id_txt'] = 'Servidor';
 $wb['origin_txt'] = 'Zona (SOA)';
 $wb['ns_txt'] = 'NS';
-$wb['mbox_txt'] = 'correo';
+$wb['mbox_txt'] = 'Correo';
 $wb['serial_txt'] = 'Nº de serie';
 $wb['refresh_txt'] = 'Refrescar';
 $wb['retry_txt'] = 'Reintentar';
@@ -28,11 +28,11 @@
 $wb['eg_domain_tld'] = 'ej. domain.tld';
 $wb['eg_ns1_domain_tld'] = 'ej. ns1.domain.tld';
 $wb['eg_webmaster_domain_tld'] = 'ej. webmaster@domain.tld';
-$wb['The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'] = 'El dominio no puede ser cambiado. Por favor, pregunte a su administrador si desea cambiar el nombre de dominio.';
-$wb['refresh_range_error'] = 'Min. Refresh time is 60 seconds.';
-$wb['retry_range_error'] = 'Min. Retry time is 60 seconds.';
-$wb['expire_range_error'] = 'Min. Expire time is 60 seconds.';
-$wb['minimum_range_error'] = 'Min. Minimum time is 60 seconds.';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
-$wb['xfer_error_regex'] = 'Also notify: Please use an IP address.';
+$wb['The Domain can not be changed. Please ask your Administrator if you want to change the domain name.'] = 'El dominio no se puede cambiar. Por favor, pregunte a su administrador si desea cambiar el nombre del dominio.';
+$wb['refresh_range_error'] = 'Refrescar debe ser como mínimo 60 segundos.';
+$wb['retry_range_error'] = 'Reintentar debe ser como mínimo 60 segundos.';
+$wb['expire_range_error'] = 'Expirar debe ser como mínimo 60 segundos.';
+$wb['minimum_range_error'] = 'Mínimo debe ser como mínimo 60 segundos.';
+$wb['ttl_range_error'] = 'TTL debe ser como mínimo 60 segundos';
+$wb['xfer_error_regex'] = 'Notificar también a: Por favor, usa una dirección IP.';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_soa_list.lng b/interface/web/dns/lib/lang/es_dns_soa_list.lng
index ef8b1d7..0a67ea1 100644
--- a/interface/web/dns/lib/lang/es_dns_soa_list.lng
+++ b/interface/web/dns/lib/lang/es_dns_soa_list.lng
@@ -7,4 +7,5 @@
 $wb['mbox_txt'] = 'Correo';
 $wb['add_new_record_txt'] = 'Añadir una nueva zona DNS (SOA)';
 $wb['add_new_record_wizard_txt'] = 'Añadir una nueva zona DNS con Asistente';
+$wb['import_zone_file_txt'] = 'Importar archivo de zona';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_srv.lng b/interface/web/dns/lib/lang/es_dns_srv.lng
index e6a7bec..5809368 100644
--- a/interface/web/dns/lib/lang/es_dns_srv.lng
+++ b/interface/web/dns/lib/lang/es_dns_srv.lng
@@ -2,10 +2,10 @@
 $wb['server_id_txt'] = 'Servidor';
 $wb['zone_txt'] = 'Zona';
 $wb['name_txt'] = 'Nombre de la máquina';
-$wb['type_txt'] = 'tipo';
-$wb['target_txt'] = 'Target';
-$wb['weight_txt'] = 'Weight';
-$wb['port_txt'] = 'Port';
+$wb['type_txt'] = 'Tipo';
+$wb['target_txt'] = 'Destino';
+$wb['weight_txt'] = 'Peso';
+$wb['port_txt'] = 'Puerto';
 $wb['ttl_txt'] = 'TTL';
 $wb['active_txt'] = 'Activar';
 $wb['limit_dns_record_txt'] = 'Se ha alcanzado el número máximo de registros DNS de esta cuenta.';
@@ -15,6 +15,6 @@
 $wb['data_error_empty'] = 'El registro del servidor está vacío.';
 $wb['data_error_regex'] = 'El registro del servidor no es válido.';
 $wb['srv_error_regex'] = 'El formato del registro del servidor no es válido. El registro del servidor debe contener tres cadenas de texto separadas por espacios.';
-$wb['aux_txt'] = 'Priority';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['aux_txt'] = 'Prioridad';
+$wb['ttl_range_error'] = 'TTL mínimo es 60 segundos';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_txt.lng b/interface/web/dns/lib/lang/es_dns_txt.lng
index 196f838..3855096 100644
--- a/interface/web/dns/lib/lang/es_dns_txt.lng
+++ b/interface/web/dns/lib/lang/es_dns_txt.lng
@@ -12,5 +12,5 @@
 $wb['name_error_regex'] = 'El formato del nombre de la máquina es incorrecto.';
 $wb['data_error_empty'] = 'Texto vacío.';
 $wb['data_error_regex'] = 'Formato de texto no válido';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
+$wb['ttl_range_error'] = 'TTL mínimo es 60 segundos';
 ?>
diff --git a/interface/web/dns/lib/lang/es_dns_wizard.lng b/interface/web/dns/lib/lang/es_dns_wizard.lng
index 7ecc1e0..c7935f7 100644
--- a/interface/web/dns/lib/lang/es_dns_wizard.lng
+++ b/interface/web/dns/lib/lang/es_dns_wizard.lng
@@ -10,32 +10,32 @@
 $wb['ns2_txt'] = 'NS 2';
 $wb['ip_txt'] = 'Dirección IP';
 $wb['ipv6_txt'] = 'Dirección IPv6';
-$wb['error_origin_empty'] = 'El campo Origen está vacío.';
+$wb['error_origin_empty'] = 'El campo \"origin\" (origen) está vacío.';
 $wb['error_ns_empty'] = 'El campo NS está vacío.';
-$wb['error_mbox_empty'] = 'El campo Mbox está vacío.';
-$wb['error_refresh_empty'] = 'El campo Refresco está vacío.';
-$wb['error_retry_empty'] = 'El campo Reintentar está vacío.';
-$wb['error_expire_empty'] = 'El campo Expirar está vacío.';
-$wb['error_minimum_empty'] = 'El campo Mínimo está vacío.';
-$wb['error_ttl_empty'] = 'El campo TTL está vacío.';
+$wb['error_mbox_empty'] = 'El campo mbox está vacío.';
+$wb['error_refresh_empty'] = 'El campo \"refresh\" (refresco) está vacío.';
+$wb['error_retry_empty'] = 'El campo \"retry\" (reintentar) está vacío.';
+$wb['error_expire_empty'] = 'El campo \"expire\" (expirar) está vacío.';
+$wb['error_minimum_empty'] = 'El campo \"minimum\" (mínimo) está vacío.';
+$wb['error_ttl_empty'] = 'El campo \"TTL\" está vacío.';
 $wb['error_domain_empty'] = 'El campo Dominio está vacío.';
 $wb['error_ip_empty'] = 'El campo IP está vacío.';
 $wb['error_ipv6_empty'] = 'El campo IPv6 está vacío.';
 $wb['error_ns1_empty'] = 'El campo NS1 está vacío.';
 $wb['error_ns2_empty'] = 'El campo NS2 está vacío.';
-$wb['error_email_empty'] = 'El campo Correo electrónico está vacío.';
+$wb['error_email_empty'] = 'El campo Correo está vacío.';
 $wb['error_domain_regex'] = 'El dominio contiene caracteres inválidos.';
 $wb['error_ns1_regex'] = 'NS1 contiene caracteres inválidos.';
 $wb['error_ns2_regex'] = 'NS2 contiene caracteres inválidos.';
 $wb['error_email_regex'] = 'El campo Correo no contiene una dirección válida.';
-$wb['list_head_txt'] = 'DNS Zone Wizard';
-$wb['list_desc_txt'] = 'Create a DNS Zone via a wizard';
-$wb['dns_zone_txt'] = 'DNS Zone';
-$wb['globalsearch_resultslimit_of_txt'] = 'of';
-$wb['globalsearch_resultslimit_results_txt'] = 'results';
-$wb['globalsearch_noresults_text_txt'] = 'No results.';
-$wb['globalsearch_noresults_limit_txt'] = '0 results';
-$wb['globalsearch_searchfield_watermark_txt'] = 'Search';
-$wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
-$wb['dkim_txt'] = 'DKIM enabled';
+$wb['list_head_txt'] = 'Asistente de Zona DNS';
+$wb['list_desc_txt'] = 'Crear una zona DNS con asistente';
+$wb['dns_zone_txt'] = 'Zona DNS';
+$wb['globalsearch_resultslimit_of_txt'] = 'de';
+$wb['globalsearch_resultslimit_results_txt'] = 'resultados';
+$wb['globalsearch_noresults_text_txt'] = 'Sin resultados.';
+$wb['globalsearch_noresults_limit_txt'] = '0 resultados';
+$wb['globalsearch_searchfield_watermark_txt'] = 'Buscar';
+$wb['globalsearch_suggestions_text_txt'] = 'Sugerencias';
+$wb['dkim_txt'] = 'DKIM activado';
 ?>
diff --git a/interface/web/dns/lib/lang/fr_dns_dkim.lng b/interface/web/dns/lib/lang/fr_dns_dkim.lng
index 19dd5ea..7c98c1c 100644
--- a/interface/web/dns/lib/lang/fr_dns_dkim.lng
+++ b/interface/web/dns/lib/lang/fr_dns_dkim.lng
@@ -1,10 +1,10 @@
 <?php
-$wb["public_key_txt"] = 'Clé publiquePublic-Key';
+$wb["public_key_txt"] = 'CléubliquePublic-Key';
 $wb["ttl_txt"] = 'TTL';
 $wb["active_txt"] = 'Actif';
-$wb["record_exists_txt"] = 'L\'enregistrement DNS exist déjà';
-$wb["limit_dns_record_txt"] = 'Le nombre max. d\'enregistrement DNS pour votre compte à été atteint.';
-$wb["no_zone_perm"] = 'Vous n\'avez pas la permission d\'ajouter un enregistrement à cette Zone DNS.';
-$wb['ttl_range_error'] = 'Min. TTL time is 60 seconds.';
-$wb['selector_txt'] = 'DKIM-Selector';
+$wb["record_exists_txt"] = 'L\'enregistrement DNS exist dé';
+$wb["limit_dns_record_txt"] = 'Le nombre max. d\'enregistrement DNS pour votre compte àtétteint.';
+$wb["no_zone_perm"] = 'Vous n\'avez pas la permission d\'ajouter un enregistrement àette Zone DNS.';
+$wb['ttl_range_error'] = 'Le temps minimum TTL est de 60 secondes.';
+$wb['selector_txt'] = 'Selecteur DKIM';
 ?>
diff --git a/interface/web/dns/lib/lang/fr_dns_wizard.lng b/interface/web/dns/lib/lang/fr_dns_wizard.lng
index 74c5d84..6b31c30 100644
--- a/interface/web/dns/lib/lang/fr_dns_wizard.lng
+++ b/interface/web/dns/lib/lang/fr_dns_wizard.lng
@@ -1,12 +1,12 @@
 <?php
-$wb['template_id_txt'] = 'Modèle';
+$wb['template_id_txt'] = 'Modè';
 $wb['server_id_txt'] = 'Serveur';
 $wb['client_txt'] = 'Client';
-$wb['btn_save_txt'] = 'Créer l\'enregistrement DNS';
+$wb['btn_save_txt'] = 'Cré l\'enregistrement DNS';
 $wb['btn_cancel_txt'] = 'Annuler';
 $wb['domain_txt'] = 'Domaine';
 $wb['email_txt'] = 'Email';
-$wb['dkim_txt'] = 'DKIM activé';
+$wb['dkim_txt'] = 'DKIM activé
 $wb['ns1_txt'] = 'NS 1';
 $wb['ns2_txt'] = 'NS 2';
 $wb['ip_txt'] = 'Adresse IP';
@@ -14,9 +14,9 @@
 $wb['error_origin_empty'] = 'Origine vide.';
 $wb['error_ns_empty'] = 'NS vide.';
 $wb['error_mbox_empty'] = 'Mbox vide.';
-$wb['error_refresh_empty'] = 'Refresh vide.';
-$wb['error_retry_empty'] = 'Retry vide.';
-$wb['error_expire_empty'] = 'Expire vide.';
+$wb['error_refresh_empty'] = 'Rafraichissement vide.';
+$wb['error_retry_empty'] = 'Re-essayer vide.';
+$wb['error_expire_empty'] = 'Expiration vide.';
 $wb['error_minimum_empty'] = 'Minimum vide.';
 $wb['error_ttl_empty'] = 'TTL vide.';
 $wb['error_domain_empty'] = 'Domaine vide';
@@ -25,19 +25,22 @@
 $wb['error_ns1_empty'] = 'NS1 vide.';
 $wb['error_ns2_empty'] = 'NS2 vide.';
 $wb['error_email_empty'] = 'Email vide.';
-$wb['error_domain_regex'] = 'Le domaine contient des caractères invalides.';
-$wb['error_ns1_regex'] = 'NS1 contient des caractères invalides.';
-$wb['error_ns2_regex'] = 'NS2 contient des caractères invalides.';
+$wb['error_domain_regex'] = 'Le domaine contient des caractès invalides.';
+$wb['error_ns1_regex'] = 'NS1 contient des caractès invalides.';
+$wb['error_ns2_regex'] = 'NS2 contient des caractès invalides.';
 $wb['error_email_regex'] = 'L\'email ne contient pas une adresse email valide.';
 $wb['dns_zone_txt'] = 'Zone DNS';
 $wb['globalsearch_resultslimit_of_txt'] = 'de';
 $wb['globalsearch_resultslimit_results_txt'] = 'resultats';
-$wb['globalsearch_noresults_text_txt'] = 'Pas de résultat.';
+$wb['globalsearch_noresults_text_txt'] = 'Pas de réltat.';
 $wb['globalsearch_noresults_limit_txt'] = '0 resultat';
 $wb['globalsearch_searchfield_watermark_txt'] = 'Chercher';
 $wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
-$wb['error_no_server_id'] = 'Aucun serveur fourni.';
-$wb['error_not_allowed_server_id'] = 'Le serveur choisi n\'est pas autorisé pour ce compte.';
 $wb['list_head_txt'] = 'Assistant Zone DNS';
-$wb['list_desc_txt'] = 'Créer une Zone DNS via l\'assistant';
+$wb['list_desc_txt'] = 'Cré une Zone DNS via l\'assistant';
+$wb['error_no_server_id'] = 'Aucun serveur fourni.';
+$wb['error_not_allowed_server_id'] = 'Le serveur choisi n\'est pas autoriséour ce compte.';
+$wb['list_head_txt'] = 'Assistant Zone DNS';
+$wb['list_desc_txt'] = 'Cré une Zone DNS via l\'assistant';
 ?>
+
diff --git a/interface/web/dns/templates/dns_import.htm b/interface/web/dns/templates/dns_import.htm
index 98049a4..d4806e1 100644
--- a/interface/web/dns/templates/dns_import.htm
+++ b/interface/web/dns/templates/dns_import.htm
@@ -32,7 +32,14 @@
             </tmpl_if>
             <div class="ctrlHolder">
                 <label for="domain">{tmpl_var name='domain_txt'}</label>
-                <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" onkeydown="keydown(event.which);" /><p class="value">{tmpl_var name='domain_field_desc_txt'}</p>
+                <tmpl_if name="domain_option">
+                    <select name="domain" id="domain" class="selectInput">
+                        {tmpl_var name='domain_option'}
+                    </select>
+                    <tmpl_else>
+                        <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" onkeydown="keydown(event.which);" />
+                </tmpl_if>
+                <p class="value"><tmpl_var name='domain_field_desc_txt'}</p>
             </div>    
             <div class="ctrlHolder">
                 <label for="file">{tmpl_var name='zonefile_to_import_txt'}</label>
diff --git a/interface/web/dns/templates/dns_slave_edit.htm b/interface/web/dns/templates/dns_slave_edit.htm
index 8aa9b03..3c212bc 100644
--- a/interface/web/dns/templates/dns_slave_edit.htm
+++ b/interface/web/dns/templates/dns_slave_edit.htm
@@ -20,24 +20,34 @@
                             </select>
                     </tmpl_if>
                 </div>
-                <div class="ctrlHolder">
-                    <label for="client_group_id">{tmpl_var name='client_txt'}</label>
-                    <select name="client_group_id" id="client_group_id" class="selectInput">
-                        {tmpl_var name='client_group_id'}
-                    </select>
-                </div>
+                <tmpl_unless name="domain_option">
+                    <div class="ctrlHolder">
+                        <label for="client_group_id">{tmpl_var name='client_txt'}</label>
+                        <select name="client_group_id" id="client_group_id" class="selectInput">
+                            {tmpl_var name='client_group_id'}
+                        </select>
+                    </div>
+                </tmpl_unless>
             </tmpl_if>
             <tmpl_if name="is_reseller">
-                <div class="ctrlHolder">
-                    <label for="client_group_id">{tmpl_var name='client_txt'}</label>
-                    <select name="client_group_id" id="client_group_id" class="selectInput">
-                        {tmpl_var name='client_group_id'}
-                    </select>
-                </div>
+                <tmpl_unless name="domain_option">
+                    <div class="ctrlHolder">
+                        <label for="client_group_id">{tmpl_var name='client_txt'}</label>
+                        <select name="client_group_id" id="client_group_id" class="selectInput">
+                            {tmpl_var name='client_group_id'}
+                        </select>
+                    </div>
+                </tmpl_unless>
             </tmpl_if>
             <div class="ctrlHolder">
                 <label for="origin">{tmpl_var name='origin_txt'}</label>
-                <input name="origin" id="origin" value="{tmpl_var name='origin'}" size="30" maxlength="255" type="text" class="textInput" />
+                <tmpl_if name="domain_option">
+                    <select name="origin" id="origin" class="selectInput">
+                        {tmpl_var name='domain_option'}
+                    </select>
+                    <tmpl_else>
+                        <input name="origin" id="origin" value="{tmpl_var name='origin'}" size="30" maxlength="255" type="text" class="textInput" />
+                </tmpl_if>
                 <p class="formHint">{tmpl_var name='eg_domain_tld'}</p>
             </div>
             <div class="ctrlHolder">
@@ -94,4 +104,4 @@
         searchFieldWatermark: '',
         resultBoxPosition: 'e'
     });	
-</script>
\ No newline at end of file
+</script>
diff --git a/interface/web/dns/templates/dns_soa_edit.htm b/interface/web/dns/templates/dns_soa_edit.htm
index 27bb761..d222dff 100644
--- a/interface/web/dns/templates/dns_soa_edit.htm
+++ b/interface/web/dns/templates/dns_soa_edit.htm
@@ -20,12 +20,14 @@
                             </select>
                     </tmpl_if>
                 </div>
-                <div class="ctrlHolder">
-                    <label for="client_group_id">{tmpl_var name='client_txt'}</label>
-                    <select name="client_group_id" id="client_group_id" class="selectInput">
-                        {tmpl_var name='client_group_id'}
-                    </select>
-                </div>
+                <tmpl_unless name="domain_option">
+                    <div class="ctrlHolder">
+                        <label for="client_group_id">{tmpl_var name='client_txt'}</label>
+                        <select name="client_group_id" id="client_group_id" class="selectInput">
+                            {tmpl_var name='client_group_id'}
+                        </select>
+                    </div>
+                </tmpl_unless>
             <tmpl_else>
                 <tmpl_if name="only_one_server">
                     <input type="hidden" id="server_id" name="server_id" value="{tmpl_var name='server_id_value'}" />
@@ -47,16 +49,24 @@
                 </tmpl_if>
             </tmpl_if>
             <tmpl_if name="is_reseller">
-                <div class="ctrlHolder">
-                    <label for="client_group_id">{tmpl_var name='client_txt'}</label>
-                    <select name="client_group_id" id="client_group_id" class="selectInput">
-                        {tmpl_var name='client_group_id'}
-                    </select>
-                </div>
+                <tmpl_unless name="domain_option">
+                    <div class="ctrlHolder">
+                        <label for="client_group_id">{tmpl_var name='client_txt'}</label>
+                        <select name="client_group_id" id="client_group_id" class="selectInput">
+                            {tmpl_var name='client_group_id'}
+                        </select>
+                    </div>
+                </tmpl_unless>
             </tmpl_if>
             <div class="ctrlHolder">
                 <label for="origin">{tmpl_var name='origin_txt'}</label>
-                <input name="origin" id="origin" value="{tmpl_var name='origin'}" size="30" maxlength="255" type="text" class="textInput" />
+                <tmpl_if name="domain_option">
+                    <select name="origin" id="origin" class="selectInput">
+                        {tmpl_var name='domain_option'}
+                    </select>
+                    <tmpl_else>
+                        <input name="origin" id="origin" value="{tmpl_var name='origin'}" size="30" maxlength="255" type="text" class="textInput" />
+                </tmpl_if>
                 <p class="formHint">{tmpl_var name='eg_domain_tld'}</p>
             </div>
             <div class="ctrlHolder">
@@ -147,4 +157,4 @@
         searchFieldWatermark: '',
         resultBoxPosition: 'e'
     });
-</script>
\ No newline at end of file
+</script>
diff --git a/interface/web/dns/templates/dns_wizard.htm b/interface/web/dns/templates/dns_wizard.htm
index c6cddb0..d518b4a 100644
--- a/interface/web/dns/templates/dns_wizard.htm
+++ b/interface/web/dns/templates/dns_wizard.htm
@@ -22,12 +22,14 @@
                         {tmpl_var name='server_id'}
                     </select>
                 </div>
-                <div class="ctrlHolder">
-                    <label for="client_group_id">{tmpl_var name='client_txt'}</label>
-                    <select name="client_group_id" id="client_group_id" class="selectInput">
-                        {tmpl_var name='client_group_id'}
-                    </select>
-                </div>
+                <tmpl_unless name="domain_option">
+                    <div class="ctrlHolder">
+                        <label for="client_group_id">{tmpl_var name='client_txt'}</label>
+                        <select name="client_group_id" id="client_group_id" class="selectInput">
+                            {tmpl_var name='client_group_id'}
+                        </select>
+                    </div>
+                </tmpl_unless>
             <tmpl_else>
                 <tmpl_if name="only_one_server">
                     <input type="hidden" id="server_id" name="server_id" value="{tmpl_var name='server_id_value'}" />
@@ -41,17 +43,25 @@
                 </tmpl_if>
             </tmpl_if>
             <tmpl_if name="is_reseller">
-                <div class="ctrlHolder">
-                    <label for="client_group_id">{tmpl_var name='client_txt'}</label>
-                    <select name="client_group_id" id="client_group_id" class="selectInput">
-                        {tmpl_var name='client_group_id'}
-                    </select>
-                </div>
+                <tmpl_unless name="domain_option">
+                    <div class="ctrlHolder">
+                        <label for="client_group_id">{tmpl_var name='client_txt'}</label>
+                        <select name="client_group_id" id="client_group_id" class="selectInput">
+                            {tmpl_var name='client_group_id'}
+                        </select>
+                    </div>
+                </tmpl_unless>
             </tmpl_if>
             <tmpl_if name="DOMAIN_VISIBLE">
                 <div class="ctrlHolder">
                     <label for="domain">{tmpl_var name='domain_txt'}</label>
-                    <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" />
+                    <tmpl_if name="domain_option">
+                        <select name="domain" id="domain" class="selectInput">
+                            {tmpl_var name='domain_option'}
+                        </select>
+                        <tmpl_else>
+                            <input name="domain" id="domain" value="{tmpl_var name='domain'}" size="30" maxlength="255" type="text" class="textInput" />
+                    </tmpl_if>
                 </div>
             </tmpl_if>
             <tmpl_if name="IP_VISIBLE">
diff --git a/interface/web/help/lib/lang/es.lng b/interface/web/help/lib/lang/es.lng
index ff123b1..a76cff1 100644
--- a/interface/web/help/lib/lang/es.lng
+++ b/interface/web/help/lib/lang/es.lng
@@ -5,10 +5,10 @@
 $wb['View messages'] = 'Ver mensajes';
 $wb['Support'] = 'Soporte';
 $wb['About ISPConfig'] = 'Acerca de ISPConfig';
-$wb['Version'] = 'Version';
+$wb['Version'] = 'Versión';
 $wb['Frequently Asked Questions'] = 'Preguntas frecuentes';
-$wb['FAQ Sections'] = 'Secciones FAQ';
+$wb['FAQ Sections'] = 'Secciones de FAQ';
 $wb['Manage Sections'] = 'Gestionar las Secciones';
-$wb['Add a Question & Answer Pair'] = 'Añadir un par de preguntas y respuestas';
+$wb['Add a Question & Answer Pair'] = 'Añadir una pregunta';
 $wb['Manage Questions'] = 'Administrar preguntas';
 ?>
diff --git a/interface/web/help/lib/lang/es_faq_manage_questions_list.lng b/interface/web/help/lib/lang/es_faq_manage_questions_list.lng
index 040f4dc..c32593a 100644
--- a/interface/web/help/lib/lang/es_faq_manage_questions_list.lng
+++ b/interface/web/help/lib/lang/es_faq_manage_questions_list.lng
@@ -5,5 +5,5 @@
 $wb['faq_edit_txt'] = 'Editar';
 $wb['faq_sections_txt'] = 'Secciones';
 $wb['faq_faq_questions_txt'] = 'Preguntas frecuentes';
-$wb['faq_new_question_txt'] = 'Agregar un nueva par pregunta y respuesta';
+$wb['faq_new_question_txt'] = 'Agregar una nueva pregunta';
 ?>
diff --git a/interface/web/help/lib/lang/es_help_faq_sections_list.lng b/interface/web/help/lib/lang/es_help_faq_sections_list.lng
index cb6ce84..afb7cc7 100644
--- a/interface/web/help/lib/lang/es_help_faq_sections_list.lng
+++ b/interface/web/help/lib/lang/es_help_faq_sections_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['faq_section_name_txt'] = 'Section Name';
-$wb['faq_delete_txt'] = 'Delete';
-$wb['faq_edit_txt'] = 'Edit';
-$wb['faq_sections_txt'] = 'Sections';
-$wb['faq_faq_sections_txt'] = 'FAQ Sections';
-$wb['faq_new_section_txt'] = 'Add a new section';
+$wb['faq_section_name_txt'] = 'Nombre de Sección';
+$wb['faq_delete_txt'] = 'Eliminar';
+$wb['faq_edit_txt'] = 'Editar';
+$wb['faq_sections_txt'] = 'Secciones';
+$wb['faq_faq_sections_txt'] = 'Secciones de FAQ';
+$wb['faq_new_section_txt'] = 'Añadir una nueva sección';
 ?>
diff --git a/interface/web/help/lib/lang/es_support_message.lng b/interface/web/help/lib/lang/es_support_message.lng
index d0b8d04..cab8587 100644
--- a/interface/web/help/lib/lang/es_support_message.lng
+++ b/interface/web/help/lib/lang/es_support_message.lng
@@ -3,13 +3,13 @@
 $wb['sender_id_txt'] = 'ID Remitente';
 $wb['subject_txt'] = 'Asunto';
 $wb['message_txt'] = 'Mensaje';
-$wb['tstamp_txt'] = 'Marca de tiempo';
+$wb['tstamp_txt'] = 'Hora';
 $wb['reply_txt'] = 'Responder';
-$wb['date_txt'] = 'Date';
-$wb['support_request_subject_txt'] = 'Support Request';
-$wb['support_request_txt'] = 'You have got a support request. Please don\'t reply to this email, but process the support request inside ISPConfig.';
-$wb['answer_to_support_request_txt'] = 'You have got a reply to your support request. Please don\'t reply to this email, but process the message inside ISPConfig.';
-$wb['answer_to_support_request_sent_txt'] = 'Your reply to the support request has been sent. Please don\'t reply to this email.';
-$wb['support_request_sent_txt'] = 'Your support request has been sent. Please don\'t reply to this email.';
-$wb['recipient_or_sender_email_address_not_valid_txt'] = 'The message could not be sent because the recipient and/or the sender email address is not valid.';
+$wb['date_txt'] = 'Fecha';
+$wb['support_request_subject_txt'] = 'Petición de soporte';
+$wb['support_request_txt'] = 'Tienes una petición de soporte. Por favor no responda a este correo, procese la petición de soporte desde el panel de gestión.';
+$wb['answer_to_support_request_txt'] = 'Tienes una respuesta a tu petición de soporte. Por favor no responda a este correo, responda el correo desde el panel de gestión.';
+$wb['answer_to_support_request_sent_txt'] = 'Se ha enviado tu respuesta a la petición de soporte. Por favor no responda a este correo.';
+$wb['support_request_sent_txt'] = 'Se ha enviado tu petición de soporte. Por favor no responda a este correo.';
+$wb['recipient_or_sender_email_address_not_valid_txt'] = 'No se pudo enviar el mensaje porque el destinatario y/o remitente no es válido.';
 ?>
diff --git a/interface/web/help/lib/lang/es_support_message_list.lng b/interface/web/help/lib/lang/es_support_message_list.lng
index 9db4de7..a6594af 100644
--- a/interface/web/help/lib/lang/es_support_message_list.lng
+++ b/interface/web/help/lib/lang/es_support_message_list.lng
@@ -3,5 +3,5 @@
 $wb['sender_id_txt'] = 'Remitente';
 $wb['subject_txt'] = 'Asunto';
 $wb['add_new_record_txt'] = 'Crear nuevo mensaje de soporte';
-$wb['date_txt'] = 'Date';
+$wb['date_txt'] = 'Fecha';
 ?>
diff --git a/interface/web/login/lib/lang/es.lng b/interface/web/login/lib/lang/es.lng
index 96c8777..0a35fcb 100644
--- a/interface/web/login/lib/lang/es.lng
+++ b/interface/web/login/lib/lang/es.lng
@@ -14,14 +14,14 @@
 $wb['username_txt'] = 'Nombre de usuario';
 $wb['password_txt'] = 'Contraseña';
 $wb['login_button_txt'] = 'Iniciar sesión';
-$wb['login_txt'] = 'Login';
-$wb['pw_lost_txt'] = 'Password lost';
-$wb['pw_reset_txt'] = 'Password reset';
-$wb['pw_button_txt'] = 'Resend password';
-$wb['email_txt'] = 'Email';
-$wb['error_maintenance_mode'] = 'This ISPConfig installation is currently under maintenance. We should be back shortly. Thank you for your patience.';
-$wb['theme_not_compatible'] = 'The chosen theme is not compatible with the current ISPConfig version. Please check for a new version of the theme.<br />The default theme as been activated automatically.';
-$wb['back_txt'] = 'Back';
-$wb['email_error'] = 'Email contains unallowed characters or has a invalid format.';
-$wb['stay_logged_in_txt'] = 'Keep me logged in';
+$wb['login_txt'] = 'Iniciar Sesión';
+$wb['pw_lost_txt'] = 'Olvidé la contraseña';
+$wb['pw_reset_txt'] = 'Restablecer contraseña';
+$wb['pw_button_txt'] = 'Reenviar contraseña';
+$wb['email_txt'] = 'Dirección de correo';
+$wb['error_maintenance_mode'] = 'El panel de gestión está bajo mantenimiento. Debería funcionar en un breve tiempo. Gracias por su paciencia.';
+$wb['theme_not_compatible'] = 'El tema elegido no es compatible con la versión actual. Por favor busca una nueva versión del tema.<br />Se ha activado automáticamente el tema por defecto.';
+$wb['back_txt'] = 'Volver';
+$wb['email_error'] = 'La dirección de correo contiene caracteres no permitidos o no es válida.';
+$wb['stay_logged_in_txt'] = 'Permanecer conectado';
 ?>
diff --git a/interface/web/login/lib/lang/es_login_as.lng b/interface/web/login/lib/lang/es_login_as.lng
index c660ff1..d21a507 100644
--- a/interface/web/login/lib/lang/es_login_as.lng
+++ b/interface/web/login/lib/lang/es_login_as.lng
@@ -1,11 +1,8 @@
 <?php
-$wb['login_1_txt'] = 'Do you want to login as user';
-$wb['login_2_txt'] = 'If you do so, you can \\"go back\\" by clicking at logout.';
-$wb['btn_yes_txt'] = 'Yes, login as Client';
-$wb['btn_back_txt'] = 'No, back to list';
-$wb['udp_port_help_txt'] = 'Separated by comma';
-$wb['active_txt'] = 'Active';
-$wb['firewall_error_unique'] = 'There is already a firewall record for this server.';
-$wb['tcp_ports_error_regex'] = 'Character not allowed in tcp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
-$wb['udp_ports_error_regex'] = 'Character not allowed in udp port definition. Allowed characters are numbers, \\":\\" and \\",\\".';
+$wb['login_1_txt'] = '¿Quieres iniciar sesión como el usuario';
+$wb['login_2_txt'] = 'Si lo haces, puedes "volver" pulsando en salir.';
+$wb['btn_yes_txt'] = 'Sí, iniciar sesión como cliente';
+$wb['btn_back_txt'] = 'No, volver al listado';
+$wb['udp_port_help_txt'] = 'Separado por coma';
+$wb['active_txt'] = 'Activo';
 ?>
diff --git a/interface/web/mail/lib/lang/en_mail_user_list.lng b/interface/web/mail/lib/lang/en_mail_user_list.lng
index d261145..c7b0a43 100644
--- a/interface/web/mail/lib/lang/en_mail_user_list.lng
+++ b/interface/web/mail/lib/lang/en_mail_user_list.lng
@@ -5,4 +5,8 @@
 $wb["add_new_record_txt"] = 'Add new Mailbox';
 $wb["name_txt"] = 'Realname';
 $wb["login_txt"] = 'Login';
+$wb["postfix_txt"] = 'Receiving';
+$wb["disablesmtp_txt"] = 'SMTP (sending)';
+$wb["disableimap_txt"] = 'IMAP';
+$wb["disablepop3_txt"] = 'POP3';
 ?>
\ No newline at end of file
diff --git a/interface/web/mail/lib/lang/es.lng b/interface/web/mail/lib/lang/es.lng
index 2f41320..9c2f842 100644
--- a/interface/web/mail/lib/lang/es.lng
+++ b/interface/web/mail/lib/lang/es.lng
@@ -15,7 +15,7 @@
 $wb['Mailbox'] = 'Buzón';
 $wb['Autoresponder'] = 'Autoresponder';
 $wb['Mail Filter'] = 'Filtro de correo';
-$wb['Custom Rules'] = 'Ordenes personalizadas';
+$wb['Custom Rules'] = 'Filtros personalizados';
 $wb['Email filter'] = 'Filtro de correo';
 $wb['Email Whitelist'] = 'Lista blanca de correo';
 $wb['Whitelist'] = 'Lista blanca';
@@ -35,7 +35,7 @@
 $wb['Email Accounts'] = 'Cuentas de correo';
 $wb['User / Domain'] = 'Usuario / dominio';
 $wb['Server Settings'] = 'Configuración del servidor';
-$wb['Fetchmail'] = 'Fetchmail';
+$wb['Fetchmail'] = 'Recoger correo';
 $wb['Mailbox traffic'] = 'Tráfico de buzón';
 $wb['Statistics'] = 'Estadísticas';
 $wb['Postfix Whitelist'] = 'Lista blanca Postfix';
@@ -44,5 +44,6 @@
 $wb['Global Filters'] = 'Filtros globales';
 $wb['Domain Alias'] = 'Alias de dominio';
 $wb['Relay Recipients'] = 'Enrutar Destinatarios';
-$wb['Mailbox quota'] = 'Mailbox quota';
+$wb['Mailbox quota'] = 'Cuota de correo';
+$wb['Mailing List'] = 'Listas de correo';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_alias.lng b/interface/web/mail/lib/lang/es_mail_alias.lng
index da2ea8e..53c5be3 100644
--- a/interface/web/mail/lib/lang/es_mail_alias.lng
+++ b/interface/web/mail/lib/lang/es_mail_alias.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['email_txt'] = 'Correo';
 $wb['destination_txt'] = 'Destino';
-$wb['active_txt'] = 'Activar';
+$wb['active_txt'] = 'Activo';
 $wb['email_error_isemail'] = 'La dirección de correo no es válida';
 $wb['email_error_unique'] = 'Dirección de correo duplicada';
 $wb['no_domain_perm'] = 'No tiene permiso para administrar este dominio';
@@ -9,6 +9,6 @@
 $wb['limit_mailalias_txt'] = 'Ha alcanzado el número máximo de alias de correo para esta cuenta';
 $wb['duplicate_mailbox_txt'] = 'Ya existe un buzón de correo con esta dirección';
 $wb['domain_txt'] = 'Dominio';
-$wb['duplicate_email_alias_txt'] = 'Este alais de correo ya existe.';
+$wb['duplicate_email_alias_txt'] = 'Este alias de correo ya existe.';
 $wb['source_txt'] = 'Alias';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_alias_list.lng b/interface/web/mail/lib/lang/es_mail_alias_list.lng
index 2f5df20..e314a85 100644
--- a/interface/web/mail/lib/lang/es_mail_alias_list.lng
+++ b/interface/web/mail/lib/lang/es_mail_alias_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Alias de correo';
-$wb['active_txt'] = 'Activar';
+$wb['active_txt'] = 'Activo';
 $wb['source_txt'] = 'Origen';
 $wb['destination_txt'] = 'Destino';
 $wb['email_txt'] = 'Correo';
diff --git a/interface/web/mail/lib/lang/es_mail_aliasdomain.lng b/interface/web/mail/lib/lang/es_mail_aliasdomain.lng
index 1e9e486..0e4c62c 100644
--- a/interface/web/mail/lib/lang/es_mail_aliasdomain.lng
+++ b/interface/web/mail/lib/lang/es_mail_aliasdomain.lng
@@ -1,11 +1,11 @@
 <?php
 $wb['source_txt'] = 'Origen';
 $wb['destination_txt'] = 'Destino';
-$wb['active_txt'] = 'Activar';
+$wb['active_txt'] = 'Activo';
 $wb['no_domain_perm'] = 'No tiene permisos para este dominio.';
-$wb['limit_mailaliasdomain_txt'] = 'El número máximo de dominios de alias de correo para su cuenta ha sido alcanzado.';
+$wb['limit_mailaliasdomain_txt'] = 'Se ha alcanzado el número máximo de alias de dominios de correo para su cuenta.';
 $wb['source_destination_identical_txt'] = 'Dominio de origen y destino son el mismo.';
 $wb['source_error_empty'] = 'Dominio de origen está vacío.';
 $wb['source_error_unique'] = 'Dominio de origen duplicado.';
-$wb['source_error_regex'] = 'Dominio de origen inválido.';
+$wb['source_error_regex'] = 'Dominio de origen no válido.';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_aliasdomain_list.lng b/interface/web/mail/lib/lang/es_mail_aliasdomain_list.lng
index f0eb175..5ce9348 100644
--- a/interface/web/mail/lib/lang/es_mail_aliasdomain_list.lng
+++ b/interface/web/mail/lib/lang/es_mail_aliasdomain_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Alias de dominio';
-$wb['active_txt'] = 'Activa';
+$wb['active_txt'] = 'Activo';
 $wb['source_txt'] = 'Origen';
 $wb['destination_txt'] = 'Destino';
 $wb['add_new_record_txt'] = 'Añadir nuevo alias de dominio';
diff --git a/interface/web/mail/lib/lang/es_mail_blacklist.lng b/interface/web/mail/lib/lang/es_mail_blacklist.lng
index 8efc603..90e1ff5 100644
--- a/interface/web/mail/lib/lang/es_mail_blacklist.lng
+++ b/interface/web/mail/lib/lang/es_mail_blacklist.lng
@@ -5,5 +5,5 @@
 $wb['active_txt'] = 'Activar';
 $wb['source_error_notempty'] = 'La dirección está vacía';
 $wb['type_txt'] = 'Tipo';
-$wb['limit_mailfilter_txt'] = 'Se ha alcanzado el número máximo de filtros de spam para esta cuenta';
+$wb['limit_mailfilter_txt'] = 'Se ha alcanzado el número máximo de listas negras para esta cuenta';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_blacklist_list.lng b/interface/web/mail/lib/lang/es_mail_blacklist_list.lng
index a7394e2..bdb7ef9 100644
--- a/interface/web/mail/lib/lang/es_mail_blacklist_list.lng
+++ b/interface/web/mail/lib/lang/es_mail_blacklist_list.lng
@@ -1,10 +1,10 @@
 <?php
 $wb['list_head_txt'] = 'Lista negra de correo';
-$wb['active_txt'] = 'Activar';
+$wb['active_txt'] = 'Activa';
 $wb['server_id_txt'] = 'Servidor';
 $wb['source_txt'] = 'Direcciones en la lista negra';
 $wb['type_txt'] = 'Tipo';
-$wb['recipient_txt'] = 'Receptor';
+$wb['recipient_txt'] = 'Destinatario';
 $wb['add_new_record_txt'] = 'Añadir nuevo correo a la lista negra';
 $wb['access_txt'] = 'acceso';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_content_filter.lng b/interface/web/mail/lib/lang/es_mail_content_filter.lng
index ec1ca96..42e7bdd 100644
--- a/interface/web/mail/lib/lang/es_mail_content_filter.lng
+++ b/interface/web/mail/lib/lang/es_mail_content_filter.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['type_txt'] = 'Filtro';
-$wb['pattern_txt'] = 'Patrón de expresion regular';
+$wb['pattern_txt'] = 'Patrón (expresion regular)';
 $wb['data_txt'] = 'Fecha';
 $wb['action_txt'] = 'Acción';
 $wb['active_txt'] = 'Activar';
diff --git a/interface/web/mail/lib/lang/es_mail_content_filter_list.lng b/interface/web/mail/lib/lang/es_mail_content_filter_list.lng
index d70bf42..9b7ef5b 100644
--- a/interface/web/mail/lib/lang/es_mail_content_filter_list.lng
+++ b/interface/web/mail/lib/lang/es_mail_content_filter_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Postfix comprueba las cabeceras y el cuerpo del mensaje';
+$wb['list_head_txt'] = 'Comprobaciones de cabeceras y cuerpo de Postfix';
 $wb['active_txt'] = 'Activar';
 $wb['server_id_txt'] = 'Servidor';
 $wb['pattern_txt'] = 'Patrón';
diff --git a/interface/web/mail/lib/lang/es_mail_domain.lng b/interface/web/mail/lib/lang/es_mail_domain.lng
index 5b33de6..53f32a5 100644
--- a/interface/web/mail/lib/lang/es_mail_domain.lng
+++ b/interface/web/mail/lib/lang/es_mail_domain.lng
@@ -10,12 +10,12 @@
 $wb['limit_maildomain_txt'] = 'Se ha alcanzado el número máximo de dominios de correo para esta cuenta';
 $wb['policy_txt'] = 'Filtro de spam';
 $wb['no_policy'] = '- no activado -';
-$wb["dkim_txt"] = 'enable DKIM';
-$wb["dkim_private_txt"] = 'DKIM Private-key';
-$wb["dkim_public_txt"] = 'DKIM Public-key\nfor information only';
-$wb["dkim_generate_txt"] = 'Generate DKIM Private-key';
-$wb["dkim_dns_txt"] = 'DNS-Record (TYPE TXT)<br><br>add this record to your DNS';
-$wb["dkim_private_key_error"] = 'Invalid DKIM-Private key';
-$wb['dkim_selector_txt'] = 'DKIM-Selector';
-$wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9)';
+$wb["dkim_txt"] = 'Activar DKIM';
+$wb["dkim_private_txt"] = 'Clave privada DKIM';
+$wb["dkim_public_txt"] = 'Clave pública DKIM\nsólo para información';
+$wb["dkim_generate_txt"] = 'Generar clave privada DKIM';
+$wb["dkim_dns_txt"] = 'Registro DNS (TYPE TXT)<br><br>añade este registro a tus DNS';
+$wb["dkim_private_key_error"] = 'Clave privada DKIM no válida';
+$wb['dkim_selector_txt'] = 'Selector DKIM';
+$wb['dkim_selector_error'] = 'Selector DKIM no válido. Usar sólo caracteres alfanuméricos en minúsculas (a-z o 0-9)';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_domain_catchall.lng b/interface/web/mail/lib/lang/es_mail_domain_catchall.lng
index de41894..2193381 100644
--- a/interface/web/mail/lib/lang/es_mail_domain_catchall.lng
+++ b/interface/web/mail/lib/lang/es_mail_domain_catchall.lng
@@ -6,6 +6,6 @@
 $wb['no_domain_perm'] = 'No tiene permiso para administrar este dominio';
 $wb['domain_error_regex'] = 'El nombre de dominio no es válido o contiene caracteres no válidos';
 $wb['limit_mailcatchall_txt'] = 'Se ha alcanzado el número máximo de cuentas recoge-todo de este dominio';
-$wb['source_txt'] = 'Source';
-$wb['destination_error_isemail'] = 'Destination is no valid email address.';
+$wb['source_txt'] = 'Origen';
+$wb['destination_error_isemail'] = 'Destino no es una dirección de correo electrónico válida.';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng b/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng
index c70887e..f086fce 100644
--- a/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng
+++ b/interface/web/mail/lib/lang/es_mail_domain_catchall_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Correo recoge-todo';
-$wb['active_txt'] = 'Activar';
+$wb['active_txt'] = 'Activo';
 $wb['source_txt'] = 'Origen';
 $wb['destination_txt'] = 'Correo de destino';
 $wb['server_id_txt'] = 'Servidor';
diff --git a/interface/web/mail/lib/lang/es_mail_domain_list.lng b/interface/web/mail/lib/lang/es_mail_domain_list.lng
index c647e23..895d476 100644
--- a/interface/web/mail/lib/lang/es_mail_domain_list.lng
+++ b/interface/web/mail/lib/lang/es_mail_domain_list.lng
@@ -3,5 +3,5 @@
 $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Dominio';
 $wb['add_new_record_txt'] = 'Añadir nuevo dominio';
-$wb['active_txt'] = 'Activar';
+$wb['active_txt'] = 'Activo';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_forward_list.lng b/interface/web/mail/lib/lang/es_mail_forward_list.lng
index 2c5d9af..47df269 100644
--- a/interface/web/mail/lib/lang/es_mail_forward_list.lng
+++ b/interface/web/mail/lib/lang/es_mail_forward_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Reenvío de correo';
-$wb['active_txt'] = 'Activar';
+$wb['active_txt'] = 'Activo';
 $wb['source_txt'] = 'Origen';
 $wb['destination_txt'] = 'Destino';
 $wb['email_txt'] = 'Correo';
diff --git a/interface/web/mail/lib/lang/es_mail_get.lng b/interface/web/mail/lib/lang/es_mail_get.lng
index 91a4c26..f7ffc96 100644
--- a/interface/web/mail/lib/lang/es_mail_get.lng
+++ b/interface/web/mail/lib/lang/es_mail_get.lng
@@ -4,16 +4,16 @@
 $wb['source_server_txt'] = 'Servidor POP3/IMAP';
 $wb['source_username_txt'] = 'Usuario';
 $wb['source_password_txt'] = 'Contraseña';
-$wb['source_delete_txt'] = 'Borrar los correos después de recibirlos';
+$wb['source_delete_txt'] = 'Borrar los correos después de recogerlos';
 $wb['destination_txt'] = 'Destino';
 $wb['active_txt'] = 'Activar';
-$wb['limit_fetchmail_txt'] = 'Se ha alcanzado el número máximo de registros Fetchmail de esta cuenta';
+$wb['limit_fetchmail_txt'] = 'Se ha alcanzado el número máximo de cuentas de recogida de correo';
 $wb['source_server_error_isempty'] = 'El servidor está vacío.';
 $wb['source_username_error_isempty'] = 'El nombre de usuario está vacío.';
 $wb['source_password_error_isempty'] = 'La contraseña está vacía.';
 $wb['destination_error_isemail'] = 'No se ha seleccionado el destino.';
 $wb['source_server_error_regex'] = 'Servidor POP3/IMAP no es un nombre de dominio válido.';
-$wb['source_read_all_txt'] = 'Retrieve all emails (incl. read mails)';
-$wb['error_delete_read_all_combination'] = 'Illegal combination of options. You can not use \'Delete emails after retrieval\' = no together with \'Retrieve all emails\' = yes';
-$wb['source_delete_note_txt'] = 'Please check first if email retrieval works, before you activate this option.';
+$wb['source_read_all_txt'] = 'Recoger todos los correos (incluído correos leídos)';
+$wb['error_delete_read_all_combination'] = 'Combinación de opciones no permitida. No puedes desactivar 'Borrar los correos después de recogerlos' y activar 'Recoger todos los correos'';
+$wb['source_delete_note_txt'] = 'Por favor compruebe primero si la recogida de correo funciona antes de activar esta opción.';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_get_list.lng b/interface/web/mail/lib/lang/es_mail_get_list.lng
index 1dc8f55..c33e497 100644
--- a/interface/web/mail/lib/lang/es_mail_get_list.lng
+++ b/interface/web/mail/lib/lang/es_mail_get_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Recoger el correo de servidores POP3/IMAP externos';
-$wb['active_txt'] = 'Activar';
+$wb['active_txt'] = 'Activa';
 $wb['server_id_txt'] = 'Servidor';
 $wb['source_server_txt'] = 'Servidor externo';
 $wb['source_username_txt'] = 'Usuario';
diff --git a/interface/web/mail/lib/lang/es_mail_mailinglist.lng b/interface/web/mail/lib/lang/es_mail_mailinglist.lng
index 6f1f333..22d769f 100644
--- a/interface/web/mail/lib/lang/es_mail_mailinglist.lng
+++ b/interface/web/mail/lib/lang/es_mail_mailinglist.lng
@@ -1,22 +1,22 @@
 <?php
-$wb['limit_mailmailinglist_txt'] = 'Lìmite alcanzado';
+$wb['limit_mailmailinglist_txt'] = 'Se ha alcanzado el número máximo de listas de correo para esta cuenta.';
 $wb['domain_error_empty'] = 'El dominio está vacío.';
-$wb['listname_error_empty'] = 'Nombre de la lista está vacío.';
+$wb['listname_error_empty'] = 'Nombre de lista está vacío.';
 $wb['domain_error_regex'] = 'Nombre de dominio no válido.';
 $wb['email_in_use_txt'] = 'El correo electrónico esta en uso';
 $wb['no_domain_perm'] = 'Usted no tiene permiso para este dominio.';
 $wb['password_strength_txt'] = 'Fortaleza de contraseña';
 $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Dominio';
-$wb['listname_txt'] = 'Nombre de la lista';
+$wb['listname_txt'] = 'Nombre de lista';
 $wb['client_txt'] = 'Cliente';
-$wb['email_txt'] = 'Ecorreo';
+$wb['email_txt'] = 'Correo electrónico';
 $wb['password_txt'] = 'Contraseña';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['listname_error_unique'] = 'There is already a mailinlist with name on the server. Please choose a different listname.';
-$wb['email_error_isemail'] = 'Email address is invalid.';
-$wb['mailinglist_txt'] = 'Mailing list';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
+$wb['listname_error_unique'] = 'Ya existe una lista de correo con este nombre en el servidor. Por favor elige un nombre de lista diferente.';
+$wb['email_error_isemail'] = 'Dirección de correo electrónico no válida.';
+$wb['mailinglist_txt'] = 'Lista de correo';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_mailinglist_list.lng b/interface/web/mail/lib/lang/es_mail_mailinglist_list.lng
index eb40703..ce941ba 100644
--- a/interface/web/mail/lib/lang/es_mail_mailinglist_list.lng
+++ b/interface/web/mail/lib/lang/es_mail_mailinglist_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Lista de Mailing';
+$wb['list_head_txt'] = 'Listas de correo';
 $wb['domain_txt'] = 'Dominio';
-$wb['listname_txt'] = 'Nombre de la lista';
+$wb['listname_txt'] = 'Nombre de lista';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_relay_recipient.lng b/interface/web/mail/lib/lang/es_mail_relay_recipient.lng
index bca0f56..b57b6b7 100644
--- a/interface/web/mail/lib/lang/es_mail_relay_recipient.lng
+++ b/interface/web/mail/lib/lang/es_mail_relay_recipient.lng
@@ -1,9 +1,9 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
-$wb['source_txt'] = 'Enrutar Destinatario';
+$wb['source_txt'] = 'Destinatario a enrutar';
 $wb['recipient_txt'] = 'Destinatario';
-$wb['active_txt'] = 'Activa';
-$wb['source_error_notempty'] = 'Dirección está vacía.';
+$wb['active_txt'] = 'Activar';
+$wb['source_error_notempty'] = 'Destinatario está vacío.';
 $wb['type_txt'] = 'Tipo';
-$wb['limit_mailfilter_txt'] = 'El número máximo de filtros de correo para su cuenta ha sido alcanzado.';
+$wb['limit_mailfilter_txt'] = 'Se ha alcanzado el número máximo de destinatarios para su cuenta.';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_relay_recipient_list.lng b/interface/web/mail/lib/lang/es_mail_relay_recipient_list.lng
index b1a92be..935cb07 100644
--- a/interface/web/mail/lib/lang/es_mail_relay_recipient_list.lng
+++ b/interface/web/mail/lib/lang/es_mail_relay_recipient_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Enrutar destinatarios';
-$wb['active_txt'] = 'Activa';
+$wb['active_txt'] = 'Activo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['source_txt'] = 'Dirección destinatario';
 $wb['recipient_txt'] = 'Destinatario';
diff --git a/interface/web/mail/lib/lang/es_mail_spamfilter_list.lng b/interface/web/mail/lib/lang/es_mail_spamfilter_list.lng
index f2e2cb1..2289c23 100644
--- a/interface/web/mail/lib/lang/es_mail_spamfilter_list.lng
+++ b/interface/web/mail/lib/lang/es_mail_spamfilter_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Filtro de spam';
-$wb['active_txt'] = 'Activar';
+$wb['active_txt'] = 'Activo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['server_name_txt'] = 'server_name';
 $wb['email_txt'] = 'Correo';
diff --git a/interface/web/mail/lib/lang/es_mail_transport.lng b/interface/web/mail/lib/lang/es_mail_transport.lng
index cc6dbdf..098fddb 100644
--- a/interface/web/mail/lib/lang/es_mail_transport.lng
+++ b/interface/web/mail/lib/lang/es_mail_transport.lng
@@ -6,6 +6,6 @@
 $wb['mx_txt'] = 'Sin búsqueda MX';
 $wb['sort_order_txt'] = 'Ordenado por';
 $wb['active_txt'] = 'Activar';
-$wb['limit_mailrouting_txt'] = 'Se ha alcanzado el número máximo de rutas para este nivel';
-$wb['transport_txt'] = 'Transport';
+$wb['limit_mailrouting_txt'] = 'Se ha alcanzado el número máximo de transportes para esta cuenta.';
+$wb['transport_txt'] = 'Transporte';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_transport_list.lng b/interface/web/mail/lib/lang/es_mail_transport_list.lng
index b23483f..780b614 100644
--- a/interface/web/mail/lib/lang/es_mail_transport_list.lng
+++ b/interface/web/mail/lib/lang/es_mail_transport_list.lng
@@ -1,7 +1,7 @@
 <?php
 $wb['list_head_txt'] = 'Enrutado de correo avanzado';
 $wb['active_txt'] = 'Activar';
-$wb['server_id_txt'] = 'ID Servidor';
+$wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Dominio';
 $wb['transport_txt'] = 'Transporte';
 $wb['sort_order_txt'] = 'Ordenado por';
diff --git a/interface/web/mail/lib/lang/es_mail_user.lng b/interface/web/mail/lib/lang/es_mail_user.lng
index ec494e0..9f83dae 100644
--- a/interface/web/mail/lib/lang/es_mail_user.lng
+++ b/interface/web/mail/lib/lang/es_mail_user.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['custom_mailfilter_txt'] = 'Filtro de correo personalizado';
-$wb['email_txt'] = 'Ecorreo';
+$wb['email_txt'] = 'Correo';
 $wb['cryptpwd_txt'] = 'Contraseña';
 $wb['password_strength_txt'] = 'Fortaleza de la contraseña';
 $wb['active_txt'] = 'Activar';
@@ -9,51 +9,52 @@
 $wb['autoresponder_text_txt'] = 'Texto';
 $wb['autoresponder_txt'] = 'Activar';
 $wb['autoresponder_start_date_txt'] = 'Comenzar en';
-$wb['autoresponder_end_date_txt'] = 'Finalizar por';
+$wb['autoresponder_end_date_txt'] = 'Finalizar en';
 $wb['autoresponder_end_date_isgreater'] = 'Fecha de finalización se debe establecer y ser posterior a la fecha de inicio.';
 $wb['no_domain_perm'] = 'Usted no tiene permiso en este dominio.';
 $wb['error_no_pwd'] = 'La contraseña está vacía.';
 $wb['quota_error_isint'] = 'Tamaño del buzón debe ser un número.';
 $wb['quota_txt'] = 'Cuota';
-$wb['server_id_txt'] = 'Aerver_id';
+$wb['server_id_txt'] = 'Servidor';
 $wb['password_txt'] = 'Contraseña';
-$wb['maildir_txt'] = 'Maildir';
+$wb['maildir_txt'] = 'Directorio del buzón';
 $wb['postfix_txt'] = 'Habilitar la recepción';
 $wb['access_txt'] = 'Habilitar el acceso';
 $wb['policy_txt'] = 'Filtro de spam';
 $wb['no_policy'] = '- no habilitado -';
-$wb['limit_mailbox_txt'] = 'La máx. número de buzones de correo de su cuenta se ha alcanzado.';
-$wb['limit_mailquota_txt'] = 'El espacio máximo para los buzones que se ha alcanzado. La máx. espacio disponible en MB es';
+$wb['limit_mailbox_txt'] = 'Se ha alcanzado el número máximo de buzones de correo de su cuenta.';
+$wb['limit_mailquota_txt'] = 'Se ha alcanzado el espacio máximo para los buzones. El espacio máximo disponible en MB es';
 $wb['disableimap_txt'] = 'Desactivar IMAP';
 $wb['disablepop3_txt'] = 'Desactivar POP3';
-$wb['duplicate_alias_or_forward_txt'] = 'Ya existe un alias o hacia adelante con esta dirección de correo electrónico.';
-$wb['quota_error_value'] = 'Valor de la cuota no es válida. Los valores permitidos son: 0 para ilimitado o números de> 1';
-$wb['move_junk_txt'] = 'Mover mensajes de spam no deseado en el directorio';
+$wb['duplicate_alias_or_forward_txt'] = 'Ya existe un alias o reenvío con esta dirección de correo electrónico.';
+$wb['quota_error_value'] = 'Valor de la cuota no válida. Los valores permitidos son: 0 para ilimitado o números mayores que 1';
+$wb['move_junk_txt'] = 'Mover mensajes no deseados al directorio Junk';
 $wb['name_txt'] = 'Nombre real';
 $wb['name_optional_txt'] = '(Opcional)';
 $wb['autoresponder_active'] = 'Habilitar la respuesta automática';
 $wb['cc_txt'] = 'Enviar copia a';
-$wb['cc_error_isemail'] = 'El-Enviar copia al campo no conatin una dirección válida de correo electrónico';
+$wb['cc_error_isemail'] = 'El campo enviar copia a no contiene una dirección de correo electrónico válida';
 $wb['domain_txt'] = 'Dominio';
 $wb['now_txt'] = 'Ahora';
-$wb['login_error_unique'] = 'Inicio de sesión ya está tomada.';
+$wb['login_error_unique'] = 'El usuario ya existe.';
 $wb['login_error_regex'] = 'Los caracteres válidos son A-Z, a-z, 0-9, _ y - ';
-$wb['login_txt'] = 'Inicio sessión (opcional)';
-$wb['error_login_email_txt'] = 'Este inicio de sesión no está permitido. Por favor, introduzca un nombre de usuario diferente o utilizar la dirección de correo electrónico como nombre de usuario.';
-$wb['autoresponder_subject_txt'] = 'Email Subject';
-$wb['autoresponder_subject'] = 'Out of office reply';
-$wb['autoresponder_start_date_ispast'] = 'Start date cannot be in the past.';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb["backup_interval_txt"] = 'Backup interval';
-$wb["backup_copies_txt"] = 'Number of backup copies';
-$wb['no_backup_txt'] = 'No backup';
-$wb['daily_backup_txt'] = 'Daily';
-$wb['weekly_backup_txt'] = 'Weekly';
-$wb['monthly_backup_txt'] = 'Monthly';
-$wb['email_error_isascii'] = 'Please do not use special unicode characters for your password. This could lead to problems with your mail client.';
-$wb['cc_note_txt'] = '(Separate multiple email addresses with commas)';
-$wb['disablesmtp_txt'] = 'Disable SMTP (sending)';
+$wb['login_txt'] = 'Usuario (opcional)';
+$wb['error_login_email_txt'] = 'El usuario no está permitido. Por favor, introduzca un usuario diferente o utilice la dirección de correo electrónico como usuario.';
+$wb['autoresponder_subject_txt'] = 'Asunto de correo';
+$wb['autoresponder_subject'] = 'Fuera de la oficina';
+$wb['autoresponder_start_date_ispast'] = 'Fecha de inicio no puede ser una fecha pasada';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
+$wb["backup_interval_txt"] = 'Intervalo de copia de seguridad';
+$wb["backup_copies_txt"] = 'Número de copias de seguridad';
+$wb['no_backup_txt'] = 'Sin copias de seguridad';
+$wb['daily_backup_txt'] = 'Diario';
+$wb['weekly_backup_txt'] = 'Semanal';
+$wb['monthly_backup_txt'] = 'Mensual';
+$wb['email_error_isascii'] = 'Por favor no uses caracteres especiales en tu contraseña, podría causar problemas con tu cliente de correo.';
+$wb['cc_note_txt'] = '(Separar varias direcciones con comas)';
+$wb['disablesmtp_txt'] = 'Desactivar SMTP (envío)';
+$wb['Mailbox'] = 'Buzón';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_user_filter.lng b/interface/web/mail/lib/lang/es_mail_user_filter.lng
index a221dae..b0bcacc 100644
--- a/interface/web/mail/lib/lang/es_mail_user_filter.lng
+++ b/interface/web/mail/lib/lang/es_mail_user_filter.lng
@@ -5,16 +5,16 @@
 $wb['active_txt'] = 'Activar';
 $wb['rulename_error_empty'] = 'El nombre está vacío.';
 $wb['searchterm_is_empty'] = 'El término de búsqueda está vacío.';
-$wb['source_txt'] = 'Origen';
-$wb['target_error_regex'] = 'El Objetivo sólo pueden contener los siguientes caracteres: a-z, 0-9, -, ., _, y {espacio}';
-$wb['limit_mailfilter_txt'] = 'El máx. número de mailfilters se alcanzó';
+$wb['source_txt'] = 'Campo';
+$wb['target_error_regex'] = 'La carpeta sólo puede contener los siguientes caracteres: a-z, 0-9, -, ., _, y {espacio}';
+$wb['limit_mailfilter_txt'] = 'Se ha alcanzado el número máximo de filtros.';
 $wb['subject_txt'] = 'Asunto';
-$wb['from_txt'] = 'Desde';
-$wb['to_txt'] = 'para';
+$wb['from_txt'] = 'Remitente';
+$wb['to_txt'] = 'Destinatario';
 $wb['contains_txt'] = 'Contiene';
 $wb['is_txt'] = 'Es';
 $wb['begins_with_txt'] = 'Comienza con';
-$wb['ends_with_txt'] = 'Terminar con';
+$wb['ends_with_txt'] = 'Termina con';
 $wb['move_to_txt'] = 'Mover a';
 $wb['delete_txt'] = 'Eliminar';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_user_list.lng b/interface/web/mail/lib/lang/es_mail_user_list.lng
index 8ebf818..82b8ca5 100644
--- a/interface/web/mail/lib/lang/es_mail_user_list.lng
+++ b/interface/web/mail/lib/lang/es_mail_user_list.lng
@@ -1,8 +1,12 @@
 <?php
 $wb['list_head_txt'] = 'Buzón';
 $wb['email_txt'] = 'Dirección de correo';
-$wb['autoresponder_txt'] = 'Autorespondedor';
+$wb['autoresponder_txt'] = 'Autoresponder';
 $wb['add_new_record_txt'] = 'Añadir nuevo buzón';
 $wb['name_txt'] = 'Nombre';
-$wb['login_txt'] = 'Iniciar sessión';
+$wb['login_txt'] = 'Iniciar sesión';
+$wb['postfix_txt'] = 'Recepción';
+$wb['disablesmtp_txt'] = 'SMTP (envío)';
+$wb['disableimap_txt'] = 'IMAP';
+$wb['disablepop3_txt'] = 'POP3';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_whitelist.lng b/interface/web/mail/lib/lang/es_mail_whitelist.lng
index 1d681a7..460bd7e 100644
--- a/interface/web/mail/lib/lang/es_mail_whitelist.lng
+++ b/interface/web/mail/lib/lang/es_mail_whitelist.lng
@@ -1,9 +1,9 @@
 <?php
 $wb['server_id_txt'] = 'Servidor';
 $wb['source_txt'] = 'Dirección de lista blanca';
-$wb['recipient_txt'] = 'Receptor';
+$wb['recipient_txt'] = 'Destinatario';
 $wb['active_txt'] = 'Activar';
 $wb['source_error_notempty'] = 'La dirección está vacía';
 $wb['type_txt'] = 'Tipo';
-$wb['limit_mailfilter_txt'] = 'Se ha alcanzado el número máximo de filtros de correo para esta cuenta';
+$wb['limit_mailfilter_txt'] = 'Se ha alcanzado el número máximo de listas blancas para esta cuenta';
 ?>
diff --git a/interface/web/mail/lib/lang/es_mail_whitelist_list.lng b/interface/web/mail/lib/lang/es_mail_whitelist_list.lng
index 233a25c..c28867b 100644
--- a/interface/web/mail/lib/lang/es_mail_whitelist_list.lng
+++ b/interface/web/mail/lib/lang/es_mail_whitelist_list.lng
@@ -1,10 +1,10 @@
 <?php
 $wb['list_head_txt'] = 'Lista blanca de correo';
-$wb['active_txt'] = 'Activar';
+$wb['active_txt'] = 'Activa';
 $wb['server_id_txt'] = 'Servidor';
 $wb['source_txt'] = 'Dirección en la lista blanca';
 $wb['type_txt'] = 'Tipo';
-$wb['recipient_txt'] = 'Receptor';
+$wb['recipient_txt'] = 'Destinatario';
 $wb['add_new_record_txt'] = 'Añadir nuevo correo a la lista blanca';
 $wb['access_txt'] = 'acceso';
 ?>
diff --git a/interface/web/mail/lib/lang/es_spamfilter_blacklist.lng b/interface/web/mail/lib/lang/es_spamfilter_blacklist.lng
index a986f58..80e1c9d 100644
--- a/interface/web/mail/lib/lang/es_spamfilter_blacklist.lng
+++ b/interface/web/mail/lib/lang/es_spamfilter_blacklist.lng
@@ -6,7 +6,7 @@
 $wb['priority_txt'] = 'Prioridad';
 $wb['active_txt'] = 'Activar';
 $wb['limit_spamfilter_wblist_txt'] = 'Se ha alcanzado el número máximo de registros de lista blanca o negra de su cuenta';
-$wb['10 - highest'] = '10 - highest';
-$wb['5 - medium'] = '5 - medium';
-$wb['1 - lowest'] = '1 - lowest';
+$wb['10 - highest'] = '10 - máxima';
+$wb['5 - medium'] = '5 - media';
+$wb['1 - lowest'] = '1 - mínima';
 ?>
diff --git a/interface/web/mail/lib/lang/es_spamfilter_blacklist_list.lng b/interface/web/mail/lib/lang/es_spamfilter_blacklist_list.lng
index 6285106..340eb24 100644
--- a/interface/web/mail/lib/lang/es_spamfilter_blacklist_list.lng
+++ b/interface/web/mail/lib/lang/es_spamfilter_blacklist_list.lng
@@ -1,9 +1,9 @@
 <?php
 $wb['list_head_txt'] = 'Listas negras de spam';
-$wb['active_txt'] = 'Activar';
+$wb['active_txt'] = 'Activa';
 $wb['server_id_txt'] = 'Servidor';
 $wb['priority_txt'] = 'Prioridad';
 $wb['rid_txt'] = 'Usuario';
 $wb['email_txt'] = 'Correos en las listas negras';
-$wb['add_new_record_txt'] = 'Añadir registro de lista negra';
+$wb['add_new_record_txt'] = 'Añadir nueva lista negra';
 ?>
diff --git a/interface/web/mail/lib/lang/es_spamfilter_config.lng b/interface/web/mail/lib/lang/es_spamfilter_config.lng
index f2ba693..64844de 100644
--- a/interface/web/mail/lib/lang/es_spamfilter_config.lng
+++ b/interface/web/mail/lib/lang/es_spamfilter_config.lng
@@ -3,18 +3,18 @@
 $wb['ip_address_txt'] = 'Dirección IP';
 $wb['netmask_txt'] = 'Máscara de red';
 $wb['gateway_txt'] = 'Pasarela';
-$wb['hostname_txt'] = 'Nombre de la máquina';
+$wb['hostname_txt'] = 'Nombre del servidor';
 $wb['nameservers_txt'] = 'Servidores de nombres';
 $wb['module_txt'] = 'Módulo del servidor';
-$wb['maildir_path_txt'] = 'Ruta de Maildir';
-$wb['homedir_path_txt'] = 'Ruta de Homedir';
-$wb['mailuser_uid_txt'] = 'UID usuario de correo';
-$wb['mailuser_gid_txt'] = 'GID usuario de correo';
-$wb['mailuser_name_txt'] = 'Nombre de usuario de correo';
-$wb['mailuser_group_txt'] = 'Grupo de usuario de correo';
-$wb['relayhost_txt'] = 'Relayhost';
-$wb['relayhost_user_txt'] = 'Usuario Relayhost';
-$wb['relayhost_password_txt'] = 'Contraseña Relayhost';
+$wb['maildir_path_txt'] = 'Ruta de buzones';
+$wb['homedir_path_txt'] = 'Ruta base de coreo';
+$wb['mailuser_uid_txt'] = 'UID del usuario de correo';
+$wb['mailuser_gid_txt'] = 'GID del usuario de correo';
+$wb['mailuser_name_txt'] = 'Nombre del usuario de correo';
+$wb['mailuser_group_txt'] = 'Grupo del usuario de correo';
+$wb['relayhost_txt'] = 'Servidor de envío (relay)';
+$wb['relayhost_user_txt'] = 'Usuario del servidor de envío';
+$wb['relayhost_password_txt'] = 'Contraseña del servidor de envío';
 $wb['mailbox_size_limit_txt'] = 'Límite de tamaño de buzón';
 $wb['message_size_limit_txt'] = 'Límite de tamaño de mensaje';
 ?>
diff --git a/interface/web/mail/lib/lang/es_spamfilter_policy.lng b/interface/web/mail/lib/lang/es_spamfilter_policy.lng
index 2932f56..cce9af9 100644
--- a/interface/web/mail/lib/lang/es_spamfilter_policy.lng
+++ b/interface/web/mail/lib/lang/es_spamfilter_policy.lng
@@ -1,38 +1,38 @@
 <?php
 $wb['policy_name_txt'] = 'Nombre de política';
-$wb['virus_lover_txt'] = 'Le gustan los virus';
-$wb['spam_lover_txt'] = 'Le gusta el spam';
-$wb['banned_files_lover_txt'] = 'No se admiten los amantes de los virus';
-$wb['bad_header_lover_txt'] = 'Le gustan las cabeceras malas';
+$wb['virus_lover_txt'] = 'Quiere virus';
+$wb['spam_lover_txt'] = 'Quiere spam';
+$wb['banned_files_lover_txt'] = 'Quiere archivos prohibidos';
+$wb['bad_header_lover_txt'] = 'Quiere cabeceras malas';
 $wb['bypass_virus_checks_txt'] = 'Saltarse la comprobación de virus';
-$wb['bypass_banned_checks_txt'] = 'Saltarse la comprobación de prohibidos';
-$wb['bypass_header_checks_txt'] = 'Saltarse la comprobación de cabeceras';
+$wb['bypass_banned_checks_txt'] = 'Saltarse la comprobación de archivos prohibidos';
+$wb['bypass_header_checks_txt'] = 'Saltarse la comprobación de cabeceras malas';
 $wb['virus_quarantine_to_txt'] = 'Reenviar virus al correo';
 $wb['spam_quarantine_to_txt'] = 'Reenviar spam al correo';
-$wb['banned_quarantine_to_txt'] = 'Reenviar correo prohibido';
+$wb['banned_quarantine_to_txt'] = 'Reenviar archivos prohibidos al correo';
 $wb['bad_header_quarantine_to_txt'] = 'Reenviar cabeceras malas al correo';
-$wb['clean_quarantine_to_txt'] = 'Reenviar correo limpio';
+$wb['clean_quarantine_to_txt'] = 'Reenviar correo limpio al correo';
 $wb['other_quarantine_to_txt'] = 'Reenviar otros al correo';
-$wb['spam_tag_level_txt'] = 'Nivel de etiquetado de spam';
-$wb['spam_tag2_level_txt'] = 'Nivel de etiquetado 2 de spam';
-$wb['spam_kill_level_txt'] = 'Nivel para matar el spam';
-$wb['spam_dsn_cutoff_level_txt'] = 'Nivel de dsn cutoff de spam';
-$wb['spam_quarantine_cutoff_level_txt'] = 'Nivel de cuarentena cutoff de spam';
+$wb['spam_tag_level_txt'] = 'Nivel de etiquetado como posible spam';
+$wb['spam_tag2_level_txt'] = 'Nivel de etiquetado como spam';
+$wb['spam_kill_level_txt'] = 'Nivel para bloquear el spam';
+$wb['spam_dsn_cutoff_level_txt'] = 'Nivel para no enviar notificacion de entrega de correos bloqueados';
+$wb['spam_quarantine_cutoff_level_txt'] = 'Nivel para no poner en cuarentena el spam';
 $wb['spam_modifies_subj_txt'] = 'El spam modifica el asunto';
-$wb['spam_subject_tag_txt'] = 'Etiqueta de asunto de spam';
-$wb['spam_subject_tag2_txt'] = 'Etiqueta 2 de asunto de spam';
-$wb['addr_extension_virus_txt'] = 'Añadir extensión Virus';
-$wb['addr_extension_spam_txt'] = 'Añadir extensión Spam';
-$wb['addr_extension_banned_txt'] = 'Añadir extensión Prohibido (banned)';
-$wb['addr_extension_bad_header_txt'] = 'Añadir extensión Cabecera mala (bad header)';
-$wb['warnvirusrecip_txt'] = 'Alertar al receptor del virus';
-$wb['warnbannedrecip_txt'] = 'Alertar al receptor del prohibido';
-$wb['warnbadhrecip_txt'] = 'Alertar al receptor de las cabeceras malas';
-$wb['newvirus_admin_txt'] = 'Nuevo administrador de virus';
+$wb['spam_subject_tag_txt'] = 'Etiqueta de asunto de posible spam';
+$wb['spam_subject_tag2_txt'] = 'Etiqueta de asunto de spam';
+$wb['addr_extension_virus_txt'] = 'Extensión de dirección para virus';
+$wb['addr_extension_spam_txt'] = 'Extensión de dirección para Spam';
+$wb['addr_extension_banned_txt'] = 'Extensión de dirección para archivos prohibidos';
+$wb['addr_extension_bad_header_txt'] = 'Extensión de dirección para cabeceras malas';
+$wb['warnvirusrecip_txt'] = 'Alertar al destinatario del virus';
+$wb['warnbannedrecip_txt'] = 'Alertar al destinatario del archivo prohibido';
+$wb['warnbadhrecip_txt'] = 'Alertar al destinatario de las cabeceras malas';
+$wb['newvirus_admin_txt'] = 'Administrador de nuevo virus';
 $wb['virus_admin_txt'] = 'Administrador de virus';
-$wb['banned_admin_txt'] = 'Administrador de prohibidos';
+$wb['banned_admin_txt'] = 'Administrador de archivos prohibidos';
 $wb['bad_header_admin_txt'] = 'Administrador de cabeceras malas';
 $wb['spam_admin_txt'] = 'Administrador de spam';
 $wb['message_size_limit_txt'] = 'Límite de tamaño de mensaje';
-$wb['banned_rulenames_txt'] = 'Nombre de órdenes de prohibido';
+$wb['banned_rulenames_txt'] = 'Nombre de reglas de archivos prohibidos';
 ?>
diff --git a/interface/web/mail/lib/lang/es_spamfilter_policy_list.lng b/interface/web/mail/lib/lang/es_spamfilter_policy_list.lng
index ce196bb..6c46f13 100644
--- a/interface/web/mail/lib/lang/es_spamfilter_policy_list.lng
+++ b/interface/web/mail/lib/lang/es_spamfilter_policy_list.lng
@@ -1,9 +1,9 @@
 <?php
 $wb['list_head_txt'] = 'Política de filtrado de spam';
 $wb['policy_name_txt'] = 'Nombre';
-$wb['virus_lover_txt'] = 'Le gustan los virus';
-$wb['spam_lover_txt'] = 'Le gusta el spam';
-$wb['banned_files_lover_txt'] = 'Prohibir los coleccionistas de virus';
-$wb['bad_header_lover_txt'] = 'Le gustan las cabeceras malas';
-$wb['add_new_record_txt'] = 'Añadir nuevo filtro de spam';
+$wb['virus_lover_txt'] = 'Quiere virus';
+$wb['spam_lover_txt'] = 'Quiere spam';
+$wb['banned_files_lover_txt'] = 'Quiere archivos prohibidos';
+$wb['bad_header_lover_txt'] = 'Quiere cabeceras malas';
+$wb['add_new_record_txt'] = 'Añadir nueva política de spam';
 ?>
diff --git a/interface/web/mail/lib/lang/es_spamfilter_users.lng b/interface/web/mail/lib/lang/es_spamfilter_users.lng
index 98e8bc8..2617e89 100644
--- a/interface/web/mail/lib/lang/es_spamfilter_users.lng
+++ b/interface/web/mail/lib/lang/es_spamfilter_users.lng
@@ -1,13 +1,13 @@
 <?php
-$wb['server_id_txt'] = 'ID Servidor';
+$wb['server_id_txt'] = 'Servidor';
 $wb['priority_txt'] = 'Prioridad';
-$wb['policy_id_txt'] = 'ID Política';
+$wb['policy_id_txt'] = 'Política';
 $wb['email_txt'] = 'Correo';
 $wb['fullname_txt'] = 'Nombre';
 $wb['local_txt'] = 'Local';
-$wb['email_error_notempty'] = 'The email address must not be empty.';
-$wb['fullname_error_notempty'] = 'The name must not be empty.';
-$wb['10 - highest'] = '10 - highest';
-$wb['5 - medium'] = '5 - medium';
-$wb['1 - lowest'] = '1 - lowest';
+$wb['email_error_notempty'] = 'La dirección de correo electrónico no debe estar vacía.';
+$wb['fullname_error_notempty'] = 'El nombre no debe estar vacío.';
+$wb['10 - highest'] = '10 - máxima';
+$wb['5 - medium'] = '5 - media';
+$wb['1 - lowest'] = '1 - mínima';
 ?>
diff --git a/interface/web/mail/lib/lang/es_spamfilter_whitelist.lng b/interface/web/mail/lib/lang/es_spamfilter_whitelist.lng
index a986f58..80e1c9d 100644
--- a/interface/web/mail/lib/lang/es_spamfilter_whitelist.lng
+++ b/interface/web/mail/lib/lang/es_spamfilter_whitelist.lng
@@ -6,7 +6,7 @@
 $wb['priority_txt'] = 'Prioridad';
 $wb['active_txt'] = 'Activar';
 $wb['limit_spamfilter_wblist_txt'] = 'Se ha alcanzado el número máximo de registros de lista blanca o negra de su cuenta';
-$wb['10 - highest'] = '10 - highest';
-$wb['5 - medium'] = '5 - medium';
-$wb['1 - lowest'] = '1 - lowest';
+$wb['10 - highest'] = '10 - máxima';
+$wb['5 - medium'] = '5 - media';
+$wb['1 - lowest'] = '1 - mínima';
 ?>
diff --git a/interface/web/mail/lib/lang/es_spamfilter_whitelist_list.lng b/interface/web/mail/lib/lang/es_spamfilter_whitelist_list.lng
index e1c7f66..7a57463 100644
--- a/interface/web/mail/lib/lang/es_spamfilter_whitelist_list.lng
+++ b/interface/web/mail/lib/lang/es_spamfilter_whitelist_list.lng
@@ -1,9 +1,9 @@
 <?php
 $wb['list_head_txt'] = 'Lista blanca de filtro de spam';
-$wb['active_txt'] = 'Activar';
+$wb['active_txt'] = 'Activa';
 $wb['server_id_txt'] = 'Servidor';
 $wb['priority_txt'] = 'Prioridad';
 $wb['rid_txt'] = 'Usuario';
 $wb['email_txt'] = 'Dirección de correo en la lista blanca';
-$wb['add_new_record_txt'] = 'Añadir nuevo registro';
+$wb['add_new_record_txt'] = 'Añadir nueva lista blanca';
 ?>
diff --git a/interface/web/mail/lib/lang/es_user_quota_stats_list.lng b/interface/web/mail/lib/lang/es_user_quota_stats_list.lng
index 75ce5a1..c514382 100755
--- a/interface/web/mail/lib/lang/es_user_quota_stats_list.lng
+++ b/interface/web/mail/lib/lang/es_user_quota_stats_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Cuota de Correo';
+$wb['list_head_txt'] = 'Cuota de correo';
 $wb['quota_txt'] = 'Cuota';
 $wb['name_txt'] = 'Nombre';
 $wb['email_txt'] = 'Correo';
 $wb['used_txt'] = 'Usado';
-$wb['percentage_txt'] = 'Used %';
+$wb['percentage_txt'] = '% Usado';
 ?>
diff --git a/interface/web/mail/lib/lang/fr_mail_domain.lng b/interface/web/mail/lib/lang/fr_mail_domain.lng
index ee64ffa..c0212d3 100644
--- a/interface/web/mail/lib/lang/fr_mail_domain.lng
+++ b/interface/web/mail/lib/lang/fr_mail_domain.lng
@@ -4,20 +4,21 @@
 $wb['type_txt'] = 'Type';
 $wb['active_txt'] = 'Actif';
 $wb['dkim_txt'] = 'Activer DKIM';
-$wb['dkim_private_txt'] = 'Clé privée DKIM';
-$wb['dkim_public_txt'] = 'Clé publique DKIM\npour information seulement';
-$wb['dkim_generate_txt'] = 'Générer la clé privée DKIM';
-$wb['dkim_dns_txt'] = 'Enregistrement DNS (TYPE TXT)<br><br>Ajouter l\'enregistrement à votre DNS';
-$wb['dkim_private_key_error'] = 'Clé privée DKIM invalide';
+$wb['dkim_private_txt'] = 'ClérivéDKIM';
+$wb['dkim_public_txt'] = 'Cléublique DKIM\npour information seulement';
+$wb['dkim_generate_txt'] = 'Gérer la clérivéDKIM';
+$wb['dkim_dns_txt'] = 'Enregistrement DNS (TYPE TXT)<br><br>Ajouter l\'enregistrement àotre DNS';
+$wb['dkim_private_key_error'] = 'ClérivéDKIM invalide';
 $wb['dkim_settings_txt'] = 'DomainKeys Identified Mail (DKIM)';
 $wb['domain_error_empty'] = 'Le domaine est vide.';
 $wb['domain_error_unique'] = 'Dupliquer le domaine.';
 $wb['domain_error_regex'] = 'Le domaine est invalide.';
 $wb['client_txt'] = 'Client';
-$wb['limit_maildomain_txt'] = 'Le nombre maximal de domaines d\'email pour votre compte a été atteint.';
+$wb['limit_maildomain_txt'] = 'Le nombre maximal de domaines d\'email pour votre compte a é atteint.';
 $wb['policy_txt'] = 'Filtre antispam';
 $wb['no_policy'] = '- inactif -';
-$wb['error_not_allowed_server_id'] = 'Le serveur choisi n\'est pas autorisé pour ce compte.';
+$wb['error_not_allowed_server_id'] = 'Le serveur choisi n\'est pas autoriséour ce compte.';
 $wb['dkim_selector_txt'] = 'DKIM-Selector';
-$wb['dkim_selector_error'] = 'Invalid DKIM-Selector. Use only lower-case alphanumeric characters (a-z or 0-9)';
+$wb['dkim_selector_error'] = 'Selecteur DKIM non valide. Utiliser que des caractès alphanuméques minuscules (a-z et/oo 0-9)';
 ?>
+
diff --git a/interface/web/mail/list/mail_user.list.php b/interface/web/mail/list/mail_user.list.php
index 0b17bf7..253aa90 100644
--- a/interface/web/mail/list/mail_user.list.php
+++ b/interface/web/mail/list/mail_user.list.php
@@ -89,4 +89,40 @@
 	'width' => "",
 	'value' => array('y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>", 'n' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
 
+$liste["item"][] = array( 'field'  => "postfix",
+	'datatype' => "VARCHAR",
+	'formtype' => "SELECT",
+	'op'  => "=",
+	'prefix' => "",
+	'suffix' => "",
+	'width'  => "",
+	'value'  => array('y' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>", 'n' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
+
+$liste["item"][] = array( 'field'  => "disablesmtp",
+	'datatype' => "VARCHAR",
+	'formtype' => "SELECT",
+	'op'  => "=",
+	'prefix' => "",
+	'suffix' => "",
+	'width'  => "",
+	'value'  => array('n' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>", 'y' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
+
+$liste["item"][] = array( 'field'  => "disableimap",
+	'datatype' => "VARCHAR",
+	'formtype' => "SELECT",
+	'op'  => "=",
+	'prefix' => "",
+	'suffix' => "",
+	'width'  => "",
+	'value'  => array('n' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>", 'y' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
+
+$liste["item"][] = array( 'field'  => "disablepop3",
+	'datatype' => "VARCHAR",
+	'formtype' => "SELECT",
+	'op'  => "=",
+	'prefix' => "",
+	'suffix' => "",
+	'width'  => "",
+	'value'  => array('n' => "<div id=\"ir-Yes\" class=\"swap\"><span>Yes</span></div>", 'y' => "<div class=\"swap\" id=\"ir-No\"><span>No</span></div>"));
+
 ?>
diff --git a/interface/web/mail/mail_domain_dkim_create.php b/interface/web/mail/mail_domain_dkim_create.php
index 2a486a7..0f636b1 100644
--- a/interface/web/mail/mail_domain_dkim_create.php
+++ b/interface/web/mail/mail_domain_dkim_create.php
@@ -80,7 +80,7 @@
 	require_once('../../lib/classes/validate_dkim.inc.php');
 	$validate_dkim=new validate_dkim ();
 	if($validate_dkim->validate_post('private',$private_key)) { /* validate the $_POST-value */
-		exec('echo '.escapeshellarg($private_key).'|openssl rsa -pubout -outform PEM',$pubkey,$result);
+		exec('echo '.escapeshellarg($private_key).'|openssl rsa -pubout -outform PEM 2> /dev/null',$pubkey,$result);
 		$public_key=pub_key($pubkey);
 	} else {
 		$public_key='invalid key';
@@ -92,8 +92,8 @@
 
 switch ($_POST['action']) {
 	case 'create': /* create DKIM Private-key */
-		exec('openssl rand -out /usr/local/ispconfig/server/temp/random-data.bin 4096', $output, $result);
-		exec('openssl genrsa -rand /usr/local/ispconfig/server/temp/random-data.bin 1024', $privkey, $result);
+		exec('openssl rand -out /usr/local/ispconfig/server/temp/random-data.bin 4096 2> /dev/null', $output, $result);
+		exec('openssl genrsa -rand /usr/local/ispconfig/server/temp/random-data.bin 1024 2> /dev/null', $privkey, $result);
 		unlink("/usr/local/ispconfig/server/temp/random-data.bin");
 		foreach($privkey as $values) $private_key=$private_key.$values."\n";
 	break;
diff --git a/interface/web/mail/mail_domain_edit.php b/interface/web/mail/mail_domain_edit.php
index 8220c2c..1c0a991 100644
--- a/interface/web/mail/mail_domain_edit.php
+++ b/interface/web/mail/mail_domain_edit.php
@@ -61,6 +61,9 @@
 			if(!$app->tform->checkResellerLimit('limit_maildomain')) {
 				$app->error('Reseller: '.$app->tform->wordbook["limit_maildomain_txt"]);
 			}
+		} else {
+			$settings = $app->getconf->get_global_config('mail');
+			$app->tform->formDef['tabs']['domain']['fields']['server_id']['default'] = intval($settings['default_mailserver']);
 		}
 
 		parent::onShowNew();
@@ -69,7 +72,10 @@
 	function onShowEnd() {
 		global $app, $conf;
 
-		if($_SESSION["s"]["user"]["typ"] == 'admin') {
+		$app->uses('ini_parser,getconf');
+		$settings = $app->getconf->get_global_config('domains');
+
+		if($_SESSION["s"]["user"]["typ"] == 'admin' && $settings['use_domain_module'] != 'y') {
 			// Getting Clients of the user
 			$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name";
 
@@ -96,20 +102,21 @@
 			$app->tpl->setVar("server_id", "<option value='$client[default_mailserver]'>$tmp[server_name]</option>");
 			unset($tmp);
 
-			// Fill the client select field
-			$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$app->functions->intval($client['client_id'])." ORDER BY client.company_name, client.contact_name, sys_group.name";
-			$clients = $app->db->queryAllRecords($sql);
-			$tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$app->functions->intval($client['client_id']));
-			$client_select = '<option value="'.$tmp['groupid'].'">'.$client['contactname'].'</option>';
-			//$tmp_data_record = $app->tform->getDataRecord($this->id);
-			if(is_array($clients)) {
-				foreach( $clients as $client) {
-					$selected = @(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':'';
-					$client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n";
+			if ($settings['use_domain_module'] != 'y') {
+				// Fill the client select field
+				$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$app->functions->intval($client['client_id'])." ORDER BY client.company_name, client.contact_name, sys_group.name";
+				$clients = $app->db->queryAllRecords($sql);
+				$tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$app->functions->intval($client['client_id']));
+				$client_select = '<option value="'.$tmp['groupid'].'">'.$client['contactname'].'</option>';
+				//$tmp_data_record = $app->tform->getDataRecord($this->id);
+				if(is_array($clients)) {
+					foreach( $clients as $client) {
+						$selected = @(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':'';
+						$client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n";
+					}
 				}
+				$app->tpl->setVar("client_group_id", $client_select);
 			}
-			$app->tpl->setVar("client_group_id", $client_select);
-
 		}
 
 		if($_SESSION["s"]["user"]["typ"] != 'admin')
@@ -144,13 +151,11 @@
 		 * Now we have to check, if we should use the domain-module to select the domain
 		 * or not
 		 */
-		$app->uses('ini_parser,getconf');
-		$settings = $app->getconf->get_global_config('domains');
 		if ($settings['use_domain_module'] == 'y') {
 			/*
 			 * The domain-module is in use.
 			*/
-			$domains = $app->tools_sites->getDomainModuleDomains();
+			$domains = $app->tools_sites->getDomainModuleDomains("mail_domain", $this->dataRecord["domain"]);
 			$domain_select = '';
 			if(is_array($domains) && sizeof($domains) > 0) {
 				/* We have domains in the list, so create the drop-down-list */
@@ -208,6 +213,9 @@
 		$app->uses('ini_parser,getconf');
 		$settings = $app->getconf->get_global_config('domains');
 		if ($settings['use_domain_module'] == 'y') {
+			if ($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid'])) {
+				$this->dataRecord['client_group_id'] = $app->tools_sites->getClientIdForDomain($this->dataRecord['domain']);
+			}
 			$domain_check = $app->tools_sites->checkDomainModuleDomain($this->dataRecord['domain']);
 			if(!$domain_check) {
 				// invalid domain selected
@@ -258,24 +266,13 @@
 	function onAfterInsert() {
 		global $app, $conf;
 
-		// make sure that the record belongs to the client group and not the admin group when a dmin inserts it
-		// also make sure that the user can not delete domain created by a admin
-		if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
-			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-			$app->db->query("UPDATE mail_domain SET sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE domain_id = ".$this->id);
-		}
-		if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
-			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-			$app->db->query("UPDATE mail_domain SET sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE domain_id = ".$this->id);
-		}
-
 		// Spamfilter policy
 		$policy_id = $app->functions->intval($this->dataRecord["policy"]);
 		if($policy_id > 0) {
 			$tmp_user = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = '@".$app->db->quote($this->dataRecord["domain"])."'");
 			if($tmp_user["id"] > 0) {
 				// There is already a record that we will update
-				$app->db->datalogUpdate('spamfilter_users', "policy_id = $ploicy_id", 'id', $tmp_user["id"]);
+				$app->db->datalogUpdate('spamfilter_users', "policy_id = $policy_id", 'id', $tmp_user["id"]);
 			} else {
 				$tmp_domain = $app->db->queryOneRecord("SELECT sys_groupid FROM mail_domain WHERE domain_id = ".$this->id);
 				// We create a new record
@@ -284,7 +281,7 @@
 				$app->db->datalogInsert('spamfilter_users', $insert_data, 'id');
 				unset($tmp_domain);
 			}
-		}  // endif spamfilter policy
+		} // endif spamfilter policy
 	}
 
 	function onBeforeUpdate() {
@@ -313,25 +310,8 @@
 		}
 	}
 
-
-
 	function onAfterUpdate() {
 		global $app, $conf;
-
-		// make sure that the record belongs to the client group and not the admin group when admin inserts it
-		// also make sure that the user can not delete domain created by a admin
-		if($_SESSION["s"]["user"]["typ"] == 'admin' && isset($this->dataRecord["client_group_id"])) {
-			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-			$tmp = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE default_group = $client_group_id");
-			$client_user_id = ($tmp['userid'] > 0)?$tmp['userid']:1;
-			$app->db->query("UPDATE mail_domain SET sys_userid = $client_user_id, sys_groupid = $client_group_id, sys_perm_group = 'ru' WHERE domain_id = ".$this->id);
-		}
-		if($app->auth->has_clients($_SESSION['s']['user']['userid']) && isset($this->dataRecord["client_group_id"])) {
-			$client_group_id = $app->functions->intval($this->dataRecord["client_group_id"]);
-			$tmp = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE default_group = $client_group_id");
-			$client_user_id = ($tmp['userid'] > 0)?$tmp['userid']:1;
-			$app->db->query("UPDATE mail_domain SET sys_userid = $client_user_id, sys_groupid = $client_group_id, sys_perm_group = 'riud' WHERE domain_id = ".$this->id);
-		}
 
 		// Spamfilter policy
 		$policy_id = $app->functions->intval($this->dataRecord["policy"]);
@@ -344,7 +324,7 @@
 				$tmp_domain = $app->db->queryOneRecord("SELECT sys_groupid FROM mail_domain WHERE domain_id = ".$this->id);
 				// We create a new record
 				$insert_data = "(`sys_userid`, `sys_groupid`, `sys_perm_user`, `sys_perm_group`, `sys_perm_other`, `server_id`, `priority`, `policy_id`, `email`, `fullname`, `local`)
-				        VALUES (".$_SESSION["s"]["user"]["userid"].", ".$tmp_domain["sys_groupid"].", 'riud', 'riud', '', ".$app->functions->intval($this->dataRecord["server_id"]).", 5, ".$app->functions->intval($policy_id).", '@".$app->db->quote($this->dataRecord["domain"])."', '@".$app->db->quote($this->dataRecord["domain"])."', 'Y')";
+				        VALUES (".$_SESSION["s"]["user"]["userid"].", ".$app->functions->intval($tmp_domain["sys_groupid"]).", 'riud', 'riud', '', ".$app->functions->intval($this->dataRecord["server_id"]).", 5, ".$app->functions->intval($policy_id).", '@".$app->db->quote($this->dataRecord["domain"])."', '@".$app->db->quote($this->dataRecord["domain"])."', 'Y')";
 				$app->db->datalogInsert('spamfilter_users', $insert_data, 'id');
 				unset($tmp_domain);
 			}
@@ -354,50 +334,7 @@
 				$app->db->datalogDelete('spamfilter_users', 'id', $tmp_user["id"]);
 			}
 		} // endif spamfilter policy
-		//** If the domain name or owner has been changed, change the domain and owner in all mailbox records
-		if($this->oldDataRecord['domain'] != $this->dataRecord['domain'] || (isset($this->dataRecord['client_group_id']) && $this->oldDataRecord['sys_groupid'] != $this->dataRecord['client_group_id'])) {
-			$app->uses('getconf');
-			$mail_config = $app->getconf->get_server_config($this->dataRecord["server_id"], 'mail');
-
-			//* Update the mailboxes
-			$mailusers = $app->db->queryAllRecords("SELECT * FROM mail_user WHERE email like '%@".$app->db->quote($this->oldDataRecord['domain'])."'");
-			$sys_groupid = $app->functions->intval((isset($this->dataRecord['client_group_id']))?$this->dataRecord['client_group_id']:$this->oldDataRecord['sys_groupid']);
-			$tmp = $app->db->queryOneRecord("SELECT userid FROM sys_user WHERE default_group = $client_group_id");
-			$client_user_id = $app->functions->intval(($tmp['userid'] > 0)?$tmp['userid']:1);
-			if(is_array($mailusers)) {
-				foreach($mailusers as $rec) {
-					// setting Maildir, Homedir, UID and GID
-					$mail_parts = explode("@", $rec['email']);
-					$maildir = str_replace("[domain]", $this->dataRecord['domain'], $mail_config["maildir_path"]);
-					$maildir = str_replace("[localpart]", $mail_parts[0], $maildir);
-					$maildir = $app->db->quote($maildir);
-					$email = $app->db->quote($mail_parts[0].'@'.$this->dataRecord['domain']);
-					$app->db->datalogUpdate('mail_user', "maildir = '$maildir', email = '$email', sys_userid = $client_user_id, sys_groupid = '$sys_groupid'", 'mailuser_id', $rec['mailuser_id']);
-				}
-			}
-
-			//* Update the aliases
-			$forwardings = $app->db->queryAllRecords("SELECT * FROM mail_forwarding WHERE source like '%@".$app->db->quote($this->oldDataRecord['domain'])."' OR destination like '%@".$app->db->quote($this->oldDataRecord['domain'])."'");
-			if(is_array($forwardings)) {
-				foreach($forwardings as $rec) {
-					$destination = $app->db->quote(str_replace($this->oldDataRecord['domain'], $this->dataRecord['domain'], $rec['destination']));
-					$source = $app->db->quote(str_replace($this->oldDataRecord['domain'], $this->dataRecord['domain'], $rec['source']));
-					$app->db->datalogUpdate('mail_forwarding', "source = '$source', destination = '$destination', sys_userid = $client_user_id, sys_groupid = '$sys_groupid'", 'forwarding_id', $rec['forwarding_id']);
-				}
-			}
-
-			//* Update the mailinglist
-			$app->db->query("UPDATE mail_mailinglist SET sys_userid = $client_user_id, sys_groupid = $sys_groupid WHERE domain = '".$app->db->quote($this->oldDataRecord['domain'])."'");
-
-			//* Delete the old spamfilter record
-			$tmp = $app->db->queryOneRecord("SELECT id FROM spamfilter_users WHERE email = '@".$app->db->quote($this->oldDataRecord["domain"])."'");
-			$app->db->datalogDelete('spamfilter_users', 'id', $tmp["id"]);
-			unset($tmp);
-
-		} // end if domain name changed
-
 	}
-
 }
 
 $page = new page_action;
diff --git a/interface/web/mail/mail_user_edit.php b/interface/web/mail/mail_user_edit.php
index a0691f9..02a27fb 100644
--- a/interface/web/mail/mail_user_edit.php
+++ b/interface/web/mail/mail_user_edit.php
@@ -153,7 +153,7 @@
 		if($_SESSION["s"]["user"]["typ"] != 'admin') { // if user is not admin
 			// Get the limits of the client
 			$client_group_id = $app->functions->intval($_SESSION["s"]["user"]["default_group"]);
-			$client = $app->db->queryOneRecord("SELECT limit_mailbox, limit_mailquota FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
+			$client = $app->db->queryOneRecord("SELECT limit_mailbox, limit_mailquota, parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
 
 
 			// Check if the user may add another mailbox.
@@ -179,6 +179,28 @@
 				unset($tmp);
 				unset($tmp_quota);
 			}
+
+			if($client['parent_client_id'] > 0) {
+				// Get the limits of the reseller
+				$reseller = $app->db->queryOneRecord("SELECT limit_mailquota, limit_maildomain FROM client WHERE client_id = ".$client['parent_client_id']);
+
+				//* Check the website quota of the client
+				if(isset($_POST["quota"]) && $reseller["limit_mailquota"] >= 0 && $app->functions->intval($this->dataRecord["quota"]) * 1024 * 1024 != $this->oldDataRecord['quota']) {
+					$tmp = $app->db->queryOneRecord("SELECT sum(quota) as mailquota FROM mail_user, sys_group, client WHERE mail_user.sys_groupid=sys_group.groupid AND sys_group.client_id=client.client_id AND ".$client['parent_client_id']." IN (client.parent_client_id, client.client_id) AND mailuser_id != ".$app->functions->intval($this->id));
+
+					$mailquota = $tmp["mailquota"] / 1024 / 1024;
+					$new_mailbox_quota = $app->functions->intval($this->dataRecord["quota"]);
+					if(($mailquota + $new_mailbox_quota > $reseller["limit_mailquota"]) || ($new_mailbox_quota == 0 && $reseller["limit_mailquota"] != -1)) {
+						$max_free_quota = $reseller["limit_mailquota"] - $mailquota;
+						if($max_free_quota < 0) $max_free_quota = 0;
+						$app->tform->errorMessage .= $app->tform->lng("limit_mailquota_txt").": ".$max_free_quota."<br>";
+						// Set the quota field to the max free space
+						$this->dataRecord["quota"] = $max_free_quota;
+					}
+					unset($tmp);
+					unset($tmp_quota);
+				}
+			}
 		} // end if user is not admin
 
 
diff --git a/interface/web/mail/templates/mail_domain_edit.htm b/interface/web/mail/templates/mail_domain_edit.htm
index 12ff756..658f0cf 100644
--- a/interface/web/mail/templates/mail_domain_edit.htm
+++ b/interface/web/mail/templates/mail_domain_edit.htm
@@ -20,12 +20,14 @@
                             </select>
                     </tmpl_if>
                 </div>
-                <div class="ctrlHolder">
-                    <label for="client_group_id">{tmpl_var name='client_txt'}</label>
-                    <select name="client_group_id" id="client_group_id" class="selectInput">
-                        {tmpl_var name='client_group_id'}
-                    </select>
-                </div>
+                <tmpl_unless name="domain_option">
+                    <div class="ctrlHolder">
+                        <label for="client_group_id">{tmpl_var name='client_txt'}</label>
+                        <select name="client_group_id" id="client_group_id" class="selectInput">
+                            {tmpl_var name='client_group_id'}
+                        </select>
+                    </div>
+                </tmpl_unless>
             <tmpl_else>
                 <tmpl_if name="only_one_server">
                     <input type="hidden" id="server_id" name="server_id" value="{tmpl_var name='server_id_value'}" />
@@ -48,12 +50,14 @@
             </tmpl_if>
 
             <tmpl_if name="is_reseller">
-                <div class="ctrlHolder">
-                    <label for="client_group_id">{tmpl_var name='client_txt'}</label>
-                    <select name="client_group_id" id="client_group_id" class="selectInput">
-                        {tmpl_var name='client_group_id'}
-                    </select>
-                </div>
+                <tmpl_unless name="domain_option">
+                    <div class="ctrlHolder">
+                        <label for="client_group_id">{tmpl_var name='client_txt'}</label>
+                        <select name="client_group_id" id="client_group_id" class="selectInput">
+                            {tmpl_var name='client_group_id'}
+                        </select>
+                    </div>
+                </tmpl_unless>
             </tmpl_if>
 
             <div class="ctrlHolder">
diff --git a/interface/web/mail/templates/mail_user_list.htm b/interface/web/mail/templates/mail_user_list.htm
index 9fba82e..3d9f09f 100644
--- a/interface/web/mail/templates/mail_user_list.htm
+++ b/interface/web/mail/templates/mail_user_list.htm
@@ -38,6 +38,10 @@
                 <tmpl_if name="enable_custom_login"><th class="tbl_col_login" scope="col"><tmpl_var name="login_txt"></th></tmpl_if>
                 <th class="tbl_col_name" scope="col"><tmpl_var name="name_txt"></th>
                         <th class="tbl_col_autoresponder" scope="col"><tmpl_var name="autoresponder_txt"></th>
+                        <th class="tbl_col_postfix" scope="col"><tmpl_var name="postfix_txt"></th>
+                        <th class="tbl_col_disablesmtp" scope="col"><tmpl_var name="disablesmtp_txt"></th>
+                        <th class="tbl_col_disableimap" scope="col"><tmpl_var name="disableimap_txt"></th>
+                        <th class="tbl_col_disablepop3" scope="col"><tmpl_var name="disablepop3_txt"></th>
                         <th class="tbl_col_limit" scope="col">{tmpl_var name='search_limit'}</th>
                     </tr>
                     <tr class="filter">
@@ -45,6 +49,10 @@
             <tmpl_if name="enable_custom_login"><td class="tbl_col_login"><input type="text" name="search_login" value="{tmpl_var name='search_login'}" /></td></tmpl_if>
                         <td class="tbl_col_name"><input type="text" name="search_name" value="{tmpl_var name='search_name'}" /></td>
                         <td class="tbl_col_autoresponder"><select name="search_autoresponder">{tmpl_var name='search_autoresponder'}</select></td>
+                        <td class="tbl_col_postfix"><select name="search_postfix">{tmpl_var name='search_postfix'}</select></th>
+                        <td class="tbl_col_disablesmtp"><select name="search_disablesmtp">{tmpl_var name='search_disablesmtp'}</select></th>
+                        <td class="tbl_col_disableimap"><select name="search_disableimap">{tmpl_var name='search_disableimap'}</select></th>
+                        <td class="tbl_col_disablepop3"><select name="search_disablepop3">{tmpl_var name='search_disablepop3'}</select></th>
                         <td class="tbl_col_buttons">
                             <button type="button" class="button icons16 icoFilter" name="Filter" id="Filter" value="{tmpl_var name="filter_txt"}" onclick="submitForm('pageForm','mail/mail_user_list.php');"><span>{tmpl_var name="filter_txt"}</span></button>
                         </td>
@@ -61,6 +69,10 @@
                         </tmpl_if>
                         <td class="tbl_col_name"><a href="#" onclick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="name"}</a></td>
                         <td class="tbl_col_autoresponder"><a href="#" onclick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="autoresponder"}</a></td>
+                        <td class="tbl_col_postfix"><a href="#" onclick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="postfix"}</a></td>
+                        <td class="tbl_col_disablesmtp"><a href="#" onclick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="disablesmtp"}</a></td>
+                        <td class="tbl_col_disableimap"><a href="#" onclick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="disableimap"}</a></td>
+                        <td class="tbl_col_disablepop3"><a href="#" onclick="loadContent('mail/mail_user_edit.php?id={tmpl_var name='id'}');">{tmpl_var name="disablepop3"}</a></td>
                         <td class="tbl_col_buttons">
                             <tmpl_if name="mailboxlist_webmail_link">
                                 <a class="button icons16 icoWebmailer" href="mail/webmailer.php?id={tmpl_var name='id'}" target="webmail"><span>{tmpl_var name="webmail_txt"}</span></a>
@@ -71,13 +83,13 @@
                 </tmpl_loop>
                 <tmpl_unless name="records">
                     <tr class="tbl_row_noresults tbl_row_<tmpl_if name='__EVEN__'}even<tmpl_else>uneven</tmpl_if>">
-                        <td colspan="<tmpl_if name="enable_custom_login">5<tmpl_else>4</tmpl_if>">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
+                        <td colspan="<tmpl_if name="enable_custom_login">9<tmpl_else>8</tmpl_if>">{tmpl_var name='globalsearch_noresults_text_txt'}</td>
                     </tr>
                 </tmpl_unless>
                 </tbody>
                 <tfoot>
                     <tr>
-                        <td class="tbl_footer tbl_paging" colspan="<tmpl_if name="enable_custom_login">5<tmpl_else>4</tmpl_if>"><tmpl_var name="paging"></td>
+                        <td class="tbl_footer tbl_paging" colspan="<tmpl_if name="enable_custom_login">9<tmpl_else>8</tmpl_if>"><tmpl_var name="paging"></td>
                     </tr>
                 </tfoot>
             </table>
diff --git a/interface/web/mailuser/lib/lang/es.lng b/interface/web/mailuser/lib/lang/es.lng
index 114dec9..06f9bfc 100644
--- a/interface/web/mailuser/lib/lang/es.lng
+++ b/interface/web/mailuser/lib/lang/es.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['Email Account'] = 'Email Account';
-$wb['Overview'] = 'Overview';
-$wb['Password'] = 'Password';
+$wb['Email Account'] = 'Cuenta de Correo';
+$wb['Overview'] = 'General';
+$wb['Password'] = 'Contraseña';
 $wb['Autoresponder'] = 'Autoresponder';
-$wb['Send copy'] = 'Send copy';
-$wb['Spamfilter'] = 'Spamfilter';
-$wb['Email Filters'] = 'Email Filters';
+$wb['Send copy'] = 'Enviar copia';
+$wb['Spamfilter'] = 'Filtro de spam';
+$wb['Email Filters'] = 'Filtros de correo';
 ?>
diff --git a/interface/web/mailuser/lib/lang/es_index.lng b/interface/web/mailuser/lib/lang/es_index.lng
index 29fe9ea..8fb4067 100644
--- a/interface/web/mailuser/lib/lang/es_index.lng
+++ b/interface/web/mailuser/lib/lang/es_index.lng
@@ -1,12 +1,12 @@
 <?php
-$wb['page_head_txt'] = 'Mailbox settings';
-$wb['page_desc_txt'] = 'Here you can edit the settings for the email account.';
-$wb['email_txt'] = 'Email address';
-$wb['login_txt'] = 'Login';
-$wb['server_address_txt'] = 'Mailserver address';
-$wb['cc_txt'] = 'Send copy to (CC)';
-$wb['quota_txt'] = 'Mailbox size';
-$wb['unlimited_txt'] = 'Unlimited';
+$wb['page_head_txt'] = 'Configuración del buzón';
+$wb['page_desc_txt'] = 'Aquí puedes editar la configuración de tu cuenta de correo.';
+$wb['email_txt'] = 'Dirección de correo';
+$wb['login_txt'] = 'Usuario';
+$wb['server_address_txt'] = 'Servidor de correo';
+$wb['cc_txt'] = 'Enviar copia a (CC)';
+$wb['quota_txt'] = 'Espacio del buzón';
+$wb['unlimited_txt'] = 'Ilimitado';
 $wb['mb_txt'] = 'MB';
-$wb['none_txt'] = 'None';
+$wb['none_txt'] = 'Ninguna';
 ?>
diff --git a/interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng b/interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng
index 79f386a..1efbd9b 100644
--- a/interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng
+++ b/interface/web/mailuser/lib/lang/es_mail_user_autoresponder.lng
@@ -1,13 +1,13 @@
 <?php
 $wb['mailbox_autoresponder_txt'] = 'Autoresponder';
-$wb['autoresponder_subject'] = 'Out of office reply';
-$wb['autoresponder_text_txt'] = 'Text';
-$wb['autoresponder_txt'] = 'Active';
-$wb['autoresponder_start_date_txt'] = 'Start on';
-$wb['autoresponder_start_date_isfuture'] = 'Start date cannot be in the past.';
-$wb['autoresponder_end_date_txt'] = 'End by';
-$wb['autoresponder_end_date_isgreater'] = 'End date must be set and be later than start date.';
-$wb['autoresponder_active'] = 'Enable the autoresponder';
-$wb['now_txt'] = 'Now';
-$wb['autoresponder_subject_txt'] = 'Betreff';
+$wb['autoresponder_subject'] = 'Fuera de la oficina';
+$wb['autoresponder_text_txt'] = 'Texto';
+$wb['autoresponder_txt'] = 'Activar';
+$wb['autoresponder_start_date_txt'] = 'Comenzar en';
+$wb['autoresponder_start_date_isfuture'] = 'Fecha de inicio no puede ser una fecha pasada.';
+$wb['autoresponder_end_date_txt'] = 'Finalizar en';
+$wb['autoresponder_end_date_isgreater'] = 'Fecha de finalización se debe establecer y ser posterior a la fecha de inicio.';
+$wb['autoresponder_active'] = 'Habilitar la respuesta automática';
+$wb['now_txt'] = 'Ahora';
+$wb['autoresponder_subject_txt'] = 'Asunto';
 ?>
diff --git a/interface/web/mailuser/lib/lang/es_mail_user_cc.lng b/interface/web/mailuser/lib/lang/es_mail_user_cc.lng
index 8187788..da462d3 100644
--- a/interface/web/mailuser/lib/lang/es_mail_user_cc.lng
+++ b/interface/web/mailuser/lib/lang/es_mail_user_cc.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['mailbox_cc_txt'] = 'Send copy to email address';
-$wb['cc_txt'] = 'Send copy to';
-$wb['email_txt'] = 'Email';
-$wb['cc_error_isemail'] = 'Email address invalid in -Send copy to- field';
-$wb['email_is_cc_error'] = 'Email address and send copy to address can not be the same.';
-$wb['name_optional_txt'] = '(Optional)';
-$wb['cc_note_txt'] = '(Separate multiple email addresses with commas)';
+$wb['mailbox_cc_txt'] = 'Enviar copia a dirección de correo';
+$wb['cc_txt'] = 'Enviar copia a';
+$wb['email_txt'] = 'Correo';
+$wb['cc_error_isemail'] = 'Dirección de correo no válida en el campo -Enviar copia a-';
+$wb['email_is_cc_error'] = 'Las direcciones de dirección de correo y enviar copia a no pueden ser la misma.';
+$wb['name_optional_txt'] = '(Opcional)';
+$wb['cc_note_txt'] = '(Separar múltiples direcciones de correo con comas)';
 ?>
diff --git a/interface/web/mailuser/lib/lang/es_mail_user_filter.lng b/interface/web/mailuser/lib/lang/es_mail_user_filter.lng
index 2e74ffd..af9fe5e 100644
--- a/interface/web/mailuser/lib/lang/es_mail_user_filter.lng
+++ b/interface/web/mailuser/lib/lang/es_mail_user_filter.lng
@@ -1,20 +1,20 @@
 <?php
-$wb['rulename_txt'] = 'Name';
-$wb['action_txt'] = 'Action';
-$wb['target_txt'] = 'Folder';
-$wb['active_txt'] = 'Active';
-$wb['rulename_error_empty'] = 'Name is empty.';
-$wb['searchterm_is_empty'] = 'Search term is empty.';
-$wb['source_txt'] = 'Source';
-$wb['target_error_regex'] = 'The target may only contain these characters: a-z, 0-9, -, ., _, and {space}';
-$wb['limit_mailfilter_txt'] = 'The max. number of mailfilters is reached.';
-$wb['subject_txt'] = 'Subject';
-$wb['from_txt'] = 'From';
-$wb['to_txt'] = 'To';
-$wb['contains_txt'] = 'Contains';
-$wb['is_txt'] = 'Is';
-$wb['begins_with_txt'] = 'Begins with';
-$wb['ends_with_txt'] = 'Ends with';
-$wb['move_to_txt'] = 'Move to';
-$wb['delete_txt'] = 'Delete';
+$wb['rulename_txt'] = 'Nombre';
+$wb['action_txt'] = 'Acción';
+$wb['target_txt'] = 'Carpeta';
+$wb['active_txt'] = 'Activar';
+$wb['rulename_error_empty'] = 'Nombre está vacío';
+$wb['searchterm_is_empty'] = 'Término de búsqueda está vacío.';
+$wb['source_txt'] = 'Campo';
+$wb['target_error_regex'] = 'La carpeta solo puede contener estos caracteres: a-z, 0-9, -, ., _, and {espacio}';
+$wb['limit_mailfilter_txt'] = 'Se ha alcanzado el número máximo de filtros.';
+$wb['subject_txt'] = 'Asunto';
+$wb['from_txt'] = 'Remitente';
+$wb['to_txt'] = 'Destinatario';
+$wb['contains_txt'] = 'Contiene';
+$wb['is_txt'] = 'Es';
+$wb['begins_with_txt'] = 'Comienza con';
+$wb['ends_with_txt'] = 'Termina con';
+$wb['move_to_txt'] = 'Mover a';
+$wb['delete_txt'] = 'Eliminar';
 ?>
diff --git a/interface/web/mailuser/lib/lang/es_mail_user_filter_list.lng b/interface/web/mailuser/lib/lang/es_mail_user_filter_list.lng
index fb6b9df..8fa7852 100644
--- a/interface/web/mailuser/lib/lang/es_mail_user_filter_list.lng
+++ b/interface/web/mailuser/lib/lang/es_mail_user_filter_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Email filter rules';
-$wb['rulename_txt'] = 'Name';
-$wb['add_new_record_txt'] = 'Add new Filter';
-$wb['page_txt'] = 'Page';
-$wb['page_of_txt'] = 'of';
-$wb['delete_confirmation'] = 'Do you really want to delete the mailfilter?';
+$wb['list_head_txt'] = 'Reglas de filtro de correo';
+$wb['rulename_txt'] = 'Nombre';
+$wb['add_new_record_txt'] = 'Añadir nuevo filtro';
+$wb['page_txt'] = 'Página';
+$wb['page_of_txt'] = 'de';
+$wb['delete_confirmation'] = '¿Realmente quiere eliminar este filtro?';
 ?>
diff --git a/interface/web/mailuser/lib/lang/es_mail_user_password.lng b/interface/web/mailuser/lib/lang/es_mail_user_password.lng
index cdf9674..249f8e6 100644
--- a/interface/web/mailuser/lib/lang/es_mail_user_password.lng
+++ b/interface/web/mailuser/lib/lang/es_mail_user_password.lng
@@ -1,10 +1,10 @@
 <?php
-$wb['mailbox_password_txt'] = 'Mailbox password';
-$wb['password_txt'] = 'Password';
-$wb['password_strength_txt'] = 'Password strength';
-$wb['email_txt'] = 'Email';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
+$wb['mailbox_password_txt'] = 'Contraseña de la cuenta';
+$wb['password_txt'] = 'Contraseña';
+$wb['password_strength_txt'] = 'Fortaleza de contraseña';
+$wb['email_txt'] = 'Correo';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
 ?>
diff --git a/interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng b/interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng
index be4bad9..49545c1 100644
--- a/interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng
+++ b/interface/web/mailuser/lib/lang/es_mail_user_spamfilter.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['mailbox_spamfilter_txt'] = 'Spamfilter';
-$wb['spamfilter_txt'] = 'Spamfilter';
-$wb['email_txt'] = 'Email';
-$wb['no_policy'] = '- not enabled -';
-$wb['policy_txt'] = 'Policy';
+$wb['mailbox_spamfilter_txt'] = 'Filtro de spam';
+$wb['spamfilter_txt'] = 'Filtro de spam';
+$wb['email_txt'] = 'Correo';
+$wb['no_policy'] = '- no activado -';
+$wb['policy_txt'] = 'Política';
 ?>
diff --git a/interface/web/monitor/lib/lang/es.lng b/interface/web/monitor/lib/lang/es.lng
index 0cdbe9f..49b3982 100644
--- a/interface/web/monitor/lib/lang/es.lng
+++ b/interface/web/monitor/lib/lang/es.lng
@@ -128,33 +128,33 @@
 $wb['monitor_settings_refreshsq_txt'] = 'Secuencia de refresco:';
 $wb['monitor_settings_server_txt'] = 'Servidor';
 $wb['monitor_title_cpuinfo_txt'] = 'Información de la CPU';
-$wb['monitor_title_updatestate_txt'] = 'Actualizar estado';
+$wb['monitor_title_updatestate_txt'] = 'Estado de actualización';
 $wb['monitor_title_mailq_txt'] = 'Cola de correo';
 $wb['monitor_title_raidstate_txt'] = 'Estado del RAID';
 $wb['monitor_title_rkhunterlog_txt'] = 'Registro de RKHunter';
-$wb['monitor_updates_nosupport_txt'] = 'Su distribución no es soportada por este monitorizador';
+$wb['monitor_updates_nosupport_txt'] = 'Su distribución no está soportada por este monitorizador';
 $wb['monitor_title_fail2ban_txt'] = 'Registro de Fail2Ban';
-$wb['monitor_nosupportedraid1_txt'] = 'Por el momento, apoyamos mdadm para supervisar el RAID. <br>No encontramos ningún RAID en su servidor. </br> Esto significa que no podemos monitorizar su RAID todavía.';
+$wb['monitor_nosupportedraid1_txt'] = 'Por el momento, soportamos mdadm para supervisar el RAID. <br>No encontramos ningún RAID en su servidor. </br> Esto significa que no podemos monitorizar su RAID todavía.';
 $wb['monitor_serverstate_beancounterok_txt'] = 'El Beancounter es correcto';
-$wb['monitor_serverstate_beancounterinfo_txt'] = 'Hay fracaso en el Beancounter';
+$wb['monitor_serverstate_beancounterinfo_txt'] = 'Hay pocos fallos en el Beancounter';
 $wb['monitor_serverstate_beancounterwarning_txt'] = 'Hay algún fallo en el Beancounter';
 $wb['monitor_serverstate_beancountercritical_txt'] = 'Hay muchos fallos en el Beancounter';
-$wb['monitor_serverstate_beancountererror_txt'] = 'No falta mucho en el Beancounter';
+$wb['monitor_serverstate_beancountererror_txt'] = 'Hay demasiados fallos en el Beancounter';
 $wb['monitor_title_beancounter_txt'] = 'OpenVz VE BeanCounter';
 $wb['monitor_beancounter_nosupport_txt'] = 'Este servidor no es un VE OpenVZ y no tiene información Beancounter';
 $wb['monitor_title_iptables_txt'] = 'Reglas de IPTables';
 $wb['Show fail2ban-Log'] = 'Mostrar el registro de Fail2ban';
 $wb['Show IPTables'] = 'Mostrar IPTables';
 $wb['Show OpenVz VE BeanCounter'] = 'Mostrar OpenVz VE BeanCounter';
-$wb['Show Monit'] = 'Show Monit';
-$wb['no_monit_url_defined_txt'] = 'No Monit URL defined.';
-$wb['no_permissions_to_view_monit_txt'] = 'You are not allowed to access Monit.';
-$wb['Show Munin'] = 'Show Munin';
-$wb['no_munin_url_defined_txt'] = 'No Munin URL defined.';
-$wb['no_permissions_to_view_munin_txt'] = 'You are not allowed to access Munin.';
-$wb['no_data_database_size_txt'] = 'No data about the database usage available at the moment. Please check again later.';
-$wb['monitor_database_name_txt'] = 'Database';
-$wb['monitor_database_size_txt'] = 'Size';
-$wb['monitor_database_client_txt'] = 'Client';
-$wb['monitor_database_domain_txt'] = 'Domain';
+$wb['Show Monit'] = 'Mostrar Monit';
+$wb['no_monit_url_defined_txt'] = 'No se ha definido la URL de Monit.';
+$wb['no_permissions_to_view_monit_txt'] = 'No tienes permiso para acceder a Monit.';
+$wb['Show Munin'] = 'Mostrar Munin';
+$wb['no_munin_url_defined_txt'] = 'No se ha definido la URL de Munin.';
+$wb['no_permissions_to_view_munin_txt'] = 'No tienes permiso para acceder a Munin.';
+$wb['no_data_database_size_txt'] = 'No hay datos sobre el uso de la base de datos disponible en estos momentos. Por favor prueba más tarde.';
+$wb['monitor_database_name_txt'] = 'Base de datos';
+$wb['monitor_database_size_txt'] = 'Tamaño';
+$wb['monitor_database_client_txt'] = 'Cliente';
+$wb['monitor_database_domain_txt'] = 'Dominio';
 ?>
diff --git a/interface/web/sites/database_edit.php b/interface/web/sites/database_edit.php
index 58cb0a6..22b631a 100644
--- a/interface/web/sites/database_edit.php
+++ b/interface/web/sites/database_edit.php
@@ -61,6 +61,9 @@
 			if(!$app->tform->checkResellerLimit('limit_database')) {
 				$app->error('Reseller: '.$app->tform->wordbook["limit_database_txt"]);
 			}
+		} else {
+			$settings = $app->getconf->get_global_config('sites');
+			$app->tform->formDef['tabs']['database']['fields']['server_id']['default'] = intval($settings['default_dbserver']);
 		}
 
 		parent::onShowNew();
@@ -143,7 +146,11 @@
 			$app->tpl->setVar("database_name", $app->tools_sites->removePrefix($this->dataRecord['database_name'], $this->dataRecord['database_name_prefix'], $dbname_prefix));
 		}
 
-		$app->tpl->setVar("database_name_prefix", $app->tools_sites->getPrefix($this->dataRecord['database_name_prefix'], $dbname_prefix, $global_config['dbname_prefix']));
+		if($this->dataRecord['database_name'] == "") {
+			$app->tpl->setVar("database_name_prefix", $dbname_prefix);
+		} else {
+			$app->tpl->setVar("database_name_prefix", $app->tools_sites->getPrefix($this->dataRecord['database_name_prefix'], $dbname_prefix, $global_config['dbname_prefix']));
+		}
 
 		if($this->id > 0) {
 			//* we are editing a existing record
@@ -167,7 +174,7 @@
 		if($_SESSION["s"]["user"]["typ"] != 'admin') {
 			// Get the limits of the client
 			$client_group_id = $_SESSION["s"]["user"]["default_group"];
-			$client = $app->db->queryOneRecord("SELECT db_servers, limit_database, limit_database_quota FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.groupid = $client_group_id");
+			$client = $app->db->queryOneRecord("SELECT db_servers, limit_database, limit_database_quota, parent_client_id FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.groupid = $client_group_id");
 
 			// When the record is updated
 			if($this->id > 0) {
@@ -197,6 +204,33 @@
 					unset($global_config);
 					unset($dbname_prefix);
 				}
+
+				if($client['parent_client_id'] > 0) {
+					// Get the limits of the reseller
+					$reseller = $app->db->queryOneRecord("SELECT limit_database, limit_database_quota FROM client WHERE client_id = ".$client['parent_client_id']);
+
+					//* Check the website quota of the client
+					if ($reseller['limit_database_quota'] >= 0) {
+						//* get the database prefix
+						$app->uses('getconf,tools_sites');
+						$global_config = $app->getconf->get_global_config('sites');
+						$dbname_prefix = $app->tools_sites->replacePrefix($global_config['dbname_prefix'], $this->dataRecord);
+						//* get quota from other databases
+						$tmp = $app->db->queryOneRecord("SELECT sum(database_quota) as db_quota FROM web_database, sys_group, client WHERE web_database.sys_groupid=sys_group.groupid AND sys_group.client_id=client.client_id AND ? IN (client.parent_client_id, client.client_id) AND database_name <> ?", $client['parent_client_id'], $dbname_prefix.$this->dataRecord['database_name']);
+
+						$used_quota = $app->functions->intval($tmp['db_quota']);
+						$new_db_quota = $app->functions->intval($this->dataRecord["database_quota"]);
+						if(($used_quota + $new_db_quota > $reseller["limit_database_quota"]) || ($new_db_quota < 0 && $reseller["limit_database_quota"] >= 0)) {
+							$max_free_quota = floor($reseller["limit_database_quota"] - $used_quota);
+							if($max_free_quota < 0) $max_free_quota = 0;
+							$app->tform->errorMessage .= $app->tform->lng("limit_database_quota_free_txt").": ".$max_free_quota." MB<br>";
+							$this->dataRecord["database_quota"] = $max_free_quota;
+						}
+						unset($tmp);
+						unset($global_config);
+						unset($dbname_prefix);
+					}
+				}
 				// When the record is inserted
 			} else {
 				$client['db_servers_ids'] = explode(',', $client['db_servers']);
diff --git a/interface/web/sites/database_user_edit.php b/interface/web/sites/database_user_edit.php
index 75422ca..18b46b9 100644
--- a/interface/web/sites/database_user_edit.php
+++ b/interface/web/sites/database_user_edit.php
@@ -103,8 +103,11 @@
 			$app->tpl->setVar("database_user", $app->tools_sites->removePrefix($this->dataRecord['database_user'], $this->dataRecord['database_user_prefix'], $dbuser_prefix));
 		}
 
-
-		$app->tpl->setVar("database_user_prefix", $app->tools_sites->getPrefix($this->dataRecord['database_user_prefix'], $dbuser_prefix, $global_config['dbuser_prefix']));
+		if($this->dataRecord['database_user'] == "") {
+			$app->tpl->setVar("database_user_prefix", $dbuser_prefix);
+		} else {
+			$app->tpl->setVar("database_user_prefix", $app->tools_sites->getPrefix($this->dataRecord['database_user_prefix'], $dbuser_prefix, $global_config['dbuser_prefix']));
+		}
 
 		parent::onShowEnd();
 	}
diff --git a/interface/web/sites/ftp_user_edit.php b/interface/web/sites/ftp_user_edit.php
index 0346201..e4dec4a 100644
--- a/interface/web/sites/ftp_user_edit.php
+++ b/interface/web/sites/ftp_user_edit.php
@@ -82,7 +82,11 @@
 			$app->tpl->setVar("username", $app->tools_sites->removePrefix($this->dataRecord['username'], $this->dataRecord['username_prefix'], $ftpuser_prefix));
 		}
 
-		$app->tpl->setVar("username_prefix", $app->tools_sites->getPrefix($this->dataRecord['username_prefix'], $ftpuser_prefix, $global_config['ftpuser_prefix']));
+		if($this->dataRecord['username'] == "") {
+			$app->tpl->setVar("username_prefix", $ftpuser_prefix);
+		} else {
+			$app->tpl->setVar("username_prefix", $app->tools_sites->getPrefix($this->dataRecord['username_prefix'], $ftpuser_prefix, $global_config['ftpuser_prefix']));
+		}
 
 		parent::onShowEnd();
 	}
diff --git a/interface/web/sites/lib/lang/es.lng b/interface/web/sites/lib/lang/es.lng
index 6b2574a..d7098af 100644
--- a/interface/web/sites/lib/lang/es.lng
+++ b/interface/web/sites/lib/lang/es.lng
@@ -15,21 +15,21 @@
 $wb['Stats'] = 'Estadísticas';
 $wb['Website'] = 'Sitio web';
 $wb['Cron'] = 'Cron';
-$wb['Cron Jobs'] = 'Cron Jobs';
+$wb['Cron Jobs'] = 'Tareas Periódicas (Cron)';
 $wb['Statistics'] = 'Estadísticas';
 $wb['Web traffic'] = 'Trafico Web';
 $wb['Webdav-User'] = 'Usuario de Webdav';
 $wb['Webdav'] = 'Webdav';
 $wb['Website quota (Harddisk)'] = 'Cuota sito web (Disco Duro)';
-$wb['Database User'] = 'Database Users';
-$wb['Web Access'] = 'Web Access';
-$wb['Folder'] = 'Protected Folders';
-$wb['Folder users'] = 'Protected Folder Users';
-$wb['Command Line'] = 'Command Line';
-$wb['APS Installer'] = 'APS Installer';
-$wb['Available packages'] = 'Available packages';
-$wb['Installed packages'] = 'Installed packages';
-$wb['Update Packagelist'] = 'Update Packagelist';
-$wb['Subdomain (Vhost)'] = 'Subdomain (Vhost)';
-$wb['error_proxy_requires_url'] = 'Redirect Type \\"proxy\\" requires a URL as the redirect path.';
+$wb['Database User'] = 'Usuarios de base de datos';
+$wb['Web Access'] = 'Acceso Web';
+$wb['Folder'] = 'Carpetas Protegidas';
+$wb['Folder users'] = 'Usuarios de carpetas protegidas';
+$wb['Command Line'] = 'Línea de comandos';
+$wb['APS Installer'] = 'Instalador APS';
+$wb['Available packages'] = 'Paquetes disponibles';
+$wb['Installed packages'] = 'Paquetes instalados';
+$wb['Update Packagelist'] = 'Actualizar lista de paquetes';
+$wb['Subdomain (Vhost)'] = 'Subdominio (Vhost)';
+$wb['error_proxy_requires_url'] = 'Tipo de redirección "proxy" necesita una URL como ruta de redirección.';
 ?>
diff --git a/interface/web/sites/lib/lang/es_aps.lng b/interface/web/sites/lib/lang/es_aps.lng
index 29fb7b6..ab361cf 100644
--- a/interface/web/sites/lib/lang/es_aps.lng
+++ b/interface/web/sites/lib/lang/es_aps.lng
@@ -1,58 +1,58 @@
 <?php
-$wb['overview_txt'] = 'Overview';
-$wb['administration_txt'] = 'Administration';
-$wb['available_packages_txt'] = 'Available packages';
-$wb['installed_packages_txt'] = 'Installed packages';
-$wb['yes_txt'] = 'Yes';
+$wb['overview_txt'] = 'Resumen';
+$wb['administration_txt'] = 'Administración';
+$wb['available_packages_txt'] = 'Paquetes disponibles';
+$wb['installed_packages_txt'] = 'Paquetes instalados';
+$wb['yes_txt'] = 'Sí';
 $wb['no_txt'] = 'No';
-$wb['invalid_id_txt'] = 'No valid ID has been provided.';
-$wb['details_txt'] = 'Details';
-$wb['version_txt'] = 'Version';
-$wb['category_txt'] = 'Category';
-$wb['homepage_txt'] = 'Homepage';
-$wb['supported_languages_txt'] = 'Supported languages';
-$wb['description_txt'] = 'Description';
-$wb['config_script_txt'] = 'Configuration script';
-$wb['installed_size_txt'] = 'Size after installation';
-$wb['license_txt'] = 'License';
-$wb['screenshots_txt'] = 'Screenshots';
-$wb['changelog_txt'] = 'Changelog';
-$wb['server_requirements_txt'] = 'Server requirements';
-$wb['php_extensions_txt'] = 'PHP extensions';
-$wb['php_settings_txt'] = 'PHP settings';
-$wb['supported_php_versions_txt'] = 'Supported PHP versions';
-$wb['database_txt'] = 'Database';
-$wb['settings_txt'] = 'Settings';
-$wb['install_package_txt'] = 'Install this package';
-$wb['installation_txt'] = 'Installation';
-$wb['install_location_txt'] = 'Install location';
-$wb['acceptance_txt'] = 'Acceptance';
-$wb['acceptance_text_txt'] = 'Yes, i\'ve read the license and agree.';
-$wb['install_language_txt'] = 'Interface language';
-$wb['new_database_password_txt'] = 'New database password';
-$wb['basic_settings_txt'] = 'Basic settings';
-$wb['package_settings_txt'] = 'Package settings';
-$wb['error_main_domain'] = 'The domain of the installation path is invalid.';
-$wb['error_no_main_location'] = 'You have provided no valid installation path.';
-$wb['error_inv_main_location'] = 'The given install location folder is invalid.';
-$wb['error_license_agreement'] = 'In order to continue you have to accept the license agreement.';
-$wb['error_no_database_pw'] = 'You have provided no valid database password.';
-$wb['error_short_database_pw'] = 'Please choose a longer database password.';
-$wb['error_no_value_for'] = 'The field \\"%s\\" must not be empty.';
-$wb['error_short_value_for'] = 'The field \\"%s\\" requires a longer input value.';
-$wb['error_long_value_for'] = 'The field \\"%s\\" requires a shorter input value.';
-$wb['error_inv_value_for'] = 'You have entered an invalid value for the field \\"%s\\".';
-$wb['error_inv_email_for'] = 'You have entered an invalid mail address for the field \\"%s\\".';
-$wb['error_inv_domain_for'] = 'You have entered an invalid domain for the field \\"%s\\".';
-$wb['error_inv_integer_for'] = 'You have entered an invalid number for the field \\"%s\\".';
-$wb['error_inv_float_for'] = 'You have entered an invalid floating point number for the field \\"%s\\".';
-$wb['error_used_location'] = 'The installation path already contains a package installation.';
-$wb['installation_task_txt'] = 'Install planned';
-$wb['installation_error_txt'] = 'Install error';
-$wb['installation_success_txt'] = 'Installed';
-$wb['installation_remove_txt'] = 'Removal planned';
-$wb['packagelist_update_finished_txt'] = 'APS Packagelist update finished.';
-$wb['btn_install_txt'] = 'Install';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['limit_aps_txt'] = 'The max. number of APS instances for your account is reached.';
+$wb['invalid_id_txt'] = 'No se ha proporcionado un ID válido.';
+$wb['details_txt'] = 'Detalles';
+$wb['version_txt'] = 'Versión';
+$wb['category_txt'] = 'Categoría';
+$wb['homepage_txt'] = 'Página';
+$wb['supported_languages_txt'] = 'Idiomas soportados';
+$wb['description_txt'] = 'Descripción';
+$wb['config_script_txt'] = 'Script de configuración';
+$wb['installed_size_txt'] = 'Tamaño después de instalar';
+$wb['license_txt'] = 'Licencia';
+$wb['screenshots_txt'] = 'Imágenes';
+$wb['changelog_txt'] = 'Cambios';
+$wb['server_requirements_txt'] = 'Requisitos del servidor';
+$wb['php_extensions_txt'] = 'Extensiones de PHP';
+$wb['php_settings_txt'] = 'Configuración de PHP';
+$wb['supported_php_versions_txt'] = 'Versiones de PHP soportadas';
+$wb['database_txt'] = 'Base de datos';
+$wb['settings_txt'] = 'Configuración';
+$wb['install_package_txt'] = 'Instalar este paquete';
+$wb['installation_txt'] = 'Instalación';
+$wb['install_location_txt'] = 'Localización de instalación';
+$wb['acceptance_txt'] = 'Aceptar';
+$wb['acceptance_text_txt'] = 'Sí, he leído la licencia y la acepto.';
+$wb['install_language_txt'] = 'Idioma de la interfaz';
+$wb['new_database_password_txt'] = 'Contraseña de la nueva base de datos';
+$wb['basic_settings_txt'] = 'Configuración básica';
+$wb['package_settings_txt'] = 'Configuración del paquete';
+$wb['error_main_domain'] = 'El dominio de la ruta de instalación no es válido.';
+$wb['error_no_main_location'] = 'La ruta de instalación no es válida.';
+$wb['error_inv_main_location'] = 'La carpeta de instalacion no es válida.';
+$wb['error_license_agreement'] = 'Para continuar debes aceptar el acuerdo de licencia.';
+$wb['error_no_database_pw'] = 'La contraseña de base de datos no es válida.';
+$wb['error_short_database_pw'] = 'Por favor elige una contraseña de base de datos más larga.';
+$wb['error_no_value_for'] = 'El campo \"%s\" no puede estar vacío.';
+$wb['error_short_value_for'] = 'El campo \"%s\" debe ser más largo.';
+$wb['error_long_value_for'] = 'El campo \"%s\" debe ser más corto.';
+$wb['error_inv_value_for'] = 'El campo \"%s\" no es válido.';
+$wb['error_inv_email_for'] = 'La dirección de correo introducida en el campo \"%s\" no es válida.';
+$wb['error_inv_domain_for'] = 'El dominio introducido en el campo \"%s\" no es válido.';
+$wb['error_inv_integer_for'] = 'El número introducido en el campo \"%s\" no es válido.';
+$wb['error_inv_float_for'] = 'El número real introducido en el campo \"%s\" no es válido.';
+$wb['error_used_location'] = 'La ruta de instalación ya contiene un paquete instalado.';
+$wb['installation_task_txt'] = 'Instalación preparada';
+$wb['installation_error_txt'] = 'Error de instalación';
+$wb['installation_success_txt'] = 'Instalado';
+$wb['installation_remove_txt'] = 'Borrado preparado';
+$wb['packagelist_update_finished_txt'] = 'Actualización de lista de paquetes finalizada';
+$wb['btn_install_txt'] = 'Instalar';
+$wb['btn_cancel_txt'] = 'Cancelar';
+$wb['limit_aps_txt'] = 'Se ha alcanzado el número máximo de paquetes instalados para tu cuenta.';
 ?>
diff --git a/interface/web/sites/lib/lang/es_aps_instances_list.lng b/interface/web/sites/lib/lang/es_aps_instances_list.lng
index 052d834..f302a7a 100644
--- a/interface/web/sites/lib/lang/es_aps_instances_list.lng
+++ b/interface/web/sites/lib/lang/es_aps_instances_list.lng
@@ -1,13 +1,13 @@
 <?php
-$wb['list_head_txt'] = 'Installed packages';
-$wb['name_txt'] = 'Name';
-$wb['version_txt'] = 'Version';
-$wb['customer_txt'] = 'Client';
-$wb['status_txt'] = 'Status';
-$wb['install_location_txt'] = 'Install location';
-$wb['pkg_delete_confirmation'] = 'Do you really want to delete this installation?';
-$wb['pkg_reinstall_confirmation'] = 'Do you really want to reinstall this package with the same settings?';
-$wb['filter_txt'] = 'Search';
-$wb['delete_txt'] = 'Delete';
-$wb['reinstall_txt'] = 'Reinstall';
+$wb['list_head_txt'] = 'Paquetes instalados';
+$wb['name_txt'] = 'Nombre';
+$wb['version_txt'] = 'Versión';
+$wb['customer_txt'] = 'Cliente';
+$wb['status_txt'] = 'Estado';
+$wb['install_location_txt'] = 'Localización de instalación';
+$wb['pkg_delete_confirmation'] = '¿Realmente quieres eliminar esta instalación?';
+$wb['pkg_reinstall_confirmation'] = '¿Realmente quieres reinstalar este paquete con la misma configuración?';
+$wb['filter_txt'] = 'Buscar';
+$wb['delete_txt'] = 'Eliminar';
+$wb['reinstall_txt'] = 'Reinstalar';
 ?>
diff --git a/interface/web/sites/lib/lang/es_aps_packages_list.lng b/interface/web/sites/lib/lang/es_aps_packages_list.lng
index 68c3780..d294611 100644
--- a/interface/web/sites/lib/lang/es_aps_packages_list.lng
+++ b/interface/web/sites/lib/lang/es_aps_packages_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Available packages';
-$wb['name_txt'] = 'Name';
-$wb['version_txt'] = 'Version';
-$wb['category_txt'] = 'Category';
-$wb['status_txt'] = 'Unlocked';
-$wb['filter_txt'] = 'Search';
+$wb['list_head_txt'] = 'Paquetes disponibles';
+$wb['name_txt'] = 'Nombre';
+$wb['version_txt'] = 'Versión';
+$wb['category_txt'] = 'Categoría';
+$wb['status_txt'] = 'Desbloqueado';
+$wb['filter_txt'] = 'Buscar';
 ?>
diff --git a/interface/web/sites/lib/lang/es_aps_update_packagelist.lng b/interface/web/sites/lib/lang/es_aps_update_packagelist.lng
index ce9fcf6..4719d14 100644
--- a/interface/web/sites/lib/lang/es_aps_update_packagelist.lng
+++ b/interface/web/sites/lib/lang/es_aps_update_packagelist.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['head_txt'] = 'Update Packagelist';
+$wb['head_txt'] = 'Actualizar lista de paquetes';
 $wb['list_desc_txt'] = '';
-$wb['btn_start_txt'] = 'Update Packagelist';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['legend_txt'] = 'Here you can update the list of available packages. Please note that this can take up to five minutes. You can leave this page if you like; the process will continue in the background.';
+$wb['btn_start_txt'] = 'Actualizar lista de paquetes';
+$wb['btn_cancel_txt'] = 'Cancelar';
+$wb['legend_txt'] = 'Aquí puedes actualizar la lista de paquetes disponibles. Por favor ten en cuenta que puede tardar hasta 5 minutos. Puedes salir de esta página si quieres, el proceso continuará ejecutándose.';
 ?>
diff --git a/interface/web/sites/lib/lang/es_cron.lng b/interface/web/sites/lib/lang/es_cron.lng
index 436c947..1efccb0 100644
--- a/interface/web/sites/lib/lang/es_cron.lng
+++ b/interface/web/sites/lib/lang/es_cron.lng
@@ -18,7 +18,7 @@
 $wb['run_wday_error_format'] = 'Formato no válido para los días de la semana.';
 $wb['command_error_format'] = 'Formato de comando no válido. En el caso de las llamadas a URLs sólo se permite http o https.';
 $wb['unknown_fieldtype_error'] = 'Se ha usado un tipo de campo desconocido.';
-$wb['server_id_error_empty'] = 'The server ID is empty.';
-$wb['limit_cron_url_txt'] = 'URL cron only. Please enter a URL starting with http:// as cron command.';
-$wb['command_error_empty'] = 'Command is empty.';
+$wb['server_id_error_empty'] = 'El ID del servidor está vacío.';
+$wb['limit_cron_url_txt'] = 'Sólo se permiten tareas basadas en URL. Por favor introduce una URL que empiece por http:// como comando.';
+$wb['command_error_empty'] = 'El comando está vacío.';
 ?>
diff --git a/interface/web/sites/lib/lang/es_cron_list.lng b/interface/web/sites/lib/lang/es_cron_list.lng
index ff2675e..8b6dad0 100644
--- a/interface/web/sites/lib/lang/es_cron_list.lng
+++ b/interface/web/sites/lib/lang/es_cron_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Tareas cron';
+$wb['list_head_txt'] = 'Tareas periódicas';
 $wb['active_txt'] = 'Activar';
 $wb['server_id_txt'] = 'Servidor';
 $wb['run_min_txt'] = 'Minuto';
@@ -8,6 +8,6 @@
 $wb['run_month_txt'] = 'Mes';
 $wb['run_wday_txt'] = 'Día de la semana';
 $wb['command_txt'] = 'Comando';
-$wb['add_new_cron_txt'] = 'Añadir nueva tarea cron';
+$wb['add_new_cron_txt'] = 'Añadir nueva tarea periódica';
 $wb['parent_domain_id_txt'] = 'Sitio web';
 ?>
diff --git a/interface/web/sites/lib/lang/es_database.lng b/interface/web/sites/lib/lang/es_database.lng
index 86cd76d..066e17c 100644
--- a/interface/web/sites/lib/lang/es_database.lng
+++ b/interface/web/sites/lib/lang/es_database.lng
@@ -22,25 +22,25 @@
 $wb['database_remote_error_ips'] = 'Al menos una de las IP introducidas no es válida.';
 $wb['database_name_error_len'] = 'El nombre de la base de datos - {db} - es demasiado largo. La longitud máxima del nombre de la base de datos, incluyendo el prefijo, es de 64 caracteres.';
 $wb['database_user_error_len'] = 'El nombre de usuario de la base de datos - {user}- es demasiado largo. La longitud máxima del nombre de usuario de la base de datos, incluyendo el prefijo, es de 16 caracteres.';
-$wb['database_ro_user_txt'] = 'Read-only database user';
-$wb['optional_txt'] = 'optional';
-$wb['select_dbuser_txt'] = 'Select database user';
-$wb['no_dbuser_txt'] = 'None';
-$wb['database_client_differs_txt'] = 'The client of the parent web and the database do not match.';
-$wb['parent_domain_id_txt'] = 'Site';
-$wb['database_site_error_empty'] = 'Select the site to which the database belongs.';
-$wb['select_site_txt'] = '- Select Site -';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['globalsearch_resultslimit_of_txt'] = 'of';
-$wb['globalsearch_resultslimit_results_txt'] = 'results';
-$wb['globalsearch_noresults_text_txt'] = 'No results.';
-$wb['globalsearch_noresults_limit_txt'] = '0 results';
-$wb['globalsearch_searchfield_watermark_txt'] = 'Search';
-$wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
-$wb['database_user_missing_txt'] = 'Please select a database user for this database.';
+$wb['database_ro_user_txt'] = 'Usuario BD sólo lectura';
+$wb['optional_txt'] = 'opcional';
+$wb['select_dbuser_txt'] = 'Selecciona un usuario de base de datos';
+$wb['no_dbuser_txt'] = 'Ninguno';
+$wb['database_client_differs_txt'] = 'El cliente del sitio web y la base de datos no coinciden.';
+$wb['parent_domain_id_txt'] = 'Sitio web';
+$wb['database_site_error_empty'] = 'Selecciona el sitio al que pertenece la base de datos.';
+$wb['select_site_txt'] = '- Seleccionar Sitio Web -';
+$wb['btn_save_txt'] = 'Guardar';
+$wb['btn_cancel_txt'] = 'Cancelar';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
+$wb['globalsearch_resultslimit_of_txt'] = 'de';
+$wb['globalsearch_resultslimit_results_txt'] = 'resultados';
+$wb['globalsearch_noresults_text_txt'] = 'Sin resultados.';
+$wb['globalsearch_noresults_limit_txt'] = '0 resultados';
+$wb['globalsearch_searchfield_watermark_txt'] = 'Buscar';
+$wb['globalsearch_suggestions_text_txt'] = 'Sugerencias';
+$wb['database_user_missing_txt'] = 'Por favor selecciona un usuario de base de datos para esta base de datos.';
 ?>
diff --git a/interface/web/sites/lib/lang/es_database_admin_list.lng b/interface/web/sites/lib/lang/es_database_admin_list.lng
index b6f4cb3..6cab2e5 100644
--- a/interface/web/sites/lib/lang/es_database_admin_list.lng
+++ b/interface/web/sites/lib/lang/es_database_admin_list.lng
@@ -7,5 +7,5 @@
 $wb['database_name_txt'] = 'Nombre Base de Datos';
 $wb['add_new_record_txt'] = 'Añadir nueva Base de Datos';
 $wb['sys_groupid_txt'] = 'Cliente';
-$wb['parent_domain_id_txt'] = 'Website';
+$wb['parent_domain_id_txt'] = 'Sitio web';
 ?>
diff --git a/interface/web/sites/lib/lang/es_database_list.lng b/interface/web/sites/lib/lang/es_database_list.lng
index 157cdd5..dc875d6 100644
--- a/interface/web/sites/lib/lang/es_database_list.lng
+++ b/interface/web/sites/lib/lang/es_database_list.lng
@@ -6,5 +6,5 @@
 $wb['database_name_txt'] = 'Nombre de la base de datos';
 $wb['add_new_record_txt'] = 'Añadir nueva base de datos';
 $wb['database_user_txt'] = 'Usuario de Basos Datos';
-$wb['parent_domain_id_txt'] = 'Website';
+$wb['parent_domain_id_txt'] = 'Sitio web';
 ?>
diff --git a/interface/web/sites/lib/lang/es_database_user.lng b/interface/web/sites/lib/lang/es_database_user.lng
index 66a0718..18a5c3e 100644
--- a/interface/web/sites/lib/lang/es_database_user.lng
+++ b/interface/web/sites/lib/lang/es_database_user.lng
@@ -1,23 +1,23 @@
 <?php
-$wb['database_user_txt'] = 'Database user';
-$wb['database_password_txt'] = 'Database password';
-$wb['password_strength_txt'] = 'Password strength';
-$wb['client_txt'] = 'Client';
-$wb['active_txt'] = 'Active';
-$wb['database_user_error_empty'] = 'Database user is empty.';
-$wb['database_user_error_unique'] = 'There is already a database user with this name on the server. To get a unique name, e.g. prepend your domain name to the username.';
-$wb['database_user_error_regex'] = 'Invalid database user name. The username may contain these characters: a-z, A-Z, 0-9 and the underscore. Length: 2 - 64 characters.';
-$wb['database_user_error_len'] = 'Database username - {user} - too long. The max. database username length incl. prefix is 16 chars.';
-$wb['btn_save_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['globalsearch_resultslimit_of_txt'] = 'of';
-$wb['globalsearch_resultslimit_results_txt'] = 'results';
-$wb['globalsearch_noresults_text_txt'] = 'No results.';
-$wb['globalsearch_noresults_limit_txt'] = '0 results';
-$wb['globalsearch_searchfield_watermark_txt'] = 'Search';
-$wb['globalsearch_suggestions_text_txt'] = 'Suggestions';
+$wb['database_user_txt'] = 'Usuario de base de datos';
+$wb['database_password_txt'] = 'Contraseña de base de batos';
+$wb['password_strength_txt'] = 'Fortaleza de la contraseña';
+$wb['client_txt'] = 'Cliente';
+$wb['active_txt'] = 'Activo';
+$wb['database_user_error_empty'] = 'Usuario de base de datos está vacío.';
+$wb['database_user_error_unique'] = 'Ya hay un usuario de base de datos con este nombre en el servidor. Asigna un nombre único, e.g. incluye tu nombre de dominio delante del nombre de usuario.';
+$wb['database_user_error_regex'] = 'Usuario de base de datos no válido. El usuario solo puede contener estos caracteres: a-z, A-Z, 0-9 y subrayado. Longitud: 2 - 16 caracteres.';
+$wb['database_user_error_len'] = 'Usuario de base de datos - {user} - demasiado largo. La longitud máxima del usuario incluyendo el prefijo es 16 caracteres.';
+$wb['btn_save_txt'] = 'Guardar';
+$wb['btn_cancel_txt'] = 'Cancelar';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
+$wb['globalsearch_resultslimit_of_txt'] = 'de';
+$wb['globalsearch_resultslimit_results_txt'] = 'resultados';
+$wb['globalsearch_noresults_text_txt'] = 'Sin resultados.';
+$wb['globalsearch_noresults_limit_txt'] = '0 resultados';
+$wb['globalsearch_searchfield_watermark_txt'] = 'Buscar';
+$wb['globalsearch_suggestions_text_txt'] = 'Sugerencias';
 ?>
diff --git a/interface/web/sites/lib/lang/es_database_user_admin_list.lng b/interface/web/sites/lib/lang/es_database_user_admin_list.lng
index d7f88c4..58941b3 100644
--- a/interface/web/sites/lib/lang/es_database_user_admin_list.lng
+++ b/interface/web/sites/lib/lang/es_database_user_admin_list.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['list_head_txt'] = 'Database User';
-$wb['database_user_txt'] = 'Database user';
-$wb['add_new_record_txt'] = 'Add new User';
-$wb['sys_groupid_txt'] = 'Client';
+$wb['list_head_txt'] = 'Usuarios de Base de Datos';
+$wb['database_user_txt'] = 'Usuarios de Base de Datos';
+$wb['add_new_record_txt'] = 'Añadir nuevo usuario';
+$wb['sys_groupid_txt'] = 'Cliente';
 ?>
diff --git a/interface/web/sites/lib/lang/es_database_user_list.lng b/interface/web/sites/lib/lang/es_database_user_list.lng
index 8c22649..28dffda 100644
--- a/interface/web/sites/lib/lang/es_database_user_list.lng
+++ b/interface/web/sites/lib/lang/es_database_user_list.lng
@@ -1,5 +1,5 @@
 <?php
-$wb['list_head_txt'] = 'Database user';
-$wb['database_user_txt'] = 'Database user';
-$wb['add_new_record_txt'] = 'Add new user';
+$wb['list_head_txt'] = 'Usuarios de Base de Datos';
+$wb['database_user_txt'] = 'Usuarios de Base de Datos';
+$wb['add_new_record_txt'] = 'Añadir nuevo usuario';
 ?>
diff --git a/interface/web/sites/lib/lang/es_ftp_user.lng b/interface/web/sites/lib/lang/es_ftp_user.lng
index c8b86b0..9d60bfd 100644
--- a/interface/web/sites/lib/lang/es_ftp_user.lng
+++ b/interface/web/sites/lib/lang/es_ftp_user.lng
@@ -25,10 +25,10 @@
 $wb['directory_error_notinweb'] = 'El directorio no está dentro del directorio web raíz.';
 $wb['parent_domain_id_error_empty'] = 'No se ha seleccionado un sitio web.';
 $wb['quota_size_error_regex'] = 'Cuota: introduzca un -1 para ilimitados ó un número > 0';
-$wb['dir_dot_error'] = 'No .. ruta permitida.';
-$wb['dir_slashdot_error'] = 'No ./ en ruta permitida.';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
+$wb['dir_dot_error'] = 'No se permite .. en la ruta.';
+$wb['dir_slashdot_error'] = 'No se permite ./ en la ruta.';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
 ?>
diff --git a/interface/web/sites/lib/lang/es_ftp_user_list.lng b/interface/web/sites/lib/lang/es_ftp_user_list.lng
index c965523..80a16ae 100644
--- a/interface/web/sites/lib/lang/es_ftp_user_list.lng
+++ b/interface/web/sites/lib/lang/es_ftp_user_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Usuario FTP';
-$wb['active_txt'] = 'Activar';
+$wb['active_txt'] = 'Activo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['parent_domain_id_txt'] = 'Sitio web';
 $wb['username_txt'] = 'Usuario';
diff --git a/interface/web/sites/lib/lang/es_shell_user.lng b/interface/web/sites/lib/lang/es_shell_user.lng
index 45fd930..c5ce609 100644
--- a/interface/web/sites/lib/lang/es_shell_user.lng
+++ b/interface/web/sites/lib/lang/es_shell_user.lng
@@ -1,31 +1,31 @@
 <?php
 $wb['shell_txt'] = 'Consola (shell)';
-$wb['dir_txt'] = 'Dir';
+$wb['dir_txt'] = 'Directorio';
 $wb['server_id_txt'] = 'Servidor';
-$wb['parent_domain_id_txt'] = 'Sitio';
+$wb['parent_domain_id_txt'] = 'Sitio web';
 $wb['username_txt'] = 'Usuario';
 $wb['password_txt'] = 'Contraseña';
 $wb['password_strength_txt'] = 'Fortaleza de la contraseña';
-$wb['chroot_txt'] = 'Consola chroot';
+$wb['chroot_txt'] = 'Enjaular Consola';
 $wb['quota_size_txt'] = 'Cuota';
 $wb['active_txt'] = 'Activar';
-$wb['username_error_empty'] = 'El usuario está vacío';
-$wb['username_error_unique'] = 'El nombre de usuario debe ser único';
-$wb['username_error_regex'] = 'El nombre de usuario contiene caracteres no permitidos';
-$wb['quota_size_error_empty'] = 'Cuota vacía';
-$wb['uid_error_empty'] = 'GID vacío';
-$wb['directory_error_empty'] = 'Directorio vacío';
-$wb['limit_shell_user_txt'] = 'Se ha alcanzado el número máximo de usuarios de consola';
+$wb['username_error_empty'] = 'El usuario está vacío.';
+$wb['username_error_unique'] = 'El nombre de usuario debe ser único.';
+$wb['username_error_regex'] = 'El nombre de usuario contiene caracteres no permitidos.';
+$wb['quota_size_error_empty'] = 'La cuota está vacía.';
+$wb['uid_error_empty'] = 'El GID esta vacío.';
+$wb['directory_error_empty'] = 'El directorio esta vacío.';
+$wb['limit_shell_user_txt'] = 'Se ha alcanzado el número máximo de usuarios de consola.';
 $wb['parent_domain_id_error_empty'] = 'No se ha seleccionado un sitio web.';
 $wb['puser_txt'] = 'Nombre del usuario Web';
-$wb['pgroup_txt'] = 'Web Group';
-$wb['ssh_rsa_txt'] = 'SSH-RSA de clave pública (para los inicios de sesión basados ??en clave)';
-$wb['dir_dot_error'] = 'No .. ruta permitida.';
-$wb['dir_slashdot_error'] = 'No ./ en ruta permitida.';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['username_must_not_exceed_32_chars_txt'] = 'The username must not exceed 32 characters.';
-$wb['username_not_allowed_txt'] = 'The username is not allowed.';
+$wb['pgroup_txt'] = 'Nombre del grupo Web';
+$wb['ssh_rsa_txt'] = 'Clave pública SSH-RSA (para inicios de sesión sin contraseña)';
+$wb['dir_dot_error'] = 'No se permite .. en la ruta.';
+$wb['dir_slashdot_error'] = 'No se permite ./ en la ruta.';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
+$wb['username_must_not_exceed_32_chars_txt'] = 'El nombre de usuario no debe ser más largo de 32 caracteres.';
+$wb['username_not_allowed_txt'] = 'El nombre de usuario no está permitido.';
 ?>
diff --git a/interface/web/sites/lib/lang/es_shell_user_list.lng b/interface/web/sites/lib/lang/es_shell_user_list.lng
index 4a9d7cb..5ece658 100644
--- a/interface/web/sites/lib/lang/es_shell_user_list.lng
+++ b/interface/web/sites/lib/lang/es_shell_user_list.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['list_head_txt'] = 'Shell User';
-$wb['active_txt'] = 'Active';
-$wb['server_id_txt'] = 'Server';
-$wb['parent_domain_id_txt'] = 'Site';
-$wb['username_txt'] = 'Username';
-$wb['add_new_record_txt'] = 'Add new Shell-User';
+$wb['list_head_txt'] = 'Usuarios de consola';
+$wb['active_txt'] = 'Activo';
+$wb['server_id_txt'] = 'Servidor';
+$wb['parent_domain_id_txt'] = 'Sitio web';
+$wb['username_txt'] = 'Nombre de usuario';
+$wb['add_new_record_txt'] = 'Añadir nuevo usuario de consola';
 ?>
diff --git a/interface/web/sites/lib/lang/es_user_quota_stats_list.lng b/interface/web/sites/lib/lang/es_user_quota_stats_list.lng
index 070584b..6a756de 100644
--- a/interface/web/sites/lib/lang/es_user_quota_stats_list.lng
+++ b/interface/web/sites/lib/lang/es_user_quota_stats_list.lng
@@ -1,9 +1,9 @@
 <?php
-$wb['list_head_txt'] = 'Cuota de disco Sitio web';
+$wb['list_head_txt'] = 'Cuota de disco de sitios web';
 $wb['domain_txt'] = 'Dominio';
 $wb['system_user_txt'] = 'Usuario Linux';
 $wb['used_txt'] = 'Espacio usado';
 $wb['hard_txt'] = 'Limite máximo';
 $wb['soft_txt'] = 'Limite advertencia';
-$wb['files_txt'] = 'Single files';
+$wb['files_txt'] = 'Archivos';
 ?>
diff --git a/interface/web/sites/lib/lang/es_web_childdomain.lng b/interface/web/sites/lib/lang/es_web_childdomain.lng
index 1619da9..d738740 100644
--- a/interface/web/sites/lib/lang/es_web_childdomain.lng
+++ b/interface/web/sites/lib/lang/es_web_childdomain.lng
@@ -1,8 +1,8 @@
 <?php
-$wb['ssl_state_txt'] = 'Estado o provincia';
+$wb['ssl_state_txt'] = 'Estado/Provincia';
 $wb['ssl_locality_txt'] = 'Localidad';
 $wb['ssl_organisation_txt'] = 'Organización';
-$wb['ssl_organisation_unit_txt'] = 'Unidad de la organización';
+$wb['ssl_organisation_unit_txt'] = 'Departamento de la organización';
 $wb['ssl_country_txt'] = 'País';
 $wb['ssl_request_txt'] = 'Solicitud SSL';
 $wb['ssl_cert_txt'] = 'Certificado SSL';
@@ -36,84 +36,84 @@
 $wb['domain_error_unique'] = 'El dominio debe ser único.';
 $wb['domain_error_regex'] = 'El nombre de dominio no es válido.';
 $wb['host_txt'] = 'Alojamiento';
-$wb['redirect_error_regex'] = 'Redirección no válida ruta. Redirecciones válidos son por ejemplo: /test/ or http://www.domain.tld/test/';
+$wb['redirect_error_regex'] = 'Ruta de redirección no válida. Redirecciones válidas son, por ejemplo,: /test/ or http://www.domain.tld/test/';
 $wb['no_redirect_txt'] = 'No redirigir';
-$wb['no_flag_txt'] = 'No flag';
-$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
-$wb['proxy_directives_txt'] = 'Proxy Directives';
-$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['error_proxy_requires_url'] = 'Redirect Type \"proxy\" requires a URL as the redirect path.';
-$wb['backup_interval_txt'] = 'Backup interval';
-$wb['backup_copies_txt'] = 'Number of backup copies';
-$wb['ssl_key_txt'] = 'SSL Key';
-$wb['ssl_domain_txt'] = 'SSL Domain';
-$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
-$wb['ipv6_address_txt'] = 'IPv6-Address';
-$wb['errordocs_txt'] = 'Own Error-Documents';
-$wb['subdomain_txt'] = 'Auto-Subdomain';
-$wb['domain_error_autosub'] = 'There is already a subdomain with these settings.';
-$wb['hd_quota_error_empty'] = 'Harddisk quota is 0 or empty.';
-$wb['traffic_quota_error_empty'] = 'Traffic quota is empty.';
-$wb['error_ssl_state_empty'] = 'SSL State is empty.';
-$wb['error_ssl_locality_empty'] = 'SSL Locality is empty.';
-$wb['error_ssl_organisation_empty'] = 'SSL Organisation is empty.';
-$wb['error_ssl_organisation_unit_empty'] = 'SSL Organisation Unit is empty.';
-$wb['error_ssl_country_empty'] = 'SSL Country is empty.';
-$wb['error_ssl_cert_empty'] = 'SSL Certificate field is empty';
-$wb['client_group_id_txt'] = 'Client';
-$wb['stats_password_txt'] = 'Set Webstatistics password';
+$wb['no_flag_txt'] = 'Sin flag';
+$wb['domain_error_wildcard'] = 'No se permiten subdominios comodín.';
+$wb['proxy_directives_txt'] = 'Directivas de Proxy';
+$wb['available_proxy_directive_snippets_txt'] = 'Fragmentos de directivas de proxy disponibles:';
+$wb['error_proxy_requires_url'] = 'Tipo de redirección "proxy" necesita una URL como ruta de redirección.';
+$wb['backup_interval_txt'] = 'Intervalo de copia de seguridad';
+$wb['backup_copies_txt'] = 'Número de copias de seguridad';
+$wb['ssl_key_txt'] = 'Clave SSL';
+$wb['ssl_domain_txt'] = 'Dominio SSL';
+$wb['web_folder_error_regex'] = 'La carpeta introducida no es válida. Por favor no introduzcas una barra.';
+$wb['ipv6_address_txt'] = 'Dirección IPv6';
+$wb['errordocs_txt'] = 'Documentos propios de error';
+$wb['subdomain_txt'] = 'Auto-Subdominio';
+$wb['domain_error_autosub'] = 'Ya hay un subdominio con estas configuraciones.';
+$wb['hd_quota_error_regex'] = 'Cuota de disco no es válida.';
+$wb['traffic_quota_error_regex'] = 'Cuota de tráfico no es válida.';
+$wb['error_ssl_state_empty'] = 'Estado/Provincia está vacío.';
+$wb['error_ssl_locality_empty'] = 'Localidad está vacío.';
+$wb['error_ssl_organisation_empty'] = 'Organización está vacío.';
+$wb['error_ssl_organisation_unit_empty'] = 'Departamento de Organización está vacío.';
+$wb['error_ssl_country_empty'] = 'País está vacío.';
+$wb['error_ssl_cert_empty'] = 'Certificado SSL está vacío.';
+$wb['client_group_id_txt'] = 'Cliente';
+$wb['stats_password_txt'] = 'Contraseña de estadísticas Web ';
 $wb['allow_override_txt'] = 'Apache AllowOverride';
-$wb['limit_web_quota_free_txt'] = 'Max. available Harddisk Quota';
-$wb['ssl_state_error_regex'] = 'Invalid SSL State. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_locality_error_regex'] = 'Invalid SSL Locality. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_organisation_error_regex'] = 'Invalid SSL Organisation. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_organistaion_unit_error_regex'] = 'Invalid SSL Organisation Unit. Valid characters are: a-z, 0-9 and .,-_';
-$wb['ssl_country_error_regex'] = 'Invalid SSL Country. Valid characters are: A-Z';
-$wb['limit_traffic_quota_free_txt'] = 'Max. available Traffic Quota';
+$wb['limit_web_quota_free_txt'] = 'Máxima cuota de disco duro disponible';
+$wb['ssl_state_error_regex'] = 'Estado/Provincia no válido. Los caracteres válidos son: a-z, 0-9 y,-_.';
+$wb['ssl_locality_error_regex'] = 'Localidad no válida. Los caracteres válidos son: a-z, 0-9 y,-_.';
+$wb['ssl_organisation_error_regex'] = 'Organización no válida. Los caracteres válidos son: a-z, 0-9 y,-_.';
+$wb['ssl_organistaion_unit_error_regex'] = 'Departamento de organización no válido. Los caracteres válidos son: a-z, 0-9 y,-_.';
+$wb['ssl_country_error_regex'] = 'País no válido. Los caracteres válidos son: A-Z';
+$wb['limit_traffic_quota_free_txt'] = 'Máxima cuota de tráfico disponible';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
-$wb['traffic_quota_exceeded_txt'] = 'Traffic quota exceeded';
+$wb['traffic_quota_exceeded_txt'] = 'Cuota de tráfico excedida';
 $wb['ruby_txt'] = 'Ruby';
-$wb['stats_user_txt'] = 'Webstatistics username';
-$wb['stats_type_txt'] = 'Webstatistics program';
-$wb['custom_php_ini_txt'] = 'Custom php.ini settings';
-$wb['none_txt'] = 'None';
-$wb['disabled_txt'] = 'Disabled';
-$wb['save_certificate_txt'] = 'Save certificate';
-$wb['create_certificate_txt'] = 'Create certificate';
-$wb['delete_certificate_txt'] = 'Delete certificate';
+$wb['stats_user_txt'] = 'Nombre de usuario de estadísticas web';
+$wb['stats_type_txt'] = 'Programa de estadísticas web';
+$wb['custom_php_ini_txt'] = 'Configuración personalizada de php.ini';
+$wb['none_txt'] = 'Ninguno';
+$wb['disabled_txt'] = 'Desactivado';
+$wb['save_certificate_txt'] = 'Guardar el certificado';
+$wb['create_certificate_txt'] = 'Crear el certificado';
+$wb['delete_certificate_txt'] = 'Eliminar certificado';
 $wb['nginx_directives_txt'] = 'nginx Directives';
 $wb['seo_redirect_txt'] = 'SEO Redirect';
 $wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
 $wb['www_to_non_www_txt'] = 'www -&gt; non-www';
-$wb['php_fpm_use_socket_txt'] = 'Use Socket For PHP-FPM';
-$wb['error_no_sni_txt'] = 'SNI for SSL is not activated on this server. You can enable only one SSL certificate on each IP address.';
+$wb['php_fpm_use_socket_txt'] = 'Usar Socket para PHP-FPM';
+$wb['error_no_sni_txt'] = 'SNI para SSL no está activado en este servidor. Sólo es posible activar un certificado SSL en cada dirección IP.';
 $wb['python_txt'] = 'Python';
 $wb['perl_txt'] = 'Perl';
 $wb['pm_max_children_txt'] = 'PHP-FPM pm.max_children';
 $wb['pm_start_servers_txt'] = 'PHP-FPM pm.start_servers';
 $wb['pm_min_spare_servers_txt'] = 'PHP-FPM pm.min_spare_servers';
 $wb['pm_max_spare_servers_txt'] = 'PHP-FPM pm.max_spare_servers';
-$wb['error_php_fpm_pm_settings_txt'] = 'Values of PHP-FPM pm settings must be as follows: pm.max_children &gt;= pm.max_spare_servers &gt;= pm.start_servers &gt;= pm.min_spare_servers &gt; 0';
-$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children must be a positive integer value.';
-$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers must be a positive integer value.';
-$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers must be a positive integer value.';
-$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers must be a positive integer value.';
-$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
-$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
-$wb['fastcgi_php_version_txt'] = 'PHP Version';
-$wb['pm_txt'] = 'PHP-FPM Process Manager';
+$wb['error_php_fpm_pm_settings_txt'] = 'Los valores de configuración de PHP-FPM pm debe ser como sigue: pm.max_children> = pm.max_spare_servers> = pm.start_servers> = pm.min_spare_servers> 0';
+$wb['pm_max_children_error_regex'] = 'PHP-FPM pm.max_children debe ser un valor entero positivo.';
+$wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers debe ser un valor entero positivo.';
+$wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers debe ser un valor entero positivo.';
+$wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers debe ser un valor entero positivo.';
+$wb['hd_quota_error_regex'] = 'Cuota de disco no es válida.';
+$wb['traffic_quota_error_regex'] = 'Cuota de tráfico no es válida.';
+$wb['fastcgi_php_version_txt'] = 'Versión de PHP';
+$wb['pm_txt'] = 'PHP-FPM Gestor de Procesos';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
-$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
-$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
-$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
-$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
-$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
-$wb['Domain'] = 'Aliasdomain';
+$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout debe ser un valor entero positivo.';
+$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests debe ser un valor entero >= 0.';
+$wb['pm_ondemand_hint_txt'] = 'Por favor ten en cuenta que debes tener una versión de PHP >= 5.3.9 para poder usar el gestor de procesos \"ondemand\". Si seleccionas \"ondemand\" para una versión de PHP anterior, ¡PHP dejará de funcionar!';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
+$wb['available_php_directive_snippets_txt'] = 'Fragmentos de directivas de PHP disponibles:';
+$wb['available_apache_directive_snippets_txt'] = 'Fragmentos de directivas de Apache disponibles:';
+$wb['available_nginx_directive_snippets_txt'] = 'Fragmentos de directivas de nginx disponibles:';
+$wb['Domain'] = 'Alias de dominio';
 
 ?>
diff --git a/interface/web/sites/lib/lang/es_web_folder.lng b/interface/web/sites/lib/lang/es_web_folder.lng
index 61fda1d..9b09b3f 100644
--- a/interface/web/sites/lib/lang/es_web_folder.lng
+++ b/interface/web/sites/lib/lang/es_web_folder.lng
@@ -4,5 +4,5 @@
 $wb['path_txt'] = 'Ruta';
 $wb['active_txt'] = 'Activar';
 $wb['path_error_regex'] = 'Ruta del archivo invalida.';
-$wb['error_folder_already_protected_txt'] = 'There is already a record for this folder.';
+$wb['error_folder_already_protected_txt'] = 'Ya hay un registro para esta carpeta.';
 ?>
diff --git a/interface/web/sites/lib/lang/es_web_folder_list.lng b/interface/web/sites/lib/lang/es_web_folder_list.lng
index 668f626..f545b94 100644
--- a/interface/web/sites/lib/lang/es_web_folder_list.lng
+++ b/interface/web/sites/lib/lang/es_web_folder_list.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['list_head_txt'] = 'Carpeta';
-$wb['active_txt'] = 'Activar';
+$wb['list_head_txt'] = 'Carpetas Protegidas';
+$wb['active_txt'] = 'Activa';
 $wb['server_id_txt'] = 'Servidor';
 $wb['parent_domain_id_txt'] = 'Sitio web';
 $wb['path_txt'] = 'Ruta';
diff --git a/interface/web/sites/lib/lang/es_web_folder_user.lng b/interface/web/sites/lib/lang/es_web_folder_user.lng
index 4f0121a..fa88652 100644
--- a/interface/web/sites/lib/lang/es_web_folder_user.lng
+++ b/interface/web/sites/lib/lang/es_web_folder_user.lng
@@ -4,11 +4,11 @@
 $wb['password_txt'] = 'Contraseña';
 $wb['active_txt'] = 'Activar';
 $wb['folder_error_empty'] = 'Ninguna carpeta web selecionada.';
-$wb['password_strength_txt'] = 'Password strength';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['no_folder_perm'] = 'You have no permission for this folder.';
-$wb['error_user_exists_already_txt'] = 'There is already a record for this user.';
+$wb['password_strength_txt'] = 'Fortaleza de contraseña';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
+$wb['no_folder_perm'] = 'No tienes permiso en esta carpeta.';
+$wb['error_user_exists_already_txt'] = 'Ya hay un registro para este usuario.';
 ?>
diff --git a/interface/web/sites/lib/lang/es_web_folder_user_list.lng b/interface/web/sites/lib/lang/es_web_folder_user_list.lng
index 7779911..4f1617a 100644
--- a/interface/web/sites/lib/lang/es_web_folder_user_list.lng
+++ b/interface/web/sites/lib/lang/es_web_folder_user_list.lng
@@ -1,6 +1,6 @@
 <?php
-$wb['list_head_txt'] = 'Carpeta del usuario';
-$wb['active_txt'] = 'Activar';
+$wb['list_head_txt'] = 'Usuarios de carpetas protegidas';
+$wb['active_txt'] = 'Activo';
 $wb['web_folder_id_txt'] = 'Carpeta';
 $wb['username_txt'] = 'Nombre de usuario';
 ?>
diff --git a/interface/web/sites/lib/lang/es_web_sites_stats_list.lng b/interface/web/sites/lib/lang/es_web_sites_stats_list.lng
index a8bfb33..20aeaa6 100644
--- a/interface/web/sites/lib/lang/es_web_sites_stats_list.lng
+++ b/interface/web/sites/lib/lang/es_web_sites_stats_list.lng
@@ -5,5 +5,5 @@
 $wb['last_month_txt'] = 'Último mes';
 $wb['this_year_txt'] = 'Este año';
 $wb['last_year_txt'] = 'Último año';
-$wb['sum_txt'] = 'Sum';
+$wb['sum_txt'] = 'Total';
 ?>
diff --git a/interface/web/sites/lib/lang/es_web_vhost_domain.lng b/interface/web/sites/lib/lang/es_web_vhost_domain.lng
index e8397dd..c59c2d1 100644
--- a/interface/web/sites/lib/lang/es_web_vhost_domain.lng
+++ b/interface/web/sites/lib/lang/es_web_vhost_domain.lng
@@ -6,24 +6,24 @@
 $wb['ssl_organisation_txt'] = 'Organización';
 $wb['ssl_organisation_unit_txt'] = 'Departamento de la organización';
 $wb['ssl_country_txt'] = 'País';
-$wb['ssl_request_txt'] = 'SSL Request';
-$wb['ssl_cert_txt'] = 'SSL Certificate';
-$wb['ssl_bundle_txt'] = 'SSL Bundle';
-$wb['ssl_action_txt'] = 'SSL Action';
-$wb['ssl_domain_txt'] = 'SSL Dominio';
+$wb['ssl_request_txt'] = 'Solicitud SSL';
+$wb['ssl_cert_txt'] = 'Certificado SSL';
+$wb['ssl_bundle_txt'] = 'Paquete SSL (Bundle)';
+$wb['ssl_action_txt'] = 'Acción SSL';
+$wb['ssl_domain_txt'] = 'Dominio SSL';
 $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Dominio';
 $wb['type_txt'] = 'Tipo';
 $wb['parent_domain_id_txt'] = 'Sitio web padre';
-$wb['redirect_type_txt'] = 'Tipo redirección';
-$wb['redirect_path_txt'] = 'Ruta redirección';
+$wb['redirect_type_txt'] = 'Tipo de redirección';
+$wb['redirect_path_txt'] = 'Ruta de redirección';
 $wb['active_txt'] = 'Activar';
-$wb['document_root_txt'] = 'Documentroot';
+$wb['document_root_txt'] = 'Carpeta raíz';
 $wb['system_user_txt'] = 'Usuario Linux';
 $wb['system_group_txt'] = 'Grupo Linux';
-$wb['ip_address_txt'] = 'IPv4-Address';
-$wb['ipv6_address_txt'] = 'IPv6-Address';
-$wb['vhost_type_txt'] = 'VHost Tipo';
+$wb['ip_address_txt'] = 'Dirección IPv4';
+$wb['ipv6_address_txt'] = 'Dirección IPv6';
+$wb['vhost_type_txt'] = 'Tipo VHost';
 $wb['hd_quota_txt'] = 'Couta disco duro';
 $wb['traffic_quota_txt'] = 'Cuota de tráfico';
 $wb['cgi_txt'] = 'CGI';
@@ -39,44 +39,44 @@
 $wb['limit_web_subdomain_txt'] = 'Se ha alcanzado el número máximo de subdominios web de esta cuenta';
 $wb['apache_directives_txt'] = 'Directivas de Apache';
 $wb['domain_error_empty'] = 'El dominio está vacío.';
-$wb['domain_error_unique'] = 'Ya existe un sitio web o sub/aliasdominio  con este nombre de dominio.';
+$wb['domain_error_unique'] = 'Ya existe un sitio web o subdominio o alias de dominio con este nombre de dominio.';
 $wb['domain_error_regex'] = 'El nombre de dominio no es válido';
 $wb['hd_quota_error_empty'] = 'Cuota de disco duro es 0 o vacío.';
 $wb['traffic_quota_error_empty'] = 'Cuota de tráfico está vacío.';
-$wb['error_ssl_state_empty'] = 'Estado SSL está vacío.';
-$wb['error_ssl_locality_empty'] = 'Sitio SSL está vacío.';
-$wb['error_ssl_organisation_empty'] = 'SSL Organización está vacío.';
-$wb['error_ssl_organisation_unit_empty'] = 'SSL Unidad de Organización está vacío.';
-$wb['error_ssl_country_empty'] = 'País SSL está vacío.';
-$wb['error_ssl_cert_empty'] = 'Campo de certificado SSL está vacío.';
+$wb['error_ssl_state_empty'] = 'Estado/Provincia está vacío.';
+$wb['error_ssl_locality_empty'] = 'Localidad está vacío.';
+$wb['error_ssl_organisation_empty'] = 'Organización está vacío.';
+$wb['error_ssl_organisation_unit_empty'] = 'Departamento de Organización está vacío.';
+$wb['error_ssl_country_empty'] = 'País está vacío.';
+$wb['error_ssl_cert_empty'] = 'Certificado SSL está vacío.';
 $wb['client_group_id_txt'] = 'Cliente';
 $wb['stats_password_txt'] = 'Contraseña de estadísticas Web ';
 $wb['allow_override_txt'] = 'Apache AllowOverride';
-$wb['limit_web_quota_free_txt'] = 'Max. cuota disco duro disponible';
-$wb['ssl_state_error_regex'] = 'Estado no válido de SSL. Los caracteres válidos son: a-z, 0-9 y,-_.';
-$wb['ssl_locality_error_regex'] = 'Invalid Sitio válido SSL. Los caracteres válidos son: a-z, 0-9 y,-_.';
-$wb['ssl_organisation_error_regex'] = 'Organización no válido SSL. Los caracteres válidos son: a-z, 0-9 y,-_.';
-$wb['ssl_organistaion_unit_error_regex'] = 'Unidad de Organización no válido SSL. Los caracteres válidos son: a-z, 0-9 y,-_.';
-$wb['ssl_country_error_regex'] = 'País no válido SSL. Los caracteres válidos son: A-Z';
-$wb['limit_traffic_quota_free_txt'] = 'Max. Cuota de tráfico disponible';
-$wb['redirect_error_regex'] = 'Redirección no válida camino. Redirecciones válidos son, por ejemplo,: /test/ or http://www.domain.tld/test/';
+$wb['limit_web_quota_free_txt'] = 'Máxima cuota de disco duro disponible';
+$wb['ssl_state_error_regex'] = 'Estado/Provincia no válido. Los caracteres válidos son: a-z, 0-9 y,-_.';
+$wb['ssl_locality_error_regex'] = 'Localidad no válida. Los caracteres válidos son: a-z, 0-9 y,-_.';
+$wb['ssl_organisation_error_regex'] = 'Organización no válida. Los caracteres válidos son: a-z, 0-9 y,-_.';
+$wb['ssl_organistaion_unit_error_regex'] = 'Departamento de organización no válido. Los caracteres válidos son: a-z, 0-9 y,-_.';
+$wb['ssl_country_error_regex'] = 'País no válido. Los caracteres válidos son: A-Z';
+$wb['limit_traffic_quota_free_txt'] = 'Máxima cuota de tráfico disponible';
+$wb['redirect_error_regex'] = 'Ruta de redirección no válida. Redirecciones válidas son, por ejemplo,: /test/ or http://www.domain.tld/test/';
 $wb['php_open_basedir_txt'] = 'PHP open_basedir';
 $wb['traffic_quota_exceeded_txt'] = 'Cuota de tráfico excedida';
 $wb['ruby_txt'] = 'Ruby';
-$wb['stats_user_txt'] = 'Estadísticas Web nombre de usuario';
-$wb['stats_type_txt'] = 'Estadísticas Web del programa';
+$wb['stats_user_txt'] = 'Nombre de usuario de estadísticas web';
+$wb['stats_type_txt'] = 'Programa de estadísticas web';
 $wb['custom_php_ini_txt'] = 'Configuración personalizada de php.ini';
 $wb['none_txt'] = 'Ninguno';
 $wb['disabled_txt'] = 'Desactivado';
 $wb['no_redirect_txt'] = 'No redirigir';
-$wb['no_flag_txt'] = 'No flag';
+$wb['no_flag_txt'] = 'Sin flag';
 $wb['save_certificate_txt'] = 'Guardar el certificado';
 $wb['create_certificate_txt'] = 'Crear el certificado';
 $wb['delete_certificate_txt'] = 'Eliminar certificado';
-$wb['nginx_directives_txt'] = 'nginx Directives';
-$wb['seo_redirect_txt'] = 'SEO Redirect';
-$wb['non_www_to_www_txt'] = 'Non-www -> www';
-$wb['www_to_non_www_txt'] = 'www -> non-www';
+$wb['nginx_directives_txt'] = 'Directivas nginx';
+$wb['seo_redirect_txt'] = 'Redirección SEO';
+$wb['non_www_to_www_txt'] = 'Non-www -&gt; www';
+$wb['www_to_non_www_txt'] = 'www -&gt; non-www';
 $wb['php_fpm_use_socket_txt'] = 'Usar Socket para PHP-FPM';
 $wb['error_no_sni_txt'] = 'SNI para SSL no está activado en este servidor. Sólo es posible activar un certificado SSL en cada dirección IP.';
 $wb['python_txt'] = 'Python';
@@ -89,48 +89,48 @@
 $wb['pm_start_servers_error_regex'] = 'PHP-FPM pm.start_servers debe ser un valor entero positivo.';
 $wb['pm_min_spare_servers_error_regex'] = 'PHP-FPM pm.min_spare_servers debe ser un valor entero positivo.';
 $wb['pm_max_spare_servers_error_regex'] = 'PHP-FPM pm.max_spare_servers debe ser un valor entero positivo.';
-$wb['ssl_key_txt'] = 'SSL Key';
-$wb['web_folder_error_regex'] = 'Invalid folder entered. Please do not enter a slash.';
-$wb['domain_error_autosub'] = 'There is already a subdomain with these settings.';
+$wb['ssl_key_txt'] = 'Clave SSL';
+$wb['web_folder_error_regex'] = 'La carpeta introducida no es válida. Por favor no introduzcas una barra.';
+$wb['domain_error_autosub'] = 'Ya hay un subdominio con estas configuraciones.';
 $wb['perl_txt'] = 'Perl';
-$wb['hd_quota_error_regex'] = 'Harddisk quota is invalid.';
-$wb['traffic_quota_error_regex'] = 'Traffic quota is invalid.';
-$wb['fastcgi_php_version_txt'] = 'PHP Version';
-$wb['pm_txt'] = 'PHP-FPM Process Manager';
+$wb['hd_quota_error_regex'] = 'Cuota de disco no es válida.';
+$wb['traffic_quota_error_regex'] = 'Cuota de tráfico no es válida.';
+$wb['fastcgi_php_version_txt'] = 'Versión de PHP';
+$wb['pm_txt'] = 'PHP-FPM Gestor de Procesos';
 $wb['pm_process_idle_timeout_txt'] = 'PHP-FPM pm.process_idle_timeout';
 $wb['pm_max_requests_txt'] = 'PHP-FPM pm.max_requests';
-$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout must be a positive integer value.';
-$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests must be an integer value >= 0.';
-$wb['pm_ondemand_hint_txt'] = 'Please note that you must have PHP version >= 5.3.9 in order to use the ondemand process manager. If you select ondemand for an older PHP version, PHP will not start anymore!';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
-$wb['available_php_directive_snippets_txt'] = 'Available PHP Directive Snippets:';
-$wb['available_apache_directive_snippets_txt'] = 'Available Apache Directive Snippets:';
-$wb['available_nginx_directive_snippets_txt'] = 'Available nginx Directive Snippets:';
-$wb['proxy_directives_txt'] = 'Proxy Directives';
-$wb['available_proxy_directive_snippets_txt'] = 'Available Proxy Directive Snippets:';
-$wb['no_server_error'] = 'No server selected.';
-$wb['no_backup_txt'] = 'No backup';
-$wb['daily_backup_txt'] = 'Daily';
-$wb['weekly_backup_txt'] = 'Weekly';
-$wb['monthly_backup_txt'] = 'Monthly';
-$wb['rewrite_rules_txt'] = 'Rewrite Rules';
-$wb['invalid_rewrite_rules_txt'] = 'Invalid Rewrite Rules';
-$wb['allowed_rewrite_rule_directives_txt'] = 'Allowed Directives:';
-$wb['configuration_error_txt'] = 'CONFIGURATION ERROR';
-$wb['web_folder_txt'] = 'Web folder';
-$wb['web_folder_invalid_txt'] = 'The web folder is invalid, please choose a different one.';
-$wb['web_folder_unique_txt'] = 'The web folder is already used, please choose a different one.';
-$wb['host_txt'] = 'Hostname';
-$wb['domain_error_wildcard'] = 'Wildcard subdomains are not allowed.';
+$wb['pm_process_idle_timeout_error_regex'] = 'PHP-FPM pm.process_idle_timeout debe ser un valor entero positivo.';
+$wb['pm_max_requests_error_regex'] = 'PHP-FPM pm.max_requests debe ser un valor entero >= 0.';
+$wb['pm_ondemand_hint_txt'] = 'Por favor ten en cuenta que debes tener una versión de PHP >= 5.3.9 para poder usar el gestor de procesos \"ondemand\". Si seleccionas \"ondemand\" para una versión de PHP anterior, ¡PHP dejará de funcionar!';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
+$wb['available_php_directive_snippets_txt'] = 'Fragmentos de directivas de PHP disponibles:';
+$wb['available_apache_directive_snippets_txt'] = 'Fragmentos de directivas de Apache disponibles:';
+$wb['available_nginx_directive_snippets_txt'] = 'Fragmentos de directivas de nginx disponibles:';
+$wb['proxy_directives_txt'] = 'Directivas de Proxy';
+$wb['available_proxy_directive_snippets_txt'] = 'Fragmentos de directivas de proxy disponibles:';
+$wb['no_server_error'] = 'No se ha seleccionado un servidor.';
+$wb['no_backup_txt'] = 'Sin copia de seguridad';
+$wb['daily_backup_txt'] = 'Diaria';
+$wb['weekly_backup_txt'] = 'Semanal';
+$wb['monthly_backup_txt'] = 'Mensual';
+$wb['rewrite_rules_txt'] = 'Reglas de reescritura';
+$wb['invalid_rewrite_rules_txt'] = 'Reglas de reescritura no válidas';
+$wb['allowed_rewrite_rule_directives_txt'] = 'Directivas permitidas:';
+$wb['configuration_error_txt'] = 'ERROR DE CONFIGURACION';
+$wb['web_folder_txt'] = 'Carpeta Web';
+$wb['web_folder_invalid_txt'] = 'La carpeta web no es válida, por favor elige una diferente.';
+$wb['web_folder_unique_txt'] = 'La carpeta web ya está en uso, por favor elige una diferente.';
+$wb['host_txt'] = 'Subdominio';
+$wb['domain_error_wildcard'] = 'No se permiten subdominios comodín.';
 
 $wb['variables_txt'] = 'Variables';
-$wb['added_by_txt'] = 'Added by';
-$wb['added_date_txt'] = 'Added date';
-$wb['backup_excludes_txt'] = 'Excluded Directories';
-$wb['backup_excludes_note_txt'] = '(Separate multiple directories with commas. Example: web/cache/*,web/backup)';
-$wb['backup_excludes_error_regex'] = 'The excluded directories contain invalid characters.';
-$wb['invalid_custom_php_ini_settings_txt'] = 'Invalid php.ini settings';
+$wb['added_by_txt'] = 'Añadido por';
+$wb['added_date_txt'] = 'Fecha de alta';
+$wb['backup_excludes_txt'] = 'Directorios excluídos';
+$wb['backup_excludes_note_txt'] = '(Separa múltiples directorios con comas. Ejemplo: web/cache/*,web/backup)';
+$wb['backup_excludes_error_regex'] = 'Los directorios excluídos contienen caracteres no válidos.';
+$wb['invalid_custom_php_ini_settings_txt'] = 'Configuración personalizada de php.ini no válida';
 ?>
diff --git a/interface/web/sites/lib/lang/es_web_vhost_domain_list.lng b/interface/web/sites/lib/lang/es_web_vhost_domain_list.lng
index 199b5b1..2fe8596 100644
--- a/interface/web/sites/lib/lang/es_web_vhost_domain_list.lng
+++ b/interface/web/sites/lib/lang/es_web_vhost_domain_list.lng
@@ -5,6 +5,6 @@
 $wb['server_id_txt'] = 'Servidor';
 $wb['domain_txt'] = 'Dominio';
 $wb['add_new_record_txt'] = 'Añadir nuevo sitio web';
-$wb['parent_domain_id_txt'] = 'Website';
+$wb['parent_domain_id_txt'] = 'Sitio web padre';
 
 ?>
diff --git a/interface/web/sites/lib/lang/es_webdav_user.lng b/interface/web/sites/lib/lang/es_webdav_user.lng
index 8cf788e..2476665 100644
--- a/interface/web/sites/lib/lang/es_webdav_user.lng
+++ b/interface/web/sites/lib/lang/es_webdav_user.lng
@@ -6,16 +6,16 @@
 $wb['password_txt'] = 'Contraseña';
 $wb['password_strength_txt'] = 'Fortaleza de la contraseña';
 $wb['active_txt'] = 'Activar';
-$wb['limit_webdav_user_txt'] = 'La máx. número de usuarios de WebDAV para su cuenta se alcanza.';
-$wb['username_error_empty'] = 'Nombre de usuario está vacía.';
+$wb['limit_webdav_user_txt'] = 'Se ha alcanzado el número máximo de usuarios de WebDAV para su cuenta.';
+$wb['username_error_empty'] = 'Nombre de usuario está vacío.';
 $wb['username_error_unique'] = 'Nombre de usuario debe ser único.';
-$wb['username_error_regex'] = 'El nombre de usuario contiene charachters que no están permitidos.';
-$wb['directory_error_empty'] = 'Directorio de vacío.';
+$wb['username_error_regex'] = 'El nombre de usuario contiene caracteres que no están permitidos.';
+$wb['directory_error_empty'] = 'Directorio vacío.';
 $wb['parent_domain_id_error_empty'] = 'No hay sitio web seleccionado.';
-$wb['dir_dot_error'] = 'No .. in path allowed.';
-$wb['dir_slashdot_error'] = 'No ./ in path allowed.';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
+$wb['dir_dot_error'] = 'No se permite .. en la ruta.';
+$wb['dir_slashdot_error'] = 'No se permite ./ en la ruta.';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
 ?>
diff --git a/interface/web/sites/lib/lang/es_webdav_user_list.lng b/interface/web/sites/lib/lang/es_webdav_user_list.lng
index b657a7e..3fdbbb7 100644
--- a/interface/web/sites/lib/lang/es_webdav_user_list.lng
+++ b/interface/web/sites/lib/lang/es_webdav_user_list.lng
@@ -1,6 +1,6 @@
 <?php
 $wb['list_head_txt'] = 'Usuarios de Webdav';
-$wb['active_txt'] = 'Activar';
+$wb['active_txt'] = 'Activo';
 $wb['server_id_txt'] = 'Servidor';
 $wb['parent_domain_id_txt'] = 'Sitio web';
 $wb['username_txt'] = 'Nombre de usuario';
diff --git a/interface/web/sites/shell_user_edit.php b/interface/web/sites/shell_user_edit.php
index 3c72a5f..f0c8c36 100644
--- a/interface/web/sites/shell_user_edit.php
+++ b/interface/web/sites/shell_user_edit.php
@@ -82,7 +82,11 @@
 			$app->tpl->setVar("username", $app->tools_sites->removePrefix($this->dataRecord['username'], $this->dataRecord['username_prefix'], $shelluser_prefix));
 		}
 
-		$app->tpl->setVar("username_prefix", $app->tools_sites->getPrefix($this->dataRecord['username_prefix'], $shelluser_prefix, $global_config['shelluser_prefix']));
+		if($this->dataRecord['username'] == "") {
+			$app->tpl->setVar("username_prefix", $shelluser_prefix);
+		} else {
+			$app->tpl->setVar("username_prefix", $app->tools_sites->getPrefix($this->dataRecord['username_prefix'], $shelluser_prefix, $global_config['shelluser_prefix']));
+		}
 
 		if($this->id > 0) {
 			//* we are editing a existing record
diff --git a/interface/web/sites/templates/web_vhost_domain_edit.htm b/interface/web/sites/templates/web_vhost_domain_edit.htm
index 7c9c720..0e0897a 100644
--- a/interface/web/sites/templates/web_vhost_domain_edit.htm
+++ b/interface/web/sites/templates/web_vhost_domain_edit.htm
@@ -30,12 +30,14 @@
                             </select>
                     </tmpl_if>
                 </div>
-                <div class="ctrlHolder">
-                    <label for="client_group_id">{tmpl_var name='client_group_id_txt'}</label>
-                    <select name="client_group_id" id="client_group_id" class="selectInput">
-                        {tmpl_var name='client_group_id'}
-                    </select>
-                </div>
+                <tmpl_unless name="domain_option">
+                    <div class="ctrlHolder">
+                        <label for="client_group_id">{tmpl_var name='client_group_id_txt'}</label>
+                        <select name="client_group_id" id="client_group_id" class="selectInput">
+                            {tmpl_var name='client_group_id'}
+                        </select>
+                    </div>
+                </tmpl_unless>
             <tmpl_else>
                 <tmpl_if name="only_one_server">
                     <input type="hidden" id="server_id" name="server_id" value="{tmpl_var name='server_id_value'}" />
@@ -57,12 +59,14 @@
                 </tmpl_if>
             </tmpl_if>
             <tmpl_if name="is_reseller">
-                <div class="ctrlHolder">
-                    <label for="client_group_id">{tmpl_var name='client_group_id_txt'}</label>
-                    <select name="client_group_id" id="client_group_id" class="selectInput">
-                        {tmpl_var name='client_group_id'}
-                    </select>
-                </div>
+                <tmpl_unless name="domain_option">
+                    <div class="ctrlHolder">
+                        <label for="client_group_id">{tmpl_var name='client_group_id_txt'}</label>
+                        <select name="client_group_id" id="client_group_id" class="selectInput">
+                            {tmpl_var name='client_group_id'}
+                        </select>
+                    </div>
+                </tmpl_unless>
             </tmpl_if>
             <div class="ctrlHolder">
                 <label for="ip_address">{tmpl_var name='ip_address_txt'}</label>
diff --git a/interface/web/sites/web_childdomain_edit.php b/interface/web/sites/web_childdomain_edit.php
index 435b901..8cdda48 100644
--- a/interface/web/sites/web_childdomain_edit.php
+++ b/interface/web/sites/web_childdomain_edit.php
@@ -105,7 +105,7 @@
 			/*
 			 * The domain-module is in use.
 			*/
-			$domains = $app->tools_sites->getDomainModuleDomains();
+			$domains = $app->tools_sites->getDomainModuleDomains($this->_vhostdomain_type == 'subdomain' ? null : "web_domain", $this->dataRecord["domain"]);
 			$domain_select = '';
 			$selected_domain = '';
 			if(is_array($domains) && sizeof($domains) > 0) {
diff --git a/interface/web/sites/web_vhost_domain_edit.php b/interface/web/sites/web_vhost_domain_edit.php
index de731bd..b87fb73 100644
--- a/interface/web/sites/web_vhost_domain_edit.php
+++ b/interface/web/sites/web_vhost_domain_edit.php
@@ -113,9 +113,16 @@
 			$client_group_id = $_SESSION["s"]["user"]["default_group"];
 			$client = $app->db->queryOneRecord("SELECT client.web_servers FROM sys_group, client WHERE sys_group.client_id = client.client_id and sys_group.groupid = $client_group_id");
 			$web_servers = explode(',', $client['web_servers']);
-			$app->tpl->setVar("server_id_value", $web_servers[0]);
+			$server_id = $web_servers[0];
+			$app->tpl->setVar("server_id_value", $server_id);
 			unset($web_servers);
+		} else {
+			$settings = $app->getconf->get_global_config('sites');
+			$server_id = intval($settings['default_webserver']);
+			$app->tform->formDef['tabs']['domain']['fields']['server_id']['default'] = $server_id;
 		}
+		$web_config = $app->getconf->get_server_config($server_id, 'web');
+		$app->tform->formDef['tabs']['domain']['fields']['php']['default'] = $web_config['php_handler'];
 		$app->tform->formDef['tabs']['domain']['readonly'] = false;
 
 		$app->tpl->setVar('vhostdomain_type', $this->_vhostdomain_type);
@@ -126,6 +133,7 @@
 		global $app, $conf;
 
 		$app->uses('ini_parser,getconf');
+		$settings = $app->getconf->get_global_config('domains');
 
 		$read_limits = array('limit_cgi', 'limit_ssi', 'limit_perl', 'limit_ruby', 'limit_python', 'force_suexec', 'limit_hterror', 'limit_wildcard', 'limit_ssl');
 
@@ -290,22 +298,24 @@
 			$app->tpl->setVar("server_id", $options_web_servers);
 			unset($options_web_servers);
 
-			// Fill the client select field
-			$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$client['client_id']." ORDER BY client.company_name, client.contact_name, sys_group.name";
-			$records = $app->db->queryAllRecords($sql);
-			$tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$app->functions->intval($client['client_id']));
-			$client_select = '<option value="'.$tmp['groupid'].'">'.$client['contactname'].'</option>';
-			//$tmp_data_record = $app->tform->getDataRecord($this->id);
-			if(is_array($records)) {
-				$selected_client_group_id = 0; // needed to get list of PHP versions
-				foreach( $records as $rec) {
-					if(is_array($this->dataRecord) && ($rec["groupid"] == $this->dataRecord['client_group_id'] || $rec["groupid"] == $this->dataRecord['sys_groupid']) && !$selected_client_group_id) $selected_client_group_id = $rec["groupid"];
-					$selected = @(is_array($this->dataRecord) && ($rec["groupid"] == $this->dataRecord['client_group_id'] || $rec["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':'';
-					if($selected == 'SELECTED') $selected_client_group_id = $rec["groupid"];
-					$client_select .= "<option value='$rec[groupid]' $selected>$rec[contactname]</option>\r\n";
+			if ($settings['use_domain_module'] != 'y') {
+				// Fill the client select field
+				$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND client.parent_client_id = ".$client['client_id']." ORDER BY client.company_name, client.contact_name, sys_group.name";
+				$records = $app->db->queryAllRecords($sql);
+				$tmp = $app->db->queryOneRecord("SELECT groupid FROM sys_group WHERE client_id = ".$app->functions->intval($client['client_id']));
+				$client_select = '<option value="'.$tmp['groupid'].'">'.$client['contactname'].'</option>';
+				//$tmp_data_record = $app->tform->getDataRecord($this->id);
+				if(is_array($records)) {
+					$selected_client_group_id = 0; // needed to get list of PHP versions
+					foreach( $records as $rec) {
+						if(is_array($this->dataRecord) && ($rec["groupid"] == $this->dataRecord['client_group_id'] || $rec["groupid"] == $this->dataRecord['sys_groupid']) && !$selected_client_group_id) $selected_client_group_id = $rec["groupid"];
+						$selected = @(is_array($this->dataRecord) && ($rec["groupid"] == $this->dataRecord['client_group_id'] || $rec["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':'';
+						if($selected == 'SELECTED') $selected_client_group_id = $rec["groupid"];
+						$client_select .= "<option value='$rec[groupid]' $selected>$rec[contactname]</option>\r\n";
+					}
 				}
+				$app->tpl->setVar("client_group_id", $client_select);
 			}
-			$app->tpl->setVar("client_group_id", $client_select);
 
 			if($app->functions->intval($this->dataRecord["server_id"]) > 0) {
 				// check if server is in client's servers or add it.
@@ -490,22 +500,24 @@
 			unset($tmp);
 			unset($ips);
 
-			// Fill the client select field
-			$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name";
-			$clients = $app->db->queryAllRecords($sql);
-			$client_select = "<option value='0'></option>";
-			//$tmp_data_record = $app->tform->getDataRecord($this->id);
-			if(is_array($clients)) {
-				$selected_client_group_id = 0; // needed to get list of PHP versions
-				foreach($clients as $client) {
-					if(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']) && !$selected_client_group_id) $selected_client_group_id = $client["groupid"];
-					//$selected = @($client["groupid"] == $tmp_data_record["sys_groupid"])?'SELECTED':'';
-					$selected = @(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':'';
-					if($selected == 'SELECTED') $selected_client_group_id = $client["groupid"];
-					$client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n";
+			if ($settings['use_domain_module'] != 'y') {
+				// Fill the client select field
+				$sql = "SELECT sys_group.groupid, sys_group.name, CONCAT(IF(client.company_name != '', CONCAT(client.company_name, ' :: '), ''), client.contact_name, ' (', client.username, IF(client.customer_no != '', CONCAT(', ', client.customer_no), ''), ')') as contactname FROM sys_group, client WHERE sys_group.client_id = client.client_id AND sys_group.client_id > 0 ORDER BY client.company_name, client.contact_name, sys_group.name";
+				$clients = $app->db->queryAllRecords($sql);
+				$client_select = "<option value='0'></option>";
+				//$tmp_data_record = $app->tform->getDataRecord($this->id);
+				if(is_array($clients)) {
+					$selected_client_group_id = 0; // needed to get list of PHP versions
+					foreach($clients as $client) {
+						if(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']) && !$selected_client_group_id) $selected_client_group_id = $client["groupid"];
+						//$selected = @($client["groupid"] == $tmp_data_record["sys_groupid"])?'SELECTED':'';
+						$selected = @(is_array($this->dataRecord) && ($client["groupid"] == $this->dataRecord['client_group_id'] || $client["groupid"] == $this->dataRecord['sys_groupid']))?'SELECTED':'';
+						if($selected == 'SELECTED') $selected_client_group_id = $client["groupid"];
+						$client_select .= "<option value='$client[groupid]' $selected>$client[contactname]</option>\r\n";
+					}
 				}
+				$app->tpl->setVar("client_group_id", $client_select);
 			}
-			$app->tpl->setVar("client_group_id", $client_select);
 
 			//PHP Version Selection (FastCGI)
 			$server_type = 'apache';
@@ -625,13 +637,11 @@
 		 * Now we have to check, if we should use the domain-module to select the domain
 		 * or not
 		 */
-		$app->uses('ini_parser,getconf');
-		$settings = $app->getconf->get_global_config('domains');
 		if ($settings['use_domain_module'] == 'y') {
 			/*
 			 * The domain-module is in use.
 			*/
-			$domains = $app->tools_sites->getDomainModuleDomains();
+			$domains = $app->tools_sites->getDomainModuleDomains($this->_vhostdomain_type == 'subdomain' ? null : "web_domain", $this->dataRecord["domain"]);
 			$domain_select = '';
 			$selected_domain = '';
 			if(is_array($domains) && sizeof($domains) > 0) {
@@ -736,6 +746,10 @@
 					// invalid domain selected
 					$app->tform->errorMessage .= $app->tform->lng("domain_error_empty")."<br />";
 				} else {
+					if ($this->_vhostdomain_type == 'domain' &&
+							($_SESSION["s"]["user"]["typ"] == 'admin' || $app->auth->has_clients($_SESSION['s']['user']['userid']))) {
+						$this->dataRecord['client_group_id'] = $app->tools_sites->getClientIdForDomain($this->dataRecord['domain']);
+					}
 					if($this->_vhostdomain_type == 'subdomain') $this->dataRecord['domain'] = $this->dataRecord['domain'] . '.' . $domain_check;
 					else $this->dataRecord['domain'] = $domain_check;
 				}
@@ -835,7 +849,8 @@
 				if($this->_vhostdomain_type == 'domain') {
 					//* Check the website quota of the client
 					if(isset($_POST["hd_quota"]) && $reseller["limit_web_quota"] >= 0 && $_POST["hd_quota"] != $old_web_values["hd_quota"]) {
-						$tmp = $app->db->queryOneRecord("SELECT sum(hd_quota) as webquota FROM web_domain WHERE domain_id != ".$app->functions->intval($this->id)." AND type = 'vhost' AND ".$app->tform->getAuthSQL('u'));
+						$tmp = $app->db->queryOneRecord("SELECT sum(hd_quota) as webquota FROM web_domain, sys_group, client WHERE web_domain.sys_groupid=sys_group.groupid AND sys_group.client_id=client.client_id AND ".$client['parent_client_id']." IN (client.parent_client_id, client.client_id) AND domain_id != ".$app->functions->intval($this->id)." AND type = 'vhost'");
+
 						$webquota = $tmp["webquota"];
 						$new_web_quota = $app->functions->intval($this->dataRecord["hd_quota"]);
 						if(($webquota + $new_web_quota > $reseller["limit_web_quota"]) || ($new_web_quota < 0 && $reseller["limit_web_quota"] >= 0)) {
@@ -852,7 +867,7 @@
 
 				//* Check the traffic quota of the client
 				if(isset($_POST["traffic_quota"]) && $reseller["limit_traffic_quota"] > 0 && $_POST["traffic_quota"] != $old_web_values["traffic_quota"]) {
-					$tmp = $app->db->queryOneRecord("SELECT sum(traffic_quota) as trafficquota FROM web_domain WHERE domain_id != ".$app->functions->intval($this->id)." AND ".$app->tform->getAuthSQL('u'));
+					$tmp = $app->db->queryOneRecord("SELECT sum(traffic_quota) as trafficquota FROM web_domain, sys_group, client WHERE web_domain.sys_groupid=sys_group.groupid AND sys_group.client_id=client.client_id AND ".$client['parent_client_id']." IN (client.parent_client_id, client.client_id) AND domain_id != ".$app->functions->intval($this->id)." AND type = 'vhost'");
 					$trafficquota = $tmp["trafficquota"];
 					$new_traffic_quota = $app->functions->intval($this->dataRecord["traffic_quota"]);
 					if(($trafficquota + $new_traffic_quota > $reseller["limit_traffic_quota"]) || ($new_traffic_quota < 0 && $reseller["limit_traffic_quota"] >= 0)) {
diff --git a/interface/web/sites/webdav_user_edit.php b/interface/web/sites/webdav_user_edit.php
index 97b2bcc..fcea99e 100644
--- a/interface/web/sites/webdav_user_edit.php
+++ b/interface/web/sites/webdav_user_edit.php
@@ -81,7 +81,11 @@
 			$app->tpl->setVar("username", $app->tools_sites->removePrefix($this->dataRecord['username'], $this->dataRecord['username_prefix'], $webdavuser_prefix));
 		}
 
-		$app->tpl->setVar("username_prefix", $app->tools_sites->getPrefix($this->dataRecord['username_prefix'], $webdavuser_prefix, $global_config['webdavuser_prefix']));
+		if($this->dataRecord['username'] == "") {
+			$app->tpl->setVar("username_prefix", $webdavuser_prefix);
+		} else {
+			$app->tpl->setVar("username_prefix", $app->tools_sites->getPrefix($this->dataRecord['username_prefix'], $webdavuser_prefix, $global_config['webdavuser_prefix']));
+		}
 
 		if($this->id > 0) {
 			//* we are editing a existing record
@@ -139,15 +143,6 @@
 			 */
 			$hash = md5($this->dataRecord["username"] . ':' . $this->dataRecord["dir"] . ':' . $this->dataRecord["password"]);
 			$this->dataRecord["password"] = $hash;
-
-			/*
-			*  Get the data of the domain, owning the webdav user
-			*/
-			$web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($this->dataRecord["parent_domain_id"]));
-			/* The server is the server of the domain */
-			$this->dataRecord["server_id"] = $web["server_id"];
-			/* The Webdav user shall be owned by the same group then the website */
-			$this->dataRecord["sys_groupid"] = $web['sys_groupid'];
 		}
 
 		parent::onBeforeInsert();
@@ -155,6 +150,15 @@
 
 	function onAfterInsert() {
 		global $app, $conf;
+
+		$web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($this->dataRecord["parent_domain_id"]));
+		$server_id = $app->functions->intval($web["server_id"]);
+
+		// The webdav user shall be owned by the same group then the website
+		$sys_groupid = $app->functions->intval($web['sys_groupid']);
+
+		$sql = "UPDATE webdav_user SET server_id = $server_id, sys_groupid = '$sys_groupid' WHERE webdav_user_id = ".$this->id;
+		$app->db->query($sql);
 	}
 
 	function onBeforeUpdate() {
@@ -184,6 +188,18 @@
 
 	function onAfterUpdate() {
 		global $app, $conf;
+
+		//* When the site of the webdav user has been changed
+		if(isset($this->dataRecord['parent_domain_id']) && $this->oldDataRecord['parent_domain_id'] != $this->dataRecord['parent_domain_id']) {
+			$web = $app->db->queryOneRecord("SELECT * FROM web_domain WHERE domain_id = ".$app->functions->intval($this->dataRecord["parent_domain_id"]));
+			$server_id = $app->functions->intval($web["server_id"]);
+
+			// The webdav user shall be owned by the same group then the website
+			$sys_groupid = $app->functions->intval($web['sys_groupid']);
+
+			$sql = "UPDATE webdav_user SET server_id = $server_id, sys_groupid = '$sys_groupid' WHERE webdav_user_id = ".$this->id;
+			$app->db->query($sql);
+		}
 	}
 
 }
diff --git a/interface/web/themes/blue/css/styles.css b/interface/web/themes/blue/css/styles.css
index b988938..2843c9f 100644
--- a/interface/web/themes/blue/css/styles.css
+++ b/interface/web/themes/blue/css/styles.css
@@ -373,7 +373,15 @@
 table.list th[class$="_active"],
 table.list td[class$="_active"],
 table.list th.tbl_col_autoresponder,
-table.list td.tbl_col_autoresponder {
+table.list td.tbl_col_autoresponder,
+table.list th.tbl_col_postfix,
+table.list td.tbl_col_postfix,
+table.list th.tbl_col_disablesmtp,
+table.list td.tbl_col_disablesmtp,
+table.list th.tbl_col_disableimap,
+table.list td.tbl_col_disableimap,
+table.list th.tbl_col_disablepop3,
+table.list td.tbl_col_disablepop3 {
     width: 70px;
     text-align: center;
 }
diff --git a/interface/web/themes/default/css/styles.css b/interface/web/themes/default/css/styles.css
index afe36fd..0d0e7d2 100644
--- a/interface/web/themes/default/css/styles.css
+++ b/interface/web/themes/default/css/styles.css
@@ -373,7 +373,15 @@
 table.list th[class$="_active"],
 table.list td[class$="_active"],
 table.list th.tbl_col_autoresponder,
-table.list td.tbl_col_autoresponder {
+table.list td.tbl_col_autoresponder,
+table.list th.tbl_col_postfix,
+table.list td.tbl_col_postfix,
+table.list th.tbl_col_disablesmtp,
+table.list td.tbl_col_disablesmtp,
+table.list th.tbl_col_disableimap,
+table.list td.tbl_col_disableimap,
+table.list th.tbl_col_disablepop3,
+table.list td.tbl_col_disablepop3 {
     width: 70px;
     text-align: center;
 }
diff --git a/interface/web/tools/lib/lang/es.lng b/interface/web/tools/lib/lang/es.lng
index d54c877..f30f4d0 100644
--- a/interface/web/tools/lib/lang/es.lng
+++ b/interface/web/tools/lib/lang/es.lng
@@ -4,10 +4,10 @@
 $wb['ISPConfig Tools'] = 'Herramientas ISPConfig';
 $wb['Password and Language'] = 'Contraseña e Idioma';
 $wb['ispconfig_tools_note'] = 'Este módulo le permite cambiar la contraseña y el idioma e iniciar una resincronización de los registros DNS.';
-$wb['Resync'] = 'Resync';
-$wb['Sync Tools'] = 'Herramientas Sync';
+$wb['Resync'] = 'Resincronizar';
+$wb['Sync Tools'] = 'Sincronización';
 $wb['Import'] = 'Importar';
 $wb['ISPConfig 3 mail'] = 'Correo de ISPConfig 3';
 $wb['PDNS Tupa'] = 'PowerDNS Tupa';
-$wb['Interface'] = 'Interface';
+$wb['Interface'] = 'Interfaz';
 ?>
diff --git a/interface/web/tools/lib/lang/es_import_ispconfig.lng b/interface/web/tools/lib/lang/es_import_ispconfig.lng
index 0674068..eebe0a3 100644
--- a/interface/web/tools/lib/lang/es_import_ispconfig.lng
+++ b/interface/web/tools/lib/lang/es_import_ispconfig.lng
@@ -1,14 +1,14 @@
 <?php
-$wb['head_txt'] = 'Configuración del correo Importar de ISPConfig 3';
-$wb['legend_txt'] = 'Detalles de conexión remota del servidor';
-$wb['legend2_txt'] = 'Importar dominio de correo';
-$wb['resync_sites_txt'] = 'Resync: Sitios webs';
-$wb['resync_ftp_txt'] = 'Resync: Usuarios FTP';
-$wb['resync_shell_txt'] = 'Resync: Usuarios de shell';
-$wb['resync_cron_txt'] = 'Resync: cronjobs';
-$wb['resync_db_txt'] = 'Resync: clientdb config';
-$wb['resync_mailbox_txt'] = 'Resync: buzones de correo';
-$wb['resync_dns_txt'] = 'Resync: registros DNS ';
+$wb['head_txt'] = 'Importar configuración de correo de ISPConfig 3';
+$wb['legend_txt'] = 'Detalles de conexión del servidor remoto';
+$wb['legend2_txt'] = 'Importar dominios de correo';
+$wb['resync_sites_txt'] = 'Resincronizar Sitios webs';
+$wb['resync_ftp_txt'] = 'Resincronizar Usuarios FTP';
+$wb['resync_shell_txt'] = 'Resincronizar Usuarios de shell';
+$wb['resync_cron_txt'] = 'Resincronizar Tareas de cron';
+$wb['resync_db_txt'] = 'Resincronizar Configuración de bases de datos';
+$wb['resync_mailbox_txt'] = 'Resincronizar Buzones de correo';
+$wb['resync_dns_txt'] = 'Resincronizar Registros DNS ';
 $wb['btn_start_txt'] = 'Comenzar importación';
 $wb['btn_connect_txt'] = 'Conectar al servidor remoto';
 $wb['btn_cancel_txt'] = 'Cancelar';
@@ -17,7 +17,7 @@
 $wb['import_mailbox_txt'] = 'Importar buzón de correo';
 $wb['import_aliasdomain_txt'] = 'Importar alias de dominio';
 $wb['import_alias_txt'] = 'Importe alias de correo';
-$wb['import_forward_txt'] = 'Importar reenvio';
-$wb['import_user_filter_txt'] = 'Importar filtro de usuarios';
+$wb['import_forward_txt'] = 'Importar reenvio de correo';
+$wb['import_user_filter_txt'] = 'Importar filtros de usuarios';
 $wb['import_spamfilter_txt'] = 'Importar filtro de spam';
 ?>
diff --git a/interface/web/tools/lib/lang/es_index.lng b/interface/web/tools/lib/lang/es_index.lng
index a3ef38f..fe04d1d 100644
--- a/interface/web/tools/lib/lang/es_index.lng
+++ b/interface/web/tools/lib/lang/es_index.lng
@@ -1,4 +1,4 @@
 <?php
-$wb['page_head_txt'] = 'ISPConfig Tools';
-$wb['page_desc_txt'] = 'Change user settings';
+$wb['page_head_txt'] = 'Herramientas de ISPConfig';
+$wb['page_desc_txt'] = 'Cambiar configuración de usuario';
 ?>
diff --git a/interface/web/tools/lib/lang/es_interface.lng b/interface/web/tools/lib/lang/es_interface.lng
index aab4fc8..57a29e9 100644
--- a/interface/web/tools/lib/lang/es_interface.lng
+++ b/interface/web/tools/lib/lang/es_interface.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['interface_head_txt'] = 'Interface Settings';
-$wb['interface_desc_txt'] = 'Modify your interface';
-$wb['language_txt'] = 'Language';
-$wb['startmodule_txt'] = 'Startmodule';
-$wb['app_theme_txt'] = 'Design';
+$wb['interface_head_txt'] = 'Configuración de Interfaz';
+$wb['interface_desc_txt'] = 'Modifica tu interfaz';
+$wb['language_txt'] = 'Idioma';
+$wb['startmodule_txt'] = 'Módulo de inicio';
+$wb['app_theme_txt'] = 'Diseño';
 ?>
diff --git a/interface/web/tools/lib/lang/es_resync.lng b/interface/web/tools/lib/lang/es_resync.lng
index bea2cf7..a5900cc 100644
--- a/interface/web/tools/lib/lang/es_resync.lng
+++ b/interface/web/tools/lib/lang/es_resync.lng
@@ -1,14 +1,14 @@
 <?php
-$wb['head_txt'] = 'Herramientas Resync';
-$wb['legend_txt'] = 'Resync';
-$wb['resync_sites_txt'] = 'Sitios webs Resync';
-$wb['resync_ftp_txt'] = 'Usuarios FTP de Resync';
-$wb['resync_shell_txt'] = 'Usuarios shell de Resync';
-$wb['resync_cron_txt'] = 'Resync cronjobs';
-$wb['resync_db_txt'] = 'Resync clientdb config';
-$wb['resync_mailbox_txt'] = 'Resync Buzones de correo';
-$wb['resync_dns_txt'] = 'Resync DNS registros';
+$wb['head_txt'] = 'Herramienta de Resincronización';
+$wb['legend_txt'] = 'Resincronizar';
+$wb['resync_sites_txt'] = 'Resincronizar Sitios webs';
+$wb['resync_ftp_txt'] = 'Resincronizar Usuarios FTP';
+$wb['resync_shell_txt'] = 'Resincronizar Usuarios shell';
+$wb['resync_cron_txt'] = 'Resincronizar Tareas de cron';
+$wb['resync_db_txt'] = 'Resincronizar Configuración de bases de datos';
+$wb['resync_mailbox_txt'] = 'Resincronizar Buzones de correo';
+$wb['resync_dns_txt'] = 'Resincronizar Registros DNS ';
 $wb['btn_start_txt'] = 'Inicio';
 $wb['btn_cancel_txt'] = 'Cancelar';
-$wb['resync_client_txt'] = 'Resync Client records';
+$wb['resync_client_txt'] = 'Resincronizar Clientes';
 ?>
diff --git a/interface/web/tools/lib/lang/es_tpl_default.lng b/interface/web/tools/lib/lang/es_tpl_default.lng
index c062463..748631e 100644
--- a/interface/web/tools/lib/lang/es_tpl_default.lng
+++ b/interface/web/tools/lib/lang/es_tpl_default.lng
@@ -1,7 +1,7 @@
 <?php
-$wb['list_head_txt'] = 'Default Theme settings';
+$wb['list_head_txt'] = 'Configuración del tema por defecto';
 $wb['list_desc_txt'] = 'Modify default-theme specific options';
 $wb['no_settings_txt'] = 'There are no settings for the default theme.';
-$wb['btn_start_txt'] = 'Save';
-$wb['btn_cancel_txt'] = 'Back';
+$wb['btn_start_txt'] = 'Guardar';
+$wb['btn_cancel_txt'] = 'Atrás';
 ?>
diff --git a/interface/web/tools/lib/lang/es_usersettings.lng b/interface/web/tools/lib/lang/es_usersettings.lng
index eaa47b7..50c482e 100644
--- a/interface/web/tools/lib/lang/es_usersettings.lng
+++ b/interface/web/tools/lib/lang/es_usersettings.lng
@@ -5,8 +5,8 @@
 $wb['password_mismatch'] = 'La contraseña indicada en el segundo campo no coincide con la del primero.';
 $wb['Form to edit the user password and language.'] = 'Formulario para editar el usuario y la contraseña.';
 $wb['Settings'] = 'Configuraciones';
-$wb['generate_password_txt'] = 'Generate Password';
-$wb['repeat_password_txt'] = 'Repeat Password';
-$wb['password_mismatch_txt'] = 'The passwords do not match.';
-$wb['password_match_txt'] = 'The passwords do match.';
+$wb['generate_password_txt'] = 'Generar contraseña';
+$wb['repeat_password_txt'] = 'Repetir contraseña';
+$wb['password_mismatch_txt'] = 'Las contraseñas no coinciden.';
+$wb['password_match_txt'] = 'Las contraseñas coinciden.';
 ?>
diff --git a/interface/web/tools/lib/lang/fr_resync.lng b/interface/web/tools/lib/lang/fr_resync.lng
index dd8a216..ddc80e3 100644
--- a/interface/web/tools/lib/lang/fr_resync.lng
+++ b/interface/web/tools/lib/lang/fr_resync.lng
@@ -1,14 +1,16 @@
 <?php
-$wb['head_txt'] = 'Resync Tool';
-$wb['legend_txt'] = 'Resync';
-$wb['resync_sites_txt'] = 'Resync Websites';
-$wb['resync_ftp_txt'] = 'Resync FTP users';
-$wb['resync_shell_txt'] = 'Resync shell users';
-$wb['resync_cron_txt'] = 'Resync cronjobs';
-$wb['resync_db_txt'] = 'Resync clientdb config';
-$wb['resync_mailbox_txt'] = 'Resync Mailboxes';
-$wb['resync_dns_txt'] = 'Resync DNS records';
-$wb['btn_start_txt'] = 'Start';
-$wb['btn_cancel_txt'] = 'Cancel';
-$wb['resync_client_txt'] = 'Resync Client records';
+$wb['head_txt'] = 'Outil de Resynchronisation';
+$wb['legend_txt'] = 'Resynchroniser';
+$wb['Resynchroniser_sites_txt'] = 'Resynchroniser Sites web';
+$wb['Resynchroniser_ftp_txt'] = 'Resynchroniser utilisateurs FTP';
+$wb['Resynchroniser_shell_txt'] = 'Resynchroniser utilisateurs shell';
+$wb['Resynchroniser_cron_txt'] = 'Resynchroniser cronjobs';
+$wb['Resynchroniser_db_txt'] = 'Resynchroniser configuration clientdb';
+$wb['Resynchroniser_mailbox_txt'] = 'Resynchroniser Boites aux lettres';
+$wb['Resynchroniser_dkim_txt'] = 'Resynchroniser DKIM-Keys';
+$wb['Resynchroniser_dns_txt'] = 'Resynchroniser enregistrements DNS';
+$wb['btn_start_txt'] = 'Dérrer';
+$wb['btn_cancel_txt'] = 'Annuler';
+$wb['Resynchroniser_client_txt'] = 'Resynchroniser Enregisitrements Client';
 ?>
+
diff --git a/server/conf/hhvm_starter.master b/server/conf/hhvm_starter.master
index c64711b..57f9324 100644
--- a/server/conf/hhvm_starter.master
+++ b/server/conf/hhvm_starter.master
@@ -33,7 +33,15 @@
 	
 	umask 017
 	sudo -u {SYSTEM_USER} touch /var/run/hhvm/hhvm_{SYSTEM_USER}.pid
-	/usr/bin/hhvm --mode daemon -vServer.Type=fastcgi --user {SYSTEM_USER} -vServer.FileSocket=/var/run/hhvm/hhvm.{SYSTEM_USER}.sock -vLog.Level=Warning -vLog.UseLogFile=false -vRepo.Central.Path=/var/run/hhvm/hhvm.{SYSTEM_USER}.hhbc -vPidFile=/var/run/hhvm/hhvm_{SYSTEM_USER}.pid & echo $! > /var/run/hhvm/hhvm_{SYSTEM_USER}.pid
+	INIFILE=""
+	if [[ -e "/var/www/conf/{SYSTEM_USER}/php.ini" ]] ; then
+		INIFILE="-vServer.IniFile=/var/www/conf/{SYSTEM_USER}/php.ini" ;
+	elif [[ -e "/etc/php5/hhvm/php.ini" ]] ; then
+		INIFILE="-vServer.IniFile=/etc/php5/hhvm/php.ini" ;
+	elif [[ -e "/etc/php5/cgi/php.ini" ]] ; then
+		INIFILE="-vServer.IniFile=/etc/php5/cgi/php.ini" ;
+	fi
+	/usr/bin/hhvm --mode daemon -vServer.Type=fastcgi --user {SYSTEM_USER} -vServer.FileSocket=/var/run/hhvm/hhvm.{SYSTEM_USER}.sock -vLog.Level=Warning -vLog.UseLogFile=false -vRepo.Central.Path=/var/run/hhvm/hhvm.{SYSTEM_USER}.hhbc -vServer.FixPathInfo=true $INIFILE -vPidFile=/var/run/hhvm/hhvm_{SYSTEM_USER}.pid & echo $! > /var/run/hhvm/hhvm_{SYSTEM_USER}.pid
 }
 
 do_stop()
diff --git a/server/conf/vhost.conf.master b/server/conf/vhost.conf.master
index d6b58ae..008c877 100644
--- a/server/conf/vhost.conf.master
+++ b/server/conf/vhost.conf.master
@@ -61,6 +61,10 @@
 		</IfModule>
 
 		<Directory {tmpl_var name='web_document_root_www'}>
+				# Clear PHP settings of this website
+				<FilesMatch ".+\.ph(p[345]?|t|tml)$">
+						SetHandler None
+				</FilesMatch>
 				Options +FollowSymLinks
 				AllowOverride <tmpl_var name='allow_override'>
 				<tmpl_if name='apache_version' op='>' value='2.2' format='version'>
@@ -89,6 +93,10 @@
 </tmpl_if>
 		</Directory>
 		<Directory {tmpl_var name='web_document_root'}>
+				# Clear PHP settings of this website
+				<FilesMatch ".+\.ph(p[345]?|t|tml)$">
+						SetHandler None
+				</FilesMatch>
 				Options +FollowSymLinks
 				AllowOverride <tmpl_var name='allow_override'>
 				<tmpl_if name='apache_version' op='>' value='2.2' format='version'>
@@ -190,10 +198,6 @@
 			SuexecUserGroup <tmpl_var name='system_user'> <tmpl_var name='system_group'>
 		</IfModule>
 </tmpl_if>
-		# Clear PHP settings of this website
-		<FilesMatch ".+\.ph(p[345]?|t|tml)$">
-				SetHandler None
-		</FilesMatch>
 <tmpl_if name='php' op='==' value='mod'>
 		# mod_php enabled
 		AddType application/x-httpd-php .php .php3 .php4 .php5
@@ -308,9 +312,16 @@
 					Allow from all
 					</tmpl_if>
 			    </Directory>
-				<FilesMatch "\.php[345]?$">
-					SetHandler php5-fcgi
-				</FilesMatch>
+				<Directory {tmpl_var name='web_document_root_www'}>
+					<FilesMatch "\.php[345]?$">
+						SetHandler php5-fcgi
+					</FilesMatch>
+				</Directory>
+				<Directory {tmpl_var name='web_document_root'}>
+					<FilesMatch "\.php[345]?$">
+						SetHandler php5-fcgi
+					</FilesMatch>
+				</Directory>
                 Action php5-fcgi /php5-fcgi virtual
 				Alias /php5-fcgi {tmpl_var name='document_root'}/cgi-bin/php5-fcgi-{tmpl_var name='ip_address'}-{tmpl_var name='port'}-{tmpl_var name='domain'}
 <tmpl_if name='use_tcp'>
@@ -332,12 +343,22 @@
 					Allow from all
 					</tmpl_if>
 			    </Directory>
-				<FilesMatch "\.php[345]?$">
-					SetHandler hhvm-fcgi
-				</FilesMatch>
-				<FilesMatch "\.hh$">
-					SetHandler hhvm-fcgi
-				</FilesMatch>
+				<Directory {tmpl_var name='web_document_root_www'}>
+					<FilesMatch "\.php[345]?$">
+						SetHandler hhvm-fcgi
+					</FilesMatch>
+					<FilesMatch "\.hh$">
+						SetHandler hhvm-fcgi
+					</FilesMatch>
+				</Directory>
+				<Directory {tmpl_var name='web_document_root'}>
+					<FilesMatch "\.php[345]?$">
+						SetHandler hhvm-fcgi
+					</FilesMatch>
+					<FilesMatch "\.hh$">
+						SetHandler hhvm-fcgi
+					</FilesMatch>
+				</Directory>
                 Action hhvm-fcgi /hhvm-fcgi virtual
 				Alias /hhvm-fcgi {tmpl_var name='document_root'}/cgi-bin/hhvm-fcgi-{tmpl_var name='ip_address'}-{tmpl_var name='port'}-{tmpl_var name='domain'}
                 FastCgiExternalServer {tmpl_var name='document_root'}/cgi-bin/hhvm-fcgi-{tmpl_var name='ip_address'}-{tmpl_var name='port'}-{tmpl_var name='domain'} -idle-timeout 300 -socket /var/run/hhvm/hhvm.<tmpl_var name='system_user'>.sock -pass-header Authorization
diff --git a/server/lib/classes/cron.d/100-monitor_email_quota.inc.php b/server/lib/classes/cron.d/100-monitor_email_quota.inc.php
index 62e97b4..5d0c7a0 100644
--- a/server/lib/classes/cron.d/100-monitor_email_quota.inc.php
+++ b/server/lib/classes/cron.d/100-monitor_email_quota.inc.php
@@ -77,10 +77,21 @@
 
 		$mailboxes = $app->db->queryAllRecords("SELECT email,maildir FROM mail_user WHERE server_id = $server_id");
 		if(is_array($mailboxes)) {
+
+			//* with dovecot we can use doveadm instead of 'du -s'
+			$dovecot = false;
+			if (isset($mail_config['pop3_imap_daemon']) && $mail_config ['pop3_imap_daemon'] = 'dovecot' && is_executable('doveadm')) {
+				exec('doveadm quota 2>&1', $tmp_output, $tmp_retval); // with dovecot 2.2.x 'doveadm quota' is unuseable
+				if ($retval = 64) $dovecot = true;
+			}
+
 			foreach($mailboxes as $mb) {
 				$email = $mb['email'];
 				$email_parts = explode('@', $mb['email']);
 				$filename = $mb['maildir'].'/.quotausage';
+				if(!file_exists($filename) && $dovecot) {
+					exec('doveadm quota recalc -u '.$email);
+				}
 				if(file_exists($filename) && !is_link($filename)) {
 					$quotafile = file($filename);
 					preg_match('/storage.*?([0-9]+)/s', implode('',$quotafile), $storage_value);
diff --git a/server/plugins-available/mail_plugin.inc.php b/server/plugins-available/mail_plugin.inc.php
index 424ee62..81ba6ce 100644
--- a/server/plugins-available/mail_plugin.inc.php
+++ b/server/plugins-available/mail_plugin.inc.php
@@ -100,7 +100,7 @@
 				$email_parts = explode('@',$data['new']['email']);
 				$webdomain = $app->db->queryOneRecord("SELECT domain_id, server_id, system_user, parent_domain_id FROM web_domain WHERE domain = '".$app->db->quote($email_parts[1])."'");
 				if ($webdomain) {
-					while ($webdomain['parent_domain_id'] != 0) {
+					while (($webdomain['system_user'] == null) && ($webdomain['parent_domain_id'] != 0)) {
 						$webdomain = $app->db->queryOneRecord("SELECT domain_id, server_id, system_user, parent_domain_id FROM web_domain WHERE domain_id = '".$webdomain['parent_domain_id']."'");
 					}
 					$app->log($data['new']['server_id'].' == '.$webdomain['server_id'],LOGLEVEL_DEBUG);
diff --git a/server/plugins-available/mail_plugin_dkim.inc.php b/server/plugins-available/mail_plugin_dkim.inc.php
index 0f0f6ef..a74c4b8 100644
--- a/server/plugins-available/mail_plugin_dkim.inc.php
+++ b/server/plugins-available/mail_plugin_dkim.inc.php
@@ -123,7 +123,21 @@
 
             if (!is_dir($mail_config['dkim_path'])) {
                 $app->log('DKIM Path '.$mail_config['dkim_path'].' not found - (re)created.', LOGLEVEL_DEBUG);
-                mkdir($mail_config['dkim_path'], 0750, true);
+				if($app->system->is_user('amavis')) { 
+					$amavis_user='amavis'; 
+				} elseif ($app->system->is_user('vscan')) { 
+					$amavis_user='vscan'; 
+				}
+				else { 
+					$amavis_user=''; 
+				}
+				if(!empty($amavis_user)) {
+					mkdir($mail_config['dkim_path'], 0750, true);
+					exec('chown '.$amavis_user.' /var/lib/amavis/dkim');
+					unset($amavis_user);
+				} else {
+					mkdir($mail_config['dkim_path'], 0755, true);
+				}
             }
 
 			if (!is_writeable($mail_config['dkim_path'])) {
@@ -132,7 +146,7 @@
 			}
 
 		} else {
-			$app->log('Unable to write DKIM settings; Check your config!', LOGLEVEL_ERROR);
+			$app->log('Unable to write DKIM settings - no DKIM-Path defined', LOGLEVEL_ERROR);
 			$check=false;
 		}
 		return $check;
@@ -173,7 +187,7 @@
 			$app->log('Saved DKIM Private-key to '.$key_file.'.private', LOGLEVEL_DEBUG);
 			$success=true;
 			/* now we get the DKIM Public-key */
-			exec('cat '.escapeshellarg($key_file.'.private').'|openssl rsa -pubout', $pubkey, $result);
+			exec('cat '.escapeshellarg($key_file.'.private').'|openssl rsa -pubout 2> /dev/null', $pubkey, $result);
 			$public_key='';
 			foreach($pubkey as $values) $public_key=$public_key.$values."\n";
 			/* save the DKIM Public-key in dkim-dir */

--
Gitblit v1.9.1