diff options
Diffstat (limited to 'program')
115 files changed, 911 insertions, 674 deletions
diff --git a/program/include/bc.php b/program/include/bc.php index d8356338d..df018320c 100644 --- a/program/include/bc.php +++ b/program/include/bc.php @@ -287,7 +287,7 @@ function rcmail_remote_ip() function rcube_check_referer() { - return rcmail::check_referer(); + return rcube_utils::check_referer(); } function rcube_timer() diff --git a/program/include/iniset.php b/program/include/iniset.php index b32ae4e8e..919cc7682 100644 --- a/program/include/iniset.php +++ b/program/include/iniset.php @@ -24,21 +24,6 @@ define('RCMAIL_VERSION', '1.0-git'); define('RCMAIL_START', microtime(true)); -$config = array( - // Some users are not using Installer, so we'll check some - // critical PHP settings here. Only these, which doesn't provide - // an error/warning in the logs later. See (#1486307). - 'suhosin.session.encrypt' => 0, - 'session.auto_start' => 0, - 'file_uploads' => 1, -); -foreach ($config as $optname => $optval) { - if ($optval != ini_get($optname) && @ini_set($optname, $optval) === false) { - die("ERROR: Wrong '$optname' option value and it wasn't possible to set it to required value ($optval).\n" - ."Check your PHP configuration (including php_admin_flag)."); - } -} - if (!defined('INSTALL_PATH')) { define('INSTALL_PATH', dirname($_SERVER['SCRIPT_FILENAME']).'/'); } @@ -75,6 +60,11 @@ require_once 'Roundcube/bootstrap.php'; // register autoloader for rcmail app classes spl_autoload_register('rcmail_autoload'); +// include composer autoloader (if available) +if (file_exists('vendor/autoload.php')) { + require 'vendor/autoload.php'; +} + // backward compatybility (to be removed) require_once INSTALL_PATH . 'program/include/bc.php'; diff --git a/program/include/rcmail_output_html.php b/program/include/rcmail_output_html.php index 6100269b9..d8996edbf 100644 --- a/program/include/rcmail_output_html.php +++ b/program/include/rcmail_output_html.php @@ -873,6 +873,7 @@ class rcmail_output_html extends rcmail_output // include a file case 'include': $old_base_path = $this->base_path; + if (!empty($attrib['skin_path'])) $attrib['skinpath'] = $attrib['skin_path']; if ($path = $this->get_skin_file($attrib['file'], $skin_path, $attrib['skinpath'])) { $this->base_path = preg_replace('!plugins/\w+/!', '', $skin_path); // set base_path to core skin directory (not plugin's skin) $path = realpath($path); diff --git a/program/js/app.js b/program/js/app.js index 0f1a72448..58810c24a 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -314,7 +314,7 @@ function rcube_webmail() } // detect browser capabilities - if (!this.is_framed()) + if (!this.is_framed() && !this.env.extwin) this.browser_capabilities_check(); break; @@ -980,8 +980,8 @@ function rcube_webmail() // Reset the auto-save timer clearTimeout(this.save_timer); - // compose form did not change - if (this.cmp_hash == this.compose_field_hash()) { + // compose form did not change (and draft wasn't saved already) + if (this.env.draft_id && this.cmp_hash == this.compose_field_hash()) { this.auto_save_start(); break; } @@ -1637,7 +1637,7 @@ function rcube_webmail() l = (screen.width - w) / 2 + (screen.left || 0), t = Math.max(0, (screen.height - h) / 2 + (screen.top || 0) - 20), wname = 'rcmextwin' + new Date().getTime(), - extwin = window.open(url + '&_extwin=1', wname, + extwin = window.open(url + (url.match(/\?/) ? '&' : '?') + '_extwin=1', wname, 'width='+w+',height='+h+',top='+t+',left='+l+',resizable=yes,toolbar=no,status=no,location=no'); // write loading... message to empty windows @@ -3297,6 +3297,15 @@ function rcube_webmail() this.set_draft_id = function(id) { + var rc; + + if (!this.env.draft_id && id && (rc = this.opener())) { + // refresh the drafts folder in opener window + if (rc.env.task == 'mail' && rc.env.action == '' && rc.env.mailbox == this.env.drafts_mailbox) + rc.command('checkmail'); + } + + this.env.draft_id = id; $("input[name='_draft_saveid']").val(id); }; @@ -3362,7 +3371,7 @@ function rcube_webmail() sig = this.env.signatures[sig].text; sig = sig.replace(/\r\n/g, '\n'); - p = this.env.sig_above ? message.indexOf(sig) : message.lastIndexOf(sig); + p = this.env.top_posting ? message.indexOf(sig) : message.lastIndexOf(sig); if (p >= 0) message = message.substring(0, p) + message.substring(p+sig.length, message.length); } @@ -3371,7 +3380,7 @@ function rcube_webmail() sig = this.env.signatures[id].text; sig = sig.replace(/\r\n/g, '\n'); - if (this.env.sig_above) { + if (this.env.top_posting) { if (p >= 0) { // in place of removed signature message = message.substring(0, p) + sig + message.substring(p, message.length); cursor_pos = p - 1; @@ -3415,7 +3424,7 @@ function rcube_webmail() sigElem = doc.createElement('div'); sigElem.setAttribute('id', '_rc_sig'); - if (this.env.sig_above) { + if (this.env.top_posting) { // if no existing sig and top posting then insert at caret pos editor.getWin().focus(); // correct focus in IE & Chrome @@ -3672,15 +3681,19 @@ function rcube_webmail() this.env.search_id = null; }; - this.sent_successfully = function(type, msg) + this.sent_successfully = function(type, msg, target) { this.display_message(msg, type); if (this.env.extwin) { - var opener_rc = this.opener(); + var rc = this.opener(); this.lock_form(this.gui_objects.messageform); - if (opener_rc) - opener_rc.display_message(msg, type); + if (rc) { + rc.display_message(msg, type); + // refresh the folder where sent message was saved + if (target && rc.env.task == 'mail' && rc.env.action == '' && rc.env.mailbox == target) + rc.command('checkmail'); + } setTimeout(function(){ window.close() }, 1000); } else { @@ -6708,6 +6721,15 @@ function rcube_webmail() return 1; } + // this will detect any pdf plugin including PDF.js in Firefox + var obj = document.createElement('OBJECT'); + obj.onload = function() { rcmail.env.browser_capabilities.pdf = 1; }; + obj.onerror = function() { rcmail.env.browser_capabilities.pdf = 0; }; + obj.style.display = 'none'; + obj.type = 'application/pdf'; + obj.data = 'program/resources/blank.pdf'; + document.body.appendChild(obj); + return 0; }; diff --git a/program/js/common.js b/program/js/common.js index f9e945c05..f7c0a7536 100644 --- a/program/js/common.js +++ b/program/js/common.js @@ -717,13 +717,15 @@ if (bw.ie) { // jQuery plugin to emulate HTML5 placeholder attributes on input elements jQuery.fn.placeholder = function(text) { return this.each(function() { - var elem = $(this); + var active = false, elem = $(this); this.title = text; + // Try HTML5 placeholder attribute first if ('placeholder' in this) { - elem.attr('placeholder', text); // Try HTML5 placeholder attribute first + elem.attr('placeholder', text); } - else { // Fallback to Javascript emulation of placeholder + // Fallback to Javascript emulation of placeholder + else { this._placeholder = text; elem.blur(function(e) { if ($.trim(elem.val()) == "") @@ -740,7 +742,9 @@ jQuery.fn.placeholder = function(text) { elem[(active ? 'addClass' : 'removeClass')]('placeholder').attr('spellcheck', active); }); - if (this != document.activeElement) // Do not blur currently focused element + // Do not blur currently focused element (catch exception: #1489008) + try { active = this == document.activeElement; } catch(e) {} + if (!active) elem.blur(); } }); diff --git a/program/js/list.js b/program/js/list.js index 9a531eaea..c6b0d3fb8 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -231,7 +231,8 @@ focus: function(e) // Un-focus already focused elements (#1487123, #1487316, #1488600, #1488620) $(':focus:not(body)').blur(); - $('iframe').each(function() { this.blur(); }); + // un-focus iframe bodies (#1489058), this doesn't work in Opera and Chrome + $('iframe').contents().find('body').blur(); if (e || (e = window.event)) rcube_event.cancel(e); @@ -779,10 +780,16 @@ shift_select: function(id, control) if (!this.rows[this.shift_start] || !this.selection.length) this.shift_start = id; - var n, from_rowIndex = this.rows[this.shift_start].obj.rowIndex, - to_rowIndex = this.rows[id].obj.rowIndex, - i = ((from_rowIndex < to_rowIndex)? from_rowIndex : to_rowIndex), - j = ((from_rowIndex > to_rowIndex)? from_rowIndex : to_rowIndex); + var n, i, j, to_row = this.rows[id], + from_rowIndex = this.rows[this.shift_start].obj.rowIndex, + to_rowIndex = to_row.obj.rowIndex; + + if (!to_row.expanded && to_row.has_children) + if (to_row = this.rows[(this.row_children(id)).pop()]) + to_rowIndex = to_row.obj.rowIndex; + + i = ((from_rowIndex < to_rowIndex) ? from_rowIndex : to_rowIndex), + j = ((from_rowIndex > to_rowIndex) ? from_rowIndex : to_rowIndex); // iterate through the entire message list for (n in this.rows) { @@ -828,7 +835,7 @@ select_all: function(filter) for (n in this.rows) { if (!filter || this.rows[n][filter] == true) { this.last_selected = n; - this.highlight_row(n, true); + this.highlight_row(n, true, true); } else { $(this.rows[n].obj).removeClass('selected').removeClass('unfocused'); @@ -923,7 +930,7 @@ get_single_selection: function() /** * Highlight/unhighlight a row */ -highlight_row: function(id, multiple) +highlight_row: function(id, multiple, norecur) { if (!this.rows[id]) return; @@ -939,7 +946,7 @@ highlight_row: function(id, multiple) if (!this.in_selection(id)) { // select row this.selection.push(id); $(this.rows[id].obj).addClass('selected'); - if (!this.rows[id].expanded) + if (!norecur && !this.rows[id].expanded) this.highlight_children(id, true); } else { // unselect row @@ -949,7 +956,7 @@ highlight_row: function(id, multiple) this.selection = a_pre.concat(a_post); $(this.rows[id].obj).removeClass('selected').removeClass('unfocused'); - if (!this.rows[id].expanded) + if (!norecur && !this.rows[id].expanded) this.highlight_children(id, false); } } @@ -967,7 +974,7 @@ highlight_children: function(id, status) for (i=0; i<len; i++) { selected = this.in_selection(children[i]); if ((status && !selected) || (!status && selected)) - this.highlight_row(children[i], true); + this.highlight_row(children[i], true, true); } }, @@ -1228,7 +1235,7 @@ drag_mouse_up: function(e) // remove temp divs this.del_dragfix(); - this.triggerEvent('dragend'); + this.triggerEvent('dragend', e); return rcube_event.cancel(e); }, @@ -1341,7 +1348,7 @@ column_drag_mouse_up: function(e) } } - this.triggerEvent('column_dragend'); + this.triggerEvent('column_dragend', e); return rcube_event.cancel(e); }, diff --git a/program/lib/Roundcube/bootstrap.php b/program/lib/Roundcube/bootstrap.php index 0640a9448..b7e69cb2a 100644 --- a/program/lib/Roundcube/bootstrap.php +++ b/program/lib/Roundcube/bootstrap.php @@ -31,16 +31,25 @@ $config = array( // critical PHP settings here. Only these, which doesn't provide // an error/warning in the logs later. See (#1486307). 'mbstring.func_overload' => 0, - 'suhosin.session.encrypt' => 0, - 'session.auto_start' => 0, - 'file_uploads' => 1, 'magic_quotes_runtime' => 0, 'magic_quotes_sybase' => 0, // #1488506 ); + +// check these additional ini settings if not called via CLI +if (php_sapi_name() != 'cli') { + $config += array( + 'suhosin.session.encrypt' => 0, + 'session.auto_start' => 0, + 'file_uploads' => 1, + ); +} + foreach ($config as $optname => $optval) { if ($optval != ini_get($optname) && @ini_set($optname, $optval) === false) { - die("ERROR: Wrong '$optname' option value and it wasn't possible to set it to required value ($optval).\n" - ."Check your PHP configuration (including php_admin_flag)."); + $error = "ERROR: Wrong '$optname' option value and it wasn't possible to set it to required value ($optval).\n" + . "Check your PHP configuration (including php_admin_flag)."; + if (defined('STDERR')) fwrite(STDERR, $error); else echo $error; + exit(1); } } diff --git a/program/lib/Roundcube/html.php b/program/lib/Roundcube/html.php index 592720308..dbc9ca51f 100644 --- a/program/lib/Roundcube/html.php +++ b/program/lib/Roundcube/html.php @@ -35,6 +35,7 @@ class html public static $common_attrib = array('id','class','style','title','align'); public static $containers = array('iframe','div','span','p','h1','h2','h3','form','textarea','table','thead','tbody','tr','th','td','style','script'); + /** * Constructor * @@ -217,7 +218,7 @@ class html $attr = array('src' => $attr); } return self::tag('iframe', $attr, $cont, array_merge(self::$common_attrib, - array('src','name','width','height','border','frameborder'))); + array('src','name','width','height','border','frameborder','onload'))); } /** @@ -332,7 +333,16 @@ class html */ public static function quote($str) { - return @htmlspecialchars($str, ENT_COMPAT, RCUBE_CHARSET); + static $flags; + + if (!$flags) { + $flags = ENT_COMPAT; + if (defined('ENT_SUBSTITUTE')) { + $flags |= ENT_SUBSTITUTE; + } + } + + return @htmlspecialchars($str, $flags, RCUBE_CHARSET); } } diff --git a/program/lib/Roundcube/rcube.php b/program/lib/Roundcube/rcube.php index 3ae511e1e..b681f0531 100644 --- a/program/lib/Roundcube/rcube.php +++ b/program/lib/Roundcube/rcube.php @@ -405,6 +405,7 @@ class rcube $sess_domain = $this->config->get('session_domain'); $sess_path = $this->config->get('session_path'); $lifetime = $this->config->get('session_lifetime', 0) * 60; + $is_secure = $this->config->get('use_https') || rcube_utils::https_check(); // set session domain if ($sess_domain) { @@ -419,7 +420,7 @@ class rcube ini_set('session.gc_maxlifetime', $lifetime * 2); } - ini_set('session.cookie_secure', rcube_utils::https_check()); + ini_set('session.cookie_secure', $is_secure); ini_set('session.name', $sess_name ? $sess_name : 'roundcube_sessid'); ini_set('session.use_cookies', 1); ini_set('session.use_only_cookies', 1); @@ -1081,6 +1082,9 @@ class rcube 'message' => $arg->getMessage(), ); } + else if (is_string($arg)) { + $arg = array('message' => $arg, 'type' => 'php'); + } if (empty($arg['code'])) { $arg['code'] = 500; @@ -1093,14 +1097,24 @@ class rcube return; } - if (($log || $terminate) && $arg['type'] && $arg['message']) { + $cli = php_sapi_name() == 'cli'; + + if (($log || $terminate) && !$cli && $arg['type'] && $arg['message']) { $arg['fatal'] = $terminate; self::log_bug($arg); } - // display error page and terminate script - if ($terminate && is_object(self::$instance->output)) { - self::$instance->output->raise_error($arg['code'], $arg['message']); + // terminate script + if ($terminate) { + // display error page + if (is_object(self::$instance->output)) { + self::$instance->output->raise_error($arg['code'], $arg['message']); + } + else if ($cli) { + fwrite(STDERR, 'ERROR: ' . $arg['message']); + } + + exit(1); } } @@ -1139,7 +1153,7 @@ class rcube if (!self::write_log('errors', $log_entry)) { // send error to PHPs error handler if write_log didn't succeed - trigger_error($arg_arr['message']); + trigger_error($arg_arr['message'], E_USER_WARNING); } } diff --git a/program/lib/Roundcube/rcube_contacts.php b/program/lib/Roundcube/rcube_contacts.php index c66e98687..e4fd7dc10 100644 --- a/program/lib/Roundcube/rcube_contacts.php +++ b/program/lib/Roundcube/rcube_contacts.php @@ -626,10 +626,6 @@ class rcube_contacts extends rcube_addressbook $insert_id = $this->db->insert_id($this->db_name); } - // also add the newly created contact to the active group - if ($insert_id && $this->group_id) - $this->add_to_group($this->group_id, $insert_id); - $this->cache = null; return $insert_id; diff --git a/program/lib/Roundcube/rcube_db.php b/program/lib/Roundcube/rcube_db.php index 49bbe5c6e..d86e3dd98 100644 --- a/program/lib/Roundcube/rcube_db.php +++ b/program/lib/Roundcube/rcube_db.php @@ -444,17 +444,20 @@ class rcube_db * * @param mixed $result Optional query handle * @return mixed Number of rows or false on failure + * @deprecated This method shows very poor performance and should be avoided. */ public function num_rows($result = null) { if ($result || ($result === null && ($result = $this->last_result))) { // repeat query with SELECT COUNT(*) ... - if (preg_match('/^SELECT\s+(?:ALL\s+|DISTINCT\s+)?(?:.*?)\s+FROM\s+(.*)$/i', $result->queryString, $m)) { + if (preg_match('/^SELECT\s+(?:ALL\s+|DISTINCT\s+)?(?:.*?)\s+FROM\s+(.*)$/ims', $result->queryString, $m)) { $query = $this->dbh->query('SELECT COUNT(*) FROM ' . $m[1], PDO::FETCH_NUM); return $query ? intval($query->fetchColumn(0)) : false; } else { - return count($result->fetchAll()); + $num = count($result->fetchAll()); + $result->execute(); // re-execute query because there's no seek(0) + return $num; } } @@ -631,6 +634,22 @@ class rcube_db } /** + * Escapes a string so it can be safely used in a query + * + * @param string $str A string to escape + * + * @return string Escaped string for use in a query + */ + public function escape($str) + { + if (is_null($str)) { + return 'NULL'; + } + + return substr($this->quote($str), 1, -1); + } + + /** * Quotes a string so it can be safely used as a table or column name * * @param string $str Value to quote @@ -645,6 +664,20 @@ class rcube_db } /** + * Escapes a string so it can be safely used in a query + * + * @param string $str A string to escape + * + * @return string Escaped string for use in a query + * @deprecated Replaced by rcube_db::escape + * @see rcube_db::escape + */ + public function escapeSimple($str) + { + return $this->escape($str); + } + + /** * Quotes a string so it can be safely used as a table or column name * * @param string $str Value to quote @@ -813,11 +846,9 @@ class rcube_db { $rcube = rcube::get_instance(); - // return table name if configured - $config_key = 'db_table_'.$table; - - if ($name = $rcube->config->get($config_key)) { - return $name; + // add prefix to the table name if configured + if ($prefix = $rcube->config->get('db_prefix')) { + return $prefix . $table; } return $table; diff --git a/program/lib/Roundcube/rcube_db_pgsql.php b/program/lib/Roundcube/rcube_db_pgsql.php index cf23c5e48..adfd2207b 100644 --- a/program/lib/Roundcube/rcube_db_pgsql.php +++ b/program/lib/Roundcube/rcube_db_pgsql.php @@ -53,19 +53,20 @@ class rcube_db_pgsql extends rcube_db /** * Return correct name for a specific database sequence * - * @param string $sequence Secuence name + * @param string $table Table name * * @return string Translated sequence name */ - protected function sequence_name($sequence) + protected function sequence_name($table) { - $rcube = rcube::get_instance(); + // Note: we support only one sequence per table + // Note: The sequence name must be <table_name>_seq + $sequence = $table . '_seq'; + $rcube = rcube::get_instance(); // return sequence name if configured - $config_key = 'db_sequence_'.$sequence; - - if ($name = $rcube->config->get($config_key)) { - return $name; + if ($prefix = $rcube->config->get('db_prefix')) { + return $prefix . $sequence; } return $sequence; diff --git a/program/lib/Roundcube/rcube_image.php b/program/lib/Roundcube/rcube_image.php index a55ba1600..735a0df01 100644 --- a/program/lib/Roundcube/rcube_image.php +++ b/program/lib/Roundcube/rcube_image.php @@ -124,6 +124,7 @@ class rcube_image } if ($result === '') { + @chmod($filename, 0600); return $type; } } @@ -183,6 +184,7 @@ class rcube_image } if ($result) { + @chmod($filename, 0600); return $type; } } @@ -223,6 +225,7 @@ class rcube_image $result = rcube::exec($convert . ' 2>&1 -colorspace RGB -quality 75 {in} {type}:{out}', $p); if ($result === '') { + @chmod($filename, 0600); return true; } } @@ -256,6 +259,7 @@ class rcube_image } if ($result) { + @chmod($filename, 0600); return true; } } diff --git a/program/lib/Roundcube/rcube_imap.php b/program/lib/Roundcube/rcube_imap.php index 0aa059c26..c67985186 100644 --- a/program/lib/Roundcube/rcube_imap.php +++ b/program/lib/Roundcube/rcube_imap.php @@ -3372,7 +3372,6 @@ class rcube_imap extends rcube_storage { if (!empty($this->options['fetch_headers'])) { $headers = explode(' ', $this->options['fetch_headers']); - $headers = array_map('strtoupper', $headers); } else { $headers = array(); @@ -3382,7 +3381,7 @@ class rcube_imap extends rcube_storage $headers = array_merge($headers, $this->all_headers); } - return implode(' ', array_unique($headers)); + return $headers; } diff --git a/program/lib/Roundcube/rcube_imap_generic.php b/program/lib/Roundcube/rcube_imap_generic.php index 2ac1355fd..460e6cc92 100644 --- a/program/lib/Roundcube/rcube_imap_generic.php +++ b/program/lib/Roundcube/rcube_imap_generic.php @@ -2265,24 +2265,53 @@ class rcube_imap_generic return $result; } - function fetchHeaders($mailbox, $message_set, $is_uid = false, $bodystr = false, $add = '') + /** + * Returns message(s) data (flags, headers, etc.) + * + * @param string $mailbox Mailbox name + * @param mixed $message_set Message(s) sequence identifier(s) or UID(s) + * @param bool $is_uid True if $message_set contains UIDs + * @param bool $bodystr Enable to add BODYSTRUCTURE data to the result + * @param array $add_headers List of additional headers + * + * @return bool|array List of rcube_message_header elements, False on error + */ + function fetchHeaders($mailbox, $message_set, $is_uid = false, $bodystr = false, $add_headers = array()) { $query_items = array('UID', 'RFC822.SIZE', 'FLAGS', 'INTERNALDATE'); - if ($bodystr) + $headers = array('DATE', 'FROM', 'TO', 'SUBJECT', 'CONTENT-TYPE', 'CC', 'REPLY-TO', + 'LIST-POST', 'DISPOSITION-NOTIFICATION-TO', 'X-PRIORITY'); + + if (!empty($add_headers)) { + $add_headers = array_map('strtoupper', $add_headers); + $headers = array_unique(array_merge($headers, $add_headers)); + } + + if ($bodystr) { $query_items[] = 'BODYSTRUCTURE'; - $query_items[] = 'BODY.PEEK[HEADER.FIELDS (' - . 'DATE FROM TO SUBJECT CONTENT-TYPE CC REPLY-TO LIST-POST DISPOSITION-NOTIFICATION-TO X-PRIORITY' - . ($add ? ' ' . trim($add) : '') - . ')]'; + } + + $query_items[] = 'BODY.PEEK[HEADER.FIELDS (' . implode(' ', $headers) . ')]'; $result = $this->fetch($mailbox, $message_set, $is_uid, $query_items); return $result; } - function fetchHeader($mailbox, $id, $uidfetch=false, $bodystr=false, $add='') + /** + * Returns message data (flags, headers, etc.) + * + * @param string $mailbox Mailbox name + * @param int $id Message sequence identifier or UID + * @param bool $is_uid True if $id is an UID + * @param bool $bodystr Enable to add BODYSTRUCTURE data to the result + * @param array $add_headers List of additional headers + * + * @return bool|rcube_message_header Message data, False on error + */ + function fetchHeader($mailbox, $id, $is_uid = false, $bodystr = false, $add_headers = array()) { - $a = $this->fetchHeaders($mailbox, $id, $uidfetch, $bodystr, $add); + $a = $this->fetchHeaders($mailbox, $id, $is_uid, $bodystr, $add_headers); if (is_array($a)) { return array_shift($a); } @@ -3638,8 +3667,20 @@ class rcube_imap_generic */ static function strToTime($date) { - // support non-standard "GMTXXXX" literal - $date = preg_replace('/GMT\s*([+-][0-9]+)/', '\\1', $date); + // Clean malformed data + $date = preg_replace( + array( + '/GMT\s*([+-][0-9]+)/', // support non-standard "GMTXXXX" literal + '/[^a-z0-9\x20\x09:+-]/i', // remove any invalid characters + '/\s*(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s*/i', // remove weekday names + ), + array( + '\\1', + '', + '', + ), $date); + + $date = trim($date); // if date parsing fails, we have a date in non-rfc format // remove token from the end and try again diff --git a/program/lib/Roundcube/rcube_message.php b/program/lib/Roundcube/rcube_message.php index 42d7b9bbe..9db1fa30a 100644 --- a/program/lib/Roundcube/rcube_message.php +++ b/program/lib/Roundcube/rcube_message.php @@ -85,12 +85,13 @@ class rcube_message $this->headers = $this->storage->get_message($uid); - if (!$this->headers) + if (!$this->headers) { return; + } $this->mime = new rcube_mime($this->headers->charset); - $this->subject = $this->mime->decode_mime_string($this->headers->subject); + $this->subject = $this->headers->get('subject'); list(, $this->sender) = each($this->mime->decode_address_list($this->headers->from, 1)); $this->set_safe((intval($_GET['_safe']) || $_SESSION['safe_messages'][$this->folder.':'.$uid])); @@ -125,15 +126,11 @@ class rcube_message */ public function get_header($name, $raw = false) { - if (empty($this->headers)) + if (empty($this->headers)) { return null; + } - if ($this->headers->$name) - $value = $this->headers->$name; - else if ($this->headers->others[$name]) - $value = $this->headers->others[$name]; - - return $raw ? $value : $this->mime->decode_header($value); + return $this->headers->get($name, !$raw); } @@ -152,12 +149,13 @@ class rcube_message * Compose a valid URL for getting a message part * * @param string $mime_id Part MIME-ID + * @param mixed $embed Mimetype class for parts to be embedded * @return string URL or false if part does not exist */ public function get_part_url($mime_id, $embed = false) { if ($this->mime_parts[$mime_id]) - return $this->opt['get_url'] . '&_part=' . $mime_id . ($embed ? '&_embed=1' : ''); + return $this->opt['get_url'] . '&_part=' . $mime_id . ($embed ? '&_embed=1&_mimeclass=' . $embed : ''); else return false; } @@ -364,7 +362,7 @@ class rcube_message // parse headers from message/rfc822 part if (!isset($structure->headers['subject']) && !isset($structure->headers['from'])) { - list($headers, $dump) = explode("\r\n\r\n", $this->get_part_content($structure->mime_id, null, true, 8192)); + list($headers, $dump) = explode("\r\n\r\n", $this->get_part_content($structure->mime_id, null, true, 32768)); $structure->headers = rcube_mime::parse_headers($headers); } } @@ -372,7 +370,8 @@ class rcube_message $mimetype = $structure->mimetype; // show message headers - if ($recursive && is_array($structure->headers) && (isset($structure->headers['subject']) || isset($structure->headers['from']))) { + if ($recursive && is_array($structure->headers) && + (isset($structure->headers['subject']) || $structure->headers['from'] || $structure->headers['to'])) { $c = new stdClass; $c->type = 'headers'; $c->headers = $structure->headers; @@ -486,14 +485,6 @@ class rcube_message $this->parts[] = $c; } - // add html part as attachment - if ($html_part !== null && $structure->parts[$html_part] !== $print_part) { - $html_part = $structure->parts[$html_part]; - $html_part->mimetype = 'text/html'; - - $this->attachments[] = $html_part; - } - // add unsupported/unrecognized parts to attachments list if ($attach_part) { $this->attachments[] = $structure->parts[$attach_part]; @@ -578,10 +569,6 @@ class rcube_message if (!empty($mail_part->filename)) { $this->attachments[] = $mail_part; } - // list html part as attachment (here the part is most likely inside a multipart/related part) - else if ($this->parse_alternative && ($secondary_type == 'html' && !$this->opt['prefer_html'])) { - $this->attachments[] = $mail_part; - } } // part message/* else if ($primary_type == 'message') { @@ -657,7 +644,7 @@ class rcube_message $img_regexp = '/^image\/(gif|jpe?g|png|tiff|bmp|svg)/'; foreach ($this->inline_parts as $inline_object) { - $part_url = $this->get_part_url($inline_object->mime_id, true); + $part_url = $this->get_part_url($inline_object->mime_id, $inline_object->ctype_primary); if (isset($inline_object->content_id)) $a_replaces['cid:'.$inline_object->content_id] = $part_url; if ($inline_object->content_location) { diff --git a/program/lib/Roundcube/rcube_message_header.php b/program/lib/Roundcube/rcube_message_header.php index 274ae7f9f..2c5e2b6c8 100644 --- a/program/lib/Roundcube/rcube_message_header.php +++ b/program/lib/Roundcube/rcube_message_header.php @@ -215,7 +215,12 @@ class rcube_message_header $value = $this->others[$name]; } - return $decode ? rcube_mime::decode_header($value, $this->charset) : $value; + if ($decode) { + $value = rcube_mime::decode_header($value, $this->charset); + $value = rcube_charset::clean($value); + } + + return $value; } /** diff --git a/program/lib/Roundcube/rcube_mime.php b/program/lib/Roundcube/rcube_mime.php index b70d681c9..96296a57c 100644 --- a/program/lib/Roundcube/rcube_mime.php +++ b/program/lib/Roundcube/rcube_mime.php @@ -564,82 +564,122 @@ class rcube_mime /** - * Improved wordwrap function. + * Improved wordwrap function with multibyte support. + * The code is based on Zend_Text_MultiByte::wordWrap(). * - * @param string $string Text to wrap - * @param int $width Line width - * @param string $break Line separator - * @param bool $cut Enable to cut word - * @param string $charset Charset of $string + * @param string $string Text to wrap + * @param int $width Line width + * @param string $break Line separator + * @param bool $cut Enable to cut word + * @param string $charset Charset of $string + * @param bool $wrap_quoted When enabled quoted lines will not be wrapped * * @return string Text */ - public static function wordwrap($string, $width=75, $break="\n", $cut=false, $charset=null) + public static function wordwrap($string, $width=75, $break="\n", $cut=false, $charset=null, $wrap_quoted=true) { - if ($charset && function_exists('mb_internal_encoding')) { - mb_internal_encoding($charset); + if (!$charset) { + $charset = RCUBE_CHARSET; } - $para = preg_split('/\r?\n/', $string); - $string = ''; - - while (count($para)) { - $line = array_shift($para); - if ($line[0] == '>') { - $string .= $line . (count($para) ? $break : ''); - continue; + // detect available functions + $strlen_func = function_exists('iconv_strlen') ? 'iconv_strlen' : 'mb_strlen'; + $strpos_func = function_exists('iconv_strpos') ? 'iconv_strpos' : 'mb_strpos'; + $strrpos_func = function_exists('iconv_strrpos') ? 'iconv_strrpos' : 'mb_strrpos'; + $substr_func = function_exists('iconv_substr') ? 'iconv_substr' : 'mb_substr'; + + // Convert \r\n to \n, this is our line-separator + $string = str_replace("\r\n", "\n", $string); + $separator = "\n"; // must be 1 character length + $result = array(); + + while (($stringLength = $strlen_func($string, $charset)) > 0) { + $breakPos = $strpos_func($string, $separator, 0, $charset); + + // quoted line (do not wrap) + if ($wrap_quoted && $string[0] == '>') { + if ($breakPos === $stringLength - 1 || $breakPos === false) { + $subString = $string; + $cutLength = null; + } + else { + $subString = $substr_func($string, 0, $breakPos, $charset); + $cutLength = $breakPos + 1; + } + } + // next line found and current line is shorter than the limit + else if ($breakPos !== false && $breakPos < $width) { + if ($breakPos === $stringLength - 1) { + $subString = $string; + $cutLength = null; + } + else { + $subString = $substr_func($string, 0, $breakPos, $charset); + $cutLength = $breakPos + 1; + } } + else { + $subString = $substr_func($string, 0, $width, $charset); - $list = explode(' ', $line); - $len = 0; - while (count($list)) { - $line = array_shift($list); - $l = mb_strlen($line); - $space = $len ? 1 : 0; - $newlen = $len + $l + $space; - - if ($newlen <= $width) { - $string .= ($space ? ' ' : '').$line; - $len += ($space + $l); + // last line + if ($breakPos === false && $subString === $string) { + $cutLength = null; } else { - if ($l > $width) { - if ($cut) { - $start = 0; - while ($l) { - $str = mb_substr($line, $start, $width); - $strlen = mb_strlen($str); - $string .= ($len ? $break : '').$str; - $start += $strlen; - $l -= $strlen; - $len = $strlen; - } + $nextChar = $substr_func($string, $width, 1, $charset); + + if ($nextChar === ' ' || $nextChar === $separator) { + $afterNextChar = $substr_func($string, $width + 1, 1, $charset); + + if ($afterNextChar === false) { + $subString .= $nextChar; + } + + $cutLength = $strlen_func($subString, $charset) + 1; + } + else { + if ($strrpos_func[0] == 'm') { + $spacePos = $strrpos_func($subString, ' ', 0, $charset); } else { - $string .= ($len ? $break : '').$line; - if (count($list)) { - $string .= $break; + $spacePos = $strrpos_func($subString, ' ', $charset); + } + + if ($spacePos !== false) { + $subString = $substr_func($subString, 0, $spacePos, $charset); + $cutLength = $spacePos + 1; + } + else if ($cut === false) { + $spacePos = $strpos_func($string, ' ', 0, $charset); + + if ($spacePos !== false && $spacePos < $breakPos) { + $subString = $substr_func($string, 0, $spacePos, $charset); + $cutLength = $spacePos + 1; + } + else { + $subString = $string; + $cutLength = null; } - $len = 0; } - } - else { - $string .= $break.$line; - $len = $l; + else { + $subString = $substr_func($subString, 0, $width, $charset); + $cutLength = $width; + } } } } - if (count($para)) { - $string .= $break; - } - } + $result[] = $subString; - if ($charset && function_exists('mb_internal_encoding')) { - mb_internal_encoding(RCUBE_CHARSET); + if ($cutLength !== null) { + $string = $substr_func($string, $cutLength, ($stringLength - $cutLength), $charset); + } + else { + break; + } } - return $string; + return implode($break, $result); } @@ -769,11 +809,35 @@ class rcube_mime // fallback to some well-known types most important for daily emails if (empty($mime_types)) { - $mime_extensions = @include(RCUBE_CONFIG_DIR . '/mimetypes.php'); - $mime_extensions += array('gif' => 'image/gif', 'png' => 'image/png', 'jpg' => 'image/jpeg', 'jpeg' => 'image/jpeg', 'tif' => 'image/tiff'); + $mime_extensions = (array) @include(RCUBE_CONFIG_DIR . '/mimetypes.php'); - foreach ($mime_extensions as $ext => $mime) + foreach ($mime_extensions as $ext => $mime) { $mime_types[$mime][] = $ext; + } + } + + // Add some known aliases that aren't included by some mime.types (#1488891) + // the order is important here so standard extensions have higher prio + $aliases = array( + 'image/gif' => array('gif'), + 'image/png' => array('png'), + 'image/x-png' => array('png'), + 'image/jpeg' => array('jpg', 'jpeg', 'jpe'), + 'image/jpg' => array('jpg', 'jpeg', 'jpe'), + 'image/pjpeg' => array('jpg', 'jpeg', 'jpe'), + 'image/tiff' => array('tif'), + 'message/rfc822' => array('eml'), + 'text/x-mail' => array('eml'), + ); + + foreach ($aliases as $mime => $exts) { + $mime_types[$mime] = array_unique(array_merge((array) $mime_types[$mime], $exts)); + + foreach ($exts as $ext) { + if (!isset($mime_extensions[$ext])) { + $mime_extensions[$ext] = $mime; + } + } } return $mimetype ? $mime_types[$mimetype] : $mime_extensions; diff --git a/program/lib/Roundcube/rcube_plugin.php b/program/lib/Roundcube/rcube_plugin.php index 9ea0f73d3..d24a2693c 100644 --- a/program/lib/Roundcube/rcube_plugin.php +++ b/program/lib/Roundcube/rcube_plugin.php @@ -60,6 +60,14 @@ abstract class rcube_plugin */ public $noframe = false; + /** + * A list of config option names that can be modified + * by the user via user interface (with save-prefs command) + * + * @var array + */ + public $allowed_prefs; + protected $home; protected $urlbase; private $mytask; @@ -84,6 +92,16 @@ abstract class rcube_plugin abstract function init(); /** + * Provide information about this + * + * @return array Meta information about a plugin or false if not implemented + */ + public static function info() + { + return false; + } + + /** * Attempt to load the given plugin which is required for the current plugin * * @param string Plugin name diff --git a/program/lib/Roundcube/rcube_plugin_api.php b/program/lib/Roundcube/rcube_plugin_api.php index 111c177d9..4bb6c6677 100644 --- a/program/lib/Roundcube/rcube_plugin_api.php +++ b/program/lib/Roundcube/rcube_plugin_api.php @@ -36,6 +36,7 @@ class rcube_plugin_api public $task = ''; public $output; public $handlers = array(); + public $allowed_prefs = array(); protected $plugins = array(); protected $tasks = array(); @@ -202,6 +203,11 @@ class rcube_plugin_api $plugin->init(); $this->plugins[$plugin_name] = $plugin; } + + if (!empty($plugin->allowed_prefs)) { + $this->allowed_prefs = array_merge($this->allowed_prefs, $plugin->allowed_prefs); + } + return true; } } @@ -222,6 +228,120 @@ class rcube_plugin_api } /** + * Get information about a specific plugin. + * This is either provided my a plugin's info() method or extracted from a package.xml or a composer.json file + * + * @param string Plugin name + * @return array Meta information about a plugin or False if plugin was not found + */ + public function get_info($plugin_name) + { + static $composer_lock, $license_uris = array( + 'Apache' => 'http://www.apache.org/licenses/LICENSE-2.0.html', + 'Apache-2' => 'http://www.apache.org/licenses/LICENSE-2.0.html', + 'Apache-1' => 'http://www.apache.org/licenses/LICENSE-1.0', + 'Apache-1.1' => 'http://www.apache.org/licenses/LICENSE-1.1', + 'GPL' => 'http://www.gnu.org/licenses/gpl.html', + 'GPLv2' => 'http://www.gnu.org/licenses/gpl-2.0.html', + 'GPL-2.0' => 'http://www.gnu.org/licenses/gpl-2.0.html', + 'GPLv3' => 'http://www.gnu.org/licenses/gpl-3.0.html', + 'GPL-3.0' => 'http://www.gnu.org/licenses/gpl-3.0.html', + 'GPL-3.0+' => 'http://www.gnu.org/licenses/gpl.html', + 'GPL-2.0+' => 'http://www.gnu.org/licenses/gpl.html', + 'LGPL' => 'http://www.gnu.org/licenses/lgpl.html', + 'LGPLv2' => 'http://www.gnu.org/licenses/lgpl-2.0.html', + 'LGPLv2.1' => 'http://www.gnu.org/licenses/lgpl-2.1.html', + 'LGPLv3' => 'http://www.gnu.org/licenses/lgpl.html', + 'LGPL-2.0' => 'http://www.gnu.org/licenses/lgpl-2.0.html', + 'LGPL-2.1' => 'http://www.gnu.org/licenses/lgpl-2.1.html', + 'LGPL-3.0' => 'http://www.gnu.org/licenses/lgpl.html', + 'LGPL-3.0+' => 'http://www.gnu.org/licenses/lgpl.html', + 'BSD' => 'http://opensource.org/licenses/bsd-license.html', + 'BSD-2-Clause' => 'http://opensource.org/licenses/BSD-2-Clause', + 'BSD-3-Clause' => 'http://opensource.org/licenses/BSD-3-Clause', + 'FreeBSD' => 'http://opensource.org/licenses/BSD-2-Clause', + 'MIT' => 'http://www.opensource.org/licenses/mit-license.php', + 'PHP' => 'http://opensource.org/licenses/PHP-3.0', + 'PHP-3' => 'http://www.php.net/license/3_01.txt', + 'PHP-3.0' => 'http://www.php.net/license/3_0.txt', + 'PHP-3.01' => 'http://www.php.net/license/3_01.txt', + ); + + $dir = dir($this->dir); + $fn = unslashify($dir->path) . DIRECTORY_SEPARATOR . $plugin_name . DIRECTORY_SEPARATOR . $plugin_name . '.php'; + $info = false; + + if (!class_exists($plugin_name)) + include($fn); + + if (class_exists($plugin_name)) + $info = $plugin_name::info(); + + // fall back to composer.json file + if (!$info) { + $composer = INSTALL_PATH . "/plugins/$plugin_name/composer.json"; + if (file_exists($composer) && ($json = @json_decode(file_get_contents($composer), true))) { + list($info['vendor'], $info['name']) = explode('/', $json['name']); + $info['license'] = $json['license']; + if ($license_uri = $license_uris[$info['license']]) + $info['license_uri'] = $license_uri; + } + + // read local composer.lock file (once) + if (!isset($composer_lock)) { + $composer_lock = @json_decode(@file_get_contents(INSTALL_PATH . "/composer.lock"), true); + if ($composer_lock['packages']) { + foreach ($composer_lock['packages'] as $i => $package) { + $composer_lock['installed'][$package['name']] = $package; + } + } + } + + // load additional information from local composer.lock file + if ($lock = $composer_lock['installed'][$json['name']]) { + $info['version'] = $lock['version']; + $info['uri'] = $lock['homepage'] ? $lock['homepage'] : $lock['source']['uri']; + $info['src_uri'] = $lock['dist']['uri'] ? $lock['dist']['uri'] : $lock['source']['uri']; + } + } + + // fall back to package.xml file + if (!$info) { + $package = INSTALL_PATH . "/plugins/$plugin_name/package.xml"; + if (file_exists($package) && ($file = file_get_contents($package))) { + $doc = new DOMDocument(); + $doc->loadXML($file); + $xpath = new DOMXPath($doc); + $xpath->registerNamespace('rc', "http://pear.php.net/dtd/package-2.0"); + $data = array(); + + // XPaths of plugin metadata elements + $metadata = array( + 'name' => 'string(//rc:package/rc:name)', + 'version' => 'string(//rc:package/rc:version/rc:release)', + 'license' => 'string(//rc:package/rc:license)', + 'license_uri' => 'string(//rc:package/rc:license/@uri)', + 'src_uri' => 'string(//rc:package/rc:srcuri)', + 'uri' => 'string(//rc:package/rc:uri)', + ); + + foreach ($metadata as $key => $path) { + $info[$key] = $xpath->evaluate($path); + } + + // dependent required plugins (can be used, but not included in config) + $deps = $xpath->evaluate('//rc:package/rc:dependencies/rc:required/rc:package/rc:name'); + for ($i = 0; $i < $deps->length; $i++) { + $dn = $deps->item($i)->nodeValue; + $info['requires'][] = $dn; + } + } + } + + return $info; + } + + /** * Allows a plugin object to register a callback for a certain hook * * @param string $hook Hook name diff --git a/program/lib/Roundcube/rcube_session.php b/program/lib/Roundcube/rcube_session.php index 82ff8a804..dedde2284 100644 --- a/program/lib/Roundcube/rcube_session.php +++ b/program/lib/Roundcube/rcube_session.php @@ -203,10 +203,15 @@ class rcube_session if (is_array($a_oldvars)) { // remove unset keys on oldvars foreach ((array)$this->unsets as $var) { - $path = explode('.', $var); - $k = array_pop($path); - $node = &$this->get_node($path, $a_oldvars); - unset($node[$k]); + if (isset($a_oldvars[$var])) { + unset($a_oldvars[$var]); + } + else { + $path = explode('.', $var); + $k = array_pop($path); + $node = &$this->get_node($path, $a_oldvars); + unset($node[$k]); + } } $newvars = $this->serialize(array_merge( @@ -402,7 +407,7 @@ class rcube_session /** * Unset a session variable * - * @param string Varibale name (can be a path denoting a certain node in the session array, e.g. compose.attachments.5) + * @param string Variable name (can be a path denoting a certain node in the session array, e.g. compose.attachments.5) * @return boolean True on success */ public function remove($var=null) @@ -413,10 +418,15 @@ class rcube_session $this->unsets[] = $var; - $path = explode('.', $var); - $key = array_pop($path); - $node = &$this->get_node($path, $_SESSION); - unset($node[$key]); + if (isset($_SESSION[$var])) { + unset($_SESSION[$var]); + } + else { + $path = explode('.', $var); + $key = array_pop($path); + $node = &$this->get_node($path, $_SESSION); + unset($node[$key]); + } return true; } diff --git a/program/lib/Roundcube/rcube_string_replacer.php b/program/lib/Roundcube/rcube_string_replacer.php index b8768bc98..0fc90a55a 100644 --- a/program/lib/Roundcube/rcube_string_replacer.php +++ b/program/lib/Roundcube/rcube_string_replacer.php @@ -95,12 +95,12 @@ class rcube_string_replacer $attrib = (array)$this->options['link_attribs']; $attrib['href'] = $url_prefix . $url; - $i = $this->add($prefix . html::a($attrib, rcube::Q($url)) . $suffix); + $i = $this->add(html::a($attrib, rcube::Q($url)) . $suffix); } // Return valid link for recognized schemes, otherwise // return the unmodified string for unrecognized schemes. - return $i >= 0 ? $this->get_replacement($i) : $matches[0]; + return $i >= 0 ? $prefix . $this->get_replacement($i) : $matches[0]; } /** diff --git a/program/lib/Roundcube/rcube_utils.php b/program/lib/Roundcube/rcube_utils.php index 1ae782a25..fabe0f060 100644 --- a/program/lib/Roundcube/rcube_utils.php +++ b/program/lib/Roundcube/rcube_utils.php @@ -729,8 +729,20 @@ class rcube_utils return $date; } - // support non-standard "GMTXXXX" literal - $date = preg_replace('/GMT\s*([+-][0-9]+)/', '\\1', $date); + // Clean malformed data + $date = preg_replace( + array( + '/GMT\s*([+-][0-9]+)/', // support non-standard "GMTXXXX" literal + '/[^a-z0-9\x20\x09:+-]/i', // remove any invalid characters + '/\s*(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s*/i', // remove weekday names + ), + array( + '\\1', + '', + '', + ), $date); + + $date = trim($date); // if date parsing fails, we have a date in non-rfc format. // remove token from the end and try again diff --git a/program/lib/Roundcube/rcube_vcard.php b/program/lib/Roundcube/rcube_vcard.php index de28767f8..54bb9521d 100644 --- a/program/lib/Roundcube/rcube_vcard.php +++ b/program/lib/Roundcube/rcube_vcard.php @@ -491,7 +491,9 @@ class rcube_vcard if (preg_match('/^END:VCARD$/i', $line)) { // parse vcard $obj = new rcube_vcard(self::cleanup($vcard_block), $charset, true, self::$fieldmap); - if (!empty($obj->displayname) || !empty($obj->email)) { + // FN and N is required by vCard format (RFC 2426) + // on import we can be less restrictive, let's addressbook decide + if (!empty($obj->displayname) || !empty($obj->surname) || !empty($obj->firstname) || !empty($obj->email)) { $out[] = $obj; } diff --git a/program/localization/ar_SA/labels.inc b/program/localization/ar_SA/labels.inc index 7dc8c15ad..cc023c31c 100644 --- a/program/localization/ar_SA/labels.inc +++ b/program/localization/ar_SA/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'الصفحة الحالية'; $labels['unread'] = 'غير المقروءة'; $labels['flagged'] = 'موسوم'; $labels['unanswered'] = 'بلا رد'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'محذوف'; $labels['undeleted'] = 'غير محذوفة'; $labels['invert'] = 'عكس'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'إزالة التوقيع من الرسالة $labels['autoaddsignature'] = 'إضافة التوقيع آلياً'; $labels['newmessageonly'] = 'الرسالة الجديدة فقط'; $labels['replyandforwardonly'] = 'الردود والتمريرات فقط'; -$labels['replysignaturepos'] = 'إضافة التوقيع عند الرد أو التمرير'; -$labels['belowquote'] = 'بعد الاقتباس'; -$labels['abovequote'] = 'قبل الاقتباس'; $labels['insertsignature'] = 'إضافة التوقيع'; $labels['previewpanemarkread'] = 'تحديد الرسائل المُعاينة كمقروءة'; $labels['afternseconds'] = 'بعد $n ثواني'; diff --git a/program/localization/ast/labels.inc b/program/localization/ast/labels.inc index 996c6043f..c6207c0d7 100644 --- a/program/localization/ast/labels.inc +++ b/program/localization/ast/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'Ensin lleer'; $labels['flagged'] = 'Marcáu'; $labels['unanswered'] = 'Ensin contestar'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Desaniciáu'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Invertir'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/az_AZ/labels.inc b/program/localization/az_AZ/labels.inc index 60e861177..7d25c9234 100644 --- a/program/localization/az_AZ/labels.inc +++ b/program/localization/az_AZ/labels.inc @@ -64,7 +64,7 @@ $labels['copy'] = 'Kopyala'; $labels['move'] = 'Köçür'; $labels['moveto'] = 'Burada köçür...'; $labels['download'] = 'Endir'; -$labels['open'] = 'Open'; +$labels['open'] = 'Aç'; $labels['showattachment'] = 'Göstər'; $labels['showanyway'] = 'İstənilən halda göstər'; @@ -162,6 +162,7 @@ $labels['currpage'] = 'Hazırki səhifəni'; $labels['unread'] = 'Oxunmamışları'; $labels['flagged'] = 'İşarəliləri'; $labels['unanswered'] = 'Cavabsızları'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Silinmişləri'; $labels['undeleted'] = 'Silinməyib'; $labels['invert'] = 'İnvertliləri'; @@ -205,8 +206,8 @@ $labels['body'] = 'Mətn'; $labels['openinextwin'] = 'Yeni pəncərədə aç'; $labels['emlsave'] = 'Saxla (.eml)'; -$labels['changeformattext'] = 'Display in plain text format'; -$labels['changeformathtml'] = 'Display in HTML format'; +$labels['changeformattext'] = 'Sadə mətn formatında göstər'; +$labels['changeformathtml'] = 'HTML formatında göstər'; // message compose $labels['editasnew'] = 'Yeni kimi redaktə et'; @@ -338,8 +339,8 @@ $labels['composeto'] = 'Seçilmiş ünvanlara məktub yaz'; $labels['contactsfromto'] = '$count ünvanının $from - $to arası'; $labels['print'] = 'Çap et'; $labels['export'] = 'İxrac et'; -$labels['exportall'] = 'Export all'; -$labels['exportsel'] = 'Export selected'; +$labels['exportall'] = 'Hamısını İxrac et'; +$labels['exportsel'] = 'Seçilmişləri İxrac et'; $labels['exportvcards'] = 'Ünvanları vCards formatında ixrac et'; $labels['newcontactgroup'] = 'Ünvanlar qrupunu yarat'; $labels['grouprename'] = 'Qruğun adını dəyişdir'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Cavab zamanı imzanı sil'; $labels['autoaddsignature'] = 'İmzanı avtomatik əlavə et'; $labels['newmessageonly'] = 'yalnız yeni məktublarda'; $labels['replyandforwardonly'] = 'Yalnız cavab və yönəldilənlərdə'; -$labels['replysignaturepos'] = 'Cavab və yönəltmə zamanı imzanı bərkid'; -$labels['belowquote'] = 'sitatdan sonra'; -$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'; diff --git a/program/localization/az_AZ/messages.inc b/program/localization/az_AZ/messages.inc index 939827247..418f270be 100644 --- a/program/localization/az_AZ/messages.inc +++ b/program/localization/az_AZ/messages.inc @@ -17,20 +17,22 @@ */ $messages = array(); -$messages['errortitle'] = 'Xəta baş verib!'; -$messages['loginfailed'] = 'Giriş uğursuz oldu'; -$messages['cookiesdisabled'] = 'Sizin brauzer kukiləri qəbul etmir'; -$messages['sessionerror'] = 'Sizin sessiya köhnəlib'; -$messages['storageerror'] = 'IMAP serverlə bağlantı alınmadı'; -$messages['servererror'] = 'Server xətası!'; -$messages['servererrormsg'] = 'Server xətası: $msg'; -$messages['dberror'] = 'Məlumatlar bazasında xəta!'; +$messages['errortitle'] = 'Xəta baş verdi!'; +$messages['loginfailed'] = 'Giriş uğursuz oldu.'; +$messages['cookiesdisabled'] = 'Sizin brauzer kukiləri qəbul etmir.'; +$messages['sessionerror'] = 'Sizin sessiya köhnəlib.'; +$messages['storageerror'] = 'IMAP serverlə bağlantı alınmadı.'; +$messages['servererror'] = 'Server Xətası!'; +$messages['servererrormsg'] = 'Server Xətası: $msg'; +$messages['dberror'] = 'Məlumatlar Bazasında Xəta!'; $messages['requesttimedout'] = 'Sorğunun gözləmə müddəti bitdi'; -$messages['errorreadonly'] = 'Əməliyyatı etmək mümkün deyil. Qovluq yalnız oxunuş üçündür.'; +$messages['errorreadonly'] = 'Əməliyyatı icra 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['erroroverquota'] = 'Əməliyyat icra edilə bilinmir. Boş disk həcmi yoxdur.'; +$messages['erroroverquotadelete'] = 'Boş disk həcmi yoxdur. Məktubu silmək üçün SHIFT+DEL düyməsini istifadə edin.'; $messages['invalidrequest'] = 'Səhv sorğu! Məlumat yaddaşda qalmadı.'; -$messages['invalidhost'] = 'Səhv server adı'; -$messages['nomessagesfound'] = 'Poçt qutusunda məktub tapılmadı'; +$messages['invalidhost'] = 'Səhv server adı.'; +$messages['nomessagesfound'] = 'Poçt qutusunda məktub tapılmadı.'; $messages['loggedout'] = 'Çıxış uğurlu oldu. Sağ olun!'; $messages['mailboxempty'] = 'Poçt qutusu boşdur'; $messages['refreshing'] = 'Yenilənmə...'; diff --git a/program/localization/be_BE/labels.inc b/program/localization/be_BE/labels.inc index db3893ced..3bb5c4436 100644 --- a/program/localization/be_BE/labels.inc +++ b/program/localization/be_BE/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'Unread'; $labels['flagged'] = 'Flagged'; $labels['unanswered'] = 'Unanswered'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Deleted'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/bg_BG/labels.inc b/program/localization/bg_BG/labels.inc index fa92ec042..dfe9d2d26 100644 --- a/program/localization/bg_BG/labels.inc +++ b/program/localization/bg_BG/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Страница'; $labels['unread'] = 'Нови'; $labels['flagged'] = 'Отбелязано'; $labels['unanswered'] = 'Без отговор'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Изтрито'; $labels['undeleted'] = 'Не е изтрит'; $labels['invert'] = 'Инвертирай'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Премахване на предишния $labels['autoaddsignature'] = 'Автоматично добавяне на подпис'; $labels['newmessageonly'] = 'само на нови съобщения'; $labels['replyandforwardonly'] = 'само на отговори и препратени'; -$labels['replysignaturepos'] = 'Поставяне на подпис при отговор или препращане'; -$labels['belowquote'] = 'над цитатът'; -$labels['abovequote'] = 'под цитатът'; $labels['insertsignature'] = 'Вмъкване на подпис'; $labels['previewpanemarkread'] = 'Маркиране на прегледаните съобщения като прочетени'; $labels['afternseconds'] = 'след $n секунди'; diff --git a/program/localization/bn_BD/labels.inc b/program/localization/bn_BD/labels.inc index 0f20bba37..58f4467d3 100644 --- a/program/localization/bn_BD/labels.inc +++ b/program/localization/bn_BD/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'নাদেখা (unread)'; $labels['flagged'] = 'দাগানো (flagged)'; $labels['unanswered'] = 'উত্তর না দেওয়া গুলো'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Deleted'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/br/labels.inc b/program/localization/br/labels.inc index 95756e393..0755a6d9b 100644 --- a/program/localization/br/labels.inc +++ b/program/localization/br/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'Na lennet'; $labels['flagged'] = 'Flagged'; $labels['unanswered'] = 'Unanswered'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Deleted'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/bs_BA/labels.inc b/program/localization/bs_BA/labels.inc index f2a871cdd..d81d97320 100644 --- a/program/localization/bs_BA/labels.inc +++ b/program/localization/bs_BA/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Trenutna stranica'; $labels['unread'] = 'Nepročitano'; $labels['flagged'] = 'Važno'; $labels['unanswered'] = 'Neodgovoreno'; +$labels['withattachment'] = 'Sa prilogom'; $labels['deleted'] = 'Obrisano'; $labels['undeleted'] = 'Nije obrisano'; $labels['invert'] = 'Izokreni'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Prilikom odgovaranja na poruku, ukloni origin $labels['autoaddsignature'] = 'Automatski dodaj potpis'; $labels['newmessageonly'] = 'samo za nove poruke'; $labels['replyandforwardonly'] = 'samo za odgovore i prosljeđivanja'; -$labels['replysignaturepos'] = 'Prilikom odgovaranja ili prosljeđivanja potpis ubaci'; -$labels['belowquote'] = 'ispod citata'; -$labels['abovequote'] = 'iznad citata'; $labels['insertsignature'] = 'Umetni potpis'; $labels['previewpanemarkread'] = 'Obilježi prikazane poruke kao pročitane'; $labels['afternseconds'] = 'nakon $n sekundi'; diff --git a/program/localization/ca_ES/labels.inc b/program/localization/ca_ES/labels.inc index 1bcb526ea..25dbb1155 100644 --- a/program/localization/ca_ES/labels.inc +++ b/program/localization/ca_ES/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Pàgina actual'; $labels['unread'] = 'No llegits'; $labels['flagged'] = 'Marcat'; $labels['unanswered'] = 'No respost'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Suprimit'; $labels['undeleted'] = 'No s\'ha suprimit'; $labels['invert'] = 'Inverteix'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Quan es contesti, suprimeix la signatura orig $labels['autoaddsignature'] = 'Afegeix la signatura automàticament'; $labels['newmessageonly'] = 'només si és un missatge nou'; $labels['replyandforwardonly'] = 'només a respostes i reenviaments'; -$labels['replysignaturepos'] = 'Quan es contesti o reenviï, posa-hi la signatura'; -$labels['belowquote'] = 'sota les cometes'; -$labels['abovequote'] = 'sobre les cometes'; $labels['insertsignature'] = 'Inserta la signatura'; $labels['previewpanemarkread'] = 'Marca els missatges previsualitzats com a llegits'; $labels['afternseconds'] = 'després de $n segons'; diff --git a/program/localization/cs_CZ/labels.inc b/program/localization/cs_CZ/labels.inc index 2240065e7..cb94c71c9 100644 --- a/program/localization/cs_CZ/labels.inc +++ b/program/localization/cs_CZ/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Aktuální stránka'; $labels['unread'] = 'Nepřečtené'; $labels['flagged'] = 'Označené'; $labels['unanswered'] = 'Neoznačené'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Smazané'; $labels['undeleted'] = 'Nesmazáno'; $labels['invert'] = 'Převrátit'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Při odpovídání odstranit ze zprávy půvo $labels['autoaddsignature'] = 'Automaticky přidat podpis'; $labels['newmessageonly'] = 'pouze k novým zprávám'; $labels['replyandforwardonly'] = 'jen k odpovědi a přeposílané zprávě'; -$labels['replysignaturepos'] = 'Při odpovídání nebo přeposílání zprávy vložit podpis'; -$labels['belowquote'] = 'pod citaci'; -$labels['abovequote'] = 'nad citaci'; $labels['insertsignature'] = 'Vložit podpis'; $labels['previewpanemarkread'] = 'Označit zobrazené zprávy jako přečtené'; $labels['afternseconds'] = 'po $n sekundách'; diff --git a/program/localization/cy_GB/labels.inc b/program/localization/cy_GB/labels.inc index 9b695e140..2a22827bf 100644 --- a/program/localization/cy_GB/labels.inc +++ b/program/localization/cy_GB/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Tudalen gyfredol'; $labels['unread'] = 'Heb eu darllen'; $labels['flagged'] = 'Nodwyd'; $labels['unanswered'] = 'Heb ei ateb'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Dilewyd'; $labels['undeleted'] = 'Heb ei ddileu'; $labels['invert'] = 'Gwrth-droi'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Wrth ateb, dileu\'r llofnod gwreiddiol o\'r n $labels['autoaddsignature'] = 'Ychwanegu llofnod yn awtomatig'; $labels['newmessageonly'] = 'negeseuon newydd yn unig'; $labels['replyandforwardonly'] = 'atebion a danfon ymlaen yn unig'; -$labels['replysignaturepos'] = 'Wrth ateb neu ddanfon ymlaen, rhoi\'r llofnod'; -$labels['belowquote'] = 'o dan y dyfynniad'; -$labels['abovequote'] = 'uwchben y dyfynniad'; $labels['insertsignature'] = 'Mewnosod llofnod'; $labels['previewpanemarkread'] = 'Nodi negeseuon rhagolwg fel darllenwyd'; $labels['afternseconds'] = 'ar ôl $n eiliad'; diff --git a/program/localization/da_DK/labels.inc b/program/localization/da_DK/labels.inc index cb4e3b55c..da92c2fcc 100644 --- a/program/localization/da_DK/labels.inc +++ b/program/localization/da_DK/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Aktuel side'; $labels['unread'] = 'Ulæste'; $labels['flagged'] = 'Markeret'; $labels['unanswered'] = 'Ubesvaret'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Slettede'; $labels['undeleted'] = 'Ikke slettet'; $labels['invert'] = 'Invertér'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Fjern original signatur fra besked, når der $labels['autoaddsignature'] = 'Indsæt automatisk signatur'; $labels['newmessageonly'] = 'kun på nye beskeder'; $labels['replyandforwardonly'] = 'kun på svar og videresendelse af beskeder'; -$labels['replysignaturepos'] = 'Når beskeder besvares eller videresendes; indsæt signatur'; -$labels['belowquote'] = 'under det citerede'; -$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'; diff --git a/program/localization/de_CH/labels.inc b/program/localization/de_CH/labels.inc index 98bbd8837..82cee4fe2 100644 --- a/program/localization/de_CH/labels.inc +++ b/program/localization/de_CH/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Aktuelle Seite'; $labels['unread'] = 'Ungelesene'; $labels['flagged'] = 'Markierte'; $labels['unanswered'] = 'Unbeantwortete'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Gelöschte'; $labels['undeleted'] = 'Nicht gelöscht'; $labels['invert'] = 'Umkehren'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Beim Antworten die Signatur der Originalnachr $labels['autoaddsignature'] = 'Signatur automatisch einfügen'; $labels['newmessageonly'] = 'nur bei neuen Nachrichten'; $labels['replyandforwardonly'] = 'nur bei Antworten und Weiterleitungen'; -$labels['replysignaturepos'] = 'Beim Antworten oder Weiterleiten die Signatur'; -$labels['belowquote'] = 'unter der Originalnachricht einfügen'; -$labels['abovequote'] = 'über der Originalnachricht einfügen'; $labels['insertsignature'] = 'Signatur einfügen'; $labels['previewpanemarkread'] = 'Nachricht in Vorschau als gelesen markieren'; $labels['afternseconds'] = 'nach $n Sekunden'; diff --git a/program/localization/de_DE/labels.inc b/program/localization/de_DE/labels.inc index 956e32aa4..211607288 100644 --- a/program/localization/de_DE/labels.inc +++ b/program/localization/de_DE/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Aktuelle Seite'; $labels['unread'] = 'Ungelesene'; $labels['flagged'] = 'Markierte'; $labels['unanswered'] = 'Unbeantwortete'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Gelöschte'; $labels['undeleted'] = 'Nicht gelöscht'; $labels['invert'] = 'Invertieren'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Beim Antworten Signatur der Originalnachricht $labels['autoaddsignature'] = 'Signatur automatisch einfügen'; $labels['newmessageonly'] = 'nur bei neuen Nachrichten'; $labels['replyandforwardonly'] = 'nur bei Antworten und Weiterleitungen'; -$labels['replysignaturepos'] = 'Beim Antworten die Signatur'; -$labels['belowquote'] = 'unter der Originalnachricht einfügen'; -$labels['abovequote'] = 'über der Originalnachricht einfügen'; $labels['insertsignature'] = 'Signatur einfügen'; $labels['previewpanemarkread'] = 'Nachricht in Vorschau als gelesen markieren'; $labels['afternseconds'] = 'nach $n Sekunden'; diff --git a/program/localization/el_GR/labels.inc b/program/localization/el_GR/labels.inc index b3166730f..4e1db7002 100644 --- a/program/localization/el_GR/labels.inc +++ b/program/localization/el_GR/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Τρέχουσα σελίδα'; $labels['unread'] = 'Μη αναγνωσμένο'; $labels['flagged'] = 'Σημειωμένο'; $labels['unanswered'] = 'Αναπάντητο'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Διεγραμμένο'; $labels['undeleted'] = 'Μη διεγραμμένο'; $labels['invert'] = 'Αναστροφή'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Όταν το μήνυμα είναι απά $labels['autoaddsignature'] = 'Η υπογραφή να προστίθεται αυτόματα'; $labels['newmessageonly'] = 'μόνο στα νέα μηνύματα'; $labels['replyandforwardonly'] = 'μόνο στις απαντήσεις και προωθήσεις'; -$labels['replysignaturepos'] = 'Όταν γίνεται απάντηση ή προώθηση, η υπογραφή να τοποθετείτε'; -$labels['belowquote'] = 'πάνω από την παράθεση'; -$labels['abovequote'] = 'κάτω από την παράθεση'; $labels['insertsignature'] = 'Προσθήκη υπογραφής'; $labels['previewpanemarkread'] = 'Στα μηνύματα που έγινε προεπισκόπηση να μαρκάρονται σαν αναγνωσμένα'; $labels['afternseconds'] = 'μετά από $n δευτερόλεπτα'; diff --git a/program/localization/en_GB/labels.inc b/program/localization/en_GB/labels.inc index 49b6be519..8d5509b64 100644 --- a/program/localization/en_GB/labels.inc +++ b/program/localization/en_GB/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'Unread'; $labels['flagged'] = 'Flagged'; $labels['unanswered'] = 'Unanswered'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Deleted'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc index 252e0ce68..3e1bde0a5 100644 --- a/program/localization/en_US/labels.inc +++ b/program/localization/en_US/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'Unread'; $labels['flagged'] = 'Flagged'; $labels['unanswered'] = 'Unanswered'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Deleted'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/eo/labels.inc b/program/localization/eo/labels.inc index 823fc25cb..bb678479e 100644 --- a/program/localization/eo/labels.inc +++ b/program/localization/eo/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Nuna paĝo'; $labels['unread'] = 'Nelegitan'; $labels['flagged'] = 'Markita'; $labels['unanswered'] = 'Nerespondita'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Forigita'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Inversigu'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/es_AR/labels.inc b/program/localization/es_AR/labels.inc index 3e6793e51..b4b318053 100644 --- a/program/localization/es_AR/labels.inc +++ b/program/localization/es_AR/labels.inc @@ -41,7 +41,7 @@ $labels['junk'] = 'Basura'; // message listing $labels['subject'] = 'Asunto'; $labels['from'] = 'Remitente'; -$labels['sender'] = 'Sender'; +$labels['sender'] = 'Remitente'; $labels['to'] = 'Destinatario'; $labels['cc'] = 'Copia'; $labels['bcc'] = 'Cco'; @@ -52,21 +52,21 @@ $labels['size'] = 'Tamaño'; $labels['priority'] = 'Prioridad'; $labels['organization'] = 'Organización'; $labels['readstatus'] = 'Read status'; -$labels['listoptions'] = 'List options...'; +$labels['listoptions'] = 'Listar opciones...'; $labels['mailboxlist'] = 'Carpetas'; $labels['messagesfromto'] = 'Mensajes $from a $to de $count'; -$labels['threadsfromto'] = 'Threads $from to $to of $count'; +$labels['threadsfromto'] = '$from a $to de $count conversaciones'; $labels['messagenrof'] = 'Mensaje $nr de $count'; -$labels['fromtoshort'] = '$from – $to of $count'; +$labels['fromtoshort'] = '$from – $to de $count'; $labels['copy'] = 'Copiar'; $labels['move'] = 'Mover'; $labels['moveto'] = 'Mover a...'; $labels['download'] = 'Descargar'; $labels['open'] = 'Open'; -$labels['showattachment'] = 'Show'; -$labels['showanyway'] = 'Show it anyway'; +$labels['showattachment'] = 'Mostrar'; +$labels['showanyway'] = 'Mostrar esto siempre'; $labels['filename'] = 'Nombre del archivo'; $labels['filesize'] = 'Tamaño del archivo'; @@ -122,18 +122,18 @@ $labels['longdec'] = 'Diciembre'; $labels['today'] = 'Hoy'; // toolbar buttons -$labels['refresh'] = 'Refresh'; +$labels['refresh'] = 'Actualizar'; $labels['checkmail'] = 'Revisar si hay nuevos mensajes'; $labels['compose'] = 'Escribir un mensaje'; $labels['writenewmessage'] = 'Crear nuevo mensaje'; -$labels['reply'] = 'Reply'; +$labels['reply'] = 'Responder'; $labels['replytomessage'] = 'Responder mensaje'; $labels['replytoallmessage'] = 'Responder al emisor y a todos los destinatarios'; -$labels['replyall'] = 'Reply all'; -$labels['replylist'] = 'Reply list'; -$labels['forward'] = 'Forward'; -$labels['forwardinline'] = 'Forward inline'; -$labels['forwardattachment'] = 'Forward as attachment'; +$labels['replyall'] = 'Responder a todos'; +$labels['replylist'] = 'Responder a lista'; +$labels['forward'] = 'Reenviar'; +$labels['forwardinline'] = 'Reenviar en linea'; +$labels['forwardattachment'] = 'Reenviar como adjunto'; $labels['forwardmessage'] = 'Reenviar mensaje'; $labels['deletemessage'] = 'Eliminar mensaje'; $labels['movemessagetotrash'] = 'Mover mensaje a la papelera'; @@ -144,16 +144,16 @@ $labels['nextmessage'] = 'Mostrar siguente mensaje'; $labels['lastmessage'] = 'Mostrar último mensaje'; $labels['backtolist'] = 'Volver a la lista de mensajes'; $labels['viewsource'] = 'Mostrar código'; -$labels['mark'] = 'Mark'; +$labels['mark'] = 'Marcar'; $labels['markmessages'] = 'Marcar mensajes'; $labels['markread'] = 'Como leído'; $labels['markunread'] = 'Como no leído'; $labels['markflagged'] = 'Como marcado'; $labels['markunflagged'] = 'Como no marcado'; -$labels['moreactions'] = 'More actions...'; -$labels['more'] = 'More'; -$labels['back'] = 'Back'; -$labels['options'] = 'Options'; +$labels['moreactions'] = 'Mas acciones...'; +$labels['more'] = 'Más'; +$labels['back'] = 'Atrás'; +$labels['options'] = 'Opciones'; $labels['select'] = 'Elija'; $labels['all'] = 'Todos'; @@ -162,34 +162,35 @@ $labels['currpage'] = 'Página actual'; $labels['unread'] = 'Sin leer'; $labels['flagged'] = 'Marcado'; $labels['unanswered'] = 'Sin respuesta'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Eliminado'; -$labels['undeleted'] = 'Not deleted'; +$labels['undeleted'] = 'No eliminado'; $labels['invert'] = 'Invertir'; $labels['filter'] = 'Filtrar'; -$labels['list'] = 'List'; -$labels['threads'] = 'Threads'; +$labels['list'] = 'Lista'; +$labels['threads'] = 'Conversaciones'; $labels['expand-all'] = 'Expandir Todos'; $labels['expand-unread'] = 'Expandir No Leidos'; $labels['collapse-all'] = 'Colapsar Todos'; -$labels['threaded'] = 'Threaded'; +$labels['threaded'] = 'Como conversaciones'; -$labels['autoexpand_threads'] = 'Expand message threads'; -$labels['do_expand'] = 'all threads'; +$labels['autoexpand_threads'] = 'Expandir mensajes en conversación'; +$labels['do_expand'] = 'todas las conversaciones'; $labels['expand_only_unread'] = 'solo con mensajes no leídos'; -$labels['fromto'] = 'From/To'; -$labels['flag'] = 'Flag'; +$labels['fromto'] = 'De/A'; +$labels['flag'] = 'Marca'; $labels['attachment'] = 'Adjunto'; $labels['nonesort'] = 'Ninguno'; $labels['sentdate'] = 'Fecha de Enviado'; $labels['arrival'] = 'Fecha de Recepción'; $labels['asc'] = 'Ascendente'; $labels['desc'] = 'Descendente'; -$labels['listcolumns'] = 'List columns'; -$labels['listsorting'] = 'Sorting column'; -$labels['listorder'] = 'Sorting order'; +$labels['listcolumns'] = 'Listar columnas'; +$labels['listsorting'] = 'Ordenar por'; +$labels['listorder'] = 'Ordenado por'; $labels['listmode'] = 'List view mode'; -$labels['folderactions'] = 'Folder actions...'; +$labels['folderactions'] = 'Acciones de carpeta...'; $labels['compact'] = 'Compactar'; $labels['empty'] = 'Vaciar'; @@ -210,29 +211,29 @@ $labels['changeformathtml'] = 'Display in HTML format'; // message compose $labels['editasnew'] = 'Editar como nuevo'; -$labels['send'] = 'Send'; +$labels['send'] = 'Enviar'; $labels['sendmessage'] = 'Enviar ahora el mensaje'; $labels['savemessage'] = 'Guardar como borrador'; $labels['addattachment'] = 'Añadir un archivo'; $labels['charset'] = 'Codificación'; $labels['editortype'] = 'Tipo de editor'; $labels['returnreceipt'] = 'Acuse de recibo'; -$labels['dsn'] = 'Delivery status notification'; -$labels['mailreplyintro'] = 'On $date, $sender wrote:'; -$labels['originalmessage'] = 'Original Message'; +$labels['dsn'] = 'Notificación de estado del envío'; +$labels['mailreplyintro'] = 'El $date, $sender escribió:'; +$labels['originalmessage'] = 'Mensaje original'; -$labels['editidents'] = 'Edit identities'; -$labels['spellcheck'] = 'Spell'; +$labels['editidents'] = 'Editar identidades'; +$labels['spellcheck'] = 'Gramática'; $labels['checkspelling'] = 'Revisar ortografía'; $labels['resumeediting'] = 'Continuar edición'; $labels['revertto'] = 'Revertir a'; -$labels['attach'] = 'Attach'; +$labels['attach'] = 'Adjuntar'; $labels['attachments'] = 'Adjuntos'; $labels['upload'] = 'Agregar'; -$labels['uploadprogress'] = '$percent ($current from $total)'; +$labels['uploadprogress'] = '$percent ($current de $total)'; $labels['close'] = 'Cerrar'; -$labels['messageoptions'] = 'Message options...'; +$labels['messageoptions'] = 'Opciones de mensaje...'; $labels['low'] = 'Bajo'; $labels['lowest'] = 'Bajísimo'; @@ -243,9 +244,9 @@ $labels['highest'] = 'Altísimo'; $labels['nosubject'] = '(sin asunto)'; $labels['showimages'] = 'Mostrar imágenes'; $labels['alwaysshow'] = 'Siempre mostrar imágenes de $sender'; -$labels['isdraft'] = 'This is a draft message.'; -$labels['andnmore'] = '$nr more...'; -$labels['togglemoreheaders'] = 'Show more message headers'; +$labels['isdraft'] = 'Este es un borrador.'; +$labels['andnmore'] = '$nr más...'; +$labels['togglemoreheaders'] = 'Mostrarme más encabezados de mensaje'; $labels['togglefullheaders'] = 'Toggle raw message headers'; $labels['htmltoggle'] = 'HTML'; @@ -269,68 +270,68 @@ $labels['receiptnote'] = 'Nota: Esta notificación sólo significa que su mensaj $labels['name'] = 'Nombre completo'; $labels['firstname'] = 'Nombre'; $labels['surname'] = 'Apellido'; -$labels['middlename'] = 'Middle Name'; -$labels['nameprefix'] = 'Prefix'; -$labels['namesuffix'] = 'Suffix'; -$labels['nickname'] = 'Nickname'; -$labels['jobtitle'] = 'Job Title'; -$labels['department'] = 'Department'; -$labels['gender'] = 'Gender'; -$labels['maidenname'] = 'Maiden Name'; +$labels['middlename'] = 'Segundo nombre'; +$labels['nameprefix'] = 'Prefijo'; +$labels['namesuffix'] = 'Subfijo'; +$labels['nickname'] = 'Sobre nombre'; +$labels['jobtitle'] = 'Puesto'; +$labels['department'] = 'Departamento'; +$labels['gender'] = 'Sexo'; +$labels['maidenname'] = 'Apellido de soltera'; $labels['email'] = 'Correo'; -$labels['phone'] = 'Phone'; -$labels['address'] = 'Address'; -$labels['street'] = 'Street'; -$labels['locality'] = 'City'; -$labels['zipcode'] = 'ZIP Code'; -$labels['region'] = 'State/Province'; -$labels['country'] = 'Country'; -$labels['birthday'] = 'Birthday'; -$labels['anniversary'] = 'Anniversary'; -$labels['website'] = 'Website'; -$labels['instantmessenger'] = 'IM'; -$labels['notes'] = 'Notes'; -$labels['male'] = 'male'; -$labels['female'] = 'female'; -$labels['manager'] = 'Manager'; -$labels['assistant'] = 'Assistant'; -$labels['spouse'] = 'Spouse'; -$labels['allfields'] = 'All fields'; -$labels['search'] = 'Search'; -$labels['advsearch'] = 'Advanced Search'; -$labels['advanced'] = 'Advanced'; -$labels['other'] = 'Other'; - -$labels['typehome'] = 'Home'; -$labels['typework'] = 'Work'; -$labels['typeother'] = 'Other'; -$labels['typemobile'] = 'Mobile'; -$labels['typemain'] = 'Main'; -$labels['typehomefax'] = 'Home Fax'; -$labels['typeworkfax'] = 'Work Fax'; -$labels['typecar'] = 'Car'; +$labels['phone'] = 'Teléfono'; +$labels['address'] = 'Dirección'; +$labels['street'] = 'Calle'; +$labels['locality'] = 'Ciudad'; +$labels['zipcode'] = 'Código Postal'; +$labels['region'] = 'Estado/Provincia'; +$labels['country'] = 'País'; +$labels['birthday'] = 'Cumpleaños'; +$labels['anniversary'] = 'Aniversario'; +$labels['website'] = 'Sitio Web'; +$labels['instantmessenger'] = 'Mensajería Instantanea'; +$labels['notes'] = 'Notas'; +$labels['male'] = 'masculino'; +$labels['female'] = 'femenino'; +$labels['manager'] = 'Administrador'; +$labels['assistant'] = 'Asistente'; +$labels['spouse'] = 'Cónygue'; +$labels['allfields'] = 'Todos los campos'; +$labels['search'] = 'Buscar'; +$labels['advsearch'] = 'Búsqueda Avanzada'; +$labels['advanced'] = 'Avanzado'; +$labels['other'] = 'Otro'; + +$labels['typehome'] = 'Particular'; +$labels['typework'] = 'Laboral'; +$labels['typeother'] = 'Otro'; +$labels['typemobile'] = 'Móvil'; +$labels['typemain'] = 'Principal'; +$labels['typehomefax'] = 'Fax Particular'; +$labels['typeworkfax'] = 'Fax Laboral'; +$labels['typecar'] = 'Auto'; $labels['typepager'] = 'Pager'; $labels['typevideo'] = 'Video'; -$labels['typeassistant'] = 'Assistant'; -$labels['typehomepage'] = 'Home Page'; +$labels['typeassistant'] = 'Asistente'; +$labels['typehomepage'] = 'Página Personal'; $labels['typeblog'] = 'Blog'; -$labels['typeprofile'] = 'Profile'; +$labels['typeprofile'] = 'Perfil'; -$labels['addfield'] = 'Add field...'; +$labels['addfield'] = 'Agregar campo...'; $labels['addcontact'] = 'Añadir nuevo contacto'; $labels['editcontact'] = 'Editar contacto'; -$labels['contacts'] = 'Contacts'; -$labels['contactproperties'] = 'Contact properties'; -$labels['personalinfo'] = 'Personal information'; +$labels['contacts'] = 'Contactos'; +$labels['contactproperties'] = 'Propiedades del contacto'; +$labels['personalinfo'] = 'Información personal'; $labels['edit'] = 'Editar'; $labels['cancel'] = 'Cancelar'; $labels['save'] = 'Guardar'; $labels['delete'] = 'Eliminar'; -$labels['rename'] = 'Rename'; -$labels['addphoto'] = 'Add'; -$labels['replacephoto'] = 'Replace'; -$labels['uploadphoto'] = 'Upload photo'; +$labels['rename'] = 'Renombrar'; +$labels['addphoto'] = 'Agregar'; +$labels['replacephoto'] = 'Reemplazar'; +$labels['uploadphoto'] = 'Subir foto'; $labels['newcontact'] = 'Añadir nuevo contacto'; $labels['deletecontact'] = 'Eliminar contactos seleccionados'; @@ -342,9 +343,9 @@ $labels['exportall'] = 'Export all'; $labels['exportsel'] = 'Export selected'; $labels['exportvcards'] = 'Exportar contactos en format vCard'; $labels['newcontactgroup'] = 'Crear Nuevo Grupo de Contacto'; -$labels['grouprename'] = 'Rename group'; -$labels['groupdelete'] = 'Delete group'; -$labels['groupremoveselected'] = 'Remove selected contacts from group'; +$labels['grouprename'] = 'Renombrar grupo'; +$labels['groupdelete'] = 'Eliminar grupo'; +$labels['groupremoveselected'] = 'Remover del grupo los contactos seleccionados'; $labels['previouspage'] = 'Mostrar grupo anterior'; $labels['firstpage'] = 'Mostrar primer grupo'; @@ -355,20 +356,20 @@ $labels['group'] = 'Grupo'; $labels['groups'] = 'Grupos'; $labels['personaladrbook'] = 'Direcciones personales'; -$labels['searchsave'] = 'Save search'; -$labels['searchdelete'] = 'Delete search'; +$labels['searchsave'] = 'Guardar búsqueda'; +$labels['searchdelete'] = 'Eliminar búsqueda'; $labels['import'] = 'Importar'; $labels['importcontacts'] = 'Importar contactos'; $labels['importfromfile'] = 'Importar desde el archivo:'; -$labels['importtarget'] = 'Add new contacts to address book:'; +$labels['importtarget'] = 'Agregar nuevos contactos a la libreta de direcciones:'; $labels['importreplace'] = 'Reemplazar completamente la lista de contactos'; -$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.'; +$labels['importdesc'] = 'Puedes subir contactos desde una libreta de direcciones existente.<br/>Actualmente soportamos la importación de direcciones utilizando el formato <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> o CSV (Valores Separados por Coma).'; $labels['done'] = 'Hecho'; // settings $labels['settingsfor'] = 'Configuración para'; -$labels['about'] = 'About'; +$labels['about'] = 'Acerca de'; $labels['preferences'] = 'Preferencias'; $labels['userpreferences'] = 'Preferencias de usuario'; $labels['editpreferences'] = 'Editar preferencias de usuario'; @@ -385,8 +386,8 @@ $labels['defaultcharset'] = 'Juego de Caracteres por Defecto'; $labels['htmlmessage'] = 'Mensaje HTML'; $labels['messagepart'] = 'Part'; $labels['digitalsig'] = 'Digital Signature'; -$labels['dateformat'] = 'Date format'; -$labels['timeformat'] = 'Time format'; +$labels['dateformat'] = 'Formato de fecha'; +$labels['timeformat'] = 'Formato de tiempo'; $labels['prettydate'] = 'Fecha detallada'; $labels['setdefault'] = 'Seleccionar opción por defecto'; $labels['autodetect'] = 'Automático'; @@ -395,11 +396,11 @@ $labels['timezone'] = 'Zona horaria'; $labels['pagesize'] = 'Filas por página'; $labels['signature'] = 'Firma'; $labels['dstactive'] = 'Cambio de horario'; -$labels['showinextwin'] = 'Open message in a new window'; -$labels['composeextwin'] = 'Compose in a new window'; +$labels['showinextwin'] = 'Abrir mensaje en nueva ventana'; +$labels['composeextwin'] = 'Redactar en nueva ventana'; $labels['htmleditor'] = 'Componer mensaje en HTML'; -$labels['htmlonreply'] = 'on reply to HTML message'; -$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message'; +$labels['htmlonreply'] = 'al responder un mensaje HTML'; +$labels['htmlonreplyandforward'] = 'al reenviar o responder un mensaje HTML'; $labels['htmlsignature'] = 'Firma HTML'; $labels['previewpane'] = 'Mostrar vista preliminar'; $labels['skin'] = 'Apariencia de la interfaz'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Al responder, eliminar la firma del mensaje o $labels['autoaddsignature'] = 'Agregar la firma automáticamente'; $labels['newmessageonly'] = 'nuevos mensajes solamente'; $labels['replyandforwardonly'] = 'respuestas o reenvios solamente'; -$labels['replysignaturepos'] = 'Agregar firma al responder o reenviar'; -$labels['belowquote'] = 'debajo de la cita'; -$labels['abovequote'] = 'sobre la cita'; $labels['insertsignature'] = 'Insertar firma'; $labels['previewpanemarkread'] = 'Marcar mensajes previsualizados como leidos'; $labels['afternseconds'] = 'despues de $n segundos'; diff --git a/program/localization/es_ES/labels.inc b/program/localization/es_ES/labels.inc index cbee58b6e..451b762b6 100644 --- a/program/localization/es_ES/labels.inc +++ b/program/localization/es_ES/labels.inc @@ -64,7 +64,7 @@ $labels['copy'] = 'Copiar'; $labels['move'] = 'Mover'; $labels['moveto'] = 'Mover a…'; $labels['download'] = 'Descargar'; -$labels['open'] = 'Open'; +$labels['open'] = 'Abrir'; $labels['showattachment'] = 'Mostrar'; $labels['showanyway'] = 'Mostrarlo de todos modos'; @@ -162,6 +162,7 @@ $labels['currpage'] = 'Página actual'; $labels['unread'] = 'Sin leer'; $labels['flagged'] = 'Señalado'; $labels['unanswered'] = 'Sin respuesta'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Eliminado'; $labels['undeleted'] = 'No eliminado'; $labels['invert'] = 'Invertir'; @@ -205,8 +206,8 @@ $labels['body'] = 'Cuerpo'; $labels['openinextwin'] = 'Abrir en nueva ventana'; $labels['emlsave'] = 'Descargar (.eml)'; -$labels['changeformattext'] = 'Display in plain text format'; -$labels['changeformathtml'] = 'Display in HTML format'; +$labels['changeformattext'] = 'Mostrar en formato de texto sencillo'; +$labels['changeformathtml'] = 'Mostrar en formato HTML'; // message compose $labels['editasnew'] = 'Editar como nuevo'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Eliminar la firma original del mensaje al res $labels['autoaddsignature'] = 'Añadir firma automáticamente'; $labels['newmessageonly'] = 'solamente mensaje nuevo'; $labels['replyandforwardonly'] = 'respuestas y reenvíos solamente'; -$labels['replysignaturepos'] = 'Colocar firma al responder o reenviar'; -$labels['belowquote'] = 'abajo del texto seleccionado'; -$labels['abovequote'] = 'arriba del texto seleccionado'; $labels['insertsignature'] = 'Insertar firma'; $labels['previewpanemarkread'] = 'Marcar mensaje previsualizado como leído'; $labels['afternseconds'] = 'después de $n segundos'; diff --git a/program/localization/et_EE/labels.inc b/program/localization/et_EE/labels.inc index cb184b086..ad47c15f1 100644 --- a/program/localization/et_EE/labels.inc +++ b/program/localization/et_EE/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Praegune leht'; $labels['unread'] = 'Lugemata'; $labels['flagged'] = 'Märgistatud'; $labels['unanswered'] = 'Vastamata'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Kustutatud'; $labels['undeleted'] = 'Pole kustutatud'; $labels['invert'] = 'Vaheta'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Vastates eemalda kirjast esialgne allkiri'; $labels['autoaddsignature'] = 'Lisa allkiri automaatselt'; $labels['newmessageonly'] = 'ainult uutele'; $labels['replyandforwardonly'] = 'ainult vastates ja edastades'; -$labels['replysignaturepos'] = 'Vastates või edastades aseta allkiri'; -$labels['belowquote'] = 'tsiteeritu alla'; -$labels['abovequote'] = 'tsiteeritu kohale'; $labels['insertsignature'] = 'Sisesta allkiri'; $labels['previewpanemarkread'] = 'Märgi eelvaadatud kirjad loetuks'; $labels['afternseconds'] = '$n sekundi pärast'; diff --git a/program/localization/eu_ES/labels.inc b/program/localization/eu_ES/labels.inc index eb61f4c8c..f6b3cfba6 100644 --- a/program/localization/eu_ES/labels.inc +++ b/program/localization/eu_ES/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Uneko orrialdea'; $labels['unread'] = 'Irakurri gabeak'; $labels['flagged'] = 'Banderaduna'; $labels['unanswered'] = 'Unanswered'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Ezabatuak'; $labels['undeleted'] = 'Ezabatu gabeak'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/fa_AF/labels.inc b/program/localization/fa_AF/labels.inc index 6a4904d7e..c8eab1d2c 100644 --- a/program/localization/fa_AF/labels.inc +++ b/program/localization/fa_AF/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'ناخوانده'; $labels['flagged'] = 'نشانی شده'; $labels['unanswered'] = 'پیامهای جواب نداده شده'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Deleted'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/fa_IR/labels.inc b/program/localization/fa_IR/labels.inc index 8bba66c26..a1c45fb36 100644 --- a/program/localization/fa_IR/labels.inc +++ b/program/localization/fa_IR/labels.inc @@ -22,7 +22,7 @@ $labels = array(); $labels['welcome'] = 'به $product خوش آمدید'; $labels['username'] = 'نام کاربری'; $labels['password'] = 'گذرواژه'; -$labels['server'] = 'سرور'; +$labels['server'] = 'سرویسدهنده'; $labels['login'] = 'ورود'; // taskbar @@ -34,8 +34,8 @@ $labels['addressbook'] = 'دفتر نشانی'; // mailbox names $labels['inbox'] = 'صندوق ورودی'; $labels['drafts'] = 'پیشنویسها'; -$labels['sent'] = 'ارسال شده'; -$labels['trash'] = 'زبالهدان'; +$labels['sent'] = 'فرستاده شده'; +$labels['trash'] = 'سطل آشغال'; $labels['junk'] = 'بنجل'; // message listing @@ -162,6 +162,7 @@ $labels['currpage'] = 'صفحه جاری'; $labels['unread'] = 'خواندهنشده'; $labels['flagged'] = 'پرچمدار'; $labels['unanswered'] = 'پاسخ داده نشده'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'حذف شده'; $labels['undeleted'] = 'حذف نشده'; $labels['invert'] = 'وارونه'; @@ -205,8 +206,8 @@ $labels['body'] = 'بدنه'; $labels['openinextwin'] = 'باز کردن در پنجرهی جدید'; $labels['emlsave'] = 'بارگیری (.eml)'; -$labels['changeformattext'] = 'Display in plain text format'; -$labels['changeformathtml'] = 'Display in HTML format'; +$labels['changeformattext'] = 'نمایش در قالب متنی'; +$labels['changeformathtml'] = 'نمایش در قالب اچتیامال'; // message compose $labels['editasnew'] = 'ویرایش به عنوان جدید'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'هنگام پاسخ امضاء اصلی را $labels['autoaddsignature'] = 'اضافه کردن خودکار امضاء'; $labels['newmessageonly'] = 'فقط پیغام جدید'; $labels['replyandforwardonly'] = 'فقط پاسخها و ارجاعها'; -$labels['replysignaturepos'] = 'هنگام پاسخ یا ارجاع امضاء را قرار داده شود'; -$labels['belowquote'] = 'زیر نقلقول'; -$labels['abovequote'] = 'بالای نقلقول'; $labels['insertsignature'] = 'درج امضاء'; $labels['previewpanemarkread'] = 'نشانهگذاری پیغامهای پیش مرور شده به عنوان خوانده شده'; $labels['afternseconds'] = 'بعد از $s ثانیه'; diff --git a/program/localization/fi_FI/labels.inc b/program/localization/fi_FI/labels.inc index 62c2d6b07..ccf14da93 100644 --- a/program/localization/fi_FI/labels.inc +++ b/program/localization/fi_FI/labels.inc @@ -64,6 +64,7 @@ $labels['copy'] = 'Kopioi'; $labels['move'] = 'Siirrä'; $labels['moveto'] = 'siirrä kansioon...'; $labels['download'] = 'lataa'; +$labels['open'] = 'Avaa'; $labels['showattachment'] = 'Näytä'; $labels['showanyway'] = 'Näytä silti'; @@ -161,6 +162,7 @@ $labels['currpage'] = 'Nykyinen sivu'; $labels['unread'] = 'Lukemattomat'; $labels['flagged'] = 'Korostettu'; $labels['unanswered'] = 'Vastaamaton'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Poistettu'; $labels['undeleted'] = 'Ei poistettu'; $labels['invert'] = 'Käännä'; @@ -204,6 +206,8 @@ $labels['body'] = 'Runko'; $labels['openinextwin'] = 'Avaa uudessa ikkunassa'; $labels['emlsave'] = 'Tallenna (.eml)'; +$labels['changeformattext'] = 'Näytä raakatekstimuodossa'; +$labels['changeformathtml'] = 'Näytä HTML-muodossa'; // message compose $labels['editasnew'] = 'Muokkaa uutena'; @@ -360,7 +364,7 @@ $labels['importcontacts'] = 'Tuo yhteystiedot'; $labels['importfromfile'] = 'Tuo tiedostosta:'; $labels['importtarget'] = 'Lisää uudet yhteystiedot osoitekirjaan:'; $labels['importreplace'] = 'Korvaa koko osoitekirja'; -$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.'; +$labels['importdesc'] = 'Voit tuoda yhteystietoja olemassa olevasta osoitekirjasta.<br/>Tuettuja muotoja ovat <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> ja CSV (pilkuin erotetut arvot).'; $labels['done'] = 'Valmis'; // settings @@ -451,9 +455,6 @@ $labels['replyremovesignature'] = 'Vastattaessa poista alkuperäinen allekirjoit $labels['autoaddsignature'] = 'Lisää allekirjoitus automaattisesti'; $labels['newmessageonly'] = 'vain uuteen viestiin'; $labels['replyandforwardonly'] = 'vain vastauksiin ja välityksiin'; -$labels['replysignaturepos'] = 'Vastattaessa tai välitettäessä laita allekirjoitus'; -$labels['belowquote'] = 'lainauksen alle'; -$labels['abovequote'] = 'lainauksen ylle'; $labels['insertsignature'] = 'Lisää allekirjoitus'; $labels['previewpanemarkread'] = 'Merkitse esikatsellut viestit luetuiksi'; $labels['afternseconds'] = '$n sekunnin jälkeen'; diff --git a/program/localization/fr_FR/labels.inc b/program/localization/fr_FR/labels.inc index 4a78e565f..bc1078e8d 100644 --- a/program/localization/fr_FR/labels.inc +++ b/program/localization/fr_FR/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Page courante'; $labels['unread'] = 'Non lus'; $labels['flagged'] = 'Marqué'; $labels['unanswered'] = 'Non répondu'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Supprimé'; $labels['undeleted'] = 'Non supprimé'; $labels['invert'] = 'Inverser'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'En répondant, supprimer la signature d\'orig $labels['autoaddsignature'] = 'Ajouter la signature automatiquement'; $labels['newmessageonly'] = 'nouveau message uniquement'; $labels['replyandforwardonly'] = 'réponses et transferts uniquement'; -$labels['replysignaturepos'] = 'En répondant ou en transférant, placer la signature'; -$labels['belowquote'] = 'en-dessous de la citation'; -$labels['abovequote'] = 'au-dessus de la citation'; $labels['insertsignature'] = 'Insérer la signature'; $labels['previewpanemarkread'] = 'Marquer les messages prévisualisés comme lus'; $labels['afternseconds'] = 'après $n secondes'; diff --git a/program/localization/fy_NL/labels.inc b/program/localization/fy_NL/labels.inc index d04d7e89c..1db0fe384 100644 --- a/program/localization/fy_NL/labels.inc +++ b/program/localization/fy_NL/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'Unread'; $labels['flagged'] = 'Flagged'; $labels['unanswered'] = 'Unanswered'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Deleted'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/ga_IE/labels.inc b/program/localization/ga_IE/labels.inc index 7169a8800..39541bff8 100755 --- a/program/localization/ga_IE/labels.inc +++ b/program/localization/ga_IE/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'Na rudaí nach bhuil corraithe'; $labels['flagged'] = 'Flagged'; $labels['unanswered'] = 'Unanswered'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Deleted'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/gl_ES/labels.inc b/program/localization/gl_ES/labels.inc index 13fdfa793..49c5f5b68 100644 --- a/program/localization/gl_ES/labels.inc +++ b/program/localization/gl_ES/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Páxina actual'; $labels['unread'] = 'Non lidas'; $labels['flagged'] = 'Marcadas'; $labels['unanswered'] = 'Non respostadas'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Marcadas como eliminadas'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Inverter'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Eliminar a firma do remitente ao respostar'; $labels['autoaddsignature'] = 'Engadir firma automáticamente'; $labels['newmessageonly'] = 'só nas mensaxes novas'; $labels['replyandforwardonly'] = 'só nas respostas e reenvíos'; -$labels['replysignaturepos'] = 'Ao respostar ou reenviar colocar a firma'; -$labels['belowquote'] = 'embaixo do texto citado'; -$labels['abovequote'] = 'enriba do texto citado'; $labels['insertsignature'] = 'Engadir firma'; $labels['previewpanemarkread'] = 'Marcar como lidas as mensaxes previsualizadas'; $labels['afternseconds'] = 'logo de $n segundos'; diff --git a/program/localization/he_IL/labels.inc b/program/localization/he_IL/labels.inc index 698b73493..5176a5f5a 100644 --- a/program/localization/he_IL/labels.inc +++ b/program/localization/he_IL/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'דף נוכחי'; $labels['unread'] = 'לא נקראו'; $labels['flagged'] = 'מסומן'; $labels['unanswered'] = 'לא נענה'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'נמחק'; $labels['undeleted'] = 'לא נמחק'; $labels['invert'] = 'היפוך הסימון'; @@ -456,9 +457,6 @@ $labels['replyremovesignature'] = 'החתימה תוסר מההודעה המקו $labels['autoaddsignature'] = 'הוספה אוטומטית של חתימה'; $labels['newmessageonly'] = 'הודעה חדשה בלבד'; $labels['replyandforwardonly'] = 'מענה והעברת הודעה בלבד'; -$labels['replysignaturepos'] = 'במענה או בהעברת הודעה, החתימה תופיע'; -$labels['belowquote'] = 'בסוף ההודעה המקורית'; -$labels['abovequote'] = 'בתחילת ההודעה המקורית'; $labels['insertsignature'] = 'שיבוץ חתימה'; $labels['previewpanemarkread'] = 'סימון הודעה שנצפתה כנקראה'; $labels['afternseconds'] = 'לאחר $n שניות'; diff --git a/program/localization/hi_IN/labels.inc b/program/localization/hi_IN/labels.inc index 4564e1226..f446a3e65 100644 --- a/program/localization/hi_IN/labels.inc +++ b/program/localization/hi_IN/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'अनदेखी'; $labels['flagged'] = 'Flagged'; $labels['unanswered'] = 'Unanswered'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Deleted'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/hr_HR/labels.inc b/program/localization/hr_HR/labels.inc index bf5364653..fe85feccc 100644 --- a/program/localization/hr_HR/labels.inc +++ b/program/localization/hr_HR/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Trenutna stranica'; $labels['unread'] = 'Nepročitane'; $labels['flagged'] = 'Označene'; $labels['unanswered'] = 'Neodgovrene'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Obrisano'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Obrni'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Kod odgovaranja, makni originalni potpis iz p $labels['autoaddsignature'] = 'Automatski dodaj potpis'; $labels['newmessageonly'] = 'samo nova poruka'; $labels['replyandforwardonly'] = 'samo odgovori i proslijeđivanja'; -$labels['replysignaturepos'] = 'Kod downloada ili proslijeđivanja postavi potpis'; -$labels['belowquote'] = 'ispod citata'; -$labels['abovequote'] = 'iznad citata'; $labels['insertsignature'] = 'Umetni potpis'; $labels['previewpanemarkread'] = 'Obilježi pregledane poruke kao pročitane'; $labels['afternseconds'] = 'nakon $n sekundi'; diff --git a/program/localization/hu_HU/labels.inc b/program/localization/hu_HU/labels.inc index 96c43d146..03846cdff 100644 --- a/program/localization/hu_HU/labels.inc +++ b/program/localization/hu_HU/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Aktuális oldal'; $labels['unread'] = 'Olvasatlan'; $labels['flagged'] = 'Megjelölt'; $labels['unanswered'] = 'Megválaszolatlan'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Törölt'; $labels['undeleted'] = 'Nem lett törölve'; $labels['invert'] = 'Invertálás'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Válasznál az eredeti aláírás eltávolít $labels['autoaddsignature'] = 'Aláírás automatikus hozzáadása'; $labels['newmessageonly'] = 'csak új üzenetnél'; $labels['replyandforwardonly'] = 'válasznál és továbbításnál'; -$labels['replysignaturepos'] = 'Válasznál és továbbításnál kerüljön az aláírás'; -$labels['belowquote'] = 'az idézett szöveg alá'; -$labels['abovequote'] = 'az idézett szöveg fölé'; $labels['insertsignature'] = 'Aláírás beillesztése'; $labels['previewpanemarkread'] = 'Előnézetben megjelent üzenetek megjelölése olvasottként'; $labels['afternseconds'] = '$n másodperc elteltével'; diff --git a/program/localization/hy_AM/labels.inc b/program/localization/hy_AM/labels.inc index 3612dc974..a27a19a9d 100644 --- a/program/localization/hy_AM/labels.inc +++ b/program/localization/hy_AM/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Առկա էջ'; $labels['unread'] = 'Չկարդացածը'; $labels['flagged'] = 'Նշված'; $labels['unanswered'] = 'Անպատասխան'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Ջնջված'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Փոխատեղել'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Պատասխանելիս հեռացնել հ $labels['autoaddsignature'] = 'Ավելացնել ստորագրություն'; $labels['newmessageonly'] = 'միայն նոր հաղորդագրություններում'; $labels['replyandforwardonly'] = 'պատասխաններում և փոխանցումներում'; -$labels['replysignaturepos'] = 'Ավելացնել ստորագրությունը պատասխանելիս կամ փոխանցելիս'; -$labels['belowquote'] = 'Մեջբերման ներքևում'; -$labels['abovequote'] = 'Մեջբերման վերևում'; $labels['insertsignature'] = 'Ներդնել ստորագրությունը'; $labels['previewpanemarkread'] = 'Նշել նախադիտված հաղորդագրությունները որպես ընթերցված'; $labels['afternseconds'] = '$n վարկյան հետո'; diff --git a/program/localization/ia/labels.inc b/program/localization/ia/labels.inc index 89273c147..55e7fc2ad 100644 --- a/program/localization/ia/labels.inc +++ b/program/localization/ia/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'Non legite'; $labels['flagged'] = 'Marcate'; $labels['unanswered'] = 'Unanswered'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Delete'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Inverter'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automaticamente inserta signatura'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insertar signatura'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/id_ID/labels.inc b/program/localization/id_ID/labels.inc index 4877434ed..c75c27196 100644 --- a/program/localization/id_ID/labels.inc +++ b/program/localization/id_ID/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Halaman sekarang'; $labels['unread'] = 'Belum terbaca'; $labels['flagged'] = 'Ditandai'; $labels['unanswered'] = 'Belum terjawab'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Terhapus'; $labels['undeleted'] = 'Tidak terhapus'; $labels['invert'] = 'Sebaliknya'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'ketika membalas pesan hapus tanda tangan dari $labels['autoaddsignature'] = 'Otomatis tambahkan tanda tangan'; $labels['newmessageonly'] = 'Hanya untuk pesan baru'; $labels['replyandforwardonly'] = 'Hanya untuk dijawab dan diteruskan'; -$labels['replysignaturepos'] = 'ketika membalas atau meneruskan pesan tambahkan tanda tangan'; -$labels['belowquote'] = 'Dibawah kutipan'; -$labels['abovequote'] = 'Diatas kutipan'; $labels['insertsignature'] = 'Isi tanda tangan'; $labels['previewpanemarkread'] = 'Tandai pesan yang sudah dilihat'; $labels['afternseconds'] = 'setelah $n detik'; diff --git a/program/localization/is_IS/labels.inc b/program/localization/is_IS/labels.inc index c8d49bf23..b9d3fbc90 100644 --- a/program/localization/is_IS/labels.inc +++ b/program/localization/is_IS/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Núverandi síða'; $labels['unread'] = 'Ólesið'; $labels['flagged'] = 'Flaggað'; $labels['unanswered'] = 'Ósvarað'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Eytt'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Umhverfa'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Þegar svarað fjarlægja upphaflega undirskr $labels['autoaddsignature'] = 'Bæta undirskrift við sjálfkrafa'; $labels['newmessageonly'] = 'ný skeyti eingöngu'; $labels['replyandforwardonly'] = 'svör og áframsendingar eingöngu'; -$labels['replysignaturepos'] = 'Þegar skeytum er svarað eða áframsend setja undirskrift'; -$labels['belowquote'] = 'undir tilvitnun'; -$labels['abovequote'] = 'fyrir ofan tilvitnun'; $labels['insertsignature'] = 'Bæta undirskrift við'; $labels['previewpanemarkread'] = 'Merka forskoðuð skeyti sem lesin'; $labels['afternseconds'] = 'eftir $n sekúndur'; diff --git a/program/localization/it_IT/labels.inc b/program/localization/it_IT/labels.inc index 97be929cf..29b708ec7 100644 --- a/program/localization/it_IT/labels.inc +++ b/program/localization/it_IT/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Pagina corrente'; $labels['unread'] = 'Non letti'; $labels['flagged'] = 'Contrassegnato'; $labels['unanswered'] = 'Senza risposta'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Cancellato'; $labels['undeleted'] = 'Non eliminato'; $labels['invert'] = 'Inverti'; @@ -205,8 +206,8 @@ $labels['body'] = 'Body'; $labels['openinextwin'] = 'Apri in una nuova finestra'; $labels['emlsave'] = 'Scarica (.eml)'; -$labels['changeformattext'] = 'Display in plain text format'; -$labels['changeformathtml'] = 'Display in HTML format'; +$labels['changeformattext'] = 'Visualizza nel formato testo semplice'; +$labels['changeformathtml'] = 'Visualizza nel formato HTML'; // message compose $labels['editasnew'] = 'Modifica come nuovo'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Quando rispondi, rimuovi la firma dal messagg $labels['autoaddsignature'] = 'Aggiungi automaticamente la firma'; $labels['newmessageonly'] = 'solo ai nuovi messaggi'; $labels['replyandforwardonly'] = 'solo alle risposte e inoltri'; -$labels['replysignaturepos'] = 'In risposta o inoltro, posiziona la firma'; -$labels['belowquote'] = 'sotto la citazione'; -$labels['abovequote'] = 'sopra la citazione'; $labels['insertsignature'] = 'Inserisci firma'; $labels['previewpanemarkread'] = 'Segna i messagi in anteprima come letti'; $labels['afternseconds'] = 'dopo $n secondi'; diff --git a/program/localization/ja_JP/labels.inc b/program/localization/ja_JP/labels.inc index 685dba0b3..6f1597593 100644 --- a/program/localization/ja_JP/labels.inc +++ b/program/localization/ja_JP/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = '現在のページ'; $labels['unread'] = '未読'; $labels['flagged'] = 'フラグ付き'; $labels['unanswered'] = '未返信'; +$labels['withattachment'] = '添付ファイルあり'; $labels['deleted'] = '削除済み'; $labels['undeleted'] = '削除済みでない'; $labels['invert'] = '反転'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = '返信時に元の署名をメッセージか $labels['autoaddsignature'] = '自動的に署名を付加'; $labels['newmessageonly'] = '新しいメッセージだけ'; $labels['replyandforwardonly'] = '返信と転送だけ'; -$labels['replysignaturepos'] = '返信や転送で署名を挿入する位置'; -$labels['belowquote'] = '引用の後'; -$labels['abovequote'] = '引用の前'; $labels['insertsignature'] = '署名を挿入'; $labels['previewpanemarkread'] = 'プレビューしたメッセージを既読に設定'; $labels['afternseconds'] = '$n秒後'; diff --git a/program/localization/ka_GE/labels.inc b/program/localization/ka_GE/labels.inc index b3a712515..eb95c8264 100755 --- a/program/localization/ka_GE/labels.inc +++ b/program/localization/ka_GE/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'მიმდინარე გვერდი'; $labels['unread'] = 'წაუკითხავი'; $labels['flagged'] = 'მონიშნული'; $labels['unanswered'] = 'უპასუხო'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'წაშლილი'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'შებრუნებული'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'წაიშალოს ხელმოწ $labels['autoaddsignature'] = 'ავტომატურად დაემატოს ხელმოწერა'; $labels['newmessageonly'] = 'მხოლოდ ახალი შეტყობინება'; $labels['replyandforwardonly'] = 'მხოლოდ გადაგზავნის და პასუხის შემთხვევაში'; -$labels['replysignaturepos'] = 'მხოლოდ პასუხის ან გადაგზავნის შემთხვევაში გაყვეს ხელმოწერა'; -$labels['belowquote'] = 'ციტატის შემდეგ'; -$labels['abovequote'] = 'ციტატამდე'; $labels['insertsignature'] = 'ხელმოცერის ჩასმა'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = '$n წამის შემდეგ'; diff --git a/program/localization/km_KH/labels.inc b/program/localization/km_KH/labels.inc index a344e60c2..f9d57812b 100644 --- a/program/localization/km_KH/labels.inc +++ b/program/localization/km_KH/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'ទំព័រនេះ'; $labels['unread'] = 'មិនទាន់អាន'; $labels['flagged'] = 'មានកំណត់សំគាល់ដោយផ្កាយ'; $labels['unanswered'] = 'មិនទាន់ឆ្លើយតប'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'បានលុបរួច'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'បញ្ច្រស់'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'នៅពេលឆ្លើយតប $labels['autoaddsignature'] = 'បញ្ចូលហត្តលេខាដោយស្វ័យប្រវត្តិ'; $labels['newmessageonly'] = 'សំរាប់សំបុត្រថ្មីតែប៉ុណ្ណោះ'; $labels['replyandforwardonly'] = 'សំរាប់ឆើ្លយតបនិងផ្ញើបន្តតែប៉ុណ្ណោះ'; -$labels['replysignaturepos'] = 'បញ្ចូលហត្តលេខានៅពេលឆើ្លយតបនិងផ្ញើបន្ត'; -$labels['belowquote'] = 'ពីក្រោមសម្រង់អត្ថបទ'; -$labels['abovequote'] = 'ពីលើសម្រង់អត្ថបទ'; $labels['insertsignature'] = 'បញ្ចូលហត្តលេខា'; $labels['previewpanemarkread'] = 'កំណត់សំបុត្រដែលបានបង្ហាញជាសំបុត្របានអានរួច'; $labels['afternseconds'] = 'ក្រោយពី $n វិនាទី'; diff --git a/program/localization/ko_KR/labels.inc b/program/localization/ko_KR/labels.inc index 667fb422a..c1e54590a 100644 --- a/program/localization/ko_KR/labels.inc +++ b/program/localization/ko_KR/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = '현재 페이지'; $labels['unread'] = '읽지 않음'; $labels['flagged'] = '깃발로 표시됨'; $labels['unanswered'] = '답장하지 않음'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = '삭제됨'; $labels['undeleted'] = '삭제되지 않음'; $labels['invert'] = '반전'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = '회신 시 메시지에서 원문 서명을 $labels['autoaddsignature'] = '서명 자동으로 추가'; $labels['newmessageonly'] = '새로운 메시지에만'; $labels['replyandforwardonly'] = '회신 및 전달 시에만'; -$labels['replysignaturepos'] = '회신 또는 전달 시 서명 추가'; -$labels['belowquote'] = '인용문 하단'; -$labels['abovequote'] = '인용문 상단'; $labels['insertsignature'] = '서명 삽입'; $labels['previewpanemarkread'] = '미리 본 메시지를 읽음으로 표시'; $labels['afternseconds'] = '$n초 후'; diff --git a/program/localization/ku/labels.inc b/program/localization/ku/labels.inc index 5c6786502..d4544de91 100644 --- a/program/localization/ku/labels.inc +++ b/program/localization/ku/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'Nexwendî'; $labels['flagged'] = 'Flagged'; $labels['unanswered'] = 'Unanswered'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Deleted'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/lt_LT/labels.inc b/program/localization/lt_LT/labels.inc index 376f9c771..0d6776550 100644 --- a/program/localization/lt_LT/labels.inc +++ b/program/localization/lt_LT/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'matomus šiame puslapyje'; $labels['unread'] = 'neskaitytus'; $labels['flagged'] = 'su gairele'; $labels['unanswered'] = 'neatsakytus'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'pašalintus'; $labels['undeleted'] = 'Neištrintas'; $labels['invert'] = 'invertuoti'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Pašalinti cituojamame laiške esantį paraš $labels['autoaddsignature'] = 'Automatiškai pridėti parašą'; $labels['newmessageonly'] = 'tik naujuose laiškuose'; $labels['replyandforwardonly'] = 'tik atsakymuose ir persiunčiamuose laiškuose'; -$labels['replysignaturepos'] = 'Atsakant ir persiunčiant laiškus, parašą pridėti'; -$labels['belowquote'] = 'po citata'; -$labels['abovequote'] = 'virš citatos'; $labels['insertsignature'] = 'Pridėti parašą'; $labels['previewpanemarkread'] = 'Peržiūros polangyje parodytus laiškus žymėti skaitytais'; $labels['afternseconds'] = 'praėjus $n sek.'; diff --git a/program/localization/lv_LV/labels.inc b/program/localization/lv_LV/labels.inc index a71d5e554..70369b4dd 100644 --- a/program/localization/lv_LV/labels.inc +++ b/program/localization/lv_LV/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Pašreizējā lapa'; $labels['unread'] = 'nelasītās'; $labels['flagged'] = 'iezīmētās'; $labels['unanswered'] = 'neatbildētās'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'dzēstās'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'invertēt'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Atbildot izņemt oriģinālo parakstu no vēs $labels['autoaddsignature'] = 'Automātiski pievienot parakstu'; $labels['newmessageonly'] = 'tikai jaunas vēstules'; $labels['replyandforwardonly'] = 'tikai atbildes un pārsūtījumi'; -$labels['replysignaturepos'] = 'Atbildot vai pārsūtot ievietot parakstu'; -$labels['belowquote'] = 'zem citāta'; -$labels['abovequote'] = 'virs citāta'; $labels['insertsignature'] = 'Ievietot parakstu'; $labels['previewpanemarkread'] = 'Atzīmēt priekšskatītās vēstules kā lasītas'; $labels['afternseconds'] = 'pēc $n sekundēm'; diff --git a/program/localization/mk_MK/labels.inc b/program/localization/mk_MK/labels.inc index c8190276e..dc11b98cc 100755 --- a/program/localization/mk_MK/labels.inc +++ b/program/localization/mk_MK/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'Непрочитани'; $labels['flagged'] = 'Обележано'; $labels['unanswered'] = 'Неодговорено'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Избришано'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Обратно'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'При одговарање отстрани $labels['autoaddsignature'] = 'Автоматски додавај потпис'; $labels['newmessageonly'] = 'само нови писма'; $labels['replyandforwardonly'] = 'само одгорови и препраќања'; -$labels['replysignaturepos'] = 'При одговарање или препраќање стави потпис'; -$labels['belowquote'] = 'под цитираното'; -$labels['abovequote'] = 'над цитираното'; $labels['insertsignature'] = 'Вметни потпис'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/ml_IN/labels.inc b/program/localization/ml_IN/labels.inc index 463256c0e..145d90b83 100644 --- a/program/localization/ml_IN/labels.inc +++ b/program/localization/ml_IN/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'നിലവിലുളള പേജ്'; $labels['unread'] = 'വായിക്കാത്തത്'; $labels['flagged'] = 'അടയാളപ്പെടുത്തിയവ'; $labels['unanswered'] = 'മറുപടി കൊടുക്കാത്ത'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'മായ്ച്ചവ'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'തലതിരിക്കുക'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'പുതിയ സന്ദേശം മാത്രം'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'ഉദ്ധാരണത്തിനു താഴെ'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = '$n നിമിഷങ്ങള് കഴിഞ്ഞു്'; diff --git a/program/localization/mr_IN/labels.inc b/program/localization/mr_IN/labels.inc index 804fb5651..e0143b293 100755 --- a/program/localization/mr_IN/labels.inc +++ b/program/localization/mr_IN/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'सध्याचे पान'; $labels['unread'] = 'न वाचलेले'; $labels['flagged'] = 'खूण लावलेले'; $labels['unanswered'] = 'उत्तर न दिलेले'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'काढून टाकलेला(ले)'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'उलट करा'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'उत्तर देताना मु $labels['autoaddsignature'] = 'आपोआप सही करा'; $labels['newmessageonly'] = 'फक्त नवीन संदेश'; $labels['replyandforwardonly'] = 'फक्त उत्तरे आणी पुढे पाठवलेले संदेश'; -$labels['replysignaturepos'] = 'उत्तर देताना किंवा पुढे पाठवताना सही करा'; -$labels['belowquote'] = 'उतारया खाली'; -$labels['abovequote'] = 'उतारयाच्या वर'; $labels['insertsignature'] = 'सही मध्ये टाका'; $labels['previewpanemarkread'] = 'प्रदर्शित संदेश पाहीले अशी खुण करा'; $labels['afternseconds'] = '$n क्षणानंतर'; diff --git a/program/localization/ms_MY/labels.inc b/program/localization/ms_MY/labels.inc index 43884e986..dae5caada 100644 --- a/program/localization/ms_MY/labels.inc +++ b/program/localization/ms_MY/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Muka terkini'; $labels['unread'] = 'Belum dibaca'; $labels['flagged'] = 'Ditanda'; $labels['unanswered'] = 'Belum dijawab'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Telah dipadam'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Songsangkan'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/nb_NO/labels.inc b/program/localization/nb_NO/labels.inc index ecbe8545e..de71714c6 100644 --- a/program/localization/nb_NO/labels.inc +++ b/program/localization/nb_NO/labels.inc @@ -41,7 +41,7 @@ $labels['junk'] = 'Spam'; // message listing $labels['subject'] = 'Emne'; $labels['from'] = 'Avsender'; -$labels['sender'] = 'Sender'; +$labels['sender'] = 'Avsender'; $labels['to'] = 'Mottaker'; $labels['cc'] = 'Kopi til'; $labels['bcc'] = 'Blindkopi til'; @@ -64,6 +64,7 @@ $labels['copy'] = 'Kopier'; $labels['move'] = 'Flytt'; $labels['moveto'] = 'flytt til...'; $labels['download'] = 'last ned'; +$labels['open'] = 'Open'; $labels['showattachment'] = 'Vis'; $labels['showanyway'] = 'Vis likevel'; @@ -161,6 +162,7 @@ $labels['currpage'] = 'Gjeldende side'; $labels['unread'] = 'Uleste'; $labels['flagged'] = 'Flagget'; $labels['unanswered'] = 'Ubesvarte'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Slettet'; $labels['undeleted'] = 'Ikke slettet'; $labels['invert'] = 'Inverter'; @@ -200,10 +202,12 @@ $labels['quicksearch'] = 'Hurtigsøk'; $labels['resetsearch'] = 'Nullstill søk'; $labels['searchmod'] = 'Søke felt'; $labels['msgtext'] = 'Hele meldingen'; -$labels['body'] = 'Body'; +$labels['body'] = 'Meldingstekst'; $labels['openinextwin'] = 'Åpne i nytt vindu'; $labels['emlsave'] = 'Last ned (.eml)'; +$labels['changeformattext'] = 'Display in plain text format'; +$labels['changeformathtml'] = 'Display in HTML format'; // message compose $labels['editasnew'] = 'Rediger som ny'; @@ -335,8 +339,8 @@ $labels['composeto'] = 'Skriv e-post til'; $labels['contactsfromto'] = 'Kontakter $from til $to av $count'; $labels['print'] = 'Skriv ut'; $labels['export'] = 'Eksporter'; -$labels['exportall'] = 'Export all'; -$labels['exportsel'] = 'Export selected'; +$labels['exportall'] = 'Eksporter alle'; +$labels['exportsel'] = 'Eksporter valgte'; $labels['exportvcards'] = 'Eksporter kontakter i vCard-format'; $labels['newcontactgroup'] = 'Opprett ny kontaktgruppe'; $labels['grouprename'] = 'Endre navn på gruppe'; @@ -380,7 +384,7 @@ $labels['edititem'] = 'Rediger punkt'; $labels['preferhtml'] = 'Foretrekk HTML'; $labels['defaultcharset'] = 'Standard tegnsett'; $labels['htmlmessage'] = 'HTML-melding'; -$labels['messagepart'] = 'Part'; +$labels['messagepart'] = 'Del'; $labels['digitalsig'] = 'Digital signatur'; $labels['dateformat'] = 'Datoformat'; $labels['timeformat'] = 'Tidsformat'; @@ -451,9 +455,6 @@ $labels['replyremovesignature'] = 'Fjern orginalsignaturen i svar på melding'; $labels['autoaddsignature'] = 'Legg til signatur'; $labels['newmessageonly'] = 'kun på nye meldinger'; $labels['replyandforwardonly'] = 'kun i svar og videresendinger'; -$labels['replysignaturepos'] = 'Plassering av signatur ved svar eller videresending'; -$labels['belowquote'] = 'over sitert melding'; -$labels['abovequote'] = 'under sitert melding'; $labels['insertsignature'] = 'Sett inn signatur'; $labels['previewpanemarkread'] = 'Merk forhåndsviste meldinger som lest'; $labels['afternseconds'] = 'etter $n sekunder'; diff --git a/program/localization/ne_NP/labels.inc b/program/localization/ne_NP/labels.inc index 26be68f35..10aa1e2b7 100644 --- a/program/localization/ne_NP/labels.inc +++ b/program/localization/ne_NP/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'नपढिएका |'; $labels['flagged'] = 'Flagged'; $labels['unanswered'] = 'Unanswered'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Deleted'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/nl_BE/labels.inc b/program/localization/nl_BE/labels.inc index 82cf3a023..c9f07fa35 100644 --- a/program/localization/nl_BE/labels.inc +++ b/program/localization/nl_BE/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Huidige pagina'; $labels['unread'] = 'Ongelezen'; $labels['flagged'] = 'Geselecteerd'; $labels['unanswered'] = 'Onbeantwoord'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Verwijderd'; $labels['undeleted'] = 'Niet verwijderd'; $labels['invert'] = 'Selectie omkeren'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Verwijder handtekening uit het origneel bij b $labels['autoaddsignature'] = 'Handtekening automatisch toevoegen'; $labels['newmessageonly'] = 'alleen bij nieuwe berichten'; $labels['replyandforwardonly'] = 'alleen bij beantwoorden en doorsturen'; -$labels['replysignaturepos'] = 'Ondertekening plaatsen bij beantwoorden of doorsturen'; -$labels['belowquote'] = 'onder het citaat'; -$labels['abovequote'] = 'boven het citaat'; $labels['insertsignature'] = 'Handtekening invoegen'; $labels['previewpanemarkread'] = 'Markeer voorbeeldbericht als gelezen'; $labels['afternseconds'] = 'Na $n seconden'; diff --git a/program/localization/nl_NL/labels.inc b/program/localization/nl_NL/labels.inc index 2d34a5135..042879b4b 100644 --- a/program/localization/nl_NL/labels.inc +++ b/program/localization/nl_NL/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Huidige pagina'; $labels['unread'] = 'Ongelezen'; $labels['flagged'] = 'Gemarkeerd'; $labels['unanswered'] = 'Onbeantwoord'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Verwijderd'; $labels['undeleted'] = 'Niet verwijderd'; $labels['invert'] = 'Selectie omkeren'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Verwijder oorspronkelijke ondertekening van b $labels['autoaddsignature'] = 'Ondertekening automatisch toevoegen'; $labels['newmessageonly'] = 'alleen bij nieuwe berichten'; $labels['replyandforwardonly'] = 'alleen bij antwoorden en doorsturen'; -$labels['replysignaturepos'] = 'Ondertekening plaatsen bij antwoorden of doorsturen'; -$labels['belowquote'] = 'onder het citaat'; -$labels['abovequote'] = 'boven het citaat'; $labels['insertsignature'] = 'Ondertekening invoegen'; $labels['previewpanemarkread'] = 'Markeer voorbeeldberichten als gelezen'; $labels['afternseconds'] = 'na $n seconden'; diff --git a/program/localization/nn_NO/labels.inc b/program/localization/nn_NO/labels.inc index 725919d14..8fd281c97 100644 --- a/program/localization/nn_NO/labels.inc +++ b/program/localization/nn_NO/labels.inc @@ -64,6 +64,7 @@ $labels['copy'] = 'Kopier'; $labels['move'] = 'Flytt'; $labels['moveto'] = 'flytt til …'; $labels['download'] = 'Last ned'; +$labels['open'] = 'Open'; $labels['showattachment'] = 'Vis'; $labels['showanyway'] = 'Vis likevel'; @@ -161,6 +162,7 @@ $labels['currpage'] = 'Gjeldande side'; $labels['unread'] = 'Uleste'; $labels['flagged'] = 'Flagga'; $labels['unanswered'] = 'Ikkje svara'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Sletta'; $labels['undeleted'] = 'Ikkje sletta'; $labels['invert'] = 'Inverter'; @@ -204,6 +206,8 @@ $labels['body'] = 'Meldingstekst'; $labels['openinextwin'] = 'Opna i nytt vindauga'; $labels['emlsave'] = 'Last ned (.eml)'; +$labels['changeformattext'] = 'Display in plain text format'; +$labels['changeformathtml'] = 'Display in HTML format'; // message compose $labels['editasnew'] = 'Rediger som ny'; @@ -335,8 +339,8 @@ $labels['composeto'] = 'Ny melding til'; $labels['contactsfromto'] = 'Kontaktar $from til $to av $count'; $labels['print'] = 'Skriv ut'; $labels['export'] = 'Eksport'; -$labels['exportall'] = 'Export all'; -$labels['exportsel'] = 'Export selected'; +$labels['exportall'] = 'Eksporter alle'; +$labels['exportsel'] = 'Eksporter valde'; $labels['exportvcards'] = 'Eksporter kontaktar i vCard-format'; $labels['newcontactgroup'] = 'Lag ny kontaktgruppe'; $labels['grouprename'] = 'Endre namn på gruppe'; @@ -451,9 +455,6 @@ $labels['replyremovesignature'] = 'Fjern den original signatur frå eposten når $labels['autoaddsignature'] = 'Legg signatur til automatisk'; $labels['newmessageonly'] = 'berre på nye epostar'; $labels['replyandforwardonly'] = 'berre på svar og vidaresending'; -$labels['replysignaturepos'] = 'Når du svarar eller sender vidare, plasser signaturen'; -$labels['belowquote'] = 'nedanfor siteringa'; -$labels['abovequote'] = 'oppanfor siteringa'; $labels['insertsignature'] = 'Sett inn signatur'; $labels['previewpanemarkread'] = 'Merk forehandsviste epostar som leste'; $labels['afternseconds'] = 'etter $n sekund'; diff --git a/program/localization/pl_PL/labels.inc b/program/localization/pl_PL/labels.inc index 7a4248830..eb6fe9b9a 100644 --- a/program/localization/pl_PL/labels.inc +++ b/program/localization/pl_PL/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Bieżąca strona'; $labels['unread'] = 'Nieprzeczytane'; $labels['flagged'] = 'Oznaczone'; $labels['unanswered'] = 'Bez odpowiedzi'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Usunięte'; $labels['undeleted'] = 'Nieusunięte'; $labels['invert'] = 'Odwróć'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Podczas odpowiedzi usuń podpis z cytowanej t $labels['autoaddsignature'] = 'Automatycznie wstaw podpis'; $labels['newmessageonly'] = 'tylko dla nowych wiadomości'; $labels['replyandforwardonly'] = 'tylko dla przekazywania i odpowiedzi'; -$labels['replysignaturepos'] = 'Podczas odpowiedzi wstaw podpis'; -$labels['belowquote'] = 'poniżej cytowanej treści'; -$labels['abovequote'] = 'ponad cytowaną treścią'; $labels['insertsignature'] = 'Wstaw podpis'; $labels['previewpanemarkread'] = 'Oznacz podglądane wiadomości jako przeczytane'; $labels['afternseconds'] = 'po $n sekundach'; diff --git a/program/localization/ps/labels.inc b/program/localization/ps/labels.inc index 05f6c3d32..f4f2f5380 100755 --- a/program/localization/ps/labels.inc +++ b/program/localization/ps/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'نالوستي'; $labels['flagged'] = 'بې کاره'; $labels['unanswered'] = 'ناځواب شوي'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Deleted'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/pt_BR/labels.inc b/program/localization/pt_BR/labels.inc index 55068df5b..858fcbe7c 100644 --- a/program/localization/pt_BR/labels.inc +++ b/program/localization/pt_BR/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Página atual'; $labels['unread'] = 'Não lidas'; $labels['flagged'] = 'Marcadas'; $labels['unanswered'] = 'Não respondidas'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Excluídas'; $labels['undeleted'] = 'Não excluídas'; $labels['invert'] = 'Inverter'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Remover assinatura original da mensagem ao re $labels['autoaddsignature'] = 'Adicionar assinatura automaticamente'; $labels['newmessageonly'] = 'somente em novas mensagens'; $labels['replyandforwardonly'] = 'somente em respostas e encaminhamentos'; -$labels['replysignaturepos'] = 'Inserir assinatura ao responder ou encaminhar'; -$labels['belowquote'] = 'abaixo da citação'; -$labels['abovequote'] = 'acima da citação'; $labels['insertsignature'] = 'Inserir assinatura'; $labels['previewpanemarkread'] = 'Marcar mensagens pré-visualizadas como lidas'; $labels['afternseconds'] = 'depois de $n segundos'; diff --git a/program/localization/pt_PT/labels.inc b/program/localization/pt_PT/labels.inc index 62fa8bbb4..17cae3795 100644 --- a/program/localization/pt_PT/labels.inc +++ b/program/localization/pt_PT/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Página actual'; $labels['unread'] = 'Não lidas'; $labels['flagged'] = 'Sinalizadas'; $labels['unanswered'] = 'Não respondidas'; +$labels['withattachment'] = 'Com anexo'; $labels['deleted'] = 'Eliminadas'; $labels['undeleted'] = 'Não eliminada'; $labels['invert'] = 'Inverter selecção'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Ao responder, remover a assinatura original d $labels['autoaddsignature'] = 'Adicionar assinatura automaticamente'; $labels['newmessageonly'] = 'apenas em novas mensagens'; $labels['replyandforwardonly'] = 'apenas em respostas e reenvios'; -$labels['replysignaturepos'] = 'Ao responder ou reencaminhar colocar assinatura'; -$labels['belowquote'] = 'depois da citação'; -$labels['abovequote'] = 'antes da citação'; $labels['insertsignature'] = 'Inserir assinatura'; $labels['previewpanemarkread'] = 'Marcar mensagem como lida'; $labels['afternseconds'] = 'após $n segundos'; diff --git a/program/localization/ro_RO/labels.inc b/program/localization/ro_RO/labels.inc index 0dcd97919..7f458a543 100644 --- a/program/localization/ro_RO/labels.inc +++ b/program/localization/ro_RO/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Pagina curentă'; $labels['unread'] = 'Necitite'; $labels['flagged'] = 'Marcat'; $labels['unanswered'] = 'Fără răspuns'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Şterse'; $labels['undeleted'] = 'Nu a fost șters'; $labels['invert'] = 'Inversează'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Când răspundeţi, se şterge semnătura ori $labels['autoaddsignature'] = 'Adăugarea automată a semnăturii'; $labels['newmessageonly'] = 'numai la mesajele noi'; $labels['replyandforwardonly'] = 'numai la răspunsuri si cele trimise mai departe'; -$labels['replysignaturepos'] = 'Când răspundeţi sau trimiteţi mai departe, semnătura se va plasa'; -$labels['belowquote'] = 'dedesubtul citatului'; -$labels['abovequote'] = 'deasupra citatului'; $labels['insertsignature'] = 'Introduce o semnătură'; $labels['previewpanemarkread'] = 'Marchează mesajele previzualizate ca citite'; $labels['afternseconds'] = 'după $n secunde'; diff --git a/program/localization/ru_RU/labels.inc b/program/localization/ru_RU/labels.inc index 6b6d0c6bd..970e30b88 100644 --- a/program/localization/ru_RU/labels.inc +++ b/program/localization/ru_RU/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Текущая страница'; $labels['unread'] = 'Непрочитанные'; $labels['flagged'] = 'Помеченные'; $labels['unanswered'] = 'Неотвеченные'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Удаленное'; $labels['undeleted'] = 'Не удалено'; $labels['invert'] = 'Инвертное'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Удалить подпись при отве $labels['autoaddsignature'] = 'Автоматически добавлять подпись'; $labels['newmessageonly'] = 'только в новых сообщениях'; $labels['replyandforwardonly'] = 'только в ответах и пересылках'; -$labels['replysignaturepos'] = 'Прикрепить подпись при ответе и пересылке'; -$labels['belowquote'] = 'после цитаты'; -$labels['abovequote'] = 'до цитаты'; $labels['insertsignature'] = 'Вставить подпись'; $labels['previewpanemarkread'] = 'Отмечать просмотренные сообщения как прочитанные'; $labels['afternseconds'] = 'через $n секунд'; diff --git a/program/localization/si_LK/labels.inc b/program/localization/si_LK/labels.inc index eddc01b57..be091f4cf 100644 --- a/program/localization/si_LK/labels.inc +++ b/program/localization/si_LK/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'දැනට ඇති පිටුව'; $labels['unread'] = 'නොකියවූ'; $labels['flagged'] = 'Flagged'; $labels['unanswered'] = 'Unanswered'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'මකා දැමූ'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'ස්වයංක්රීයව අත්සන ඇතුලත් කරන්න'; $labels['newmessageonly'] = 'අලුත් පණිවිඩය පමණක්'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'අත්සන ඇතුලත් කරන්න'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'තත්පර $nකට පසු'; diff --git a/program/localization/sk_SK/labels.inc b/program/localization/sk_SK/labels.inc index 7b993e77a..a48d265e8 100644 --- a/program/localization/sk_SK/labels.inc +++ b/program/localization/sk_SK/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Aktuálna stránka'; $labels['unread'] = 'Neprečítané'; $labels['flagged'] = 'Označené'; $labels['unanswered'] = 'Neoznačené'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Zmazané'; $labels['undeleted'] = 'Nevymazané'; $labels['invert'] = 'Prevrátiť'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Pri odpovedaní odstrániť zo správy pôvod $labels['autoaddsignature'] = 'Automaticky pridať podpis'; $labels['newmessageonly'] = 'iba k novým správam'; $labels['replyandforwardonly'] = 'len k odpovede a preposílanej správe'; -$labels['replysignaturepos'] = 'Pri odpovedaní alebo preposielanie správy vložiť podpis'; -$labels['belowquote'] = 'nad citáciu'; -$labels['abovequote'] = 'pod citáciu'; $labels['insertsignature'] = 'Vložit podpis'; $labels['previewpanemarkread'] = 'Označiť zobrazenej správy ako prečítané'; $labels['afternseconds'] = 'po $n sekundách'; diff --git a/program/localization/sl_SI/labels.inc b/program/localization/sl_SI/labels.inc index 70150e4d9..8542acb9a 100644 --- a/program/localization/sl_SI/labels.inc +++ b/program/localization/sl_SI/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Trenutna stran'; $labels['unread'] = 'Neprebrano'; $labels['flagged'] = 'Označeno'; $labels['unanswered'] = 'Neoznačeno'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Izbrisano'; $labels['undeleted'] = 'Ni izbrisano'; $labels['invert'] = 'Zamenjaj'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Pri odgovoru na sporočilo odstrani izvorni p $labels['autoaddsignature'] = 'Samodejno dodaj podpis'; $labels['newmessageonly'] = 'samo novim sporočilom'; $labels['replyandforwardonly'] = 'samo k odgovorom in posredovanim sporočilom'; -$labels['replysignaturepos'] = 'Pri odgovoru ali posredovanju sporočila vstavi podpis'; -$labels['belowquote'] = 'pod citiran tekst'; -$labels['abovequote'] = 'nad citiran tekst'; $labels['insertsignature'] = 'Vstavi podpis'; $labels['previewpanemarkread'] = 'Označi predogledana sporočila kot prebrana'; $labels['afternseconds'] = 'po $n sekundah'; diff --git a/program/localization/sq_AL/labels.inc b/program/localization/sq_AL/labels.inc index 52ff45cd6..0c61af687 100644 --- a/program/localization/sq_AL/labels.inc +++ b/program/localization/sq_AL/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'Palexuar'; $labels['flagged'] = 'Flagged'; $labels['unanswered'] = 'Unanswered'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Deleted'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'Automatically add signature'; $labels['newmessageonly'] = 'new message only'; $labels['replyandforwardonly'] = 'replies and forwards only'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/sr_CS/labels.inc b/program/localization/sr_CS/labels.inc index 1e84735e6..15de82e52 100644 --- a/program/localization/sr_CS/labels.inc +++ b/program/localization/sr_CS/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Тренутна страница'; $labels['unread'] = 'Непрочитане'; $labels['flagged'] = 'Означено'; $labels['unanswered'] = 'Неодговорено'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Обрисано'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'Уведи'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'При одговору одстрани ор $labels['autoaddsignature'] = 'Аутоматски додај потпис'; $labels['newmessageonly'] = 'само нове поруке'; $labels['replyandforwardonly'] = 'само одговори и прослеђивања'; -$labels['replysignaturepos'] = 'При одговору или прослеђивању додај потпис'; -$labels['belowquote'] = 'испод квоте'; -$labels['abovequote'] = 'изнад квоте'; $labels['insertsignature'] = 'Убаци потпис'; $labels['previewpanemarkread'] = 'Прегледану поруку означи као прочитану'; $labels['afternseconds'] = 'након $n секунди'; diff --git a/program/localization/sv_SE/labels.inc b/program/localization/sv_SE/labels.inc index c1a91cf82..e9def21f6 100644 --- a/program/localization/sv_SE/labels.inc +++ b/program/localization/sv_SE/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Sida'; $labels['unread'] = 'Olästa'; $labels['flagged'] = 'Flaggade'; $labels['unanswered'] = 'Obesvarade'; +$labels['withattachment'] = 'Med bilaga'; $labels['deleted'] = 'Borttagna'; $labels['undeleted'] = 'Inte borttaget'; $labels['invert'] = 'Invertera'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Ta bort befintlig signatur från meddelandet $labels['autoaddsignature'] = 'Infoga signatur automatiskt'; $labels['newmessageonly'] = 'Vid nytt meddelande'; $labels['replyandforwardonly'] = 'Vid svar och vidarebefordran'; -$labels['replysignaturepos'] = 'Vid svar eller vidarebefordran infoga signatur'; -$labels['belowquote'] = 'Nedanför befintligt meddelande'; -$labels['abovequote'] = 'Ovanför befintligt meddelande'; $labels['insertsignature'] = 'Infoga signatur'; $labels['previewpanemarkread'] = 'Märk meddelande som läst vid visning'; $labels['afternseconds'] = 'Efter $n sekunder'; diff --git a/program/localization/ta_IN/labels.inc b/program/localization/ta_IN/labels.inc index 1cbffb588..ff0f5e0cc 100644 --- a/program/localization/ta_IN/labels.inc +++ b/program/localization/ta_IN/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Current page'; $labels['unread'] = 'படிக்காதது'; $labels['flagged'] = 'நட்சத்திரமிட்டது'; $labels['unanswered'] = 'பதிலளிக்காதது'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'நீக்கியது'; $labels['undeleted'] = 'Not deleted'; $labels['invert'] = 'தலைகீழ்'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'பதிலளிக்கும் பே $labels['autoaddsignature'] = 'தானாக கையொப்பத்தை சேர்'; $labels['newmessageonly'] = 'புது செய்தி மட்டும்'; $labels['replyandforwardonly'] = 'பதிலளிப்பு முன்அனுப்பு மட்டும்'; -$labels['replysignaturepos'] = 'பதிலளிக்கும் போதும் முன்அனுப்பும் போதும் கையோப்பமிடு'; -$labels['belowquote'] = 'மேற்கோளுக்கு கீழே'; -$labels['abovequote'] = 'மேற்கோளுக்கு மேலே'; $labels['insertsignature'] = 'கையோப்பமிடு'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/th_TH/labels.inc b/program/localization/th_TH/labels.inc index 93f2304e1..7853cdd9d 100644 --- a/program/localization/th_TH/labels.inc +++ b/program/localization/th_TH/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'หน้าปัจจุบัน'; $labels['unread'] = 'จดหมายที่ไม่ได้อ่าน'; $labels['flagged'] = 'Flagged'; $labels['unanswered'] = 'ยังไม่ได้ตอบ'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'ลบแล้ว'; $labels['undeleted'] = 'ยังไม่ได้ลบ'; $labels['invert'] = 'Invert'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'When replying remove original signature from $labels['autoaddsignature'] = 'เพิ่มลายเซ็นต์เข้าไปอัตโนมัติ'; $labels['newmessageonly'] = 'เฉพาะข้อความใหม่เท่านั้น'; $labels['replyandforwardonly'] = 'ตอบกลับและส่งต่อเท่านั้น'; -$labels['replysignaturepos'] = 'When replying or forwarding place signature'; -$labels['belowquote'] = 'below the quote'; -$labels['abovequote'] = 'above the quote'; $labels['insertsignature'] = 'แทรกลายเซ็นต์'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; diff --git a/program/localization/tr_TR/labels.inc b/program/localization/tr_TR/labels.inc index d8e9e20cf..0b525ff55 100644 --- a/program/localization/tr_TR/labels.inc +++ b/program/localization/tr_TR/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Şimdiki sayfa'; $labels['unread'] = 'Okunmamışları'; $labels['flagged'] = 'İşaretlenmişleri'; $labels['unanswered'] = 'Yanıtlanmamışları'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Silinmişleri'; $labels['undeleted'] = 'Silinmemiş'; $labels['invert'] = 'Seçimi Tersine Çevir'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'Yanıtlarken önceki imzaları sil'; $labels['autoaddsignature'] = 'Otomatik olarak imza ekle'; $labels['newmessageonly'] = 'sadece yeni postalarda'; $labels['replyandforwardonly'] = 'sadece yanıtlar ve yönlendirmelerde'; -$labels['replysignaturepos'] = 'Yanıtlarken veya yönlendirirken imzayı yerleştir'; -$labels['belowquote'] = 'alıntının altına'; -$labels['abovequote'] = 'alıntının üstüne'; $labels['insertsignature'] = 'İmza ekle'; $labels['previewpanemarkread'] = 'Önzilemede görünen postaları okunmuş işaretle'; $labels['afternseconds'] = '$n saniye sonra'; diff --git a/program/localization/uk_UA/labels.inc b/program/localization/uk_UA/labels.inc index 35be96cab..67ca0ed31 100644 --- a/program/localization/uk_UA/labels.inc +++ b/program/localization/uk_UA/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = 'Поточна сторінка'; $labels['unread'] = 'Непрочитані'; $labels['flagged'] = 'Із зірочкою'; $labels['unanswered'] = 'Без відповіді'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Видалені'; $labels['undeleted'] = 'Не видалено'; $labels['invert'] = 'Інвертувати виділення'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = 'При відповіді видаляти п $labels['autoaddsignature'] = 'Автоматично додавати підпис'; $labels['newmessageonly'] = 'тільки до нових листів'; $labels['replyandforwardonly'] = 'тільки при відповідях та пересилках'; -$labels['replysignaturepos'] = 'При відповідях чи пересилках додавати підпис'; -$labels['belowquote'] = 'після цитати'; -$labels['abovequote'] = 'перед цитатою'; $labels['insertsignature'] = 'Додати підпис'; $labels['previewpanemarkread'] = 'Позначити переглянуті листи як прочитані'; $labels['afternseconds'] = 'через $n секунд'; diff --git a/program/localization/vi_VN/labels.inc b/program/localization/vi_VN/labels.inc index 00d04b46b..bece2f47d 100644 --- a/program/localization/vi_VN/labels.inc +++ b/program/localization/vi_VN/labels.inc @@ -64,6 +64,7 @@ $labels['copy'] = 'Sao chép'; $labels['move'] = 'Di Chuyển'; $labels['moveto'] = 'Di chuyển tới...'; $labels['download'] = 'Tải về'; +$labels['open'] = 'Open'; $labels['showattachment'] = 'Hiển thị'; $labels['showanyway'] = 'Tiếp tục hiển thị'; @@ -161,6 +162,7 @@ $labels['currpage'] = 'Trang hiện tại'; $labels['unread'] = 'Chưa đọc'; $labels['flagged'] = 'Đã đánh dấu'; $labels['unanswered'] = 'Chưa trả lời'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = 'Đã xóa'; $labels['undeleted'] = 'Chưa xóa được'; $labels['invert'] = 'Đảo ngược'; @@ -204,6 +206,8 @@ $labels['body'] = 'Nội dung thư'; $labels['openinextwin'] = 'Mở trong khung cửa mới'; $labels['emlsave'] = 'Tải về theo định dạng .eml'; +$labels['changeformattext'] = 'Display in plain text format'; +$labels['changeformathtml'] = 'Display in HTML format'; // message compose $labels['editasnew'] = 'Sửa như một email mới'; @@ -335,8 +339,8 @@ $labels['composeto'] = 'Soạn thư cho'; $labels['contactsfromto'] = 'Liên hệ từ $from - $to / $count'; $labels['print'] = 'In ra'; $labels['export'] = 'Trích xuất'; -$labels['exportall'] = 'Export all'; -$labels['exportsel'] = 'Export selected'; +$labels['exportall'] = 'Xuất tất cả'; +$labels['exportsel'] = 'Xuất mục chọn'; $labels['exportvcards'] = 'Tải dữ liệu máy theo định dạng vCard'; $labels['newcontactgroup'] = 'Tạo nhóm liên lạc mới'; $labels['grouprename'] = 'Đổi tên nhóm'; @@ -451,9 +455,6 @@ $labels['replyremovesignature'] = 'Khi trả lời bỏ chữ ký cũ khỏi n $labels['autoaddsignature'] = 'Tự động thêm chữ ký'; $labels['newmessageonly'] = 'chỉ thư mới'; $labels['replyandforwardonly'] = 'chỉ trả lời và chuyển tiếp thư'; -$labels['replysignaturepos'] = 'Khi trả lời hoặc chuyển tiếp thư thêm vào chữ ký'; -$labels['belowquote'] = 'Dưới phần nội dung cũ'; -$labels['abovequote'] = 'trên phần nội dung cũ'; $labels['insertsignature'] = 'Chèn chữ ký'; $labels['previewpanemarkread'] = 'Đánh dẫu thư xem thử là đã đọc'; $labels['afternseconds'] = 'sau $n giây'; diff --git a/program/localization/zh_CN/labels.inc b/program/localization/zh_CN/labels.inc index 9b79283b1..2d896d7c3 100644 --- a/program/localization/zh_CN/labels.inc +++ b/program/localization/zh_CN/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = '当前页'; $labels['unread'] = '未读邮件'; $labels['flagged'] = '已标记邮件'; $labels['unanswered'] = '未回复邮件'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = '已删除邮件'; $labels['undeleted'] = '未删除邮件'; $labels['invert'] = '反选'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = '当回复时从邮件移除原始签名'; $labels['autoaddsignature'] = '自动插入签名'; $labels['newmessageonly'] = '仅新邮件'; $labels['replyandforwardonly'] = '仅回复和转发邮件'; -$labels['replysignaturepos'] = '当回复或转发时插入签名'; -$labels['belowquote'] = '位于原文下方'; -$labels['abovequote'] = '位于原文上方'; $labels['insertsignature'] = '插入签名'; $labels['previewpanemarkread'] = '标记预览邮件为已读'; $labels['afternseconds'] = '$n 秒之后'; diff --git a/program/localization/zh_TW/labels.inc b/program/localization/zh_TW/labels.inc index 488a7ab2d..f53a5a969 100644 --- a/program/localization/zh_TW/labels.inc +++ b/program/localization/zh_TW/labels.inc @@ -162,6 +162,7 @@ $labels['currpage'] = '目前頁面'; $labels['unread'] = '未讀取的郵件'; $labels['flagged'] = '已加標記的郵件'; $labels['unanswered'] = '未回覆的郵件'; +$labels['withattachment'] = 'With attachment'; $labels['deleted'] = '已刪除的郵件'; $labels['undeleted'] = '未刪除的郵件'; $labels['invert'] = '反選'; @@ -454,9 +455,6 @@ $labels['replyremovesignature'] = '回覆時移除原有簽名檔'; $labels['autoaddsignature'] = '自動附加簽名'; $labels['newmessageonly'] = '只有新訊息'; $labels['replyandforwardonly'] = '只有回覆或轉寄'; -$labels['replysignaturepos'] = '當回覆或轉寄時附上簽名檔'; -$labels['belowquote'] = '引用的下方'; -$labels['abovequote'] = '引用的上方'; $labels['insertsignature'] = '插入簽名檔'; $labels['previewpanemarkread'] = '標示已預覽訊息為已讀取'; $labels['afternseconds'] = '$n 秒之後'; diff --git a/program/resources/blank.pdf b/program/resources/blank.pdf Binary files differnew file mode 100644 index 000000000..7bf83e390 --- /dev/null +++ b/program/resources/blank.pdf diff --git a/program/steps/addressbook/export.inc b/program/steps/addressbook/export.inc index 15bf8b0d4..761f26b75 100644 --- a/program/steps/addressbook/export.inc +++ b/program/steps/addressbook/export.inc @@ -138,7 +138,9 @@ header('Content-Disposition: attachment; filename="contacts.vcf"'); while ($result && ($row = $result->next())) { // we already have a vcard record if ($row['vcard'] && $row['name']) { - $row['vcard'] = preg_replace('/\r?\n/', rcube_vcard::$eol, $row['vcard']); + // fix folding and end-of-line chars + $row['vcard'] = preg_replace('/\r|\n\s+/', '', $row['vcard']); + $row['vcard'] = preg_replace('/\n/', rcube_vcard::$eol, $row['vcard']); echo rcube_vcard::rfc2425_fold($row['vcard']) . rcube_vcard::$eol; } // copy values into vcard object diff --git a/program/steps/addressbook/import.inc b/program/steps/addressbook/import.inc index df07d64bc..72da15078 100644 --- a/program/steps/addressbook/import.inc +++ b/program/steps/addressbook/import.inc @@ -209,6 +209,15 @@ if (is_array($_FILES['_file'])) { foreach ($vcards as $vcard) { $a_record = $vcard->get_assoc(); + // Generate contact's display name (must be before validation), the same we do in save.inc + if (empty($a_record['name'])) { + $a_record['name'] = rcube_addressbook::compose_display_name($a_record, true); + // Reset it if equals to email address (from compose_display_name()) + if ($a_record['name'] == $a_record['email'][0]) { + $a_record['name'] = ''; + } + } + // skip invalid (incomplete) entries if (!$CONTACTS->validate($a_record, true)) { $IMPORT_STATS->invalid++; @@ -250,7 +259,7 @@ if (is_array($_FILES['_file'])) { if ($success) { $IMPORT_STATS->inserted++; - $IMPORT_STATS->names[] = $vcard->displayname ? $vcard->displayname : $email; + $IMPORT_STATS->names[] = $a_record['name'] ? $a_record['name'] : $email; } else { $IMPORT_STATS->errors++; diff --git a/program/steps/addressbook/save.inc b/program/steps/addressbook/save.inc index 8cab6e817..25bfbd48b 100644 --- a/program/steps/addressbook/save.inc +++ b/program/steps/addressbook/save.inc @@ -192,7 +192,7 @@ else { if (($maxnum = $RCMAIL->config->get('max_group_members', 0)) && ($counts->count + 1 > $maxnum)) $OUTPUT->show_message('maxgroupmembersreached', 'warning', array('max' => $maxnum)); - $CONTACTS->add_to_group($gid, $plugin['ids']); + $CONTACTS->add_to_group($plugin['group_id'], $plugin['ids']); } } else diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index c166eb74e..81b598377 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -139,7 +139,6 @@ if (!empty($CONFIG['drafts_mbox'])) { } // set current mailbox in client environment $OUTPUT->set_env('mailbox', $RCMAIL->storage->get_folder()); -$OUTPUT->set_env('sig_above', $RCMAIL->config->get('sig_above', false)); $OUTPUT->set_env('top_posting', intval($RCMAIL->config->get('reply_mode')) > 0); $OUTPUT->set_env('recipients_separator', trim($RCMAIL->config->get('recipients_separator', ','))); @@ -152,6 +151,7 @@ if ($font && !is_array($font)) { // get reference message and set compose mode if ($msg_uid = $COMPOSE['param']['draft_uid']) { $compose_mode = RCUBE_COMPOSE_DRAFT; + $OUTPUT->set_env('draft_id', $msg_uid); $RCMAIL->storage->set_folder($CONFIG['drafts_mbox']); } else if ($msg_uid = $COMPOSE['param']['reply_uid']) { @@ -220,9 +220,9 @@ if (!empty($msg_uid) && empty($COMPOSE['as_attachment'])) } } else if ($compose_mode == RCUBE_COMPOSE_DRAFT) { - if ($MESSAGE->headers->others['x-draft-info']) { + if ($draft_info = $MESSAGE->headers->get('x-draft-info')) { // get reply_uid/forward_uid to flag the original message when sending - $info = rcmail_draftinfo_decode($MESSAGE->headers->others['x-draft-info']); + $info = rcmail_draftinfo_decode($draft_info); if ($info['type'] == 'reply') $COMPOSE['reply_uid'] = $info['uid']; @@ -239,8 +239,8 @@ if (!empty($msg_uid) && empty($COMPOSE['as_attachment'])) } } - if ($MESSAGE->headers->in_reply_to) - $COMPOSE['reply_msgid'] = '<'.$MESSAGE->headers->in_reply_to.'>'; + if ($in_reply_to = $MESSAGE->headers->get('in-reply-to')) + $COMPOSE['reply_msgid'] = '<' . $in_reply_to . '>'; $COMPOSE['references'] = $MESSAGE->headers->references; } @@ -461,7 +461,7 @@ function rcmail_compose_header_from($attrib) if (count($MESSAGE->identities)) { $a_signatures = array(); - $separator = $RCMAIL->config->get('sig_above') + $separator = intval($RCMAIL->config->get('reply_mode')) > 0 && ($compose_mode == RCUBE_COMPOSE_REPLY || $compose_mode == RCUBE_COMPOSE_FORWARD) ? '---' : '-- '; $field_attrib['onchange'] = JS_OBJECT_NAME.".change_identity(this)"; @@ -571,7 +571,7 @@ function rcmail_prepare_message_body() rcmail_write_forward_attachments(); } // reply/edit/draft/forward - else if ($compose_mode && ($compose_mode != RCUBE_COMPOSE_REPLY || $RCMAIL->config->get('reply_mode') != -1)) { + else if ($compose_mode && ($compose_mode != RCUBE_COMPOSE_REPLY || intval($RCMAIL->config->get('reply_mode')) != -1)) { $isHtml = rcmail_compose_editor_mode(); if (!empty($MESSAGE->parts)) { @@ -997,10 +997,12 @@ function rcmail_write_compose_attachments(&$message, $bodyIsHtml) foreach ((array)$message->mime_parts as $pid => $part) { if ($part->disposition == 'attachment' || ($part->disposition == 'inline' && $bodyIsHtml) || $part->filename) { - if (($part->ctype_primary == 'message' && $bodyIsHtml) || $part->ctype_primary == 'multipart') { + // skip parts that aren't valid attachments + if ($part->ctype_primary == 'multipart' || $part->mimetype == 'application/ms-tnef') { continue; } - if ($part->mimetype == 'application/ms-tnef') { + // skip message attachments in reply mode + if ($part->ctype_primary == 'message' && $compose_mode == RCUBE_COMPOSE_REPLY) { continue; } // skip inline images when forwarding in plain text diff --git a/program/steps/mail/copy.inc b/program/steps/mail/copy.inc index a72378b0e..876657485 100644 --- a/program/steps/mail/copy.inc +++ b/program/steps/mail/copy.inc @@ -24,10 +24,10 @@ if (!$OUTPUT->ajax_call) return; // move messages -if (!empty($_POST['_uid']) && !empty($_POST['_target_mbox'])) { - $uids = get_input_value('_uid', RCUBE_INPUT_POST); +if (!empty($_POST['_uid']) && strlen($_POST['_target_mbox'])) { + $uids = get_input_value('_uid', RCUBE_INPUT_POST); $target = get_input_value('_target_mbox', RCUBE_INPUT_POST, true); - $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true); + $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true); $copied = $RCMAIL->storage->copy_message($uids, $target, $mbox); @@ -47,7 +47,7 @@ if (!empty($_POST['_uid']) && !empty($_POST['_target_mbox'])) { } // unknown action or missing query param else { - exit; + $OUTPUT->show_message('internalerror', 'error'); } // send response diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index 274c40b5c..60db3f310 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -896,7 +896,7 @@ function rcmail_washtml_callback($tagname, $attrib, $content, $washtml) * return table with message headers */ function rcmail_message_headers($attrib, $headers=null) - { +{ global $OUTPUT, $MESSAGE, $PRINT_MODE, $RCMAIL; static $sa_attrib; @@ -1194,7 +1194,7 @@ function rcmail_message_body($attrib) html::a($show_link + array('class' => 'image-link', 'style' => sprintf('width:%dpx', $thumbnail_size)), html::img(array( 'class' => 'image-thumbnail', - 'src' => $MESSAGE->get_part_url($attach_prop->mime_id, true) . '&_thumb=1', + 'src' => $MESSAGE->get_part_url($attach_prop->mime_id, 'image') . '&_thumb=1', 'title' => $attach_prop->filename, 'alt' => $attach_prop->filename, 'style' => sprintf('max-width:%dpx; max-height:%dpx', $thumbnail_size, $thumbnail_size), @@ -1214,7 +1214,7 @@ function rcmail_message_body($attrib) html::tag('legend', 'image-filename', Q($attach_prop->filename)) . html::p(array('align' => "center"), html::img(array( - 'src' => $MESSAGE->get_part_url($attach_prop->mime_id, true), + 'src' => $MESSAGE->get_part_url($attach_prop->mime_id, 'image'), 'title' => $attach_prop->filename, 'alt' => $attach_prop->filename, ))) @@ -1897,13 +1897,15 @@ function rcmail_search_filter($attrib) $attrib['onchange'] = JS_OBJECT_NAME.'.filter_mailbox(this.value)'; - /* - RFC3501 (6.4.4): 'ALL', 'RECENT', - 'ANSWERED', 'DELETED', 'FLAGGED', 'SEEN', - 'UNANSWERED', 'UNDELETED', 'UNFLAGGED', 'UNSEEN', - 'NEW', // = (RECENT UNSEEN) - 'OLD' // = NOT RECENT - */ + // Content-Type values of messages with attachments + // the same as in app.js:add_message_row() + $ctypes = array('application/', 'multipart/m', 'multipart/signed', 'multipart/report'); + + // Build search string of "with attachment" filter + $attachment = str_repeat(' OR', count($ctypes)-1); + foreach ($ctypes as $type) { + $attachment .= ' HEADER Content-Type ' . rcube_imap_generic::escape($type); + } $select_filter = new html_select($attrib); $select_filter->add(rcube_label('all'), 'ALL'); @@ -1914,6 +1916,7 @@ function rcmail_search_filter($attrib) $select_filter->add(rcube_label('deleted'), 'DELETED'); $select_filter->add(rcube_label('undeleted'), 'UNDELETED'); } + $select_filter->add(rcube_label('withattachment'), $attachment); $select_filter->add(rcube_label('priority').': '.rcube_label('highest'), 'HEADER X-PRIORITY 1'); $select_filter->add(rcube_label('priority').': '.rcube_label('high'), 'HEADER X-PRIORITY 2'); $select_filter->add(rcube_label('priority').': '.rcube_label('normal'), 'NOT HEADER X-PRIORITY 1 NOT HEADER X-PRIORITY 2 NOT HEADER X-PRIORITY 4 NOT HEADER X-PRIORITY 5'); diff --git a/program/steps/mail/get.inc b/program/steps/mail/get.inc index 23dc22b7c..bcc6f11bc 100644 --- a/program/steps/mail/get.inc +++ b/program/steps/mail/get.inc @@ -22,7 +22,7 @@ // show loading page if (!empty($_GET['_preload'])) { - $url = preg_replace('/([&?]+)_preload=/', '\\1_embed=', $_SERVER['REQUEST_URI']); + $url = preg_replace('/([&?]+)_preload=/', '\\1_mimewarning=1&_embed=', $_SERVER['REQUEST_URI']); $message = rcube_label('loadingdata'); header('Content-Type: text/html; charset=' . RCMAIL_CHARSET); @@ -62,9 +62,10 @@ else if ($_GET['_thumb']) { $thumbnail_size = $RCMAIL->config->get('image_thumbnail_size', 240); $temp_dir = $RCMAIL->config->get('temp_dir'); list(,$ext) = explode('/', $part->mimetype); - $cache_basename = $temp_dir . '/' . md5($MESSAGE->headers->messageID . $part->mime_id . ':' . $RCMAIL->user->ID . ':' . $thumbnail_size); - $cache_file = $cache_basename . '.' . $ext; $mimetype = $part->mimetype; + $file_ident = $MESSAGE->headers->messageID . ':' . $part->mime_id . ':' . $part->size . ':' . $part->mimetype; + $cache_basename = $temp_dir . '/' . md5($file_ident . ':' . $RCMAIL->user->ID . ':' . $thumbnail_size); + $cache_file = $cache_basename . '.' . $ext; // render thumbnail image if not done yet if (!is_file($cache_file)) { @@ -118,7 +119,7 @@ else if (strlen($pid = get_input_value('_part', RCUBE_INPUT_GET))) { $file_extension = strtolower(pathinfo($part->filename, PATHINFO_EXTENSION)); // 1. compare filename suffix with expected suffix derived from mimetype - $valid = $file_extension && in_array($file_extension, (array)$extensions); + $valid = $file_extension && in_array($file_extension, (array)$extensions) || !empty($_REQUEST['_mimeclass']); // 2. detect the real mimetype of the attachment part and compare it with the stated mimetype and filename extension if ($valid || !$file_extension || $mimetype == 'application/octet-stream' || $mimetype == 'text/plain') { @@ -145,6 +146,10 @@ else if (strlen($pid = get_input_value('_part', RCUBE_INPUT_GET))) { $extensions = rcube_mime::get_mime_extensions($real_mimetype); $valid_extension = (!$file_extension || in_array($file_extension, (array)$extensions)); + // ignore filename extension if mimeclass matches (#1489029) + if (!empty($_REQUEST['_mimeclass']) && $real_ctype_primary == $_REQUEST['_mimeclass']) + $valid_extension = true; + // fix mimetype for images wrongly declared as octet-stream if ($mimetype == 'application/octet-stream' && strpos($real_mimetype, 'image/') === 0 && $valid_extension) $mimetype = $real_mimetype; @@ -157,22 +162,32 @@ else if (strlen($pid = get_input_value('_part', RCUBE_INPUT_GET))) { // show warning if validity checks failed if (!$valid) { - $OUTPUT = new rcmail_html_page(); - $OUTPUT->write(html::tag('html', null, html::tag('body', 'embed', - html::div(array('class' => 'rcmail-inline-message rcmail-inline-warning'), - rcube_label(array( - 'name' => 'attachmentvalidationerror', - 'vars' => array( - 'expected' => $mimetype . ($file_extension ? "(.$file_extension)" : ''), - 'detected' => $real_mimetype . ($extensions[0] ? "(.$extensions[0])" : ''), + // send blocked.gif for expected images + if (empty($_REQUEST['_mimewarning']) && strpos($mimetype, 'image/') === 0) { + // Do not cache. Failure might be the result of a misconfiguration, thus real content should be returned once fixed. + $OUTPUT->nocacheing_headers(); + header("Content-Type: image/gif"); + header("Content-Transfer-Encoding: binary"); + readfile(INSTALL_PATH . 'program/resources/blocked.gif'); + } + else { // html warning with a button to load the file anyway + $OUTPUT = new rcmail_html_page(); + $OUTPUT->write(html::tag('html', null, html::tag('body', 'embed', + html::div(array('class' => 'rcmail-inline-message rcmail-inline-warning'), + rcube_label(array( + 'name' => 'attachmentvalidationerror', + 'vars' => array( + 'expected' => $mimetype . ($file_extension ? "(.$file_extension)" : ''), + 'detected' => $real_mimetype . ($extensions[0] ? "(.$extensions[0])" : ''), + ) + )) . + html::p(array('class' => 'rcmail-inline-buttons'), + html::tag('button', + array('onclick' => "location.href='" . $RCMAIL->url(array_merge($_GET, array('_nocheck' => 1))) . "'"), + rcube_label('showanyway'))) ) - )) . - html::p(array('class' => 'rcmail-inline-buttons'), - html::tag('button', - array('onclick' => "location.href='" . $RCMAIL->url(array_merge($_GET, array('_nocheck' => 1))) . "'"), - rcube_label('showanyway'))) - ) - ))); + ))); + } exit; } } diff --git a/program/steps/mail/mark.inc b/program/steps/mail/mark.inc index c220fc5c4..dfc892ea1 100644 --- a/program/steps/mail/mark.inc +++ b/program/steps/mail/mark.inc @@ -113,7 +113,7 @@ if (($uids = get_input_value('_uid', RCUBE_INPUT_POST)) && ($flag = get_input_va $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count), $mbox); if ($threading) { - $count = get_input_value('_count', RCUBE_INPUT_POST); + $count = get_input_value('_count', RCUBE_INPUT_POST); } // add new rows from next page (if any) @@ -125,9 +125,9 @@ if (($uids = get_input_value('_uid', RCUBE_INPUT_POST)) && ($flag = get_input_va } } } - - $OUTPUT->send(); +} +else { + $OUTPUT->show_message('internalerror', 'error'); } -exit; - +$OUTPUT->send(); diff --git a/program/steps/mail/move_del.inc b/program/steps/mail/move_del.inc index 3fc6ac5a7..e21ba2c6b 100644 --- a/program/steps/mail/move_del.inc +++ b/program/steps/mail/move_del.inc @@ -74,6 +74,8 @@ else if ($RCMAIL->action=='delete' && !empty($_POST['_uid'])) { } // unknown action or missing query param else { + $OUTPUT->show_message('internalerror', 'error'); + $OUTPUT->send(); exit; } diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc index eb0ba89c6..2f96e930f 100644 --- a/program/steps/mail/sendmail.inc +++ b/program/steps/mail/sendmail.inc @@ -255,6 +255,33 @@ function rcmail_email_input_format($mailto, $count=false, $check=true) } +function rcmail_generic_message_footer($isHtml) +{ + global $CONFIG; + + if ($isHtml && !empty($CONFIG['generic_message_footer_html'])) { + $file = $CONFIG['generic_message_footer_html']; + $html_footer = true; + } + else { + $file = $CONFIG['generic_message_footer']; + $html_footer = false; + } + + if ($file && realpath($file)) { + // sanity check + if (!preg_match('/\.(php|ini|conf)$/', $file) && strpos($file, '/etc/') === false) { + $footer = file_get_contents($file); + if ($isHtml && !$html_footer) + $footer = '<pre>' . $footer . '</pre>'; + return $footer; + } + } + + return false; +} + + /****** compose message ********/ if (strlen($_POST['_draft_saveid']) > 3) @@ -466,7 +493,7 @@ if (!$savedraft) { $message_body = preg_replace('/\s*id="_rc_sig"/', '', $message_body); // add inline css for blockquotes - $bstyle = 'padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px; width:100%'; + $bstyle = 'padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px'; $message_body = preg_replace('/<blockquote>/', '<blockquote type="cite" style="'.$bstyle.'">', $message_body); } @@ -490,19 +517,10 @@ if (!$savedraft) { } // generic footer for all messages - if ($isHtml && !empty($CONFIG['generic_message_footer_html'])) { - $footer = file_get_contents(realpath($CONFIG['generic_message_footer_html'])); - $footer = rcube_charset_convert($footer, RCMAIL_CHARSET, $message_charset); - } - else if (!empty($CONFIG['generic_message_footer'])) { - $footer = file_get_contents(realpath($CONFIG['generic_message_footer'])); + if ($footer = rcmail_generic_message_footer($isHtml)) { $footer = rcube_charset_convert($footer, RCMAIL_CHARSET, $message_charset); - if ($isHtml) - $footer = '<pre>'.$footer.'</pre>'; - } - - if ($footer) $message_body .= "\r\n" . $footer; + } } if ($isHtml) { @@ -820,6 +838,6 @@ else { if ($store_folder && !$saved) $OUTPUT->command('sent_successfully', 'error', rcube_label('errorsavingsent')); else - $OUTPUT->command('sent_successfully', 'confirmation', rcube_label('messagesent')); + $OUTPUT->command('sent_successfully', 'confirmation', rcube_label('messagesent'), $store_target); $OUTPUT->send('iframe'); } diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc index 552c180f5..1947c0f29 100644 --- a/program/steps/mail/show.inc +++ b/program/steps/mail/show.inc @@ -109,7 +109,7 @@ if ($uid) { $OUTPUT->set_env('skip_deleted', true); if ($CONFIG['display_next']) $OUTPUT->set_env('display_next', true); - if ($MESSAGE->headers->others['list-post']) + if ($MESSAGE->headers->get('list-post', false)) $OUTPUT->set_env('list_post', true); if ($CONFIG['forward_attachment']) $OUTPUT->set_env('forward_attachment', true); diff --git a/program/steps/settings/about.inc b/program/steps/settings/about.inc index 9b13402f1..0fdefddda 100644 --- a/program/steps/settings/about.inc +++ b/program/steps/settings/about.inc @@ -40,17 +40,28 @@ function rcmail_plugins_list($attrib) $attrib['id'] = 'rcmpluginlist'; $plugins = array_filter((array) $RCMAIL->config->get('plugins')); - $plugins = array_flip($plugins); + $plugin_info = array(); - foreach ($plugins as $name => $plugin) { - rcube_plugin_data($name, $plugins); + foreach ($plugins as $name) { + if ($info = $RCMAIL->plugins->get_info($name)) + $plugin_info[$name] = $info; } - if (empty($plugins)) { + // load info from required plugins, too + foreach ($plugin_info as $name => $info) { + if (is_array($info['required']) && !empty($info['required'])) { + foreach ($info['required'] as $req_name) { + if (!isset($plugin_info[$req_name]) && ($req_info = $RCMAIL->plugins->get_info($req_name))) + $plugin_info[$req_name] = $req_info; + } + } + } + + if (empty($plugin_info)) { return ''; } - ksort($plugins, SORT_LOCALE_STRING); + ksort($plugin_info, SORT_LOCALE_STRING); $table = new html_table($attrib); @@ -60,8 +71,8 @@ function rcmail_plugins_list($attrib) $table->add_header('license', rcube_label('license')); $table->add_header('source', rcube_label('source')); - foreach ($plugins as $name => $data) { - $uri = $data['srcuri'] ? $data['srcuri'] : $data['uri']; + foreach ($plugin_info as $name => $data) { + $uri = $data['src_uri'] ? $data['src_uri'] : $data['uri']; if ($uri && stripos($uri, 'http') !== 0) { $uri = 'http://' . $uri; } @@ -78,48 +89,6 @@ function rcmail_plugins_list($attrib) return $table->show(); } -function rcube_plugin_data($name, &$plugins = array()) -{ - // XPaths of plugin metadata elements - $metadata = array( - 'name' => 'string(//rc:package/rc:name)', - 'version' => 'string(//rc:package/rc:version/rc:release)', - 'license' => 'string(//rc:package/rc:license)', - 'license_uri' => 'string(//rc:package/rc:license/@uri)', - 'srcuri' => 'string(//rc:package/rc:srcuri)', - 'uri' => 'string(//rc:package/rc:uri)', - ); - - $package = INSTALL_PATH . "/plugins/$name/package.xml"; - if (file_exists($package) && ($file = file_get_contents($package))) { - $doc = new DOMDocument(); - $doc->loadXML($file); - $xpath = new DOMXPath($doc); - $xpath->registerNamespace('rc', "http://pear.php.net/dtd/package-2.0"); - $data = array(); - - foreach ($metadata as $key => $path) { - $data[$key] = $xpath->evaluate($path); - } - - $plugins[$name] = $data; - - // dependent required plugins (can be used, but not included in config) - $deps = $xpath->evaluate('//rc:package/rc:dependencies/rc:required/rc:package/rc:name'); - $cnt = $deps->length; - - for ($i=0; $i<$cnt; $i++) { - $dn = $deps->item($i)->nodeValue; - if (!array_key_exists($dn, $plugins)) { - rcube_plugin_data($dn, $plugins); - } - } - } - else { - unset($plugins[$name]); - } -} - $OUTPUT->set_pagetitle(rcube_label('about')); diff --git a/program/steps/settings/edit_folder.inc b/program/steps/settings/edit_folder.inc index cd2372790..fdb38e602 100644 --- a/program/steps/settings/edit_folder.inc +++ b/program/steps/settings/edit_folder.inc @@ -78,7 +78,7 @@ function rcmail_folder_form($attrib) // Location (name) if ($options['protected']) { - $foldername = Q(str_replace($delimiter, ' » ', rcmail_localize_folderpath($mbox_imap))); + $foldername = str_replace($delimiter, ' » ', Q(rcmail_localize_folderpath($mbox_imap))); } else if ($options['norename']) { $foldername = Q($folder); diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc index 2f726c7e8..319c58db9 100644 --- a/program/steps/settings/func.inc +++ b/program/steps/settings/func.inc @@ -581,8 +581,7 @@ function rcmail_user_prefs($current=null) if (!isset($no_override['reply_mode'])) { $field_id = 'rcmfd_reply_mode'; - $select_replymode = new html_select(array('name' => '_reply_mode', 'id' => $field_id, - 'onchange' => "\$('#rcmfd_sig_above').attr('disabled',this.selectedIndex<2)")); + $select_replymode = new html_select(array('name' => '_reply_mode', 'id' => $field_id)); $select_replymode->add(rcube_label('replyempty'), -1); $select_replymode->add(rcube_label('replybottomposting'), 0); $select_replymode->add(rcube_label('replytopposting'), 1); @@ -631,18 +630,6 @@ function rcmail_user_prefs($current=null) ); } - if (!isset($no_override['sig_above'])) { - $field_id = 'rcmfd_sig_above'; - $select_sigabove = new html_select(array('name' => '_sig_above', 'id' => $field_id, 'disabled' => $config['reply_mode'] < 1)); - $select_sigabove->add(rcube_label('belowquote'), 0); - $select_sigabove->add(rcube_label('abovequote'), 1); - - $blocks['sig']['options']['sig_above'] = array( - 'title' => html::label($field_id, Q(rcube_label('replysignaturepos'))), - 'content' => $select_sigabove->show($config['sig_above']?1:0), - ); - } - if (!isset($no_override['strip_existing_sig'])) { $field_id = 'rcmfd_strip_existing_sig'; $input_stripexistingsig = new html_checkbox(array('name' => '_strip_existing_sig', 'id' => $field_id, 'value' => 1)); diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc index 5daab0d24..dfb2b13ac 100644 --- a/program/steps/settings/save_prefs.inc +++ b/program/steps/settings/save_prefs.inc @@ -86,7 +86,6 @@ switch ($CURR_SECTION) 'show_sig' => isset($_POST['_show_sig']) ? intval($_POST['_show_sig']) : 1, 'reply_mode' => isset($_POST['_reply_mode']) ? intval($_POST['_reply_mode']) : 0, 'strip_existing_sig' => isset($_POST['_strip_existing_sig']), - 'sig_above' => !empty($_POST['_sig_above']) && $_POST['_reply_mode'] > 0, 'default_font' => get_input_value('_default_font', RCUBE_INPUT_POST), 'forward_attachment' => !empty($_POST['_forward_attachment']), ); @@ -158,7 +157,7 @@ switch ($CURR_SECTION) $a_user_prefs['timezone'] = (string) $a_user_prefs['timezone']; if (isset($a_user_prefs['refresh_interval']) && !empty($CONFIG['min_refresh_interval'])) { - if ($a_user_prefs['refresh_interval'] > $CONFIG['min_refresh_interval']) { + if ($a_user_prefs['refresh_interval'] < $CONFIG['min_refresh_interval']) { $a_user_prefs['refresh_interval'] = $CONFIG['min_refresh_interval']; } } diff --git a/program/steps/utils/save_pref.inc b/program/steps/utils/save_pref.inc index b550ad7ef..7def8733d 100644 --- a/program/steps/utils/save_pref.inc +++ b/program/steps/utils/save_pref.inc @@ -21,6 +21,22 @@ $name = get_input_value('_name', RCUBE_INPUT_POST); $value = get_input_value('_value', RCUBE_INPUT_POST); +$whitelist = array( + 'preview_pane', + 'list_cols', + 'collapsed_folders', + 'collapsed_abooks', +); + +if (!in_array($name, array_merge($whitelist, $RCMAIL->plugins->allowed_prefs))) { + raise_error(array('code' => 500, 'type' => 'php', + 'file' => __FILE__, 'line' => __LINE__, + 'message' => sprintf("Hack attempt detected (user: %s)", $RCMAIL->get_user_name())), + true, false); + + $OUTPUT->reset(); + $OUTPUT->send(); +} // save preference value $RCMAIL->user->save_prefs(array($name => $value)); |