summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorthomascube <thomas@roundcube.net>2011-01-29 14:55:12 +0000
committerthomascube <thomas@roundcube.net>2011-01-29 14:55:12 +0000
commit98cb0f179206843ceaa87df6bfb3d1da045ed8ad (patch)
treeade6196094997c24b48e8a432383bd2da9f6bc5c
parenta32679e69f7d6c265f85015677743272740dcc8e (diff)
Apply bug fixes and localization updated from trunk for release 0.5.1
-rw-r--r--CHANGELOG21
-rw-r--r--INSTALL2
-rw-r--r--SQL/mysql.update.sql2
-rw-r--r--SQL/postgres.update.sql1
-rw-r--r--SQL/sqlite.update.sql2
-rw-r--r--index.php15
-rw-r--r--installer/check.php2
-rwxr-xr-xprogram/include/iniset.php2
-rw-r--r--program/include/main.inc9
-rw-r--r--program/include/rcmail.php4
-rw-r--r--program/include/rcube_html_page.php86
-rw-r--r--program/include/rcube_imap.php95
-rw-r--r--program/include/rcube_plugin_api.php3
-rwxr-xr-xprogram/include/rcube_template.php4
-rw-r--r--program/js/app.js33
-rwxr-xr-xprogram/js/tiny_mce/themes/advanced/langs/sv_dlg.js4
-rw-r--r--program/lib/Net/IDNA2.php252
-rw-r--r--program/lib/Net/Socket.php209
-rw-r--r--program/localization/az_AZ/labels.inc53
-rw-r--r--program/localization/az_AZ/messages.inc27
-rw-r--r--program/localization/bg_BG/labels.inc44
-rw-r--r--program/localization/bg_BG/messages.inc13
-rw-r--r--program/localization/da_DK/labels.inc54
-rw-r--r--program/localization/da_DK/messages.inc28
-rw-r--r--program/localization/de_DE/labels.inc34
-rw-r--r--program/localization/de_DE/messages.inc5
-rw-r--r--program/localization/fr_FR/labels.inc5
-rw-r--r--program/localization/fr_FR/messages.inc12
-rw-r--r--program/localization/he_IL/labels.inc31
-rw-r--r--program/localization/he_IL/messages.inc1
-rw-r--r--program/localization/hu_HU/labels.inc2
-rw-r--r--program/localization/it_IT/labels.inc36
-rw-r--r--program/localization/it_IT/messages.inc5
-rw-r--r--program/localization/ja_JP/labels.inc40
-rw-r--r--program/localization/ja_JP/messages.inc3
-rw-r--r--program/localization/pt_PT/labels.inc29
-rw-r--r--program/localization/pt_PT/messages.inc1
-rw-r--r--program/localization/ru_RU/labels.inc31
-rw-r--r--program/localization/ru_RU/messages.inc1
-rw-r--r--program/localization/sk_SK/labels.inc22
-rw-r--r--program/localization/sk_SK/messages.inc27
-rw-r--r--program/localization/sv_SE/labels.inc34
-rw-r--r--program/localization/sv_SE/messages.inc1
-rw-r--r--program/localization/zh_TW/labels.inc41
-rw-r--r--program/localization/zh_TW/messages.inc13
-rw-r--r--program/steps/addressbook/save.inc12
-rw-r--r--program/steps/mail/func.inc36
-rw-r--r--program/steps/settings/folders.inc17
-rw-r--r--program/steps/settings/func.inc1
-rw-r--r--program/steps/settings/save_prefs.inc2
-rw-r--r--skins/default/common.css2
-rw-r--r--skins/default/ie6hacks.css2
-rw-r--r--skins/default/iehacks.css5
-rw-r--r--skins/default/mail.css75
-rw-r--r--skins/default/templates/addressbook.html1
-rw-r--r--skins/default/templates/message.html1
-rw-r--r--skins/default/templates/messagepreview.html1
57 files changed, 1183 insertions, 311 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 3a24db1b7..c9ccc277b 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,27 @@
CHANGELOG Roundcube Webmail
===========================
+RELEASE 0.5.1
+-------------
+- Fix settings UI on IE 6 (#1487724)
+- Remove double borders in folder listing (#1487713)
+- Separate full message headers UI element from headers table (#1487715)
+- Add part MIME ID to message_part_* hooks (#1487718)
+- Updated PEAR::Net_Socket to 1.0.10
+- Updated PEAR::Net_IDNA2 to 0.1.1
+- Fix handling of comments inside an email address spec. (#1487673)
+- Show full mail subject as title when hovering a cut subject link (#1487128)
+- Fix randomly disappearing folders list in IE (#1487704)
+- Fix list column add/removal in IE (#1487703)
+- Fix login redirect issues (#1487686)
+- Require PHP 5.2.1 or greater
+- Fix %h/%z variables in username_domain option (#1487701)
+- Workaround for setting charset in case of malformed bodystructure response (#1487700)
+- Fix impossible to subscribe to protected folders (#1487656)
+- Fix setting timezone in Preferences (#1487705)
+
+RELEASE 0.5
+-----------
- Fix double-login/session issue (#1487104)
- Wrap HTML parts with <html><body> and add Doctype declaration (#1487098)
- Make rcube_autoload silently skip unknown classes (#1487109)
diff --git a/INSTALL b/INSTALL
index eb8399786..49aae922a 100644
--- a/INSTALL
+++ b/INSTALL
@@ -11,7 +11,7 @@ REQUIREMENTS
* The Apache or Lighttpd Webserver
* .htaccess support allowing overrides for DirectoryIndex
-* PHP Version 5.2 or greater including
+* PHP Version 5.2.1 or greater including
- PCRE, DOM, JSON, XML, Session, Sockets (required)
- libiconv (recommended)
- mbstring, fileinfo, mcrypt (optional)
diff --git a/SQL/mysql.update.sql b/SQL/mysql.update.sql
index 2af0a47e6..aaab43fb2 100644
--- a/SQL/mysql.update.sql
+++ b/SQL/mysql.update.sql
@@ -131,3 +131,5 @@ ALTER TABLE `users` ADD UNIQUE `username` (`username`, `mail_host`);
ALTER TABLE `contacts` MODIFY `email` varchar(255) NOT NULL;
+TRUNCATE TABLE `messages`;
+
diff --git a/SQL/postgres.update.sql b/SQL/postgres.update.sql
index 444caf6f6..2f4498d36 100644
--- a/SQL/postgres.update.sql
+++ b/SQL/postgres.update.sql
@@ -88,3 +88,4 @@ DROP INDEX users_username_id_idx;
ALTER TABLE users ADD UNIQUE (username, mail_host);
ALTER TABLE contacts ALTER email TYPE varchar(255);
+TRUNCATE messages;
diff --git a/SQL/sqlite.update.sql b/SQL/sqlite.update.sql
index 328693944..6f2acf913 100644
--- a/SQL/sqlite.update.sql
+++ b/SQL/sqlite.update.sql
@@ -180,3 +180,5 @@ INSERT INTO contacts (contact_id, user_id, changed, del, name, email, firstname,
CREATE INDEX ix_contacts_user_id ON contacts(user_id, email);
DROP TABLE contacts_tmp;
+DELETE FROM messages;
+
diff --git a/index.php b/index.php
index d44e13bb2..89066b58d 100644
--- a/index.php
+++ b/index.php
@@ -2,9 +2,9 @@
/*
+-------------------------------------------------------------------------+
| Roundcube Webmail IMAP Client |
- | Version 0.5 |
+ | Version 0.5.1 |
| |
- | Copyright (C) 2005-2010, Roundcube Dev. - Switzerland |
+ | Copyright (C) 2005-2011, Roundcube Dev. - Switzerland |
| |
| This program is free software; you can redistribute it and/or modify |
| it under the terms of the GNU General Public License version 2 |
@@ -104,12 +104,17 @@ if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') {
rcmail_log_login();
// restore original request parameters
- $query = array('_task' => 'mail');
- if ($url = get_input_value('_url', RCUBE_INPUT_POST))
+ $query = array();
+ if ($url = get_input_value('_url', RCUBE_INPUT_POST)) {
parse_str($url, $query);
+
+ // prevent endless looping on login page
+ if ($query['_task'] == 'login')
+ unset($query['_task']);
+ }
// allow plugins to control the redirect url after login success
- $redir = $RCMAIL->plugins->exec_hook('login_after', $query);
+ $redir = $RCMAIL->plugins->exec_hook('login_after', $query + array('_task' => 'mail'));
unset($redir['abort']);
// send redirect
diff --git a/installer/check.php b/installer/check.php
index 7fa4d95d3..0ba5f58de 100644
--- a/installer/check.php
+++ b/installer/check.php
@@ -68,7 +68,7 @@ echo '<input type="hidden" name="_step" value="' . ($RCI->configured ? 3 : 2) .
<h3>Checking PHP version</h3>
<?php
-define('MIN_PHP_VERSION', '5.2.0');
+define('MIN_PHP_VERSION', '5.2.1');
if (version_compare(PHP_VERSION, MIN_PHP_VERSION, '>=')) {
$RCI->pass('Version', 'PHP ' . PHP_VERSION . ' detected');
} else {
diff --git a/program/include/iniset.php b/program/include/iniset.php
index aeb4549fc..ac96880c3 100755
--- a/program/include/iniset.php
+++ b/program/include/iniset.php
@@ -36,7 +36,7 @@ foreach ($crit_opts as $optname => $optval) {
}
// application constants
-define('RCMAIL_VERSION', '0.5');
+define('RCMAIL_VERSION', '0.5.1');
define('RCMAIL_CHARSET', 'UTF-8');
define('JS_OBJECT_NAME', 'rcmail');
define('RCMAIL_START', microtime(true));
diff --git a/program/include/main.inc b/program/include/main.inc
index b61f8aea2..b8d27d68c 100644
--- a/program/include/main.inc
+++ b/program/include/main.inc
@@ -861,8 +861,8 @@ function rcmail_mod_css_styles($source, $container_id)
$replacements = new rcube_string_replacer;
// ignore the whole block if evil styles are detected
- $stripped = preg_replace('/[^a-z\(:]/', '', rcmail_xss_entity_decode($source));
- if (preg_match('/expression|behavior|url\(|import/', $stripped))
+ $stripped = preg_replace('/[^a-z\(:;]/', '', rcmail_xss_entity_decode($source));
+ if (preg_match('/expression|behavior|url\(|import[^a]/', $stripped))
return '/* evil! */';
// remove css comments (sometimes used for some ugly hacks)
@@ -1771,16 +1771,17 @@ function rcube_sess_unset($var_name=null)
* Replaces hostname variables
*
* @param string $name Hostname
+ * @param string $host Optional IMAP hostname
* @return string
*/
-function rcube_parse_host($name)
+function rcube_parse_host($name, $host='')
{
// %n - host
$n = preg_replace('/:\d+$/', '', $_SERVER['SERVER_NAME']);
// %d - domain name without first part, e.g. %d=mail.domain.tld, %m=domain.tld
$d = preg_replace('/^[^\.]+\./', '', $n);
// %h - IMAP host
- $h = $_SESSION['imap_host'];
+ $h = $_SESSION['imap_host'] ? $_SESSION['imap_host'] : $host;
// %z - IMAP domain without first part, e.g. %h=imap.domain.tld, %z=domain.tld
$z = preg_replace('/^[^\.]+\./', '', $h);
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index e4078a72f..e9f5b5fce 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -673,9 +673,9 @@ class rcmail
// Check if we need to add domain
if (!empty($config['username_domain']) && strpos($username, '@') === false) {
if (is_array($config['username_domain']) && isset($config['username_domain'][$host]))
- $username .= '@'.rcube_parse_host($config['username_domain'][$host]);
+ $username .= '@'.rcube_parse_host($config['username_domain'][$host], $host);
else if (is_string($config['username_domain']))
- $username .= '@'.rcube_parse_host($config['username_domain']);
+ $username .= '@'.rcube_parse_host($config['username_domain'], $host);
}
// Convert username to lowercase. If IMAP backend
diff --git a/program/include/rcube_html_page.php b/program/include/rcube_html_page.php
index 06cb5cb56..9ac03d01f 100644
--- a/program/include/rcube_html_page.php
+++ b/program/include/rcube_html_page.php
@@ -28,11 +28,13 @@ class rcube_html_page
{
protected $scripts_path = '';
protected $script_files = array();
+ protected $css_files = array();
protected $scripts = array();
protected $charset = RCMAIL_CHARSET;
protected $script_tag_file = "<script type=\"text/javascript\" src=\"%s\"></script>\n";
protected $script_tag = "<script type=\"text/javascript\">\n/* <![CDATA[ */\n%s\n/* ]]> */\n</script>";
+ protected $link_css_file = "<link rel=\"stylesheet\" type=\"text/css\" href=\"%s\" />\n";
protected $default_template = "<html>\n<head><title></title></head>\n<body></body>\n</html>";
protected $title = '';
@@ -61,6 +63,9 @@ class rcube_html_page
if (in_array($file, $sa_files)) {
return;
}
+
+ $sa_files[] = $file;
+
if (!is_array($this->script_files[$position])) {
$this->script_files[$position] = array();
}
@@ -83,6 +88,16 @@ class rcube_html_page
}
/**
+ * Link an external css file
+ *
+ * @param string File URL
+ */
+ public function include_css($file)
+ {
+ $this->css_files[] = $file;
+ }
+
+ /**
* Add HTML code to the page header
*
* @param string $str HTML code
@@ -163,52 +178,53 @@ class rcube_html_page
}
// replace specialchars in content
- $__page_title = Q($this->title, 'show', FALSE);
- $__page_header = $__page_body = $__page_footer = '';
+ $page_title = Q($this->title, 'show', FALSE);
+ $page_header = '';
+ $page_footer = '';
// include meta tag with charset
if (!empty($this->charset)) {
if (!headers_sent()) {
header('Content-Type: text/html; charset=' . $this->charset);
}
- $__page_header = '<meta http-equiv="content-type"';
- $__page_header.= ' content="text/html; charset=';
- $__page_header.= $this->charset . '" />'."\n";
+ $page_header = '<meta http-equiv="content-type"';
+ $page_header.= ' content="text/html; charset=';
+ $page_header.= $this->charset . '" />'."\n";
}
// definition of the code to be placed in the document header and footer
if (is_array($this->script_files['head'])) {
foreach ($this->script_files['head'] as $file) {
- $__page_header .= sprintf($this->script_tag_file, $file);
+ $page_header .= sprintf($this->script_tag_file, $file);
}
}
$head_script = $this->scripts['head_top'] . $this->scripts['head'];
if (!empty($head_script)) {
- $__page_header .= sprintf($this->script_tag, $head_script);
+ $page_header .= sprintf($this->script_tag, $head_script);
}
if (!empty($this->header)) {
- $__page_header .= $this->header;
+ $page_header .= $this->header;
}
if (is_array($this->script_files['foot'])) {
foreach ($this->script_files['foot'] as $file) {
- $__page_footer .= sprintf($this->script_tag_file, $file);
+ $page_footer .= sprintf($this->script_tag_file, $file);
}
}
if (!empty($this->scripts['foot'])) {
- $__page_footer .= sprintf($this->script_tag, $this->scripts['foot']);
+ $page_footer .= sprintf($this->script_tag, $this->scripts['foot']);
}
if (!empty($this->footer)) {
- $__page_footer .= $this->footer;
+ $page_footer .= $this->footer;
}
// find page header
if ($hpos = stripos($output, '</head>')) {
- $__page_header .= "\n";
+ $page_header .= "\n";
}
else {
if (!is_numeric($hpos)) {
@@ -220,49 +236,43 @@ class rcube_html_page
}
$hpos++;
}
- $__page_header = "<head>\n<title>$__page_title</title>\n$__page_header\n</head>\n";
+ $page_header = "<head>\n<title>$page_title</title>\n$page_header\n</head>\n";
}
// add page hader
if ($hpos) {
- $output = substr($output,0,$hpos) . $__page_header . substr($output,$hpos,strlen($output));
+ $output = substr($output,0,$hpos) . $page_header . substr($output,$hpos,strlen($output));
}
else {
- $output = $__page_header . $output;
+ $output = $page_header . $output;
}
- // find page body
- if ($bpos = stripos($output, '<body')) {
- while ($output[$bpos] != '>') {
- $bpos++;
- }
- $bpos++;
- }
- else {
- $bpos = stripos($output, '</head>')+7;
- }
-
- // add page body
- if ($bpos && $__page_body) {
- $output = substr($output,0,$bpos) . "\n$__page_body\n" . substr($output,$bpos,strlen($output));
- }
-
- // find and add page footer
+ // add page footer
if (($fpos = strripos($output, '</body>')) || ($fpos = strripos($output, '</html>'))) {
- $output = substr($output, 0, $fpos) . "$__page_footer\n" . substr($output, $fpos);
+ $output = substr($output, 0, $fpos) . "$page_footer\n" . substr($output, $fpos);
}
else {
- $output .= "\n".$__page_footer;
+ $output .= "\n".$page_footer;
}
- // reset those global vars
- $__page_header = $__page_footer = '';
+ // add css files in head, before scripts, for speed up with parallel downloads
+ if (!empty($this->css_files) &&
+ (($pos = stripos($output, '<script ')) || ($pos = stripos($output, '</head>')))
+ ) {
+ $css = '';
+ foreach ($this->css_files as $file) {
+ $css .= sprintf($this->link_css_file, $file);
+ }
+ $output = substr($output, 0, $pos) . $css . substr($output, $pos);
+ }
$this->base_path = $base_path;
+
// correct absolute paths in images and other tags
// add timestamp to .js and .css filename
- $output = preg_replace_callback('!(src|href|background)=(["\']?)([a-z0-9/_.-]+)(["\'\s>])!i',
- array($this, 'file_callback'), $output);
+ $output = preg_replace_callback(
+ '!(src|href|background)=(["\']?)([a-z0-9/_.-]+)(["\'\s>])!i',
+ array($this, 'file_callback'), $output);
$output = str_replace('$__skin_path', $base_path, $output);
if ($this->charset != RCMAIL_CHARSET)
diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php
index 26975044d..bfbf740fd 100644
--- a/program/include/rcube_imap.php
+++ b/program/include/rcube_imap.php
@@ -2053,7 +2053,7 @@ class rcube_imap
return false;
}
- $struct = &$this->_structure_part($structure);
+ $struct = &$this->_structure_part($structure, 0, '', $headers);
$struct->headers = get_object_vars($headers);
// don't trust given content-type
@@ -2185,6 +2185,11 @@ class rcube_imap
$struct->charset = $struct->ctype_parameters['charset'];
}
+ // #1487700: workaround for lack of charset in malformed structure
+ if (empty($struct->charset) && !empty($mime_headers) && $mime_headers->charset) {
+ $struct->charset = $mime_headers->charset;
+ }
+
// read content encoding
if (!empty($part[5]) && $part[5]!='NIL') {
$struct->encoding = strtolower($part[5]);
@@ -2233,7 +2238,11 @@ class rcube_imap
$mime_headers = $this->conn->fetchPartHeader(
$this->mailbox, $this->_msg_id, false, $struct->mime_id);
}
- $struct->headers = $this->_parse_headers($mime_headers) + $struct->headers;
+
+ if (is_string($mime_headers))
+ $struct->headers = $this->_parse_headers($mime_headers) + $struct->headers;
+ else if (is_object($mime_headers))
+ $struct->headers = get_object_vars($mime_headers) + $struct->headers;
// get real content-type of message/rfc822
if ($struct->mimetype == 'message/rfc822') {
@@ -4691,10 +4700,13 @@ class rcube_imap
private function _parse_address_list($str, $decode=true)
{
// remove any newlines and carriage returns before
- $a = rcube_explode_quoted_string('[,;]', preg_replace( "/[\r\n]/", " ", $str));
+ $str = preg_replace('/\r?\n(\s|\t)?/', ' ', $str);
+
+ // extract list items, remove comments
+ $str = self::explode_header_string(',;', $str, true);
$result = array();
- foreach ($a as $key => $val) {
+ foreach ($str as $key => $val) {
$name = '';
$address = '';
$val = trim($val);
@@ -4736,6 +4748,81 @@ class rcube_imap
/**
+ * Explodes header (e.g. address-list) string into array of strings
+ * using specified separator characters with proper handling
+ * of quoted-strings and comments (RFC2822)
+ *
+ * @param string $separator String containing separator characters
+ * @param string $str Header string
+ * @param bool $remove_comments Enable to remove comments
+ *
+ * @return array Header items
+ */
+ static function explode_header_string($separator, $str, $remove_comments=false)
+ {
+ $length = strlen($str);
+ $result = array();
+ $quoted = false;
+ $comment = 0;
+ $out = '';
+
+ for ($i=0; $i<$length; $i++) {
+ // we're inside a quoted string
+ if ($quoted) {
+ if ($str[$i] == '"') {
+ $quoted = false;
+ }
+ else if ($str[$i] == '\\') {
+ if ($comment <= 0) {
+ $out .= '\\';
+ }
+ $i++;
+ }
+ }
+ // we're inside a comment string
+ else if ($comment > 0) {
+ if ($str[$i] == ')') {
+ $comment--;
+ }
+ else if ($str[$i] == '(') {
+ $comment++;
+ }
+ else if ($str[$i] == '\\') {
+ $i++;
+ }
+ continue;
+ }
+ // separator, add to result array
+ else if (strpos($separator, $str[$i]) !== false) {
+ if ($out) {
+ $result[] = $out;
+ }
+ $out = '';
+ continue;
+ }
+ // start of quoted string
+ else if ($str[$i] == '"') {
+ $quoted = true;
+ }
+ // start of comment
+ else if ($remove_comments && $str[$i] == '(') {
+ $comment++;
+ }
+
+ if ($comment <= 0) {
+ $out .= $str[$i];
+ }
+ }
+
+ if ($out && $comment <= 0) {
+ $result[] = $out;
+ }
+
+ return $result;
+ }
+
+
+ /**
* This is our own debug handler for the IMAP connection
* @access public
*/
diff --git a/program/include/rcube_plugin_api.php b/program/include/rcube_plugin_api.php
index f0fe8c20e..ab5c40686 100644
--- a/program/include/rcube_plugin_api.php
+++ b/program/include/rcube_plugin_api.php
@@ -395,7 +395,7 @@ class rcube_plugin_api
{
if ($this->output->type == 'html') {
$src = $this->resource_url($fn);
- $this->output->add_header(html::tag('link', array('rel' => "stylesheet", 'type' => "text/css", 'href' => $src)));
+ $this->output->include_css($src);
}
}
@@ -437,4 +437,3 @@ class rcube_plugin_api
}
}
-
diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php
index 92eddc2d8..5433dc202 100755
--- a/program/include/rcube_template.php
+++ b/program/include/rcube_template.php
@@ -1229,8 +1229,8 @@ class rcube_template extends rcube_html_page
'UTF-8' => 'UTF-8 ('.rcube_label('unicode').')',
'US-ASCII' => 'ASCII ('.rcube_label('english').')',
'ISO-8859-1' => 'ISO-8859-1 ('.rcube_label('westerneuropean').')',
- 'ISO-8859-2' => 'ISO-8895-2 ('.rcube_label('easterneuropean').')',
- 'ISO-8859-4' => 'ISO-8895-4 ('.rcube_label('baltic').')',
+ 'ISO-8859-2' => 'ISO-8859-2 ('.rcube_label('easterneuropean').')',
+ 'ISO-8859-4' => 'ISO-8859-4 ('.rcube_label('baltic').')',
'ISO-8859-5' => 'ISO-8859-5 ('.rcube_label('cyrillic').')',
'ISO-8859-6' => 'ISO-8859-6 ('.rcube_label('arabic').')',
'ISO-8859-7' => 'ISO-8859-7 ('.rcube_label('greek').')',
diff --git a/program/js/app.js b/program/js/app.js
index 346f4e44e..38141a92f 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -1006,15 +1006,9 @@ function rcube_webmail()
// user settings commands
case 'preferences':
- this.goto_url('');
- break;
-
case 'identities':
- this.goto_url('settings/identities');
- break;
-
case 'folders':
- this.goto_url('settings/folders');
+ this.goto_url('settings/' + command);
break;
// unified command call (command name == function name)
@@ -1701,7 +1695,7 @@ function rcube_webmail()
var action = flags.mbox == this.env.drafts_mailbox ? 'compose' : 'show';
var uid_param = flags.mbox == this.env.drafts_mailbox ? '_draft_uid' : '_uid';
cols.subject = '<a href="./?_task=mail&_action='+action+'&_mbox='+urlencode(flags.mbox)+'&'+uid_param+'='+uid+'"'+
- ' onclick="return rcube_event.cancel(event)">'+cols.subject+'</a>';
+ ' onclick="return rcube_event.cancel(event)" onmouseover="rcube_webmail.long_subject_title(this,'+(message.depth+1)+')">'+cols.subject+'</a>';
}
// add each submitted col
@@ -3777,6 +3771,9 @@ function rcube_webmail()
this.show_contentframe(false);
}
+ if (this.env.group)
+ qs += '&_gid='+urlencode(this.env.group);
+
// also send search request to get the right records from the next page
if (this.env.search_request)
qs += '&_search='+this.env.search_request;
@@ -4309,6 +4306,14 @@ function rcube_webmail()
}
};
+ // disables subscription checkbox (for protected folder)
+ this.disable_subscription = function(folder)
+ {
+ var id = this.get_folder_row_id(folder);
+ if (id)
+ $('input[name="_subscribed[]"]', $('#'+id)).attr('disabled', true);
+ };
+
this.folder_size = function(folder)
{
var lock = this.set_busy(true, 'loading');
@@ -4666,6 +4671,7 @@ function rcube_webmail()
}
th.appendChild(tr);
thead.parentNode.replaceChild(th, thead);
+ thead = th;
}
for (n=0, len=this.env.coltypes.length; n<len; n++) {
@@ -5288,6 +5294,17 @@ function rcube_webmail()
} // end object rcube_webmail
+
+// some static methods
+rcube_webmail.long_subject_title = function(elem, indent)
+{
+ if (!elem.title) {
+ var $elem = $(elem);
+ if ($elem.width() + indent * 15 > $elem.parent().width())
+ elem.title = $elem.html();
+ }
+};
+
// copy event engine prototype
rcube_webmail.prototype.addEventListener = rcube_event_engine.prototype.addEventListener;
rcube_webmail.prototype.removeEventListener = rcube_event_engine.prototype.removeEventListener;
diff --git a/program/js/tiny_mce/themes/advanced/langs/sv_dlg.js b/program/js/tiny_mce/themes/advanced/langs/sv_dlg.js
index 12a5941a0..a9b93de4f 100755
--- a/program/js/tiny_mce/themes/advanced/langs/sv_dlg.js
+++ b/program/js/tiny_mce/themes/advanced/langs/sv_dlg.js
@@ -42,8 +42,8 @@ image_align_right:"H\u00F6ger",
link_title:"Infoga/redigera l\u00E4nk",
link_url:"L\u00E4nkens URL",
link_target:"M\u00E5l",
-link_target_same:"\u00D6\u0096ppna l\u00E4nken i samma f\u00F6nster",
-link_target_blank:"\u00D6\u0096ppna l\u00E4nken i ett nytt f\u00F6nster",
+link_target_same:"\u00D6ppna l\u00E4nken i samma f\u00F6nster",
+link_target_blank:"\u00D6ppna l\u00E4nken i ett nytt f\u00F6nster",
link_titlefield:"Titel",
link_is_email:"L\u00E4nken du angav verkar vara en e-post adress. Vill du infoga mailto: prefixet p\u00E5 l\u00E4nken?",
link_is_external:"L\u00E4nken du angav verkar vara en extern adress. Vill du infoga http:// prefixet p\u00E5 l\u00E4nken?",
diff --git a/program/lib/Net/IDNA2.php b/program/lib/Net/IDNA2.php
index 0c5f3526b..8c366fb8a 100644
--- a/program/lib/Net/IDNA2.php
+++ b/program/lib/Net/IDNA2.php
@@ -49,11 +49,11 @@ require_once 'Net/IDNA2/Exception/Nameprep.php';
*
* ACE input and output is always expected to be ASCII.
*
+ * @package Net
* @author Markus Nix <mnix@docuverse.de>
* @author Matthias Sommerfeld <mso@phlylabs.de>
* @author Stefan Neufeind <pear.neufeind@speedpartner.de>
- * @package Net
- * @version $Id: IDNA2.php 301175 2010-07-12 03:31:17Z clockwerx $
+ * @version $Id: IDNA2.php 305344 2010-11-14 23:52:42Z neufeind $
*/
class Net_IDNA2
{
@@ -1124,8 +1124,8 @@ class Net_IDNA2
0x33BE => array(0x6B, 0x77),
0x33BF => array(0x6D, 0x77),
0x33C0 => array(0x6B, 0x3C9),
- 0x33C1 => array(0x6D, 0x3C9), /*
- 0x33C2 => array(0x61, 0x2E, 0x6D, 0x2E), */
+ 0x33C1 => array(0x6D, 0x3C9),
+ /* 0x33C2 => array(0x61, 0x2E, 0x6D, 0x2E), */
0x33C3 => array(0x62, 0x71),
0x33C6 => array(0x63, 0x2215, 0x6B, 0x67),
0x33C7 => array(0x63, 0x6F, 0x2E),
@@ -2194,6 +2194,20 @@ class Net_IDNA2
private $_strict_mode = false;
/**
+ * IDNA-version to use
+ *
+ * Values are "2003" and "2008".
+ * Defaults to "2003", since that was the original version and for
+ * compatibility with previous versions of this library.
+ * If you need to encode "new" characters like the German "Eszett",
+ * please switch to 2008 first before encoding.
+ *
+ * @var bool
+ * @access private
+ */
+ private $_version = '2003';
+
+ /**
* Cached value indicating whether or not mbstring function overloading is
* on for strlen
*
@@ -2210,7 +2224,8 @@ class Net_IDNA2
/**
* Constructor
*
- * @param array $options
+ * @param array $options Options to initialise the object with
+ *
* @access public
* @see setParams()
*/
@@ -2243,10 +2258,11 @@ class Net_IDNA2
* on failures; false: loose mode, ideal for "wildlife" applications
* by silently ignoring errors and returning the original input instead]
*
- * @param mixed $option Parameter to set (string: single parameter; array of Parameter => Value pairs)
- * @param string $value Value to use (if parameter 1 is a string)
- * @return boolean true on success, false otherwise
- * @access public
+ * @param mixed $option Parameter to set (string: single parameter; array of Parameter => Value pairs)
+ * @param string $value Value to use (if parameter 1 is a string)
+ *
+ * @return boolean true on success, false otherwise
+ * @access public
*/
public function setParams($option, $value = false)
{
@@ -2278,6 +2294,14 @@ class Net_IDNA2
$this->_strict_mode = ($v) ? true : false;
break;
+ case 'version':
+ if (in_array($v, array('2003', '2008'))) {
+ $this->_version = $v;
+ } else {
+ throw new InvalidArgumentException('Set Parameter: Invalid parameter '.$v.' for option '.$k);
+ }
+ break;
+
default:
return false;
}
@@ -2289,12 +2313,14 @@ class Net_IDNA2
/**
* Encode a given UTF-8 domain name.
*
- * @param string $decoded Domain name (UTF-8 or UCS-4)
- * [@param string $encoding Desired input encoding, see {@link set_parameter}]
- * @return string Encoded Domain name (ACE string)
- * @return mixed processed string
- * @throws Exception
- * @access public
+ * @param string $decoded Domain name (UTF-8 or UCS-4)
+ * @param string $one_time_encoding Desired input encoding, see {@link set_parameter}
+ * If not given will use default-encoding
+ *
+ * @return string Encoded Domain name (ACE string)
+ * @return mixed processed string
+ * @throws Exception
+ * @access public
*/
public function encode($decoded, $one_time_encoding = false)
{
@@ -2305,9 +2331,9 @@ class Net_IDNA2
$decoded = $this->_utf8_to_ucs4($decoded);
break;
case 'ucs4_string':
- $decoded = $this->_ucs4_string_to_ucs4($decoded);
+ $decoded = $this->_ucs4_string_to_ucs4($decoded);
case 'ucs4_array': // No break; before this line. Catch case, but do nothing
- break;
+ break;
default:
throw new InvalidArgumentException('Unsupported input format');
}
@@ -2338,7 +2364,7 @@ class Net_IDNA2
case 0x40:
// Neither email addresses nor URLs allowed in strict mode
if ($this->_strict_mode) {
- throw new InvalidArgumentException('Neither email addresses nor URLs are allowed in strict mode.');
+ throw new InvalidArgumentException('Neither email addresses nor URLs are allowed in strict mode.');
}
// Skip first char
if ($k) {
@@ -2377,11 +2403,12 @@ class Net_IDNA2
/**
* Decode a given ACE domain name.
*
- * @param string $encoded Domain name (ACE string)
- * @param string $encoding Desired output encoding, see {@link set_parameter}
- * @return string Decoded Domain name (UTF-8 or UCS-4)
- * @throws Exception
- * @access public
+ * @param string $input Domain name (ACE string)
+ * @param string $one_time_encoding Desired output encoding, see {@link set_parameter}
+ *
+ * @return string Decoded Domain name (UTF-8 or UCS-4)
+ * @throws Exception
+ * @access public
*/
public function decode($input, $one_time_encoding = false)
{
@@ -2430,7 +2457,7 @@ class Net_IDNA2
if (isset($parsed['scheme'])) {
$parsed['scheme'] .= (strtolower($parsed['scheme']) == 'mailto') ? ':' : '://';
}
- $return = join('', $parsed);
+ $return = $this->_unparse_url($parsed);
} else { // parse_url seems to have failed, try without it
$arr = explode('.', $input);
foreach ($arr as $k => $v) {
@@ -2449,8 +2476,8 @@ class Net_IDNA2
return $return;
break;
case 'ucs4_string':
- return $this->_ucs4_to_ucs4_string($this->_utf8_to_ucs4($return));
- break;
+ return $this->_ucs4_to_ucs4_string($this->_utf8_to_ucs4($return));
+ break;
case 'ucs4_array':
return $this->_utf8_to_ucs4($return);
break;
@@ -2462,11 +2489,49 @@ class Net_IDNA2
// {{{ private
/**
+ * Opposite function to parse_url()
+ *
+ * Inspired by code from comments of php.net-documentation for parse_url()
+ *
+ * @param array $parts_arr parts (strings) as returned by parse_url()
+ *
+ * @return string
+ * @access private
+ */
+ private function _unparse_url($parts_arr)
+ {
+ if (!empty($parts_arr['scheme'])) {
+ $ret_url = $parts_arr['scheme'];
+ }
+ if (!empty($parts_arr['user'])) {
+ $ret_url .= $parts_arr['user'];
+ if (!empty($parts_arr['pass'])) {
+ $ret_url .= ':' . $parts_arr['pass'];
+ }
+ $ret_url .= '@';
+ }
+ $ret_url .= $parts_arr['host'];
+ if (!empty($parts_arr['port'])) {
+ $ret_url .= ':' . $parts_arr['port'];
+ }
+ $ret_url .= $parts_arr['path'];
+ if (!empty($parts_arr['query'])) {
+ $ret_url .= '?' . $parts_arr['query'];
+ }
+ if (!empty($parts_arr['fragment'])) {
+ $ret_url .= '#' . $parts_arr['fragment'];
+ }
+ return $ret_url;
+ }
+
+ /**
* The actual encoding algorithm.
*
- * @return string
- * @throws Exception
- * @access private
+ * @param string $decoded Decoded string which should be encoded
+ *
+ * @return string Encoded string
+ * @throws Exception
+ * @access private
*/
private function _encode($decoded)
{
@@ -2517,9 +2582,10 @@ class Net_IDNA2
$test = $decoded[$i];
// Will match [0-9a-zA-Z-]
if ((0x2F < $test && $test < 0x40)
- || (0x40 < $test && $test < 0x5B)
- || (0x60 < $test && $test <= 0x7B)
- || (0x2D == $test)) {
+ || (0x40 < $test && $test < 0x5B)
+ || (0x60 < $test && $test <= 0x7B)
+ || (0x2D == $test)
+ ) {
$encoded .= chr($decoded[$i]);
$codecount++;
}
@@ -2592,9 +2658,11 @@ class Net_IDNA2
/**
* The actual decoding algorithm.
*
- * @return string
- * @throws Exception
- * @access private
+ * @param string $encoded Encoded string which should be decoded
+ *
+ * @return string Decoded string
+ * @throws Exception
+ * @access private
*/
private function _decode($encoded)
{
@@ -2667,7 +2735,12 @@ class Net_IDNA2
/**
* Adapt the bias according to the current code point and position.
*
- * @access private
+ * @param int $delta ...
+ * @param int $npoints ...
+ * @param boolean $is_first ...
+ *
+ * @return int
+ * @access private
*/
private function _adapt($delta, $npoints, $is_first)
{
@@ -2684,7 +2757,10 @@ class Net_IDNA2
/**
* Encoding a certain digit.
*
- * @access private
+ * @param int $d One digit to encode
+ *
+ * @return char Encoded digit
+ * @access private
*/
private function _encodeDigit($d)
{
@@ -2694,7 +2770,10 @@ class Net_IDNA2
/**
* Decode a certain digit.
*
- * @access private
+ * @param char $cp One digit (character) to decode
+ *
+ * @return int Decoded digit
+ * @access private
*/
private function _decodeDigit($cp)
{
@@ -2705,10 +2784,11 @@ class Net_IDNA2
/**
* Do Nameprep according to RFC3491 and RFC3454.
*
- * @param array $input Unicode Characters
- * @return string Unicode Characters, Nameprep'd
- * @throws Exception
- * @access private
+ * @param array $input Unicode Characters
+ *
+ * @return string Unicode Characters, Nameprep'd
+ * @throws Exception
+ * @access private
*/
private function _nameprep($input)
{
@@ -2740,7 +2820,9 @@ class Net_IDNA2
foreach ($this->_hangulDecompose($v) as $out) {
$output[] = $out;
}
- } else if (isset(self::$_np_replacemaps[$v])) { // There's a decomposition mapping for that code point
+ } else if (($this->_version == '2003') && isset(self::$_np_replacemaps[$v])) {
+ // There's a decomposition mapping for that code point
+ // Decompositions only in version 2003 (original) of IDNA
foreach ($this->_applyCannonicalOrdering(self::$_np_replacemaps[$v]) as $out) {
$output[] = $out;
}
@@ -2800,10 +2882,11 @@ class Net_IDNA2
* Decomposes a Hangul syllable
* (see http://www.unicode.org/unicode/reports/tr15/#Hangul).
*
- * @param integer $char 32bit UCS4 code point
- * @return array Either Hangul Syllable decomposed or original 32bit
- * value as one value array
- * @access private
+ * @param integer $char 32bit UCS4 code point
+ *
+ * @return array Either Hangul Syllable decomposed or original 32bit
+ * value as one value array
+ * @access private
*/
private function _hangulDecompose($char)
{
@@ -2829,9 +2912,10 @@ class Net_IDNA2
* Ccomposes a Hangul syllable
* (see http://www.unicode.org/unicode/reports/tr15/#Hangul).
*
- * @param array $input Decomposed UCS4 sequence
- * @return array UCS4 sequence with syllables composed
- * @access private
+ * @param array $input Decomposed UCS4 sequence
+ *
+ * @return array UCS4 sequence with syllables composed
+ * @access private
*/
private function _hangulCompose($input)
{
@@ -2893,9 +2977,10 @@ class Net_IDNA2
/**
* Returns the combining class of a certain wide char.
*
- * @param integer $char Wide char to check (32bit integer)
- * @return integer Combining class if found, else 0
- * @access private
+ * @param integer $char Wide char to check (32bit integer)
+ *
+ * @return integer Combining class if found, else 0
+ * @access private
*/
private function _getCombiningClass($char)
{
@@ -2905,9 +2990,10 @@ class Net_IDNA2
/**
* Apllies the cannonical ordering of a decomposed UCS4 sequence.
*
- * @param array $input Decomposed UCS4 sequence
- * @return array Ordered USC4 sequence
- * @access private
+ * @param array $input Decomposed UCS4 sequence
+ *
+ * @return array Ordered USC4 sequence
+ * @access private
*/
private function _applyCannonicalOrdering($input)
{
@@ -2948,9 +3034,10 @@ class Net_IDNA2
/**
* Do composition of a sequence of starter and non-starter.
*
- * @param array $input UCS4 Decomposed sequence
- * @return array Ordered USC4 sequence
- * @access private
+ * @param array $input UCS4 Decomposed sequence
+ *
+ * @return array Ordered USC4 sequence
+ * @access private
*/
private function _combine($input)
{
@@ -3011,7 +3098,11 @@ class Net_IDNA2
*
* Each x represents a bit that can be used to store character data.
*
- * @access private
+ * @param string $input utf8-encoded string
+ *
+ * @return array ucs4-encoded array
+ * @throws Exception
+ * @access private
*/
private function _utf8_to_ucs4($input)
{
@@ -3082,10 +3173,13 @@ class Net_IDNA2
}
/**
- * Convert UCS-4 array into UTF-8 string.
+ * Convert UCS-4 array into UTF-8 string
*
- * @throws Exception
- * @access private
+ * @param array $input ucs4-encoded array
+ *
+ * @return string utf8-encoded string
+ * @throws Exception
+ * @access private
*/
private function _ucs4_to_utf8($input)
{
@@ -3138,8 +3232,11 @@ class Net_IDNA2
/**
* Convert UCS-4 array into UCS-4 string
*
- * @throws Exception
- * @access private
+ * @param array $input ucs4-encoded array
+ *
+ * @return string ucs4-encoded string
+ * @throws Exception
+ * @access private
*/
private function _ucs4_to_ucs4_string($input)
{
@@ -3153,10 +3250,13 @@ class Net_IDNA2
}
/**
- * Convert UCS-4 strin into UCS-4 garray
+ * Convert UCS-4 string into UCS-4 array
*
- * @throws InvalidArgumentException
- * @access private
+ * @param string $input ucs4-encoded string
+ *
+ * @return array ucs4-encoded array
+ * @throws InvalidArgumentException
+ * @access private
*/
private function _ucs4_string_to_ucs4($input)
{
@@ -3187,11 +3287,12 @@ class Net_IDNA2
/**
* Echo hex representation of UCS4 sequence.
*
- * @param array $input UCS4 sequence
- * @param boolean $include_bit Include bitmask in output
- * @return void
+ * @param array $input UCS4 sequence
+ * @param boolean $include_bit Include bitmask in output
+ *
+ * @return void
* @static
- * @access private
+ * @access private
*/
private static function _showHex($input, $include_bit = false)
{
@@ -3210,8 +3311,11 @@ class Net_IDNA2
* Gives you a bit representation of given Byte (8 bits), Word (16 bits) or DWord (32 bits)
* Output width is automagically determined
*
+ * @param int $octet ...
+ *
+ * @return string Bitmask-representation
* @static
- * @access private
+ * @access private
*/
private static function _showBitmask($octet)
{
@@ -3226,7 +3330,7 @@ class Net_IDNA2
$return = '';
for ($i = $w; $i > -1; $i--) {
- $return .= ($octet & (1 << $i))? 1 : '0';
+ $return .= ($octet & (1 << $i))? '1' : '0';
}
return $return;
diff --git a/program/lib/Net/Socket.php b/program/lib/Net/Socket.php
index c86ac919c..dd1047c43 100644
--- a/program/lib/Net/Socket.php
+++ b/program/lib/Net/Socket.php
@@ -1,39 +1,51 @@
<?php
-//
-// +----------------------------------------------------------------------+
-// | PHP Version 4 |
-// +----------------------------------------------------------------------+
-// | Copyright (c) 1997-2003 The PHP Group |
-// +----------------------------------------------------------------------+
-// | This source file is subject to version 2.0 of the PHP license, |
-// | that is bundled with this package in the file LICENSE, and is |
-// | available at through the world-wide-web at |
-// | http://www.php.net/license/2_02.txt. |
-// | If you did not receive a copy of the PHP license and are unable to |
-// | obtain it through the world-wide-web, please send a note to |
-// | license@php.net so we can mail you a copy immediately. |
-// +----------------------------------------------------------------------+
-// | Authors: Stig Bakken <ssb@php.net> |
-// | Chuck Hagenbuch <chuck@horde.org> |
-// +----------------------------------------------------------------------+
-//
-// $Id$
+/**
+ * Net_Socket
+ *
+ * PHP Version 4
+ *
+ * Copyright (c) 1997-2003 The PHP Group
+ *
+ * This source file is subject to version 2.0 of the PHP license,
+ * that is bundled with this package in the file LICENSE, and is
+ * available at through the world-wide-web at
+ * http://www.php.net/license/2_02.txt.
+ * If you did not receive a copy of the PHP license and are unable to
+ * obtain it through the world-wide-web, please send a note to
+ * license@php.net so we can mail you a copy immediately.
+ *
+ * Authors: Stig Bakken <ssb@php.net>
+ * Chuck Hagenbuch <chuck@horde.org>
+ *
+ * @category Net
+ * @package Net_Socket
+ * @author Stig Bakken <ssb@php.net>
+ * @author Chuck Hagenbuch <chuck@horde.org>
+ * @copyright 1997-2003 The PHP Group
+ * @license http://www.php.net/license/2_02.txt PHP 2.02
+ * @version CVS: $Id$
+ * @link http://pear.php.net/packages/Net_Socket
+ */
require_once 'PEAR.php';
-define('NET_SOCKET_READ', 1);
+define('NET_SOCKET_READ', 1);
define('NET_SOCKET_WRITE', 2);
define('NET_SOCKET_ERROR', 4);
/**
* Generalized Socket class.
*
- * @version 1.1
- * @author Stig Bakken <ssb@php.net>
- * @author Chuck Hagenbuch <chuck@horde.org>
+ * @category Net
+ * @package Net_Socket
+ * @author Stig Bakken <ssb@php.net>
+ * @author Chuck Hagenbuch <chuck@horde.org>
+ * @copyright 1997-2003 The PHP Group
+ * @license http://www.php.net/license/2_02.txt PHP 2.02
+ * @link http://pear.php.net/packages/Net_Socket
*/
-class Net_Socket extends PEAR {
-
+class Net_Socket extends PEAR
+{
/**
* Socket file pointer.
* @var resource $fp
@@ -79,22 +91,29 @@ class Net_Socket extends PEAR {
var $lineLength = 2048;
/**
+ * The string to use as a newline terminator. Usually "\r\n" or "\n".
+ * @var string $newline
+ */
+ var $newline = "\r\n";
+
+ /**
* Connect to the specified port. If called when the socket is
* already connected, it disconnects and connects again.
*
- * @param string $addr IP address or host name.
- * @param integer $port TCP port number.
- * @param boolean $persistent (optional) Whether the connection is
- * persistent (kept open between requests
- * by the web server).
- * @param integer $timeout (optional) How long to wait for data.
- * @param array $options See options for stream_context_create.
+ * @param string $addr IP address or host name.
+ * @param integer $port TCP port number.
+ * @param boolean $persistent (optional) Whether the connection is
+ * persistent (kept open between requests
+ * by the web server).
+ * @param integer $timeout (optional) How long to wait for data.
+ * @param array $options See options for stream_context_create.
*
* @access public
*
* @return boolean | PEAR_Error True on success or a PEAR_Error on failure.
*/
- function connect($addr, $port = 0, $persistent = null, $timeout = null, $options = null)
+ function connect($addr, $port = 0, $persistent = null,
+ $timeout = null, $options = null)
{
if (is_resource($this->fp)) {
@fclose($this->fp);
@@ -121,9 +140,11 @@ class Net_Socket extends PEAR {
}
$openfunc = $this->persistent ? 'pfsockopen' : 'fsockopen';
- $errno = 0;
- $errstr = '';
+ $errno = 0;
+ $errstr = '';
+
$old_track_errors = @ini_set('track_errors', 1);
+
if ($options && function_exists('stream_context_create')) {
if ($this->timeout) {
$timeout = $this->timeout;
@@ -134,22 +155,30 @@ class Net_Socket extends PEAR {
// Since PHP 5 fsockopen doesn't allow context specification
if (function_exists('stream_socket_client')) {
- $flags = $this->persistent ? STREAM_CLIENT_PERSISTENT : STREAM_CLIENT_CONNECT;
+ $flags = STREAM_CLIENT_CONNECT;
+
+ if ($this->persistent) {
+ $flags = STREAM_CLIENT_PERSISTENT;
+ }
+
$addr = $this->addr . ':' . $this->port;
- $fp = stream_socket_client($addr, $errno, $errstr, $timeout, $flags, $context);
+ $fp = stream_socket_client($addr, $errno, $errstr,
+ $timeout, $flags, $context);
} else {
- $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $timeout, $context);
+ $fp = @$openfunc($this->addr, $this->port, $errno,
+ $errstr, $timeout, $context);
}
} else {
if ($this->timeout) {
- $fp = @$openfunc($this->addr, $this->port, $errno, $errstr, $this->timeout);
+ $fp = @$openfunc($this->addr, $this->port, $errno,
+ $errstr, $this->timeout);
} else {
$fp = @$openfunc($this->addr, $this->port, $errno, $errstr);
}
}
if (!$fp) {
- if ($errno == 0 && isset($php_errormsg)) {
+ if ($errno == 0 && !strlen($errstr) && isset($php_errormsg)) {
$errstr = $php_errormsg;
}
@ini_set('track_errors', $old_track_errors);
@@ -180,6 +209,18 @@ class Net_Socket extends PEAR {
}
/**
+ * Set the newline character/sequence to use.
+ *
+ * @param string $newline Newline character(s)
+ * @return boolean True
+ */
+ function setNewline($newline)
+ {
+ $this->newline = $newline;
+ return true;
+ }
+
+ /**
* Find out if the socket is in blocking mode.
*
* @access public
@@ -196,7 +237,8 @@ class Net_Socket extends PEAR {
* if there is no data available, whereas it will block until there
* is data for blocking sockets.
*
- * @param boolean $mode True for blocking sockets, false for nonblocking.
+ * @param boolean $mode True for blocking sockets, false for nonblocking.
+ *
* @access public
* @return mixed true on success or a PEAR_Error instance otherwise
*/
@@ -207,7 +249,7 @@ class Net_Socket extends PEAR {
}
$this->blocking = $mode;
- socket_set_blocking($this->fp, $this->blocking);
+ stream_set_blocking($this->fp, (int)$this->blocking);
return true;
}
@@ -215,8 +257,9 @@ class Net_Socket extends PEAR {
* Sets the timeout value on socket descriptor,
* expressed in the sum of seconds and microseconds
*
- * @param integer $seconds Seconds.
- * @param integer $microseconds Microseconds.
+ * @param integer $seconds Seconds.
+ * @param integer $microseconds Microseconds.
+ *
* @access public
* @return mixed true on success or a PEAR_Error instance otherwise
*/
@@ -233,7 +276,8 @@ class Net_Socket extends PEAR {
* Sets the file buffering size on the stream.
* See php's stream_set_write_buffer for more information.
*
- * @param integer $size Write buffer size.
+ * @param integer $size Write buffer size.
+ *
* @access public
* @return mixed on success or an PEAR_Error object otherwise
*/
@@ -262,7 +306,8 @@ class Net_Socket extends PEAR {
* </p>
*
* @access public
- * @return mixed Array containing information about existing socket resource or a PEAR_Error instance otherwise
+ * @return mixed Array containing information about existing socket
+ * resource or a PEAR_Error instance otherwise
*/
function getStatus()
{
@@ -276,17 +321,23 @@ class Net_Socket extends PEAR {
/**
* Get a specified line of data
*
+ * @param int $size ??
+ *
* @access public
* @return $size bytes of data from the socket, or a PEAR_Error if
* not connected.
*/
- function gets($size)
+ function gets($size = null)
{
if (!is_resource($this->fp)) {
return $this->raiseError('not connected');
}
- return @fgets($this->fp, $size);
+ if (is_null($size)) {
+ return @fgets($this->fp);
+ } else {
+ return @fgets($this->fp, $size);
+ }
}
/**
@@ -295,7 +346,8 @@ class Net_Socket extends PEAR {
* chunk; if you know the size of the data you're getting
* beforehand, this is definitely the way to go.
*
- * @param integer $size The number of bytes to read from the socket.
+ * @param integer $size The number of bytes to read from the socket.
+ *
* @access public
* @return $size bytes of data from the socket, or a PEAR_Error if
* not connected.
@@ -312,12 +364,13 @@ class Net_Socket extends PEAR {
/**
* Write a specified amount of data.
*
- * @param string $data Data to write.
- * @param integer $blocksize Amount of data to write at once.
- * NULL means all at once.
+ * @param string $data Data to write.
+ * @param integer $blocksize Amount of data to write at once.
+ * NULL means all at once.
*
* @access public
- * @return mixed If the socket is not connected, returns an instance of PEAR_Error
+ * @return mixed If the socket is not connected, returns an instance of
+ * PEAR_Error
* If the write succeeds, returns the number of bytes written
* If the write fails, returns false.
*/
@@ -334,12 +387,12 @@ class Net_Socket extends PEAR {
$blocksize = 1024;
}
- $pos = 0;
+ $pos = 0;
$size = strlen($data);
while ($pos < $size) {
$written = @fwrite($this->fp, substr($data, $pos, $blocksize));
- if ($written === false) {
- return false;
+ if (!$written) {
+ return $written;
}
$pos += $written;
}
@@ -349,7 +402,9 @@ class Net_Socket extends PEAR {
}
/**
- * Write a line of data to the socket, followed by a trailing "\r\n".
+ * Write a line of data to the socket, followed by a trailing newline.
+ *
+ * @param string $data Data to write
*
* @access public
* @return mixed fputs result, or an error
@@ -360,7 +415,7 @@ class Net_Socket extends PEAR {
return $this->raiseError('not connected');
}
- return fwrite($this->fp, $data . "\r\n");
+ return fwrite($this->fp, $data . $this->newline);
}
/**
@@ -441,7 +496,7 @@ class Net_Socket extends PEAR {
}
$string = '';
- while (($char = @fread($this->fp, 1)) != "\x00") {
+ while (($char = @fread($this->fp, 1)) != "\x00") {
$string .= $char;
}
return $string;
@@ -481,11 +536,13 @@ class Net_Socket extends PEAR {
}
$line = '';
+
$timeout = time() + $this->timeout;
+
while (!feof($this->fp) && (!$this->timeout || time() < $timeout)) {
$line .= @fgets($this->fp, $this->lineLength);
if (substr($line, -1) == "\n") {
- return rtrim($line, "\r\n");
+ return rtrim($line, $this->newline);
}
}
return $line;
@@ -521,9 +578,9 @@ class Net_Socket extends PEAR {
* Runs the equivalent of the select() system call on the socket
* with a timeout specified by tv_sec and tv_usec.
*
- * @param integer $state Which of read/write/error to check for.
- * @param integer $tv_sec Number of seconds for timeout.
- * @param integer $tv_usec Number of microseconds for timeout.
+ * @param integer $state Which of read/write/error to check for.
+ * @param integer $tv_sec Number of seconds for timeout.
+ * @param integer $tv_usec Number of microseconds for timeout.
*
* @access public
* @return False if select fails, integer describing which of read/write/error
@@ -535,8 +592,8 @@ class Net_Socket extends PEAR {
return $this->raiseError('not connected');
}
- $read = null;
- $write = null;
+ $read = null;
+ $write = null;
$except = null;
if ($state & NET_SOCKET_READ) {
$read[] = $this->fp;
@@ -547,7 +604,8 @@ class Net_Socket extends PEAR {
if ($state & NET_SOCKET_ERROR) {
$except[] = $this->fp;
}
- if (false === ($sr = stream_select($read, $write, $except, $tv_sec, $tv_usec))) {
+ if (false === ($sr = stream_select($read, $write, $except,
+ $tv_sec, $tv_usec))) {
return false;
}
@@ -567,15 +625,17 @@ class Net_Socket extends PEAR {
/**
* Turns encryption on/off on a connected socket.
*
- * @param bool $enabled Set this parameter to true to enable encryption
- * and false to disable encryption.
- * @param integer $type Type of encryption. See
- * http://se.php.net/manual/en/function.stream-socket-enable-crypto.php for values.
+ * @param bool $enabled Set this parameter to true to enable encryption
+ * and false to disable encryption.
+ * @param integer $type Type of encryption. See stream_socket_enable_crypto()
+ * for values.
*
+ * @see http://se.php.net/manual/en/function.stream-socket-enable-crypto.php
* @access public
- * @return false on error, true on success and 0 if there isn't enough data and the
- * user should try again (non-blocking sockets only). A PEAR_Error object
- * is returned if the socket is not connected
+ * @return false on error, true on success and 0 if there isn't enough data
+ * and the user should try again (non-blocking sockets only).
+ * A PEAR_Error object is returned if the socket is not
+ * connected
*/
function enableCrypto($enabled, $type)
{
@@ -585,7 +645,8 @@ class Net_Socket extends PEAR {
}
return @stream_socket_enable_crypto($this->fp, $enabled, $type);
} else {
- return $this->raiseError('Net_Socket::enableCrypto() requires php version >= 5.1.0');
+ $msg = 'Net_Socket::enableCrypto() requires php version >= 5.1.0';
+ return $this->raiseError($msg);
}
}
diff --git a/program/localization/az_AZ/labels.inc b/program/localization/az_AZ/labels.inc
index ce515e2d4..3d609e33a 100644
--- a/program/localization/az_AZ/labels.inc
+++ b/program/localization/az_AZ/labels.inc
@@ -36,11 +36,12 @@ $labels['to'] = 'Kimə';
$labels['cc'] = 'Nüsxə';
$labels['bcc'] = 'Gizli';
$labels['replyto'] = 'Cavabla';
+$labels['followupto'] = 'İzlə';
$labels['date'] = 'Tarix';
$labels['size'] = 'Ölçü';
$labels['priority'] = 'Vaciblik';
$labels['organization'] = 'Təşkilat';
-$labels['reply-to'] = 'Cavab ünvanı';
+$labels['readstatus'] = 'Statusu oxu';
$labels['mailboxlist'] = 'Qovluqlar';
$labels['messagesfromto'] = '$count mesajdan $from - $to arası mesajlar';
$labels['threadsfromto'] = 'Müzakirə: $from - $to Toplam: $count';
@@ -95,6 +96,8 @@ $labels['checkmail'] = 'Gələnləri yoxla';
$labels['writenewmessage'] = 'Yeni məktub';
$labels['replytomessage'] = 'Göndərənə cavabla';
$labels['replytoallmessage'] = 'Hamıya cavabla';
+$labels['replyall'] = 'Hamıya cavab';
+$labels['replylist'] = 'Cavab siyahısı';
$labels['forwardmessage'] = 'Yönəlt';
$labels['deletemessage'] = 'Sil';
$labels['movemessagetotrash'] = 'Məktubu səbətə köçür';
@@ -149,7 +152,6 @@ $labels['listmode'] = 'Görünüş rejimi';
$labels['folderactions'] = 'Qovluq işləri...';
$labels['compact'] = 'Sıx';
$labels['empty'] = 'Boşalt';
-$labels['purge'] = 'Təmizlə';
$labels['quota'] = 'Disk istifadəsi';
$labels['unknown'] = 'naməlum';
$labels['unlimited'] = 'limitsiz';
@@ -167,6 +169,8 @@ $labels['addattachment'] = 'Fayl əlavə et';
$labels['charset'] = 'Kodlaşdırma';
$labels['editortype'] = 'Redaktor';
$labels['returnreceipt'] = 'Cavab sorğusu';
+$labels['dsn'] = 'Çatdırılma statusu haqda bildiriş';
+$labels['editidents'] = 'İdentifikasiyanı dəyiş';
$labels['checkspelling'] = 'Orfoqrafiyanı yoxla';
$labels['resumeediting'] = 'Redaktəni davam et';
$labels['revertto'] = 'Dəyişiklikləri ləğv et';
@@ -190,6 +194,7 @@ $labels['maxuploadsize'] = 'Faylın maksimal ölçüsü: $size';
$labels['addcc'] = 'Kopya əlavə et';
$labels['addbcc'] = 'Gizli kopya əlavə et';
$labels['addreplyto'] = 'Yönəltmə əlavə et';
+$labels['addfollowupto'] = '"İzlə" əlavə et';
$labels['mdnrequest'] = 'Məktubu göndərən onu oxuduğunuz haqda sorğu almaq istəyir. Göndərilsin?';
$labels['receiptread'] = 'Oxunulma haqda soğru';
$labels['yourmessage'] = 'Bu məktubunuzun oxunulduğu haqda sorğudur';
@@ -197,14 +202,45 @@ $labels['receiptnote'] = 'Bu sorğu yalnız qəbul edilən tərəfindən məktub
$labels['name'] = 'Göstərilən ad';
$labels['firstname'] = 'Adı';
$labels['surname'] = 'Soyadı';
+$labels['middlename'] = 'Orta adı';
+$labels['nameprefix'] = 'Prefiks';
+$labels['namesuffix'] = 'Suffiks';
+$labels['nickname'] = 'Ləqəb';
+$labels['jobtitle'] = 'Vəzifə';
+$labels['department'] = 'Departament';
+$labels['gender'] = 'Cins';
+$labels['maidenname'] = 'Qız adı';
$labels['email'] = 'E-Poçt';
+$labels['phone'] = 'Telefon';
+$labels['address'] = 'Ünvan';
+$labels['street'] = 'Küçə';
+$labels['locality'] = 'Şəhər';
+$labels['zipcode'] = 'ZIP kod';
+$labels['region'] = 'Region';
+$labels['country'] = 'Ölkə';
+$labels['birthday'] = 'Ad günü';
+$labels['anniversary'] = 'İldönümü';
+$labels['website'] = 'Vebsayt';
+$labels['instantmessenger'] = 'IM';
+$labels['notes'] = 'Qeydlər';
+$labels['male'] = 'kişi';
+$labels['female'] = 'qadın';
+$labels['manager'] = 'Menecer';
+$labels['assistant'] = 'Assistent';
+$labels['spouse'] = 'Ər-arvad';
+$labels['addfield'] = 'Sahə əlavə et';
$labels['addcontact'] = 'Ünvanlara əlavə et';
$labels['editcontact'] = 'Ünvanı redaktə et';
$labels['contacts'] = 'Əlaqələr';
+$labels['contactproperties'] = 'Kontakt xüsusiyyətləri';
+$labels['personalinfo'] = 'Şəxsi məlumat';
$labels['edit'] = 'Redaktə et';
$labels['cancel'] = 'Ləğv et';
$labels['save'] = 'Saxla';
$labels['delete'] = 'Sil';
+$labels['rename'] = 'Adlandır';
+$labels['addphoto'] = 'Əlavə et';
+$labels['replacephoto'] = 'Adı dəyiş';
$labels['newcontact'] = 'Yeni ünvan kartı əlavə et';
$labels['deletecontact'] = 'Seçilmiş ünvanları sil';
$labels['composeto'] = 'Seçilmiş ünvanlara məktub yaz';
@@ -248,6 +284,7 @@ $labels['pagesize'] = 'Səhifədə sətrlər';
$labels['signature'] = 'İmza';
$labels['dstactive'] = 'Yay vaxtı';
$labels['htmleditor'] = 'HTML-də mesaj yaz';
+$labels['htmlonreply'] = 'yalnız HTML mesajlar ilə cavab';
$labels['htmlsignature'] = 'HTML imza';
$labels['previewpane'] = 'Prevyu paneli göstər';
$labels['skin'] = 'İnterfeys stili';
@@ -259,6 +296,8 @@ $labels['mailboxview'] = 'Poçt qutusunun görünüşü';
$labels['mdnrequests'] = 'Göndərilmə bildirişi';
$labels['askuser'] = 'göndərilmə zamanı istifadəçidən soruş';
$labels['autosend'] = 'avtomatik göndər';
+$labels['autosendknown'] = 'kontaktlarıma qəbz yolla. Əks halda soruş';
+$labels['autosendknownignore'] = 'kontaktlarıma qəbz yolla. Əks halda iqnor et';
$labels['ignore'] = 'iqnor';
$labels['readwhendeleted'] = 'Məktubu siləndə oxunmuş kimi qeyd et';
$labels['flagfordeletion'] = 'Silmə əvəzi silinmə işarəsilə qeyd et';
@@ -303,6 +342,9 @@ $labels['abovequote'] = 'sitatdan əvvəl';
$labels['insertsignature'] = 'İmza əlavə et';
$labels['previewpanemarkread'] = 'Baxılmış şəkilləri oxunmuş kimi qeyd et';
$labels['afternseconds'] = '$n saniyədən sonra';
+$labels['reqmdn'] = 'Hər zaman çatdırılma bildirişini istə';
+$labels['reqdsn'] = 'Hər zaman çatıdrılma haqda statusu istə';
+$labels['replysamefolder'] = 'Cavab mesajları üçün saxlanılan yer';
$labels['folder'] = 'Qovluq';
$labels['folders'] = 'Qovluqlar';
$labels['foldername'] = 'Qovluq adı';
@@ -312,6 +354,13 @@ $labels['create'] = 'Yarad';
$labels['createfolder'] = 'Yeni qovluq yarad';
$labels['managefolders'] = 'Qovluqlarla iş';
$labels['specialfolders'] = 'Xüsusi qovluqlar';
+$labels['properties'] = 'Xüsusiyyətlər';
+$labels['folderproperties'] = 'Qovluq xüsusiyyətləri';
+$labels['parentfolder'] = 'Ana qovluq';
+$labels['location'] = 'Yerləşmə';
+$labels['info'] = 'Məlumat';
+$labels['getfoldersize'] = 'Qovluq ölçüsünü öyrənmək üçün vur';
+$labels['changesubscription'] = 'Abunəni dəyişmək üçün vurun';
$labels['sortby'] = 'Çeşidlə';
$labels['sortasc'] = 'Azdan çoxa';
$labels['sortdesc'] = 'Çoxdan aza';
diff --git a/program/localization/az_AZ/messages.inc b/program/localization/az_AZ/messages.inc
index dcef7c543..950be1a73 100644
--- a/program/localization/az_AZ/messages.inc
+++ b/program/localization/az_AZ/messages.inc
@@ -21,6 +21,9 @@ $messages['cookiesdisabled'] = 'Sizin brauzer kukiləri qəbul etmir';
$messages['sessionerror'] = 'Sizin sessiya köhnəlib';
$messages['imaperror'] = 'IMAP serverlə bağlantı alınmadı';
$messages['servererror'] = 'Server xətası!';
+$messages['servererrormsg'] = 'Server xətası: $msg';
+$messages['errorreadonly'] = 'Əməliyyatı etmək mümkün deyil. Qovluq yalnız oxunuş üçündür.';
+$messages['errornoperm'] = 'Əməliyyatı etmək mümkün deyil. Giriş qadağandır.';
$messages['invalidrequest'] = 'Səhv sorğu! Məlumat yaddaşda qalmadı.';
$messages['nomessagesfound'] = 'Poçt qutusunda məktub tapılmadı';
$messages['loggedout'] = 'Çıxış uğurlu oldu. Sağ olun!';
@@ -54,6 +57,8 @@ $messages['deletefolderconfirm'] = 'Bu qovluğu silməyə əminsiniz?';
$messages['purgefolderconfirm'] = 'Bu qovluqdakı bütün məktubları silməyə əminsiniz?';
$messages['folderdeleting'] = 'Qovluğ silinir...';
$messages['foldermoving'] = 'Qovluq köçürülür...';
+$messages['foldersubscribing'] = 'Qovluğa abunə...';
+$messages['folderunsubscribing'] = 'Qovluğa abunədən çıx...';
$messages['formincomplete'] = 'Bütün sətrlər doldurulmayıb';
$messages['noemailwarning'] = 'Lütfən, düzgün e-poçt ünvanı daxil edin';
$messages['nonamewarning'] = 'Lütfən, ad daxil edin';
@@ -73,6 +78,10 @@ $messages['searching'] = 'Axtarılır...';
$messages['checking'] = 'Yoxlanılır...';
$messages['nospellerrors'] = 'Orfoqrafik səhvlət tapılmadı';
$messages['folderdeleted'] = 'Qovluq uğurla silindi';
+$messages['foldersubscribed'] = 'Qovluq uğurla abunə oldu';
+$messages['folderunsubscribed'] = 'Qovluq uğurla abunədən çıxdı';
+$messages['folderpurged'] = 'Qovluq uğurla təmizləndi';
+$messages['folderexpunged'] = 'Qovluq uğurla sıxıldı';
$messages['deletedsuccessfully'] = 'Silindi';
$messages['converting'] = 'Məktubun formatlaşması silinir...';
$messages['messageopenerror'] = 'Məktubu serverdən yükləmək alınmır';
@@ -84,6 +93,8 @@ $messages['sourceisreadonly'] = 'Verilən ünvanlar mənbəyi yalnız oxunmaq ü
$messages['errorsavingcontact'] = 'Əlaqəni ünvanda saxlamaq mümkün deyil';
$messages['movingmessage'] = 'Məktub köçürülür...';
$messages['copyingmessage'] = 'Məktub kopyalanır...';
+$messages['deletingmessage'] = 'Məktub(lar) silinir...';
+$messages['markingmessage'] = 'Məktub(lar) işarələnir...';
$messages['receiptsent'] = 'Oxunulma haqda bildiriş göndərildi';
$messages['errorsendingreceipt'] = 'Oxunulma haqda bildiriş göndərilmədi';
$messages['nodeletelastidentity'] = 'Siz bu kimliyi silə bilməzsiniz. Bu axırıncıdır. ';
@@ -104,10 +115,26 @@ $messages['smtpautherror'] = 'SMTP Error ($code): İdentifikasiya xətası';
$messages['smtpfromerror'] = 'SMTP Error ($code): Göndərəni səlavə etmək mümkün deyil - "$from" ($msg)';
$messages['smtptoerror'] = 'SMTP Error ($code): Qəbul edəni əlavə etmək mümkün deyil - "$to" ($msg)';
$messages['smtprecipientserror'] = 'SMTP Error ($code): Qəbul edənlərin siyahısını emal etmək mümkün deyil';
+$messages['smtpdsnerror'] = 'SMTP xəta: çatdırılma haqda bildiriş dəstəyi yoxdur';
$messages['smtperror'] = 'SMTP Error ($code): $msg';
$messages['emailformaterror'] = 'Səhv ünvan: $email';
$messages['toomanyrecipients'] = 'Qəbul edənlər həddindən artıq çoxdur. Lütfən, $max qədər azaldın.';
$messages['maxgroupmembersreached'] = 'Qrupun ölçüsü imkan verilən maksimumdan artıqdır - $max';
$messages['internalerror'] = 'Daxili xəta baş verdi. Lütfən, bir daha cəhd edin';
+$messages['contactdelerror'] = 'Kontak(lar)ı silmək alınmadı';
+$messages['contactdeleted'] = 'Kontak(lar) uğurla silindi';
+$messages['groupdeleted'] = 'Qrup silindi';
+$messages['grouprenamed'] = 'Qrupun adı dəyişdirildi';
+$messages['groupcreated'] = 'Qrup yaradıldı';
+$messages['messagedeleted'] = 'Məktub(lar) uğurla silindi';
+$messages['messagemoved'] = 'Məktub(lar) uğurla köçürüldü';
+$messages['messagecopied'] = 'Məktub(lar) uğurla kopyalandı';
+$messages['messagemarked'] = 'Məktub(lar) uğurla işarələndi';
+$messages['autocompletechars'] = 'Avtokomplektasiya üçün $min işarə daxil edin';
+$messages['namecannotbeempty'] = 'Ad boş ola bilməz';
+$messages['nametoolong'] = 'Ad çox uzundur';
+$messages['folderupdated'] = 'Qovluq yeniləndi';
+$messages['foldercreated'] = 'Qovluq yaradıldı';
+$messages['invalidimageformat'] = 'Şəkil formatı düzgün deyil';
?>
diff --git a/program/localization/bg_BG/labels.inc b/program/localization/bg_BG/labels.inc
index 14ad45aab..bca814f8e 100644
--- a/program/localization/bg_BG/labels.inc
+++ b/program/localization/bg_BG/labels.inc
@@ -45,9 +45,6 @@ $labels['size'] = 'Размер';
$labels['priority'] = 'Приоритет';
$labels['organization'] = 'Организация';
$labels['readstatus'] = 'Статут (прочетено/непрочетено)';
-$labels['reply-to'] = 'Отговор до';
-$labels['mail-reply-to'] = 'Отговор към';
-$labels['mail-followup-to'] = 'Препращане към';
$labels['mailboxlist'] = 'Папки';
$labels['messagesfromto'] = 'Съобщения $from до $to от $count';
$labels['threadsfromto'] = 'Съобщения $from до $to от $count';
@@ -158,7 +155,6 @@ $labels['listmode'] = 'Кратък списък';
$labels['folderactions'] = 'Десйтвия за папки...';
$labels['compact'] = 'Свий';
$labels['empty'] = 'Изпразни';
-$labels['purge'] = 'Изчисти';
$labels['quota'] = 'Използвано място';
$labels['unknown'] = 'няма информация';
$labels['unlimited'] = 'няма ограничение';
@@ -209,15 +205,45 @@ $labels['receiptnote'] = 'Забележка: Тази разписка потв
$labels['name'] = 'Кратко име';
$labels['firstname'] = 'Име';
$labels['surname'] = 'Фамилия';
+$labels['middlename'] = 'Презиме';
+$labels['nameprefix'] = 'Представка (Титла)';
+$labels['namesuffix'] = 'Наставка (Титла)';
+$labels['nickname'] = 'Прякор';
+$labels['jobtitle'] = 'Длъжност';
+$labels['department'] = 'Отдел';
+$labels['gender'] = 'Пол';
+$labels['maidenname'] = 'Бащино име';
$labels['email'] = 'E-Mail';
+$labels['phone'] = 'Телефон';
+$labels['address'] = 'Адрес';
+$labels['street'] = 'Улица';
+$labels['locality'] = 'Град';
+$labels['zipcode'] = 'Пощенски код';
+$labels['region'] = 'Област';
+$labels['country'] = 'Държава';
+$labels['birthday'] = 'Рожден ден';
+$labels['anniversary'] = 'Годишнина';
+$labels['website'] = 'Уебсайт';
+$labels['instantmessenger'] = 'IM';
+$labels['notes'] = 'Бележки';
+$labels['male'] = 'Мъж';
+$labels['female'] = 'Жена';
+$labels['manager'] = 'Мениджър';
+$labels['assistant'] = 'Асистент';
+$labels['spouse'] = 'Съпруг (а)';
+$labels['addfield'] = 'Добави поле';
$labels['addcontact'] = 'Добави';
$labels['editcontact'] = 'Редактирай';
$labels['contacts'] = 'Контакти';
$labels['contactproperties'] = 'Свойства на контакт';
+$labels['personalinfo'] = 'Лична информация';
$labels['edit'] = 'Редактирай';
$labels['cancel'] = 'Отказ';
$labels['save'] = 'Запиши';
$labels['delete'] = 'Изтрий';
+$labels['rename'] = 'Преименувай';
+$labels['addphoto'] = 'Добави';
+$labels['replacephoto'] = 'Замени';
$labels['newcontact'] = 'Нов контакт';
$labels['deletecontact'] = 'Изтрий маркираните контакти';
$labels['composeto'] = 'Напиши писмо до';
@@ -279,7 +305,7 @@ $labels['ignore'] = 'Отхвърли';
$labels['readwhendeleted'] = 'Отбележи като прочетено при изтриване';
$labels['flagfordeletion'] = 'Отбележи съобщението за изтриване';
$labels['skipdeleted'] = 'Не показвай изтритите съобщения';
-$labels['deletealways'] = 'При неуспешн преместване на съобщение в Кошчето, да се изтрие';
+$labels['deletealways'] = 'При неуспешно преместване на съобщение в Кошчето, да се изтрие';
$labels['showremoteimages'] = 'Покажи блокираните изображения';
$labels['fromknownsenders'] = 'Oт познати изпращачи';
$labels['always'] = 'Винаги';
@@ -321,6 +347,7 @@ $labels['previewpanemarkread'] = 'Маркиране на прегледанит
$labels['afternseconds'] = 'след $n секунди';
$labels['reqmdn'] = 'Винаги връщай обратна разписка';
$labels['reqdsn'] = 'Винаги изисквай отговор при доставка на съобщение';
+$labels['replysamefolder'] = 'Постави отговора в папката на съобщението, на което се отговаря';
$labels['folder'] = 'Папка';
$labels['folders'] = 'Папки';
$labels['foldername'] = 'Име на папката';
@@ -330,6 +357,13 @@ $labels['create'] = 'Създай';
$labels['createfolder'] = 'Направи нова папка';
$labels['managefolders'] = 'Настройки на папките';
$labels['specialfolders'] = 'Служебни папки';
+$labels['properties'] = 'Свойства';
+$labels['folderproperties'] = 'Свойства на папката';
+$labels['parentfolder'] = 'Родителска папка';
+$labels['location'] = 'Местоположение';
+$labels['info'] = 'Информация';
+$labels['getfoldersize'] = 'Щракни за големина на папката';
+$labels['changesubscription'] = 'Щракни за промяна на абонамент';
$labels['sortby'] = 'Сортирай по';
$labels['sortasc'] = 'Сортирай възходящо';
$labels['sortdesc'] = 'Сортирай низходящо';
diff --git a/program/localization/bg_BG/messages.inc b/program/localization/bg_BG/messages.inc
index c5bc90f9e..5777b3b6d 100644
--- a/program/localization/bg_BG/messages.inc
+++ b/program/localization/bg_BG/messages.inc
@@ -25,6 +25,8 @@ $messages['sessionerror'] = 'Невалидна или изтекла сесия
$messages['imaperror'] = 'Неуспешно свързване към IMAP сървъра';
$messages['servererror'] = 'Грешка!';
$messages['servererrormsg'] = 'Сървърна грешка: $msg';
+$messages['errorreadonly'] = 'Операцията не може да бъде изпълнена. Папката е с права само за четене';
+$messages['errornoperm'] = 'Операцията не може да бъде изпълнена. Отказани права за достъп';
$messages['invalidrequest'] = 'Невалидна заявка! Данните не са съхранени.';
$messages['nomessagesfound'] = 'Няма съобщения';
$messages['loggedout'] = 'Довиждане!';
@@ -58,6 +60,8 @@ $messages['deletefolderconfirm'] = 'Искате ли да изтриете та
$messages['purgefolderconfirm'] = 'Искате ли да изтриете всички писма в тази папка?';
$messages['folderdeleting'] = 'Изтриване на папка...';
$messages['foldermoving'] = 'Преместване на папка...';
+$messages['foldersubscribing'] = 'Абониране...';
+$messages['folderunsubscribing'] = 'Отписване на папка...';
$messages['formincomplete'] = 'Не сте попълнили всички полета';
$messages['noemailwarning'] = 'Моля, въведете валиден e-mail адрес';
$messages['nonamewarning'] = 'Моля, въведете име';
@@ -77,6 +81,10 @@ $messages['searching'] = 'Търсене...';
$messages['checking'] = 'Проверка...';
$messages['nospellerrors'] = 'Не са открити правописни грешки';
$messages['folderdeleted'] = 'Папката е изтрита';
+$messages['foldersubscribed'] = 'Абонирането успешно';
+$messages['folderunsubscribed'] = 'Отписването успешно';
+$messages['folderpurged'] = 'Папката е изпразнена';
+$messages['folderexpunged'] = 'Уплътняването успешно';
$messages['deletedsuccessfully'] = 'Изтриването е успешно';
$messages['converting'] = 'Премахване форматирането на писмото...';
$messages['messageopenerror'] = 'Писмото не може да бъде заредено от сървъра';
@@ -126,5 +134,10 @@ $messages['messagemoved'] = 'Съобщението беше преместен
$messages['messagecopied'] = 'Съобщението беше копирано';
$messages['messagemarked'] = 'Съобщението беше маркирано';
$messages['autocompletechars'] = 'Въведете минимум $min знака, за да започне автоматичното попълване';
+$messages['namecannotbeempty'] = 'Полето за име не може да бъде празно';
+$messages['nametoolong'] = 'Името е прекалено дълго';
+$messages['folderupdated'] = 'Папката е обновена';
+$messages['foldercreated'] = 'Папката е създадена';
+$messages['invalidimageformat'] = 'Невалиден формат на изображението';
?>
diff --git a/program/localization/da_DK/labels.inc b/program/localization/da_DK/labels.inc
index 3aa1ae44d..53934f7cf 100644
--- a/program/localization/da_DK/labels.inc
+++ b/program/localization/da_DK/labels.inc
@@ -39,11 +39,12 @@ $labels['to'] = 'Modtager';
$labels['cc'] = 'Kopi til';
$labels['bcc'] = 'BCC';
$labels['replyto'] = 'Svar til';
+$labels['followupto'] = 'Følg-op til';
$labels['date'] = 'Dato';
$labels['size'] = 'Størrelse';
$labels['priority'] = 'Prioritet';
$labels['organization'] = 'Organisation';
-$labels['reply-to'] = 'Svar til';
+$labels['readstatus'] = 'Læst status';
$labels['mailboxlist'] = 'Mapper';
$labels['messagesfromto'] = 'Besked $from til $to af $count';
$labels['threadsfromto'] = 'Tråd $from til $to af $count';
@@ -98,6 +99,8 @@ $labels['checkmail'] = 'Se efter nye beskeder';
$labels['writenewmessage'] = 'Skriv en ny besked';
$labels['replytomessage'] = 'Svar på denne besked';
$labels['replytoallmessage'] = 'Svar til alle modtagere';
+$labels['replyall'] = 'Svar alle';
+$labels['replylist'] = 'Svar til listen';
$labels['forwardmessage'] = 'Videresend denne besked';
$labels['deletemessage'] = 'Slet besked';
$labels['movemessagetotrash'] = 'Flyt besked til skrald';
@@ -149,14 +152,15 @@ $labels['listcolumns'] = 'Vist kolonne';
$labels['listsorting'] = 'Sorterings kolonne';
$labels['listorder'] = 'Sorter efter';
$labels['listmode'] = 'Listevisningsmode';
+$labels['folderactions'] = 'Mappe handlinger...';
$labels['compact'] = 'Ryd op';
$labels['empty'] = 'Tøm';
-$labels['purge'] = 'Udrens';
$labels['quota'] = 'Disk forbrug';
$labels['unknown'] = 'ukendt';
$labels['unlimited'] = 'ubegrænset';
$labels['quicksearch'] = 'Hurtigsøgning';
$labels['resetsearch'] = 'Nulstil søgning';
+$labels['searchmod'] = 'Søgeparametere';
$labels['msgtext'] = 'Hele beskeden';
$labels['openinextwin'] = 'Åbn i nyt vindue';
$labels['emlsave'] = 'Download (.eml)';
@@ -168,12 +172,15 @@ $labels['addattachment'] = 'Vedhæft en fil';
$labels['charset'] = 'Tegnsæt';
$labels['editortype'] = 'Tekstbehandler';
$labels['returnreceipt'] = 'Anmod om kvittering';
+$labels['dsn'] = 'Notifikation om leveringstatus';
+$labels['editidents'] = 'Ret identiteter';
$labels['checkspelling'] = 'Stavekontrol';
$labels['resumeediting'] = 'Genoptag redigering';
$labels['revertto'] = 'Vend tilbage til';
$labels['attachments'] = 'Vedhæftninger';
$labels['upload'] = 'Upload';
$labels['close'] = 'Luk';
+$labels['messageoptions'] = 'Besked muligheder...';
$labels['low'] = 'Lav';
$labels['lowest'] = 'Lavest';
$labels['normal'] = 'Normal';
@@ -190,6 +197,7 @@ $labels['maxuploadsize'] = 'Maksimale tilladte filstørrelse er $size';
$labels['addcc'] = 'Tilføj Cc';
$labels['addbcc'] = 'Tilføj Bcc';
$labels['addreplyto'] = 'Tilføj Svar-Til adresse';
+$labels['addfollowupto'] = 'Tilføj følg-op adresse';
$labels['mdnrequest'] = 'Afsenderen af denne besked har bedt om at modtage en bekræftelse når du læser beskeden. Vil du sende kvittering for læsning?';
$labels['receiptread'] = 'Send kvittering for læsning';
$labels['yourmessage'] = 'Dette er en kvittering for at din besked er blevet vist';
@@ -197,13 +205,42 @@ $labels['receiptnote'] = 'Bemærk: Denne kvittering bekræfter udelukkende at be
$labels['name'] = 'Vist navn';
$labels['firstname'] = 'Fornavn';
$labels['surname'] = 'Efternavn';
+$labels['middlename'] = 'Mellemnavn';
+$labels['nickname'] = 'Alias/Kaldenavn';
+$labels['jobtitle'] = 'Job titel';
+$labels['department'] = 'Afdeling';
+$labels['gender'] = 'Køn';
+$labels['maidenname'] = 'Pigenavn';
$labels['email'] = 'E-mail';
+$labels['phone'] = 'Telefon';
+$labels['address'] = 'Adresse';
+$labels['street'] = 'Vejnavn';
+$labels['locality'] = 'By';
+$labels['zipcode'] = 'Postnr.';
+$labels['region'] = 'Område/region';
+$labels['country'] = 'Land';
+$labels['birthday'] = 'Fødselsdag';
+$labels['anniversary'] = 'Jubilæum';
+$labels['website'] = 'Hjemmeside';
+$labels['instantmessenger'] = 'IM';
+$labels['notes'] = 'Noter';
+$labels['male'] = 'Mand';
+$labels['female'] = 'Kvinde';
+$labels['manager'] = 'Manager';
+$labels['assistant'] = 'Assistent';
+$labels['spouse'] = 'Ægtefælle';
+$labels['addfield'] = 'Tilføj felt...';
$labels['addcontact'] = 'Tilføj en ny kontakt';
$labels['editcontact'] = 'Redigér kontakt';
+$labels['contacts'] = 'Kontakter';
+$labels['contactproperties'] = 'Kontakt egenskaber';
$labels['edit'] = 'Redigér';
$labels['cancel'] = 'Afbryd';
$labels['save'] = 'Gem';
$labels['delete'] = 'Slet';
+$labels['rename'] = 'Omdøb';
+$labels['addphoto'] = 'Tilføj';
+$labels['replacephoto'] = 'Erstat';
$labels['newcontact'] = 'Opret nyt kontaktkort';
$labels['deletecontact'] = 'Slet valgte kontakter';
$labels['composeto'] = 'Skriv brev til';
@@ -247,6 +284,7 @@ $labels['pagesize'] = 'Rækker per side';
$labels['signature'] = 'Signatur';
$labels['dstactive'] = 'Sommertid';
$labels['htmleditor'] = 'Skriv HTML-besked';
+$labels['htmlonreply'] = 'kun når jeg besvarer HTML-beskeder';
$labels['htmlsignature'] = 'HTML-signatur';
$labels['previewpane'] = 'Forhåndsvisning';
$labels['skin'] = 'Interface skin';
@@ -258,6 +296,8 @@ $labels['mailboxview'] = 'Mailbox visning';
$labels['mdnrequests'] = 'Kvitteringer';
$labels['askuser'] = 'spørg brugeren';
$labels['autosend'] = 'send automatisk';
+$labels['autosendknown'] = 'send automatisk til mine kontakter, ellers spørg mig';
+$labels['autosendknownignore'] = 'send automatisk til mine kontakter, ellers ignorér';
$labels['ignore'] = 'ignorér';
$labels['readwhendeleted'] = 'Markér beskeden som læst ved sletning';
$labels['flagfordeletion'] = 'Markér beskeden til sletning istedet for at slette';
@@ -302,6 +342,9 @@ $labels['abovequote'] = 'over det citerede';
$labels['insertsignature'] = 'Indsæt signatur';
$labels['previewpanemarkread'] = 'Markér forhåndsviste beskeder som læst';
$labels['afternseconds'] = 'efter $n sekunder';
+$labels['reqmdn'] = 'Bed altid om at få besked om læsning';
+$labels['reqdsn'] = 'Bed altid om at få en status på levering';
+$labels['replysamefolder'] = 'Placer svar til en besked i samme mappe som beskeden der besvares';
$labels['folder'] = 'Mappe';
$labels['folders'] = 'Mapper';
$labels['foldername'] = 'Mappenavn';
@@ -311,6 +354,13 @@ $labels['create'] = 'Opret';
$labels['createfolder'] = 'Opret ny mappe';
$labels['managefolders'] = 'Administrér mapper';
$labels['specialfolders'] = 'Specielle mapper';
+$labels['properties'] = 'Egenskaber';
+$labels['folderproperties'] = 'Mappe egenskaber';
+$labels['parentfolder'] = 'Mappe et niveau op';
+$labels['location'] = 'Placering';
+$labels['info'] = 'Information';
+$labels['getfoldersize'] = 'Klik for at hente mappestørrelse';
+$labels['changesubscription'] = 'Klik for at ændre abonnement';
$labels['sortby'] = 'Sortér efter';
$labels['sortasc'] = 'Ældste først';
$labels['sortdesc'] = 'Nyeste først';
diff --git a/program/localization/da_DK/messages.inc b/program/localization/da_DK/messages.inc
index 74d70b78e..b4bf3db95 100644
--- a/program/localization/da_DK/messages.inc
+++ b/program/localization/da_DK/messages.inc
@@ -24,6 +24,9 @@ $messages['cookiesdisabled'] = 'Din browser accepterer ikke cookies';
$messages['sessionerror'] = 'Din session er ugyldig eller udløbet';
$messages['imaperror'] = 'Forbindelse til IMAP serveren fejlede';
$messages['servererror'] = 'Server fejl!';
+$messages['servererrormsg'] = 'Server fejl: $msg';
+$messages['errorreadonly'] = 'Kunne ikke udføre den ønskede handling. Mappen er skrivebeskyttet';
+$messages['errornoperm'] = 'Kunne ikke udføre den ønskede handling. Adgang nægtet';
$messages['invalidrequest'] = 'Ugyldig forespørgsel! Ingen data blev gemt.';
$messages['nomessagesfound'] = 'Der blev ikke fundet nogen beskeder i denne postkasse';
$messages['loggedout'] = 'Du er nu logget af webmail. Farvel så længe!';
@@ -57,6 +60,8 @@ $messages['deletefolderconfirm'] = 'Vil du virkelig slette den valgte mappe';
$messages['purgefolderconfirm'] = 'Vil du virkelig slette alle beskeder i denne mappe?';
$messages['folderdeleting'] = 'Sletter mappen...';
$messages['foldermoving'] = 'Flytter mappen...';
+$messages['foldersubscribing'] = 'Abonnere på mappen...';
+$messages['folderunsubscribing'] = 'Fjerner abonnement på mappen...';
$messages['formincomplete'] = 'Formularen var ikke fuldstændig fyldt ud';
$messages['noemailwarning'] = 'Indtast venligst en gyldig e-mail adresse';
$messages['nonamewarning'] = 'Angiv venligst et navn';
@@ -76,6 +81,10 @@ $messages['searching'] = 'Søger...';
$messages['checking'] = 'Tjekker...';
$messages['nospellerrors'] = 'Ingen stavefejl fundet';
$messages['folderdeleted'] = 'Mappen er slettet';
+$messages['foldersubscribed'] = 'Mappe abonnement oprettet';
+$messages['folderunsubscribed'] = 'Mappe abonnement opsagt';
+$messages['folderpurged'] = 'Mappen er tømt';
+$messages['folderexpunged'] = 'Mappen er blevet optimeret';
$messages['deletedsuccessfully'] = 'Slettet';
$messages['converting'] = 'Fjerner formatering fra besked...';
$messages['messageopenerror'] = 'Beskeden kunne ikke hentes fra serveren';
@@ -87,6 +96,8 @@ $messages['sourceisreadonly'] = 'Denne adressekilde er kun til læsning';
$messages['errorsavingcontact'] = 'Kunne ikke gemme kontakt adressen';
$messages['movingmessage'] = 'Flytter besked...';
$messages['copyingmessage'] = 'Kopierer besked...';
+$messages['deletingmessage'] = 'Sletter besked(er)...';
+$messages['markingmessage'] = 'Markerer besked(er)...';
$messages['receiptsent'] = 'Kvittering for læsning er sendt';
$messages['errorsendingreceipt'] = 'Kvitteringen kunne ikke sendes';
$messages['nodeletelastidentity'] = 'Du kan ikke slette denne identitet, da det er den eneste der er tilbage.';
@@ -107,9 +118,26 @@ $messages['smtpautherror'] = 'SMTP fejl ($code): Autenticering fejlede';
$messages['smtpfromerror'] = 'SMTP fejl ($code): Kunne ikke afsende som "$from" ($msg)';
$messages['smtptoerror'] = 'SMTP fejl ($code): Kunne ikke tilføje modtageren "$to" ($msg)';
$messages['smtprecipientserror'] = 'SMTP fejl: kan ikke fortolke listen af modtagere';
+$messages['smtpdsnerror'] = 'SMTP fejl: Ingen understøttelse af leveringsnotifikation';
$messages['smtperror'] = 'SMTP fejl: $msg';
$messages['emailformaterror'] = 'Ugyldig email-adresse: $email';
$messages['toomanyrecipients'] = 'For mange modtagere. Reducer antallet af modtagere til $max';
$messages['maxgroupmembersreached'] = 'Antallet af gruppemedlemmer overstiger maksimum på $max';
+$messages['internalerror'] = 'Der opstod en intern fejl - prøv venligst igen';
+$messages['contactdelerror'] = 'Kunne ikke slette kontakt(er)';
+$messages['contactdeleted'] = 'Kontakt(er) slettet';
+$messages['groupdeleted'] = 'Gruppen er slettet';
+$messages['grouprenamed'] = 'Gruppen er omdøbt';
+$messages['groupcreated'] = 'Gruppen er oprettet';
+$messages['messagedeleted'] = 'Besked(er) slettet';
+$messages['messagemoved'] = 'Besked(er) flyttet';
+$messages['messagecopied'] = 'Besked(er) kopieret';
+$messages['messagemarked'] = 'Besked(er) markeret';
+$messages['autocompletechars'] = 'Du skal min. indtaste $min for at benytte autoopslag';
+$messages['namecannotbeempty'] = 'Navnet kan ikke været tomt';
+$messages['nametoolong'] = 'Navnet er for langt';
+$messages['folderupdated'] = 'Mappen er opdateret';
+$messages['foldercreated'] = 'Mappen er oprettet';
+$messages['invalidimageformat'] = 'Ikke et gyldigt billedformat';
?>
diff --git a/program/localization/de_DE/labels.inc b/program/localization/de_DE/labels.inc
index 262127cf4..c88508cfd 100644
--- a/program/localization/de_DE/labels.inc
+++ b/program/localization/de_DE/labels.inc
@@ -44,9 +44,6 @@ $labels['size'] = 'Größe';
$labels['priority'] = 'Priorität';
$labels['organization'] = 'Organisation';
$labels['readstatus'] = 'Gelesen/Ungelesen';
-$labels['reply-to'] = 'Antwort an';
-$labels['mail-reply-to'] = 'Mail-Reply-To';
-$labels['mail-followup-to'] = 'Mail-Followup-To';
$labels['mailboxlist'] = 'Ordner';
$labels['messagesfromto'] = 'Nachrichten $from bis $to von $count';
$labels['threadsfromto'] = 'Konversationen $from bis $to von $count';
@@ -157,7 +154,6 @@ $labels['listmode'] = 'Anzeigemodus';
$labels['folderactions'] = 'Ordneraktionen...';
$labels['compact'] = 'Packen';
$labels['empty'] = 'Leeren';
-$labels['purge'] = 'Bereinigen';
$labels['quota'] = 'Speicherplatz';
$labels['unknown'] = 'unbekannt';
$labels['unlimited'] = 'unbegrenzt';
@@ -208,15 +204,45 @@ $labels['receiptnote'] = 'Hinweis: Der Empfänger hat den Empfang der Nachricht
$labels['name'] = 'Angezeigter Name';
$labels['firstname'] = 'Vorname';
$labels['surname'] = 'Nachname';
+$labels['middlename'] = 'zweiter Vorname';
+$labels['nameprefix'] = 'Anrede';
+$labels['namesuffix'] = 'Namenszusatz';
+$labels['nickname'] = 'Spitzname';
+$labels['jobtitle'] = 'Berufsbezeichnung';
+$labels['department'] = 'Firma';
+$labels['gender'] = 'Geschlecht';
+$labels['maidenname'] = 'Mädchenname';
$labels['email'] = 'E-Mail';
+$labels['phone'] = 'Telefon';
+$labels['address'] = 'Adresse';
+$labels['street'] = 'Straße';
+$labels['locality'] = 'Ort';
+$labels['zipcode'] = 'PLZ';
+$labels['region'] = 'Region';
+$labels['country'] = 'Land';
+$labels['birthday'] = 'Geburtstag';
+$labels['anniversary'] = 'Jahrestag';
+$labels['website'] = 'Webseite';
+$labels['instantmessenger'] = 'IM-Adresse';
+$labels['notes'] = 'Notizen';
+$labels['male'] = 'männlich';
+$labels['female'] = 'weiblich';
+$labels['manager'] = 'Vorgesetze(r)';
+$labels['assistant'] = 'Assistent';
+$labels['spouse'] = 'Partner/in';
+$labels['addfield'] = 'Feld hinzufügen...';
$labels['addcontact'] = 'Kontakt hinzufügen';
$labels['editcontact'] = 'Kontakt bearbeiten';
$labels['contacts'] = 'Kontakte';
$labels['contactproperties'] = 'Kontaktdaten';
+$labels['personalinfo'] = 'Persönliche Informationen';
$labels['edit'] = 'Bearbeiten';
$labels['cancel'] = 'Abbrechen';
$labels['save'] = 'Speichern';
$labels['delete'] = 'Löschen';
+$labels['rename'] = 'umbenennen';
+$labels['addphoto'] = 'Kontaktbild hinzufügen';
+$labels['replacephoto'] = 'Bild ändern';
$labels['newcontact'] = 'Neuen Kontakt erstellen';
$labels['deletecontact'] = 'Gewählte Kontakte löschen';
$labels['composeto'] = 'Nachricht verfassen';
diff --git a/program/localization/de_DE/messages.inc b/program/localization/de_DE/messages.inc
index 47e4e017d..1d63591c3 100644
--- a/program/localization/de_DE/messages.inc
+++ b/program/localization/de_DE/messages.inc
@@ -24,6 +24,8 @@ $messages['sessionerror'] = 'Ihre Session ist ungültig oder abgelaufen';
$messages['imaperror'] = 'Keine Verbindung zum IMAP-Server';
$messages['servererror'] = 'Serverfehler!';
$messages['servererrormsg'] = 'Serverfehler: $msg';
+$messages['errorreadonly'] = 'Die Aktion nicht ausgeführt werden. Der Ordner ist schreibgeschützt.';
+$messages['errornoperm'] = 'Die Aktion nicht ausgeführt werden. Zugriff verweigert.';
$messages['invalidrequest'] = 'Ungültige Anfrage! Es wurden keine Daten gespeichert.';
$messages['nomessagesfound'] = 'Keine Nachrichten in diesem Ordner';
$messages['loggedout'] = 'Sie haben Ihre Session erfolgreich beendet. Auf Wiedersehen!';
@@ -135,7 +137,6 @@ $messages['namecannotbeempty'] = 'Der Name darf nicht leer sein';
$messages['nametoolong'] = 'Der Name ist zu lang';
$messages['folderupdated'] = 'Der Ordner wurde erfolgreich aktualisiert';
$messages['foldercreated'] = 'Der Ordner wurde erfolgreich erstellt';
-$messages['errorreadonly'] = 'Die Aktion nicht ausgeführt werden. Der Ordner ist schreibgeschützt.';
-$messages['errornoperm'] = 'Die Aktion nicht ausgeführt werden. Zugriff verweigert.';
+$messages['invalidimageformat'] = 'Kein gültiges Bildformat';
?>
diff --git a/program/localization/fr_FR/labels.inc b/program/localization/fr_FR/labels.inc
index a3e4bc01d..4430de619 100644
--- a/program/localization/fr_FR/labels.inc
+++ b/program/localization/fr_FR/labels.inc
@@ -40,12 +40,12 @@ $labels['to'] = 'À';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Cci';
$labels['replyto'] = 'Répondre à';
+$labels['followupto'] = 'Faire suivre à';
$labels['date'] = 'Date';
$labels['size'] = 'Taille';
$labels['priority'] = 'Priorité';
$labels['organization'] = 'Organisation';
$labels['readstatus'] = 'Status de lecture';
-$labels['reply-to'] = 'Répondre à';
$labels['mailboxlist'] = 'Dossiers';
$labels['messagesfromto'] = 'Messages de $from à $to sur $count';
$labels['threadsfromto'] = 'Fil de $from à $to sur $count';
@@ -156,7 +156,6 @@ $labels['listmode'] = 'Mode d\'affichage de la liste';
$labels['folderactions'] = 'Actions du dossier';
$labels['compact'] = 'Compacter';
$labels['empty'] = 'Vider';
-$labels['purge'] = 'Purger';
$labels['quota'] = 'Occupation disque';
$labels['unknown'] = 'inconnue';
$labels['unlimited'] = 'illimitée';
@@ -199,6 +198,7 @@ $labels['maxuploadsize'] = 'La taille maximum autorisée pour un fichier est $si
$labels['addcc'] = 'Ajouter Cc';
$labels['addbcc'] = 'Ajouter Cci';
$labels['addreplyto'] = 'Ajouter Répondre à';
+$labels['addfollowupto'] = 'Ajouter Faire suivre à';
$labels['mdnrequest'] = 'L\'expéditeur de ce message a demandé d\'être prévenu quand vous lirez ce message. Souhaitez-vous prévenir l\'expéditeur ?';
$labels['receiptread'] = 'Accusé de réception (lu)';
$labels['yourmessage'] = 'Ceci est un accusé de réception pour votre message';
@@ -215,6 +215,7 @@ $labels['edit'] = 'Modifier';
$labels['cancel'] = 'Annuler';
$labels['save'] = 'Sauvegarder';
$labels['delete'] = 'Supprimer';
+$labels['rename'] = 'Renommer';
$labels['newcontact'] = 'Créer un nouveau contact';
$labels['deletecontact'] = 'Supprimer les contacts sélectionnés';
$labels['composeto'] = 'Écrire un message à';
diff --git a/program/localization/fr_FR/messages.inc b/program/localization/fr_FR/messages.inc
index 66239486e..dd91a7a37 100644
--- a/program/localization/fr_FR/messages.inc
+++ b/program/localization/fr_FR/messages.inc
@@ -26,6 +26,8 @@ $messages['sessionerror'] = 'Votre session est invalide ou a expiré';
$messages['imaperror'] = 'Erreur de connexion au serveur IMAP';
$messages['servererror'] = 'Erreur Serveur !';
$messages['servererrormsg'] = 'Erreur du serveur: $msg';
+$messages['errorreadonly'] = 'Impossible d\'effectuer cette opération. Le dossier est en lecture seule';
+$messages['errornoperm'] = 'Impossible d\'effectuer cette opération. Permission refusée';
$messages['invalidrequest'] = 'Requête invalide ! Aucune donnée n\'a été sauvegardée.';
$messages['nomessagesfound'] = 'Aucun message trouvé dans cette boîte aux lettres';
$messages['loggedout'] = 'Vous venez de vous déconnecter avec succès. Au revoir !';
@@ -59,6 +61,8 @@ $messages['deletefolderconfirm'] = 'Voulez-vous vraiment effacer ce dossier ?';
$messages['purgefolderconfirm'] = 'Voulez-vous vraiment effacer tous les messages de ce dossier ?';
$messages['folderdeleting'] = 'Suppression du dossier...';
$messages['foldermoving'] = 'Déplacement du dossier...';
+$messages['foldersubscribing'] = 'Inscription du dossier...';
+$messages['folderunsubscribing'] = 'Désinscription du dossier...';
$messages['formincomplete'] = 'Le formulaire n\'a pas été entièrement rempli';
$messages['noemailwarning'] = 'Veuillez spécifier un courriel valide';
$messages['nonamewarning'] = 'Veuillez fournir un nom';
@@ -78,6 +82,10 @@ $messages['searching'] = 'En cours de recherche...';
$messages['checking'] = 'Vérification...';
$messages['nospellerrors'] = 'Aucune faute trouvée';
$messages['folderdeleted'] = 'Dossier effacé';
+$messages['foldersubscribed'] = 'Le dossier a bien été inscrit';
+$messages['folderunsubscribed'] = 'Le dossier a bien été désinscrit';
+$messages['folderpurged'] = 'Le dossier a bien été vidé';
+$messages['folderexpunged'] = 'Le dossier a bien été comptacté';
$messages['deletedsuccessfully'] = 'Supprimé(s) avec succès';
$messages['converting'] = 'Suppression de la mise en forme...';
$messages['messageopenerror'] = 'Impossible de charger le message depuis serveur';
@@ -127,5 +135,9 @@ $messages['messagemoved'] = 'Les messages ont bien été déplacés';
$messages['messagecopied'] = 'Les messages ont bien été copiés';
$messages['messagemarked'] = 'Les messages ont bien été marqués';
$messages['autocompletechars'] = 'Entrez au moins $min caractères pour l\'auto-complétion';
+$messages['namecannotbeempty'] = 'Le nom ne peut pas être vide';
+$messages['nametoolong'] = 'Le nom est trop long';
+$messages['folderupdated'] = 'Le dossier a bien été mis à jour';
+$messages['foldercreated'] = 'Le dossier a bien été créé';
?>
diff --git a/program/localization/he_IL/labels.inc b/program/localization/he_IL/labels.inc
index 61f27f769..02ea0cf30 100644
--- a/program/localization/he_IL/labels.inc
+++ b/program/localization/he_IL/labels.inc
@@ -152,7 +152,6 @@ $labels['listmode'] = 'אופן הצגת רשימה';
$labels['folderactions'] = 'פעולות על תיקים';
$labels['compact'] = 'פינוי שטח לא מנוצל';
$labels['empty'] = 'ריקון';
-$labels['purge'] = 'מחיקה';
$labels['quota'] = 'ניצול קיבולת';
$labels['unknown'] = 'לא ידוע';
$labels['unlimited'] = 'ללא הגבלה';
@@ -203,15 +202,45 @@ $labels['receiptnote'] = 'הערה: האישור אינו מבטיח שהנמע
$labels['name'] = 'שם להצגה';
$labels['firstname'] = 'שם פרטי';
$labels['surname'] = 'שם משפחה';
+$labels['middlename'] = 'שם אמצעי';
+$labels['nameprefix'] = 'קידומת';
+$labels['namesuffix'] = 'סיומת';
+$labels['nickname'] = 'שם חיבה';
+$labels['jobtitle'] = 'תפקיד באירגון';
+$labels['department'] = 'מחלקה';
+$labels['gender'] = 'מגדר';
+$labels['maidenname'] = 'שם משפחה לפני נישואין';
$labels['email'] = 'כתובת דוא"ל';
+$labels['phone'] = 'מספר טלפון';
+$labels['address'] = 'כתובת';
+$labels['street'] = 'רחוב';
+$labels['locality'] = 'עיר';
+$labels['zipcode'] = 'מיקוד';
+$labels['region'] = 'אישור';
+$labels['country'] = 'מדינה';
+$labels['birthday'] = 'יום הולדת';
+$labels['anniversary'] = 'יום נישואין';
+$labels['website'] = 'אתר אינטרנט';
+$labels['instantmessenger'] = 'כינוי בצ\'ט';
+$labels['notes'] = 'הערות';
+$labels['male'] = 'זכר';
+$labels['female'] = 'נקבה';
+$labels['manager'] = 'מנהל/ת';
+$labels['assistant'] = 'עוזר/ת';
+$labels['spouse'] = 'בן/בת זוג';
+$labels['addfield'] = 'הוסף שדה';
$labels['addcontact'] = 'הוספת איש קשר';
$labels['editcontact'] = 'עריכת איש קשר';
$labels['contacts'] = 'אנשי קשר';
$labels['contactproperties'] = 'מאפייני איש קשר';
+$labels['personalinfo'] = 'מידע אישי';
$labels['edit'] = 'עריכה';
$labels['cancel'] = 'ביטול';
$labels['save'] = 'שמירה';
$labels['delete'] = 'מחיקה';
+$labels['rename'] = 'שינוי שם';
+$labels['addphoto'] = 'הוספה';
+$labels['replacephoto'] = 'החלפה';
$labels['newcontact'] = 'איש קשר חדש';
$labels['deletecontact'] = 'מחיקת אנשי קשר מסומנים';
$labels['composeto'] = 'יצירת הודעה אל';
diff --git a/program/localization/he_IL/messages.inc b/program/localization/he_IL/messages.inc
index 9dd3c872b..000fcb957 100644
--- a/program/localization/he_IL/messages.inc
+++ b/program/localization/he_IL/messages.inc
@@ -136,5 +136,6 @@ $messages['namecannotbeempty'] = 'השם אינו יכול להיות ריק';
$messages['nametoolong'] = 'השם ארוך מדי';
$messages['folderupdated'] = 'התיק עודכן בהצלחה';
$messages['foldercreated'] = 'התיק נוצר בהצלחה';
+$messages['invalidimageformat'] = 'פורמט תמונה לא חוקי';
?>
diff --git a/program/localization/hu_HU/labels.inc b/program/localization/hu_HU/labels.inc
index f5622a72a..7b0bac72b 100644
--- a/program/localization/hu_HU/labels.inc
+++ b/program/localization/hu_HU/labels.inc
@@ -49,7 +49,7 @@ $labels['readstatus'] = 'Olvasott';
$labels['mailboxlist'] = 'Mappák';
$labels['messagesfromto'] = 'Üzenetek: $from - $to / $count';
$labels['threadsfromto'] = 'Témák ($from - $to, összesen $count)';
-$labels['messagenrof'] = '$nr / $coun t üzenet';
+$labels['messagenrof'] = '$nr / $count üzenet';
$labels['copy'] = 'Másolás';
$labels['move'] = 'Áthelyezés';
$labels['moveto'] = 'áthelyezés...';
diff --git a/program/localization/it_IT/labels.inc b/program/localization/it_IT/labels.inc
index 7537df59a..a6ec65670 100644
--- a/program/localization/it_IT/labels.inc
+++ b/program/localization/it_IT/labels.inc
@@ -37,13 +37,14 @@ $labels['subject'] = 'Oggetto';
$labels['from'] = 'Mittente';
$labels['to'] = 'Destinatario';
$labels['cc'] = 'Cc';
-$labels['bcc'] = 'Bcn';
+$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Rispondi a';
$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Data';
$labels['size'] = 'Dimensione';
$labels['priority'] = 'Priorità';
$labels['organization'] = 'Società';
+$labels['readstatus'] = 'Visualizza lo stato';
$labels['mailboxlist'] = 'Cartelle';
$labels['messagesfromto'] = 'Messaggi da $from a $to di $count';
$labels['threadsfromto'] = 'Thread da $from a $to di $count';
@@ -97,7 +98,7 @@ $labels['today'] = 'Oggi';
$labels['checkmail'] = 'Controlla nuovi messaggi';
$labels['writenewmessage'] = 'Scrivi un nuovo messaggio';
$labels['replytomessage'] = 'Rispondi al mittente';
-$labels['replytoallmessage'] = 'Rispondi a tutti o alla mailing list';
+$labels['replytoallmessage'] = 'Rispondi a l mittente e ai destinatari';
$labels['replyall'] = 'Rispondi a tutti';
$labels['replylist'] = 'Rispondi alla mailing list';
$labels['forwardmessage'] = 'Inoltra il messaggio';
@@ -204,7 +205,33 @@ $labels['receiptnote'] = 'Nota: questa Ricevuta di ritorno attesta solamente che
$labels['name'] = 'Nome visualizzato';
$labels['firstname'] = 'Nome';
$labels['surname'] = 'Cognome';
+$labels['middlename'] = 'Secondo nome';
+$labels['nameprefix'] = 'Prefisso';
+$labels['namesuffix'] = 'Suffisso';
+$labels['nickname'] = 'Soprannome';
+$labels['jobtitle'] = 'Titolo';
+$labels['department'] = 'Dipartimento';
+$labels['gender'] = 'Sesso';
+$labels['maidenname'] = 'Cognome da nubile';
$labels['email'] = 'E-Mail';
+$labels['phone'] = 'Telefono';
+$labels['address'] = 'Indirizzo';
+$labels['street'] = 'Via';
+$labels['locality'] = 'Città';
+$labels['zipcode'] = 'CAP';
+$labels['region'] = 'Regione';
+$labels['country'] = 'Stato';
+$labels['birthday'] = 'Compleanno';
+$labels['anniversary'] = 'Anniversario';
+$labels['website'] = 'Sito web';
+$labels['instantmessenger'] = 'IM';
+$labels['notes'] = 'Note';
+$labels['male'] = 'maschio';
+$labels['female'] = 'femmina';
+$labels['manager'] = 'Manager';
+$labels['assistant'] = 'Assistente';
+$labels['spouse'] = 'Coniuge';
+$labels['addfield'] = 'Aggiungi campo...';
$labels['addcontact'] = 'Aggiungi contatto alla rubrica';
$labels['editcontact'] = 'Modifica contatto';
$labels['contacts'] = 'Contatti';
@@ -214,6 +241,8 @@ $labels['cancel'] = 'Annulla';
$labels['save'] = 'Salva';
$labels['delete'] = 'Elimina';
$labels['rename'] = 'Rinomina';
+$labels['addphoto'] = 'Aggiungi';
+$labels['replacephoto'] = 'Sostituisci';
$labels['newcontact'] = 'Crea un nuovo contatto';
$labels['deletecontact'] = 'Elimina i contatti selezionati';
$labels['composeto'] = 'Invia email a';
@@ -330,6 +359,7 @@ $labels['specialfolders'] = 'Cartelle Speciali';
$labels['properties'] = 'Proprietà';
$labels['folderproperties'] = 'Proprietà cartella';
$labels['parentfolder'] = 'Cartella padre';
+$labels['location'] = 'Ubicazione';
$labels['info'] = 'Informazioni';
$labels['getfoldersize'] = 'Click per la dimensione della cartella';
$labels['changesubscription'] = 'Click per cambiare sottoscrizione';
@@ -360,3 +390,5 @@ $labels['korean'] = 'Coreano';
$labels['chinese'] = 'Cinese';
?>
+
+
diff --git a/program/localization/it_IT/messages.inc b/program/localization/it_IT/messages.inc
index fd259abd9..7fdbc161f 100644
--- a/program/localization/it_IT/messages.inc
+++ b/program/localization/it_IT/messages.inc
@@ -30,7 +30,7 @@ $messages['errornoperm'] = 'Impossibile eseguire l\'operazione. Permesso negato'
$messages['invalidrequest'] = 'Richiesta non valida! Nessun dato salvato.';
$messages['nomessagesfound'] = 'Nessun messaggio trovato in questa cartella';
$messages['loggedout'] = 'Sessione chiusa correttamente. Arrivederci!';
-$messages['mailboxempty'] = 'La cartella è vuota';
+$messages['mailboxempty'] = 'La casella è vuota';
$messages['loading'] = 'Caricamento...';
$messages['uploading'] = 'Caricamento file...';
$messages['loadingdata'] = 'Caricamento dati...';
@@ -138,5 +138,8 @@ $messages['namecannotbeempty'] = 'Il nome non può essere vuoto';
$messages['nametoolong'] = 'Nome troppo lungo';
$messages['folderupdated'] = 'Cartella aggiornata correttamente';
$messages['foldercreated'] = 'Cartella creata correttamente';
+$messages['invalidimageformat'] = 'Formato non valido';
?>
+
+
diff --git a/program/localization/ja_JP/labels.inc b/program/localization/ja_JP/labels.inc
index 08ccbb485..06c9fa461 100644
--- a/program/localization/ja_JP/labels.inc
+++ b/program/localization/ja_JP/labels.inc
@@ -16,7 +16,7 @@
@version $Id$
-EN-Revision: 4353
+EN-Revision: 4441
*/
@@ -41,11 +41,11 @@ $labels['to'] = '宛先';
$labels['cc'] = 'コピー';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Reply-To (返信先)';
-$labels['followupto'] = 'Followup-To';
+$labels['followupto'] = 'Followup-To (ML の宛先)';
$labels['date'] = '日付';
$labels['size'] = '容量';
$labels['priority'] = '優先度';
-$labels['organization'] = '所属';
+$labels['organization'] = '企業名';
$labels['readstatus'] = '閲覧の状態';
$labels['mailboxlist'] = 'フォルダー一覧';
$labels['messagesfromto'] = '表示中のメール: $from ~ $to (全: $count 件)';
@@ -157,7 +157,6 @@ $labels['listmode'] = '一覧表示モード';
$labels['folderactions'] = 'フォルダーの操作...';
$labels['compact'] = 'コンパクト';
$labels['empty'] = '空';
-$labels['purge'] = 'ごみ箱を空にする';
$labels['quota'] = 'ディスク使用量';
$labels['unknown'] = '不明';
$labels['unlimited'] = '無制限';
@@ -206,18 +205,47 @@ $labels['receiptread'] = '開封確認 (表示済み)';
$labels['yourmessage'] = 'これはあなたが送信したメールに対する開封確認です。';
$labels['receiptnote'] = '注意: この開封確認はメールが受信者に表示されたことの通知です。受信者がメールを読んだこと、内容を理解したことを保証するものではありません。';
$labels['name'] = '表示名';
-$labels['firstname'] = '名 (ファースト ネーム)';
-$labels['surname'] = '姓 (ラスト ネーム)';
+$labels['firstname'] = '名 (ファーストネーム)';
+$labels['surname'] = '姓 (ラストネーム)';
+$labels['middlename'] = 'ミドルネーム';
+$labels['nameprefix'] = '敬称 (名前の前)';
+$labels['namesuffix'] = '敬称 (名前の後)';
+$labels['nickname'] = 'ニックネーム';
+$labels['jobtitle'] = '肩書き';
+$labels['department'] = '部署名';
+$labels['gender'] = '性別';
+$labels['maidenname'] = '旧姓';
$labels['email'] = 'メールアドレス';
+$labels['phone'] = '電話番号';
+$labels['address'] = '住所';
+$labels['street'] = '通り';
+$labels['locality'] = '都市';
+$labels['zipcode'] = '郵便番号';
+$labels['region'] = '州';
+$labels['country'] = '国';
+$labels['birthday'] = '誕生日';
+$labels['anniversary'] = '記念日';
+$labels['website'] = 'ウェブサイト';
+$labels['instantmessenger'] = 'IM';
+$labels['notes'] = 'Notes';
+$labels['male'] = '男性';
+$labels['female'] = '女性';
+$labels['manager'] = '管理者';
+$labels['assistant'] = 'アシスタント';
+$labels['spouse'] = '配偶者';
+$labels['addfield'] = '項目の追加...';
$labels['addcontact'] = '連絡先の新規追加';
$labels['editcontact'] = '連絡先の編集';
$labels['contacts'] = '連絡先';
$labels['contactproperties'] = '連絡先のプロパティ';
+$labels['personalinfo'] = '個人情報';
$labels['edit'] = '編集';
$labels['cancel'] = 'キャンセル';
$labels['save'] = '保存';
$labels['delete'] = '削除';
$labels['rename'] = '名前の変更';
+$labels['addphoto'] = '追加';
+$labels['replacephoto'] = '置換';
$labels['newcontact'] = '連絡先の新規作成';
$labels['deletecontact'] = '連絡先の削除';
$labels['composeto'] = 'この連絡先へメールの送信';
diff --git a/program/localization/ja_JP/messages.inc b/program/localization/ja_JP/messages.inc
index efd9183a2..657a1df2f 100644
--- a/program/localization/ja_JP/messages.inc
+++ b/program/localization/ja_JP/messages.inc
@@ -16,7 +16,7 @@
@version $Id$
-// EN-Revision: 4321
+// EN-Revision: 4424
*/
@@ -140,5 +140,6 @@ $messages['namecannotbeempty'] = '名前は空にできません。';
$messages['nametoolong'] = '名前が長すぎます。';
$messages['folderupdated'] = 'フォルダーの更新に成功しました。';
$messages['foldercreated'] = 'フォルダーの作成に成功しました。';
+$messages['invalidimageformat'] = '画像の形式が正しくありません。';
?>
diff --git a/program/localization/pt_PT/labels.inc b/program/localization/pt_PT/labels.inc
index f5380dd1b..c46d4e3a1 100644
--- a/program/localization/pt_PT/labels.inc
+++ b/program/localization/pt_PT/labels.inc
@@ -208,16 +208,45 @@ $labels['receiptnote'] = 'Nota: este recibo apenas indica que a mensagem foi abe
$labels['name'] = 'Nome completo';
$labels['firstname'] = 'Primeiro nome';
$labels['surname'] = 'Apelido';
+$labels['middlename'] = 'Outros nomes/apelidos';
+$labels['nameprefix'] = 'Título';
+$labels['namesuffix'] = 'Sufixo';
+$labels['nickname'] = 'Alcunha';
+$labels['jobtitle'] = 'Cargo';
+$labels['department'] = 'Departamento';
+$labels['gender'] = 'Género';
+$labels['maidenname'] = 'Nome solteiro';
$labels['email'] = 'E-mail';
+$labels['phone'] = 'Telefone';
+$labels['address'] = 'Endereço';
+$labels['street'] = 'Rua';
+$labels['locality'] = 'Cidade';
+$labels['zipcode'] = 'Código postal';
+$labels['region'] = 'Localidade';
+$labels['country'] = 'Pais';
+$labels['birthday'] = 'Data de nascimento';
+$labels['anniversary'] = 'Aniversário';
+$labels['website'] = 'Página web';
+$labels['instantmessenger'] = 'Endereço IM';
+$labels['notes'] = 'Notas';
+$labels['male'] = 'masculino';
+$labels['female'] = 'feminino';
+$labels['manager'] = 'Gerente';
+$labels['assistant'] = 'Assistente';
+$labels['spouse'] = 'Cônjuge';
+$labels['addfield'] = 'Adicionar campo...';
$labels['addcontact'] = 'Criar novo contacto';
$labels['editcontact'] = 'Editar contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Propriedades dos contactos';
+$labels['personalinfo'] = 'Informação pessoal';
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Guardar';
$labels['delete'] = 'Eliminar';
$labels['rename'] = 'Renomear';
+$labels['addphoto'] = 'Adicionar';
+$labels['replacephoto'] = 'Substituir';
$labels['newcontact'] = 'Criar novo contacto';
$labels['deletecontact'] = 'Eliminar contactos seleccionados';
$labels['composeto'] = 'Escrever mensagem para';
diff --git a/program/localization/pt_PT/messages.inc b/program/localization/pt_PT/messages.inc
index 07caaa30d..eb56751c2 100644
--- a/program/localization/pt_PT/messages.inc
+++ b/program/localization/pt_PT/messages.inc
@@ -140,5 +140,6 @@ $messages['namecannotbeempty'] = 'O nome não pode estar em branco';
$messages['nametoolong'] = 'O nome é demasiado longo';
$messages['folderupdated'] = 'Actualização da pasta concluída com sucesso';
$messages['foldercreated'] = 'Pasta criada com sucesso';
+$messages['invalidimageformat'] = 'Formato de imagem não suportado';
?>
diff --git a/program/localization/ru_RU/labels.inc b/program/localization/ru_RU/labels.inc
index d8d050b23..39e3ab54c 100644
--- a/program/localization/ru_RU/labels.inc
+++ b/program/localization/ru_RU/labels.inc
@@ -156,7 +156,6 @@ $labels['listmode'] = 'Режим просмотра';
$labels['folderactions'] = 'Операции над папкой...';
$labels['compact'] = 'Сжать';
$labels['empty'] = 'Опустошить';
-$labels['purge'] = 'Очистить';
$labels['quota'] = 'Квота';
$labels['unknown'] = 'неизвестно';
$labels['unlimited'] = 'без ограничений';
@@ -207,15 +206,45 @@ $labels['receiptnote'] = 'Это уведомление означает тол
$labels['name'] = 'Отображаемое имя';
$labels['firstname'] = 'Имя';
$labels['surname'] = 'Фамилия';
+$labels['middlename'] = 'Отчество';
+$labels['nameprefix'] = 'Префикс';
+$labels['namesuffix'] = 'Суффикс';
+$labels['nickname'] = 'Прозвище';
+$labels['jobtitle'] = 'Должность';
+$labels['department'] = 'Отдел';
+$labels['gender'] = 'Пол';
+$labels['maidenname'] = 'Девичья фамилия';
$labels['email'] = 'E-Mail';
+$labels['phone'] = 'Телефон';
+$labels['address'] = 'Адрес';
+$labels['street'] = 'Улица';
+$labels['locality'] = 'Город';
+$labels['zipcode'] = 'Индекс';
+$labels['region'] = 'Область';
+$labels['country'] = 'Страна';
+$labels['birthday'] = 'День рождения';
+$labels['anniversary'] = 'Годовщина';
+$labels['website'] = 'Веб-сайт';
+$labels['instantmessenger'] = 'IM';
+$labels['notes'] = 'Заметки';
+$labels['male'] = 'мужской';
+$labels['female'] = 'женский';
+$labels['manager'] = 'Менеджер';
+$labels['assistant'] = 'Помощник';
+$labels['spouse'] = 'Супруг';
+$labels['addfield'] = 'Добавить поле...';
$labels['addcontact'] = 'Добавить выбранные контакты в список контактов';
$labels['editcontact'] = 'Редактировать контакт';
$labels['contacts'] = 'Контакты';
$labels['contactproperties'] = 'Свойства контакта';
+$labels['personalinfo'] = 'Личная информация';
$labels['edit'] = 'Правка';
$labels['cancel'] = 'Отмена';
$labels['save'] = 'Сохранить';
$labels['delete'] = 'Удалить';
+$labels['rename'] = 'Переименовать';
+$labels['addphoto'] = 'Добавить';
+$labels['replacephoto'] = 'Заменить';
$labels['newcontact'] = 'Создать новый контакт';
$labels['deletecontact'] = 'Удалить выбранные контакты';
$labels['composeto'] = 'Создать сообщение для выбранных контактов';
diff --git a/program/localization/ru_RU/messages.inc b/program/localization/ru_RU/messages.inc
index 26cda0196..83aa8a74e 100644
--- a/program/localization/ru_RU/messages.inc
+++ b/program/localization/ru_RU/messages.inc
@@ -138,5 +138,6 @@ $messages['namecannotbeempty'] = 'Имя не может быть пустым';
$messages['nametoolong'] = 'Слишком длинное имя';
$messages['folderupdated'] = 'Папка обновлена';
$messages['foldercreated'] = 'Папка создана';
+$messages['invalidimageformat'] = 'Неверный формат изображения';
?>
diff --git a/program/localization/sk_SK/labels.inc b/program/localization/sk_SK/labels.inc
index ce93f888f..25c8cb06b 100644
--- a/program/localization/sk_SK/labels.inc
+++ b/program/localization/sk_SK/labels.inc
@@ -14,6 +14,7 @@
| Lukas Kraic <lukas.kraic@truni.sk> |
| Peter Mann <peter.mann@tuke.sk> |
| Ales Pospichal <ales@pospichalales.info> |
+| Martin Lacina <martin@whistler.sk> |
+-----------------------------------------------------------------------+
@version $Id$
@@ -45,7 +46,7 @@ $labels['date'] = 'Dátum';
$labels['size'] = 'Veľkosť';
$labels['priority'] = 'Priorita';
$labels['organization'] = 'Organizácia';
-$labels['reply-to'] = 'Odpovedať na';
+$labels['readstatus'] = 'Čítať stav';
$labels['mailboxlist'] = 'Adresár';
$labels['messagesfromto'] = 'Správy od $from do $to z $count';
$labels['threadsfromto'] = 'Konverzácie od $from do $to z $count ';
@@ -100,6 +101,8 @@ $labels['checkmail'] = 'Skontrolovať nové správy';
$labels['writenewmessage'] = 'Vytvoriť novú správu';
$labels['replytomessage'] = 'Odpovedať';
$labels['replytoallmessage'] = 'Odpovedať všetkým';
+$labels['replyall'] = 'Odpovedať všetkým';
+$labels['replylist'] = 'Zoznam odpovedí';
$labels['forwardmessage'] = 'Poslať ďalej';
$labels['deletemessage'] = 'Zmazať správu';
$labels['movemessagetotrash'] = 'Presunúť správu do koša';
@@ -154,7 +157,6 @@ $labels['listmode'] = 'Režim zobrazenia zoznamu';
$labels['folderactions'] = 'Akcie so zložkou...';
$labels['compact'] = 'Zhustiť priečinok';
$labels['empty'] = 'Prázdne';
-$labels['purge'] = 'Vyprázdniť';
$labels['quota'] = 'Zaplnenie schránky';
$labels['unknown'] = 'neznáme';
$labels['unlimited'] = 'neobmedzené';
@@ -172,6 +174,7 @@ $labels['addattachment'] = 'Pridať prílohu';
$labels['charset'] = 'Znaková sada';
$labels['editortype'] = 'Typ editora';
$labels['returnreceipt'] = 'Potvrdenie o doručení';
+$labels['dsn'] = 'Doručenie oznámenia o stave';
$labels['editidents'] = 'Editovať identity';
$labels['checkspelling'] = 'Skontrolovať pravopis';
$labels['resumeediting'] = 'Pokračovať v úpravách';
@@ -207,10 +210,12 @@ $labels['email'] = 'E-Mail';
$labels['addcontact'] = 'Pridať nový kontakt';
$labels['editcontact'] = 'Upraviť kontakt';
$labels['contacts'] = 'Kontakty';
+$labels['contactproperties'] = 'Vlastnosti kontaktu';
$labels['edit'] = 'Upraviť';
$labels['cancel'] = 'Zrušiť';
$labels['save'] = 'Uložiť';
$labels['delete'] = 'Zmazať';
+$labels['rename'] = 'Premenovať';
$labels['newcontact'] = 'Vytvoriť nový kontakt';
$labels['deletecontact'] = 'Zmazať zvolené kontakty';
$labels['composeto'] = 'Vytvoriť správu pre';
@@ -254,6 +259,7 @@ $labels['pagesize'] = 'Riadky na stránku';
$labels['signature'] = 'Podpis';
$labels['dstactive'] = 'Letný čas';
$labels['htmleditor'] = 'Vytvoriť HTML správu';
+$labels['htmlonreply'] = 'len v odpovedi na HTML správy';
$labels['htmlsignature'] = 'HTML podpis';
$labels['previewpane'] = 'Ukázať náhľad';
$labels['skin'] = 'Vzhľad';
@@ -266,6 +272,7 @@ $labels['mdnrequests'] = 'Upozornenia odosielateľovi';
$labels['askuser'] = 'spýtať sa používateľa';
$labels['autosend'] = 'poslať potvrdenie automaticky';
$labels['autosendknown'] = 'poslať potvrdenie iba mojím kontaktom';
+$labels['autosendknownignore'] = 'poslať potvrdenie mojím kontaktom, inak ignorovať';
$labels['ignore'] = 'ignorovať';
$labels['readwhendeleted'] = 'Označiť správu ';
$labels['flagfordeletion'] = 'Pri odstránení správy iba označiť správu ako odstránenú';
@@ -311,6 +318,8 @@ $labels['insertsignature'] = 'Vložit podpis';
$labels['previewpanemarkread'] = 'Označiť zobrazenej správy ako prečítané';
$labels['afternseconds'] = 'po $ sekundách';
$labels['reqmdn'] = 'Vždy požadovať doručenku';
+$labels['reqdsn'] = 'Vždy vyžadovať potvrdenie o doručení správy';
+$labels['replysamefolder'] = 'Umietniť odpoveď do adresára, kde je umiestnená správa, na ktorú sa odpovedalo';
$labels['folder'] = 'Priečinok';
$labels['folders'] = 'Priečinky';
$labels['foldername'] = 'Názov priečinku';
@@ -320,6 +329,13 @@ $labels['create'] = 'Vytvoriť';
$labels['createfolder'] = 'Vytvor nový priečinok';
$labels['managefolders'] = 'Spravovať priečinky';
$labels['specialfolders'] = 'Špeciálne priečinky';
+$labels['properties'] = 'Vlastnosti';
+$labels['folderproperties'] = 'Vlastnosti adresára';
+$labels['parentfolder'] = 'Rodičovský adresár';
+$labels['location'] = 'Umiestnenie';
+$labels['info'] = 'Informácia';
+$labels['getfoldersize'] = 'Kliknúť pre získanie leľkosti adresára';
+$labels['changesubscription'] = 'Kliknúť pre zmenu prihlásenia odberu';
$labels['sortby'] = 'Triediť podľa';
$labels['sortasc'] = 'Triediť vzostupne';
$labels['sortdesc'] = 'Triediť zostupne';
@@ -346,4 +362,4 @@ $labels['japanese'] = 'Japončina';
$labels['korean'] = 'Korejčina';
$labels['chinese'] = 'Čínština';
-?> \ No newline at end of file
+?>
diff --git a/program/localization/sk_SK/messages.inc b/program/localization/sk_SK/messages.inc
index 315038f96..e44c65c64 100644
--- a/program/localization/sk_SK/messages.inc
+++ b/program/localization/sk_SK/messages.inc
@@ -14,6 +14,7 @@
| Lukas Kraic <lukas.kraic@truni.sk> |
| Peter Mann <peter.mann@tuke.sk> |
| Ales Pospichal <ales@pospichalales.info> |
+| Martin Lacina <martin@whistler.sk> |
+-----------------------------------------------------------------------+
@version $Id$
@@ -26,6 +27,9 @@ $messages['cookiesdisabled'] = 'Váš internetový prehliadač nepodporuje cooki
$messages['sessionerror'] = 'Vaše prihlásenie je neplatné alebo vypršala jeho platnosť';
$messages['imaperror'] = 'Nepodarilo sa spojiť s IMAP serverom';
$messages['servererror'] = 'Chyba servera!';
+$messages['servererrormsg'] = 'Chyba servera: $msg';
+$messages['errorreadonly'] = 'Nemožno vykonať operáciu. Adresár je len na čítanie';
+$messages['errornoperm'] = 'Nemožno vykonať operáciu. Prístup odmietnutý';
$messages['invalidrequest'] = 'Chybný požiadavek. Žiadne údaje neboli uložené.';
$messages['nomessagesfound'] = 'Vo Vašej schránke nie je žiadna správa';
$messages['loggedout'] = 'Odhlásenie prebehlo úspešne. Dovidenia.';
@@ -59,6 +63,8 @@ $messages['deletefolderconfirm'] = 'Ste si istý, že chcete zmazať tento prie
$messages['purgefolderconfirm'] = 'Ste si istý, že chcete zmazať všetky správy v tomto priečinku?';
$messages['folderdeleting'] = 'Odstraňuje sa priečinok ...';
$messages['foldermoving'] = 'Prečinok sa presúva ...';
+$messages['foldersubscribing'] = 'Prihlasujem sa k adresáru...';
+$messages['folderunsubscribing'] = 'Odhlasujem sa z adresára...';
$messages['formincomplete'] = 'Formulár nie je kompletne vyplnený';
$messages['noemailwarning'] = 'Prosím, vložte platnú emailovú adresu';
$messages['nonamewarning'] = 'Prosím, zadajte meno';
@@ -78,6 +84,10 @@ $messages['searching'] = 'Vyhľadáva sa...';
$messages['checking'] = 'Kontroluje sa...';
$messages['nospellerrors'] = 'Pri kontrole pravopisu neboli nájdené chyby';
$messages['folderdeleted'] = 'Priečinok bol zmazaný';
+$messages['foldersubscribed'] = 'Úspešne prihlásený k adresáru';
+$messages['folderunsubscribed'] = 'Úspešne odhlásený z adresára';
+$messages['folderpurged'] = 'Adresár bol vyprázdnený';
+$messages['folderexpunged'] = 'Adresár bol zhustený';
$messages['deletedsuccessfully'] = 'Úspešne zmazané';
$messages['converting'] = 'Odstraňuje sa formátovanie správy...';
$messages['messageopenerror'] = 'Nedá sa načítať správa zo servera';
@@ -89,6 +99,8 @@ $messages['sourceisreadonly'] = 'Tento zdroj adries je len na čítanie';
$messages['errorsavingcontact'] = 'Nedá sa uložiť adresa kontaktu';
$messages['movingmessage'] = 'Správa sa presúva...';
$messages['copyingmessage'] = 'Správa sa kopíruje...';
+$messages['deletingmessage'] = 'Mažem správu(y)...';
+$messages['markingmessage'] = 'Označujem správu(y)...';
$messages['receiptsent'] = 'Potvrdenie o prijatí správy bolo odoslané';
$messages['errorsendingreceipt'] = 'Potvrdenie o prijatí správy sa nedalo odoslať';
$messages['nodeletelastidentity'] = 'Identita sa nedá odstrániť, je posledná a musí zostať.';
@@ -109,10 +121,25 @@ $messages['smtpautherror'] = 'Chyba SMTP: Autorizácie zlyhala';
$messages['smtpfromerror'] = 'Chyba SMTP: Nemožno nastaviť odosielateľa ($msg)';
$messages['smtptoerror'] = 'Chyba SMTP: Nemožno pridať príjemca ($msg)';
$messages['smtprecipientserror'] = 'Chyba SMTP: Nemožno spracovať zoznam príjemcov';
+$messages['smtpdsnerror'] = 'SMTP chyba: Oznámenie o doručení nie je podporované';
$messages['smtperror'] = 'Chyba SMTP: $msg';
$messages['emailformaterror'] = 'Neplatná e-mailová adresa: $email';
$messages['toomanyrecipients'] = 'Príliš veľa príjemcov. Zmenšite počet príjemcov na $max.';
$messages['maxgroupmembersreached'] = 'Počet členov skupiny dosiahol maxima z $max';
$messages['internalerror'] = 'Došlo k internej chybe. Skúste to znova';
+$messages['contactdelerror'] = 'Nemôžem vymazať kontakt(y)';
+$messages['contactdeleted'] = 'Kontakt(y) bol vymazaný';
+$messages['groupdeleted'] = 'Skupina bola vymazaná';
+$messages['grouprenamed'] = 'Skupina bola premenovaná';
+$messages['groupcreated'] = 'Skupina bola vytvorená';
+$messages['messagedeleted'] = 'Správa(y) bola vymazaná';
+$messages['messagemoved'] = 'Správa(y) bola presunutá';
+$messages['messagecopied'] = 'Správa(y) bola skopírovaná';
+$messages['messagemarked'] = 'Správa(y) bola označená';
+$messages['autocompletechars'] = 'Zadajte najmenej $min znamkov pre automatické dopĺňanie';
+$messages['namecannotbeempty'] = 'Meno nemôže byť prázdne';
+$messages['nametoolong'] = 'Meno je príliš dlhé';
+$messages['folderupdated'] = 'Adresár bol aktualizovaný';
+$messages['foldercreated'] = 'Adresár bol vytvorený';
?>
diff --git a/program/localization/sv_SE/labels.inc b/program/localization/sv_SE/labels.inc
index 60f7e01ab..64da4c4b4 100644
--- a/program/localization/sv_SE/labels.inc
+++ b/program/localization/sv_SE/labels.inc
@@ -121,7 +121,7 @@ $labels['markread'] = 'Läst';
$labels['markunread'] = 'Oläst';
$labels['markflagged'] = 'Flaggat';
$labels['markunflagged'] = 'Oflaggat';
-$labels['messageactions'] = 'Hantera meddelanden';
+$labels['messageactions'] = 'Hantera meddelande';
$labels['select'] = 'Välj';
$labels['all'] = 'Alla';
$labels['none'] = 'Ingen';
@@ -156,7 +156,6 @@ $labels['listmode'] = 'Visningsläge';
$labels['folderactions'] = 'Hantera kataloger';
$labels['compact'] = 'Packa';
$labels['empty'] = 'Töm';
-$labels['purge'] = 'Rensa';
$labels['quota'] = 'Diskutrymme';
$labels['unknown'] = 'okänt';
$labels['unlimited'] = 'obegränsat';
@@ -207,7 +206,33 @@ $labels['receiptnote'] = 'Notera: Mottagarkvittot innebär bara att meddelandet
$labels['name'] = 'Namn';
$labels['firstname'] = 'Förnamn';
$labels['surname'] = 'Efternamn';
+$labels['middlename'] = 'Mellannamn';
+$labels['nameprefix'] = 'Prefix';
+$labels['namesuffix'] = 'Suffix';
+$labels['nickname'] = 'Smeknamn';
+$labels['jobtitle'] = 'Titel';
+$labels['department'] = 'Avdelning';
+$labels['gender'] = 'Kön';
+$labels['maidenname'] = 'Flicknamn';
$labels['email'] = 'E-post';
+$labels['phone'] = 'Telefon';
+$labels['address'] = 'Adress';
+$labels['street'] = 'Gata';
+$labels['locality'] = 'Ort';
+$labels['zipcode'] = 'Postnummer';
+$labels['region'] = 'Region';
+$labels['country'] = 'Land';
+$labels['birthday'] = 'Födelsedag';
+$labels['anniversary'] = 'Årsdag';
+$labels['website'] = 'Webbplats';
+$labels['instantmessenger'] = 'IM';
+$labels['notes'] = 'Anteckningar';
+$labels['male'] = 'Man';
+$labels['female'] = 'Kvinna';
+$labels['manager'] = 'Chef';
+$labels['assistant'] = 'Assistent';
+$labels['spouse'] = 'Make/Maka';
+$labels['addfield'] = 'Lägg till fält...';
$labels['addcontact'] = 'Lägg till ny kontakt';
$labels['editcontact'] = 'Ändra kontakt';
$labels['contacts'] = 'Kontakter';
@@ -216,6 +241,9 @@ $labels['edit'] = 'Redigera';
$labels['cancel'] = 'Avbryt';
$labels['save'] = 'Spara';
$labels['delete'] = 'Ta bort';
+$labels['rename'] = 'Ändra namn';
+$labels['addphoto'] = 'Lägg till';
+$labels['replacephoto'] = 'Ersätt';
$labels['newcontact'] = 'Ny kontakt';
$labels['deletecontact'] = 'Ta bort vald kontakt';
$labels['composeto'] = 'Nytt meddelande till vald kontakt';
@@ -323,7 +351,7 @@ $labels['replysamefolder'] = 'Placera svar i samma katalog som besvarat meddelan
$labels['folder'] = 'Katalog';
$labels['folders'] = 'Kataloger';
$labels['foldername'] = 'Katalognamn';
-$labels['subscribed'] = 'Prenumererad';
+$labels['subscribed'] = 'Prenumererad';
$labels['messagecount'] = 'Meddelanden';
$labels['create'] = 'Skapa';
$labels['createfolder'] = 'Ny katalog';
diff --git a/program/localization/sv_SE/messages.inc b/program/localization/sv_SE/messages.inc
index bb0d331fc..07e97f7a9 100644
--- a/program/localization/sv_SE/messages.inc
+++ b/program/localization/sv_SE/messages.inc
@@ -139,5 +139,6 @@ $messages['namecannotbeempty'] = 'Namnet får inte vara tomt';
$messages['nametoolong'] = 'Namnet är för långt';
$messages['folderupdated'] = 'Katalog uppdaterad';
$messages['foldercreated'] = 'Katalog skapad';
+$messages['invalidimageformat'] = 'Ogiltigt bildfilsformat';
?>
diff --git a/program/localization/zh_TW/labels.inc b/program/localization/zh_TW/labels.inc
index 886d3a380..45c706d44 100644
--- a/program/localization/zh_TW/labels.inc
+++ b/program/localization/zh_TW/labels.inc
@@ -46,9 +46,6 @@ $labels['size'] = '大小';
$labels['priority'] = '優先順序';
$labels['organization'] = '組織';
$labels['readstatus'] = '讀信狀態';
-$labels['reply-to'] = '回覆至';
-$labels['mail-reply-to'] = '信件回覆至';
-$labels['mail-followup-to'] = '信件跟隨至';
$labels['mailboxlist'] = '資料夾';
$labels['messagesfromto'] = '郵件 $from 至 $to,共有 $count 封郵件';
$labels['threadsfromto'] = '郵件串 $from 至 $to,共有 $count 個';
@@ -159,7 +156,6 @@ $labels['listmode'] = '清單檢視模式';
$labels['folderactions'] = '資料夾動作...';
$labels['compact'] = '壓縮';
$labels['empty'] = '清空';
-$labels['purge'] = '清除';
$labels['quota'] = '磁碟使用量';
$labels['unknown'] = '未知';
$labels['unlimited'] = '無限制';
@@ -210,15 +206,45 @@ $labels['receiptnote'] = '注意:此回條只能確認收件者的電腦顯示
$labels['name'] = '顯示名稱';
$labels['firstname'] = '名稱';
$labels['surname'] = '姓氏';
+$labels['middlename'] = '中名';
+$labels['nameprefix'] = '名';
+$labels['namesuffix'] = '姓';
+$labels['nickname'] = '暱稱';
+$labels['jobtitle'] = '職位';
+$labels['department'] = '部門';
+$labels['gender'] = '性別';
+$labels['maidenname'] = '姓';
$labels['email'] = '電子郵件';
+$labels['phone'] = '電話';
+$labels['address'] = '地址';
+$labels['street'] = '街道';
+$labels['locality'] = '城市';
+$labels['zipcode'] = '郵遞區號';
+$labels['region'] = '地區';
+$labels['country'] = '國家';
+$labels['birthday'] = '生日';
+$labels['anniversary'] = '周年纪念日';
+$labels['website'] = '網站';
+$labels['instantmessenger'] = '即時通訊';
+$labels['notes'] = '註解';
+$labels['male'] = '男';
+$labels['female'] = '女';
+$labels['manager'] = '經理';
+$labels['assistant'] = '助理';
+$labels['spouse'] = '配偶';
+$labels['addfield'] = '新增欄位...';
$labels['addcontact'] = '新增聯絡人';
$labels['editcontact'] = '編輯聯絡人';
$labels['contacts'] = '聯絡人';
$labels['contactproperties'] = '聯絡人資訊';
+$labels['personalinfo'] = '個人資訊';
$labels['edit'] = '編輯';
$labels['cancel'] = '取消';
$labels['save'] = '儲存';
$labels['delete'] = '刪除';
+$labels['rename'] = '重新命名';
+$labels['addphoto'] = '新增';
+$labels['replacephoto'] = '取代';
$labels['newcontact'] = '建立新聯絡人資料';
$labels['deletecontact'] = '刪除所選擇的聯絡人';
$labels['composeto'] = '寄信至所選擇的聯絡人';
@@ -332,6 +358,13 @@ $labels['create'] = '建立';
$labels['createfolder'] = '建立新資料夾';
$labels['managefolders'] = '管理資料夾';
$labels['specialfolders'] = '預設資料夾設定';
+$labels['properties'] = '屬性';
+$labels['folderproperties'] = '資料夾屬性';
+$labels['parentfolder'] = '上一層資料夾';
+$labels['location'] = '位置';
+$labels['info'] = '資訊';
+$labels['getfoldersize'] = '點擊顯示資料夾大小';
+$labels['changesubscription'] = '點擊以改變訂閱';
$labels['sortby'] = '排序';
$labels['sortasc'] = '遞增排序';
$labels['sortdesc'] = '遞減排序';
diff --git a/program/localization/zh_TW/messages.inc b/program/localization/zh_TW/messages.inc
index 68c543fc2..99816dcfb 100644
--- a/program/localization/zh_TW/messages.inc
+++ b/program/localization/zh_TW/messages.inc
@@ -26,6 +26,8 @@ $messages['sessionerror'] = '你的工作階段已失效或過期';
$messages['imaperror'] = '連線到 IMAP 伺服器失敗';
$messages['servererror'] = '伺服器錯誤!';
$messages['servererrormsg'] = '伺服器錯誤:$msg';
+$messages['errorreadonly'] = '動作無法完成。資料夾唯讀';
+$messages['errornoperm'] = '動作無法完成。權限不符';
$messages['invalidrequest'] = '要求無效!未儲存任何資料。';
$messages['nomessagesfound'] = '此郵件匣沒有任何郵件';
$messages['loggedout'] = '你已成功地登出並結束工作階段了。再見!';
@@ -59,6 +61,8 @@ $messages['deletefolderconfirm'] = '你確定要刪除這個資料夾嗎?';
$messages['purgefolderconfirm'] = '你確定要刪除這個資料夾裡面所有的郵件嗎?';
$messages['folderdeleting'] = '刪除資料夾中...';
$messages['foldermoving'] = '移動資料夾中...';
+$messages['foldersubscribing'] = '訂閱資料夾...';
+$messages['folderunsubscribing'] = '取消訂閱資料夾...';
$messages['formincomplete'] = '這個表單有部分未填,請完整填寫';
$messages['noemailwarning'] = '請輸入一個有效的電子郵件位址';
$messages['nonamewarning'] = '請輸入名字';
@@ -78,6 +82,10 @@ $messages['searching'] = '搜尋中...';
$messages['checking'] = '檢查中...';
$messages['nospellerrors'] = '沒有找到任何拼字錯誤';
$messages['folderdeleted'] = '資料夾已經成功地被刪除';
+$messages['foldersubscribed'] = '資料夾成功訂閱';
+$messages['folderunsubscribed'] = '資料夾成功取消訂閱';
+$messages['folderpurged'] = '資料夾成功清空';
+$messages['folderexpunged'] = '資料夾成功壓縮';
$messages['deletedsuccessfully'] = '刪除成功';
$messages['converting'] = '移除郵件格式中...';
$messages['messageopenerror'] = '無法從伺服器載入郵件';
@@ -127,5 +135,10 @@ $messages['messagemoved'] = '訊息成功移動';
$messages['messagecopied'] = '訊息成功複製';
$messages['messagemarked'] = '訊息成功標示';
$messages['autocompletechars'] = '輸入至少 $min 字元才能自動完成自動完成';
+$messages['namecannotbeempty'] = '名稱不可空白';
+$messages['nametoolong'] = '名稱太長';
+$messages['folderupdated'] = '資料夾成功更新';
+$messages['foldercreated'] = '資料夾成功建立';
+$messages['invalidimageformat'] = '圖片格式錯誤';
?>
diff --git a/program/steps/addressbook/save.inc b/program/steps/addressbook/save.inc
index f074f18a4..1c70b89b6 100644
--- a/program/steps/addressbook/save.inc
+++ b/program/steps/addressbook/save.inc
@@ -121,6 +121,18 @@ else {
if ($insert_id) {
+ // add new contact to the specified group
+ if ($CONTACTS->group_id) {
+ $plugin = $RCMAIL->plugins->exec_hook('group_addmembers', array('group_id' => $CONTACTS->group_id, 'ids' => $insert_id, 'source' => $source));
+
+ if (!$plugin['abort']) {
+ if (($maxnum = $RCMAIL->config->get('max_group_members', 0)) && ($CONTACTS->count()->count + 1 > $maxnum))
+ $OUTPUT->show_message('maxgroupmembersreached', 'warning', array('max' => $maxnum));
+
+ $CONTACTS->add_to_group($gid, $plugin['ids']);
+ }
+ }
+
// add contact row or jump to the page where it should appear
$CONTACTS->reset();
$result = $CONTACTS->search($CONTACTS->primary_key, $insert_id);
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index abf112212..b62e8a86c 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -273,7 +273,7 @@ function rcmail_js_message_list($a_headers, $insert_top=FALSE, $a_show_cols=null
if (in_array($col, array('from', 'to', 'cc', 'replyto')))
$cont = Q(rcmail_address_string($header->$col, 3), 'show');
else if ($col=='subject') {
- $cont = abbreviate_string(trim($IMAP->decode_header($header->$col)), 160);
+ $cont = trim($IMAP->decode_header($header->$col));
if (!$cont) $cont = rcube_label('nosubject');
$cont = Q($cont);
}
@@ -665,7 +665,8 @@ function rcmail_print_body($part, $p = array())
// trigger plugin hook
$data = $RCMAIL->plugins->exec_hook('message_part_before',
- array('type' => $part->ctype_secondary, 'body' => $part->body) + $p + array('safe' => false, 'plain' => false, 'inline_html' => true));
+ array('type' => $part->ctype_secondary, 'body' => $part->body, 'id' => $part->mime_id)
+ + $p + array('safe' => false, 'plain' => false, 'inline_html' => true));
// convert html to text/plain
if ($data['type'] == 'html' && $data['plain']) {
@@ -698,7 +699,8 @@ function rcmail_print_body($part, $p = array())
$body = rcmail_plain_body($body, $part->ctype_parameters['format'] == 'flowed');
// allow post-processing of the message body
- $data = $RCMAIL->plugins->exec_hook('message_part_after', array('type' => $part->ctype_secondary, 'body' => $body) + $data);
+ $data = $RCMAIL->plugins->exec_hook('message_part_after',
+ array('type' => $part->ctype_secondary, 'body' => $body, 'id' => $part->mime_id) + $data);
return $data['type'] == 'html' ? $data['body'] : html::tag('pre', array(), $data['body']);
}
@@ -827,10 +829,10 @@ function rcmail_washtml_callback($tagname, $attrib, $content)
case 'style':
// decode all escaped entities and reduce to ascii strings
- $stripped = preg_replace('/[^a-zA-Z\(:]/', '', rcmail_xss_entity_decode($content));
+ $stripped = preg_replace('/[^a-zA-Z\(:;]/', '', rcmail_xss_entity_decode($content));
// now check for evil strings like expression, behavior or url()
- if (!preg_match('/expression|behavior|url\(|import/', $stripped)) {
+ if (!preg_match('/expression|behavior|url\(|import[^a]/', $stripped)) {
$out = html::tag('style', array('type' => 'text/css'), $content);
break;
}
@@ -940,16 +942,25 @@ function rcmail_message_headers($attrib, $headers=NULL)
$table->add(array('class' => 'header '.$hkey), Q($row['value'], ($hkey == 'subject' ? 'strict' : 'show')));
}
- // all headers division
- $table->add(array('colspan' => 2, 'class' => "more-headers show-headers", 'onclick' => "return ".JS_OBJECT_NAME.".command('load-headers','',this)"), '');
- $table->add_row(array('id' => "all-headers"));
- $table->add(array('colspan' => 2, 'class' => "all"), html::div(array('id' => 'headers-source'), ''));
+ return $table->show($attrib);
+}
+
+
+/**
+ * return block to show full message headers
+ */
+function rcmail_message_full_headers($attrib, $headers=NULL)
+{
+ global $OUTPUT;
+
+ $html = html::div(array('class' => "more-headers show-headers", 'onclick' => "return ".JS_OBJECT_NAME.".command('load-headers','',this)"), '');
+ $html .= html::div(array('id' => "all-headers", 'class' => "all", 'style' => 'display:none'), html::div(array('id' => 'headers-source'), ''));
$OUTPUT->add_gui_object('all_headers_row', 'all-headers');
$OUTPUT->add_gui_object('all_headers_box', 'headers-source');
-
- return $table->show($attrib);
- }
+
+ return html::div($attrib, $html);
+}
/**
@@ -1749,6 +1760,7 @@ $OUTPUT->add_handlers(array(
'quotadisplay' => 'rcmail_quota_display',
'mailboxname' => 'rcmail_mailbox_name_display',
'messageheaders' => 'rcmail_message_headers',
+ 'messagefullheaders' => 'rcmail_message_full_headers',
'messagebody' => 'rcmail_message_body',
'messagecontentframe' => 'rcmail_messagecontent_frame',
'messagepartframe' => 'rcmail_message_part_frame',
diff --git a/program/steps/settings/folders.inc b/program/steps/settings/folders.inc
index 7ae4fb35d..3494ba99a 100644
--- a/program/steps/settings/folders.inc
+++ b/program/steps/settings/folders.inc
@@ -42,8 +42,16 @@ if ($RCMAIL->action == 'subscribe')
}
}
- if ($result)
+ if ($result) {
+ // Handle subscription of protected folder (#1487656)
+ if ($CONFIG['protect_default_folders'] == true
+ && in_array($mbox, $CONFIG['default_imap_folders'])
+ ) {
+ $OUTPUT->command('disable_subscription', $mbox);
+ }
+
$OUTPUT->show_message('foldersubscribed', 'confirmation');
+ }
else
rcmail_display_server_error('errorsaving');
}
@@ -294,13 +302,16 @@ function rcube_subscription_form($attrib)
$noselect = in_array('\\Noselect', $opts);
}
+ $disabled = (($protected && $subscribed) || $noselect);
+
$table->add_row(array('id' => 'rcmrow'.$idx, 'class' => join(' ', $classes)));
$table->add('name', $display_folder);
$table->add('subscribed', $checkbox_subscribe->show(($subscribed ? $folder_utf8 : ''),
- array('value' => $folder_utf8, 'disabled' => ($protected || $noselect) ? 'disabled' : '')));
+ array('value' => $folder_utf8, 'disabled' => $disabled ? 'disabled' : '')));
- $a_js_folders['rcmrow'.$idx] = array($folder_utf8, Q($display_folder), $protected || $folder['virtual']);
+ $a_js_folders['rcmrow'.$idx] = array($folder_utf8,
+ Q($display_folder), $protected || $folder['virtual']);
}
$RCMAIL->plugins->exec_hook('folders_list', array('table' => $table));
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index fb48e926b..3a3d690bf 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -756,7 +756,6 @@ function rcmail_get_skins()
return $skins;
}
-
// register UI objects
$OUTPUT->add_handlers(array(
'prefsframe' => 'rcmail_preferences_frame',
diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc
index 265c37e90..feeb18341 100644
--- a/program/steps/settings/save_prefs.inc
+++ b/program/steps/settings/save_prefs.inc
@@ -129,6 +129,8 @@ switch ($CURR_SECTION)
if (isset($CONFIG['max_pagesize']) && ($a_user_prefs['pagesize'] > $CONFIG['max_pagesize']))
$a_user_prefs['pagesize'] = (int) $CONFIG['max_pagesize'];
+ $a_user_prefs['timezone'] = $_SESSION['timezone'] = (string) $a_user_prefs['timezone'];
+
break;
case 'mailbox':
diff --git a/skins/default/common.css b/skins/default/common.css
index e052552d0..4a45c60b7 100644
--- a/skins/default/common.css
+++ b/skins/default/common.css
@@ -828,7 +828,7 @@ span.tablink-selected
span.tablink a,
span.tablink-selected a
{
- display: block;
+ display: inline-block;
padding: 5px 10px 0 5px;
margin-left: 5px;
height: 23px;
diff --git a/skins/default/ie6hacks.css b/skins/default/ie6hacks.css
index 1b8135dfe..aef4f17fb 100644
--- a/skins/default/ie6hacks.css
+++ b/skins/default/ie6hacks.css
@@ -116,7 +116,7 @@ ul.toolbarmenu li.separator_below
height: expression((parseInt(this.parentNode.offsetHeight)-23-parseInt(this.style.top?this.style.top:21))+'px');
}
-#directorylistbox
+#directorylistbox, #folder-manager
{
height: expression((parseInt(document.documentElement.clientHeight)-105)+'px');
}
diff --git a/skins/default/iehacks.css b/skins/default/iehacks.css
index 29ab8cb75..e9b51a796 100644
--- a/skins/default/iehacks.css
+++ b/skins/default/iehacks.css
@@ -236,3 +236,8 @@ table.records-table thead tr td
{
margin-top: 2px;
}
+
+#directorylistbox div
+{
+ min-height: 0;
+}
diff --git a/skins/default/mail.css b/skins/default/mail.css
index 7bb308c06..b5dfb80d0 100644
--- a/skins/default/mail.css
+++ b/skins/default/mail.css
@@ -383,6 +383,11 @@
border-bottom: 1px solid #EBEBEB;
}
+#mailboxlist li ul li:last-child
+{
+ border-bottom: none;
+}
+
#mailboxlist li div
{
position: absolute;
@@ -1007,17 +1012,12 @@ table.headers-table
background-color: #EBEBEB;
}
+#messagebody #full-headers,
#messagebody table.headers-table
{
width: auto;
margin: 6px 8px;
background-color: #F4F4F4;
- border: 1px solid #ccc;
-}
-
-#messageframe table.headers-table
-{
- border-bottom: 1px solid #ccc;
}
table.headers-table tr td
@@ -1033,7 +1033,7 @@ table.headers-table tr td.header-title
font-weight: bold;
text-align: right;
white-space: nowrap;
- padding: 0 4px;
+ padding: 0 4px 0 8px;
}
table.headers-table tr td.header
@@ -1046,25 +1046,6 @@ table.headers-table tr td.subject
font-weight: bold;
}
-table.headers-table tr td.all
-{
- width: 100%;
- color: #666666;
- text-align: left;
- padding-right: 10px;
- text-align: center;
- padding: 2px 6px 4px 6px;
- border-bottom: 0;
-}
-
-table.headers-table tr td.more-headers
-{
- cursor: pointer;
- width: 100%;
- height: 8px;
- border-bottom: 0;
-}
-
#attachment-list
{
margin: 0;
@@ -1075,6 +1056,16 @@ table.headers-table tr td.more-headers
background: url(images/icons/attachment.png) 4px 2px no-repeat #DFDFDF;
}
+#messageframe #attachment-list
+{
+ border-bottom: 1px solid #ccc;
+}
+
+.messageheaderbox #attachment-list
+{
+ border-top: 1px solid #ccc;
+}
+
#attachment-list:after
{
content: ".";
@@ -1210,31 +1201,45 @@ div.message-htmlpart div.rcmBody
border: 0;
}
-td.show-headers
+#full-headers
{
- background: url(images/icons/down_small.gif) no-repeat center;
+ color: #666666;
+ text-align: center;
+ padding: 2px 6px;
+ border-bottom: 1px solid #ccc;
+ background-color: #EBEBEB;
}
-td.hide-headers
+.messageheaderbox #full-headers
{
- background: url(images/icons/up_small.gif) no-repeat center;
+ border-bottom: 0;
}
-#all-headers
+div.more-headers
{
- height: 150px;
- display: none;
+ cursor: pointer;
+ height: 8px;
+ border-bottom: 0;
+}
+
+div.show-headers
+{
+ background: url(images/icons/down_small.gif) no-repeat center;
+}
+
+div.hide-headers
+{
+ background: url(images/icons/up_small.gif) no-repeat center;
}
#headers-source
{
- margin: 0 5px;
+ margin: 0 0 2px 0;
padding: 0.5em;
height: 145px;
background: white;
overflow: auto;
font-size: 11px;
- white-space: nowrap;
border: 1px solid #999999;
display: none;
text-align: left;
diff --git a/skins/default/templates/addressbook.html b/skins/default/templates/addressbook.html
index 668b309a7..d486f2fe7 100644
--- a/skins/default/templates/addressbook.html
+++ b/skins/default/templates/addressbook.html
@@ -40,6 +40,7 @@
<roundcube:object name="directorylist" id="directorylist" />
<roundcube:object name="groupslist" id="contactgroupslist" />
</div>
+<!--[if lte IE 7]><div></div><![endif]-->
<div class="boxfooter">
<roundcube:button command="group-create" type="link" title="newcontactgroup" class="buttonPas addgroup" classAct="button addgroup" content=" " />
<roundcube:button name="groupmenulink" id="groupmenulink" type="link" title="groupactions" class="button groupactions" onclick="rcmail_ui.show_popup('groupmenu');return false" content=" " />
diff --git a/skins/default/templates/message.html b/skins/default/templates/message.html
index 8e8af931f..d59210c40 100644
--- a/skins/default/templates/message.html
+++ b/skins/default/templates/message.html
@@ -50,6 +50,7 @@
<div id="messageframe">
<div class="boxlistcontent" style="top:0; overflow-x:auto">
<roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" addicon="/images/icons/silhouette.png" summary="Message headers" />
+<roundcube:object name="messageFullHeaders" id="full-headers" />
<roundcube:object name="messageAttachments" id="attachment-list" />
<roundcube:object name="blockedObjects" id="remote-objects-message" />
diff --git a/skins/default/templates/messagepreview.html b/skins/default/templates/messagepreview.html
index fbece6bc3..bfd7d7d92 100644
--- a/skins/default/templates/messagepreview.html
+++ b/skins/default/templates/messagepreview.html
@@ -9,6 +9,7 @@
<div class="messageheaderbox">
<roundcube:button command="permaurl" image="/images/icons/extwin.png" width="15" height="15" title="openinextwin" id="messageviewlink" target="_blank" />
<roundcube:object name="messageHeaders" class="headers-table" cellspacing="0" cellpadding="2" addicon="/images/icons/silhouette.png" summary="Message headers" />
+<roundcube:object name="messageFullHeaders" id="full-headers" />
<roundcube:object name="messageAttachments" id="attachment-list" />
</div>