From db1a87cd6c506f2afbd1a37c64cb56ae11120b49 Mon Sep 17 00:00:00 2001 From: thomascube Date: Fri, 17 Dec 2010 15:07:04 +0000 Subject: Update branch for 0.5-rc release --- CHANGELOG | 24 + INSTALL | 3 +- README | 3 - UPGRADING | 5 +- bin/update.sh | 2 +- config/main.inc.php.dist | 10 +- index.php | 27 +- plugins/emoticons/emoticons.php | 63 +- plugins/managesieve/localization/fr_FR.inc | 2 + plugins/managesieve/localization/ru_RU.inc | 33 +- plugins/new_user_dialog/localization/es_ES.inc | 4 +- plugins/new_user_dialog/new_user_dialog.php | 1 + plugins/new_user_dialog/package.xml | 26 +- plugins/password/config.inc.php.dist | 2 + plugins/password/drivers/chpasswd.php | 2 +- plugins/password/drivers/ldap.php | 38 +- plugins/password/drivers/ldap_simple.php | 35 +- plugins/password/drivers/sql.php | 8 +- plugins/password/package.xml | 4 + program/include/iniset.php | 2 +- program/include/main.inc | 178 +- program/include/rcmail.php | 32 +- program/include/rcube_imap.php | 327 ++- program/include/rcube_imap_generic.php | 2823 +++++++++++++----------- program/include/rcube_message.php | 6 +- program/include/rcube_template.php | 20 +- program/include/rcube_user.php | 8 +- program/js/app.js | 329 +-- program/js/editor.js | 4 +- program/js/list.js | 9 +- program/lib/Mail/mime.php | 57 +- program/lib/Mail/mimePart.php | 104 +- program/localization/ar_SA/labels.inc | 92 +- program/localization/ar_SA/messages.inc | 28 +- program/localization/ast/labels.inc | 3 - program/localization/ast/messages.inc | 3 - program/localization/az_AZ/labels.inc | 3 - program/localization/az_AZ/messages.inc | 3 - program/localization/bg_BG/labels.inc | 9 +- program/localization/bg_BG/messages.inc | 5 +- program/localization/bn_BD/labels.inc | 5 +- program/localization/bn_BD/messages.inc | 3 - program/localization/br/labels.inc | 3 - program/localization/bs_BA/labels.inc | 3 - program/localization/ca_ES/labels.inc | 3 - program/localization/ca_ES/messages.inc | 3 - program/localization/cs_CZ/labels.inc | 3 - program/localization/cs_CZ/messages.inc | 23 +- program/localization/cy_GB/labels.inc | 26 +- program/localization/cy_GB/messages.inc | 29 +- program/localization/da_DK/labels.inc | 3 - program/localization/da_DK/messages.inc | 3 - program/localization/de_CH/labels.inc | 16 +- program/localization/de_CH/messages.inc | 15 +- program/localization/de_DE/labels.inc | 16 +- program/localization/de_DE/messages.inc | 15 +- program/localization/el_GR/labels.inc | 3 - program/localization/el_GR/messages.inc | 3 - program/localization/en_GB/labels.inc | 24 +- program/localization/en_GB/messages.inc | 29 +- program/localization/en_US/labels.inc | 21 +- program/localization/en_US/messages.inc | 15 +- program/localization/eo/labels.inc | 3 - program/localization/eo/messages.inc | 1 - program/localization/es_AR/labels.inc | 3 - program/localization/es_AR/messages.inc | 3 - program/localization/es_ES/labels.inc | 21 +- program/localization/es_ES/messages.inc | 17 +- program/localization/et_EE/labels.inc | 16 +- program/localization/et_EE/messages.inc | 18 +- program/localization/eu_ES/labels.inc | 3 - program/localization/eu_ES/messages.inc | 1 - program/localization/fa/labels.inc | 4 - program/localization/fa/messages.inc | 3 - program/localization/fa_AF/labels.inc | 3 - program/localization/fa_AF/messages.inc | 3 - program/localization/fi_FI/labels.inc | 3 - program/localization/fi_FI/messages.inc | 3 - program/localization/fr_FR/labels.inc | 19 +- program/localization/fr_FR/messages.inc | 19 +- program/localization/ga_IE/labels.inc | 3 - program/localization/gl_ES/labels.inc | 41 +- program/localization/gl_ES/messages.inc | 27 +- program/localization/he_IL/labels.inc | 21 +- program/localization/he_IL/messages.inc | 17 +- program/localization/hi_IN/labels.inc | 3 - program/localization/hr_HR/labels.inc | 88 +- program/localization/hr_HR/messages.inc | 3 - program/localization/hu_HU/labels.inc | 13 +- program/localization/hu_HU/messages.inc | 3 - program/localization/hy_AM/labels.inc | 3 - program/localization/hy_AM/messages.inc | 3 - program/localization/id_ID/labels.inc | 25 +- program/localization/id_ID/messages.inc | 21 +- program/localization/is_IS/labels.inc | 3 - program/localization/it_IT/labels.inc | 13 +- program/localization/it_IT/messages.inc | 3 - program/localization/ja_JP/labels.inc | 280 +-- program/localization/ja_JP/messages.inc | 46 +- program/localization/ka_GE/labels.inc | 3 - program/localization/ka_GE/messages.inc | 3 - program/localization/kh_KH/labels.inc | 3 - program/localization/kh_KH/messages.inc | 3 - program/localization/ko_KR/labels.inc | 3 - program/localization/ko_KR/messages.inc | 3 - program/localization/ku/labels.inc | 3 - program/localization/ku/messages.inc | 1 - program/localization/lt_LT/labels.inc | 34 +- program/localization/lt_LT/messages.inc | 30 +- program/localization/lv_LV/labels.inc | 3 - program/localization/lv_LV/messages.inc | 3 - program/localization/mk_MK/labels.inc | 3 - program/localization/mk_MK/messages.inc | 3 - program/localization/mr_IN/labels.inc | 3 - program/localization/mr_IN/messages.inc | 3 - program/localization/ms_MY/labels.inc | 3 - program/localization/ms_MY/messages.inc | 1 - program/localization/nb_NO/labels.inc | 3 - program/localization/nb_NO/messages.inc | 3 - program/localization/ne_NP/labels.inc | 3 - program/localization/nl_BE/labels.inc | 3 - program/localization/nl_BE/messages.inc | 3 - program/localization/nl_NL/labels.inc | 15 +- program/localization/nl_NL/messages.inc | 3 - program/localization/nn_NO/labels.inc | 3 - program/localization/nn_NO/messages.inc | 3 - program/localization/pl_PL/labels.inc | 21 +- program/localization/pl_PL/messages.inc | 15 +- program/localization/ps/labels.inc | 3 - program/localization/ps/messages.inc | 3 - program/localization/pt_BR/labels.inc | 3 - program/localization/pt_BR/messages.inc | 3 - program/localization/pt_PT/labels.inc | 18 +- program/localization/pt_PT/messages.inc | 14 +- program/localization/ro_RO/labels.inc | 3 - program/localization/ro_RO/messages.inc | 3 - program/localization/ru_RU/labels.inc | 13 +- program/localization/ru_RU/messages.inc | 3 - program/localization/si_LK/labels.inc | 3 - program/localization/si_LK/messages.inc | 1 - program/localization/sk_SK/labels.inc | 3 - program/localization/sk_SK/messages.inc | 3 - program/localization/sl_SI/labels.inc | 13 +- program/localization/sl_SI/messages.inc | 3 - program/localization/sq_AL/labels.inc | 3 - program/localization/sq_AL/messages.inc | 1 - program/localization/sr_CS/labels.inc | 3 - program/localization/sr_CS/messages.inc | 1 - program/localization/sv_SE/labels.inc | 12 +- program/localization/sv_SE/messages.inc | 15 +- program/localization/ta_IN/labels.inc | 3 - program/localization/ta_IN/messages.inc | 3 - program/localization/th_TH/labels.inc | 3 - program/localization/tr_TR/labels.inc | 3 - program/localization/tr_TR/messages.inc | 3 - program/localization/uk_UA/labels.inc | 16 +- program/localization/uk_UA/messages.inc | 16 +- program/localization/vi_VN/labels.inc | 3 - program/localization/zh_CN/labels.inc | 3 - program/localization/zh_CN/messages.inc | 3 - program/localization/zh_TW/labels.inc | 9 +- program/localization/zh_TW/messages.inc | 4 +- program/steps/mail/compose.inc | 22 +- program/steps/mail/copy.inc | 4 +- program/steps/mail/folders.inc | 84 +- program/steps/mail/func.inc | 93 +- program/steps/mail/getunread.inc | 13 +- program/steps/mail/list.inc | 3 +- program/steps/mail/mark.inc | 6 +- program/steps/mail/move_del.inc | 10 +- program/steps/mail/search.inc | 3 +- program/steps/mail/sendmail.inc | 69 +- program/steps/mail/show.inc | 7 +- program/steps/settings/edit_folder.inc | 294 +++ program/steps/settings/edit_identity.inc | 3 +- program/steps/settings/folders.inc | 377 ++++ program/steps/settings/manage_folders.inc | 443 ---- program/steps/settings/save_folder.inc | 176 ++ program/steps/utils/html2text.inc | 7 +- skins/default/common.css | 19 + skins/default/functions.js | 2 +- skins/default/iehacks.css | 8 +- skins/default/mail.css | 22 +- skins/default/settings.css | 118 +- skins/default/splitter.js | 6 +- skins/default/templates/compose.html | 18 +- skins/default/templates/folderedit.html | 24 + skins/default/templates/folders.html | 62 + skins/default/templates/identityedit.html | 2 +- skins/default/templates/managefolders.html | 41 - 190 files changed, 4251 insertions(+), 3424 deletions(-) create mode 100644 program/steps/settings/edit_folder.inc create mode 100644 program/steps/settings/folders.inc delete mode 100644 program/steps/settings/manage_folders.inc create mode 100644 program/steps/settings/save_folder.inc create mode 100644 skins/default/templates/folderedit.html create mode 100644 skins/default/templates/folders.html delete mode 100644 skins/default/templates/managefolders.html diff --git a/CHANGELOG b/CHANGELOG index 988c97baa..12ada2349 100644 --- a/CHANGELOG +++ b/CHANGELOG @@ -1,6 +1,30 @@ CHANGELOG Roundcube Webmail =========================== +- Plugin API: Add 'pass' argument in 'authenticate' hook (#1487134) +- Fix attachments of type message/rfc822 are not listed on attachments list +- Add 'login_lc' config option for case-insensitive authentication (#1487113) +- Fix window is blur'ed in IE when selecting a message (#1487316) +- Fix cursor position on compose form in Webkit browsers (#1486674) +- Fix setting charset of attachment filenames (#1487122) +- Allow setting autocomplete attribute for all inputs separately (#1487313) +- New Folder Manager UI +- Fix invalid Request when creating a folder (#1487443) +- Add folder size and quota indicator in folder manager (#1485780) +- Add possibility to move a subfolder into root folder (#1486791) +- Fix copying all messages in a folder copies only messages from current page +- Improve performance of moving or copying of all messages in a folder +- Fix plaintext versions of HTML messages don't contain placeholders for emotions (#1485206) +- Improve performance of folder rename and delete actions +- Better support for READ-ONLY and NOPERM responses handling (#1487083) +- Add confirmation message on purge/expunge command response +- Fix handling of untagged responses for AUTHENTICATE command (#1487450) +- Add username and IP address to log message on unsuccessful login (#1487626) +- Improved Mail-Followup-To and Mail-Reply-To headers handling +- Fix charset conversion for text attachments without charset specification (#1487634) + +RELEASE 0.5-BETA +---------------- - Make session data storage more robust against garbage session data (#1487136) - Config option for autocomplete on login screen - Allow plugin templates to include local files (#1487133) diff --git a/INSTALL b/INSTALL index 534eac65b..eb8399786 100644 --- a/INSTALL +++ b/INSTALL @@ -17,8 +17,9 @@ REQUIREMENTS - mbstring, fileinfo, mcrypt (optional) * PEAR packages distributed with Roundcube or external: - MDB2 2.5.0 or newer - - Mail_Mime 1.7.0 or newer + - Mail_Mime 1.8.1 or newer - Net_SMTP 1.4.2 or newer + - Auth_SASL 1.0.3 or newer * php.ini options (see .htaccess file): - error_reporting E_ALL & ~E_NOTICE (or lower) - memory_limit > 16MB (increase as suitable to support large attachments) diff --git a/README b/README index 06530b25b..a4e661a52 100644 --- a/README +++ b/README @@ -25,9 +25,6 @@ Installation: For detailed instructions on how to install Roundcube webmail on your server, please refer to the INSTALL document in the same directory as this document. -If you're updating an older version of Roundcube please follow the steps -described in the UPGRADING file. - Licensing: ---------- diff --git a/UPGRADING b/UPGRADING index 1cc890281..e98fd16d3 100644 --- a/UPGRADING +++ b/UPGRADING @@ -22,6 +22,7 @@ installation as well as the database before executig the following steps. ./SQL/[yourdbtype].update.sql that are superscribed with the currently installed version number. 5. Make sure 'enable_installer' is set to false again. -6. IMPORTANT: clear all records from the sessions table in your database. - The session storage format has changed so all existing data cannot be read anymore. +6. IMPORTANT (when upgrading from 0.4.x): clear all records from the sessions + table in your database. The session storage format has changed so all + existing data cannot be read anymore. diff --git a/bin/update.sh b/bin/update.sh index 5f4e3f24c..a2988879c 100755 --- a/bin/update.sh +++ b/bin/update.sh @@ -80,7 +80,7 @@ if ($RCI->configured) { // Success! if ($write1 && $write2) { echo "Done.\n"; - echo "Your configuration files are now up-tp-date!\n"; + echo "Your configuration files are now up-to-date!\n"; } else { echo "Failed to write config files!\n"; diff --git a/config/main.inc.php.dist b/config/main.inc.php.dist index 2b18da333..e2f9aea3b 100644 --- a/config/main.inc.php.dist +++ b/config/main.inc.php.dist @@ -83,6 +83,7 @@ $rcmail_config['imap_delimiter'] = null; // set these options. All can be strings or arrays of strings. // Folders need to be ended with directory separator, e.g. "INBOX." // (special directory "~" is an exception to this rule) +// These can be used also to overwrite server's namespaces $rcmail_config['imap_ns_personal'] = null; $rcmail_config['imap_ns_other'] = null; $rcmail_config['imap_ns_shared'] = null; @@ -180,8 +181,13 @@ $rcmail_config['message_cache_lifetime'] = '10d'; // set the port for the ssl connection as value of this option if it differs from the default 443 $rcmail_config['force_https'] = false; -// Allow browser-autocompletion on login form -$rcmail_config['login_autocomplete'] = false; +// Allow browser-autocompletion on login form. +// 0 - disabled, 1 - username and host only, 2 - username, host, password +$rcmail_config['login_autocomplete'] = 0; + +// If users authentication is not case sensitive this must be enabled. +// You can also use it to force conversion of logins to lower case. +$rcmail_config['login_lc'] = false; // automatically create a new Roundcube user when log-in the first time. // a new user will be created once the IMAP login succeeds. diff --git a/index.php b/index.php index 0da3c129f..ff9b0080b 100644 --- a/index.php +++ b/index.php @@ -2,7 +2,7 @@ /* +-------------------------------------------------------------------------+ | Roundcube Webmail IMAP Client | - | Version 0.5-beta | + | Version 0.5-rc | | | | Copyright (C) 2005-2010, Roundcube Dev. - Switzerland | | | @@ -77,16 +77,14 @@ $RCMAIL->action = $startup['action']; if ($RCMAIL->task == 'login' && $RCMAIL->action == 'login') { // purge the session in case of new login when a session already exists $RCMAIL->kill_session(); - + $auth = $RCMAIL->plugins->exec_hook('authenticate', array( 'host' => $RCMAIL->autoselect_host(), 'user' => trim(get_input_value('_user', RCUBE_INPUT_POST)), + 'pass' => get_input_value('_pass', RCUBE_INPUT_POST, true, + $RCMAIL->config->get('password_charset', 'ISO-8859-1')), 'cookiecheck' => true, )); - - if (!isset($auth['pass'])) - $auth['pass'] = get_input_value('_pass', RCUBE_INPUT_POST, true, - $RCMAIL->config->get('password_charset', 'ISO-8859-1')); // check if client supports cookies if ($auth['cookiecheck'] && empty($_COOKIE)) { @@ -220,16 +218,15 @@ $action_map = array( 'group-addmembers' => 'groups.inc', 'group-delmembers' => 'groups.inc', ), - + 'settings' => array( - 'folders' => 'manage_folders.inc', - 'create-folder' => 'manage_folders.inc', - 'rename-folder' => 'manage_folders.inc', - 'delete-folder' => 'manage_folders.inc', - 'subscribe' => 'manage_folders.inc', - 'unsubscribe' => 'manage_folders.inc', - 'enable-threading' => 'manage_folders.inc', - 'disable-threading' => 'manage_folders.inc', + 'folders' => 'folders.inc', + 'rename-folder' => 'folders.inc', + 'delete-folder' => 'folders.inc', + 'subscribe' => 'folders.inc', + 'unsubscribe' => 'folders.inc', + 'purge' => 'folders.inc', + 'folder-size' => 'folders.inc', 'add-identity' => 'edit_identity.inc', ) ); diff --git a/plugins/emoticons/emoticons.php b/plugins/emoticons/emoticons.php index e929c9f9d..95f5ecf39 100644 --- a/plugins/emoticons/emoticons.php +++ b/plugins/emoticons/emoticons.php @@ -5,7 +5,7 @@ * * Sample plugin to replace emoticons in plain text message body with real icons * - * @version 1.2.0 + * @version 1.3 * @author Thomas Bruederli * @author Aleksander Machniak * @website http://roundcube.net @@ -35,38 +35,30 @@ class emoticons extends rcube_plugin // map of emoticon replacements $map = array( - '/:\)/' => html::img(array( - 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-smile.gif', - 'title' => ':)' - )), - '/:-\)/' => html::img(array( - 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-smile.gif', - 'title' => ':-)' - )), - '/(? html::img(array( - 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif', - 'title' => ':D' - )), - '/:-D/' => html::img(array( - 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-laughing.gif', - 'title' => ':-D' - )), - '/:\(/' => html::img(array( - 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-frown.gif', - 'title' => ':(' - )), - '/:-\(/' => html::img(array( - 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-frown.gif', - 'title' => ':-(' - )), - '/'.$entity.';\)/' => html::img(array( - 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif', - 'title' => ';)' - )), - '/'.$entity.';-\)/' => html::img(array( - 'src' => './program/js/tiny_mce/plugins/emotions/img/smiley-wink.gif', - 'title' => ';-)' - )), + '/:\)/' => $this->img_tag('smiley-smile.gif', ':)' ), + '/:-\)/' => $this->img_tag('smiley-smile.gif', ':-)' ), + '/(? $this->img_tag('smiley-laughing.gif', ':D' ), + '/:-D/' => $this->img_tag('smiley-laughing.gif', ':-D' ), + '/:\(/' => $this->img_tag('smiley-frown.gif', ':(' ), + '/:-\(/' => $this->img_tag('smiley-frown.gif', ':-(' ), + '/'.$entity.';\)/' => $this->img_tag('smiley-wink.gif', ';)' ), + '/'.$entity.';-\)/' => $this->img_tag('smiley-wink.gif', ';-)' ), + '/8\)/' => $this->img_tag('smiley-cool.gif', '8)' ), + '/8-\)/' => $this->img_tag('smiley-cool.gif', '8-)' ), + '/(? $this->img_tag('smiley-surprised.gif', ':O' ), + '/(? $this->img_tag('smiley-surprised.gif', ':-O' ), + '/(? $this->img_tag('smiley-tongue-out.gif', ':P' ), + '/(? $this->img_tag('smiley-tongue-out.gif', ':-P' ), + '/(? $this->img_tag('smiley-yell.gif', ':@' ), + '/(? $this->img_tag('smiley-yell.gif', ':-@' ), + '/O:\)/i' => $this->img_tag('smiley-innocent.gif', 'O:)' ), + '/O:-\)/i' => $this->img_tag('smiley-innocent.gif', 'O:-)' ), + '/(? $this->img_tag('smiley-embarassed.gif', ':$' ), + '/(? $this->img_tag('smiley-embarassed.gif', ':-$' ), + '/(? $this->img_tag('smiley-kiss.gif', ':*' ), + '/(? $this->img_tag('smiley-kiss.gif', ':-*' ), + '/(? $this->img_tag('smiley-undecided.gif', ':S' ), + '/(? $this->img_tag('smiley-undecided.gif', ':-S' ), ); if ($args['type'] == 'plain') { @@ -77,4 +69,9 @@ class emoticons extends rcube_plugin return $args; } + private function img_tag($ico, $title) + { + $path = './program/js/tiny_mce/plugins/emotions/img/'; + return html::img(array('src' => $path.$ico, 'title' => $title)); + } } diff --git a/plugins/managesieve/localization/fr_FR.inc b/plugins/managesieve/localization/fr_FR.inc index e7d09945a..0b494f041 100644 --- a/plugins/managesieve/localization/fr_FR.inc +++ b/plugins/managesieve/localization/fr_FR.inc @@ -26,6 +26,8 @@ $labels['messageredirect'] = 'Transférer le message à'; $labels['messagereply'] = 'Répondre avec le message'; $labels['messagedelete'] = 'Supprimer le message'; $labels['messagediscard'] = 'Rejeter avec le message'; +$labels['messagecopyto'] = 'Copier le message vers'; +$labels['messagesendcopy'] = 'Envoyer une copie du message à'; $labels['messagesrules'] = 'Pour les mails entrants:'; $labels['messagesactions'] = '...exécuter les actions suivantes:'; $labels['add'] = 'Ajouter'; diff --git a/plugins/managesieve/localization/ru_RU.inc b/plugins/managesieve/localization/ru_RU.inc index 95f302818..d485f0ed3 100644 --- a/plugins/managesieve/localization/ru_RU.inc +++ b/plugins/managesieve/localization/ru_RU.inc @@ -1,4 +1,22 @@ | ++-----------------------------------------------------------------------+ + +@version 2010-10-11 + +*/ + $labels['filters'] = 'Фильтры'; $labels['managefilters'] = 'Управление фильтрами для входящей почты'; $labels['filtername'] = 'Название фильтра'; @@ -21,7 +39,9 @@ $labels['filterover'] = 'на'; $labels['addrule'] = 'Добавить правило'; $labels['delrule'] = 'Удалить правило'; $labels['messagemoveto'] = 'Переместить сообщение в'; -$labels['messageredirect'] = 'Перенаправить сообщение на '; +$labels['messageredirect'] = 'Перенаправить сообщение на'; +$labels['messagecopyto'] = 'Скопировать сообщение в'; +$labels['messagesendcopy'] = 'Отправить копию сообщения на'; $labels['messagereply'] = 'Ответить с сообщением'; $labels['messagedelete'] = 'Удалить сообщение'; $labels['messagediscard'] = 'Отбросить с сообщением'; @@ -38,12 +58,13 @@ $labels['rulestop'] = 'Закончить выполнение'; $labels['filterset'] = 'Набор фильтров'; $labels['filtersetadd'] = 'Добавить набор фильтров'; $labels['filtersetdel'] = 'Удалить текущий набор фильтров'; -$labels['filtersetact'] = 'Активировать текущий набор фильтров'; +$labels['filtersetact'] = 'Включить текущий набор фильтров'; +$labels['filtersetdeact'] = 'Отключить текущий набор фильтров'; $labels['filtersetget'] = 'Скачать набор фильтров в виде текста'; $labels['filterdef'] = 'Описание фильтра'; $labels['filtersetname'] = 'Название набора фильтров'; $labels['newfilterset'] = 'Новый набор фильтров'; -$labels['active'] = 'активный'; +$labels['active'] = 'используется'; $labels['none'] = 'пустой'; $labels['fromset'] = 'из набора'; $labels['fromfile'] = 'из файла'; @@ -61,9 +82,11 @@ $messages['ruledeleteconfirm'] = 'Вы уверенны, что хотите у $messages['actiondeleteconfirm'] = 'Вы уверенны, что хотите удалить это действие?'; $messages['forbiddenchars'] = 'Недопустимые символы в поле'; $messages['cannotbeempty'] = 'Поле не может быть пустым'; -$messages['setactivateerror'] = 'Невозможно активировать выбранный набор фильтров. Ошибка сервера'; +$messages['setactivateerror'] = 'Невозможно включить выбранный набор фильтров. Ошибка сервера'; +$messages['setdeactivateerror'] = 'Невозможно отключить выбранный набор фильтров. Ошибка сервера'; $messages['setdeleteerror'] = 'Невозможно удалить выбранный набор фильтров. Ошибка сервера'; -$messages['setactivated'] = 'Набор фильтров успешно активирован'; +$messages['setactivated'] = 'Набор фильтров успешно включён'; +$messages['setdeactivated'] = 'Набор фильтров успешно отключён'; $messages['setdeleted'] = 'Набор фильтров успешно удалён'; $messages['setdeleteconfirm'] = 'Вы уверены в том, что хотите удалить выбранный набор фильтров?'; $messages['setcreateerror'] = 'Невозможно создать набор фильтров. Ошибка сервера'; diff --git a/plugins/new_user_dialog/localization/es_ES.inc b/plugins/new_user_dialog/localization/es_ES.inc index 73f47f25a..2d2ccfe0a 100644 --- a/plugins/new_user_dialog/localization/es_ES.inc +++ b/plugins/new_user_dialog/localization/es_ES.inc @@ -1,7 +1,7 @@ diff --git a/plugins/new_user_dialog/new_user_dialog.php b/plugins/new_user_dialog/new_user_dialog.php index 9b773be65..96cd0da23 100644 --- a/plugins/new_user_dialog/new_user_dialog.php +++ b/plugins/new_user_dialog/new_user_dialog.php @@ -85,6 +85,7 @@ class new_user_dialog extends rcube_plugin "$(document).ready(function () { rcmail.message_list.key_press = function(){}; rcmail.message_list.key_down = function(){}; + $('input[name=_name]').focus(); });", 'foot'); $this->include_stylesheet('newuserdialog.css'); diff --git a/plugins/new_user_dialog/package.xml b/plugins/new_user_dialog/package.xml index 7caa87ca4..198a9fadb 100644 --- a/plugins/new_user_dialog/package.xml +++ b/plugins/new_user_dialog/package.xml @@ -13,10 +13,10 @@ roundcube@gmail.com yes - 2010-05-27 + 2010-12-02 - 1.2 + 1.3 1.0 @@ -25,8 +25,8 @@ GNU GPLv2 -- Add overlay box only to mail task main template -- Fix possible error on form submission (#1486103) +- Added setting of focus on name input +- Added gl_ES translation @@ -45,6 +45,7 @@ + @@ -101,5 +102,22 @@ - Fix space bar and backspace buttons not working (#1486726) + + 2010-05-27 + + + 1.2 + 1.0 + + + stable + stable + + GNU GPLv2 + +- Add overlay box only to mail task main template +- Fix possible error on form submission (#1486103) + + diff --git a/plugins/password/config.inc.php.dist b/plugins/password/config.inc.php.dist index b412663ba..10a659d32 100644 --- a/plugins/password/config.inc.php.dist +++ b/plugins/password/config.inc.php.dist @@ -127,6 +127,7 @@ $rcmail_config['password_ldap_adminPW'] = null; // '%login' will be replaced by the current roundcube user's login // '%name' will be replaced by the current roundcube user's name part // '%domain' will be replaced by the current roundcube user's domain part +// '%dc' will be replaced by domain name hierarchal string e.g. "dc=test,dc=domain,dc=com" // Exemple: 'uid=%login,ou=people,dc=exemple,dc=com' $rcmail_config['password_ldap_userDN_mask'] = 'uid=%login,ou=people,dc=exemple,dc=com'; @@ -164,6 +165,7 @@ $rcmail_config['password_ldap_search_base'] = 'ou=people,dc=example,dc=com'; // '%login' will be replaced by the current roundcube user's login // '%name' will be replaced by the current roundcube user's name part // '%domain' will be replaced by the current roundcube user's domain part +// '%dc' will be replaced by domain name hierarchal string e.g. "dc=test,dc=domain,dc=com" // Example: '(uid=%login)' // Example: '(&(objectClass=posixAccount)(uid=%login))' $rcmail_config['password_ldap_search_filter'] = '(uid=%login)'; diff --git a/plugins/password/drivers/chpasswd.php b/plugins/password/drivers/chpasswd.php index 8450af154..28c3e5d7a 100644 --- a/plugins/password/drivers/chpasswd.php +++ b/plugins/password/drivers/chpasswd.php @@ -18,7 +18,7 @@ function password_save($currpass, $newpass) $username = $_SESSION['username']; $handle = popen($cmd, "w"); - fwrite($handle, "$username:$newpass"); + fwrite($handle, "$username:$newpass\n"); if (pclose($handle) == 0) { return PASSWORD_SUCCESS; diff --git a/plugins/password/drivers/ldap.php b/plugins/password/drivers/ldap.php index c5cb2328a..98b6636be 100644 --- a/plugins/password/drivers/ldap.php +++ b/plugins/password/drivers/ldap.php @@ -18,18 +18,18 @@ function password_save($curpass, $passwd) { $rcmail = rcmail::get_instance(); require_once ('Net/LDAP2.php'); - + // Building user DN if ($userDN = $rcmail->config->get('password_ldap_userDN_mask')) { $userDN = substitute_vars($userDN); } else { $userDN = search_userdn($rcmail); } - + if (empty($userDN)) { return PASSWORD_CONNECT_ERROR; } - + // Connection Method switch($rcmail->config->get('password_ldap_method')) { case 'admin': @@ -42,7 +42,7 @@ function password_save($curpass, $passwd) $bindpw = $curpass; break; } - + // Configuration array $ldapConfig = array ( 'binddn' => $binddn, @@ -53,27 +53,27 @@ function password_save($curpass, $passwd) 'starttls' => $rcmail->config->get('password_ldap_starttls'), 'version' => $rcmail->config->get('password_ldap_version'), ); - + // Connecting using the configuration array $ldap = Net_LDAP2::connect($ldapConfig); - + // Checking for connection error if (PEAR::isError($ldap)) { return PASSWORD_CONNECT_ERROR; } - + // Crypting new password $newCryptedPassword = hashPassword($passwd, $rcmail->config->get('password_ldap_encodage')); if (!$newCryptedPassword) { return PASSWORD_CRYPT_ERROR; } - + // Writing new crypted password to LDAP $userEntry = $ldap->getEntry($userDN); if (Net_LDAP2::isError($userEntry)) { return PASSWORD_CONNECT_ERROR; } - + $pwattr = $rcmail->config->get('password_ldap_pwattr'); $force = $rcmail->config->get('password_ldap_force_replace'); @@ -132,25 +132,30 @@ function search_userdn($rcmail) if (PEAR::isError($result) || ($result->count() != 1)) { return ''; } - + return $result->current()->dn(); } /** - * Substitute %login, %name and %domain in $str. + * Substitute %login, %name, %domain, %dc in $str. * See plugin config for details. */ function substitute_vars($str) { $rcmail = rcmail::get_instance(); + $domain = $rcmail->user->get_username('domain'); + $dc = 'dc='.strtr($domain, array('.' => ',dc=')); // hierarchal domain string + $str = str_replace(array( '%login', '%name', '%domain', + '%dc', ), array( $_SESSION['username'], $rcmail->user->get_username('local'), - $rcmail->user->get_username('domain'), + $domain, + $dc, ), $str ); @@ -178,7 +183,7 @@ function hashPassword( $passwordClear, $encodageType ) case 'crypt': $cryptedPassword = '{CRYPT}' . crypt($passwordClear,randomSalt(2)); break; - + case 'ext_des': // extended des crypt. see OpenBSD crypt man page. if ( ! defined( 'CRYPT_EXT_DES' ) || CRYPT_EXT_DES == 0 ) { @@ -263,8 +268,7 @@ function hashPassword( $passwordClear, $encodageType ) * @param int $length The length of the salt string to generate. * @return string The generated salt string. */ - -function randomSalt( $length ) +function randomSalt( $length ) { $possible = '0123456789'. 'abcdefghijklmnopqrstuvwxyz'. @@ -273,8 +277,8 @@ function randomSalt( $length ) $str = ''; // mt_srand((double)microtime() * 1000000); - while( strlen( $str ) < $length ) - $str .= substr( $possible, ( rand() % strlen( $possible ) ), 1 ); + while (strlen($str) < $length) + $str .= substr($possible, (rand() % strlen($possible)), 1); return $str; } diff --git a/plugins/password/drivers/ldap_simple.php b/plugins/password/drivers/ldap_simple.php index 541afa96b..38db9f129 100644 --- a/plugins/password/drivers/ldap_simple.php +++ b/plugins/password/drivers/ldap_simple.php @@ -20,7 +20,7 @@ function password_save($curpass, $passwd) return PASSWORD_CONNECT_ERROR; } - /* Set protocol version */ + /* Set protocol version */ if (!ldap_set_option($ds, LDAP_OPT_PROTOCOL_VERSION, $rcmail->config->get('password_ldap_version'))) { ldap_unbind($ds); return PASSWORD_CONNECT_ERROR; @@ -40,12 +40,12 @@ function password_save($curpass, $passwd) } else { $user_dn = ldap_simple_search_userdn($rcmail, $ds); } - + if (empty($user_dn)) { ldap_unbind($ds); return PASSWORD_CONNECT_ERROR; } - + /* Connection method */ switch ($rcmail->config->get('password_ldap_method')) { case 'admin': @@ -64,27 +64,27 @@ function password_save($curpass, $passwd) ldap_unbind($ds); return PASSWORD_CONNECT_ERROR; } - + /* Crypting new password */ $passwd = ldap_simple_hash_password($passwd, $rcmail->config->get('password_ldap_encodage')); if (!$passwd) { ldap_unbind($ds); return PASSWORD_CRYPT_ERROR; } - + $entree[$rcmail->config->get('password_ldap_pwattr')] = $passwd; /* Updating PasswordLastChange Attribute if desired */ if ($lchattr = $rcmail->config->get('password_ldap_lchattr')) { - $entree[$lchattr] = (int)(time() / 86400) + $entree[$lchattr] = (int)(time() / 86400); } - + if (!ldap_modify($ds, $user_dn, $entree)) { ldap_unbind($ds); return PASSWORD_CONNECT_ERROR; } - + /* All done, no error */ ldap_unbind($ds); return PASSWORD_SUCCESS; @@ -101,34 +101,37 @@ function ldap_simple_search_userdn($rcmail, $ds) if (!ldap_bind($ds, $rcmail->config->get('password_ldap_searchDN'), $rcmail->config->get('password_ldap_searchPW'))) { return false; } - + /* Search for the DN */ if (!$sr = ldap_search($ds, $rcmail->config->get('password_ldap_search_base'), ldap_simple_substitute_vars($rcmail->config->get('password_ldap_search_filter')))) { return false; } - + /* If no or more entries were found, return false */ if (ldap_count_entries($ds, $sr) != 1) { return false; } - + return ldap_get_dn($ds, ldap_first_entry($ds, $sr)); } /** - * Substitute %login, %name and %domain in $str + * Substitute %login, %name, %domain, %dc in $str * See plugin config for details */ function ldap_simple_substitute_vars($str) { $str = str_replace('%login', $_SESSION['username'], $str); $str = str_replace('%l', $_SESSION['username'], $str); - + $parts = explode('@', $_SESSION['username']); + if (count($parts) == 2) { + $dc = 'dc='.strtr($parts[1], array('.' => ',dc=')); // hierarchal domain string + $str = str_replace('%name', $parts[0], $str); - $str = str_replace('%n', $parts[0], $str); - + $str = str_replace('%n', $parts[0], $str); + $str = str_replace('%dc', $dc, $str); $str = str_replace('%domain', $parts[1], $str); $str = str_replace('%d', $parts[1], $str); } @@ -228,6 +231,6 @@ function ldap_simple_random_salt($length) while (strlen($str) < $length) { $str .= substr($possible, (rand() % strlen($possible)), 1); } - + return $str; } diff --git a/plugins/password/drivers/sql.php b/plugins/password/drivers/sql.php index 70e564396..33469ec62 100644 --- a/plugins/password/drivers/sql.php +++ b/plugins/password/drivers/sql.php @@ -33,7 +33,7 @@ function password_save($curpass, $passwd) if ($err = $db->is_error()) return PASSWORD_ERROR; - + // crypted password if (strpos($sql, '%c') !== FALSE) { $salt = ''; @@ -56,7 +56,11 @@ function password_save($curpass, $passwd) $dovecotpw = 'dovecotpw'; if (!($method = $rcmail->config->get('password_dovecotpw_method'))) $method = 'CRAM-MD5'; - $tmpfile = tempnam('/tmp', 'roundcube-'); + + // use common temp dir + $tmp_dir = $rcmail->config->get('temp_dir'); + $tmpfile = tempnam($tmp_dir, 'roundcube-'); + $pipe = popen("'$dovecotpw' -s '$method' > '$tmpfile'", "w"); if (!$pipe) { unlink($tmpfile); diff --git a/plugins/password/package.xml b/plugins/password/package.xml index 1fe49fb74..381783b97 100644 --- a/plugins/password/package.xml +++ b/plugins/password/package.xml @@ -29,6 +29,10 @@ - hMail driver: add username_domain detection (#1487100) - hMail driver: HTML tags in logged messages should be stripped off (#1487099) +- Chpasswd driver: add newline at end of input to chpasswd binary (#1487141) +- Fix usage of configured temp_dir instead of /tmp (#1487447) +- ldap_simple driver: fix parse error +- ldap/ldap_simple drivers: support %dc variable in config diff --git a/program/include/iniset.php b/program/include/iniset.php index a48ca9edf..8ccef8a7d 100755 --- a/program/include/iniset.php +++ b/program/include/iniset.php @@ -36,7 +36,7 @@ foreach ($crit_opts as $optname => $optval) { } // application constants -define('RCMAIL_VERSION', '0.5-beta'); +define('RCMAIL_VERSION', '0.5-rc'); define('RCMAIL_CHARSET', 'UTF-8'); define('JS_OBJECT_NAME', 'rcmail'); define('RCMAIL_START', microtime(true)); diff --git a/program/include/main.inc b/program/include/main.inc index 7ea4ae20f..b61f8aea2 100644 --- a/program/include/main.inc +++ b/program/include/main.inc @@ -1193,21 +1193,33 @@ function rcmail_log_login() if (!$RCMAIL->config->get('log_logins') || !$RCMAIL->user) return; - $address = $_SERVER['REMOTE_ADDR']; - // append the NGINX X-Real-IP header, if set - if (!empty($_SERVER['HTTP_X_REAL_IP'])) { - $remote_ip[] = 'X-Real-IP: ' . $_SERVER['HTTP_X_REAL_IP']; - } - // append the X-Forwarded-For header, if set - if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { - $remote_ip[] = 'X-Forwarded-For: ' . $_SERVER['HTTP_X_FORWARDED_FOR']; - } + write_log('userlogins', sprintf('Successful login for %s (ID: %d) from %s', + $RCMAIL->user->get_username(), $RCMAIL->user->ID, rcmail_remote_ip())); +} - if (!empty($remote_ip)) - $address .= '(' . implode(',', $remote_ip) . ')'; - write_log('userlogins', sprintf('Successful login for %s (ID: %d) from %s', - $RCMAIL->user->get_username(), $RCMAIL->user->ID, $address)); +/** + * Returns remote IP address and forwarded addresses if found + * + * @return string Remote IP address(es) + */ +function rcmail_remote_ip() +{ + $address = $_SERVER['REMOTE_ADDR']; + + // append the NGINX X-Real-IP header, if set + if (!empty($_SERVER['HTTP_X_REAL_IP'])) { + $remote_ip[] = 'X-Real-IP: ' . $_SERVER['HTTP_X_REAL_IP']; + } + // append the X-Forwarded-For header, if set + if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) { + $remote_ip[] = 'X-Forwarded-For: ' . $_SERVER['HTTP_X_FORWARDED_FOR']; + } + + if (!empty($remote_ip)) + $address .= '(' . implode(',', $remote_ip) . ')'; + + return $address; } @@ -1219,7 +1231,7 @@ function rcube_timer() { return microtime(true); } - + /** * @access private @@ -1314,8 +1326,13 @@ function rcmail_mailbox_select($p = array()) $p += array('maxlength' => 100, 'realnames' => false); $a_mailboxes = array(); - - foreach ($RCMAIL->imap->list_mailboxes() as $folder) + + if ($p['unsubscribed']) + $list = $RCMAIL->imap->list_unsubscribed(); + else + $list = $RCMAIL->imap->list_mailboxes(); + + foreach ($list as $folder) if (empty($p['exceptions']) || !in_array($folder, $p['exceptions'])) rcmail_build_folder_tree($a_mailboxes, $folder, $RCMAIL->imap->get_hierarchy_delimiter()); @@ -1551,6 +1568,97 @@ function rcmail_localize_foldername($name) } +function rcmail_quota_display($attrib) +{ + global $OUTPUT; + + if (!$attrib['id']) + $attrib['id'] = 'rcmquotadisplay'; + + if(isset($attrib['display'])) + $_SESSION['quota_display'] = $attrib['display']; + + $OUTPUT->add_gui_object('quotadisplay', $attrib['id']); + + $quota = rcmail_quota_content($attrib); + + $OUTPUT->add_script('$(document).ready(function(){ + rcmail.set_quota('.json_serialize($quota).')});', 'foot'); + + return html::span($attrib, ''); +} + + +function rcmail_quota_content($attrib=NULL) +{ + global $RCMAIL; + + $quota = $RCMAIL->imap->get_quota(); + $quota = $RCMAIL->plugins->exec_hook('quota', $quota); + + $quota_result = (array) $quota; + $quota_result['type'] = isset($_SESSION['quota_display']) ? $_SESSION['quota_display'] : ''; + + if (!$quota['total'] && $RCMAIL->config->get('quota_zero_as_unlimited')) { + $quota_result['title'] = rcube_label('unlimited'); + $quota_result['percent'] = 0; + } + else if ($quota['total']) { + if (!isset($quota['percent'])) + $quota_result['percent'] = min(100, round(($quota['used']/max(1,$quota['total']))*100)); + + $title = sprintf('%s / %s (%.0f%%)', + show_bytes($quota['used'] * 1024), show_bytes($quota['total'] * 1024), + $quota_result['percent']); + + $quota_result['title'] = $title; + + if ($attrib['width']) + $quota_result['width'] = $attrib['width']; + if ($attrib['height']) + $quota_result['height'] = $attrib['height']; + } + else { + $quota_result['title'] = rcube_label('unknown'); + $quota_result['percent'] = 0; + } + + return $quota_result; +} + + +/** + * Outputs error message according to server error/response codes + * + * @param string Fallback message label + * @param string Fallback message label arguments + * + * @return void + */ +function rcmail_display_server_error($fallback=null, $fallback_args=null) +{ + global $RCMAIL; + + $err_code = $RCMAIL->imap->get_error_code(); + $res_code = $RCMAIL->imap->get_response_code(); + + if ($res_code == rcube_imap::NOPERM) { + $RCMAIL->output->show_message('errornoperm', 'error'); + } + else if ($res_code == rcube_imap::READONLY) { + $RCMAIL->output->show_message('errorreadonly', 'error'); + } + else if ($err_code && ($err_str = $RCMAIL->imap->get_error_str())) { + $RCMAIL->output->show_message('servererrormsg', 'error', array('msg' => $err_str)); + } + else if ($fallback) { + $RCMAIL->output->show_message($fallback, 'error', $fallback_args); + } + + return true; +} + + /** * Output HTML editor scripts * @@ -1582,6 +1690,43 @@ function rcube_html_editor($mode='') } +/** + * Replaces TinyMCE's emoticon images with plain-text representation + * + * @param string HTML content + * @return string HTML content + */ +function rcmail_replace_emoticons($html) +{ + $emoticons = array( + '8-)' => 'smiley-cool', + ':-#' => 'smiley-foot-in-mouth', + ':-*' => 'smiley-kiss', + ':-X' => 'smiley-sealed', + ':-P' => 'smiley-tongue-out', + ':-@' => 'smiley-yell', + ":'(" => 'smiley-cry', + ':-(' => 'smiley-frown', + ':-D' => 'smiley-laughing', + ':-)' => 'smiley-smile', + ':-S' => 'smiley-undecided', + ':-$' => 'smiley-embarassed', + 'O:-)' => 'smiley-innocent', + ':-|' => 'smiley-money-mouth', + ':-O' => 'smiley-surprised', + ';-)' => 'smiley-wink', + ); + + foreach ($emoticons as $idx => $file) { + // Cry + $search[] = '/]+\/>/i'; + $replace[] = $idx; + } + + return preg_replace($search, $replace, $html); +} + + /** * Check if working in SSL mode * @@ -1817,3 +1962,4 @@ function log_bug($arg_arr) flush(); } } + diff --git a/program/include/rcmail.php b/program/include/rcmail.php index e76b1420a..0eecd8ddb 100644 --- a/program/include/rcmail.php +++ b/program/include/rcmail.php @@ -678,10 +678,16 @@ class rcmail $username .= '@'.rcube_parse_host($config['username_domain']); } + // Convert username to lowercase. If IMAP backend + // is case-insensitive we need to store always the same username (#1487113) + if ($config['login_lc']) { + $username = mb_strtolower($username); + } + // try to resolve email address from virtuser table - if (strpos($username, '@')) - if ($virtuser = rcube_user::email2user($username)) - $username = $virtuser; + if (strpos($username, '@') && ($virtuser = rcube_user::email2user($username))) { + $username = $virtuser; + } // Here we need IDNA ASCII // Only rcube_contacts class is using domain names in Unicode @@ -704,8 +710,14 @@ class rcmail if (!($imap_login = $this->imap->connect($host, $username, $pass, $imap_port, $imap_ssl))) { // try with lowercase $username_lc = mb_strtolower($username); - if ($username_lc != $username && ($imap_login = $this->imap->connect($host, $username_lc, $pass, $imap_port, $imap_ssl))) - $username = $username_lc; + if ($username_lc != $username) { + // try to find user record again -> overwrite username + if (!$user && ($user = rcube_user::query($username_lc, $host))) + $username_lc = $user->data['username']; + + if ($imap_login = $this->imap->connect($host, $username_lc, $pass, $imap_port, $imap_ssl)) + $username = $username_lc; + } } // exit if IMAP login failed @@ -1203,8 +1215,14 @@ class rcmail if (function_exists('mcrypt_module_open') && ($td = mcrypt_module_open(MCRYPT_TripleDES, "", MCRYPT_MODE_CBC, ""))) { - $iv = substr($cipher, 0, mcrypt_enc_get_iv_size($td)); - $cipher = substr($cipher, mcrypt_enc_get_iv_size($td)); + $iv_size = mcrypt_enc_get_iv_size($td); + $iv = substr($cipher, 0, $iv_size); + + // session corruption? (#1485970) + if (strlen($iv) < $iv_size) + return ''; + + $cipher = substr($cipher, $iv_size); mcrypt_generic_init($td, $this->config->get_crypto_key($key), $iv); $clear = mdecrypt_generic($td, $cipher); mcrypt_generic_deinit($td); diff --git a/program/include/rcube_imap.php b/program/include/rcube_imap.php index 212e8865e..5715459a8 100644 --- a/program/include/rcube_imap.php +++ b/program/include/rcube_imap.php @@ -100,6 +100,16 @@ class rcube_imap 'RETURN-PATH', ); + const UNKNOWN = 0; + const NOPERM = 1; + const READONLY = 2; + const TRYCREATE = 3; + const INUSE = 4; + const OVERQUOTA = 5; + const ALREADYEXISTS = 6; + const NONEXISTENT = 7; + const CONTACTADMIN = 8; + /** * Object constructor @@ -156,21 +166,20 @@ class rcube_imap $this->ssl = $use_ssl; if ($this->conn->connected()) { - // print trace messages - if ($this->conn->message && ($this->debug_level & 8)) { - console($this->conn->message); - } // get namespace and delimiter $this->set_env(); - return true; } // write error log else if ($this->conn->error) { - if ($pass && $user) + if ($pass && $user) { + $message = sprintf("Login failed for %s from %s. %s", + $user, rcmail_remote_ip(), $this->conn->error); + raise_error(array('code' => 403, 'type' => 'imap', 'file' => __FILE__, 'line' => __LINE__, - 'message' => $this->conn->error), true, false); + 'message' => $message), true, false); + } } return false; @@ -185,7 +194,7 @@ class rcube_imap */ function close() { - $this->conn->close(); + $this->conn->closeConnection(); $this->write_cache(); } @@ -198,11 +207,11 @@ class rcube_imap */ function reconnect() { - $this->close(); - $this->connect($this->host, $this->user, $this->pass, $this->port, $this->ssl); + $this->conn->closeConnection(); + $connected = $this->connect($this->host, $this->user, $this->pass, $this->port, $this->ssl); // issue SELECT command to restore connection status - if ($this->mailbox) + if ($connected && strlen($this->mailbox)) $this->conn->select($this->mailbox); } @@ -225,7 +234,51 @@ class rcube_imap */ function get_error_str() { - return ($this->conn) ? $this->conn->error : ''; + return ($this->conn) ? $this->conn->error : null; + } + + + /** + * Returns code of last command response + * + * @return int Response code + */ + function get_response_code() + { + if (!$this->conn) + return self::UNKNOWN; + + switch ($this->conn->resultcode) { + case 'NOPERM': + return self::NOPERM; + case 'READ-ONLY': + return self::READONLY; + case 'TRYCREATE': + return self::TRYCREATE; + case 'INUSE': + return self::INUSE; + case 'OVERQUOTA': + return self::OVERQUOTA; + case 'ALREADYEXISTS': + return self::ALREADYEXISTS; + case 'NONEXISTENT': + return self::NONEXISTENT; + case 'CONTACTADMIN': + return self::CONTACTADMIN; + default: + return self::UNKNOWN; + } + } + + + /** + * Returns last command response + * + * @return string Response + */ + function get_response_str() + { + return ($this->conn) ? $this->conn->result : null; } @@ -300,9 +353,9 @@ class rcube_imap * @param string $mailbox Mailbox/Folder name * @access public */ - function select_mailbox($mailbox) + function select_mailbox($mailbox=null) { - $mailbox = $this->mod_mailbox($mailbox); + $mailbox = strlen($mailbox) ? $this->mod_mailbox($mailbox) : $this->mailbox; $selected = $this->conn->select($mailbox); @@ -493,56 +546,56 @@ class rcube_imap $imap_shared = $config->get('imap_ns_shared'); $imap_delimiter = $config->get('imap_delimiter'); - if ($imap_delimiter) { - $this->delimiter = $imap_delimiter; - } - if (!$this->conn) return; $ns = $this->conn->getNamespace(); - // NAMESPACE supported + // Set namespaces (NAMESPACE supported) if (is_array($ns)) { $this->namespace = $ns; - - if (empty($this->delimiter)) - $this->delimiter = $ns['personal'][0][1]; - if (empty($this->delimiter)) - $this->delimiter = $this->conn->getHierarchyDelimiter(); - if (empty($this->delimiter)) - $this->delimiter = '/'; } - // not supported, get namespace from config - else if ($imap_personal !== null || $imap_shared !== null || $imap_other !== null) { - if (empty($this->delimiter)) - $this->delimiter = $this->conn->getHierarchyDelimiter(); - if (empty($this->delimiter)) - $this->delimiter = '/'; - + else { $this->namespace = array( 'personal' => NULL, 'other' => NULL, 'shared' => NULL, ); + } - if ($imap_personal !== null) { - foreach ((array)$imap_personal as $dir) { - $this->namespace['personal'][] = array($dir, $this->delimiter); - } + if ($imap_delimiter) { + $this->delimiter = $imap_delimiter; + } + if (empty($this->delimiter)) { + $this->delimiter = $this->namespace['personal'][0][1]; + } + if (empty($this->delimiter)) { + $this->delimiter = $this->conn->getHierarchyDelimiter(); + } + if (empty($this->delimiter)) { + $this->delimiter = '/'; + } + + // Overwrite namespaces + if ($imap_personal !== null) { + $this->namespace['personal'] = NULL; + foreach ((array)$imap_personal as $dir) { + $this->namespace['personal'][] = array($dir, $this->delimiter); } - if ($imap_other !== null) { - foreach ((array)$imap_other as $dir) { - if ($dir) { - $this->namespace['other'][] = array($dir, $this->delimiter); - } + } + if ($imap_other !== null) { + $this->namespace['other'] = NULL; + foreach ((array)$imap_other as $dir) { + if ($dir) { + $this->namespace['other'][] = array($dir, $this->delimiter); } } - if ($imap_shared !== null) { - foreach ((array)$imap_shared as $dir) { - if ($dir) { - $this->namespace['shared'][] = array($dir, $this->delimiter); - } + } + if ($imap_shared !== null) { + $this->namespace['shared'] = NULL; + foreach ((array)$imap_shared as $dir) { + if ($dir) { + $this->namespace['shared'][] = array($dir, $this->delimiter); } } } @@ -617,7 +670,7 @@ class rcube_imap } // RECENT count is fetched a bit different else if ($mode == 'RECENT') { - $count = $this->conn->checkForRecent($mailbox); + $count = $this->conn->countRecent($mailbox); } // use SEARCH for message counting else if ($this->skip_deleted) { @@ -2376,20 +2429,21 @@ class rcube_imap // TODO: Add caching for message parts - if (!$part) $part = 'TEXT'; + if (!$part) { + $part = 'TEXT'; + } $body = $this->conn->handlePartBody($this->mailbox, $uid, true, $part, $o_part->encoding, $print, $fp); - if ($fp || $print) + if ($fp || $print) { return true; + } - // convert charset (if text or message part) - if ($body && ($o_part->ctype_primary == 'text' || $o_part->ctype_primary == 'message')) { - // assume default if no charset specified - if (empty($o_part->charset) || strtolower($o_part->charset) == 'us-ascii') - $o_part->charset = $this->default_charset; - + // convert charset (if text or message part) and part's charset is specified + if ($body && $o_part->charset + && preg_match('/^(text|message)$/', $o_part->ctype_primary) + ) { $body = rcube_charset_convert($body, $o_part->charset); } @@ -2553,6 +2607,9 @@ class rcube_imap $to_mbox = $this->mod_mailbox($to_mbox); $from_mbox = strlen($from_mbox) ? $this->mod_mailbox($from_mbox) : $this->mailbox; + if ($to_mbox === $from_mbox) + return false; + list($uids, $all_mode) = $this->_parse_uids($uids, $from_mbox); // exit if no message uids are specified @@ -2771,7 +2828,23 @@ class rcube_imap else $a_uids = NULL; - $result = $this->conn->expunge($mailbox, $a_uids); + // force mailbox selection and check if mailbox is writeable + // to prevent a situation when CLOSE is executed on closed + // or EXPUNGE on read-only mailbox + $result = $this->conn->select($mailbox); + if (!$result) { + return false; + } + if (!$this->conn->data['READ-WRITE']) { + $this->conn->setError(rcube_imap_generic::ERROR_READONLY, "Mailbox is read-only"); + return false; + } + + // CLOSE(+SELECT) should be faster than EXPUNGE + if (empty($a_uids) || $a_uids == '1:*') + $result = $this->conn->close(); + else + $result = $this->conn->expunge($mailbox, $a_uids); if ($result && $clear_cache) { $this->clear_message_cache($mailbox.'.msg'); @@ -3008,6 +3081,26 @@ class rcube_imap } + /** + * Get mailbox size (size of all messages in a mailbox) + * + * @param string $name Mailbox name + * @return int Mailbox size in bytes, False on error + */ + function get_mailbox_size($name) + { + $name = $this->mod_mailbox($name); + + // @TODO: could we try to use QUOTA here? + $result = $this->conn->fetchHeaderIndex($name, '1:*', 'SIZE', false); + + if (is_array($result)) + $result = array_sum($result); + + return $result; + } + + /** * Subscribe to a specific mailbox(es) * @@ -3043,130 +3136,120 @@ class rcube_imap /** * Create a new mailbox on the server and register it in local cache * - * @param string $name New mailbox name (as utf-7 string) + * @param string $name New mailbox name * @param boolean $subscribe True if the new mailbox should be subscribed - * @param string Name of the created mailbox, false on error + * @param boolean True on success */ function create_mailbox($name, $subscribe=false) { - $result = false; - - // reduce mailbox name to 100 chars - $name = substr($name, 0, 100); + $result = false; $abs_name = $this->mod_mailbox($name); - $result = $this->conn->createFolder($abs_name); + $result = $this->conn->createFolder($abs_name); // try to subscribe it if ($result && $subscribe) $this->subscribe($name); - return $result ? $name : false; + return $result; } /** * Set a new name to an existing mailbox * - * @param string $mbox_name Mailbox to rename (as utf-7 string) - * @param string $new_name New mailbox name (as utf-7 string) - * @return string Name of the renames mailbox, False on error + * @param string $mbox_name Mailbox to rename + * @param string $new_name New mailbox name + * + * @return boolean True on success */ function rename_mailbox($mbox_name, $new_name) { $result = false; - // encode mailbox name and reduce it to 100 chars - $name = substr($new_name, 0, 100); - // make absolute path - $mailbox = $this->mod_mailbox($mbox_name); - $abs_name = $this->mod_mailbox($name); - - // check if mailbox is subscribed - $a_subscribed = $this->_list_mailboxes(); - $subscribed = in_array($mailbox, $a_subscribed); + $mailbox = $this->mod_mailbox($mbox_name); + $abs_name = $this->mod_mailbox($new_name); + $delm = $this->get_hierarchy_delimiter(); - // unsubscribe folder - if ($subscribed) - $this->conn->unsubscribe($mailbox); + // get list of subscribed folders + if ((strpos($mailbox, '%') === false) && (strpos($mailbox, '*') === false)) { + $a_subscribed = $this->_list_mailboxes('', $mbox_name . $delm . '*'); + $subscribed = $this->mailbox_exists($mbox_name, true); + } + else { + $a_subscribed = $this->_list_mailboxes(); + $subscribed = in_array($mailbox, $a_subscribed); + } if (strlen($abs_name)) $result = $this->conn->renameFolder($mailbox, $abs_name); if ($result) { - $delm = $this->get_hierarchy_delimiter(); + // unsubscribe the old folder, subscribe the new one + if ($subscribed) { + $this->conn->unsubscribe($mailbox); + $this->conn->subscribe($abs_name); + } // check if mailbox children are subscribed - foreach ($a_subscribed as $c_subscribed) + foreach ($a_subscribed as $c_subscribed) { if (preg_match('/^'.preg_quote($mailbox.$delm, '/').'/', $c_subscribed)) { $this->conn->unsubscribe($c_subscribed); $this->conn->subscribe(preg_replace('/^'.preg_quote($mailbox, '/').'/', $abs_name, $c_subscribed)); } + } // clear cache $this->clear_message_cache($mailbox.'.msg'); $this->clear_cache('mailboxes'); } - // try to subscribe it - if ($result && $subscribed) - $this->conn->subscribe($abs_name); - - return $result ? $name : false; + return $result; } /** - * Remove mailboxes from server + * Remove mailbox from server + * + * @param string $mbox_name Mailbox name * - * @param string|array $mbox_name sMailbox name(s) string/array * @return boolean True on success */ function delete_mailbox($mbox_name) { - $deleted = false; + $result = false; + $mailbox = $this->mod_mailbox($mbox_name); + $delm = $this->get_hierarchy_delimiter(); - if (is_array($mbox_name)) - $a_mboxes = $mbox_name; - else if (is_string($mbox_name) && strlen($mbox_name)) - $a_mboxes = explode(',', $mbox_name); + // get list of folders + if ((strpos($mailbox, '%') === false) && (strpos($mailbox, '*') === false)) + $sub_mboxes = $this->list_unsubscribed('', $mailbox . $delm . '*'); + else + $sub_mboxes = $this->list_unsubscribed(); - if (is_array($a_mboxes)) { - $delimiter = $this->get_hierarchy_delimiter(); - - foreach ($a_mboxes as $mbox_name) { - $mailbox = $this->mod_mailbox($mbox_name); - $sub_mboxes = $this->conn->listMailboxes('', $mbox_name . $delimiter . '*'); + // send delete command to server + $result = $this->conn->deleteFolder($mailbox); - // unsubscribe mailbox before deleting - $this->conn->unsubscribe($mailbox); + if ($result) { + // unsubscribe mailbox + $this->conn->unsubscribe($mailbox); - // send delete command to server - $result = $this->conn->deleteFolder($mailbox); - if ($result) { - $deleted = true; - $this->clear_message_cache($mailbox.'.msg'); - } - - foreach ($sub_mboxes as $c_mbox) { - if ($c_mbox != 'INBOX') { - $this->conn->unsubscribe($c_mbox); - $result = $this->conn->deleteFolder($c_mbox); - if ($result) { - $deleted = true; - $this->clear_message_cache($c_mbox.'.msg'); - } + foreach ($sub_mboxes as $c_mbox) { + if (preg_match('/^'.preg_quote($mailbox.$delm, '/').'/', $c_mbox)) { + $this->conn->unsubscribe($c_mbox); + if ($this->conn->deleteFolder($c_mbox)) { + $this->clear_message_cache($c_mbox.'.msg'); } } } - } - // clear mailboxlist cache - if ($deleted) + // clear mailbox-related cache + $this->clear_message_cache($mailbox.'.msg'); $this->clear_cache('mailboxes'); + } - return $deleted; + return $result; } @@ -3208,7 +3291,7 @@ class rcube_imap } else { $a_folders = $this->conn->listMailboxes('', $mbox); - } + } if (is_array($a_folders) && in_array($mbox, $a_folders)) { $this->icache[$key][] = $mbox; diff --git a/program/include/rcube_imap_generic.php b/program/include/rcube_imap_generic.php index 16c9d4a64..e5e06c440 100644 --- a/program/include/rcube_imap_generic.php +++ b/program/include/rcube_imap_generic.php @@ -1,6 +1,6 @@ + * @package Mail + * @author Aleksander Machniak */ class rcube_mail_header { - public $id; - public $uid; - public $subject; - public $from; - public $to; - public $cc; - public $replyto; - public $in_reply_to; - public $date; - public $messageID; - public $size; - public $encoding; - public $charset; - public $ctype; - public $flags; - public $timestamp; - public $body_structure; - public $internaldate; - public $references; - public $priority; - public $mdn_to; - public $mdn_sent = false; - public $is_draft = false; - public $seen = false; - public $deleted = false; - public $recent = false; - public $answered = false; - public $forwarded = false; - public $junk = false; - public $flagged = false; - public $has_children = false; - public $depth = 0; - public $unread_children = 0; - public $others = array(); + public $id; + public $uid; + public $subject; + public $from; + public $to; + public $cc; + public $replyto; + public $in_reply_to; + public $date; + public $messageID; + public $size; + public $encoding; + public $charset; + public $ctype; + public $flags; + public $timestamp; + public $body_structure; + public $internaldate; + public $references; + public $priority; + public $mdn_to; + public $mdn_sent = false; + public $is_draft = false; + public $seen = false; + public $deleted = false; + public $recent = false; + public $answered = false; + public $forwarded = false; + public $junk = false; + public $flagged = false; + public $has_children = false; + public $depth = 0; + public $unread_children = 0; + public $others = array(); } // For backward compatibility with cached messages (#1486602) @@ -78,14 +78,15 @@ class iilBasicHeader extends rcube_mail_header /** * PHP based wrapper class to connect to an IMAP server * - * @package Mail - * @author Aleksander Machniak + * @package Mail + * @author Aleksander Machniak */ class rcube_imap_generic { public $error; public $errornum; - public $message; + public $result; + public $resultcode; public $data = array(); public $flags = array( 'SEEN' => '\\Seen', @@ -100,11 +101,11 @@ class rcube_imap_generic ); private $selected; - private $fp; - private $host; - private $logged = false; - private $capability = array(); - private $capability_readed = false; + private $fp; + private $host; + private $logged = false; + private $capability = array(); + private $capability_readed = false; private $prefs; private $cmd_tag; private $cmd_num = 0; @@ -113,8 +114,9 @@ class rcube_imap_generic const ERROR_NO = -1; const ERROR_BAD = -2; const ERROR_BYE = -3; - const ERROR_COMMAND = -5; const ERROR_UNKNOWN = -4; + const ERROR_COMMAND = -5; + const ERROR_READONLY = -6; const COMMAND_NORESPONSE = 1; const COMMAND_CAPABILITY = 2; @@ -140,16 +142,16 @@ class rcube_imap_generic if (!$this->fp) return false; - if (!empty($this->prefs['debug_mode'])) { - write_log('imap', 'C: '. rtrim($string)); - } + if (!empty($this->prefs['debug_mode'])) { + write_log('imap', 'C: '. rtrim($string)); + } $res = fwrite($this->fp, $string . ($endln ? "\r\n" : '')); - if ($res === false) { - @fclose($this->fp); - $this->fp = null; - } + if ($res === false) { + @fclose($this->fp); + $this->fp = null; + } return $res; } @@ -168,161 +170,174 @@ class rcube_imap_generic if (!$this->fp) return false; - if ($endln) - $string .= "\r\n"; + if ($endln) + $string .= "\r\n"; - $res = 0; - if ($parts = preg_split('/(\{[0-9]+\}\r\n)/m', $string, -1, PREG_SPLIT_DELIM_CAPTURE)) { - for ($i=0, $cnt=count($parts); $i<$cnt; $i++) { - if (preg_match('/^\{[0-9]+\}\r\n$/', $parts[$i+1])) { + $res = 0; + if ($parts = preg_split('/(\{[0-9]+\}\r\n)/m', $string, -1, PREG_SPLIT_DELIM_CAPTURE)) { + for ($i=0, $cnt=count($parts); $i<$cnt; $i++) { + if (preg_match('/^\{[0-9]+\}\r\n$/', $parts[$i+1])) { // LITERAL+ support if ($this->prefs['literal+']) $parts[$i+1] = preg_replace('/([0-9]+)/', '\\1+', $parts[$i+1]); - $bytes = $this->putLine($parts[$i].$parts[$i+1], false); + $bytes = $this->putLine($parts[$i].$parts[$i+1], false); if ($bytes === false) return false; $res += $bytes; // don't wait if server supports LITERAL+ capability if (!$this->prefs['literal+']) { - $line = $this->readLine(1000); - // handle error in command - if ($line[0] != '+') - return false; - } + $line = $this->readLine(1000); + // handle error in command + if ($line[0] != '+') + return false; + } $i++; - } - else { - $bytes = $this->putLine($parts[$i], false); + } + else { + $bytes = $this->putLine($parts[$i], false); if ($bytes === false) return false; $res += $bytes; } - } - } + } + } - return $res; + return $res; } function readLine($size=1024) { - $line = ''; + $line = ''; - if (!$this->fp) { - return NULL; - } + if (!$this->fp) { + return NULL; + } - if (!$size) { - $size = 1024; - } + if (!$size) { + $size = 1024; + } - do { - if (feof($this->fp)) { - return $line ? $line : NULL; - } + do { + if (feof($this->fp)) { + return $line ? $line : NULL; + } - $buffer = fgets($this->fp, $size); + $buffer = fgets($this->fp, $size); - if ($buffer === false) { - @fclose($this->fp); - $this->fp = null; - break; - } - if (!empty($this->prefs['debug_mode'])) { - write_log('imap', 'S: '. rtrim($buffer)); - } + if ($buffer === false) { + @fclose($this->fp); + $this->fp = null; + break; + } + if (!empty($this->prefs['debug_mode'])) { + write_log('imap', 'S: '. rtrim($buffer)); + } $line .= $buffer; - } while ($buffer[strlen($buffer)-1] != "\n"); + } while ($buffer[strlen($buffer)-1] != "\n"); - return $line; + return $line; } function multLine($line, $escape=false) { - $line = rtrim($line); - if (preg_match('/\{[0-9]+\}$/', $line)) { - $out = ''; + $line = rtrim($line); + if (preg_match('/\{[0-9]+\}$/', $line)) { + $out = ''; - preg_match_all('/(.*)\{([0-9]+)\}$/', $line, $a); - $bytes = $a[2][0]; - while (strlen($out) < $bytes) { - $line = $this->readBytes($bytes); - if ($line === NULL) - break; - $out .= $line; - } + preg_match_all('/(.*)\{([0-9]+)\}$/', $line, $a); + $bytes = $a[2][0]; + while (strlen($out) < $bytes) { + $line = $this->readBytes($bytes); + if ($line === NULL) + break; + $out .= $line; + } - $line = $a[1][0] . ($escape ? $this->escape($out) : $out); - } + $line = $a[1][0] . ($escape ? $this->escape($out) : $out); + } return $line; } function readBytes($bytes) { - $data = ''; - $len = 0; - while ($len < $bytes && !feof($this->fp)) - { - $d = fread($this->fp, $bytes-$len); - if (!empty($this->prefs['debug_mode'])) { - write_log('imap', 'S: '. $d); + $data = ''; + $len = 0; + while ($len < $bytes && !feof($this->fp)) + { + $d = fread($this->fp, $bytes-$len); + if (!empty($this->prefs['debug_mode'])) { + write_log('imap', 'S: '. $d); } $data .= $d; - $data_len = strlen($data); - if ($len == $data_len) { - break; // nothing was read -> exit to avoid apache lockups - } - $len = $data_len; - } + $data_len = strlen($data); + if ($len == $data_len) { + break; // nothing was read -> exit to avoid apache lockups + } + $len = $data_len; + } - return $data; + return $data; } - // don't use it in loops, until you exactly know what you're doing function readReply(&$untagged=null) { - do { - $line = trim($this->readLine(1024)); + do { + $line = trim($this->readLine(1024)); // store untagged response lines - if ($line[0] == '*') + if ($line[0] == '*') $untagged[] = $line; - } while ($line[0] == '*'); + } while ($line[0] == '*'); if ($untagged) $untagged = join("\n", $untagged); - return $line; + return $line; } function parseResult($string, $err_prefix='') { - if (preg_match('/^[a-z0-9*]+ (OK|NO|BAD|BYE)(.*)$/i', trim($string), $matches)) { - $res = strtoupper($matches[1]); + if (preg_match('/^[a-z0-9*]+ (OK|NO|BAD|BYE)(.*)$/i', trim($string), $matches)) { + $res = strtoupper($matches[1]); $str = trim($matches[2]); - if ($res == 'OK') { - return $this->errornum = self::ERROR_OK; - } else if ($res == 'NO') { + if ($res == 'OK') { + $this->errornum = self::ERROR_OK; + } else if ($res == 'NO') { $this->errornum = self::ERROR_NO; - } else if ($res == 'BAD') { - $this->errornum = self::ERROR_BAD; - } else if ($res == 'BYE') { + } else if ($res == 'BAD') { + $this->errornum = self::ERROR_BAD; + } else if ($res == 'BYE') { @fclose($this->fp); $this->fp = null; - $this->errornum = self::ERROR_BYE; - } + $this->errornum = self::ERROR_BYE; + } - if ($str) - $this->error = $err_prefix ? $err_prefix.$str : $str; + if ($str) { + $str = trim($str); + // get response string and code (RFC5530) + if (preg_match("/^\[([a-z-]+)\]/i", $str, $m)) { + $this->resultcode = strtoupper($m[1]); + $str = trim(substr($str, strlen($m[1]) + 2)); + } + else { + $this->resultcode = null; + } + $this->result = $str; - return $this->errornum; - } - return self::ERROR_UNKNOWN; + if ($this->errornum != self::ERROR_OK) { + $this->error = $err_prefix ? $err_prefix.$str : $str; + } + } + + return $this->errornum; + } + return self::ERROR_UNKNOWN; } - private function setError($code, $msg='') + function setError($code, $msg='') { $this->errornum = $code; $this->error = $msg; @@ -331,59 +346,59 @@ class rcube_imap_generic // check if $string starts with $match (or * BYE/BAD) function startsWith($string, $match, $error=false, $nonempty=false) { - $len = strlen($match); - if ($len == 0) { - return false; - } + $len = strlen($match); + if ($len == 0) { + return false; + } if (!$this->fp) { return true; } - if (strncmp($string, $match, $len) == 0) { - return true; - } - if ($error && preg_match('/^\* (BYE|BAD) /i', $string, $m)) { + if (strncmp($string, $match, $len) == 0) { + return true; + } + if ($error && preg_match('/^\* (BYE|BAD) /i', $string, $m)) { if (strtoupper($m[1]) == 'BYE') { @fclose($this->fp); $this->fp = null; } - return true; - } + return true; + } if ($nonempty && !strlen($string)) { return true; } - return false; + return false; } function getCapability($name) { - if (in_array($name, $this->capability)) { - return true; - } - else if ($this->capability_readed) { - return false; - } + if (in_array($name, $this->capability)) { + return true; + } + else if ($this->capability_readed) { + return false; + } - // get capabilities (only once) because initial - // optional CAPABILITY response may differ + // get capabilities (only once) because initial + // optional CAPABILITY response may differ $result = $this->execute('CAPABILITY'); if ($result[0] == self::ERROR_OK) { $this->parseCapability($result[1]); } - $this->capability_readed = true; + $this->capability_readed = true; - if (in_array($name, $this->capability)) { - return true; - } + if (in_array($name, $this->capability)) { + return true; + } - return false; + return false; } function clearCapability() { - $this->capability = array(); - $this->capability_readed = false; + $this->capability = array(); + $this->capability_readed = false; } /** @@ -401,18 +416,18 @@ class rcube_imap_generic if ($type == 'DIGEST-MD5' && !class_exists('Auth_SASL')) { $this->setError(self::ERROR_BYE, "The Auth_SASL package is required for DIGEST-MD5 authentication"); - return self::ERROR_BAD; + return self::ERROR_BAD; } - $this->putLine($this->nextTag() . " AUTHENTICATE $type"); - $line = trim($this->readLine(1024)); + $this->putLine($this->nextTag() . " AUTHENTICATE $type"); + $line = trim($this->readReply()); - if ($line[0] == '+') { - $challenge = substr($line, 2); + if ($line[0] == '+') { + $challenge = substr($line, 2); } else { return $this->parseResult($line); - } + } if ($type == 'CRAM-MD5') { // RFC2195: CRAM-MD5 @@ -455,10 +470,10 @@ class rcube_imap_generic // send result $this->putLine($reply); - $line = $this->readLine(1024); + $line = trim($this->readReply()); if ($line[0] == '+') { - $challenge = substr($line, 2); + $challenge = substr($line, 2); } else { return $this->parseResult($line); @@ -475,7 +490,7 @@ class rcube_imap_generic $this->putLine(''); } - $line = $this->readLine(1024); + $line = $this->readReply(); $result = $this->parseResult($line); } else { // PLAIN @@ -496,29 +511,29 @@ class rcube_imap_generic self::COMMAND_LASTLINE | self::COMMAND_CAPABILITY); } else { - $this->putLine($this->nextTag() . " AUTHENTICATE PLAIN"); - $line = trim($this->readLine(1024)); + $this->putLine($this->nextTag() . " AUTHENTICATE PLAIN"); + $line = trim($this->readReply()); - if ($line[0] != '+') { - return $this->parseResult($line); - } + if ($line[0] != '+') { + return $this->parseResult($line); + } // send result, get reply and process it $this->putLine($reply); - $line = $this->readLine(1024); + $line = $this->readReply(); $result = $this->parseResult($line); } } if ($result == self::ERROR_OK) { - // optional CAPABILITY response - if ($line && preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches)) { - $this->parseCapability($matches[1], true); - } + // optional CAPABILITY response + if ($line && preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches)) { + $this->parseCapability($matches[1], true); + } return $this->fp; } else { - $this->setError($result, "Unable to authenticate user ($type): $line"); + $this->setError($result, "AUTHENTICATE $type: $line"); } return $result; @@ -538,9 +553,9 @@ class rcube_imap_generic $this->escape($user), $this->escape($password)), self::COMMAND_CAPABILITY); // re-set capabilities list if untagged CAPABILITY response provided - if (preg_match('/\* CAPABILITY (.+)/i', $response, $matches)) { - $this->parseCapability($matches[1], true); - } + if (preg_match('/\* CAPABILITY (.+)/i', $response, $matches)) { + $this->parseCapability($matches[1], true); + } if ($code == self::ERROR_OK) { return $this->fp; @@ -556,21 +571,21 @@ class rcube_imap_generic */ function getHierarchyDelimiter() { - if ($this->prefs['delimiter']) { - return $this->prefs['delimiter']; - } + if ($this->prefs['delimiter']) { + return $this->prefs['delimiter']; + } - // try (LIST "" ""), should return delimiter (RFC2060 Sec 6.3.8) - list($code, $response) = $this->execute('LIST', - array($this->escape(''), $this->escape(''))); + // try (LIST "" ""), should return delimiter (RFC2060 Sec 6.3.8) + list($code, $response) = $this->execute('LIST', + array($this->escape(''), $this->escape(''))); if ($code == self::ERROR_OK) { $args = $this->tokenizeResponse($response, 4); $delimiter = $args[3]; - if (strlen($delimiter) > 0) { - return ($this->prefs['delimiter'] = $delimiter); - } + if (strlen($delimiter) > 0) { + return ($this->prefs['delimiter'] = $delimiter); + } } return NULL; @@ -588,18 +603,18 @@ class rcube_imap_generic } if (!$this->getCapability('NAMESPACE')) { - return self::ERROR_BAD; - } + return self::ERROR_BAD; + } - list($code, $response) = $this->execute('NAMESPACE'); + list($code, $response) = $this->execute('NAMESPACE'); - if ($code == self::ERROR_OK && preg_match('/^\* NAMESPACE /', $response)) { - $data = $this->tokenizeResponse(substr($response, 11)); - } + if ($code == self::ERROR_OK && preg_match('/^\* NAMESPACE /', $response)) { + $data = $this->tokenizeResponse(substr($response, 11)); + } - if (!is_array($data)) { - return $code; - } + if (!is_array($data)) { + return $code; + } $this->prefs['namespace'] = array( 'personal' => $data[0], @@ -612,134 +627,132 @@ class rcube_imap_generic function connect($host, $user, $password, $options=null) { - // set options - if (is_array($options)) { + // set options + if (is_array($options)) { $this->prefs = $options; } // set auth method if (!empty($this->prefs['auth_method'])) { $auth_method = strtoupper($this->prefs['auth_method']); - } else { - $auth_method = 'CHECK'; + } else { + $auth_method = 'CHECK'; } - $result = false; + $result = false; - // initialize connection - $this->error = ''; - $this->errornum = self::ERROR_OK; - $this->selected = ''; - $this->user = $user; - $this->host = $host; + // initialize connection + $this->error = ''; + $this->errornum = self::ERROR_OK; + $this->selected = ''; + $this->user = $user; + $this->host = $host; $this->logged = false; - // check input - if (empty($host)) { - $this->setError(self::ERROR_BAD, "Empty host"); - return false; - } + // check input + if (empty($host)) { + $this->setError(self::ERROR_BAD, "Empty host"); + return false; + } if (empty($user)) { - $this->setError(self::ERROR_NO, "Empty user"); - return false; - } - if (empty($password)) { - $this->setError(self::ERROR_NO, "Empty password"); - return false; - } - - if (!$this->prefs['port']) { - $this->prefs['port'] = 143; - } - // check for SSL - if ($this->prefs['ssl_mode'] && $this->prefs['ssl_mode'] != 'tls') { - $host = $this->prefs['ssl_mode'] . '://' . $host; - } + $this->setError(self::ERROR_NO, "Empty user"); + return false; + } + if (empty($password)) { + $this->setError(self::ERROR_NO, "Empty password"); + return false; + } + + if (!$this->prefs['port']) { + $this->prefs['port'] = 143; + } + // check for SSL + if ($this->prefs['ssl_mode'] && $this->prefs['ssl_mode'] != 'tls') { + $host = $this->prefs['ssl_mode'] . '://' . $host; + } // Connect if ($this->prefs['timeout'] > 0) - $this->fp = @fsockopen($host, $this->prefs['port'], $errno, $errstr, $this->prefs['timeout']); - else - $this->fp = @fsockopen($host, $this->prefs['port'], $errno, $errstr); + $this->fp = @fsockopen($host, $this->prefs['port'], $errno, $errstr, $this->prefs['timeout']); + else + $this->fp = @fsockopen($host, $this->prefs['port'], $errno, $errstr); - if (!$this->fp) { - $this->setError(self::ERROR_BAD, sprintf("Could not connect to %s:%d: %s", $host, $this->prefs['port'], $errstr)); - return false; - } + if (!$this->fp) { + $this->setError(self::ERROR_BAD, sprintf("Could not connect to %s:%d: %s", $host, $this->prefs['port'], $errstr)); + return false; + } if ($this->prefs['timeout'] > 0) - stream_set_timeout($this->fp, $this->prefs['timeout']); + stream_set_timeout($this->fp, $this->prefs['timeout']); - $line = trim(fgets($this->fp, 8192)); + $line = trim(fgets($this->fp, 8192)); - if ($this->prefs['debug_mode'] && $line) { - write_log('imap', 'S: '. $line); + if ($this->prefs['debug_mode'] && $line) { + write_log('imap', 'S: '. $line); } - // Connected to wrong port or connection error? - if (!preg_match('/^\* (OK|PREAUTH)/i', $line)) { - if ($line) - $error = sprintf("Wrong startup greeting (%s:%d): %s", $host, $this->prefs['port'], $line); - else - $error = sprintf("Empty startup greeting (%s:%d)", $host, $this->prefs['port']); - - $this->setError(self::ERROR_BAD, $error); - $this->close(); - return false; - } + // Connected to wrong port or connection error? + if (!preg_match('/^\* (OK|PREAUTH)/i', $line)) { + if ($line) + $error = sprintf("Wrong startup greeting (%s:%d): %s", $host, $this->prefs['port'], $line); + else + $error = sprintf("Empty startup greeting (%s:%d)", $host, $this->prefs['port']); - // RFC3501 [7.1] optional CAPABILITY response - if (preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches)) { - $this->parseCapability($matches[1], true); - } + $this->setError(self::ERROR_BAD, $error); + $this->closeConnection(); + return false; + } - $this->message = $line; + // RFC3501 [7.1] optional CAPABILITY response + if (preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches)) { + $this->parseCapability($matches[1], true); + } - // TLS connection - if ($this->prefs['ssl_mode'] == 'tls' && $this->getCapability('STARTTLS')) { - if (version_compare(PHP_VERSION, '5.1.0', '>=')) { - $res = $this->execute('STARTTLS'); + // TLS connection + if ($this->prefs['ssl_mode'] == 'tls' && $this->getCapability('STARTTLS')) { + if (version_compare(PHP_VERSION, '5.1.0', '>=')) { + $res = $this->execute('STARTTLS'); if ($res[0] != self::ERROR_OK) { - $this->close(); + $this->closeConnection(); return false; } - if (!stream_socket_enable_crypto($this->fp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) { - $this->setError(self::ERROR_BAD, "Unable to negotiate TLS"); - $this->close(); - return false; - } + if (!stream_socket_enable_crypto($this->fp, true, STREAM_CRYPTO_METHOD_TLS_CLIENT)) { + $this->setError(self::ERROR_BAD, "Unable to negotiate TLS"); + $this->closeConnection(); + return false; + } - // Now we're secure, capabilities need to be reread - $this->clearCapability(); - } - } + // Now we're secure, capabilities need to be reread + $this->clearCapability(); + } + } - $auth_methods = array(); + $auth_methods = array(); $result = null; - // check for supported auth methods - if ($auth_method == 'CHECK') { - if ($this->getCapability('AUTH=DIGEST-MD5')) { - $auth_methods[] = 'DIGEST-MD5'; - } - if ($this->getCapability('AUTH=CRAM-MD5') || $this->getCapability('AUTH=CRAM_MD5')) { - $auth_methods[] = 'CRAM-MD5'; - } - if ($this->getCapability('AUTH=PLAIN')) { - $auth_methods[] = 'PLAIN'; - } + // check for supported auth methods + if ($auth_method == 'CHECK') { + if ($this->getCapability('AUTH=DIGEST-MD5')) { + $auth_methods[] = 'DIGEST-MD5'; + } + if ($this->getCapability('AUTH=CRAM-MD5') || $this->getCapability('AUTH=CRAM_MD5')) { + $auth_methods[] = 'CRAM-MD5'; + } + if ($this->getCapability('AUTH=PLAIN')) { + $auth_methods[] = 'PLAIN'; + } // RFC 2595 (LOGINDISABLED) LOGIN disabled when connection is not secure - if (!$this->getCapability('LOGINDISABLED')) { - $auth_methods[] = 'LOGIN'; - } - } + if (!$this->getCapability('LOGINDISABLED')) { + $auth_methods[] = 'LOGIN'; + } + } else { // Prevent from sending credentials in plain text when connection is not secure - if ($auth_method == 'LOGIN' && $this->getCapability('LOGINDISABLED')) { - $this->setError(self::ERROR_BAD, "Login disabled by IMAP server"); - $this->close(); - return false; + if ($auth_method == 'LOGIN' && $this->getCapability('LOGINDISABLED')) { + $this->setError(self::ERROR_BAD, "Login disabled by IMAP server"); + $this->closeConnection(); + return false; } // replace AUTH with CRAM-MD5 for backward compat. $auth_methods[] = $auth_method == 'AUTH' ? 'CRAM-MD5' : $auth_method; @@ -753,61 +766,68 @@ class rcube_imap_generic switch ($method) { case 'DIGEST-MD5': case 'CRAM-MD5': - case 'PLAIN': - $result = $this->authenticate($user, $password, $method); - break; + case 'PLAIN': + $result = $this->authenticate($user, $password, $method); + break; case 'LOGIN': - $result = $this->login($user, $password); + $result = $this->login($user, $password); break; default: $this->setError(self::ERROR_BAD, "Configuration error. Unknown auth method: $method"); } - if (is_resource($result)) { - break; - } - } + if (is_resource($result)) { + break; + } + } // Connected and authenticated - if (is_resource($result)) { + if (is_resource($result)) { if ($this->prefs['force_caps']) { - $this->clearCapability(); + $this->clearCapability(); } $this->logged = true; - return true; + return true; } - // Close connection - $this->close(); + $this->closeConnection(); return false; } function connected() { - return ($this->fp && $this->logged) ? true : false; + return ($this->fp && $this->logged) ? true : false; } - function close() + function closeConnection() { - if ($this->putLine($this->nextTag() . ' LOGOUT')) { - $this->readReply(); + if ($this->putLine($this->nextTag() . ' LOGOUT')) { + $this->readReply(); } - @fclose($this->fp); - $this->fp = false; + @fclose($this->fp); + $this->fp = false; } + /** + * Executes SELECT command (if mailbox is already not in selected state) + * + * @param string $mailbox Mailbox name + * + * @return boolean True on success, false on error + * @access public + */ function select($mailbox) { - if (!strlen($mailbox)) { - return false; - } + if (!strlen($mailbox)) { + return false; + } - if ($this->selected == $mailbox) { - return true; - } + if ($this->selected == $mailbox) { + return true; + } /* Temporary commented out because Courier returns \Noselect for INBOX Requires more investigation @@ -823,26 +843,28 @@ class rcube_imap_generic if ($code == self::ERROR_OK) { $response = explode("\r\n", $response); foreach ($response as $line) { - if (preg_match('/^\* ([0-9]+) (EXISTS|RECENT)$/i', $line, $m)) { - $this->data[strtoupper($m[2])] = (int) $m[1]; - } - else if (preg_match('/^\* OK \[(UIDNEXT|UIDVALIDITY|UNSEEN) ([0-9]+)\]/i', $line, $match)) { - $this->data[strtoupper($match[1])] = (int) $match[2]; - } - else if (preg_match('/^\* OK \[PERMANENTFLAGS \(([^\)]+)\)\]/iU', $line, $match)) { - $this->data['PERMANENTFLAGS'] = explode(' ', $match[1]); - } + if (preg_match('/^\* ([0-9]+) (EXISTS|RECENT)$/i', $line, $m)) { + $this->data[strtoupper($m[2])] = (int) $m[1]; + } + else if (preg_match('/^\* OK \[(UIDNEXT|UIDVALIDITY|UNSEEN) ([0-9]+)\]/i', $line, $match)) { + $this->data[strtoupper($match[1])] = (int) $match[2]; + } + else if (preg_match('/^\* OK \[PERMANENTFLAGS \(([^\)]+)\)\]/iU', $line, $match)) { + $this->data['PERMANENTFLAGS'] = explode(' ', $match[1]); + } } - $this->selected = $mailbox; - return true; - } + $this->data['READ-WRITE'] = $this->resultcode != 'READ-ONLY'; + + $this->selected = $mailbox; + return true; + } return false; } /** - * Executes STATUS comand + * Executes STATUS command * * @param string $mailbox Mailbox name * @param array $items Additional requested item names. By default @@ -855,9 +877,9 @@ class rcube_imap_generic */ function status($mailbox, $items=array()) { - if (!strlen($mailbox)) { - return false; - } + if (!strlen($mailbox)) { + return false; + } if (!in_array('MESSAGES', $items)) { $items[] = 'MESSAGES'; @@ -881,36 +903,157 @@ class rcube_imap_generic $this->data['STATUS:'.$mailbox] = $result; - return $result; - } + return $result; + } return false; } - function checkForRecent($mailbox) + /** + * Executes EXPUNGE command + * + * @param string $mailbox Mailbox name + * @param string $messages Message UIDs to expunge + * + * @return boolean True on success, False on error + * @access public + */ + function expunge($mailbox, $messages=NULL) { - if (!strlen($mailbox)) { - $mailbox = 'INBOX'; - } + if (!$this->select($mailbox)) { + return false; + } - $this->select($mailbox); + if (!$this->data['READ-WRITE']) { + $this->setError(self::ERROR_READONLY, "Mailbox is read-only", 'EXPUNGE'); + return false; + } - if ($this->selected == $mailbox) { - return $this->data['RECENT']; - } + // Clear internal status cache + unset($this->data['STATUS:'.$mailbox]); - return false; + if ($messages) + $result = $this->execute('UID EXPUNGE', array($messages), self::COMMAND_NORESPONSE); + else + $result = $this->execute('EXPUNGE', null, self::COMMAND_NORESPONSE); + + if ($result == self::ERROR_OK) { + $this->selected = ''; // state has changed, need to reselect + return true; + } + + return false; } + /** + * Executes CLOSE command + * + * @return boolean True on success, False on error + * @access public + * @since 0.5 + */ + function close() + { + $result = $this->execute('CLOSE', NULL, self::COMMAND_NORESPONSE); + + if ($result == self::ERROR_OK) { + $this->selected = ''; + return true; + } + + return false; + } + + /** + * Executes SUBSCRIBE command + * + * @param string $mailbox Mailbox name + * + * @return boolean True on success, False on error + * @access public + */ + function subscribe($mailbox) + { + $result = $this->execute('SUBSCRIBE', array($this->escape($mailbox)), + self::COMMAND_NORESPONSE); + + return ($result == self::ERROR_OK); + } + + /** + * Executes UNSUBSCRIBE command + * + * @param string $mailbox Mailbox name + * + * @return boolean True on success, False on error + * @access public + */ + function unsubscribe($mailbox) + { + $result = $this->execute('UNSUBSCRIBE', array($this->escape($mailbox)), + self::COMMAND_NORESPONSE); + + return ($result == self::ERROR_OK); + } + + /** + * Executes DELETE command + * + * @param string $mailbox Mailbox name + * + * @return boolean True on success, False on error + * @access public + */ + function deleteFolder($mailbox) + { + $result = $this->execute('DELETE', array($this->escape($mailbox)), + self::COMMAND_NORESPONSE); + + return ($result == self::ERROR_OK); + } + + /** + * Removes all messages in a folder + * + * @param string $mailbox Mailbox name + * + * @return boolean True on success, False on error + * @access public + */ + function clearFolder($mailbox) + { + $num_in_trash = $this->countMessages($mailbox); + if ($num_in_trash > 0) { + $res = $this->delete($mailbox, '1:*'); + } + + if ($res) { + if ($this->selected == $mailbox) + $res = $this->close(); + else + $res = $this->expunge($mailbox); + } + + return $res; + } + + /** + * Returns count of all messages in a folder + * + * @param string $mailbox Mailbox name + * + * @return int Number of messages, False on error + * @access public + */ function countMessages($mailbox, $refresh = false) { - if ($refresh) { - $this->selected = ''; - } + if ($refresh) { + $this->selected = ''; + } - if ($this->selected == $mailbox) { - return $this->data['EXISTS']; - } + if ($this->selected == $mailbox) { + return $this->data['EXISTS']; + } // Check internal cache $cache = $this->data['STATUS:'.$mailbox]; @@ -927,6 +1070,29 @@ class rcube_imap_generic return false; } + /** + * Returns count of messages with \Recent flag in a folder + * + * @param string $mailbox Mailbox name + * + * @return int Number of messages, False on error + * @access public + */ + function countRecent($mailbox) + { + if (!strlen($mailbox)) { + $mailbox = 'INBOX'; + } + + $this->select($mailbox); + + if ($this->selected == $mailbox) { + return $this->data['RECENT']; + } + + return false; + } + /** * Returns count of messages without \Seen flag in a specified folder * @@ -960,218 +1126,218 @@ class rcube_imap_generic function sort($mailbox, $field, $add='', $is_uid=FALSE, $encoding = 'US-ASCII') { - $field = strtoupper($field); - if ($field == 'INTERNALDATE') { - $field = 'ARRIVAL'; - } + $field = strtoupper($field); + if ($field == 'INTERNALDATE') { + $field = 'ARRIVAL'; + } - $fields = array('ARRIVAL' => 1,'CC' => 1,'DATE' => 1, + $fields = array('ARRIVAL' => 1,'CC' => 1,'DATE' => 1, 'FROM' => 1, 'SIZE' => 1, 'SUBJECT' => 1, 'TO' => 1); - if (!$fields[$field]) { - return false; - } + if (!$fields[$field]) { + return false; + } - if (!$this->select($mailbox)) { - return false; - } + if (!$this->select($mailbox)) { + return false; + } - // message IDs - if (!empty($add)) - $add = $this->compressMessageSet($add); + // message IDs + if (!empty($add)) + $add = $this->compressMessageSet($add); - list($code, $response) = $this->execute($is_uid ? 'UID SORT' : 'SORT', - array("($field)", $encoding, 'ALL' . (!empty($add) ? ' '.$add : ''))); + list($code, $response) = $this->execute($is_uid ? 'UID SORT' : 'SORT', + array("($field)", $encoding, 'ALL' . (!empty($add) ? ' '.$add : ''))); - if ($code == self::ERROR_OK) { - // remove prefix and \r\n from raw response + if ($code == self::ERROR_OK) { + // remove prefix and \r\n from raw response $response = str_replace("\r\n", '', substr($response, 7)); - return preg_split('/\s+/', $response, -1, PREG_SPLIT_NO_EMPTY); - } + return preg_split('/\s+/', $response, -1, PREG_SPLIT_NO_EMPTY); + } return false; } - function fetchHeaderIndex($mailbox, $message_set, $index_field='', $skip_deleted=true, $uidfetch=false) - { - if (is_array($message_set)) { - if (!($message_set = $this->compressMessageSet($message_set))) - return false; - } else { - list($from_idx, $to_idx) = explode(':', $message_set); - if (empty($message_set) || - (isset($to_idx) && $to_idx != '*' && (int)$from_idx > (int)$to_idx)) { - return false; - } - } - - $index_field = empty($index_field) ? 'DATE' : strtoupper($index_field); - - $fields_a['DATE'] = 1; - $fields_a['INTERNALDATE'] = 4; - $fields_a['ARRIVAL'] = 4; - $fields_a['FROM'] = 1; - $fields_a['REPLY-TO'] = 1; - $fields_a['SENDER'] = 1; - $fields_a['TO'] = 1; - $fields_a['CC'] = 1; - $fields_a['SUBJECT'] = 1; - $fields_a['UID'] = 2; - $fields_a['SIZE'] = 2; - $fields_a['SEEN'] = 3; - $fields_a['RECENT'] = 3; - $fields_a['DELETED'] = 3; - - if (!($mode = $fields_a[$index_field])) { - return false; - } - - /* Do "SELECT" command */ - if (!$this->select($mailbox)) { - return false; - } - - // build FETCH command string - $key = $this->nextTag(); - $cmd = $uidfetch ? 'UID FETCH' : 'FETCH'; - $deleted = $skip_deleted ? ' FLAGS' : ''; - - if ($mode == 1 && $index_field == 'DATE') - $request = " $cmd $message_set (INTERNALDATE BODY.PEEK[HEADER.FIELDS (DATE)]$deleted)"; - else if ($mode == 1) - $request = " $cmd $message_set (BODY.PEEK[HEADER.FIELDS ($index_field)]$deleted)"; - else if ($mode == 2) { - if ($index_field == 'SIZE') - $request = " $cmd $message_set (RFC822.SIZE$deleted)"; - else - $request = " $cmd $message_set ($index_field$deleted)"; - } else if ($mode == 3) - $request = " $cmd $message_set (FLAGS)"; - else // 4 - $request = " $cmd $message_set (INTERNALDATE$deleted)"; - - $request = $key . $request; - - if (!$this->putLine($request)) { - $this->setError(self::ERROR_COMMAND, "Unable to send command: $request"); - return false; - } - - $result = array(); - - do { - $line = rtrim($this->readLine(200)); - $line = $this->multLine($line); - - if (preg_match('/^\* ([0-9]+) FETCH/', $line, $m)) { - $id = $m[1]; - $flags = NULL; - - if ($skip_deleted && preg_match('/FLAGS \(([^)]+)\)/', $line, $matches)) { - $flags = explode(' ', strtoupper($matches[1])); - if (in_array('\\DELETED', $flags)) { - $deleted[$id] = $id; - continue; - } - } - - if ($mode == 1 && $index_field == 'DATE') { - if (preg_match('/BODY\[HEADER\.FIELDS \("*DATE"*\)\] (.*)/', $line, $matches)) { - $value = preg_replace(array('/^"*[a-z]+:/i'), '', $matches[1]); - $value = trim($value); - $result[$id] = $this->strToTime($value); - } - // non-existent/empty Date: header, use INTERNALDATE - if (empty($result[$id])) { - if (preg_match('/INTERNALDATE "([^"]+)"/', $line, $matches)) - $result[$id] = $this->strToTime($matches[1]); - else - $result[$id] = 0; - } - } else if ($mode == 1) { - if (preg_match('/BODY\[HEADER\.FIELDS \("?(FROM|REPLY-TO|SENDER|TO|SUBJECT)"?\)\] (.*)/', $line, $matches)) { - $value = preg_replace(array('/^"*[a-z]+:/i', '/\s+$/sm'), array('', ''), $matches[2]); - $result[$id] = trim($value); - } else { - $result[$id] = ''; - } - } else if ($mode == 2) { - if (preg_match('/\((UID|RFC822\.SIZE) ([0-9]+)/', $line, $matches)) { - $result[$id] = trim($matches[2]); - } else { - $result[$id] = 0; - } - } else if ($mode == 3) { - if (!$flags && preg_match('/FLAGS \(([^)]+)\)/', $line, $matches)) { - $flags = explode(' ', $matches[1]); - } - $result[$id] = in_array('\\'.$index_field, $flags) ? 1 : 0; - } else if ($mode == 4) { - if (preg_match('/INTERNALDATE "([^"]+)"/', $line, $matches)) { - $result[$id] = $this->strToTime($matches[1]); - } else { - $result[$id] = 0; - } - } - } - } while (!$this->startsWith($line, $key, true, true)); - - return $result; + function fetchHeaderIndex($mailbox, $message_set, $index_field='', $skip_deleted=true, $uidfetch=false) + { + if (is_array($message_set)) { + if (!($message_set = $this->compressMessageSet($message_set))) + return false; + } else { + list($from_idx, $to_idx) = explode(':', $message_set); + if (empty($message_set) || + (isset($to_idx) && $to_idx != '*' && (int)$from_idx > (int)$to_idx)) { + return false; + } + } + + $index_field = empty($index_field) ? 'DATE' : strtoupper($index_field); + + $fields_a['DATE'] = 1; + $fields_a['INTERNALDATE'] = 4; + $fields_a['ARRIVAL'] = 4; + $fields_a['FROM'] = 1; + $fields_a['REPLY-TO'] = 1; + $fields_a['SENDER'] = 1; + $fields_a['TO'] = 1; + $fields_a['CC'] = 1; + $fields_a['SUBJECT'] = 1; + $fields_a['UID'] = 2; + $fields_a['SIZE'] = 2; + $fields_a['SEEN'] = 3; + $fields_a['RECENT'] = 3; + $fields_a['DELETED'] = 3; + + if (!($mode = $fields_a[$index_field])) { + return false; + } + + /* Do "SELECT" command */ + if (!$this->select($mailbox)) { + return false; + } + + // build FETCH command string + $key = $this->nextTag(); + $cmd = $uidfetch ? 'UID FETCH' : 'FETCH'; + $deleted = $skip_deleted ? ' FLAGS' : ''; + + if ($mode == 1 && $index_field == 'DATE') + $request = " $cmd $message_set (INTERNALDATE BODY.PEEK[HEADER.FIELDS (DATE)]$deleted)"; + else if ($mode == 1) + $request = " $cmd $message_set (BODY.PEEK[HEADER.FIELDS ($index_field)]$deleted)"; + else if ($mode == 2) { + if ($index_field == 'SIZE') + $request = " $cmd $message_set (RFC822.SIZE$deleted)"; + else + $request = " $cmd $message_set ($index_field$deleted)"; + } else if ($mode == 3) + $request = " $cmd $message_set (FLAGS)"; + else // 4 + $request = " $cmd $message_set (INTERNALDATE$deleted)"; + + $request = $key . $request; + + if (!$this->putLine($request)) { + $this->setError(self::ERROR_COMMAND, "Unable to send command: $request"); + return false; + } + + $result = array(); + + do { + $line = rtrim($this->readLine(200)); + $line = $this->multLine($line); + + if (preg_match('/^\* ([0-9]+) FETCH/', $line, $m)) { + $id = $m[1]; + $flags = NULL; + + if ($skip_deleted && preg_match('/FLAGS \(([^)]+)\)/', $line, $matches)) { + $flags = explode(' ', strtoupper($matches[1])); + if (in_array('\\DELETED', $flags)) { + $deleted[$id] = $id; + continue; + } + } + + if ($mode == 1 && $index_field == 'DATE') { + if (preg_match('/BODY\[HEADER\.FIELDS \("*DATE"*\)\] (.*)/', $line, $matches)) { + $value = preg_replace(array('/^"*[a-z]+:/i'), '', $matches[1]); + $value = trim($value); + $result[$id] = $this->strToTime($value); + } + // non-existent/empty Date: header, use INTERNALDATE + if (empty($result[$id])) { + if (preg_match('/INTERNALDATE "([^"]+)"/', $line, $matches)) + $result[$id] = $this->strToTime($matches[1]); + else + $result[$id] = 0; + } + } else if ($mode == 1) { + if (preg_match('/BODY\[HEADER\.FIELDS \("?(FROM|REPLY-TO|SENDER|TO|SUBJECT)"?\)\] (.*)/', $line, $matches)) { + $value = preg_replace(array('/^"*[a-z]+:/i', '/\s+$/sm'), array('', ''), $matches[2]); + $result[$id] = trim($value); + } else { + $result[$id] = ''; + } + } else if ($mode == 2) { + if (preg_match('/\((UID|RFC822\.SIZE) ([0-9]+)/', $line, $matches)) { + $result[$id] = trim($matches[2]); + } else { + $result[$id] = 0; + } + } else if ($mode == 3) { + if (!$flags && preg_match('/FLAGS \(([^)]+)\)/', $line, $matches)) { + $flags = explode(' ', $matches[1]); + } + $result[$id] = in_array('\\'.$index_field, $flags) ? 1 : 0; + } else if ($mode == 4) { + if (preg_match('/INTERNALDATE "([^"]+)"/', $line, $matches)) { + $result[$id] = $this->strToTime($matches[1]); + } else { + $result[$id] = 0; + } + } + } + } while (!$this->startsWith($line, $key, true, true)); + + return $result; } static function compressMessageSet($messages, $force=false) { - // given a comma delimited list of independent mid's, - // compresses by grouping sequences together + // given a comma delimited list of independent mid's, + // compresses by grouping sequences together if (!is_array($messages)) { - // if less than 255 bytes long, let's not bother - if (!$force && strlen($messages)<255) { - return $messages; - } - - // see if it's already been compressed - if (strpos($messages, ':') !== false) { - return $messages; - } + // if less than 255 bytes long, let's not bother + if (!$force && strlen($messages)<255) { + return $messages; + } + + // see if it's already been compressed + if (strpos($messages, ':') !== false) { + return $messages; + } - // separate, then sort - $messages = explode(',', $messages); + // separate, then sort + $messages = explode(',', $messages); } - sort($messages); - - $result = array(); - $start = $prev = $messages[0]; + sort($messages); - foreach ($messages as $id) { - $incr = $id - $prev; - if ($incr > 1) { //found a gap - if ($start == $prev) { - $result[] = $prev; //push single id - } else { - $result[] = $start . ':' . $prev; //push sequence as start_id:end_id - } - $start = $id; //start of new sequence - } - $prev = $id; - } + $result = array(); + $start = $prev = $messages[0]; + + foreach ($messages as $id) { + $incr = $id - $prev; + if ($incr > 1) { // found a gap + if ($start == $prev) { + $result[] = $prev; // push single id + } else { + $result[] = $start . ':' . $prev; // push sequence as start_id:end_id + } + $start = $id; // start of new sequence + } + $prev = $id; + } - // handle the last sequence/id - if ($start == $prev) { - $result[] = $prev; - } else { - $result[] = $start.':'.$prev; - } + // handle the last sequence/id + if ($start == $prev) { + $result[] = $prev; + } else { + $result[] = $start.':'.$prev; + } - // return as comma separated string - return implode(',', $result); + // return as comma separated string + return implode(',', $result); } static function uncompressMessageSet($messages) { - $result = array(); - $messages = explode(',', $messages); + $result = array(); + $messages = explode(',', $messages); foreach ($messages as $part) { $items = explode(':', $part); @@ -1196,13 +1362,13 @@ class rcube_imap_generic */ function UID2ID($mailbox, $uid) { - if ($uid > 0) { - $id_a = $this->search($mailbox, "UID $uid"); - if (is_array($id_a) && count($id_a) == 1) { - return (int) $id_a[0]; - } - } - return null; + if ($uid > 0) { + $id_a = $this->search($mailbox, "UID $uid"); + if (is_array($id_a) && count($id_a) == 1) { + return (int) $id_a[0]; + } + } + return null; } /** @@ -1216,417 +1382,408 @@ class rcube_imap_generic */ function ID2UID($mailbox, $id) { - if (empty($id) || $id < 0) { - return null; - } + if (empty($id) || $id < 0) { + return null; + } - if (!$this->select($mailbox)) { + if (!$this->select($mailbox)) { return null; } list($code, $response) = $this->execute('FETCH', array($id, '(UID)')); if ($code == self::ERROR_OK && preg_match("/^\* $id FETCH \(UID (.*)\)/i", $response, $m)) { - return (int) $m[1]; + return (int) $m[1]; } - return null; + return null; } function fetchUIDs($mailbox, $message_set=null) { - if (is_array($message_set)) - $message_set = join(',', $message_set); + if (is_array($message_set)) + $message_set = join(',', $message_set); else if (empty($message_set)) - $message_set = '1:*'; + $message_set = '1:*'; - return $this->fetchHeaderIndex($mailbox, $message_set, 'UID', false); + return $this->fetchHeaderIndex($mailbox, $message_set, 'UID', false); } function fetchHeaders($mailbox, $message_set, $uidfetch=false, $bodystr=false, $add='') { - $result = array(); + $result = array(); - if (!$this->select($mailbox)) { - return false; - } + if (!$this->select($mailbox)) { + return false; + } - $message_set = $this->compressMessageSet($message_set); + $message_set = $this->compressMessageSet($message_set); - if ($add) - $add = ' '.trim($add); + if ($add) + $add = ' '.trim($add); - /* FETCH uid, size, flags and headers */ - $key = $this->nextTag(); - $request = $key . ($uidfetch ? ' UID' : '') . " FETCH $message_set "; - $request .= "(UID RFC822.SIZE FLAGS INTERNALDATE "; - if ($bodystr) - $request .= "BODYSTRUCTURE "; - $request .= "BODY.PEEK[HEADER.FIELDS (DATE FROM TO SUBJECT CONTENT-TYPE "; - $request .= "LIST-POST DISPOSITION-NOTIFICATION-TO".$add.")])"; + /* FETCH uid, size, flags and headers */ + $key = $this->nextTag(); + $request = $key . ($uidfetch ? ' UID' : '') . " FETCH $message_set "; + $request .= "(UID RFC822.SIZE FLAGS INTERNALDATE "; + if ($bodystr) + $request .= "BODYSTRUCTURE "; + $request .= "BODY.PEEK[HEADER.FIELDS (DATE FROM TO SUBJECT CONTENT-TYPE "; + $request .= "LIST-POST DISPOSITION-NOTIFICATION-TO".$add.")])"; - if (!$this->putLine($request)) { + if (!$this->putLine($request)) { $this->setError(self::ERROR_COMMAND, "Unable to send command: $request"); - return false; - } - do { - $line = $this->readLine(4096); - $line = $this->multLine($line); + return false; + } + do { + $line = $this->readLine(4096); + $line = $this->multLine($line); if (!$line) break; - if (preg_match('/^\* ([0-9]+) FETCH/', $line, $m)) { - $id = intval($m[1]); - - $result[$id] = new rcube_mail_header; - $result[$id]->id = $id; - $result[$id]->subject = ''; - $result[$id]->messageID = 'mid:' . $id; - - $lines = array(); - $ln = 0; - - // Sample reply line: - // * 321 FETCH (UID 2417 RFC822.SIZE 2730 FLAGS (\Seen) - // INTERNALDATE "16-Nov-2008 21:08:46 +0100" BODYSTRUCTURE (...) - // BODY[HEADER.FIELDS ... - - if (preg_match('/^\* [0-9]+ FETCH \((.*) BODY/s', $line, $matches)) { - $str = $matches[1]; - - // swap parents with quotes, then explode - $str = preg_replace('/[()]/', '"', $str); - $a = rcube_explode_quoted_string(' ', $str); - - // did we get the right number of replies? - $parts_count = count($a); - if ($parts_count>=6) { - for ($i=0; $i<$parts_count; $i=$i+2) { - if ($a[$i] == 'UID') - $result[$id]->uid = intval($a[$i+1]); - else if ($a[$i] == 'RFC822.SIZE') - $result[$id]->size = intval($a[$i+1]); - else if ($a[$i] == 'INTERNALDATE') - $time_str = $a[$i+1]; - else if ($a[$i] == 'FLAGS') - $flags_str = $a[$i+1]; - } - - $time_str = str_replace('"', '', $time_str); - - // if time is gmt... - $time_str = str_replace('GMT','+0000',$time_str); - - $result[$id]->internaldate = $time_str; - $result[$id]->timestamp = $this->StrToTime($time_str); - $result[$id]->date = $time_str; - } - - // BODYSTRUCTURE - if($bodystr) { - while (!preg_match('/ BODYSTRUCTURE (.*) BODY\[HEADER.FIELDS/s', $line, $m)) { - $line2 = $this->readLine(1024); - $line .= $this->multLine($line2, true); - } - $result[$id]->body_structure = $m[1]; - } - - // the rest of the result - preg_match('/ BODY\[HEADER.FIELDS \(.*?\)\]\s*(.*)$/s', $line, $m); - $reslines = explode("\n", trim($m[1], '"')); - // re-parse (see below) - foreach ($reslines as $resln) { - if (ord($resln[0])<=32) { - $lines[$ln] .= (empty($lines[$ln])?'':"\n").trim($resln); - } else { - $lines[++$ln] = trim($resln); - } - } - } - - // Start parsing headers. The problem is, some header "lines" take up multiple lines. - // So, we'll read ahead, and if the one we're reading now is a valid header, we'll - // process the previous line. Otherwise, we'll keep adding the strings until we come - // to the next valid header line. - - do { - $line = rtrim($this->readLine(300), "\r\n"); - - // The preg_match below works around communigate imap, which outputs " UID )". - // Without this, the while statement continues on and gets the "FH0 OK completed" message. - // If this loop gets the ending message, then the outer loop does not receive it from radline on line 1249. - // This in causes the if statement on line 1278 to never be true, which causes the headers to end up missing - // If the if statement was changed to pick up the fh0 from this loop, then it causes the outer loop to spin - // An alternative might be: - // if (!preg_match("/:/",$line) && preg_match("/\)$/",$line)) break; - // however, unsure how well this would work with all imap clients. - if (preg_match("/^\s*UID [0-9]+\)$/", $line)) { - break; - } - - // handle FLAGS reply after headers (AOL, Zimbra?) - if (preg_match('/\s+FLAGS \((.*)\)\)$/', $line, $matches)) { - $flags_str = $matches[1]; - break; - } - - if (ord($line[0])<=32) { - $lines[$ln] .= (empty($lines[$ln])?'':"\n").trim($line); - } else { - $lines[++$ln] = trim($line); - } - // patch from "Maksim Rubis" - } while ($line[0] != ')' && !$this->startsWith($line, $key, true)); - - if (strncmp($line, $key, strlen($key))) { - // process header, fill rcube_mail_header obj. - // initialize - if (is_array($headers)) { - reset($headers); - while (list($k, $bar) = each($headers)) { - $headers[$k] = ''; - } - } - - // create array with header field:data - while ( list($lines_key, $str) = each($lines) ) { - list($field, $string) = $this->splitHeaderLine($str); - - $field = strtolower($field); - $string = preg_replace('/\n\s*/', ' ', $string); - - switch ($field) { - case 'date'; - $result[$id]->date = $string; - $result[$id]->timestamp = $this->strToTime($string); - break; - case 'from': - $result[$id]->from = $string; - break; - case 'to': - $result[$id]->to = preg_replace('/undisclosed-recipients:[;,]*/', '', $string); - break; - case 'subject': - $result[$id]->subject = $string; - break; - case 'reply-to': - $result[$id]->replyto = $string; - break; - case 'cc': - $result[$id]->cc = $string; - break; - case 'bcc': - $result[$id]->bcc = $string; - break; - case 'content-transfer-encoding': - $result[$id]->encoding = $string; - break; - case 'content-type': - $ctype_parts = preg_split('/[; ]/', $string); - $result[$id]->ctype = array_shift($ctype_parts); - if (preg_match('/charset\s*=\s*"?([a-z0-9\-\.\_]+)"?/i', $string, $regs)) { - $result[$id]->charset = $regs[1]; - } - break; - case 'in-reply-to': - $result[$id]->in_reply_to = str_replace(array("\n", '<', '>'), '', $string); - break; - case 'references': - $result[$id]->references = $string; - break; - case 'return-receipt-to': - case 'disposition-notification-to': - case 'x-confirm-reading-to': - $result[$id]->mdn_to = $string; - break; - case 'message-id': - $result[$id]->messageID = $string; - break; - case 'x-priority': - if (preg_match('/^(\d+)/', $string, $matches)) - $result[$id]->priority = intval($matches[1]); - break; - default: - if (strlen($field) > 2) - $result[$id]->others[$field] = $string; - break; - } // end switch () - } // end while () - } - - // process flags - if (!empty($flags_str)) { - $flags_str = preg_replace('/[\\\"]/', '', $flags_str); - $flags_a = explode(' ', $flags_str); - - if (is_array($flags_a)) { - foreach($flags_a as $flag) { - $flag = strtoupper($flag); - if ($flag == 'SEEN') { - $result[$id]->seen = true; - } else if ($flag == 'DELETED') { - $result[$id]->deleted = true; - } else if ($flag == 'RECENT') { - $result[$id]->recent = true; - } else if ($flag == 'ANSWERED') { - $result[$id]->answered = true; - } else if ($flag == '$FORWARDED') { - $result[$id]->forwarded = true; - } else if ($flag == 'DRAFT') { - $result[$id]->is_draft = true; - } else if ($flag == '$MDNSENT') { - $result[$id]->mdn_sent = true; - } else if ($flag == 'FLAGGED') { - $result[$id]->flagged = true; - } - } - $result[$id]->flags = $flags_a; - } - } - } - } while (!$this->startsWith($line, $key, true)); - - return $result; + if (preg_match('/^\* ([0-9]+) FETCH/', $line, $m)) { + $id = intval($m[1]); + + $result[$id] = new rcube_mail_header; + $result[$id]->id = $id; + $result[$id]->subject = ''; + $result[$id]->messageID = 'mid:' . $id; + + $lines = array(); + $ln = 0; + + // Sample reply line: + // * 321 FETCH (UID 2417 RFC822.SIZE 2730 FLAGS (\Seen) + // INTERNALDATE "16-Nov-2008 21:08:46 +0100" BODYSTRUCTURE (...) + // BODY[HEADER.FIELDS ... + + if (preg_match('/^\* [0-9]+ FETCH \((.*) BODY/s', $line, $matches)) { + $str = $matches[1]; + + // swap parents with quotes, then explode + $str = preg_replace('/[()]/', '"', $str); + $a = rcube_explode_quoted_string(' ', $str); + + // did we get the right number of replies? + $parts_count = count($a); + if ($parts_count>=6) { + for ($i=0; $i<$parts_count; $i=$i+2) { + if ($a[$i] == 'UID') { + $result[$id]->uid = intval($a[$i+1]); + } + else if ($a[$i] == 'RFC822.SIZE') { + $result[$id]->size = intval($a[$i+1]); + } + else if ($a[$i] == 'INTERNALDATE') { + $time_str = $a[$i+1]; + } + else if ($a[$i] == 'FLAGS') { + $flags_str = $a[$i+1]; + } + } + + $time_str = str_replace('"', '', $time_str); + + // if time is gmt... + $time_str = str_replace('GMT','+0000',$time_str); + + $result[$id]->internaldate = $time_str; + $result[$id]->timestamp = $this->StrToTime($time_str); + $result[$id]->date = $time_str; + } + + // BODYSTRUCTURE + if ($bodystr) { + while (!preg_match('/ BODYSTRUCTURE (.*) BODY\[HEADER.FIELDS/s', $line, $m)) { + $line2 = $this->readLine(1024); + $line .= $this->multLine($line2, true); + } + $result[$id]->body_structure = $m[1]; + } + + // the rest of the result + if (preg_match('/ BODY\[HEADER.FIELDS \(.*?\)\]\s*(.*)$/s', $line, $m)) { + $reslines = explode("\n", trim($m[1], '"')); + // re-parse (see below) + foreach ($reslines as $resln) { + if (ord($resln[0])<=32) { + $lines[$ln] .= (empty($lines[$ln])?'':"\n").trim($resln); + } else { + $lines[++$ln] = trim($resln); + } + } + } + } + + // Start parsing headers. The problem is, some header "lines" take up multiple lines. + // So, we'll read ahead, and if the one we're reading now is a valid header, we'll + // process the previous line. Otherwise, we'll keep adding the strings until we come + // to the next valid header line. + + do { + $line = rtrim($this->readLine(300), "\r\n"); + + // The preg_match below works around communigate imap, which outputs " UID )". + // Without this, the while statement continues on and gets the "FH0 OK completed" message. + // If this loop gets the ending message, then the outer loop does not receive it from radline on line 1249. + // This in causes the if statement on line 1278 to never be true, which causes the headers to end up missing + // If the if statement was changed to pick up the fh0 from this loop, then it causes the outer loop to spin + // An alternative might be: + // if (!preg_match("/:/",$line) && preg_match("/\)$/",$line)) break; + // however, unsure how well this would work with all imap clients. + if (preg_match("/^\s*UID [0-9]+\)$/", $line)) { + break; + } + + // handle FLAGS reply after headers (AOL, Zimbra?) + if (preg_match('/\s+FLAGS \((.*)\)\)$/', $line, $matches)) { + $flags_str = $matches[1]; + break; + } + + if (ord($line[0])<=32) { + $lines[$ln] .= (empty($lines[$ln])?'':"\n").trim($line); + } else { + $lines[++$ln] = trim($line); + } + // patch from "Maksim Rubis" + } while ($line[0] != ')' && !$this->startsWith($line, $key, true)); + + if (strncmp($line, $key, strlen($key))) { + // process header, fill rcube_mail_header obj. + // initialize + if (is_array($headers)) { + reset($headers); + while (list($k, $bar) = each($headers)) { + $headers[$k] = ''; + } + } + + // create array with header field:data + while (list($lines_key, $str) = each($lines)) { + list($field, $string) = $this->splitHeaderLine($str); + + $field = strtolower($field); + $string = preg_replace('/\n\s*/', ' ', $string); + + switch ($field) { + case 'date'; + $result[$id]->date = $string; + $result[$id]->timestamp = $this->strToTime($string); + break; + case 'from': + $result[$id]->from = $string; + break; + case 'to': + $result[$id]->to = preg_replace('/undisclosed-recipients:[;,]*/', '', $string); + break; + case 'subject': + $result[$id]->subject = $string; + break; + case 'reply-to': + $result[$id]->replyto = $string; + break; + case 'cc': + $result[$id]->cc = $string; + break; + case 'bcc': + $result[$id]->bcc = $string; + break; + case 'content-transfer-encoding': + $result[$id]->encoding = $string; + break; + case 'content-type': + $ctype_parts = preg_split('/[; ]/', $string); + $result[$id]->ctype = array_shift($ctype_parts); + if (preg_match('/charset\s*=\s*"?([a-z0-9\-\.\_]+)"?/i', $string, $regs)) { + $result[$id]->charset = $regs[1]; + } + break; + case 'in-reply-to': + $result[$id]->in_reply_to = str_replace(array("\n", '<', '>'), '', $string); + break; + case 'references': + $result[$id]->references = $string; + break; + case 'return-receipt-to': + case 'disposition-notification-to': + case 'x-confirm-reading-to': + $result[$id]->mdn_to = $string; + break; + case 'message-id': + $result[$id]->messageID = $string; + break; + case 'x-priority': + if (preg_match('/^(\d+)/', $string, $matches)) { + $result[$id]->priority = intval($matches[1]); + } + break; + default: + if (strlen($field) > 2) { + $result[$id]->others[$field] = $string; + } + break; + } // end switch () + } // end while () + } + + // process flags + if (!empty($flags_str)) { + $flags_str = preg_replace('/[\\\"]/', '', $flags_str); + $flags_a = explode(' ', $flags_str); + + if (is_array($flags_a)) { + foreach($flags_a as $flag) { + $flag = strtoupper($flag); + if ($flag == 'SEEN') { + $result[$id]->seen = true; + } else if ($flag == 'DELETED') { + $result[$id]->deleted = true; + } else if ($flag == 'RECENT') { + $result[$id]->recent = true; + } else if ($flag == 'ANSWERED') { + $result[$id]->answered = true; + } else if ($flag == '$FORWARDED') { + $result[$id]->forwarded = true; + } else if ($flag == 'DRAFT') { + $result[$id]->is_draft = true; + } else if ($flag == '$MDNSENT') { + $result[$id]->mdn_sent = true; + } else if ($flag == 'FLAGGED') { + $result[$id]->flagged = true; + } + } + $result[$id]->flags = $flags_a; + } + } + } + } while (!$this->startsWith($line, $key, true)); + + return $result; } function fetchHeader($mailbox, $id, $uidfetch=false, $bodystr=false, $add='') { - $a = $this->fetchHeaders($mailbox, $id, $uidfetch, $bodystr, $add); - if (is_array($a)) { - return array_shift($a); - } - return false; + $a = $this->fetchHeaders($mailbox, $id, $uidfetch, $bodystr, $add); + if (is_array($a)) { + return array_shift($a); + } + return false; } function sortHeaders($a, $field, $flag) { - if (empty($field)) { - $field = 'uid'; - } + if (empty($field)) { + $field = 'uid'; + } else { - $field = strtolower($field); - } - - if ($field == 'date' || $field == 'internaldate') { - $field = 'timestamp'; - } - - if (empty($flag)) { - $flag = 'ASC'; - } else { - $flag = strtoupper($flag); - } - - $c = count($a); - if ($c > 0) { - // Strategy: - // First, we'll create an "index" array. - // Then, we'll use sort() on that array, - // and use that to sort the main array. - - // create "index" array - $index = array(); - reset($a); - while (list($key, $val) = each($a)) { - if ($field == 'timestamp') { - $data = $this->strToTime($val->date); - if (!$data) { - $data = $val->timestamp; - } - } else { - $data = $val->$field; - if (is_string($data)) { - $data = str_replace('"', '', $data); - if ($field == 'subject') { - $data = preg_replace('/^(Re: \s*|Fwd:\s*|Fw:\s*)+/i', '', $data); - } - $data = strtoupper($data); - } - } - $index[$key] = $data; - } - - // sort index - if ($flag == 'ASC') { - asort($index); - } else { - arsort($index); - } - - // form new array based on index - $result = array(); - reset($index); - while (list($key, $val) = each($index)) { - $result[$key] = $a[$key]; - } - } - - return $result; - } + $field = strtolower($field); + } - function expunge($mailbox, $messages=NULL) - { - if (!$this->select($mailbox)) { - return false; + if ($field == 'date' || $field == 'internaldate') { + $field = 'timestamp'; } - // Clear internal status cache - unset($this->data['STATUS:'.$mailbox]); + if (empty($flag)) { + $flag = 'ASC'; + } else { + $flag = strtoupper($flag); + } + + $c = count($a); + if ($c > 0) { + // Strategy: + // First, we'll create an "index" array. + // Then, we'll use sort() on that array, + // and use that to sort the main array. + + // create "index" array + $index = array(); + reset($a); + while (list($key, $val) = each($a)) { + if ($field == 'timestamp') { + $data = $this->strToTime($val->date); + if (!$data) { + $data = $val->timestamp; + } + } else { + $data = $val->$field; + if (is_string($data)) { + $data = str_replace('"', '', $data); + if ($field == 'subject') { + $data = preg_replace('/^(Re: \s*|Fwd:\s*|Fw:\s*)+/i', '', $data); + } + $data = strtoupper($data); + } + } + $index[$key] = $data; + } - if ($messages) - $result = $this->execute('UID EXPUNGE', array($messages), self::COMMAND_NORESPONSE); - else - $result = $this->execute('EXPUNGE', null, self::COMMAND_NORESPONSE); + // sort index + if ($flag == 'ASC') { + asort($index); + } else { + arsort($index); + } - if ($result == self::ERROR_OK) { - $this->selected = ''; // state has changed, need to reselect - return true; - } + // form new array based on index + $result = array(); + reset($index); + while (list($key, $val) = each($index)) { + $result[$key] = $a[$key]; + } + } - return false; + return $result; } + function modFlag($mailbox, $messages, $flag, $mod) { - if ($mod != '+' && $mod != '-') { + if ($mod != '+' && $mod != '-') { $mod = '+'; - } + } + + if (!$this->select($mailbox)) { + return false; + } - if (!$this->select($mailbox)) { - return false; - } + if (!$this->data['READ-WRITE']) { + $this->setError(self::ERROR_READONLY, "Mailbox is read-only", 'STORE'); + return false; + } // Clear internal status cache if ($flag == 'SEEN') { unset($this->data['STATUS:'.$mailbox]['UNSEEN']); } - $flag = $this->flags[strtoupper($flag)]; + $flag = $this->flags[strtoupper($flag)]; $result = $this->execute('UID STORE', array( $this->compressMessageSet($messages), $mod . 'FLAGS.SILENT', "($flag)"), self::COMMAND_NORESPONSE); - return ($result == self::ERROR_OK); + return ($result == self::ERROR_OK); } function flag($mailbox, $messages, $flag) { - return $this->modFlag($mailbox, $messages, $flag, '+'); + return $this->modFlag($mailbox, $messages, $flag, '+'); } function unflag($mailbox, $messages, $flag) { - return $this->modFlag($mailbox, $messages, $flag, '-'); + return $this->modFlag($mailbox, $messages, $flag, '-'); } function delete($mailbox, $messages) { - return $this->modFlag($mailbox, $messages, 'DELETED', '+'); + return $this->modFlag($mailbox, $messages, 'DELETED', '+'); } function copy($messages, $from, $to) { - if (!$this->select($from)) { - return false; - } + if (!$this->select($from)) { + return false; + } // Clear internal status cache unset($this->data['STATUS:'.$to]); @@ -1635,11 +1792,20 @@ class rcube_imap_generic $this->compressMessageSet($messages), $this->escape($to)), self::COMMAND_NORESPONSE); - return ($result == self::ERROR_OK); + return ($result == self::ERROR_OK); } function move($messages, $from, $to) { + if (!$this->select($from)) { + return false; + } + + if (!$this->data['READ-WRITE']) { + $this->setError(self::ERROR_READONLY, "Mailbox is read-only", 'STORE'); + return false; + } + $r = $this->copy($messages, $from, $to); if ($r) { @@ -1656,76 +1822,76 @@ class rcube_imap_generic // http://derickrethans.nl/files/phparch-php-variables-article.pdf private function parseThread($str, $begin, $end, $root, $parent, $depth, &$depthmap, &$haschildren) { - $node = array(); - if ($str[$begin] != '(') { - $stop = $begin + strspn($str, '1234567890', $begin, $end - $begin); - $msg = substr($str, $begin, $stop - $begin); - if ($msg == 0) - return $node; - if (is_null($root)) - $root = $msg; - $depthmap[$msg] = $depth; - $haschildren[$msg] = false; - if (!is_null($parent)) - $haschildren[$parent] = true; - if ($stop + 1 < $end) - $node[$msg] = $this->parseThread($str, $stop + 1, $end, $root, $msg, $depth + 1, $depthmap, $haschildren); - else - $node[$msg] = array(); - } else { - $off = $begin; - while ($off < $end) { - $start = $off; - $off++; - $n = 1; - while ($n > 0) { - $p = strpos($str, ')', $off); - if ($p === false) { - error_log('Mismatched brackets parsing IMAP THREAD response:'); - error_log(substr($str, ($begin < 10) ? 0 : ($begin - 10), $end - $begin + 20)); - error_log(str_repeat(' ', $off - (($begin < 10) ? 0 : ($begin - 10)))); - return $node; - } - $p1 = strpos($str, '(', $off); - if ($p1 !== false && $p1 < $p) { - $off = $p1 + 1; - $n++; - } else { - $off = $p + 1; - $n--; - } - } - $node += $this->parseThread($str, $start + 1, $off - 1, $root, $parent, $depth, $depthmap, $haschildren); - } - } - - return $node; + $node = array(); + if ($str[$begin] != '(') { + $stop = $begin + strspn($str, '1234567890', $begin, $end - $begin); + $msg = substr($str, $begin, $stop - $begin); + if ($msg == 0) + return $node; + if (is_null($root)) + $root = $msg; + $depthmap[$msg] = $depth; + $haschildren[$msg] = false; + if (!is_null($parent)) + $haschildren[$parent] = true; + if ($stop + 1 < $end) + $node[$msg] = $this->parseThread($str, $stop + 1, $end, $root, $msg, $depth + 1, $depthmap, $haschildren); + else + $node[$msg] = array(); + } else { + $off = $begin; + while ($off < $end) { + $start = $off; + $off++; + $n = 1; + while ($n > 0) { + $p = strpos($str, ')', $off); + if ($p === false) { + error_log("Mismatched brackets parsing IMAP THREAD response:"); + error_log(substr($str, ($begin < 10) ? 0 : ($begin - 10), $end - $begin + 20)); + error_log(str_repeat(' ', $off - (($begin < 10) ? 0 : ($begin - 10)))); + return $node; + } + $p1 = strpos($str, '(', $off); + if ($p1 !== false && $p1 < $p) { + $off = $p1 + 1; + $n++; + } else { + $off = $p + 1; + $n--; + } + } + $node += $this->parseThread($str, $start + 1, $off - 1, $root, $parent, $depth, $depthmap, $haschildren); + } + } + + return $node; } function thread($mailbox, $algorithm='REFERENCES', $criteria='', $encoding='US-ASCII') { $old_sel = $this->selected; - if (!$this->select($mailbox)) { - return false; - } + if (!$this->select($mailbox)) { + return false; + } // return empty result when folder is empty and we're just after SELECT if ($old_sel != $mailbox && !$this->data['EXISTS']) { return array(array(), array(), array()); - } + } - $encoding = $encoding ? trim($encoding) : 'US-ASCII'; - $algorithm = $algorithm ? trim($algorithm) : 'REFERENCES'; - $criteria = $criteria ? 'ALL '.trim($criteria) : 'ALL'; + $encoding = $encoding ? trim($encoding) : 'US-ASCII'; + $algorithm = $algorithm ? trim($algorithm) : 'REFERENCES'; + $criteria = $criteria ? 'ALL '.trim($criteria) : 'ALL'; $data = ''; list($code, $response) = $this->execute('THREAD', array( $algorithm, $encoding, $criteria)); - if ($code == self::ERROR_OK && preg_match('/^\* THREAD /i', $response)) { - // remove prefix and \r\n from raw response - $response = str_replace("\r\n", '', substr($response, 9)); + if ($code == self::ERROR_OK && preg_match('/^\* THREAD /i', $response)) { + // remove prefix and \r\n from raw response + $response = str_replace("\r\n", '', substr($response, 9)); $depthmap = array(); $haschildren = array(); @@ -1733,9 +1899,9 @@ class rcube_imap_generic null, null, 0, $depthmap, $haschildren); return array($tree, $depthmap, $haschildren); - } + } - return false; + return false; } /** @@ -1752,9 +1918,9 @@ class rcube_imap_generic { $old_sel = $this->selected; - if (!$this->select($mailbox)) { - return false; - } + if (!$this->select($mailbox)) { + return false; + } // return empty result when folder is empty and we're just after SELECT if ($old_sel != $mailbox && !$this->data['EXISTS']) { @@ -1762,7 +1928,7 @@ class rcube_imap_generic return array_combine($items, array_fill(0, count($items), 0)); else return array(); - } + } $esearch = empty($items) ? false : $this->getCapability('ESEARCH'); $criteria = trim($criteria); @@ -1779,13 +1945,13 @@ class rcube_imap_generic $params .= 'ALL'; } - list($code, $response) = $this->execute($return_uid ? 'UID SEARCH' : 'SEARCH', - array($params)); + list($code, $response) = $this->execute($return_uid ? 'UID SEARCH' : 'SEARCH', + array($params)); - if ($code == self::ERROR_OK) { - // remove prefix and \r\n from raw response + if ($code == self::ERROR_OK) { + // remove prefix and \r\n from raw response $response = substr($response, $esearch ? 10 : 9); - $response = str_replace("\r\n", '', $response); + $response = str_replace("\r\n", '', $response); if ($esearch) { // Skip prefix: ... (TAG "A285") UID ... @@ -1803,29 +1969,33 @@ class rcube_imap_generic return $result; } - else { + else { $response = preg_split('/\s+/', $response, -1, PREG_SPLIT_NO_EMPTY); if (!empty($items)) { $result = array(); - if (in_array('COUNT', $items)) + if (in_array('COUNT', $items)) { $result['COUNT'] = count($response); - if (in_array('MIN', $items)) + } + if (in_array('MIN', $items)) { $result['MIN'] = !empty($response) ? min($response) : 0; - if (in_array('MAX', $items)) + } + if (in_array('MAX', $items)) { $result['MAX'] = !empty($response) ? max($response) : 0; - if (in_array('ALL', $items)) + } + if (in_array('ALL', $items)) { $result['ALL'] = $this->compressMessageSet($response, true); + } return $result; } else { return $response; } - } + } } - return false; + return false; } /** @@ -1879,9 +2049,9 @@ class rcube_imap_generic private function _listMailboxes($ref, $mailbox, $subscribed=false, $status_opts=array(), $select_opts=array()) { - if (!strlen($mailbox)) { - $mailbox = '*'; - } + if (!strlen($mailbox)) { + $mailbox = '*'; + } $args = array(); @@ -1913,7 +2083,7 @@ class rcube_imap_generic // Add to result array if (!$lstatus) { - $folders[] = $mailbox; + $folders[] = $mailbox; } else { $folders[$mailbox] = array(); @@ -1937,406 +2107,378 @@ class rcube_imap_generic $folders[$mailbox][$name] = $value; } } - } + } return $folders; } - return false; + return false; } function fetchMIMEHeaders($mailbox, $id, $parts, $mime=true) { - if (!$this->select($mailbox)) { - return false; - } + if (!$this->select($mailbox)) { + return false; + } - $result = false; - $parts = (array) $parts; - $key = $this->nextTag(); - $peeks = ''; - $idx = 0; + $result = false; + $parts = (array) $parts; + $key = $this->nextTag(); + $peeks = ''; + $idx = 0; $type = $mime ? 'MIME' : 'HEADER'; - // format request - foreach($parts as $part) - $peeks[] = "BODY.PEEK[$part.$type]"; + // format request + foreach($parts as $part) { + $peeks[] = "BODY.PEEK[$part.$type]"; + } - $request = "$key FETCH $id (" . implode(' ', $peeks) . ')'; + $request = "$key FETCH $id (" . implode(' ', $peeks) . ')'; - // send request - if (!$this->putLine($request)) { + // send request + if (!$this->putLine($request)) { $this->setError(self::ERROR_COMMAND, "Unable to send command: $request"); - return false; - } + return false; + } - do { - $line = $this->readLine(1024); - $line = $this->multLine($line); + do { + $line = $this->readLine(1024); + $line = $this->multLine($line); - if (preg_match('/BODY\[([0-9\.]+)\.'.$type.'\]/', $line, $matches)) { - $idx = $matches[1]; - $result[$idx] = preg_replace('/^(\* '.$id.' FETCH \()?\s*BODY\['.$idx.'\.'.$type.'\]\s+/', '', $line); - $result[$idx] = trim($result[$idx], '"'); - $result[$idx] = rtrim($result[$idx], "\t\r\n\0\x0B"); - } - } while (!$this->startsWith($line, $key, true)); + if (preg_match('/BODY\[([0-9\.]+)\.'.$type.'\]/', $line, $matches)) { + $idx = $matches[1]; + $result[$idx] = preg_replace('/^(\* '.$id.' FETCH \()?\s*BODY\['.$idx.'\.'.$type.'\]\s+/', '', $line); + $result[$idx] = trim($result[$idx], '"'); + $result[$idx] = rtrim($result[$idx], "\t\r\n\0\x0B"); + } + } while (!$this->startsWith($line, $key, true)); - return $result; + return $result; } function fetchPartHeader($mailbox, $id, $is_uid=false, $part=NULL) { - $part = empty($part) ? 'HEADER' : $part.'.MIME'; + $part = empty($part) ? 'HEADER' : $part.'.MIME'; return $this->handlePartBody($mailbox, $id, $is_uid, $part); } function handlePartBody($mailbox, $id, $is_uid=false, $part='', $encoding=NULL, $print=NULL, $file=NULL) { - if (!$this->select($mailbox)) { + if (!$this->select($mailbox)) { return false; } - switch ($encoding) { - case 'base64': - $mode = 1; - break; - case 'quoted-printable': - $mode = 2; - break; - case 'x-uuencode': - case 'x-uue': - case 'uue': - case 'uuencode': - $mode = 3; - break; - default: - $mode = 0; - } - - // format request - $reply_key = '* ' . $id; - $key = $this->nextTag(); - $request = $key . ($is_uid ? ' UID' : '') . " FETCH $id (BODY.PEEK[$part])"; - - // send request - if (!$this->putLine($request)) { + switch ($encoding) { + case 'base64': + $mode = 1; + break; + case 'quoted-printable': + $mode = 2; + break; + case 'x-uuencode': + case 'x-uue': + case 'uue': + case 'uuencode': + $mode = 3; + break; + default: + $mode = 0; + } + + // format request + $reply_key = '* ' . $id; + $key = $this->nextTag(); + $request = $key . ($is_uid ? ' UID' : '') . " FETCH $id (BODY.PEEK[$part])"; + + // send request + if (!$this->putLine($request)) { $this->setError(self::ERROR_COMMAND, "Unable to send command: $request"); - return false; - } - - // receive reply line - do { - $line = rtrim($this->readLine(1024)); - $a = explode(' ', $line); - } while (!($end = $this->startsWith($line, $key, true)) && $a[2] != 'FETCH'); - - $len = strlen($line); - $result = false; - - // handle empty "* X FETCH ()" response - if ($line[$len-1] == ')' && $line[$len-2] != '(') { - // one line response, get everything between first and last quotes - if (substr($line, -4, 3) == 'NIL') { - // NIL response - $result = ''; - } else { - $from = strpos($line, '"') + 1; - $to = strrpos($line, '"'); - $len = $to - $from; - $result = substr($line, $from, $len); - } - - if ($mode == 1) - $result = base64_decode($result); - else if ($mode == 2) - $result = quoted_printable_decode($result); - else if ($mode == 3) - $result = convert_uudecode($result); - - } else if ($line[$len-1] == '}') { - // multi-line request, find sizes of content and receive that many bytes - $from = strpos($line, '{') + 1; - $to = strrpos($line, '}'); - $len = $to - $from; - $sizeStr = substr($line, $from, $len); - $bytes = (int)$sizeStr; - $prev = ''; - - while ($bytes > 0) { - $line = $this->readLine(4096); - - if ($line === NULL) - break; - - $len = strlen($line); - - if ($len > $bytes) { - $line = substr($line, 0, $bytes); - $len = strlen($line); - } - $bytes -= $len; + return false; + } + + // receive reply line + do { + $line = rtrim($this->readLine(1024)); + $a = explode(' ', $line); + } while (!($end = $this->startsWith($line, $key, true)) && $a[2] != 'FETCH'); + + $len = strlen($line); + $result = false; + + // handle empty "* X FETCH ()" response + if ($line[$len-1] == ')' && $line[$len-2] != '(') { + // one line response, get everything between first and last quotes + if (substr($line, -4, 3) == 'NIL') { + // NIL response + $result = ''; + } else { + $from = strpos($line, '"') + 1; + $to = strrpos($line, '"'); + $len = $to - $from; + $result = substr($line, $from, $len); + } + + if ($mode == 1) { + $result = base64_decode($result); + } + else if ($mode == 2) { + $result = quoted_printable_decode($result); + } + else if ($mode == 3) { + $result = convert_uudecode($result); + } + + } else if ($line[$len-1] == '}') { + // multi-line request, find sizes of content and receive that many bytes + $from = strpos($line, '{') + 1; + $to = strrpos($line, '}'); + $len = $to - $from; + $sizeStr = substr($line, $from, $len); + $bytes = (int)$sizeStr; + $prev = ''; + + while ($bytes > 0) { + $line = $this->readLine(4096); + + if ($line === NULL) { + break; + } + + $len = strlen($line); + + if ($len > $bytes) { + $line = substr($line, 0, $bytes); + $len = strlen($line); + } + $bytes -= $len; // BASE64 - if ($mode == 1) { - $line = rtrim($line, "\t\r\n\0\x0B"); - // create chunks with proper length for base64 decoding - $line = $prev.$line; - $length = strlen($line); - if ($length % 4) { - $length = floor($length / 4) * 4; - $prev = substr($line, $length); - $line = substr($line, 0, $length); - } - else - $prev = ''; - $line = base64_decode($line); + if ($mode == 1) { + $line = rtrim($line, "\t\r\n\0\x0B"); + // create chunks with proper length for base64 decoding + $line = $prev.$line; + $length = strlen($line); + if ($length % 4) { + $length = floor($length / 4) * 4; + $prev = substr($line, $length); + $line = substr($line, 0, $length); + } + else + $prev = ''; + $line = base64_decode($line); // QUOTED-PRINTABLE - } else if ($mode == 2) { - $line = rtrim($line, "\t\r\0\x0B"); + } else if ($mode == 2) { + $line = rtrim($line, "\t\r\0\x0B"); $line = quoted_printable_decode($line); // Remove NULL characters (#1486189) $line = str_replace("\x00", '', $line); // UUENCODE - } else if ($mode == 3) { - $line = rtrim($line, "\t\r\n\0\x0B"); - if ($line == 'end' || preg_match('/^begin\s+[0-7]+\s+.+$/', $line)) - continue; + } else if ($mode == 3) { + $line = rtrim($line, "\t\r\n\0\x0B"); + if ($line == 'end' || preg_match('/^begin\s+[0-7]+\s+.+$/', $line)) + continue; $line = convert_uudecode($line); // default - } else { - $line = rtrim($line, "\t\r\n\0\x0B") . "\n"; - } - - if ($file) - fwrite($file, $line); - else if ($print) - echo $line; - else - $result .= $line; - } - } + } else { + $line = rtrim($line, "\t\r\n\0\x0B") . "\n"; + } - // read in anything up until last line - if (!$end) - do { - $line = $this->readLine(1024); - } while (!$this->startsWith($line, $key, true)); + if ($file) + fwrite($file, $line); + else if ($print) + echo $line; + else + $result .= $line; + } + } - if ($result !== false) { - if ($file) { - fwrite($file, $result); - } else if ($print) { - echo $result; - } else - return $result; - return true; - } + // read in anything up until last line + if (!$end) + do { + $line = $this->readLine(1024); + } while (!$this->startsWith($line, $key, true)); + + if ($result !== false) { + if ($file) { + fwrite($file, $result); + } else if ($print) { + echo $result; + } else + return $result; + return true; + } - return false; + return false; } function createFolder($mailbox) { $result = $this->execute('CREATE', array($this->escape($mailbox)), - self::COMMAND_NORESPONSE); + self::COMMAND_NORESPONSE); - return ($result == self::ERROR_OK); + return ($result == self::ERROR_OK); } function renameFolder($from, $to) { $result = $this->execute('RENAME', array($this->escape($from), $this->escape($to)), - self::COMMAND_NORESPONSE); - - return ($result == self::ERROR_OK); - } - - function deleteFolder($mailbox) - { - $result = $this->execute('DELETE', array($this->escape($mailbox)), - self::COMMAND_NORESPONSE); - - return ($result == self::ERROR_OK); - } - - function clearFolder($mailbox) - { - $num_in_trash = $this->countMessages($mailbox); - if ($num_in_trash > 0) { - $this->delete($mailbox, '1:*'); - } - return ($this->expunge($mailbox) >= 0); - } - - function subscribe($mailbox) - { - $result = $this->execute('SUBSCRIBE', array($this->escape($mailbox)), - self::COMMAND_NORESPONSE); - - return ($result == self::ERROR_OK); - } - - function unsubscribe($mailbox) - { - $result = $this->execute('UNSUBSCRIBE', array($this->escape($mailbox)), - self::COMMAND_NORESPONSE); + self::COMMAND_NORESPONSE); - return ($result == self::ERROR_OK); + return ($result == self::ERROR_OK); } function append($mailbox, &$message) { - if (!$mailbox) { - return false; - } + if (!$mailbox) { + return false; + } - $message = str_replace("\r", '', $message); - $message = str_replace("\n", "\r\n", $message); + $message = str_replace("\r", '', $message); + $message = str_replace("\n", "\r\n", $message); - $len = strlen($message); - if (!$len) { - return false; - } + $len = strlen($message); + if (!$len) { + return false; + } $key = $this->nextTag(); - $request = sprintf("$key APPEND %s (\\Seen) {%d%s}", $this->escape($mailbox), + $request = sprintf("$key APPEND %s (\\Seen) {%d%s}", $this->escape($mailbox), $len, ($this->prefs['literal+'] ? '+' : '')); - if ($this->putLine($request)) { + if ($this->putLine($request)) { // Don't wait when LITERAL+ is supported if (!$this->prefs['literal+']) { - $line = $this->readLine(512); + $line = $this->readReply(); - if ($line[0] != '+') { - $this->parseResult($line, 'APPEND: '); - return false; - } + if ($line[0] != '+') { + $this->parseResult($line, 'APPEND: '); + return false; + } } - if (!$this->putLine($message)) { + if (!$this->putLine($message)) { return false; } - do { - $line = $this->readLine(); - } while (!$this->startsWith($line, $key, true, true)); + do { + $line = $this->readLine(); + } while (!$this->startsWith($line, $key, true, true)); // Clear internal status cache unset($this->data['STATUS:'.$mailbox]); - return ($this->parseResult($line, 'APPEND: ') == self::ERROR_OK); - } + return ($this->parseResult($line, 'APPEND: ') == self::ERROR_OK); + } else { $this->setError(self::ERROR_COMMAND, "Unable to send command: $request"); } - return false; + return false; } function appendFromFile($mailbox, $path, $headers=null) { - if (!$mailbox) { - return false; - } + if (!$mailbox) { + return false; + } - // open message file - $in_fp = false; - if (file_exists(realpath($path))) { - $in_fp = fopen($path, 'r'); - } - if (!$in_fp) { - $this->setError(self::ERROR_UNKNOWN, "Couldn't open $path for reading"); - return false; - } + // open message file + $in_fp = false; + if (file_exists(realpath($path))) { + $in_fp = fopen($path, 'r'); + } + if (!$in_fp) { + $this->setError(self::ERROR_UNKNOWN, "Couldn't open $path for reading"); + return false; + } $body_separator = "\r\n\r\n"; - $len = filesize($path); + $len = filesize($path); - if (!$len) { - return false; - } + if (!$len) { + return false; + } if ($headers) { $headers = preg_replace('/[\r\n]+$/', '', $headers); $len += strlen($headers) + strlen($body_separator); } - // send APPEND command - $key = $this->nextTag(); - $request = sprintf("$key APPEND %s (\\Seen) {%d%s}", $this->escape($mailbox), + // send APPEND command + $key = $this->nextTag(); + $request = sprintf("$key APPEND %s (\\Seen) {%d%s}", $this->escape($mailbox), $len, ($this->prefs['literal+'] ? '+' : '')); - if ($this->putLine($request)) { + if ($this->putLine($request)) { // Don't wait when LITERAL+ is supported if (!$this->prefs['literal+']) { - $line = $this->readLine(512); + $line = $this->readReply(); - if ($line[0] != '+') { - $this->parseResult($line, 'APPEND: '); - return false; - } + if ($line[0] != '+') { + $this->parseResult($line, 'APPEND: '); + return false; + } } // send headers with body separator if ($headers) { - $this->putLine($headers . $body_separator, false); + $this->putLine($headers . $body_separator, false); } - // send file - while (!feof($in_fp) && $this->fp) { - $buffer = fgets($in_fp, 4096); - $this->putLine($buffer, false); - } - fclose($in_fp); + // send file + while (!feof($in_fp) && $this->fp) { + $buffer = fgets($in_fp, 4096); + $this->putLine($buffer, false); + } + fclose($in_fp); - if (!$this->putLine('')) { // \r\n + if (!$this->putLine('')) { // \r\n return false; } - // read response - do { - $line = $this->readLine(); - } while (!$this->startsWith($line, $key, true, true)); + // read response + do { + $line = $this->readLine(); + } while (!$this->startsWith($line, $key, true, true)); // Clear internal status cache unset($this->data['STATUS:'.$mailbox]); - return ($this->parseResult($line, 'APPEND: ') == self::ERROR_OK); - } + return ($this->parseResult($line, 'APPEND: ') == self::ERROR_OK); + } else { $this->setError(self::ERROR_COMMAND, "Unable to send command: $request"); } - return false; + return false; } function fetchStructureString($mailbox, $id, $is_uid=false) { - if (!$this->select($mailbox)) { + if (!$this->select($mailbox)) { return false; } - $key = $this->nextTag(); - $result = false; + $key = $this->nextTag(); + $result = false; $command = $key . ($is_uid ? ' UID' : '') ." FETCH $id (BODYSTRUCTURE)"; - if ($this->putLine($command)) { - do { - $line = $this->readLine(5000); - $line = $this->multLine($line, true); - if (!preg_match("/^$key /", $line)) - $result .= $line; - } while (!$this->startsWith($line, $key, true, true)); + if ($this->putLine($command)) { + do { + $line = $this->readLine(5000); + $line = $this->multLine($line, true); + if (!preg_match("/^$key /", $line)) + $result .= $line; + } while (!$this->startsWith($line, $key, true, true)); - $result = trim(substr($result, strpos($result, 'BODYSTRUCTURE')+13, -1)); - } + $result = trim(substr($result, strpos($result, 'BODYSTRUCTURE')+13, -1)); + } else { $this->setError(self::ERROR_COMMAND, "Unable to send command: $command"); } - return $result; + return $result; } function getQuota() @@ -2347,49 +2489,50 @@ class rcube_imap_generic * QUOTA user/rchijiiwa1 (STORAGE 654 9765) * OK Completed */ - $result = false; - $quota_lines = array(); - $key = $this->nextTag(); + $result = false; + $quota_lines = array(); + $key = $this->nextTag(); $command = $key . ' GETQUOTAROOT INBOX'; - // get line(s) containing quota info - if ($this->putLine($command)) { - do { - $line = rtrim($this->readLine(5000)); - if (preg_match('/^\* QUOTA /', $line)) { - $quota_lines[] = $line; - } - } while (!$this->startsWith($line, $key, true, true)); - } + // get line(s) containing quota info + if ($this->putLine($command)) { + do { + $line = rtrim($this->readLine(5000)); + if (preg_match('/^\* QUOTA /', $line)) { + $quota_lines[] = $line; + } + } while (!$this->startsWith($line, $key, true, true)); + } else { $this->setError(self::ERROR_COMMAND, "Unable to send command: $command"); } - // return false if not found, parse if found - $min_free = PHP_INT_MAX; - foreach ($quota_lines as $key => $quota_line) { - $quota_line = str_replace(array('(', ')'), '', $quota_line); - $parts = explode(' ', $quota_line); - $storage_part = array_search('STORAGE', $parts); + // return false if not found, parse if found + $min_free = PHP_INT_MAX; + foreach ($quota_lines as $key => $quota_line) { + $quota_line = str_replace(array('(', ')'), '', $quota_line); + $parts = explode(' ', $quota_line); + $storage_part = array_search('STORAGE', $parts); - if (!$storage_part) + if (!$storage_part) { continue; + } - $used = intval($parts[$storage_part+1]); - $total = intval($parts[$storage_part+2]); - $free = $total - $used; - - // return lowest available space from all quotas - if ($free < $min_free) { - $min_free = $free; - $result['used'] = $used; - $result['total'] = $total; - $result['percent'] = min(100, round(($used/max(1,$total))*100)); - $result['free'] = 100 - $result['percent']; - } - } + $used = intval($parts[$storage_part+1]); + $total = intval($parts[$storage_part+2]); + $free = $total - $used; + + // return lowest available space from all quotas + if ($free < $min_free) { + $min_free = $free; + $result['used'] = $used; + $result['total'] = $total; + $result['percent'] = min(100, round(($used/max(1,$total))*100)); + $result['free'] = 100 - $result['percent']; + } + } - return $result; + return $result; } /** @@ -2414,7 +2557,7 @@ class rcube_imap_generic $this->escape($mailbox), $this->escape($user), strtolower($acl)), self::COMMAND_NORESPONSE); - return ($result == self::ERROR_OK); + return ($result == self::ERROR_OK); } /** @@ -2434,7 +2577,7 @@ class rcube_imap_generic $this->escape($mailbox), $this->escape($user)), self::COMMAND_NORESPONSE); - return ($result == self::ERROR_OK); + return ($result == self::ERROR_OK); } /** @@ -2554,11 +2697,12 @@ class rcube_imap_generic } foreach ($entries as $name => $value) { - if ($value === null) + if ($value === null) { $value = 'NIL'; - else + } + else { $value = sprintf("{%d}\r\n%s", strlen($value), $value); - + } $entries[$name] = $this->escape($name) . ' ' . $value; } @@ -2583,16 +2727,18 @@ class rcube_imap_generic */ function deleteMetadata($mailbox, $entries) { - if (!is_array($entries) && !empty($entries)) + if (!is_array($entries) && !empty($entries)) { $entries = explode(' ', $entries); + } if (empty($entries)) { $this->setError(self::ERROR_COMMAND, "Wrong argument for SETMETADATA command"); return false; } - foreach ($entries as $entry) + foreach ($entries as $entry) { $data[$entry] = NULL; + } return $this->setMetadata($mailbox, $data); } @@ -2628,13 +2774,16 @@ class rcube_imap_generic $options = array_change_key_case($options, CASE_UPPER); $opts = array(); - if (!empty($options['MAXSIZE'])) + if (!empty($options['MAXSIZE'])) { $opts[] = 'MAXSIZE '.intval($options['MAXSIZE']); - if (!empty($options['DEPTH'])) + } + if (!empty($options['DEPTH'])) { $opts[] = 'DEPTH '.intval($options['DEPTH']); + } - if ($opts) + if ($opts) { $optlist = '(' . implode(' ', $opts) . ')'; + } } $optlist .= ($optlist ? ' ' : '') . $entlist; @@ -2701,10 +2850,12 @@ class rcube_imap_generic $attr = $entry[1]; $value = $entry[2]; - if ($value === null) + if ($value === null) { $value = 'NIL'; - else + } + else { $value = sprintf("{%d}\r\n%s", strlen($value), $value); + } $entries[] = sprintf('%s (%s %s)', $this->escape($name), $this->escape($attr), $value); @@ -2796,10 +2947,12 @@ class rcube_imap_generic for ($x=0, $len=count($attribs); $x<$len;) { $attr = $attribs[$x++]; $value = $attribs[$x++]; - if ($attr == 'value.priv') + if ($attr == 'value.priv') { $res['/private' . $entry] = $value; - else if ($attr == 'value.shared') + } + else if ($attr == 'value.shared') { $res['/shared' . $entry] = $value; + } } } $last_entry = $entry; @@ -2847,43 +3000,45 @@ class rcube_imap_generic $noresp = ($options & self::COMMAND_NORESPONSE); $response = $noresp ? null : ''; - if (!empty($arguments)) + if (!empty($arguments)) { $query .= ' ' . implode(' ', $arguments); + } // Send command - if (!$this->putLineC($query)) { + if (!$this->putLineC($query)) { $this->setError(self::ERROR_COMMAND, "Unable to send command: $query"); - return $noresp ? self::ERROR_COMMAND : array(self::ERROR_COMMAND, ''); - } + return $noresp ? self::ERROR_COMMAND : array(self::ERROR_COMMAND, ''); + } // Parse response - do { - $line = $this->readLine(4096); - if ($response !== null) - $response .= $line; - } while (!$this->startsWith($line, $tag . ' ', true, true)); + do { + $line = $this->readLine(4096); + if ($response !== null) { + $response .= $line; + } + } while (!$this->startsWith($line, $tag . ' ', true, true)); - $code = $this->parseResult($line, $command . ': '); + $code = $this->parseResult($line, $command . ': '); // Remove last line from response - if ($response) { - $line_len = min(strlen($response), strlen($line) + 2); + if ($response) { + $line_len = min(strlen($response), strlen($line) + 2); $response = substr($response, 0, -$line_len); } - // optional CAPABILITY response - if (($options & self::COMMAND_CAPABILITY) && $code == self::ERROR_OK + // optional CAPABILITY response + if (($options & self::COMMAND_CAPABILITY) && $code == self::ERROR_OK && preg_match('/\[CAPABILITY ([^]]+)\]/i', $line, $matches) ) { - $this->parseCapability($matches[1], true); - } + $this->parseCapability($matches[1], true); + } - // return last line only (without command tag and result) + // return last line only (without command tag, result and response code) if ($line && ($options & self::COMMAND_LASTLINE)) { - $response = preg_replace("/^$tag (OK|NO|BAD|BYE|PREAUTH)?\s*/i", '', trim($line)); + $response = preg_replace("/^$tag (OK|NO|BAD|BYE|PREAUTH)?\s*(\[[a-z-]+\])?\s*/i", '', trim($line)); } - return $noresp ? $code : array($code, $response); + return $noresp ? $code : array($code, $response); } /** @@ -2917,7 +3072,7 @@ class rcube_imap_generic $result[] = substr($str, $epos + 3, $bytes); // Advance the string $str = substr($str, $epos + 3 + $bytes); - break; + break; // Quoted string case '"': @@ -2939,17 +3094,17 @@ class rcube_imap_generic // we need to strip slashes for a quoted string $result[] = stripslashes(substr($str, 1, $pos - 1)); $str = substr($str, $pos + 1); - break; + break; // Parenthesized list case '(': $str = substr($str, 1); $result[] = self::tokenizeResponse($str); - break; + break; case ')': $str = substr($str, 1); return $result; - break; + break; // String atom, number, NIL, *, % default: @@ -2968,7 +3123,7 @@ class rcube_imap_generic $result[] = $m[1] == 'NIL' ? NULL : $m[1]; $str = substr($str, strlen($m[1])); } - break; + break; } } @@ -2977,12 +3132,14 @@ class rcube_imap_generic private function _xor($string, $string2) { - $result = ''; - $size = strlen($string); - for ($i=0; $i<$size; $i++) { - $result .= chr(ord($string[$i]) ^ ord($string2[$i])); - } - return $result; + $result = ''; + $size = strlen($string); + + for ($i=0; $i<$size; $i++) { + $result .= chr(ord($string[$i]) ^ ord($string2[$i])); + } + + return $result; } /** @@ -2994,31 +3151,33 @@ class rcube_imap_generic */ private function strToTime($date) { - // support non-standard "GMTXXXX" literal - $date = preg_replace('/GMT\s*([+-][0-9]+)/', '\\1', $date); + // support non-standard "GMTXXXX" literal + $date = preg_replace('/GMT\s*([+-][0-9]+)/', '\\1', $date); // if date parsing fails, we have a date in non-rfc format. - // remove token from the end and try again - while ((($ts = @strtotime($date))===false) || ($ts < 0)) { - $d = explode(' ', $date); - array_pop($d); - if (!$d) break; - $date = implode(' ', $d); - } + // remove token from the end and try again + while ((($ts = @strtotime($date))===false) || ($ts < 0)) { + $d = explode(' ', $date); + array_pop($d); + if (!$d) { + break; + } + $date = implode(' ', $d); + } - $ts = (int) $ts; + $ts = (int) $ts; - return $ts < 0 ? 0 : $ts; + return $ts < 0 ? 0 : $ts; } private function splitHeaderLine($string) { - $pos = strpos($string, ':'); - if ($pos>0) { - $res[0] = substr($string, 0, $pos); - $res[1] = trim(substr($string, $pos+1)); - return $res; - } - return $string; + $pos = strpos($string, ':'); + if ($pos>0) { + $res[0] = substr($string, 0, $pos); + $res[1] = trim(substr($string, $pos+1)); + return $res; + } + return $string; } private function parseCapability($str, $trusted=false) @@ -3046,17 +3205,15 @@ class rcube_imap_generic */ static function escape($string) { - // NIL if ($string === null) { return 'NIL'; } - // empty string else if ($string === '') { return '""'; } - // string: special chars: SP, CTL, (, ), {, %, *, ", \, ] else if (preg_match('/([\x00-\x20\x28-\x29\x7B\x25\x2A\x22\x5C\x5D\x7F]+)/', $string)) { - return '"' . strtr($string, array('"'=>'\\"', '\\' => '\\\\')) . '"'; + // string: special chars: SP, CTL, (, ), {, %, *, ", \, ] + return '"' . strtr($string, array('"'=>'\\"', '\\' => '\\\\')) . '"'; } // atom @@ -3065,7 +3222,7 @@ class rcube_imap_generic static function unEscape($string) { - return strtr($string, array('\\"'=>'"', '\\\\' => '\\')); + return strtr($string, array('\\"'=>'"', '\\\\' => '\\')); } } diff --git a/program/include/rcube_message.php b/program/include/rcube_message.php index 790f8d9bd..b6c865d1c 100644 --- a/program/include/rcube_message.php +++ b/program/include/rcube_message.php @@ -426,7 +426,7 @@ class rcube_message $mail_part->type = 'content'; $this->parts[] = $mail_part; } - + // list as attachment as well if (!empty($mail_part->filename)) $this->attachments[] = $mail_part; @@ -473,6 +473,10 @@ class rcube_message // attachment encapsulated within message/rfc822 part needs further decoding (#1486743) else if ($part_orig_mimetype == 'message/rfc822') { $this->parse_structure($mail_part, true); + + // list as attachment as well (mostly .eml) + if (!empty($mail_part->filename)) + $this->attachments[] = $mail_part; } // is a regular attachment (content-type name regexp according to RFC4288.4.2) else if (preg_match('/^[a-z0-9!#$&.+^_-]+\/[a-z0-9!#$&.+^_-]+$/i', $part_mimetype)) { diff --git a/program/include/rcube_template.php b/program/include/rcube_template.php index 8a9eff4f5..d6ea3dce2 100755 --- a/program/include/rcube_template.php +++ b/program/include/rcube_template.php @@ -1045,7 +1045,7 @@ class rcube_template extends rcube_html_page private function login_form($attrib) { $default_host = $this->config['default_host']; - $attrib['autocomplete'] = $this->config['login_autocomplete'] ? null : 'off'; + $autocomplete = (int) $this->config['login_autocomplete']; $_SESSION['temp'] = true; @@ -1054,11 +1054,18 @@ class rcube_template extends rcube_html_page if (empty($url) && !preg_match('/_(task|action)=logout/', $_SERVER['QUERY_STRING'])) $url = $_SERVER['QUERY_STRING']; - $input_user = new html_inputfield(array('name' => '_user', 'id' => 'rcmloginuser') + $attrib); - $input_pass = new html_passwordfield(array('name' => '_pass', 'id' => 'rcmloginpwd') + $attrib); + // set atocomplete attribute + $user_attrib = $autocomplete > 0 ? array() : array('autocomplete' => 'off'); + $host_attrib = $autocomplete > 0 ? array() : array('autocomplete' => 'off'); + $pass_attrib = $autocomplete > 1 ? array() : array('autocomplete' => 'off'); + $input_action = new html_hiddenfield(array('name' => '_action', 'value' => 'login')); $input_tzone = new html_hiddenfield(array('name' => '_timezone', 'id' => 'rcmlogintz', 'value' => '_default_')); $input_url = new html_hiddenfield(array('name' => '_url', 'id' => 'rcmloginurl', 'value' => $url)); + $input_user = new html_inputfield(array('name' => '_user', 'id' => 'rcmloginuser') + + $attrib + $user_attrib); + $input_pass = new html_passwordfield(array('name' => '_pass', 'id' => 'rcmloginpwd') + + $attrib + $pass_attrib); $input_host = null; if (is_array($default_host) && count($default_host) > 1) { @@ -1080,7 +1087,8 @@ class rcube_template extends rcube_html_page 'name' => '_host', 'id' => 'rcmloginhost', 'value' => $host) + $attrib); } else if (empty($default_host)) { - $input_host = new html_inputfield(array('name' => '_host', 'id' => 'rcmloginhost') + $attrib); + $input_host = new html_inputfield(array('name' => '_host', 'id' => 'rcmloginhost') + + $attrib + $host_attrib); } $form_name = !empty($attrib['form']) ? $attrib['form'] : 'form'; @@ -1090,7 +1098,7 @@ class rcube_template extends rcube_html_page $table = new html_table(array('cols' => 2)); $table->add('title', html::label('rcmloginuser', Q(rcube_label('username')))); - $table->add(null, $input_user->show(get_input_value('_user', RCUBE_INPUT_POST))); + $table->add(null, $input_user->show(get_input_value('_user', RCUBE_INPUT_GPC))); $table->add('title', html::label('rcmloginpwd', Q(rcube_label('password')))); $table->add(null, $input_pass->show()); @@ -1098,7 +1106,7 @@ class rcube_template extends rcube_html_page // add host selection row if (is_object($input_host) && !$hide_host) { $table->add('title', html::label('rcmloginhost', Q(rcube_label('server')))); - $table->add(null, $input_host->show(get_input_value('_host', RCUBE_INPUT_POST))); + $table->add(null, $input_host->show(get_input_value('_host', RCUBE_INPUT_GPC))); } $out = $input_action->show(); diff --git a/program/include/rcube_user.php b/program/include/rcube_user.php index e4506cff7..ee6db77cc 100644 --- a/program/include/rcube_user.php +++ b/program/include/rcube_user.php @@ -358,13 +358,17 @@ class rcube_user { $dbh = rcmail::get_instance()->get_dbh(); + // use BINARY (case-sensitive) comparison on MySQL, other engines are case-sensitive + $prefix = preg_match('/^mysql/', $dbh->db_provider) ? 'BINARY ' : ''; + // query for matching user name $query = "SELECT * FROM ".get_table_name('users')." WHERE mail_host = ? AND %s = ?"; - $sql_result = $dbh->query(sprintf($query, 'username'), $host, $user); + + $sql_result = $dbh->query(sprintf($query, $prefix.'username'), $host, $user); // query for matching alias if (!($sql_arr = $dbh->fetch_assoc($sql_result))) { - $sql_result = $dbh->query(sprintf($query, 'alias'), $host, $user); + $sql_result = $dbh->query(sprintf($query, $prefix.'alias'), $host, $user); $sql_arr = $dbh->fetch_assoc($sql_result); } diff --git a/program/js/app.js b/program/js/app.js index 7ab31cb46..90c18b6e6 100644 --- a/program/js/app.js +++ b/program/js/app.js @@ -148,7 +148,7 @@ function rcube_webmail() this.init_buttons(); // tell parent window that this frame is loaded - if (this.env.framed && parent.rcmail && parent.rcmail.set_busy) { + if (this.is_framed()) { parent.rcmail.set_busy(false, null, parent.rcmail.env.frame_lock); parent.rcmail.env.frame_lock = null; } @@ -222,7 +222,7 @@ function rcube_webmail() } // make preview/message frame visible - if (this.env.action == 'preview' && this.env.framed && parent.rcmail) { + if (this.env.action == 'preview' && this.is_framed()) { this.enable_command('compose', 'add-contact', false); parent.rcmail.show_contentframe(true); } @@ -343,8 +343,15 @@ function rcube_webmail() this.enable_command('add', this.env.identities_level < 2); this.enable_command('save', 'delete', 'edit', 'toggle-editor', true); } - else if (this.env.action=='folders') - this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'rename-folder', 'delete-folder', 'enable-threading', 'disable-threading', true); + else if (this.env.action=='folders') { + this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'rename-folder', true); + } + else if (this.env.action == 'edit-folder' && this.gui_objects.editform) { + this.enable_command('save', 'folder-size', true); + parent.rcmail.env.messagecount = this.env.messagecount; + parent.rcmail.enable_command('purge', this.env.messagecount); + $("input[type='text']").first().select(); + } if (this.gui_objects.identitieslist) { this.identity_list = new rcube_list_widget(this.gui_objects.identitieslist, {multiselect:false, draggable:false, keyboard:false}); @@ -435,7 +442,7 @@ function rcube_webmail() // command not supported or allowed if (!this.commands[command]) { // pass command to parent window - if (this.env.framed && parent.rcmail && parent.rcmail.command) + if (this.is_framed()) parent.rcmail.command(command, props); return false; @@ -1120,12 +1127,12 @@ function rcube_webmail() this.reload = function(delay) { - if (this.env.framed && parent.rcmail) + if (this.is_framed()) parent.rcmail.reload(delay); else if (delay) window.setTimeout(function(){ rcmail.reload(); }, delay); else if (window.location) - location.href = this.env.comm_path; + location.href = this.env.comm_path + (this.env.action ? '&_action='+this.env.action : ''); }; // Add variable to GET string, replace old value if exists @@ -1149,6 +1156,12 @@ function rcube_webmail() return url + '?' + name + '=' + value; }; + this.is_framed = function() + { + return (this.env.framed && parent.rcmail); + }; + + /*********************************************************/ /********* event handling methods *********/ /*********************************************************/ @@ -1528,7 +1541,7 @@ function rcube_webmail() if (this.task == 'mail') allow = (this.env.mailboxes[id] && this.env.mailboxes[id].id != this.env.mailbox && !this.env.mailboxes[id].virtual); else if (this.task == 'settings') - allow = (id != this.env.folder); + allow = (id != this.env.mailbox); else if (this.task == 'addressbook') { if (id != this.env.source && this.env.contactfolders[id]) { if (this.env.contactfolders[id].type == 'group') { @@ -1823,7 +1836,7 @@ function rcube_webmail() this.show_contentframe(true); else { if (!this.env.frame_lock) { - (parent.rcmail ? parent.rcmail : this).env.frame_lock = this.set_busy(true, 'loading'); + (this.is_framed() ? parent.rcmail : this).env.frame_lock = this.set_busy(true, 'loading'); } target.location.href = this.env.comm_path+url; @@ -2373,8 +2386,10 @@ function rcube_webmail() } } + add_url += '&_uid='+this.uids_to_list(a_uids); + // send request to server - this.http_post('copy', '_uid='+a_uids.join(',')+'&_mbox='+urlencode(this.env.mailbox)+add_url, lock); + this.http_post('copy', '_mbox='+urlencode(this.env.mailbox)+add_url, lock); }; // move selected messages to the specified mailbox @@ -2387,8 +2402,8 @@ function rcube_webmail() if (!mbox || mbox == this.env.mailbox || (!this.env.uid && (!this.message_list || !this.message_list.get_selection().length))) return; - var lock = false; - var add_url = '&_target_mbox='+urlencode(mbox)+'&_from='+(this.env.action ? this.env.action : ''); + var lock = false, + add_url = '&_target_mbox='+urlencode(mbox)+'&_from='+(this.env.action ? this.env.action : ''); // show wait message if (this.env.action == 'show') { @@ -2729,24 +2744,23 @@ function rcube_webmail() this.expunge_mailbox = function(mbox) { - var lock = false; - var add_url = ''; + var lock = false, + url = '_mbox='+urlencode(mbox); // lock interface if it's the active mailbox if (mbox == this.env.mailbox) { lock = this.set_busy(true, 'loading'); - add_url = '&_reload=1'; + url += '&_reload=1'; } // send request to server - var url = '_mbox='+urlencode(mbox); - this.http_post('expunge', url+add_url, lock); + this.http_post('expunge', url, lock); }; this.purge_mailbox = function(mbox) { - var lock = false; - var add_url = ''; + var lock = false, + url = '_mbox='+urlencode(mbox); if (!confirm(this.get_label('purgefolderconfirm'))) return false; @@ -2754,13 +2768,11 @@ function rcube_webmail() // lock interface if it's the active mailbox if (mbox == this.env.mailbox) { lock = this.set_busy(true, 'loading'); - add_url = '&_reload=1'; + url += '&_reload=1'; } // send request to server - var url = '_mbox='+urlencode(mbox); - this.http_post('purge', url+add_url, lock); - return true; + this.http_post('purge', url, lock); }; // test if purge command is allowed @@ -2807,7 +2819,7 @@ function rcube_webmail() input_subject = $("input[name='_subject']"), input_message = $("[name='_message']").get(0), html_mode = $("input[name='_is_html']").val() == '1', - ac_fields = ['cc', 'bcc', 'replyto', 'mailreplyto', 'mailfollowupto']; + ac_fields = ['cc', 'bcc', 'replyto', 'followupto']; // init live search events this.init_address_input_events(input_to); @@ -3974,16 +3986,12 @@ function rcube_webmail() this.init_subscription_list = function() { var p = this; - this.subscription_list = new rcube_list_widget(this.gui_objects.subscriptionlist, {multiselect:false, draggable:true, keyboard:false, toggleselect:true}); + this.subscription_list = new rcube_list_widget(this.gui_objects.subscriptionlist, + {multiselect:false, draggable:true, keyboard:false, toggleselect:true}); this.subscription_list.addEventListener('select', function(o){ p.subscription_select(o); }); this.subscription_list.addEventListener('dragstart', function(o){ p.drag_active = true; }); this.subscription_list.addEventListener('dragend', function(o){ p.subscription_move_folder(o); }); this.subscription_list.row_init = function (row) { - var anchors = row.obj.getElementsByTagName('a'); - if (anchors[0]) - anchors[0].onclick = function() { p.command('rename-folder', row.id); return false; }; - if (anchors[1]) - anchors[1].onclick = function() { p.command('delete-folder', row.id); return false; }; row.obj.onmouseover = function() { p.focus_subscription(row.id); }; row.obj.onmouseout = function() { p.unfocus_subscription(row.id); }; }; @@ -4060,18 +4068,18 @@ function rcube_webmail() delim = RegExp.escape(this.env.delimiter), reg = RegExp('['+delim+']?[^'+delim+']+$'); - if (this.drag_active && this.env.folder && (row = document.getElementById(id))) + if (this.drag_active && this.env.mailbox && (row = document.getElementById(id))) if (this.env.subscriptionrows[id] && (folder = this.env.subscriptionrows[id][0])) { if (this.check_droptarget(folder) && - !this.env.subscriptionrows[this.get_folder_row_id(this.env.folder)][2] && - (folder != this.env.folder.replace(reg, '')) && - (!folder.match(new RegExp('^'+RegExp.escape(this.env.folder+this.env.delimiter))))) { + !this.env.subscriptionrows[this.get_folder_row_id(this.env.mailbox)][2] && + (folder != this.env.mailbox.replace(reg, '')) && + (!folder.match(new RegExp('^'+RegExp.escape(this.env.mailbox+this.env.delimiter))))) { this.set_env('dstfolder', folder); $(row).addClass('droptarget'); } } - else if (this.env.folder.match(new RegExp(delim))) { + else if (this.env.mailbox.match(new RegExp(delim))) { this.set_env('dstfolder', this.env.delimiter); $(this.subscription_list.frame).addClass('droptarget'); } @@ -4091,15 +4099,19 @@ function rcube_webmail() this.subscription_select = function(list) { var id, folder; - if ((id = list.get_single_selection()) && - this.env.subscriptionrows['rcmrow'+id] && - (folder = this.env.subscriptionrows['rcmrow'+id][0])) - this.set_env('folder', folder); - else - this.set_env('folder', null); - if (this.gui_objects.createfolderhint) - $(this.gui_objects.createfolderhint).html(this.env.folder ? this.get_label('addsubfolderhint') : ''); + if (list && (id = list.get_single_selection()) && + (folder = this.env.subscriptionrows['rcmrow'+id]) + ) { + this.set_env('mailbox', folder[0]); + this.show_folder(folder[0]); + this.enable_command('delete-folder', !folder[2]); + } + else { + this.env.mailbox = null; + this.show_contentframe(false); + this.enable_command('delete-folder', 'purge', false); + } }; this.subscription_move_folder = function(list) @@ -4107,129 +4119,35 @@ function rcube_webmail() var delim = RegExp.escape(this.env.delimiter), reg = RegExp('['+delim+']?[^'+delim+']+$'); - if (this.env.folder && this.env.dstfolder && (this.env.dstfolder != this.env.folder) && - (this.env.dstfolder != this.env.folder.replace(reg, ''))) { - var reg = new RegExp('[^'+delim+']*['+delim+']', 'g'); - var basename = this.env.folder.replace(reg, ''); - var newname = this.env.dstfolder==this.env.delimiter ? basename : this.env.dstfolder+this.env.delimiter+basename; + if (this.env.mailbox && this.env.dstfolder && (this.env.dstfolder != this.env.mailbox) && + (this.env.dstfolder != this.env.mailbox.replace(reg, '')) + ) { + reg = new RegExp('[^'+delim+']*['+delim+']', 'g'); + var lock = this.set_busy(true, 'foldermoving'), + basename = this.env.mailbox.replace(reg, ''), + newname = this.env.dstfolder==this.env.delimiter ? basename : this.env.dstfolder+this.env.delimiter+basename; - var lock = this.set_busy(true, 'foldermoving'); - this.http_post('rename-folder', '_folder_oldname='+urlencode(this.env.folder)+'&_folder_newname='+urlencode(newname), lock); + this.http_post('rename-folder', '_folder_oldname='+urlencode(this.env.mailbox)+'&_folder_newname='+urlencode(newname), lock); } this.drag_active = false; this.unfocus_subscription(this.get_folder_row_id(this.env.dstfolder)); }; // tell server to create and subscribe a new mailbox - this.create_folder = function(name) - { - if (this.edit_folder) - this.reset_folder_rename(); - - var form; - if ((form = this.gui_objects.editform) && form.elements['_folder_name']) { - name = form.elements['_folder_name'].value; - - if (name.indexOf(this.env.delimiter)>=0) { - alert(this.get_label('forbiddencharacter')+' ('+this.env.delimiter+')'); - return false; - } - - if (this.env.folder && name != '') - name = this.env.folder+this.env.delimiter+name; - - var lock = this.set_busy(true, 'foldercreating'); - this.http_post('create-folder', '_name='+urlencode(name), lock); - } - else if (form.elements['_folder_name']) - form.elements['_folder_name'].focus(); - }; - - // start renaming the mailbox name. - // this will replace the name string with an input field - this.rename_folder = function(id) - { - var temp, row, form; - - // reset current renaming - if (temp = this.edit_folder) { - this.reset_folder_rename(); - if (temp == id) - return; - } - - if (id && this.env.subscriptionrows[id] && (row = document.getElementById(id))) { - var delim = RegExp.escape(this.env.delimiter), - reg = new RegExp('.*['+delim+']'); - - this.name_input = document.createElement('input'); - this.name_input.type = 'text'; - this.name_input.value = this.env.subscriptionrows[id][0].replace(reg, ''); - - reg = new RegExp('['+delim+']?[^'+delim+']+$'); - this.name_input.__parent = this.env.subscriptionrows[id][0].replace(reg, ''); - this.name_input.onkeydown = function(e){ rcmail.name_input_keydown(e); }; - - row.cells[0].replaceChild(this.name_input, row.cells[0].firstChild); - this.edit_folder = id; - this.name_input.select(); - - if (form = this.gui_objects.editform) - form.onsubmit = function(){ return false; }; - } - }; - - // remove the input field and write the current mailbox name to the table cell - this.reset_folder_rename = function() + this.create_folder = function() { - var cell = this.name_input ? this.name_input.parentNode : null; - - if (cell && this.edit_folder && this.env.subscriptionrows[this.edit_folder]) - $(cell).html(this.env.subscriptionrows[this.edit_folder][1]); - - this.edit_folder = null; - }; - - // handler for keyboard events on the input field - this.name_input_keydown = function(e) - { - var key = rcube_event.get_keycode(e); - - // enter - if (key==13) { - var newname = this.name_input ? this.name_input.value : null; - if (this.edit_folder && newname) { - if (newname.indexOf(this.env.delimiter)>=0) { - alert(this.get_label('forbiddencharacter')+' ('+this.env.delimiter+')'); - return false; - } - - if (this.name_input.__parent) - newname = this.name_input.__parent + this.env.delimiter + newname; - - var lock = this.set_busy(true, 'folderrenaming'); - this.http_post('rename-folder', '_folder_oldname='+urlencode(this.env.subscriptionrows[this.edit_folder][0])+'&_folder_newname='+urlencode(newname), lock); - } - } - // escape - else if (key==27) - this.reset_folder_rename(); + this.show_folder('', this.env.mailbox); }; // delete a specific mailbox with all its messages - this.delete_folder = function(id) + this.delete_folder = function(name) { - var folder = this.env.subscriptionrows[id][0]; - - if (this.edit_folder) - this.reset_folder_rename(); + var id = this.get_folder_row_id(name ? name : this.env.mailbox), + folder = this.env.subscriptionrows[id][0]; if (folder && confirm(this.get_label('deletefolderconfirm'))) { var lock = this.set_busy(true, 'folderdeleting'); - this.http_post('delete-folder', '_mboxes='+urlencode(folder), lock); - this.set_env('folder', null); - - $(this.gui_objects.createfolderhint).html(''); + this.http_post('delete-folder', '_mbox='+urlencode(folder), lock); } }; @@ -4286,18 +4204,8 @@ function rcube_webmail() // set messages count to zero row.cells[1].innerHTML = '*'; - // update subscription/threading checkboxes + // update subscription checkbox $('input[name="_subscribed[]"]', row).val(name).attr('checked', true); - $('input[name="_threaded[]"]', row).val(name).attr('checked', false); - - var elem; - // add new folder to rename-folder list and clear input field - if (form = this.gui_objects.editform) { - if (elem = form.elements['_folder_oldname']) - elem.options[elem.options.length] = new Option(name, name); - if (elem = form.elements['_folder_name']) - elem.value = ''; - } } this.init_subscription_list(); @@ -4311,72 +4219,37 @@ function rcube_webmail() // replace an existing table row with a new folder line this.replace_folder_row = function(oldfolder, newfolder, display_name, before) { - var form, elm, - id = this.get_folder_row_id(oldfolder), + var id = this.get_folder_row_id(oldfolder), row = document.getElementById(id); // replace an existing table row (if found) this.add_folder_row(newfolder, display_name, row, before); - - // rename folder in rename-folder dropdown - if ((form = this.gui_objects.editform) && (elm = form.elements['_folder_oldname'])) { - for (var i=0; i= 0 && !force) { + this.show_contentframe(true); + } + else { + if (!this.env.frame_lock) { + (parent.rcmail ? parent.rcmail : this).env.frame_lock = this.set_busy(true, 'loading'); + } + target.location.href = this.env.comm_path+url; + } + }; + + this.folder_size = function(folder) + { + var lock = this.set_busy(true, 'loading'); + this.http_post('folder-size', '_mbox='+urlencode(folder), lock); + }; + + this.folder_size_update = function(size) + { + $('#folder-size').replaceWith(size); + }; + /*********************************************************/ /********* GUI functionality *********/ @@ -4599,7 +4508,7 @@ function rcube_webmail() this.display_message = function(msg, type) { // pass command to parent window - if (this.env.framed && parent.rcmail) + if (this.is_framed()) return parent.rcmail.display_message(msg, type); if (!this.gui_objects.message) { @@ -4647,7 +4556,7 @@ function rcube_webmail() this.hide_message = function(obj, fade) { // pass command to parent window - if (this.env.framed && parent.rcmail) + if (this.is_framed()) return parent.rcmail.hide_message(obj, fade); if (typeof(obj) == 'object') { diff --git a/program/js/editor.js b/program/js/editor.js index 2ee4ac1ce..3845e3de4 100644 --- a/program/js/editor.js +++ b/program/js/editor.js @@ -71,8 +71,10 @@ function rcmail_editor_callback() if (elem && elem.type == 'select-one') { rcmail.change_identity(elem); // Focus previously focused element - if (fe && fe.id != rcmail.env.composebody) + if (fe && fe.id != rcmail.env.composebody) { + window.focus(); // for WebKit (#1486674) fe.focus(); + } } // set tabIndex and set focus to element that was focused before diff --git a/program/js/list.js b/program/js/list.js index 406590b4c..ae4890f60 100644 --- a/program/js/list.js +++ b/program/js/list.js @@ -110,7 +110,7 @@ init_row: function(row) // set eventhandlers to table row row.onmousedown = function(e){ return self.drag_row(e, this.uid); }; row.onmouseup = function(e){ return self.click_row(e, this.uid); }; - + if (bw.iphone || bw.ipad) { row.addEventListener('touchstart', function(e) { if (e.touches.length == 1) { @@ -223,7 +223,8 @@ focus: function(e) } // Un-focus already focused elements - $('*:focus').blur(); + $('*:focus', window).blur(); + $('iframe').each(function() { this.blur(); }); if (e || (e = window.event)) rcube_event.cancel(e); @@ -699,7 +700,7 @@ select_next: function() var prev_row = this.get_prev_row(); var new_row = (next_row) ? next_row : prev_row; if (new_row) - this.select_row(new_row.uid, false, false); + this.select_row(new_row.uid, false, false); }, @@ -728,7 +729,7 @@ select_last: function(mod_key) if (row && mod_key) { this.shift_select(row, mod_key); this.triggerEvent('select'); - this.scrollto(row); + this.scrollto(row); } else if (row) this.select(row); diff --git a/program/lib/Mail/mime.php b/program/lib/Mail/mime.php index 481764a5a..c5dd305fa 100644 --- a/program/lib/Mail/mime.php +++ b/program/lib/Mail/mime.php @@ -365,30 +365,28 @@ class Mail_mime * Adds a file to the list of attachments. * * @param string $file The file name of the file to attach - * OR the file contents itself + * or the file contents itself * @param string $c_type The content type * @param string $name The filename of the attachment * Only use if $file is the contents - * @param bool $isfile Whether $file is a filename or not - * Defaults to true - * @param string $encoding The type of encoding to use. - * Defaults to base64. - * Possible values: 7bit, 8bit, base64, - * or quoted-printable. + * @param bool $isfile Whether $file is a filename or not. Defaults to true + * @param string $encoding The type of encoding to use. Defaults to base64. + * Possible values: 7bit, 8bit, base64 or quoted-printable. * @param string $disposition The content-disposition of this file * Defaults to attachment. * Possible values: attachment, inline. - * @param string $charset The character set used in the filename - * of this attachment. + * @param string $charset The character set of attachment's content. * @param string $language The language of the attachment * @param string $location The RFC 2557.4 location of the attachment - * @param string $n_encoding Encoding for attachment name (Content-Type) + * @param string $n_encoding Encoding of the attachment's name in Content-Type * By default filenames are encoded using RFC2231 method * Here you can set RFC2047 encoding (quoted-printable * or base64) instead - * @param string $f_encoding Encoding for attachment filename (Content-Disposition) - * See $n_encoding description + * @param string $f_encoding Encoding of the attachment's filename + * in Content-Disposition header. * @param string $description Content-Description header + * @param string $h_charset The character set of the headers e.g. filename + * If not specified, $charset will be used * * @return mixed True on success or PEAR_Error object * @access public @@ -404,7 +402,8 @@ class Mail_mime $location = '', $n_encoding = null, $f_encoding = null, - $description = '' + $description = '', + $h_charset = null ) { $bodyfile = null; @@ -437,14 +436,15 @@ class Mail_mime 'body_file' => $bodyfile, 'name' => $filename, 'c_type' => $c_type, - 'encoding' => $encoding, 'charset' => $charset, + 'encoding' => $encoding, 'language' => $language, 'location' => $location, 'disposition' => $disposition, 'description' => $description, 'name_encoding' => $n_encoding, - 'filename_encoding' => $f_encoding + 'filename_encoding' => $f_encoding, + 'headers_charset' => $h_charset, ); return true; @@ -621,7 +621,7 @@ class Mail_mime $params['content_type'] = $value['c_type']; $params['encoding'] = 'base64'; $params['disposition'] = 'inline'; - $params['dfilename'] = $value['name']; + $params['filename'] = $value['name']; $params['cid'] = $value['cid']; $params['body_file'] = $value['body_file']; $params['eol'] = $this->_build_params['eol']; @@ -650,19 +650,25 @@ class Mail_mime function &_addAttachmentPart(&$obj, $value) { $params['eol'] = $this->_build_params['eol']; - $params['dfilename'] = $value['name']; + $params['filename'] = $value['name']; $params['encoding'] = $value['encoding']; $params['content_type'] = $value['c_type']; $params['body_file'] = $value['body_file']; $params['disposition'] = isset($value['disposition']) ? $value['disposition'] : 'attachment'; - if ($value['charset']) { + + // content charset + if (!empty($value['charset'])) { $params['charset'] = $value['charset']; } - if ($value['language']) { + // headers charset (filename, description) + if (!empty($value['headers_charset'])) { + $params['headers_charset'] = $value['headers_charset']; + } + if (!empty($value['language'])) { $params['language'] = $value['language']; } - if ($value['location']) { + if (!empty($value['location'])) { $params['location'] = $value['location']; } if (!empty($value['name_encoding'])) { @@ -1387,18 +1393,23 @@ class Mail_mime if ($headers['Content-Type'] == 'text/plain') { // single-part message: add charset and encoding + $charset = 'charset=' . $this->_build_params['text_charset']; + // place charset parameter in the same line, if possible + // 26 = strlen("Content-Type: text/plain; ") $headers['Content-Type'] - .= ";$eol charset=" . $this->_build_params['text_charset']; + .= (strlen($charset) + 26 <= 76) ? "; $charset" : ";$eol $charset"; $headers['Content-Transfer-Encoding'] = $this->_build_params['text_encoding']; } else if ($headers['Content-Type'] == 'text/html') { // single-part message: add charset and encoding + $charset = 'charset=' . $this->_build_params['html_charset']; + // place charset parameter in the same line, if possible $headers['Content-Type'] - .= ";$eol charset=" . $this->_build_params['html_charset']; + .= (strlen($charset) + 25 <= 76) ? "; $charset" : ";$eol $charset"; $headers['Content-Transfer-Encoding'] = $this->_build_params['html_encoding']; } else { - // multipart message: add charset and boundary + // multipart message: and boundary if (!empty($this->_build_params['boundary'])) { $boundary = $this->_build_params['boundary']; } else if (!empty($this->_headers['Content-Type']) diff --git a/program/lib/Mail/mimePart.php b/program/lib/Mail/mimePart.php index 55ea7a670..60b3601e0 100644 --- a/program/lib/Mail/mimePart.php +++ b/program/lib/Mail/mimePart.php @@ -141,17 +141,19 @@ class Mail_mimePart * content_type - The content type for this part eg multipart/mixed * encoding - The encoding to use, 7bit, 8bit, * base64, or quoted-printable + * charset - Content character set * cid - Content ID to apply * disposition - Content disposition, inline or attachment * dfilename - Filename parameter for content disposition * description - Content description - * charset - Character set to use - * name_encoding - Encoding for attachment name (Content-Type) + * name_encoding - Encoding of the attachment name (Content-Type) * By default filenames are encoded using RFC2231 * Here you can set RFC2047 encoding (quoted-printable * or base64) instead - * filename_encoding - Encoding for attachment filename (Content-Disposition) + * filename_encoding - Encoding of the attachment filename (Content-Disposition) * See 'name_encoding' + * headers_charset - Charset of the headers e.g. filename, description. + * If not set, 'charset' will be used * eol - End of line sequence. Default: "\r\n" * body_file - Location of file with part's body (instead of $body) * @@ -165,14 +167,8 @@ class Mail_mimePart $this->_eol = MAIL_MIMEPART_CRLF; } - $c_type = array(); - $c_disp = array(); foreach ($params as $key => $value) { switch ($key) { - case 'content_type': - $c_type['type'] = $value; - break; - case 'encoding': $this->_encoding = $value; $headers['Content-Transfer-Encoding'] = $value; @@ -182,29 +178,6 @@ class Mail_mimePart $headers['Content-ID'] = '<' . $value . '>'; break; - case 'disposition': - $c_disp['disp'] = $value; - break; - - case 'dfilename': - $c_disp['filename'] = $value; - $c_type['name'] = $value; - break; - - case 'description': - $headers['Content-Description'] = $value; - break; - - case 'charset': - $c_type['charset'] = $value; - $c_disp['charset'] = $value; - break; - - case 'language': - $c_type['language'] = $value; - $c_disp['language'] = $value; - break; - case 'location': $headers['Content-Location'] = $value; break; @@ -216,53 +189,56 @@ class Mail_mimePart } // Default content-type - if (empty($c_type['type'])) { - $c_type['type'] = 'text/plain'; + if (empty($params['content_type'])) { + $params['content_type'] = 'text/plain'; } // Content-Type - if (!empty($c_type['type'])) { - $headers['Content-Type'] = $c_type['type']; - if (!empty($c_type['charset'])) { - $charset = "charset={$c_type['charset']}"; - // place charset parameter in the same line, if possible - if ((strlen($headers['Content-Type']) + strlen($charset) + 16) <= 76) { - $headers['Content-Type'] .= '; '; - } else { - $headers['Content-Type'] .= ';' . $this->_eol . ' '; - } - $headers['Content-Type'] .= $charset; + $headers['Content-Type'] = $params['content_type']; + if (!empty($params['charset'])) { + $charset = "charset={$params['charset']}"; + // place charset parameter in the same line, if possible + if ((strlen($headers['Content-Type']) + strlen($charset) + 16) <= 76) { + $headers['Content-Type'] .= '; '; + } else { + $headers['Content-Type'] .= ';' . $this->_eol . ' '; } - if (!empty($c_type['name'])) { - $headers['Content-Type'] .= ';' . $this->_eol; - $headers['Content-Type'] .= $this->_buildHeaderParam( - 'name', $c_type['name'], - isset($c_type['charset']) ? $c_type['charset'] : 'US-ASCII', - isset($c_type['language']) ? $c_type['language'] : null, - isset($params['name_encoding']) ? $params['name_encoding'] : null - ); + $headers['Content-Type'] .= $charset; + + // Default headers charset + if (!isset($params['headers_charset'])) { + $params['headers_charset'] = $params['charset']; } } + if (!empty($params['filename'])) { + $headers['Content-Type'] .= ';' . $this->_eol; + $headers['Content-Type'] .= $this->_buildHeaderParam( + 'name', $params['filename'], + !empty($params['headers_charset']) ? $params['headers_charset'] : 'US-ASCII', + !empty($params['language']) ? $params['language'] : null, + !empty($params['name_encoding']) ? $params['name_encoding'] : null + ); + } // Content-Disposition - if (!empty($c_disp['disp'])) { - $headers['Content-Disposition'] = $c_disp['disp']; - if (!empty($c_disp['filename'])) { + if (!empty($params['disposition'])) { + $headers['Content-Disposition'] = $params['disposition']; + if (!empty($params['filename'])) { $headers['Content-Disposition'] .= ';' . $this->_eol; $headers['Content-Disposition'] .= $this->_buildHeaderParam( - 'filename', $c_disp['filename'], - isset($c_disp['charset']) ? $c_disp['charset'] : 'US-ASCII', - isset($c_disp['language']) ? $c_disp['language'] : null, - isset($params['filename_encoding']) ? $params['filename_encoding'] : null + 'filename', $params['filename'], + !empty($params['headers_charset']) ? $params['headers_charset'] : 'US-ASCII', + !empty($params['language']) ? $params['language'] : null, + !empty($params['filename_encoding']) ? $params['filename_encoding'] : null ); } } - if (!empty($headers['Content-Description'])) { + if (!empty($params['description'])) { $headers['Content-Description'] = $this->encodeHeader( - 'Content-Description', $headers['Content-Description'], - isset($c_type['charset']) ? $c_type['charset'] : 'US-ASCII', - isset($params['name_encoding']) ? $params['name_encoding'] : 'quoted-printable', + 'Content-Description', $params['description'], + !empty($params['headers_charset']) ? $params['headers_charset'] : 'US-ASCII', + !empty($params['name_encoding']) ? $params['name_encoding'] : 'quoted-printable', $this->_eol ); } diff --git a/program/localization/ar_SA/labels.inc b/program/localization/ar_SA/labels.inc index f54bb5278..c2534f1c5 100644 --- a/program/localization/ar_SA/labels.inc +++ b/program/localization/ar_SA/labels.inc @@ -38,14 +38,18 @@ $labels['to'] = 'المستقبل'; $labels['cc'] = 'نسخة'; $labels['bcc'] = 'نسخة مخفية'; $labels['replyto'] = 'الرد إلى'; +$labels['followupto'] = 'Mail-Followup-To'; $labels['date'] = 'التاريخ'; $labels['size'] = 'الحجم'; $labels['priority'] = 'الأولوية'; $labels['organization'] = 'المنظمة'; +$labels['readstatus'] = 'حالة القراءة'; $labels['reply-to'] = 'الرد إلى'; +$labels['mail-reply-to'] = 'Mail-Reply-To'; +$labels['mail-followup-to'] = 'Mail-Followup-To'; $labels['mailboxlist'] = 'المجلدات'; -$labels['messagesfromto'] = 'الرسالة $from إلى $to من $count'; -$labels['threadsfromto'] = 'المراسلات $from إلى $to من $count'; +$labels['messagesfromto'] = 'الرسالة $from إلى $to من مجموع $count'; +$labels['threadsfromto'] = 'جهات الإتصال $from إلى $to من مجموع $count'; $labels['messagenrof'] = 'الرسالة $nr من $count'; $labels['copy'] = 'نسخ'; $labels['move'] = 'نقل'; @@ -54,13 +58,13 @@ $labels['download'] = 'تنزيل'; $labels['filename'] = 'اسم الملف'; $labels['filesize'] = 'حجم الملف'; $labels['addtoaddressbook'] = 'إضافة إلى دفتر العناوين'; -$labels['sun'] = 'أح'; -$labels['mon'] = 'إث'; -$labels['tue'] = 'ثل'; -$labels['wed'] = 'أر'; -$labels['thu'] = 'خم'; -$labels['fri'] = 'جم'; -$labels['sat'] = 'سب'; +$labels['sun'] = 'أحد'; +$labels['mon'] = 'إثنين'; +$labels['tue'] = 'ثلاثاء'; +$labels['wed'] = 'أربعاء'; +$labels['thu'] = 'خميس'; +$labels['fri'] = 'جمعة'; +$labels['sat'] = 'سبت'; $labels['sunday'] = 'الأحد'; $labels['monday'] = 'الإثنين'; $labels['tuesday'] = 'الثلاثاء'; @@ -68,22 +72,22 @@ $labels['wednesday'] = 'الأربعاء'; $labels['thursday'] = 'الخميس'; $labels['friday'] = 'الجمعة'; $labels['saturday'] = 'السبت'; -$labels['jan'] = 'ينا'; -$labels['feb'] = 'فبر'; -$labels['mar'] = 'مار'; -$labels['apr'] = 'أبر'; -$labels['may'] = 'ماي'; -$labels['jun'] = 'يون'; -$labels['jul'] = 'يول'; -$labels['aug'] = 'أغس'; -$labels['sep'] = 'سبت'; -$labels['oct'] = 'أكت'; -$labels['nov'] = 'نوف'; -$labels['dec'] = 'ديس'; +$labels['jan'] = 'يناير'; +$labels['feb'] = 'فبراير'; +$labels['mar'] = 'مارس'; +$labels['apr'] = 'أبريل'; +$labels['may'] = 'مايو'; +$labels['jun'] = 'يونيو'; +$labels['jul'] = 'يوليو'; +$labels['aug'] = 'أغسطس'; +$labels['sep'] = 'سبتمبر'; +$labels['oct'] = 'أكتوبر'; +$labels['nov'] = 'نوفمبر'; +$labels['dec'] = 'ديسمبر'; $labels['longjan'] = 'يناير'; $labels['longfeb'] = 'فبراير'; $labels['longmar'] = 'مارس'; -$labels['longapr'] = 'أبريل'; +$labels['longapr'] = 'إبريل'; $labels['longmay'] = 'مايو'; $labels['longjun'] = 'يونيو'; $labels['longjul'] = 'يوليو'; @@ -97,6 +101,8 @@ $labels['checkmail'] = 'التحقق من وجود رسائل جديدة'; $labels['writenewmessage'] = 'إنشاء رسالة جديدة'; $labels['replytomessage'] = 'الرد على الرسالة'; $labels['replytoallmessage'] = 'الرد على المرسل وجميع مستقبلي الرسالة'; +$labels['replyall'] = 'الرد على الجميع'; +$labels['replylist'] = 'الرد على القائمة'; $labels['forwardmessage'] = 'تمرير الرسالة'; $labels['deletemessage'] = 'حذف الرسالة إلى المهملات'; $labels['movemessagetotrash'] = 'انقل الرسالة إلى سلة المهملات'; @@ -169,6 +175,8 @@ $labels['addattachment'] = 'إرفاق ملف'; $labels['charset'] = 'مجموعة المحارف'; $labels['editortype'] = 'نوع المُحرّر'; $labels['returnreceipt'] = 'ايصال استلام'; +$labels['dsn'] = 'تنويه حالة التوصيل'; +$labels['editidents'] = 'تعديل الهويات'; $labels['checkspelling'] = 'التدقيق الإملائي'; $labels['resumeediting'] = 'متابعة التحرير'; $labels['revertto'] = 'استعادة إلى'; @@ -192,6 +200,7 @@ $labels['maxuploadsize'] = 'أقصى حجم للملف هو $size'; $labels['addcc'] = 'أضف CC'; $labels['addbcc'] = 'أضف BCC'; $labels['addreplyto'] = 'أضيف Reply-To'; +$labels['addfollowupto'] = 'إضافة Mail-Followup-To'; $labels['mdnrequest'] = 'طلب المرسل إعلامه عند قراءتك لرسالته. هل تود إعلام المرسل؟'; $labels['receiptread'] = 'إيصال الاستلام )بالقراءة)'; $labels['yourmessage'] = 'هذا إيصال بقراءة رسالتك'; @@ -203,6 +212,7 @@ $labels['email'] = 'البريد الإلكتروني'; $labels['addcontact'] = 'إضافة المراسل المحدد إلى دفتر عناويني'; $labels['editcontact'] = 'تحرير بيانات المراسل'; $labels['contacts'] = 'المراسلين'; +$labels['contactproperties'] = 'خواص جهة الإتصال'; $labels['edit'] = 'تحرير'; $labels['cancel'] = 'إلغاء'; $labels['save'] = 'حفظ'; @@ -246,33 +256,36 @@ $labels['setdefault'] = 'تعيين كإفتراضي'; $labels['autodetect'] = 'آلي'; $labels['language'] = 'اللغة'; $labels['timezone'] = 'المنطقة الزمنية'; -$labels['pagesize'] = 'أسطر في الصفحة'; +$labels['pagesize'] = 'عدد الرسائل في الصفحة'; $labels['signature'] = 'التوقيع'; $labels['dstactive'] = 'التوقيت الصيفي'; $labels['htmleditor'] = 'إنشاء رسائل بنسق HTML'; +$labels['htmlonreply'] = 'حال الرد على الرسائل بصيغة HTML فقط'; $labels['htmlsignature'] = 'توقيع HTML'; $labels['previewpane'] = 'إظهار قسم المعاينة'; $labels['skin'] = 'شكل الواجهة'; -$labels['logoutclear'] = 'أفرغ المحذوفات عند الخروج'; -$labels['logoutcompact'] = 'اضغط الوارد عن الخروج'; +$labels['logoutclear'] = 'إفراغ سلة المحذوفات عند الخروج'; +$labels['logoutcompact'] = 'ضغط صندوق الوارد عن الخروج'; $labels['uisettings'] = 'واجهة المستخدم'; $labels['serversettings'] = 'إعدادات الخادم'; $labels['mailboxview'] = 'مظهر صندوق البريد'; -$labels['mdnrequests'] = 'تنويهات المُرسِل'; +$labels['mdnrequests'] = 'عند طلب إشعار استلام'; $labels['askuser'] = 'اسأل المستخدم'; -$labels['autosend'] = 'أأرسلها تلقائياً'; +$labels['autosend'] = 'أرسلها تلقائياً'; +$labels['autosendknown'] = 'أرسل إشعار استلام إلى جهات اتصالي، وإلا اسألني'; +$labels['autosendknownignore'] = 'أرسل إشعار استلام إلى جهات اتصالي، وإلا تجاهل الأمر'; $labels['ignore'] = 'تجاهلها'; -$labels['readwhendeleted'] = 'حدد الرسالة كمقروءة عند حذفها'; -$labels['flagfordeletion'] = 'ضع علامة على الرسالة لحذفها بدلاً من حذفها'; +$labels['readwhendeleted'] = 'تحديد الرسالة كمقروءة عند حذفها'; +$labels['flagfordeletion'] = 'وضع علامة على الرسالة لحذفها بدلاً من حذفها'; $labels['skipdeleted'] = 'لا تظهر الرسائل المحذوفة'; $labels['deletealways'] = 'حذف الرسائل مباشرة، إن تعذر نقلها إلى المهملات'; $labels['showremoteimages'] = 'إظهار الصور الخارجية المدمجة'; $labels['fromknownsenders'] = 'للمرسلين المعلومين'; $labels['always'] = 'دائماً'; -$labels['showinlineimages'] = 'أظهر الصّور المرفقة أسفل الرسالة'; +$labels['showinlineimages'] = 'إظهار الصّور المرفقة أسفل الرسالة'; $labels['autosavedraft'] = 'حفظ المسودة تلقائياً'; $labels['everynminutes'] = 'كل $n دقيقة'; -$labels['keepalive'] = 'تحقق من وجود رسائل جديدة عند'; +$labels['keepalive'] = 'التحقق من وجود رسائل جديدة عند'; $labels['never'] = 'أبداً'; $labels['immediately'] = 'حالاً'; $labels['messagesdisplaying'] = 'إظهار الرسائل'; @@ -283,7 +296,7 @@ $labels['miscfolding'] = 'RFC 2047/2231 (ميكروسوفت آوتلوك)'; $labels['2047folding'] = 'RFC 2047 بأكملها (غيرها)'; $labels['force7bit'] = 'استخدام ترميز MIME للحروف ذات الثمانية بتّات'; $labels['advancedoptions'] = 'خيارات متقدّمة'; -$labels['focusonnewmessage'] = 'وجّه نافذة المتصفح عند وجود رسالة جديدة'; +$labels['focusonnewmessage'] = 'التركيز على نافذة المتصفح عند وجود رسالة جديدة'; $labels['checkallfolders'] = 'التحقق من وجود رسائل جديدة في جميع المجلدات'; $labels['displaynext'] = 'إظهار الرسالة التالية بعد حذف/نقل الرسالة الحالية'; $labels['mainoptions'] = 'الخيارات الأساسية'; @@ -305,6 +318,9 @@ $labels['abovequote'] = 'قبل الاقتباس'; $labels['insertsignature'] = 'إضافة التوقيع'; $labels['previewpanemarkread'] = 'تحديد الرسائل المُعاينة كمقروءة'; $labels['afternseconds'] = 'بعد $n ثواني'; +$labels['reqmdn'] = 'طلب إشعار استلام دائماً'; +$labels['reqdsn'] = 'طلب تنويه لحالة التوصيل دائماً'; +$labels['replysamefolder'] = 'وضع الردود في المجلد الذي يحوي الرسالة المردود عليها'; $labels['folder'] = 'مجلد'; $labels['folders'] = 'مجلدات'; $labels['foldername'] = 'اسم المجلد'; @@ -312,11 +328,15 @@ $labels['subscribed'] = 'مشترك'; $labels['messagecount'] = 'الرسائل'; $labels['create'] = 'أنشئ'; $labels['createfolder'] = 'أنشئ مجلد جديد'; -$labels['rename'] = 'إعادة التسمية'; -$labels['renamefolder'] = 'إعادة تسمية المجلد'; -$labels['deletefolder'] = 'احذف المجلد'; $labels['managefolders'] = 'إدارة المجلدات'; $labels['specialfolders'] = 'المجلّدات المُميّزة'; +$labels['properties'] = 'الخواص'; +$labels['folderproperties'] = 'خواص المجلد'; +$labels['parentfolder'] = 'المجلد الحاوي'; +$labels['location'] = 'الموضع'; +$labels['info'] = 'معلومات'; +$labels['getfoldersize'] = 'اضغط لمعرفة حجم المجلد'; +$labels['changesubscription'] = 'اضغط لتغيير حالة الإشتراك'; $labels['sortby'] = 'ترتيب بحسب'; $labels['sortasc'] = 'ترتيب تصاعدي'; $labels['sortdesc'] = 'ترتيب تنازلي'; @@ -325,7 +345,7 @@ $labels['KB'] = 'ك.ب'; $labels['MB'] = 'م.ب'; $labels['GB'] = 'ج.ب'; $labels['unicode'] = 'يونيكود'; -$labels['english'] = 'الانجليزية'; +$labels['english'] = 'الإنجليزية'; $labels['westerneuropean'] = 'الغرب أوروبية'; $labels['easterneuropean'] = 'الشرق أوروبية'; $labels['southeasterneuropean'] = 'الجنوب شرق أوروبية'; diff --git a/program/localization/ar_SA/messages.inc b/program/localization/ar_SA/messages.inc index d9b9a9095..2d15a21fb 100644 --- a/program/localization/ar_SA/messages.inc +++ b/program/localization/ar_SA/messages.inc @@ -23,9 +23,10 @@ $messages['cookiesdisabled'] = 'المتصفح الخاص بك لا يقبل ا $messages['sessionerror'] = 'انتهت صلاحية الجلسة الحالية أو أنها غير صالحة'; $messages['imaperror'] = 'فشل الاتصال بخادم IMAP'; $messages['servererror'] = 'خطأ في الخادم!'; +$messages['servererrormsg'] = 'خطأ خادم: $msg'; $messages['invalidrequest'] = 'طلب غير صالح! لم تحفظ أية بيانات.'; $messages['nomessagesfound'] = 'لم يعثر على أية رسائل في صندوق البريد هذا'; -$messages['loggedout'] = 'لقد قمت بإنهاء هذه الجلسة بنجاح. إلى اللقاء!'; +$messages['loggedout'] = 'قمت بإنهاء هذه الجلسة بنجاح. إلى اللقاء!'; $messages['mailboxempty'] = 'صندوق البريد فارغ'; $messages['loading'] = 'جاري العمل...'; $messages['uploading'] = 'جاري رفع الملف...'; @@ -54,10 +55,10 @@ $messages['deletecontactconfirm'] = 'هل تريد حقاً حذف المراس $messages['deletemessagesconfirm'] = 'هل تريد حذف الرسائل المحددة؟'; $messages['deletefolderconfirm'] = 'هل تريد حقاً حذف هذا المجلد؟'; $messages['purgefolderconfirm'] = 'هل تريد حقاً حذف جميع الرسائل في هذا المجلد؟'; -$messages['foldercreating'] = 'جاري إنشاء المجلد...'; $messages['folderdeleting'] = 'جاري حذف المجلد...'; -$messages['folderrenaming'] = 'جاري إعادة تسمية المجلد...'; $messages['foldermoving'] = 'جاري نقل المجلد...'; +$messages['foldersubscribing'] = 'الإشتراك في المجلد...'; +$messages['folderunsubscribing'] = 'إلغاء الإشتراك في المجد...'; $messages['formincomplete'] = 'لم يتم تعبئة بيانات الاستمارة بالكامل'; $messages['noemailwarning'] = 'الرجاء إدخال عنوان بريد إلكتروني صالح'; $messages['nonamewarning'] = 'الرجاء إدخال اسم'; @@ -77,6 +78,9 @@ $messages['searching'] = 'جاري البحث...'; $messages['checking'] = 'جاري التحقق...'; $messages['nospellerrors'] = 'لم يعثر على أية أخطاء إملائية'; $messages['folderdeleted'] = 'تم حذف المجلد بنجاح'; +$messages['foldersubscribed'] = 'تم الإشتراك في المجلد بنجاح'; +$messages['folderunsubscribed'] = 'تم إلغاء الإشتراك في المجلد بنجاح'; +$messages['folderpurged'] = 'تم تفريغ المجلد بنجاح'; $messages['deletedsuccessfully'] = 'تم الحذف بنجاح'; $messages['converting'] = 'إزالة التنسيق من الرسالة...'; $messages['messageopenerror'] = 'تعذرت قراءة الرسالة من الخادم'; @@ -88,10 +92,11 @@ $messages['sourceisreadonly'] = 'لا يمكن تعديل مصدر العنوا $messages['errorsavingcontact'] = 'تعذر حفظ عنوان المراسل'; $messages['movingmessage'] = 'جاري نقل الرسالة...'; $messages['copyingmessage'] = 'جاري نسخ الرسالة...'; +$messages['deletingmessage'] = 'جاري حذف الرسائل...'; +$messages['markingmessage'] = 'جاري تحديد الرسائل...'; $messages['receiptsent'] = 'أرسل إيصال الاستلام بنجاح'; $messages['errorsendingreceipt'] = 'تعذر إرسال إيصال الاستلام'; $messages['nodeletelastidentity'] = 'لا يمكن حذف هذا السجل حيث أنه الوحيد المتبقي.'; -$messages['addsubfolderhint'] = 'سيتم إنشاء هذا المجلد كمجلد فرعي للمحدد.'; $messages['forbiddencharacter'] = 'اسم المجلّد يحتوي حروفاً ممنوعة'; $messages['selectimportfile'] = 'رجاء اختر ملفاً لرفعه'; $messages['addresswriterror'] = 'دفتر العناوين المحدد غير قابل للكتابة'; @@ -109,10 +114,25 @@ $messages['smtpautherror'] = 'خطأ SMTP ($code): تعذر التحقق من ه $messages['smtpfromerror'] = 'خطأ SMTP ($code): تعذر تحديد المرسل "$from" ($msg)'; $messages['smtptoerror'] = 'خطأ SMTP ($code): تعذرت إضافة المستلم "$to" ($msg)'; $messages['smtprecipientserror'] = 'خطأ SMTP: تعذرت قراءة قائمة المرسل إليهم'; +$messages['smtpdsnerror'] = 'خطأ SMTP: لا يوجد دعم لتنويهات حالة التوصيل'; $messages['smtperror'] = 'خطأ SMTP: $msg'; $messages['emailformaterror'] = 'عنوان بريد إلكتروني غير صالح: $email'; $messages['toomanyrecipients'] = 'عدد المرسل إليهم كبير. قلص العدد إلى $max.'; $messages['maxgroupmembersreached'] = 'عدد أعضاء المجموعة أكثر من $max'; $messages['internalerror'] = 'حدث خطأ داخلي. الرجاء المحاولة مرة أخرى'; +$messages['contactdelerror'] = 'تعذر حذف أسماء جهات الإتصال'; +$messages['contactdeleted'] = 'تم حذف أسماء جهات الإتصال بنجاح'; +$messages['groupdeleted'] = 'تم حذف المجموعة بنجاح'; +$messages['grouprenamed'] = 'تم تغيير إسم المجموعة بنجاح'; +$messages['groupcreated'] = 'تم إنشاء المجموعة بنجاح'; +$messages['messagedeleted'] = 'تم حذف الرسائل بنجاح'; +$messages['messagemoved'] = 'تم نقل الرسائل بنجاح'; +$messages['messagecopied'] = 'تم نسخ الرسائل بنجاح'; +$messages['messagemarked'] = 'تم تحديد الرسائل بنجاح'; +$messages['autocompletechars'] = 'إكتب $min أحرف على الأقل للحصول على التكملة التلقائية'; +$messages['namecannotbeempty'] = 'لا يمكن ترك الإسم فارغاً'; +$messages['nametoolong'] = 'الإسم طويل جداً'; +$messages['folderupdated'] = 'تم تحديث المجلد بنجاح'; +$messages['foldercreated'] = 'تم إنشاء المجلد بنجاح'; ?> diff --git a/program/localization/ast/labels.inc b/program/localization/ast/labels.inc index 752d643b6..427c7a810 100644 --- a/program/localization/ast/labels.inc +++ b/program/localization/ast/labels.inc @@ -265,9 +265,6 @@ $labels['subscribed'] = 'Soscrita'; $labels['messagecount'] = 'Mensaxes'; $labels['create'] = 'Facer'; $labels['createfolder'] = 'Facer una bandexa nueva'; -$labels['rename'] = 'Renomar'; -$labels['renamefolder'] = 'Renomar bandexa'; -$labels['deletefolder'] = 'Desaniciar bandexa'; $labels['managefolders'] = 'Alministrar bandexes'; $labels['specialfolders'] = 'Bandexes especiales'; $labels['sortby'] = 'Ordenar por'; diff --git a/program/localization/ast/messages.inc b/program/localization/ast/messages.inc index c292ccf1b..cbc42762f 100644 --- a/program/localization/ast/messages.inc +++ b/program/localization/ast/messages.inc @@ -54,9 +54,7 @@ $messages['deletecontactconfirm'] = '¿Tas seguru de desaniciar los contautos qu $messages['deletemessagesconfirm'] = '¿Tas seguru de desaniciar los mensaxes que marcaste?'; $messages['deletefolderconfirm'] = '¿Tas seguru de desaniciar esta bandexa?'; $messages['purgefolderconfirm'] = '¿Tas seguru de desaniciar tolos mensaxes d\'esta bandexa?'; -$messages['foldercreating'] = 'Faciendo la bandexa...'; $messages['folderdeleting'] = 'Desaniciando la bandexa...'; -$messages['folderrenaming'] = 'Renomando la bandexa...'; $messages['foldermoving'] = 'Moviendo la bandexa...'; $messages['formincomplete'] = 'Tienes de rellenar tolos campos del formulariu'; $messages['noemailwarning'] = 'Por favor, dame un corréu válidu'; @@ -89,7 +87,6 @@ $messages['movingmessage'] = 'Moviendo\'l mensaxe...'; $messages['receiptsent'] = 'Unviose correchamente l\'avisu de llectura.'; $messages['errorsendingreceipt'] = 'Nun fui a unviar l\'avisu de llectura.'; $messages['nodeletelastidentity'] = 'Nun puedo desaniciar esa identidá porque ye la última.'; -$messages['addsubfolderhint'] = 'Esta bandexa va ser subandexa de la que ta marcada'; $messages['forbiddencharacter'] = 'El nome de la bandexa tien un caráuter que nun val'; $messages['selectimportfile'] = 'Por favor escueye el ficheru que quies xubir'; $messages['addresswriterror'] = 'Nun puedo escribir nel llibru de direiciones qu\'escoyisti'; diff --git a/program/localization/az_AZ/labels.inc b/program/localization/az_AZ/labels.inc index 4e7d9d475..ce515e2d4 100644 --- a/program/localization/az_AZ/labels.inc +++ b/program/localization/az_AZ/labels.inc @@ -310,9 +310,6 @@ $labels['subscribed'] = 'İmzalanıb'; $labels['messagecount'] = 'Məktublar'; $labels['create'] = 'Yarad'; $labels['createfolder'] = 'Yeni qovluq yarad'; -$labels['rename'] = 'Adını dəyiş'; -$labels['renamefolder'] = 'Qovluğun adını dəyiş'; -$labels['deletefolder'] = 'Qovluğu sil'; $labels['managefolders'] = 'Qovluqlarla iş'; $labels['specialfolders'] = 'Xüsusi qovluqlar'; $labels['sortby'] = 'Çeşidlə'; diff --git a/program/localization/az_AZ/messages.inc b/program/localization/az_AZ/messages.inc index ef5ca5d77..dcef7c543 100644 --- a/program/localization/az_AZ/messages.inc +++ b/program/localization/az_AZ/messages.inc @@ -52,9 +52,7 @@ $messages['deletecontactconfirm'] = 'Seçilən ünvanı (ünvanları) silməyə $messages['deletemessagesconfirm'] = 'Seçilən məktubu (məktubları) silməyə əminsiniz?'; $messages['deletefolderconfirm'] = 'Bu qovluğu silməyə əminsiniz?'; $messages['purgefolderconfirm'] = 'Bu qovluqdakı bütün məktubları silməyə əminsiniz?'; -$messages['foldercreating'] = 'Qovluğun yaradılır...'; $messages['folderdeleting'] = 'Qovluğ silinir...'; -$messages['folderrenaming'] = 'Qovluğun adə dəyişir...'; $messages['foldermoving'] = 'Qovluq köçürülür...'; $messages['formincomplete'] = 'Bütün sətrlər doldurulmayıb'; $messages['noemailwarning'] = 'Lütfən, düzgün e-poçt ünvanı daxil edin'; @@ -89,7 +87,6 @@ $messages['copyingmessage'] = 'Məktub kopyalanır...'; $messages['receiptsent'] = 'Oxunulma haqda bildiriş göndərildi'; $messages['errorsendingreceipt'] = 'Oxunulma haqda bildiriş göndərilmədi'; $messages['nodeletelastidentity'] = 'Siz bu kimliyi silə bilməzsiniz. Bu axırıncıdır. '; -$messages['addsubfolderhint'] = 'Bu qovluq hazırki qovluqda alt qovluq olaraq yaradıldı'; $messages['forbiddencharacter'] = 'Qovlu adı qadağan olunmuş simvollar təşkil edir'; $messages['selectimportfile'] = 'Yüklənilən faylı seçin'; $messages['addresswriterror'] = 'Seçilmiş ünvan kitabçası yaddaşa yazıla bilməz'; diff --git a/program/localization/bg_BG/labels.inc b/program/localization/bg_BG/labels.inc index e380d2f43..14ad45aab 100644 --- a/program/localization/bg_BG/labels.inc +++ b/program/localization/bg_BG/labels.inc @@ -39,8 +39,7 @@ $labels['to'] = 'Получател'; $labels['cc'] = 'Копие до'; $labels['bcc'] = 'Скрито копие до'; $labels['replyto'] = 'Отговор до'; -$labels['mailreplyto'] = 'Отговор към'; -$labels['mailfollowupto'] = 'Препращане към'; +$labels['followupto'] = 'Препращане към'; $labels['date'] = 'Дата'; $labels['size'] = 'Размер'; $labels['priority'] = 'Приоритет'; @@ -202,8 +201,7 @@ $labels['maxuploadsize'] = 'Максимално позволен размер $ $labels['addcc'] = 'Копие до'; $labels['addbcc'] = 'Скрито копие до'; $labels['addreplyto'] = 'Отговор на'; -$labels['addmailreplyto'] = 'Добавяне на отговор към'; -$labels['addmailfollowupto'] = 'Добавяне на препращане към'; +$labels['addfollowupto'] = 'Добавяне на препращане към'; $labels['mdnrequest'] = 'Подателят на писмото е пожелал да бъде уведомен, че сте го прочели. Желаете ли да изпратите обратна разписка?'; $labels['receiptread'] = 'Обратна разписка (прочетено)'; $labels['yourmessage'] = 'Това е обратна разписка за писмото Ви'; @@ -330,9 +328,6 @@ $labels['subscribed'] = 'Използвай'; $labels['messagecount'] = 'Писма'; $labels['create'] = 'Създай'; $labels['createfolder'] = 'Направи нова папка'; -$labels['rename'] = 'Преименувай'; -$labels['renamefolder'] = 'Преименувай папката'; -$labels['deletefolder'] = 'Изтрий'; $labels['managefolders'] = 'Настройки на папките'; $labels['specialfolders'] = 'Служебни папки'; $labels['sortby'] = 'Сортирай по'; diff --git a/program/localization/bg_BG/messages.inc b/program/localization/bg_BG/messages.inc index cf9acbf55..c5bc90f9e 100644 --- a/program/localization/bg_BG/messages.inc +++ b/program/localization/bg_BG/messages.inc @@ -11,7 +11,7 @@ | | +-----------------------------------------------------------------------+ | Author: Todor Dragnev | -| Nickolay Bunev | +| Nickolay Bunev | +-----------------------------------------------------------------------+ @version $Id$ @@ -56,9 +56,7 @@ $messages['deletecontactconfirm'] = 'Искате ли да изтриете м $messages['deletemessagesconfirm'] = 'Искате ли да изтриете маркираните съобщения?'; $messages['deletefolderconfirm'] = 'Искате ли да изтриете тази папка?'; $messages['purgefolderconfirm'] = 'Искате ли да изтриете всички писма в тази папка?'; -$messages['foldercreating'] = 'Създаване на папка...'; $messages['folderdeleting'] = 'Изтриване на папка...'; -$messages['folderrenaming'] = 'Преименуване на папка...'; $messages['foldermoving'] = 'Преместване на папка...'; $messages['formincomplete'] = 'Не сте попълнили всички полета'; $messages['noemailwarning'] = 'Моля, въведете валиден e-mail адрес'; @@ -95,7 +93,6 @@ $messages['markingmessage'] = 'Маркиране на съобщение'; $messages['receiptsent'] = 'Обратната разписка е изпратена.'; $messages['errorsendingreceipt'] = 'Грешка при изпращането на обратна разписка.'; $messages['nodeletelastidentity'] = 'Не можете да изтриете тази самоличност, трябва да имате поне една.'; -$messages['addsubfolderhint'] = 'Тази папка ще бъде създадена като подпапка на текущо избраната'; $messages['forbiddencharacter'] = 'Името на папката съдържа непозволени символи'; $messages['selectimportfile'] = 'Моля изберете файл за качване'; $messages['addresswriterror'] = 'Избраната адресна книга не може да бъде записвана'; diff --git a/program/localization/bn_BD/labels.inc b/program/localization/bn_BD/labels.inc index 3917eec6a..37fcc867b 100644 --- a/program/localization/bn_BD/labels.inc +++ b/program/localization/bn_BD/labels.inc @@ -243,13 +243,10 @@ $labels['checkallfolders'] = 'সবগুলো মেইলবক্সে ন $labels['folder'] = 'ফোল্ডার/মেইলবক্স'; $labels['folders'] = 'ফোল্ডার/মেইলবক্স'; $labels['foldername'] = 'ফোল্ডার/মেইলবক্স এর নাম'; -$labels['subscribed'] = 'গ্রহনকারি(Subscribed) '; +$labels['subscribed'] = 'গ্রহনকারি'; $labels['messagecount'] = 'মেইল/চিঠি'; $labels['create'] = 'প্রস্তুত করুন'; $labels['createfolder'] = 'নতুন ফোল্ডার / মেইলবক্স প্রস্তুত করুন'; -$labels['rename'] = 'নাম বদলান'; -$labels['renamefolder'] = 'ফোল্ডার/মেইলবক্স এর নাম বদলান'; -$labels['deletefolder'] = 'ফোল্ডার/মেইলবক্স ফেলে দিন'; $labels['managefolders'] = 'ফোল্ডার/মেইলবক্স গুলো কে গুছান'; $labels['specialfolders'] = 'বিশেষ ফোল্ডার/মেইলবক্স'; $labels['sortby'] = 'সাজান'; diff --git a/program/localization/bn_BD/messages.inc b/program/localization/bn_BD/messages.inc index 1026969de..6383242ce 100644 --- a/program/localization/bn_BD/messages.inc +++ b/program/localization/bn_BD/messages.inc @@ -46,9 +46,7 @@ $messages['deletecontactconfirm'] = 'আপনি কি আসলেই এই $messages['deletemessagesconfirm'] = 'আপনি কি আসলেই এই চিঠি(গুলো) ফেলো দিতে চান?'; $messages['deletefolderconfirm'] = 'আপনি কি আসলেই এই ফোল্ডার/মেইলবক্স ফেলো দিতে চান?'; $messages['purgefolderconfirm'] = 'আপনি কি আসলেই এই ফোল্ডার/মেইলবক্স এর সব চিঠি ফেলো দিতে চান?'; -$messages['foldercreating'] = 'ফোল্ডার/মেইলবক্স প্রস্তুত করা হচ্ছে'; $messages['folderdeleting'] = 'ফোল্ডার/মেইলবক্স ফেলে দেওয়া হচ্ছে'; -$messages['folderrenaming'] = 'ফোল্ডার/মেইলবক্স এর নাম বদলানো হচ্ছে'; $messages['foldermoving'] = 'ফোল্ডার/মেইলবক্স সরানো হচ্ছে'; $messages['formincomplete'] = 'আপনি সবগুলো জিনিষ লেখেননি'; $messages['noemailwarning'] = 'একটি সঠিক ই-মেইল লিখুন'; @@ -81,7 +79,6 @@ $messages['movingmessage'] = 'চিঠি সরানো হচ্ছে..'; $messages['receiptsent'] = 'ঠিকঠাক মতো ফিরতি রশিদ পাঠানো হয়েছে'; $messages['errorsendingreceipt'] = 'রশিদ পাঠানো গেলোনা'; $messages['nodeletelastidentity'] = 'আপনি এই পরিচিতি ফেলতে পারবেন না কারন এইটায় বর্তমানে আপনার একমাত্র পরিচিতি। '; -$messages['addsubfolderhint'] = 'এই ফোল্ডারটি বর্তমান ফোল্ডার এর সাব-ফোল্ডার হিসাবে তৈরি হবে'; $messages['forbiddencharacter'] = 'ফোল্ডার এর নামের মধ্যে নিষিদ্ধ অক্ষর আছে'; $messages['selectimportfile'] = 'একটা ফাইল বেছে নিন তোলার জন্য'; $messages['addresswriterror'] = 'বেছে নেওয়া ঠিকানার বইটিতে লেখাযায় না'; diff --git a/program/localization/br/labels.inc b/program/localization/br/labels.inc index f80ed3442..c8812d5c4 100644 --- a/program/localization/br/labels.inc +++ b/program/localization/br/labels.inc @@ -171,9 +171,6 @@ $labels['foldername'] = 'Anv ar renkell'; $labels['subscribed'] = 'Koumananer'; $labels['create'] = 'Krouiñ'; $labels['createfolder'] = 'Krouiñ ur renkell nevez'; -$labels['rename'] = 'Adanviñ'; -$labels['renamefolder'] = 'Adanviñ ar renkell'; -$labels['deletefolder'] = 'Dilemel ar renkell'; $labels['managefolders'] = 'Aozañ ar renkelloù'; $labels['sortby'] = 'Rummañ dre'; $labels['sortasc'] = 'Rumm diagentad'; diff --git a/program/localization/bs_BA/labels.inc b/program/localization/bs_BA/labels.inc index 6d2ae5ddb..ab65eb72a 100644 --- a/program/localization/bs_BA/labels.inc +++ b/program/localization/bs_BA/labels.inc @@ -221,9 +221,6 @@ $labels['foldername'] = 'Ime fascikle'; $labels['subscribed'] = 'Pretplaćen'; $labels['create'] = 'Napravi'; $labels['createfolder'] = 'Napravi novu fasciklu'; -$labels['rename'] = 'Preimenuj'; -$labels['renamefolder'] = 'Preimenuj fasciklu'; -$labels['deletefolder'] = 'Obriši fasciklu'; $labels['managefolders'] = 'Podesi fasciklu'; $labels['sortby'] = 'Sortiraj po'; diff --git a/program/localization/ca_ES/labels.inc b/program/localization/ca_ES/labels.inc index 3022887e3..d75a2f8e5 100644 --- a/program/localization/ca_ES/labels.inc +++ b/program/localization/ca_ES/labels.inc @@ -317,9 +317,6 @@ $labels['subscribed'] = 'Subscriure\'s'; $labels['messagecount'] = 'Missatges'; $labels['create'] = 'Crea'; $labels['createfolder'] = 'Crea nova carpeta'; -$labels['rename'] = 'Canvia el nom'; -$labels['renamefolder'] = 'Canvia el nom de la carpeta'; -$labels['deletefolder'] = 'Suprimeix carpeta'; $labels['managefolders'] = 'Gestiona carpetes'; $labels['specialfolders'] = 'Carpetes Especials'; $labels['sortby'] = 'Ordena per'; diff --git a/program/localization/ca_ES/messages.inc b/program/localization/ca_ES/messages.inc index aa5065794..bea12697f 100644 --- a/program/localization/ca_ES/messages.inc +++ b/program/localization/ca_ES/messages.inc @@ -56,9 +56,7 @@ $messages['deletecontactconfirm'] = 'Esteu segurs de voler suprimir el(s) contac $messages['deletemessagesconfirm'] = 'Esteu segurs de voler suprimir el(s) missatge(s) selecionat(s)?'; $messages['deletefolderconfirm'] = 'Esteu segurs de voler suprimir aquesta carpeta?'; $messages['purgefolderconfirm'] = 'Esteu segurs de voler suprimir tots els missatges d\'aquesta carpeta?'; -$messages['foldercreating'] = 'Creant la carpeta...'; $messages['folderdeleting'] = 'Suprimint la carpeta...'; -$messages['folderrenaming'] = 'Reanomenant la carpeta...'; $messages['foldermoving'] = 'Movent la carpeta...'; $messages['formincomplete'] = 'El formulari no ha sigut emplenat totalment'; $messages['noemailwarning'] = 'Introduïu una adreça d\'e-mail vàlida'; @@ -93,7 +91,6 @@ $messages['copyingmessage'] = 'Copiant missatge...'; $messages['receiptsent'] = 'Confirmació de lectura enviada satisfactòriament'; $messages['errorsendingreceipt'] = 'No es pot enviar la confirmació'; $messages['nodeletelastidentity'] = 'No podeu suprimir aquesta identitat, és l\'última.'; -$messages['addsubfolderhint'] = 'Aquesta carpeta serà creada com a subcarpeta de la seleccionada actualment'; $messages['forbiddencharacter'] = 'El nom de carpeta conté un caràcter prohibit'; $messages['selectimportfile'] = 'Si us plau, seleccioneu un fitxer per pujar'; $messages['addresswriterror'] = 'La llibreta d\'adreces seleccionada no és modificable'; diff --git a/program/localization/cs_CZ/labels.inc b/program/localization/cs_CZ/labels.inc index e0363c4b6..67c571cd0 100644 --- a/program/localization/cs_CZ/labels.inc +++ b/program/localization/cs_CZ/labels.inc @@ -319,9 +319,6 @@ $labels['subscribed'] = 'Vybráno'; $labels['messagecount'] = 'Počet zpráv'; $labels['create'] = 'Vytvořit'; $labels['createfolder'] = 'Vytvořit novou složku'; -$labels['rename'] = 'Přejmenovat'; -$labels['renamefolder'] = 'Přejmenovat složku'; -$labels['deletefolder'] = 'Smazat složku'; $labels['managefolders'] = 'Spravovat složky'; $labels['specialfolders'] = 'Speciální složky'; $labels['sortby'] = 'Seřadit podle'; diff --git a/program/localization/cs_CZ/messages.inc b/program/localization/cs_CZ/messages.inc index 4f806e1c8..6569ddcc3 100644 --- a/program/localization/cs_CZ/messages.inc +++ b/program/localization/cs_CZ/messages.inc @@ -26,6 +26,7 @@ $messages['cookiesdisabled'] = 'Váš prohlížeč nepodporuje cookies, které j $messages['sessionerror'] = 'Vaše přihlášení je neplatné nebo vypršelo'; $messages['imaperror'] = 'Připojení na IMAP server selhalo'; $messages['servererror'] = 'Chyba serveru!'; +$messages['servererrormsg'] = 'Chyba serveru: $msg'; $messages['invalidrequest'] = 'Nesprávný požadavek. Data nebyla uložena.'; $messages['nomessagesfound'] = 'Ve schránce nebyla nalezena žádná zpráva'; $messages['loggedout'] = 'Byli jste úspěšně odhlášeni. Nashledanou!'; @@ -57,9 +58,7 @@ $messages['deletecontactconfirm'] = 'Opravdu chcete smazat označené kontakty?' $messages['deletemessagesconfirm'] = 'Opravdu chcete smazat označené zprávy?'; $messages['deletefolderconfirm'] = 'Chcete opravdu smazat tento adresář?'; $messages['purgefolderconfirm'] = 'Opravdu chcete smazat všechny zprávy v této složce?'; -$messages['foldercreating'] = 'Vytvářím složku...'; $messages['folderdeleting'] = 'Odstraňuji složku...'; -$messages['folderrenaming'] = 'Přejmenovávám složku...'; $messages['foldermoving'] = 'Přesouvám složku...'; $messages['formincomplete'] = 'Formulář nebyl korektně vyplněn'; $messages['noemailwarning'] = 'Zadejte, prosím, platnou e-mailovou adresu'; @@ -91,10 +90,11 @@ $messages['sourceisreadonly'] = 'Tento zdroj adres je pouze pro čtení'; $messages['errorsavingcontact'] = 'Nemohu uložit adresu kontaktu'; $messages['movingmessage'] = 'Přesouvám zprávu...'; $messages['copyingmessage'] = 'Kopíruji zprávu...'; +$messages['deletingmessage'] = 'Odstraňuji zprávu...'; +$messages['markingmessage'] = 'Označuji zprávu...'; $messages['receiptsent'] = 'Potvrzení o přřijetí zprávy odesláno'; $messages['errorsendingreceipt'] = 'Potvrzení o přijetí zprávy nebylo možné odeslat'; $messages['nodeletelastidentity'] = 'Alespoň jedna identita musí být ponechána. Identitu nelze odstranit.'; -$messages['addsubfolderhint'] = 'Tato složka bude vytvořena jako podsložka aktuálně zvolené složky'; $messages['forbiddencharacter'] = 'Název složky obsahuje zakázaný znak'; $messages['selectimportfile'] = 'Prosím vyberte soubor k nahrání'; $messages['addresswriterror'] = 'Vybraný seznam kontaktů není zapisovatelný'; @@ -102,20 +102,31 @@ $messages['contactaddedtogroup'] = 'Kontakty byly úspěšně přidány do této $messages['contactremovedfromgroup'] = 'Kontakty byly odstraněny z této skupiny'; $messages['importwait'] = 'Importuji, prosím čekejte...'; $messages['importerror'] = 'Během importu nastala chyba! Nahraný soubor není ve formátu vCard.'; -$messages['importconfirm'] = 'Úspěšně naimportováno $inserted kontaktů, $skipped existujících záznamů přeskočeno:

$names

'; +$messages['importconfirm'] = 'Úspěšně naimportováno $inserted kontaktů, $skipped existujících záznamů přeskočeno:$names'; $messages['opnotpermitted'] = 'Operace není povolena!'; $messages['nofromaddress'] = 'Chybějící e-mailová adresa v označeném profilu'; $messages['editorwarning'] = 'Přepnutím do režimu prostého textu ztratíte veškeré formátování. Chcete pokračovat?'; -$messages['httpreceivedencrypterror'] = 'Vyskytla se vážná chyba v konfiguraci. Kontaktujte neprodleně administátora. Vaše zpráva nemohla být odeslána.'; +$messages['httpreceivedencrypterror'] = 'Vyskytla se vážná chyba v konfiguraci. Kontaktujte neprodleně administátora. Vaše zpráva nemohla být odeslána.'; $messages['smtpconnerror'] = 'Chyba SMTP ($code): Připojení k serveru selhalo'; $messages['smtpautherror'] = 'Chyba SMTP ($code): Chyba přihlášení'; $messages['smtpfromerror'] = 'Chyba SMTP ($code): Nelze nastavit odesílatele "$from" ($msg)'; $messages['smtptoerror'] = 'Chyba SMTP ($code): Nelze přidat příjemce "$to" ($msg)'; $messages['smtprecipientserror'] = 'Chyba SMTP: Nelze zpracovat seznam příjemců'; +$messages['smtpdsnerror'] = 'Chyba SMTP: Není podporováno oznamení o stavu doručení (DSN)'; $messages['smtperror'] = 'Chyba SMTP: $msg'; $messages['emailformaterror'] = 'Neplatná e-mailová adresa: $email'; $messages['toomanyrecipients'] = 'Příliš mnoho příjemců. Změňte počet příjemců na $max.'; $messages['maxgroupmembersreached'] = 'Počet členských skupin dosáhl maximum z $max'; $messages['internalerror'] = 'Došlo k interní chybě. Zkuste to znovu'; +$messages['contactdelerror'] = 'Kontakty nelze odstranit'; +$messages['contactdeleted'] = 'Kontakty byly odstraněny'; +$messages['groupdeleted'] = 'Skupina byla odstraněna'; +$messages['grouprenamed'] = 'Skupina byla přejmenována'; +$messages['groupcreated'] = 'Skupina vytvořena'; +$messages['messagedeleted'] = 'Zpráva odstraněna'; +$messages['messagemoved'] = 'Zpráva byla přesunuta'; +$messages['messagecopied'] = 'Zpráva byla zkopirována'; +$messages['messagemarked'] = 'Zpráva označena'; +$messages['autocompletechars'] = 'Napište alespoň $min znaků pro automatické doplnění'; -?> \ No newline at end of file +?> diff --git a/program/localization/cy_GB/labels.inc b/program/localization/cy_GB/labels.inc index 0f8e22c26..3e22ee4d4 100644 --- a/program/localization/cy_GB/labels.inc +++ b/program/localization/cy_GB/labels.inc @@ -35,15 +35,12 @@ $labels['to'] = 'Derbyniwr'; $labels['cc'] = 'Copi'; $labels['bcc'] = 'Bcc'; $labels['replyto'] = 'Ateb-I'; -$labels['mailreplyto'] = 'Neges-Ateb-I'; -$labels['mailfollowupto'] = 'Neges-Ddilynol-I'; +$labels['followupto'] = 'Followup-To'; $labels['date'] = 'Dyddiad'; $labels['size'] = 'Maint'; $labels['priority'] = 'Blaenoriaeth'; $labels['organization'] = 'Enw\'r Sefydliad'; -$labels['reply-to'] = 'Ateb-I'; -$labels['mail-reply-to'] = 'Neges-Ateb-I'; -$labels['mail-followup-to'] = 'Neges-Ddilynol-I'; +$labels['readstatus'] = 'Statws darllen'; $labels['mailboxlist'] = 'Ffolderi'; $labels['messagesfromto'] = 'Negeseuon $from i $to o $count'; $labels['threadsfromto'] = 'Edefau $from i $to o $count'; @@ -172,6 +169,7 @@ $labels['addattachment'] = 'Atodi ffeil'; $labels['charset'] = 'Set nodiau'; $labels['editortype'] = 'Math golygydd'; $labels['returnreceipt'] = 'Cadarnhau derbyn'; +$labels['dsn'] = 'Hysbysiad statws danfon'; $labels['editidents'] = 'Golygu personoliaethau'; $labels['checkspelling'] = 'Gwirio sillafu'; $labels['resumeediting'] = 'Ail-ddechrau golygu'; @@ -196,8 +194,7 @@ $labels['maxuploadsize'] = 'Y maint ffeil uchaf a ganiateir yw $size'; $labels['addcc'] = 'Ychwanegu Cc'; $labels['addbcc'] = 'Ychwanegu Bcc'; $labels['addreplyto'] = 'Ychwanegu Ateb-I'; -$labels['addmailreplyto'] = 'Ychwanegu Neges-Ateb-I'; -$labels['addmailfollowupto'] = 'Ychwanegu Neges-Ddilynol-I'; +$labels['addfollowupto'] = 'Ychwanegu Followup-To'; $labels['mdnrequest'] = 'Mae anfonwr y neges hwn wedi gofyn am hysbysiad eich bod wedi darllen y neges. Hoffech chi hysbysu\'r anfonwr?'; $labels['receiptread'] = 'Cadarnhad Derbyn (darllenwyd)'; $labels['yourmessage'] = 'Mae hwn yn gadarnhad o dderbyn eich neges'; @@ -209,6 +206,7 @@ $labels['email'] = 'E-bost'; $labels['addcontact'] = 'Ychwanegu cyswllt newydd'; $labels['editcontact'] = 'Golygu cyswllt'; $labels['contacts'] = 'Cysylltiadau'; +$labels['contactproperties'] = 'Nodweddion cyswllt'; $labels['edit'] = 'Golygu'; $labels['cancel'] = 'Canslo'; $labels['save'] = 'Cadw'; @@ -256,6 +254,7 @@ $labels['pagesize'] = 'Rhesi ar bob tudalen'; $labels['signature'] = 'Llofnod'; $labels['dstactive'] = 'Amser arbed golau ddydd'; $labels['htmleditor'] = 'Ysgrifennu negeseuon HTML'; +$labels['htmlonreply'] = 'wrth ateb i neges HTML yn unig'; $labels['htmlsignature'] = 'Llofnod HTML'; $labels['previewpane'] = 'Dangos ffenest rhagolwg'; $labels['skin'] = 'Croen rhyngwyneb'; @@ -268,6 +267,7 @@ $labels['mdnrequests'] = 'Hysbysiadau anfonwr'; $labels['askuser'] = 'gofyn i\'r defnyddiwr'; $labels['autosend'] = 'danfon yn awtomatig'; $labels['autosendknown'] = 'danfon y derbynneb i fy nghsylltiadau yn unig'; +$labels['autosendknownignore'] = 'danfon derbynneb i fy nghysylltiadau, anwybyddu fel arall'; $labels['ignore'] = 'anwybyddu'; $labels['readwhendeleted'] = 'Nodi\'r neges fel darllenwyd wrth ddileu'; $labels['flagfordeletion'] = 'Fflagio\'r neges i\'w ddileu yn hytrach na dileu yn syth'; @@ -313,6 +313,8 @@ $labels['insertsignature'] = 'Mewnosod llofnod'; $labels['previewpanemarkread'] = 'Nodi negeseuon rhagolwg fel darllenwyd'; $labels['afternseconds'] = 'ar ôl $n eiliad'; $labels['reqmdn'] = 'Bob amser gofyn am dderbynneb danfon'; +$labels['reqdsn'] = 'Gofyn am hysbysiad statws danfon bob amser'; +$labels['replysamefolder'] = 'Rhoi atebion yn yr un ffolder i\'r neges sy\'n cael ei ateb'; $labels['folder'] = 'Ffolder'; $labels['folders'] = 'Ffolderi'; $labels['foldername'] = 'Enw ffolder'; @@ -320,11 +322,15 @@ $labels['subscribed'] = 'Tanysgrifwyd'; $labels['messagecount'] = 'Negeseuon'; $labels['create'] = 'Creu'; $labels['createfolder'] = 'Creu ffolder newydd'; -$labels['rename'] = 'Ailenwi'; -$labels['renamefolder'] = 'Ailenwi ffolder'; -$labels['deletefolder'] = 'Dileu ffolder'; $labels['managefolders'] = 'Rheoli ffolderi'; $labels['specialfolders'] = 'Ffolderi arbennig'; +$labels['properties'] = 'Nodweddion'; +$labels['folderproperties'] = 'Ffolder nodweddion'; +$labels['parentfolder'] = 'Ffolder uwchben'; +$labels['location'] = 'Lleoliad'; +$labels['info'] = 'Gwybodaeth'; +$labels['getfoldersize'] = 'Cliciwch i gael maint ffolder'; +$labels['changesubscription'] = 'Cliciwch i newid y tanysgrifiad'; $labels['sortby'] = 'Trefnu yn ôl'; $labels['sortasc'] = 'Trefn esgynnol'; $labels['sortdesc'] = 'Trefn ddisgynnol'; diff --git a/program/localization/cy_GB/messages.inc b/program/localization/cy_GB/messages.inc index 4a20d306a..486455b5d 100644 --- a/program/localization/cy_GB/messages.inc +++ b/program/localization/cy_GB/messages.inc @@ -20,6 +20,9 @@ $messages['cookiesdisabled'] = 'Nid yw eich porwr yn derbyn cwcis'; $messages['sessionerror'] = 'Mae\'r sesiwn yn anghywir neu wedi dod i ben'; $messages['imaperror'] = 'Methwyd cysylltu a\'r gweinydd IMAP'; $messages['servererror'] = 'Gwall Gweinydd!'; +$messages['servererrormsg'] = 'Gwall Gweinydd: $msg'; +$messages['errorreadonly'] = 'Methwyd gweithredu. Mae\'r ffolder yn darllen-yn-unig'; +$messages['errornoperm'] = 'Methwyd gweithredu. Gwrthodwyd caniatad'; $messages['invalidrequest'] = 'Cais annilys! Ni chadwyd unrhyw wybodaeth.'; $messages['nomessagesfound'] = 'Dim negeseuon wedi eu canfod yn y blwch hwn'; $messages['loggedout'] = 'Rydych wedi gorffen y sesiwn yn llwyddianus. Hwyl fawr!'; @@ -51,10 +54,10 @@ $messages['deletecontactconfirm'] = 'Ydych chi wir am ddileu y cysylltiadau ddew $messages['deletemessagesconfirm'] = 'Ydych chi wir am ddileu y neges(euon) ddewiswyd?'; $messages['deletefolderconfirm'] = 'Ydych chi wir am ddileu y ffolder yma?'; $messages['purgefolderconfirm'] = 'Ydych chi wir am ddileu yr holl negeseuon yn y ffolder yma?'; -$messages['foldercreating'] = 'Yn creu ffolder...'; $messages['folderdeleting'] = 'Yn dileu ffolder...'; -$messages['folderrenaming'] = 'Yn ailenwi ffolder...'; $messages['foldermoving'] = 'Yn symud ffolder...'; +$messages['foldersubscribing'] = 'Yn tanysgrifio i\'r ffolder...'; +$messages['folderunsubscribing'] = 'Yn dad-danysgrifio i\'r ffolder...'; $messages['formincomplete'] = 'Nid oedd y ffurflen wedi ei gwblhau yn llawn'; $messages['noemailwarning'] = 'Rhowch gyfeiriad e-bost dilys'; $messages['nonamewarning'] = 'Rhowch enw'; @@ -74,6 +77,10 @@ $messages['searching'] = 'Yn chwilio...'; $messages['checking'] = 'Yn gofyn...'; $messages['nospellerrors'] = 'Ni gafwyd hyd i unrhyw wallau gwirio'; $messages['folderdeleted'] = 'Dilëwyd y ffolder yn llwyddiannus'; +$messages['foldersubscribed'] = 'Ffolder wedi ei danysgrifio yn llwyddiannus'; +$messages['folderunsubscribed'] = 'Ffolder wedi ei ddad-danysgrifio yn llwyddiannus'; +$messages['folderpurged'] = 'Ffolder wedi ei lanhau yn llwyddiannus'; +$messages['folderexpunged'] = 'Ffolder wedi ei wagio yn llwyddiannus'; $messages['deletedsuccessfully'] = 'Dilëwyd yn llwyddiannus'; $messages['converting'] = 'Yn cael gwared a\'r fformatio...'; $messages['messageopenerror'] = 'Methwyd llwytho\'r neges o\'r gweinydd'; @@ -85,10 +92,11 @@ $messages['sourceisreadonly'] = 'Mae ffynhonnell y cyfeiriadau i\'w ddarllen yn $messages['errorsavingcontact'] = 'Methwyd cadw cyfeiriad y cyswllt'; $messages['movingmessage'] = 'Yn symud neges...'; $messages['copyingmessage'] = 'Yn copïo\'r neges'; +$messages['deletingmessage'] = 'Yn dileu neges(euon)...'; +$messages['markingmessage'] = 'Yn marcio neges(euon)...'; $messages['receiptsent'] = 'Danfonwyd cadarnhad derbyn yn llwyddiannus'; $messages['errorsendingreceipt'] = 'Methwyd danfon cadarnhad derbyn'; $messages['nodeletelastidentity'] = 'Allwch chi ddim dileu\'r personoliaeth yma, hwn yw\'r un olaf.'; -$messages['addsubfolderhint'] = 'Mi fydd y ffolder yma\'n cael ei greu fel is-ffolder o\'r un sydd wedi ei ddewis ar hyn o bryd'; $messages['forbiddencharacter'] = 'Mae enw\'r ffolder yn cynnwys llythyren annerbynniol'; $messages['selectimportfile'] = 'Dewiswch ffeil i\'w lwytho fyny'; $messages['addresswriterror'] = 'Nid yw\'n bosib ysgrifennu i\'r llyfr cyfeiriadau '; @@ -106,10 +114,25 @@ $messages['smtpautherror'] = 'Gwall SMTP ($code): Methwyd dilysu\'r cyfrif'; $messages['smtpfromerror'] = 'Gwall SMTP ($code): Methwyd gosod y danfonwr "$from" ($msg)'; $messages['smtptoerror'] = 'Gwall SMTP ($code): Methwyd ychwanegu derbynwr "$to" ($msg)'; $messages['smtprecipientserror'] = 'Gwall SMTP: Nid oedd yn bosib darllen y rhestr o dderbynnwyr'; +$messages['smtpdsnerror'] = 'Gwall SMTP: Dim cefnogaeth i Hysbysiadau Statws Danfon'; $messages['smtperror'] = 'Gwall SMTP: $msg'; $messages['emailformaterror'] = 'Cyfeiriad e-bost anghywir: $email'; $messages['toomanyrecipients'] = 'Gormod o dderbynnwyr. Lleihewch y nifer i $max'; $messages['maxgroupmembersreached'] = 'Mae nifer o aelodau\'r grŵp yn fwy na\'r uchafswm o $max'; $messages['internalerror'] = 'Fe gafwyd gwall mewnol. Rhowch gynnig arni eto.'; +$messages['contactdelerror'] = 'Methwyd dileu cyswllt'; +$messages['contactdeleted'] = 'Cyswllt wedi ei ddileu yn llwyddiannus'; +$messages['groupdeleted'] = 'Grŵp wedi ei ddileu yn llwyddiannus'; +$messages['grouprenamed'] = 'Grŵp wedi ei ailenwi yn llwyddiannus'; +$messages['groupcreated'] = 'Grŵp wedi ei greu yn llwyddiannus'; +$messages['messagedeleted'] = 'Neges(euon) wedi eu dileu yn llwyddiannus'; +$messages['messagemoved'] = 'Neges(euon) wedi eu symud yn llwyddiannus'; +$messages['messagecopied'] = 'Neges(euon) wedi eu copïo yn llwyddiannus'; +$messages['messagemarked'] = 'Neges(euon) wedi eu marcio yn llwyddiannus'; +$messages['autocompletechars'] = 'Rhowch o leia $min llythyren ar gyfer awto-gwblhau'; +$messages['namecannotbeempty'] = 'Ni all yr enw fod yn wag'; +$messages['nametoolong'] = 'Mae\'r enw yn rhy hir'; +$messages['folderupdated'] = 'Diweddarwyd y ffolder yn llwyddiannus'; +$messages['foldercreated'] = 'Crëwyd y ffolder yn llwyddiannus'; ?> diff --git a/program/localization/da_DK/labels.inc b/program/localization/da_DK/labels.inc index 6d45c0455..3aa1ae44d 100644 --- a/program/localization/da_DK/labels.inc +++ b/program/localization/da_DK/labels.inc @@ -309,9 +309,6 @@ $labels['subscribed'] = 'Abonneret'; $labels['messagecount'] = 'Beskeder'; $labels['create'] = 'Opret'; $labels['createfolder'] = 'Opret ny mappe'; -$labels['rename'] = 'Omdøb'; -$labels['renamefolder'] = 'Omdøb mappe'; -$labels['deletefolder'] = 'Slet mappe'; $labels['managefolders'] = 'Administrér mapper'; $labels['specialfolders'] = 'Specielle mapper'; $labels['sortby'] = 'Sortér efter'; diff --git a/program/localization/da_DK/messages.inc b/program/localization/da_DK/messages.inc index e66099c5c..74d70b78e 100644 --- a/program/localization/da_DK/messages.inc +++ b/program/localization/da_DK/messages.inc @@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Vil du virkelig slette den/de valgte kontak $messages['deletemessagesconfirm'] = 'Vil du virkelig slette den/de valgte besked(er)?'; $messages['deletefolderconfirm'] = 'Vil du virkelig slette den valgte mappe'; $messages['purgefolderconfirm'] = 'Vil du virkelig slette alle beskeder i denne mappe?'; -$messages['foldercreating'] = 'Opretter mappen...'; $messages['folderdeleting'] = 'Sletter mappen...'; -$messages['folderrenaming'] = 'Omdøber mappen...'; $messages['foldermoving'] = 'Flytter mappen...'; $messages['formincomplete'] = 'Formularen var ikke fuldstændig fyldt ud'; $messages['noemailwarning'] = 'Indtast venligst en gyldig e-mail adresse'; @@ -92,7 +90,6 @@ $messages['copyingmessage'] = 'Kopierer besked...'; $messages['receiptsent'] = 'Kvittering for læsning er sendt'; $messages['errorsendingreceipt'] = 'Kvitteringen kunne ikke sendes'; $messages['nodeletelastidentity'] = 'Du kan ikke slette denne identitet, da det er den eneste der er tilbage.'; -$messages['addsubfolderhint'] = 'Denne mappe vil blive oprettet som en undermappe til den mappe der er valgt i øjeblikket.'; $messages['forbiddencharacter'] = 'Mappe-navnet indeholder ugyldige tegn'; $messages['selectimportfile'] = 'Vælg venligst den fil der skal uploades'; $messages['addresswriterror'] = 'Der kan ikke skrives i den valgte adressebog'; diff --git a/program/localization/de_CH/labels.inc b/program/localization/de_CH/labels.inc index 5c2bc6d98..c59cf61a2 100644 --- a/program/localization/de_CH/labels.inc +++ b/program/localization/de_CH/labels.inc @@ -38,8 +38,7 @@ $labels['to'] = 'Empfänger'; $labels['cc'] = 'Kopie (CC)'; $labels['bcc'] = 'Blind-Kopie'; $labels['replyto'] = 'Antwort an'; -$labels['mailreplyto'] = 'Mail-Reply-To'; -$labels['mailfollowupto'] = 'Mail-Followup-To'; +$labels['followupto'] = 'Followup-To'; $labels['date'] = 'Datum'; $labels['size'] = 'Grösse'; $labels['priority'] = 'Priorität'; @@ -201,8 +200,7 @@ $labels['maxuploadsize'] = 'Maximal erlaubte Dateigrösse ist $size'; $labels['addcc'] = 'Cc hinzufügen'; $labels['addbcc'] = 'Bcc hinzufügen'; $labels['addreplyto'] = 'Antwortadresse hinzufügen'; -$labels['addmailreplyto'] = 'Mail-Reply-To hinzufügen'; -$labels['addmailfollowupto'] = 'Mail-Followup-To hinzufügen'; +$labels['addfollowupto'] = 'Followup-To hinzufügen'; $labels['mdnrequest'] = 'Der Sender dieser Nachricht hat eine Empfangsbestätigung angefordert. Möchten Sie diese jetzt senden?'; $labels['receiptread'] = 'Empfangsbestätigung (gelesen)'; $labels['yourmessage'] = 'Dieses ist eine Empfangsbestätigung für Ihre Nachricht'; @@ -330,11 +328,15 @@ $labels['subscribed'] = 'Abonniert'; $labels['messagecount'] = 'Nachrichten'; $labels['create'] = 'Erstellen'; $labels['createfolder'] = 'Neuen Ordner erstellen'; -$labels['rename'] = 'Umbenennen'; -$labels['renamefolder'] = 'Ordner umbenennen'; -$labels['deletefolder'] = 'Ordner löschen'; $labels['managefolders'] = 'Ordner verwalten'; $labels['specialfolders'] = 'Spezialordner'; +$labels['properties'] = 'Eigenschaften'; +$labels['folderproperties'] = 'Ordnereigenschaften'; +$labels['parentfolder'] = 'Eltern'; +$labels['location'] = 'Speicherort'; +$labels['info'] = 'Informationen'; +$labels['getfoldersize'] = 'Ordnergrösse anzeigen'; +$labels['changesubscription'] = 'Abonnieren'; $labels['sortby'] = 'Sortieren nach'; $labels['sortasc'] = 'aufsteigend sortieren'; $labels['sortdesc'] = 'absteigend sortieren'; diff --git a/program/localization/de_CH/messages.inc b/program/localization/de_CH/messages.inc index 56f3a4526..b753418e0 100644 --- a/program/localization/de_CH/messages.inc +++ b/program/localization/de_CH/messages.inc @@ -55,10 +55,10 @@ $messages['deletecontactconfirm'] = 'Wollen Sie die ausgewählten Kontakte wirkl $messages['deletemessagesconfirm'] = 'Wollen Sie die ausgewählten Nachrichten wirklich löschen?'; $messages['deletefolderconfirm'] = 'Wollen Sie diesen Ordner wirklich löschen?'; $messages['purgefolderconfirm'] = 'Wollen Sie diesen Ordner wirklich leeren?'; -$messages['foldercreating'] = 'Erstelle Ordner...'; $messages['folderdeleting'] = 'Lösche Ordner...'; -$messages['folderrenaming'] = 'Nenne Ordner um...'; $messages['foldermoving'] = 'Verschiebe Ordner...'; +$messages['foldersubscribing'] = 'Abonniere Ordner...'; +$messages['folderunsubscribing'] = 'Ordner abbstellen...'; $messages['formincomplete'] = 'Das Formular wurde nicht vollständig ausgefüllt'; $messages['noemailwarning'] = 'Bitte geben Sie eine gültige E-Mail-Adresse ein'; $messages['nonamewarning'] = 'Bitte geben Sie einen Namen ein'; @@ -78,6 +78,10 @@ $messages['searching'] = 'Suche...'; $messages['checking'] = 'Prüfe...'; $messages['nospellerrors'] = 'Keine Rechtschreibfehler gefunden'; $messages['folderdeleted'] = 'Ordner erfolgreich gelöscht'; +$messages['foldersubscribed'] = 'Der Ordner wurde erfolgreich abonniert'; +$messages['folderunsubscribed'] = 'Der Ordner wurde erfolgreich abbestellt'; +$messages['folderpurged'] = 'Der Ordner wurde erfolgreich gelöscht'; +$messages['folderexpunged'] = 'Der Ordner wurde erfolgreich gepackt'; $messages['deletedsuccessfully'] = 'Erfolgreich gelöscht'; $messages['converting'] = 'Entferne Formatierungen...'; $messages['messageopenerror'] = 'Die Nachricht konnte nicht vom Server geladen werden'; @@ -94,7 +98,6 @@ $messages['markingmessage'] = 'Markiere Nachricht(en)...'; $messages['receiptsent'] = 'Lesebestätigung erfolgreich gesendet'; $messages['errorsendingreceipt'] = 'Bestätigung konnte nicht gesendet werden'; $messages['nodeletelastidentity'] = 'Diese Identität kann nicht gelöscht werden, da dies die letzte ist.'; -$messages['addsubfolderhint'] = 'Wird als Unterordner des aktuell selektierten Ordners erstellt'; $messages['forbiddencharacter'] = 'Der Ordnername enthält ein ungültiges Zeichen'; $messages['selectimportfile'] = 'Bitte wählen Sie eine Datei zum Importieren aus'; $messages['addresswriterror'] = 'Das gewählte Adressbuch kann nicht verändert werden'; @@ -128,5 +131,11 @@ $messages['messagemoved'] = 'Nachricht(en) erfolgreich verschoben'; $messages['messagecopied'] = 'Nachricht(en) erfolgreich kopiert'; $messages['messagemarked'] = 'Nachricht(en) erfolgreich markiert'; $messages['autocompletechars'] = 'Geben Sie mind. $min Zeichen für die Auto-Vervollständigung ein'; +$messages['namecannotbeempty'] = 'Der Name darf nicht leer sein'; +$messages['nametoolong'] = 'Der Name ist zu lang'; +$messages['folderupdated'] = 'Der Ordner wurde erfolgreich aktualisiert'; +$messages['foldercreated'] = 'Der Ordner wurde erfolgreich erstellt'; +$messages['errorreadonly'] = 'Die Aktion nicht ausgeführt werden. Der Ordner ist schreibgeschützt.'; +$messages['errornoperm'] = 'Die Aktion nicht ausgeführt werden. Zugriff verweigert.'; ?> diff --git a/program/localization/de_DE/labels.inc b/program/localization/de_DE/labels.inc index 791c32311..262127cf4 100644 --- a/program/localization/de_DE/labels.inc +++ b/program/localization/de_DE/labels.inc @@ -38,8 +38,7 @@ $labels['to'] = 'Empfänger'; $labels['cc'] = 'Kopie'; $labels['bcc'] = 'Blindkopie'; $labels['replyto'] = 'Antwort an'; -$labels['mailreplyto'] = 'Mail-Reply-To'; -$labels['mailfollowupto'] = 'Mail-Followup-To'; +$labels['followupto'] = 'Followup-To'; $labels['date'] = 'Datum'; $labels['size'] = 'Größe'; $labels['priority'] = 'Priorität'; @@ -201,8 +200,7 @@ $labels['maxuploadsize'] = 'Maximal erlaubte Dateigröße ist $size'; $labels['addcc'] = 'Cc hinzufügen'; $labels['addbcc'] = 'Bcc hinzufügen'; $labels['addreplyto'] = 'Antwortadresse hinzufügen'; -$labels['addmailreplyto'] = 'Mail-Reply-To hinzufügen'; -$labels['addmailfollowupto'] = 'Mail-Followup-To hinzufügen'; +$labels['addfollowupto'] = 'Followup-To hinzufügen'; $labels['mdnrequest'] = 'Der Sender dieser Nachricht möchte gerne eine Lesebestätigung. Wollen Sie dieses bestätigen?'; $labels['receiptread'] = 'Empfangsbestätigung (gelesen)'; $labels['yourmessage'] = 'Dies ist eine Empfangsbestätigung für Ihre Nachricht'; @@ -330,11 +328,15 @@ $labels['subscribed'] = 'Abonniert'; $labels['messagecount'] = 'Nachrichten'; $labels['create'] = 'Erstellen'; $labels['createfolder'] = 'Neuen Ordner erstellen'; -$labels['rename'] = 'Umbenennen'; -$labels['renamefolder'] = 'Ordner umbenennen'; -$labels['deletefolder'] = 'Ordner löschen'; $labels['managefolders'] = 'Ordner verwalten'; $labels['specialfolders'] = 'Spezialordner'; +$labels['properties'] = 'Eigenschaften'; +$labels['folderproperties'] = 'Ordnereigenschaften'; +$labels['parentfolder'] = 'Eltern'; +$labels['location'] = 'Speicherort'; +$labels['info'] = 'Informationen'; +$labels['getfoldersize'] = 'Ordnergröße anzeigen'; +$labels['changesubscription'] = 'Abonnieren'; $labels['sortby'] = 'Sortieren nach'; $labels['sortasc'] = 'Aufsteigend sortieren'; $labels['sortdesc'] = 'Absteigend sortieren'; diff --git a/program/localization/de_DE/messages.inc b/program/localization/de_DE/messages.inc index 7f563a7a2..47e4e017d 100644 --- a/program/localization/de_DE/messages.inc +++ b/program/localization/de_DE/messages.inc @@ -55,10 +55,10 @@ $messages['deletecontactconfirm'] = 'Wollen Sie die ausgewählten Kontakte wirkl $messages['deletemessagesconfirm'] = 'Wollen Sie die ausgewählten Nachrichten wirklich löschen?'; $messages['deletefolderconfirm'] = 'Wollen Sie diesen Ordner wirklich löschen?'; $messages['purgefolderconfirm'] = 'Wollen Sie diesen Ordner wirklich leeren?'; -$messages['foldercreating'] = 'Erstelle Ordner...'; $messages['folderdeleting'] = 'Lösche Ordner...'; -$messages['folderrenaming'] = 'Nenne Ordner um...'; $messages['foldermoving'] = 'Verschiebe Ordner...'; +$messages['foldersubscribing'] = 'Abonniere Ordner...'; +$messages['folderunsubscribing'] = 'Ordner abbstellen...'; $messages['formincomplete'] = 'Das Formular wurde nicht vollständig ausgefüllt'; $messages['noemailwarning'] = 'Bitte geben Sie eine gültige E-Mail-Adresse ein'; $messages['nonamewarning'] = 'Bitte geben Sie einen Namen ein'; @@ -78,6 +78,10 @@ $messages['searching'] = 'Suche...'; $messages['checking'] = 'Prüfe...'; $messages['nospellerrors'] = 'Keine Rechtschreibfehler gefunden'; $messages['folderdeleted'] = 'Ordner erfolgreich gelöscht'; +$messages['foldersubscribed'] = 'Der Ordner wurde erfolgreich abonniert'; +$messages['folderunsubscribed'] = 'Der Ordner wurde erfolgreich abbestellt'; +$messages['folderpurged'] = 'Der Ordner wurde erfolgreich gelöscht'; +$messages['folderexpunged'] = 'Der Ordner wurde erfolgreich gepackt'; $messages['deletedsuccessfully'] = 'Erfolgreich gelöscht'; $messages['converting'] = 'Entferne Formatierungen der Nachricht...'; $messages['messageopenerror'] = 'Die Nachricht konnte nicht vom Server geladen werden'; @@ -94,7 +98,6 @@ $messages['markingmessage'] = 'Markiere Nachricht(en)...'; $messages['receiptsent'] = 'Lesebestätigung erfolgreich gesendet'; $messages['errorsendingreceipt'] = 'Bestätigung konnte nicht gesendet werden'; $messages['nodeletelastidentity'] = 'Diese Identität kann nicht gelöscht werden, da dies die letzte ist.'; -$messages['addsubfolderhint'] = 'Wird als Unterordner des aktuell selektierten Ordners erstellt'; $messages['forbiddencharacter'] = 'Der Ordnername enthält ein ungültiges Zeichen'; $messages['selectimportfile'] = 'Bitte wählen Sie eine Datei zum Importieren aus'; $messages['addresswriterror'] = 'Das ausgewählte Adressbuch kann nicht verändert werden'; @@ -128,5 +131,11 @@ $messages['messagemoved'] = 'Nachricht(en) erfolgreich verschoben'; $messages['messagecopied'] = 'Nachricht(en) erfolgreich kopiert'; $messages['messagemarked'] = 'Nachricht(en) erfolgreich markiert'; $messages['autocompletechars'] = 'Geben Sie mind. $min Zeichen für die Auto-Vervollständigung ein'; +$messages['namecannotbeempty'] = 'Der Name darf nicht leer sein'; +$messages['nametoolong'] = 'Der Name ist zu lang'; +$messages['folderupdated'] = 'Der Ordner wurde erfolgreich aktualisiert'; +$messages['foldercreated'] = 'Der Ordner wurde erfolgreich erstellt'; +$messages['errorreadonly'] = 'Die Aktion nicht ausgeführt werden. Der Ordner ist schreibgeschützt.'; +$messages['errornoperm'] = 'Die Aktion nicht ausgeführt werden. Zugriff verweigert.'; ?> diff --git a/program/localization/el_GR/labels.inc b/program/localization/el_GR/labels.inc index 5303a08f9..188477099 100644 --- a/program/localization/el_GR/labels.inc +++ b/program/localization/el_GR/labels.inc @@ -238,9 +238,6 @@ $labels['subscribed'] = 'Εγγραφή'; $labels['messagecount'] = 'Μηνύματα'; $labels['create'] = 'Δημιουργία'; $labels['createfolder'] = 'Δημιουργία νέου φακέλου'; -$labels['rename'] = 'Μετονομασία'; -$labels['renamefolder'] = 'Μετονομασία φακέλου'; -$labels['deletefolder'] = 'Διαγραφή φακέλου'; $labels['managefolders'] = 'Διαχείριση φακέλων'; $labels['specialfolders'] = 'Ειδικοί Φάκελοι'; $labels['sortby'] = 'Ταξινόμηση κατά'; diff --git a/program/localization/el_GR/messages.inc b/program/localization/el_GR/messages.inc index de617ce8e..0e781adb3 100644 --- a/program/localization/el_GR/messages.inc +++ b/program/localization/el_GR/messages.inc @@ -52,9 +52,7 @@ $messages['deletecontactconfirm'] = 'Θέλετε να διαγράψετε τη $messages['deletemessagesconfirm'] = 'Θέλετε να διαγράψετε το συγκεκριμένο μήνυμα/τα;'; $messages['deletefolderconfirm'] = 'Θέλετε να διαγράψετε το συγκεκριμένο φάκελο;'; $messages['purgefolderconfirm'] = 'Θέλετε να διαγράψετε όλα τα μηνύματα στο συγκεκριμένο φάκελο;'; -$messages['foldercreating'] = 'Δημιουργία φακέλου'; $messages['folderdeleting'] = 'Διαγραφή φακέλου'; -$messages['folderrenaming'] = 'Μετονομασία φακέλου'; $messages['foldermoving'] = 'Μεταφορά φακέλου'; $messages['formincomplete'] = 'Η φόρμα δεν έχει συμπληρωθεί πλήρως'; $messages['noemailwarning'] = 'Παρακαλώ εισάγετε έγκυρη διεύθυνση email'; @@ -88,7 +86,6 @@ $messages['movingmessage'] = 'Μετακίνηση μηνύματος...'; $messages['receiptsent'] = 'Επιτυχής αποστολή αναφοράς ανάγνωσης'; $messages['errorsendingreceipt'] = 'Αποστολή αναφοράς απέτυχε'; $messages['nodeletelastidentity'] = 'Δε μπορείτε να διαγράψετε αυτήν την ταυτότητα, είναι η τελευταία.'; -$messages['addsubfolderhint'] = 'Αυτός ο φάκελος θα δημιουργηθεί ως υποφάκελος του επιλεγμένου'; $messages['forbiddencharacter'] = 'Η ονομασία φακέλου περιέχει μη επιτρεπτό χαρακτήρα'; $messages['selectimportfile'] = 'Επιλέξτε αρχείο για ανέβασμα'; $messages['addresswriterror'] = 'Η επιλεγμένη ατζέντα διευθύνσεων δεν είνα εγγράψιμη'; diff --git a/program/localization/en_GB/labels.inc b/program/localization/en_GB/labels.inc index 44f4d114d..7a36f007e 100644 --- a/program/localization/en_GB/labels.inc +++ b/program/localization/en_GB/labels.inc @@ -38,11 +38,12 @@ $labels['to'] = 'Recipient'; $labels['cc'] = 'Copy'; $labels['bcc'] = 'Bcc'; $labels['replyto'] = 'Reply-To'; +$labels['followupto'] = 'Followup-To'; $labels['date'] = 'Date'; $labels['size'] = 'Size'; $labels['priority'] = 'Priority'; $labels['organization'] = 'Organisation'; -$labels['reply-to'] = 'Reply-To'; +$labels['readstatus'] = 'Read status'; $labels['mailboxlist'] = 'Folders'; $labels['messagesfromto'] = 'Messages $from to $to of $count'; $labels['threadsfromto'] = 'Threads $from to $to of $count'; @@ -96,7 +97,9 @@ $labels['today'] = 'Today'; $labels['checkmail'] = 'Check for new messages'; $labels['writenewmessage'] = 'Create a new message'; $labels['replytomessage'] = 'Reply to sender'; -$labels['replytoallmessage'] = 'Reply to sender and all recipients'; +$labels['replytoallmessage'] = 'Reply to list or to sender and all recipients'; +$labels['replyall'] = 'Reply all'; +$labels['replylist'] = 'Reply list'; $labels['forwardmessage'] = 'Forward the message'; $labels['deletemessage'] = 'Delete message'; $labels['movemessagetotrash'] = 'Move message to "Deleted Items"'; @@ -169,6 +172,7 @@ $labels['addattachment'] = 'Attach a file'; $labels['charset'] = 'Charset'; $labels['editortype'] = 'Editor type'; $labels['returnreceipt'] = 'Return receipt'; +$labels['dsn'] = 'Delivery status notification'; $labels['editidents'] = 'Edit identities'; $labels['checkspelling'] = 'Check spelling'; $labels['resumeediting'] = 'Resume editing'; @@ -193,6 +197,7 @@ $labels['maxuploadsize'] = 'Maximum allowed file size is $size'; $labels['addcc'] = 'Add Cc'; $labels['addbcc'] = 'Add Bcc'; $labels['addreplyto'] = 'Add Reply-To'; +$labels['addfollowupto'] = 'Add Followup-To'; $labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?'; $labels['receiptread'] = 'Return Receipt (read)'; $labels['yourmessage'] = 'This is a Return Receipt for your message'; @@ -204,6 +209,7 @@ $labels['email'] = 'E-Mail'; $labels['addcontact'] = 'Add new contact'; $labels['editcontact'] = 'Edit contact'; $labels['contacts'] = 'Contacts'; +$labels['contactproperties'] = 'Contact properties'; $labels['edit'] = 'Edit'; $labels['cancel'] = 'Cancel'; $labels['save'] = 'Save'; @@ -251,6 +257,7 @@ $labels['pagesize'] = 'Rows per page'; $labels['signature'] = 'Signature'; $labels['dstactive'] = 'Summer time'; $labels['htmleditor'] = 'Compose HTML messages'; +$labels['htmlonreply'] = 'on reply to HTML message only'; $labels['htmlsignature'] = 'HTML signature'; $labels['previewpane'] = 'Show preview pane'; $labels['skin'] = 'Interface skin'; @@ -259,10 +266,11 @@ $labels['logoutcompact'] = 'Compact Inbox on logout'; $labels['uisettings'] = 'User Interface'; $labels['serversettings'] = 'Server Settings'; $labels['mailboxview'] = 'Mailbox View'; -$labels['mdnrequests'] = 'Sender notifications'; -$labels['askuser'] = 'ask the user'; +$labels['mdnrequests'] = 'On request for return receipt'; +$labels['askuser'] = 'ask each time'; $labels['autosend'] = 'send automatically'; -$labels['autosendknown'] = 'send receipt to my contacts only'; +$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask'; +$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore'; $labels['ignore'] = 'ignore'; $labels['readwhendeleted'] = 'Mark the message as read on delete'; $labels['flagfordeletion'] = 'Flag the message for deletion instead of delete'; @@ -308,16 +316,14 @@ $labels['insertsignature'] = 'Insert signature'; $labels['previewpanemarkread'] = 'Mark previewed messages as read'; $labels['afternseconds'] = 'after $n seconds'; $labels['reqmdn'] = 'Always request a return receipt'; +$labels['reqdsn'] = 'Always request a delivery status notification'; +$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to'; $labels['folder'] = 'Folder'; $labels['folders'] = 'Folders'; $labels['foldername'] = 'Folder name'; -$labels['subscribed'] = 'Subscribed'; $labels['messagecount'] = 'Messages'; $labels['create'] = 'Create'; $labels['createfolder'] = 'Create new folder'; -$labels['rename'] = 'Rename'; -$labels['renamefolder'] = 'Rename folder'; -$labels['deletefolder'] = 'Delete folder'; $labels['managefolders'] = 'Manage folders'; $labels['specialfolders'] = 'Special Folders'; $labels['sortby'] = 'Sort by'; diff --git a/program/localization/en_GB/messages.inc b/program/localization/en_GB/messages.inc index ec4f6e70d..5c1286e6c 100644 --- a/program/localization/en_GB/messages.inc +++ b/program/localization/en_GB/messages.inc @@ -23,6 +23,7 @@ $messages['cookiesdisabled'] = 'Your browser does not accept cookies'; $messages['sessionerror'] = 'Your session is invalid or has expired'; $messages['imaperror'] = 'Connection to IMAP server failed'; $messages['servererror'] = 'Server Error!'; +$messages['servererrormsg'] = 'Server Error: $msg'; $messages['invalidrequest'] = 'Invalid request! No data was saved.'; $messages['nomessagesfound'] = 'No messages found in this mailbox'; $messages['loggedout'] = 'You have successfully terminated the session. Good bye!'; @@ -46,17 +47,15 @@ $messages['sendingfailed'] = 'Failed to send message'; $messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message'; $messages['errorsavingsent'] = 'An error occurred while saving sent message'; $messages['errorsaving'] = 'An error occurred while saving'; -$messages['errormoving'] = 'Could not move the message'; +$messages['errormoving'] = 'Could not move the message(s)'; $messages['errorcopying'] = 'Could not copy the message(s)'; -$messages['errordeleting'] = 'Could not delete the message'; -$messages['errormarking'] = 'Could not mark the message'; +$messages['errordeleting'] = 'Could not delete the message(s)'; +$messages['errormarking'] = 'Could not mark the message(s)'; $messages['deletecontactconfirm'] = 'Do you really want to delete the selected contact(s)?'; $messages['deletemessagesconfirm'] = 'Do you really want to delete the selected message(s)?'; $messages['deletefolderconfirm'] = 'Do you really want to delete this folder?'; $messages['purgefolderconfirm'] = 'Do you really want to delete all messages in this folder?'; -$messages['foldercreating'] = 'Creating folder...'; $messages['folderdeleting'] = 'Deleting folder...'; -$messages['folderrenaming'] = 'Renaming folder...'; $messages['foldermoving'] = 'Moving folder...'; $messages['formincomplete'] = 'The form was not completely filled out'; $messages['noemailwarning'] = 'Please enter a valid email address'; @@ -86,12 +85,13 @@ $messages['copysuccess'] = 'Successfully copied $nr addresses'; $messages['copyerror'] = 'Could not copy any addresses'; $messages['sourceisreadonly'] = 'This address source is read-only'; $messages['errorsavingcontact'] = 'Could not save the contact address'; -$messages['movingmessage'] = 'Moving message...'; -$messages['copyingmessage'] = 'Copying message...'; +$messages['movingmessage'] = 'Moving message(s)...'; +$messages['copyingmessage'] = 'Copying message(s)...'; +$messages['deletingmessage'] = 'Deleting message(s)...'; +$messages['markingmessage'] = 'Marking message(s)...'; $messages['receiptsent'] = 'Successfully sent a read receipt'; $messages['errorsendingreceipt'] = 'Could not send the receipt'; $messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.'; -$messages['addsubfolderhint'] = 'This folder will be created as subfolder of the currently selected one'; $messages['forbiddencharacter'] = 'Folder name contains a forbidden character'; $messages['selectimportfile'] = 'Please select a file to upload'; $messages['addresswriterror'] = 'The selected address book is not writeable'; @@ -109,10 +109,21 @@ $messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed'; $messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg)'; $messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg)'; $messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list'; +$messages['smtpdsnerror'] = 'SMTP Error: Server does not support Delivery Status Notifications'; $messages['smtperror'] = 'SMTP Error: $msg'; $messages['emailformaterror'] = 'Incorrect e-mail address: $email'; $messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.'; $messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max'; $messages['internalerror'] = 'An internal error occured. Please try again'; +$messages['contactdelerror'] = 'Could not delete contact(s)'; +$messages['contactdeleted'] = 'Contact(s) deleted successfully'; +$messages['groupdeleted'] = 'Group deleted successfully'; +$messages['grouprenamed'] = 'Group renamed successfully'; +$messages['groupcreated'] = 'Group created successfully'; +$messages['messagedeleted'] = 'Message(s) deleted successfully'; +$messages['messagemoved'] = 'Message(s) moved successfully'; +$messages['messagecopied'] = 'Message(s) copied successfully'; +$messages['messagemarked'] = 'Message(s) marked successfully'; +$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion'; -?> +?> \ No newline at end of file diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc index a212e65c3..dfeb1c2d4 100644 --- a/program/localization/en_US/labels.inc +++ b/program/localization/en_US/labels.inc @@ -46,19 +46,13 @@ $labels['to'] = 'Recipient'; $labels['cc'] = 'Copy'; $labels['bcc'] = 'Bcc'; $labels['replyto'] = 'Reply-To'; -$labels['mailreplyto'] = 'Mail-Reply-To'; -$labels['mailfollowupto'] = 'Mail-Followup-To'; +$labels['followupto'] = 'Followup-To'; $labels['date'] = 'Date'; $labels['size'] = 'Size'; $labels['priority'] = 'Priority'; $labels['organization'] = 'Organization'; $labels['readstatus'] = 'Read status'; -// aliases -$labels['reply-to'] = $labels['replyto']; -$labels['mail-reply-to'] = $labels['mailreplyto']; -$labels['mail-followup-to'] = $labels['mailfollowupto']; - $labels['mailboxlist'] = 'Folders'; $labels['messagesfromto'] = 'Messages $from to $to of $count'; $labels['threadsfromto'] = 'Threads $from to $to of $count'; @@ -241,8 +235,7 @@ $labels['maxuploadsize'] = 'Maximum allowed file size is $size'; $labels['addcc'] = 'Add Cc'; $labels['addbcc'] = 'Add Bcc'; $labels['addreplyto'] = 'Add Reply-To'; -$labels['addmailreplyto'] = 'Add Mail-Reply-To'; -$labels['addmailfollowupto'] = 'Add Mail-Followup-To'; +$labels['addfollowupto'] = 'Add Followup-To'; // mdn $labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?'; @@ -387,11 +380,15 @@ $labels['subscribed'] = 'Subscribed'; $labels['messagecount'] = 'Messages'; $labels['create'] = 'Create'; $labels['createfolder'] = 'Create new folder'; -$labels['rename'] = 'Rename'; -$labels['renamefolder'] = 'Rename folder'; -$labels['deletefolder'] = 'Delete folder'; $labels['managefolders'] = 'Manage folders'; $labels['specialfolders'] = 'Special Folders'; +$labels['properties'] = 'Properties'; +$labels['folderproperties'] = 'Folder properties'; +$labels['parentfolder'] = 'Parent folder'; +$labels['location'] = 'Location'; +$labels['info'] = 'Information'; +$labels['getfoldersize'] = 'Click to get folder size'; +$labels['changesubscription'] = 'Click to change subscription'; $labels['sortby'] = 'Sort by'; $labels['sortasc'] = 'Sort ascending'; diff --git a/program/localization/en_US/messages.inc b/program/localization/en_US/messages.inc index 0f87c0505..df78b0f34 100644 --- a/program/localization/en_US/messages.inc +++ b/program/localization/en_US/messages.inc @@ -24,6 +24,8 @@ $messages['sessionerror'] = 'Your session is invalid or expired'; $messages['imaperror'] = 'Connection to IMAP server failed'; $messages['servererror'] = 'Server Error!'; $messages['servererrormsg'] = 'Server Error: $msg'; +$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only'; +$messages['errornoperm'] = 'Unable to perform operation. Permission denied'; $messages['invalidrequest'] = 'Invalid request! No data was saved.'; $messages['nomessagesfound'] = 'No messages found in this mailbox'; $messages['loggedout'] = 'You have successfully terminated the session. Good bye!'; @@ -55,10 +57,10 @@ $messages['deletecontactconfirm'] = 'Do you really want to delete the selected $messages['deletemessagesconfirm'] = 'Do you really want to delete the selected message(s)?'; $messages['deletefolderconfirm'] = 'Do you really want to delete this folder?'; $messages['purgefolderconfirm'] = 'Do you really want to delete all messages in this folder?'; -$messages['foldercreating'] = 'Creating folder...'; $messages['folderdeleting'] = 'Deleting folder...'; -$messages['folderrenaming'] = 'Renaming folder...'; $messages['foldermoving'] = 'Moving folder...'; +$messages['foldersubscribing'] = 'Subscribing folder...'; +$messages['folderunsubscribing'] = 'Unsubscribing folder...'; $messages['formincomplete'] = 'The form was not completely filled out'; $messages['noemailwarning'] = 'Please enter a valid email address'; $messages['nonamewarning'] = 'Please enter a name'; @@ -78,6 +80,10 @@ $messages['searching'] = 'Searching...'; $messages['checking'] = 'Checking...'; $messages['nospellerrors'] = 'No spelling errors found'; $messages['folderdeleted'] = 'Folder successfully deleted'; +$messages['foldersubscribed'] = 'Folder successfully subscribed'; +$messages['folderunsubscribed'] = 'Folder successfully unsubscribed'; +$messages['folderpurged'] = 'Folder successfully purged'; +$messages['folderexpunged'] = 'Folder successfully emptied'; $messages['deletedsuccessfully'] = 'Successfully deleted'; $messages['converting'] = 'Removing formatting...'; $messages['messageopenerror'] = 'Could not load message from server'; @@ -94,7 +100,6 @@ $messages['markingmessage'] = 'Marking message(s)...'; $messages['receiptsent'] = 'Successfully sent a read receipt'; $messages['errorsendingreceipt'] = 'Could not send the receipt'; $messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.'; -$messages['addsubfolderhint'] = 'This folder will be created as subfolder of the currently selected one'; $messages['forbiddencharacter'] = 'Folder name contains a forbidden character'; $messages['selectimportfile'] = 'Please select a file to upload'; $messages['addresswriterror'] = 'The selected address book is not writeable'; @@ -128,5 +133,9 @@ $messages['messagemoved'] = 'Message(s) moved successfully'; $messages['messagecopied'] = 'Message(s) copied successfully'; $messages['messagemarked'] = 'Message(s) marked successfully'; $messages['autocompletechars'] = 'Enter at least $min characters for autocompletion'; +$messages['namecannotbeempty'] = 'Name cannot be empty'; +$messages['nametoolong'] = 'Name is too long'; +$messages['folderupdated'] = 'Folder updated successfully'; +$messages['foldercreated'] = 'Folder created successfully'; ?> diff --git a/program/localization/eo/labels.inc b/program/localization/eo/labels.inc index df217047b..06fafd584 100644 --- a/program/localization/eo/labels.inc +++ b/program/localization/eo/labels.inc @@ -220,9 +220,6 @@ $labels['subscribed'] = 'Abonata'; $labels['messagecount'] = 'Mesaĝoj'; $labels['create'] = 'Kreu'; $labels['createfolder'] = 'Kreu novan dosierujon'; -$labels['rename'] = 'Renomu'; -$labels['renamefolder'] = 'Renomu dosierujon'; -$labels['deletefolder'] = 'Forigu dosierujon'; $labels['managefolders'] = 'Administru dosierujon'; $labels['sortby'] = 'Ordigu per'; $labels['sortasc'] = 'Ordigu kreskante'; diff --git a/program/localization/eo/messages.inc b/program/localization/eo/messages.inc index 956aed059..4aa85224e 100644 --- a/program/localization/eo/messages.inc +++ b/program/localization/eo/messages.inc @@ -75,7 +75,6 @@ $messages['movingmessage'] = 'Translokanta mesaĝon...'; $messages['receiptsent'] = 'Sukcese sendis konfirmon'; $messages['errorsendingreceipt'] = 'Ne povis sendi konfirmon'; $messages['nodeletelastidentity'] = 'Vi ne povas forigi ĉi tiun identon, ĉar ĝi estas la lasta'; -$messages['addsubfolderhint'] = 'Ĉi tiu dosierujo estos farita kiel subdosierujo de la nune elektita dosierujo'; $messages['forbiddencharacter'] = 'Dosierujo-nomo enhavas malpermesitan karaktron'; ?> diff --git a/program/localization/es_AR/labels.inc b/program/localization/es_AR/labels.inc index 6c2d16ba3..25f0cf928 100644 --- a/program/localization/es_AR/labels.inc +++ b/program/localization/es_AR/labels.inc @@ -301,9 +301,6 @@ $labels['subscribed'] = 'Suscripta'; $labels['messagecount'] = 'Mensajes'; $labels['create'] = 'Crear'; $labels['createfolder'] = 'Crear nueva carpeta'; -$labels['rename'] = 'Renombrar'; -$labels['renamefolder'] = 'Renombrar carpeta'; -$labels['deletefolder'] = 'Eliminar carpeta'; $labels['managefolders'] = 'Administrar carpetas'; $labels['specialfolders'] = 'Carpetas Especiales'; $labels['sortby'] = 'Ordenar por'; diff --git a/program/localization/es_AR/messages.inc b/program/localization/es_AR/messages.inc index 384349498..3319b6091 100644 --- a/program/localization/es_AR/messages.inc +++ b/program/localization/es_AR/messages.inc @@ -57,9 +57,7 @@ $messages['deletecontactconfirm'] = '¿Realmente quiere eliminar los contactos s $messages['deletemessagesconfirm'] = '¿Realmente quiere eliminar los mensajes seleccionados?'; $messages['deletefolderconfirm'] = '¿Realmente quiere eliminar esta carpeta?'; $messages['purgefolderconfirm'] = '¿Realmente quiere eliminar todos los mensajes de esta carpeta?'; -$messages['foldercreating'] = 'Creando carpeta...'; $messages['folderdeleting'] = 'Eliminando carpeta...'; -$messages['folderrenaming'] = 'Renombrando carpeta...'; $messages['foldermoving'] = 'Moviendo carpeta...'; $messages['formincomplete'] = 'No se han llenado todos los campos del formulario'; $messages['noemailwarning'] = 'Por favor, introduzca un e-mail válido'; @@ -94,7 +92,6 @@ $messages['copyingmessage'] = 'Copiando mensaje...'; $messages['receiptsent'] = 'La notificación de lectura se ha enviado con éxito.'; $messages['errorsendingreceipt'] = 'No se ha podido enviar la notificación de lectura.'; $messages['nodeletelastidentity'] = 'No se puede borrar esta identidad puesto que es la última.'; -$messages['addsubfolderhint'] = 'Esta carpeta se creará como una subcarpeta dentro de la carpeta seleccionada'; $messages['forbiddencharacter'] = 'El nombre de la carpeta contiene un carácter prohibido'; $messages['selectimportfile'] = 'Por favor, seleccione el archivo a subir'; $messages['addresswriterror'] = 'La libreta de direcciones seleccionada es de solo-lectura'; diff --git a/program/localization/es_ES/labels.inc b/program/localization/es_ES/labels.inc index 4e4829f6a..8365693d6 100644 --- a/program/localization/es_ES/labels.inc +++ b/program/localization/es_ES/labels.inc @@ -40,11 +40,15 @@ $labels['to'] = 'Destinatario'; $labels['cc'] = 'Copia'; $labels['bcc'] = 'Cco'; $labels['replyto'] = 'Respuesta a'; +$labels['followupto'] = 'Seguir a'; $labels['date'] = 'Fecha'; $labels['size'] = 'Tamaño'; $labels['priority'] = 'Prioridad'; $labels['organization'] = 'Organización'; +$labels['readstatus'] = 'Leer estado'; $labels['reply-to'] = 'Respuesta a'; +$labels['mail-reply-to'] = 'Responder a'; +$labels['mail-followup-to'] = 'Seguir a'; $labels['mailboxlist'] = 'Bandejas'; $labels['messagesfromto'] = 'Mensajes $from a $to de $count'; $labels['threadsfromto'] = 'Hilos $from a $to de $count'; @@ -99,6 +103,8 @@ $labels['checkmail'] = 'Revisar si hay nuevos mensajes'; $labels['writenewmessage'] = 'Crear nuevo mensaje'; $labels['replytomessage'] = 'Responder mensaje'; $labels['replytoallmessage'] = 'Responder al emisor y a todos los destinatarios'; +$labels['replyall'] = 'Responder a todos'; +$labels['replylist'] = 'Responder a la lista'; $labels['forwardmessage'] = 'Reenviar mensaje'; $labels['deletemessage'] = 'Eliminar mensaje'; $labels['movemessagetotrash'] = 'Mover mensaje a la papelera'; @@ -171,13 +177,15 @@ $labels['addattachment'] = 'Adjuntar un archivo'; $labels['charset'] = 'Codificación'; $labels['editortype'] = 'Tipo de editor'; $labels['returnreceipt'] = 'Acuse de recibo'; +$labels['dsn'] = 'Entrega de notificaciones de estado'; +$labels['editidents'] = 'Editar identidades'; $labels['checkspelling'] = 'Revisar ortografía'; $labels['resumeediting'] = 'Continuar edición'; $labels['revertto'] = 'Revertir a'; $labels['attachments'] = 'Adjuntos'; $labels['upload'] = 'Subir'; $labels['close'] = 'Cerrar'; -$labels['messageoptions'] = 'Opciones de mensaje...'; +$labels['messageoptions'] = 'Opciones de mensaje...'; $labels['low'] = 'Bajo'; $labels['lowest'] = 'Bajísimo'; $labels['normal'] = 'Normal'; @@ -194,6 +202,7 @@ $labels['maxuploadsize'] = 'Tamaño máximo permitido: $size'; $labels['addcc'] = 'Añadir Cc'; $labels['addbcc'] = 'Añadir Cco'; $labels['addreplyto'] = 'Añadir Respuesta a'; +$labels['addfollowupto'] = 'Añadir Seguir a'; $labels['mdnrequest'] = 'El emisor de este mensaje desea ser notificado cuando usted lo lea. ¿Quiere enviar esta notificación?'; $labels['receiptread'] = 'Notificación de lectura'; $labels['yourmessage'] = 'Esta es una notificación de lectura de su mensaje'; @@ -205,6 +214,7 @@ $labels['email'] = 'Correo'; $labels['addcontact'] = 'Añadir nuevo contacto'; $labels['editcontact'] = 'Editar contacto'; $labels['contacts'] = 'Contactos'; +$labels['contactproperties'] = 'Propiedades del contacto'; $labels['edit'] = 'Editar'; $labels['cancel'] = 'Cancelar'; $labels['save'] = 'Guardar'; @@ -252,6 +262,7 @@ $labels['pagesize'] = 'Filas por página'; $labels['signature'] = 'Firma'; $labels['dstactive'] = 'Cambio de horario'; $labels['htmleditor'] = 'Componer mensaje en HTML'; +$labels['htmlonreply'] = 'En respuesta al mensaje sólo HTML'; $labels['htmlsignature'] = 'Firma HTML'; $labels['previewpane'] = 'Mostrar vista preliminar'; $labels['skin'] = 'Apariencia de la interfaz'; @@ -263,6 +274,8 @@ $labels['mailboxview'] = 'Vista de buzón'; $labels['mdnrequests'] = 'Notificaciones de envío'; $labels['askuser'] = 'preguntar al usuario'; $labels['autosend'] = 'enviar automáticamente'; +$labels['autosendknown'] = 'Añade el destinatario a mis contacatos, sino pregunta me'; +$labels['autosendknownignore'] = 'Añade el destinatario a mis contacatos, ignoralo'; $labels['ignore'] = 'ignorar'; $labels['readwhendeleted'] = 'Marcar el mensaje como leído al borrarlo'; $labels['flagfordeletion'] = 'Marcar el mensaje para borrarse en vez de borrarlo'; @@ -307,6 +320,9 @@ $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'; +$labels['reqmdn'] = 'Solicitar siempre un acuse de recibo'; +$labels['reqdsn'] = 'Solicitar siempre la entrega de notificaciones de estado'; +$labels['replysamefolder'] = 'Coloque las respuestas en la carpeta del mensaje que se responde'; $labels['folder'] = 'Bandeja'; $labels['folders'] = 'Bandejas'; $labels['foldername'] = 'Nombre de bandeja'; @@ -314,9 +330,6 @@ $labels['subscribed'] = 'Suscrita'; $labels['messagecount'] = 'Mensajes'; $labels['create'] = 'Crear'; $labels['createfolder'] = 'Crear nueva bandeja'; -$labels['rename'] = 'Renombrar'; -$labels['renamefolder'] = 'Renombrar bandeja'; -$labels['deletefolder'] = 'Eliminar bandeja'; $labels['managefolders'] = 'Administrar bandejas'; $labels['specialfolders'] = 'Bandejas Especiales'; $labels['sortby'] = 'Ordenar por'; diff --git a/program/localization/es_ES/messages.inc b/program/localization/es_ES/messages.inc index d2d4a83e3..24014a72b 100644 --- a/program/localization/es_ES/messages.inc +++ b/program/localization/es_ES/messages.inc @@ -25,6 +25,7 @@ $messages['cookiesdisabled'] = 'Su navegador no acepta cookies'; $messages['sessionerror'] = 'Su sesión no existe o ha expirado'; $messages['imaperror'] = 'Error de conexión con el servidor IMAP'; $messages['servererror'] = '¡Error en el servidor!'; +$messages['servererrormsg'] = 'Error del Servidor: $msg'; $messages['invalidrequest'] = '¡Petición no válida! No se han guardado los datos.'; $messages['nomessagesfound'] = 'No se han encontrado mensajes en esta casilla'; $messages['loggedout'] = 'Ha cerrado la sesión. ¡Hasta pronto!'; @@ -56,9 +57,7 @@ $messages['deletecontactconfirm'] = '¿Realmente quiere eliminar los contactos s $messages['deletemessagesconfirm'] = '¿Realmente quiere eliminar los mensajes seleccionados?'; $messages['deletefolderconfirm'] = '¿Realmente quiere eliminar esta carpeta?'; $messages['purgefolderconfirm'] = '¿Realmente quiere eliminar todos los mensajes de esta carpeta?'; -$messages['foldercreating'] = 'Creando carpeta...'; $messages['folderdeleting'] = 'Borrando carpeta...'; -$messages['folderrenaming'] = 'Renombrando carpeta...'; $messages['foldermoving'] = 'Moviendo carpeta...'; $messages['formincomplete'] = 'No ha rellenado todos los campos del formulario'; $messages['noemailwarning'] = 'Por favor, introduzca un e-mail válido'; @@ -90,10 +89,11 @@ $messages['sourceisreadonly'] = 'Esta dirección es de sólo-lectura'; $messages['errorsavingcontact'] = 'No se pudo guardar la dirección de contacto'; $messages['movingmessage'] = 'Moviendo mensaje...'; $messages['copyingmessage'] = 'Copiando mensaje...'; +$messages['deletingmessage'] = 'Eliminando Mensaje(s)...'; +$messages['markingmessage'] = 'Marcando Mensaje(s)...'; $messages['receiptsent'] = 'La notificación de lectura se ha enviado con éxito.'; $messages['errorsendingreceipt'] = 'No se ha podido enviar la notificación de lectura.'; $messages['nodeletelastidentity'] = 'No se puede borrar esta identidad puesto que es la última.'; -$messages['addsubfolderhint'] = 'Esta carpeta se creará como una subcarpeta dentro de la carpeta seleccionada'; $messages['forbiddencharacter'] = 'El nombre de la carpeta contiene un carácter prohibido'; $messages['selectimportfile'] = 'Por favor, seleccione un archivo para subir'; $messages['addresswriterror'] = 'No se puede escribir la dirección de contacto seleccionada'; @@ -111,10 +111,21 @@ $messages['smtpautherror'] = 'Error SMTP ($code): Error de autenticación'; $messages['smtpfromerror'] = 'Error SMTP ($code): No se ha podido asignar el emisor "$from" ($msg)'; $messages['smtptoerror'] = 'Error SMTP ($code): No se ha podido establecer remitente "$to" ($msg)'; $messages['smtprecipientserror'] = 'Error SMTP: No es posible analizar la lista de destinatarios'; +$messages['smtpdsnerror'] = 'Error SMTP: No hay soporte para las Notificaciones de Entrega'; $messages['smtperror'] = 'Error SMTP: $msg'; $messages['emailformaterror'] = 'Dirección e-mail incorrecta: $email'; $messages['toomanyrecipients'] = 'Hay demasiados destinatarios. Reduzca el número de destinatarios a $max.'; $messages['maxgroupmembersreached'] = 'El número de miembros del grupo excede el máximo de $max.'; $messages['internalerror'] = 'Ocurrió un error interno. Por favor intentalo de nuevo'; +$messages['contactdelerror'] = 'No se ha podido eliminar el contacto(s)'; +$messages['contactdeleted'] = 'Contacto(s) eliminado(s) correctamente'; +$messages['groupdeleted'] = 'Grupo eliminado correctamente'; +$messages['grouprenamed'] = 'Grupo renombrado correctamente'; +$messages['groupcreated'] = 'Grupo creado correctamente'; +$messages['messagedeleted'] = 'Mensaje(s) eliminado(s) correctamente'; +$messages['messagemoved'] = 'Mensaje(s) movido(s) correctamente'; +$messages['messagecopied'] = 'Mensaje(s) copiado(s) correctamente'; +$messages['messagemarked'] = 'Mensaje(s) marcado(s) correctamente'; +$messages['autocompletechars'] = 'Introduce al menos $min caracteres para autocompletar'; ?> diff --git a/program/localization/et_EE/labels.inc b/program/localization/et_EE/labels.inc index 6f8434fdc..a80155d70 100644 --- a/program/localization/et_EE/labels.inc +++ b/program/localization/et_EE/labels.inc @@ -40,8 +40,7 @@ $labels['to'] = 'Saaja'; $labels['cc'] = 'Koopia'; $labels['bcc'] = 'Pimekoopia'; $labels['replyto'] = 'Vastus aadressile'; -$labels['mailreplyto'] = 'Mail-Reply-To'; -$labels['mailfollowupto'] = 'Mail-Followup-To'; +$labels['followupto'] = 'Followup-To'; $labels['date'] = 'Kuupäev'; $labels['size'] = 'Suurus'; $labels['priority'] = 'Tähtsus'; @@ -203,8 +202,7 @@ $labels['maxuploadsize'] = 'Faili maksimaalne lubatud suurus on $size'; $labels['addcc'] = 'Lisa koopia'; $labels['addbcc'] = 'Lisa pimekoopia'; $labels['addreplyto'] = 'Lisa vastus aadressile'; -$labels['addmailreplyto'] = 'Lisa Mail-Reply-To'; -$labels['addmailfollowupto'] = 'Lisa Mail-Followup-To'; +$labels['addfollowupto'] = 'Lisa Followup-To'; $labels['mdnrequest'] = 'Selle kirja saatja soovib saada kinnitust kirja lugemise kohta. Kas soovid kinnituse saata?'; $labels['receiptread'] = 'Kättesaamiskinnitus (leotud)'; $labels['yourmessage'] = 'See on sinu saadetud kirja kättesaamiskinnitus'; @@ -332,11 +330,15 @@ $labels['subscribed'] = 'Näitan'; $labels['messagecount'] = 'Kirju'; $labels['create'] = 'Loo'; $labels['createfolder'] = 'Uue kausta loomine'; -$labels['rename'] = 'Nimeta ümber'; -$labels['renamefolder'] = 'Nimeta olemasolev kaust ümber'; -$labels['deletefolder'] = 'Kustuta kaust'; $labels['managefolders'] = 'Halda kaustu'; $labels['specialfolders'] = 'Erilised kaustad'; +$labels['properties'] = 'Omadused'; +$labels['folderproperties'] = 'Kausta omadused'; +$labels['parentfolder'] = 'Ülemine kaust'; +$labels['location'] = 'Asukoht'; +$labels['info'] = 'Teave'; +$labels['getfoldersize'] = 'Kliki kausta suuruse teadasaamiseks'; +$labels['changesubscription'] = 'Kliki kausta tellimuste muutmiseks'; $labels['sortby'] = 'Järjesta'; $labels['sortasc'] = 'Järjesta kasvavalt'; $labels['sortdesc'] = 'Järjesta kahanevalt'; diff --git a/program/localization/et_EE/messages.inc b/program/localization/et_EE/messages.inc index f67927768..391b04e3d 100644 --- a/program/localization/et_EE/messages.inc +++ b/program/localization/et_EE/messages.inc @@ -26,6 +26,8 @@ $messages['sessionerror'] = 'Sinu seanss on aegunud või vigane'; $messages['imaperror'] = 'Ei õnnestunud IMAP serveriga ühendust luua'; $messages['servererror'] = 'Serveri tõrge!'; $messages['servererrormsg'] = 'Serveri tõrge: $msg'; +$messages['errorreadonly'] = 'Operatsioon nurjus. Kaustale on vaid lugemisõigus'; +$messages['errornoperm'] = 'Operatsioon nurjus. Ligipääsu õigused puuduvad'; $messages['invalidrequest'] = 'Lubamatu päring! Andmeid ei salvestatud.'; $messages['nomessagesfound'] = 'Postkast paistab tühi olevat'; $messages['loggedout'] = 'Sinu seanss on edukalt lõpetatud. Nägemiseni!'; @@ -57,10 +59,10 @@ $messages['deletecontactconfirm'] = 'Soovid valitud kontaktid kustutada?'; $messages['deletemessagesconfirm'] = 'Soovid valitud kirja(d) kustutada?'; $messages['deletefolderconfirm'] = 'Soovid selle kataloogi kindlasti kustutada?'; $messages['purgefolderconfirm'] = 'Soovid sellest kaustast kõik kirjad kustutada?'; -$messages['foldercreating'] = 'Loon kausta...'; $messages['folderdeleting'] = 'Kustutan kausta...'; -$messages['folderrenaming'] = 'Nimetan kausta ümber...'; $messages['foldermoving'] = 'Liigutan kausta...'; +$messages['foldersubscribing'] = 'Tellin kausta...'; +$messages['folderunsubscribing'] = 'Peatan kausta tellimuse...'; $messages['formincomplete'] = 'Vormi kõik väljad ei ole täidetud'; $messages['noemailwarning'] = 'Palun sisesta toimiv e-posti aadress'; $messages['nonamewarning'] = 'Palun sisesta nimi'; @@ -80,6 +82,10 @@ $messages['searching'] = 'Otsin...'; $messages['checking'] = 'Kontrollin...'; $messages['nospellerrors'] = 'Õigekirjavigu ei leitud'; $messages['folderdeleted'] = 'Kausta kustutamine õnnestus'; +$messages['foldersubscribed'] = 'Kausta tellimine õnnestus'; +$messages['folderunsubscribed'] = 'Kausta tellimise peatamine õnnestus'; +$messages['folderpurged'] = 'Kaust puhastatud edukalt'; +$messages['folderexpunged'] = 'Kaust tühjendatud edukalt'; $messages['deletedsuccessfully'] = 'Edukalt kustutatud'; $messages['converting'] = 'Eemaldan kirjast vormindust...'; $messages['messageopenerror'] = 'Kirjade serverist laadimine ebaõnnestus'; @@ -96,7 +102,6 @@ $messages['markingmessage'] = 'Märgin kirja...'; $messages['receiptsent'] = 'Kättesaamiskinnitus saadetud'; $messages['errorsendingreceipt'] = 'Ei õnnestunud kättesaamiskinnitust saata'; $messages['nodeletelastidentity'] = 'See identiteet on viimane ja seda ei saa kustutada.'; -$messages['addsubfolderhint'] = 'See kataloog luuakse valitud kausta alamkataloogina.'; $messages['forbiddencharacter'] = 'Kausta nimi sisaldab keelatud sümbolit'; $messages['selectimportfile'] = 'Palun vali üleslaadimiseks fail'; $messages['addresswriterror'] = 'Valitud aadressiraamat pole kirjutatav'; @@ -130,8 +135,9 @@ $messages['messagemoved'] = 'Kiri edukalt liigutatud'; $messages['messagecopied'] = 'Kiri edukalt kopeeritud'; $messages['messagemarked'] = 'Kiri edukalt märgitud'; $messages['autocompletechars'] = 'Sisesta vähemalt $min märki autocompleteks'; +$messages['namecannotbeempty'] = 'Nimi ei saa olla tühi'; +$messages['nametoolong'] = 'Nimi liiga pikk'; +$messages['folderupdated'] = 'Kaust uuendatud edukalt'; +$messages['foldercreated'] = 'Kaust loodud edukalt'; ?> - - - diff --git a/program/localization/eu_ES/labels.inc b/program/localization/eu_ES/labels.inc index 1572ce2b5..9080f8a6d 100644 --- a/program/localization/eu_ES/labels.inc +++ b/program/localization/eu_ES/labels.inc @@ -224,9 +224,6 @@ $labels['subscribed'] = 'Harpideturik'; $labels['messagecount'] = 'Mezuak'; $labels['create'] = 'Sortu'; $labels['createfolder'] = 'Karpeta berria sortu'; -$labels['rename'] = 'Berrizendatu'; -$labels['renamefolder'] = 'Karpeta berrizendatu'; -$labels['deletefolder'] = 'Karpeta ezabatu'; $labels['managefolders'] = 'Karpeta kudeaketa'; $labels['specialfolders'] = 'Karpeta bereziak'; $labels['sortby'] = 'Honela ordenatu'; diff --git a/program/localization/eu_ES/messages.inc b/program/localization/eu_ES/messages.inc index d3787af0e..df2af027d 100644 --- a/program/localization/eu_ES/messages.inc +++ b/program/localization/eu_ES/messages.inc @@ -78,7 +78,6 @@ $messages['movingmessage'] = 'Mezua mugitzen...'; $messages['receiptsent'] = 'Ondo bidalia irakurritako agiria'; $messages['errorsendingreceipt'] = 'Ezin da agiria bidali'; $messages['nodeletelastidentity'] = 'Ezin da izaera hau ezabatu, zure bakarra da'; -$messages['addsubfolderhint'] = 'Aukeratutakoaren azpikarpeta bezala sortuko da karpeta hau'; $messages['forbiddencharacter'] = 'Karpeta izenak debekatutako karaktereak ditu'; ?> diff --git a/program/localization/fa/labels.inc b/program/localization/fa/labels.inc index 3bf67a640..1df874367 100644 --- a/program/localization/fa/labels.inc +++ b/program/localization/fa/labels.inc @@ -247,13 +247,9 @@ $labels['checkallfolders'] = 'همه پوشه ها رو برای مشاهده پ $labels['folder'] = 'پوشه'; $labels['folders'] = 'پوشه‌ها'; $labels['foldername'] = 'نام پوشه'; -$labels['subscribed'] = 'مورد اشتراک'; $labels['messagecount'] = 'پیغام‌ها'; $labels['create'] = 'ایجاد'; $labels['createfolder'] = 'ایجاد پوشه‌ی جدید'; -$labels['rename'] = 'تغییر نام'; -$labels['renamefolder'] = 'تغییر نام پوشه'; -$labels['deletefolder'] = 'حذف پوشه'; $labels['managefolders'] = 'مدیریت پوشه‌ها'; $labels['specialfolders'] = 'پوشه های ویژه'; $labels['sortby'] = 'مرتب‌سازی بر اساس'; diff --git a/program/localization/fa/messages.inc b/program/localization/fa/messages.inc index 69146df06..1a9673a39 100644 --- a/program/localization/fa/messages.inc +++ b/program/localization/fa/messages.inc @@ -50,9 +50,7 @@ $messages['deletecontactconfirm'] = 'آیا واقعاً می‌خواهید ت $messages['deletemessagesconfirm'] = 'آیا واقعاً می‌خواهید پیغام (های) انتخاب شده را حذف کنید؟'; $messages['deletefolderconfirm'] = 'آیا واقعاً می‌خواهید این پوشه را حذف کنید؟'; $messages['purgefolderconfirm'] = 'آیا واقعاً می‌خواهید همه‌ی پیغام‌های داخل این پوشه را حذف کنید؟'; -$messages['foldercreating'] = '...در حال ایجاد پوشه '; $messages['folderdeleting'] = '...در حال حذف پوشه '; -$messages['folderrenaming'] = '...در حال تغییر نام پوشه '; $messages['foldermoving'] = '...در حال انتقال پوشه '; $messages['formincomplete'] = 'فرم کاملاً پر نشده بود'; $messages['noemailwarning'] = 'لطفاً یک نشانی ایمیل معتبر وارد کنید'; @@ -85,7 +83,6 @@ $messages['movingmessage'] = '...در حال انتقال پیغام'; $messages['receiptsent'] = 'رسید خواندن با موفقیت ارسال شد'; $messages['errorsendingreceipt'] = 'ناتوان در ارسال رسید'; $messages['nodeletelastidentity'] = '.نمی‌توانید این هویت را حذف کنید، زیرا آخرین هویت شماست'; -$messages['addsubfolderhint'] = 'پوشه به عنوان زیرپوشه ای ساخته خواهد شد که هم اکنون انتخاب شده است'; $messages['forbiddencharacter'] = 'نام پوشه شامل یک حرف غیر مجاز است'; $messages['selectimportfile'] = 'لطفاً فایل را جهت بارگذاری انتخاب کنید'; $messages['addresswriterror'] = 'در دفترچه تلفن انتخابی ، اجازه نوشتن ندارید'; diff --git a/program/localization/fa_AF/labels.inc b/program/localization/fa_AF/labels.inc index 1fc3a01e1..19700a5da 100644 --- a/program/localization/fa_AF/labels.inc +++ b/program/localization/fa_AF/labels.inc @@ -287,9 +287,6 @@ $labels['subscribed'] = 'مشترک '; $labels['messagecount'] = 'پيغام ها '; $labels['create'] = 'ایجاد کردن'; $labels['createfolder'] = 'ایجاد پوشه جدید'; -$labels['rename'] = 'تغيير نام '; -$labels['renamefolder'] = 'تغييرنام پوشه '; -$labels['deletefolder'] = 'حذف کردن پوشه '; $labels['managefolders'] = 'اداره کردن پوشه ها '; $labels['specialfolders'] = 'پوشه های مخصوص'; diff --git a/program/localization/fa_AF/messages.inc b/program/localization/fa_AF/messages.inc index 17394ac1c..f298e0f25 100644 --- a/program/localization/fa_AF/messages.inc +++ b/program/localization/fa_AF/messages.inc @@ -31,9 +31,7 @@ $messages['deletecontactconfirm'] = 'آيا واقعاً شما ميخواهي $messages['deletemessagesconfirm'] = 'آيا واقعاً شما ميخواهيد که پيغام هاي انتخاب شده را حذف کنيد؟ '; $messages['deletefolderconfirm'] = 'آيا واقعاً شما ميخواهيد که اين پوشه را حذف کنيد؟ '; $messages['purgefolderconfirm'] = 'آيا واقعاً شما ميخواهيد تمام پيغام های که در اين پوشه وجود دارد حذف کنيد؟ '; -$messages['foldercreating'] = 'در حال ایجاد پوشه'; $messages['folderdeleting'] = 'در حال حذف پوشه'; -$messages['folderrenaming'] = 'در حال تغییر نام پوشه'; $messages['foldermoving'] = 'در حال انتقال پوشه'; $messages['formincomplete'] = 'فورمه بصورت مکمل خانه پري نه شده است '; $messages['noemailwarning'] = 'لطفاً يک ايميل ادرس موجود را داخل کنيد '; @@ -66,7 +64,6 @@ $messages['movingmessage'] = 'ذر حال انتقال پیام...'; $messages['receiptsent'] = 'یک رسید برای ارسال کننده این پیام فرستاده شد.'; $messages['errorsendingreceipt'] = 'رسيد ارسال شده نتوانست '; $messages['nodeletelastidentity'] = 'شما این شناخت نامه را حذف کرده نمیتوانید. این آخرین شناخت نامه شما است.'; -$messages['addsubfolderhint'] = 'این پوشه به حیث پوشه فرعی پوشه انتخاب شده فعلی ساخته خواهد شد.'; $messages['forbiddencharacter'] = 'نام پوشه دارای یک کرکتر ممنوعه است.'; $messages['selectimportfile'] = 'لطفاً یک فایل را برای آپلود کردن انتخاب نمایید.'; $messages['addresswriterror'] = 'کتابچه آدرس انتخاب شده دارای اجازه نامه نوشتاری نیست.'; diff --git a/program/localization/fi_FI/labels.inc b/program/localization/fi_FI/labels.inc index 31aaf834f..45a80327e 100644 --- a/program/localization/fi_FI/labels.inc +++ b/program/localization/fi_FI/labels.inc @@ -308,9 +308,6 @@ $labels['subscribed'] = 'Näytetään'; $labels['messagecount'] = 'Viestejä'; $labels['create'] = 'Luo uusi'; $labels['createfolder'] = 'Luo uusi kansio'; -$labels['rename'] = 'Nimeä uudelleen'; -$labels['renamefolder'] = 'Nimeä kansio uudelleen'; -$labels['deletefolder'] = 'Poista kansio'; $labels['managefolders'] = 'Kansioiden hallinta'; $labels['specialfolders'] = 'Erikoiskansiot'; $labels['sortby'] = 'Järjestä'; diff --git a/program/localization/fi_FI/messages.inc b/program/localization/fi_FI/messages.inc index ddf98f4ca..641dedffb 100644 --- a/program/localization/fi_FI/messages.inc +++ b/program/localization/fi_FI/messages.inc @@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Haluatko varmasti poistaa valitut kontaktit $messages['deletemessagesconfirm'] = 'Haluatko varmasti poistaa valitut viestit?'; $messages['deletefolderconfirm'] = 'Haluatko varmasti poistaa kansion?'; $messages['purgefolderconfirm'] = 'Haluatko varmasti poistaa kaikki viestit kansiosta?'; -$messages['foldercreating'] = 'Luodaan kansiota...'; $messages['folderdeleting'] = 'Poistetaan kansiota...'; -$messages['folderrenaming'] = 'Nimetään kansiota...'; $messages['foldermoving'] = 'Siirretään kansiota...'; $messages['formincomplete'] = 'Lomakkeen tiedot olivat puutteelliset'; $messages['noemailwarning'] = 'Anna sähköpostiosoite'; @@ -92,7 +90,6 @@ $messages['copyingmessage'] = 'Kopioidaan viestiä...'; $messages['receiptsent'] = 'Lukukuittaus lähetetty onnistuneesti'; $messages['errorsendingreceipt'] = 'Lukukuittausta ei voitu lähettää'; $messages['nodeletelastidentity'] = 'Et voi poistaa tätä identiteettiä, koska se on ainoa jäljelläoleva'; -$messages['addsubfolderhint'] = 'Uusi kansio luodaan valitun kansion alikansiona'; $messages['forbiddencharacter'] = 'Kansion nimessä on kiellettyjä merkkejä'; $messages['selectimportfile'] = 'Valitse lähetettävä tiedosto'; $messages['addresswriterror'] = 'Valittuun osoitekirjaan ei voi kirjoittaa'; diff --git a/program/localization/fr_FR/labels.inc b/program/localization/fr_FR/labels.inc index 09028f267..a3e4bc01d 100644 --- a/program/localization/fr_FR/labels.inc +++ b/program/localization/fr_FR/labels.inc @@ -44,6 +44,7 @@ $labels['date'] = 'Date'; $labels['size'] = 'Taille'; $labels['priority'] = 'Priorité'; $labels['organization'] = 'Organisation'; +$labels['readstatus'] = 'Status de lecture'; $labels['reply-to'] = 'Répondre à'; $labels['mailboxlist'] = 'Dossiers'; $labels['messagesfromto'] = 'Messages de $from à $to sur $count'; @@ -99,6 +100,8 @@ $labels['checkmail'] = 'Vérification des nouveaux messages'; $labels['writenewmessage'] = 'Écrire un nouveau message'; $labels['replytomessage'] = 'Répondre au message'; $labels['replytoallmessage'] = 'Répondre à tous'; +$labels['replyall'] = 'Répondre à tous'; +$labels['replylist'] = 'Répondre à la liste'; $labels['forwardmessage'] = 'Transmettre le message'; $labels['deletemessage'] = 'Déplacer le message dans la corbeille'; $labels['movemessagetotrash'] = 'Déplacer le message dans la corbeille'; @@ -171,6 +174,7 @@ $labels['addattachment'] = 'Joindre un fichier'; $labels['charset'] = 'Encodage'; $labels['editortype'] = 'Type d\'éditeur'; $labels['returnreceipt'] = 'Accusé de réception'; +$labels['dsn'] = 'Notification d\'état de distribution'; $labels['editidents'] = 'Modifier les identités'; $labels['checkspelling'] = 'Vérifier l\'orthographe'; $labels['resumeediting'] = 'Retourner à l\'édition'; @@ -206,6 +210,7 @@ $labels['email'] = 'Courriel'; $labels['addcontact'] = 'Ajouter le contact sélectionné à votre Carnet d\'adresses'; $labels['editcontact'] = 'Modifier le contact'; $labels['contacts'] = 'Contacts'; +$labels['contactproperties'] = 'Propriétés de contact'; $labels['edit'] = 'Modifier'; $labels['cancel'] = 'Annuler'; $labels['save'] = 'Sauvegarder'; @@ -253,6 +258,7 @@ $labels['pagesize'] = 'Nombre de lignes par page'; $labels['signature'] = 'Signature'; $labels['dstactive'] = 'Heure d\'été'; $labels['htmleditor'] = 'Composer un message au format HTML'; +$labels['htmlonreply'] = 'en réponse aux messages HTML uniquement'; $labels['htmlsignature'] = 'Signature HTML'; $labels['previewpane'] = 'Afficher le panneau d\'aperçu'; $labels['skin'] = 'Thème de l\'interface'; @@ -265,6 +271,7 @@ $labels['mdnrequests'] = 'Notifications à l\'expéditeur'; $labels['askuser'] = 'demander à l\'utilisateur'; $labels['autosend'] = 'envoyer automatiquement'; $labels['autosendknown'] = 'Envoyer un avis de réception uniquement à mes contacts'; +$labels['autosendknownignore'] = 'envoie un accusé à mes contacts, sinon ignorer'; $labels['ignore'] = 'ignorer'; $labels['readwhendeleted'] = 'Marquer le message comme lu à la suppression'; $labels['flagfordeletion'] = 'Mettre le drapeau de suppression au lieu de supprimer'; @@ -310,6 +317,8 @@ $labels['insertsignature'] = 'Insérer la signature'; $labels['previewpanemarkread'] = 'Marquer les messages prévisualisés comme lus'; $labels['afternseconds'] = 'après $n secondes'; $labels['reqmdn'] = 'Toujours demandé un avis de réception'; +$labels['reqdsn'] = 'Toujours demander une notification d\'état de distribution'; +$labels['replysamefolder'] = 'Placer les réponses dans le dossier du message étant répondu'; $labels['folder'] = 'Dossier'; $labels['folders'] = 'Dossiers'; $labels['foldername'] = 'Nom du dossier'; @@ -317,11 +326,15 @@ $labels['subscribed'] = 'Abonné'; $labels['messagecount'] = 'Messages'; $labels['create'] = 'Créer'; $labels['createfolder'] = 'Créer un nouveau dossier'; -$labels['rename'] = 'Renommer'; -$labels['renamefolder'] = 'Renommer le dossier'; -$labels['deletefolder'] = 'Supprimer le dossier'; $labels['managefolders'] = 'Organiser les dossiers'; $labels['specialfolders'] = 'Dossiers spéciaux'; +$labels['properties'] = 'Propriétés'; +$labels['folderproperties'] = 'Propriétés du dossier'; +$labels['parentfolder'] = 'Dossier parant'; +$labels['location'] = 'Localisation'; +$labels['info'] = 'Information'; +$labels['getfoldersize'] = 'Cliquer pour obtenir la taille de dossier'; +$labels['changesubscription'] = 'Cliquer pour modifier l\'inscription'; $labels['sortby'] = 'Trier par'; $labels['sortasc'] = 'Tri ascendant'; $labels['sortdesc'] = 'Tri descendant'; diff --git a/program/localization/fr_FR/messages.inc b/program/localization/fr_FR/messages.inc index a3018fafc..66239486e 100644 --- a/program/localization/fr_FR/messages.inc +++ b/program/localization/fr_FR/messages.inc @@ -25,6 +25,7 @@ $messages['cookiesdisabled'] = 'Votre navigateur n\'accepte pas les cookies'; $messages['sessionerror'] = 'Votre session est invalide ou a expiré'; $messages['imaperror'] = 'Erreur de connexion au serveur IMAP'; $messages['servererror'] = 'Erreur Serveur !'; +$messages['servererrormsg'] = 'Erreur du serveur: $msg'; $messages['invalidrequest'] = 'Requête invalide ! Aucune donnée n\'a été sauvegardée.'; $messages['nomessagesfound'] = 'Aucun message trouvé dans cette boîte aux lettres'; $messages['loggedout'] = 'Vous venez de vous déconnecter avec succès. Au revoir !'; @@ -56,9 +57,7 @@ $messages['deletecontactconfirm'] = 'Voulez-vous vraiment effacer le(s) contact( $messages['deletemessagesconfirm'] = 'Voulez-vous vraiment supprimer le(s) message(s) sélectionné(s) ?'; $messages['deletefolderconfirm'] = 'Voulez-vous vraiment effacer ce dossier ?'; $messages['purgefolderconfirm'] = 'Voulez-vous vraiment effacer tous les messages de ce dossier ?'; -$messages['foldercreating'] = 'Création du dossier...'; $messages['folderdeleting'] = 'Suppression du dossier...'; -$messages['folderrenaming'] = 'Renommage du dossier...'; $messages['foldermoving'] = 'Déplacement du dossier...'; $messages['formincomplete'] = 'Le formulaire n\'a pas été entièrement rempli'; $messages['noemailwarning'] = 'Veuillez spécifier un courriel valide'; @@ -90,10 +89,11 @@ $messages['sourceisreadonly'] = 'Cette source d\'adresse est en lecture seule'; $messages['errorsavingcontact'] = 'Ne peut pas enregistrer l\'adresse du contact'; $messages['movingmessage'] = 'Déplacement du message...'; $messages['copyingmessage'] = 'Copie du message ...'; +$messages['deletingmessage'] = 'Suppression des messages...'; +$messages['markingmessage'] = 'Marquage des messages...'; $messages['receiptsent'] = 'L\'accusé de réception a bien été envoyé'; $messages['errorsendingreceipt'] = 'L\'accusé de réception n\'a pas pu être envoyé'; $messages['nodeletelastidentity'] = 'Vous ne pouvez pas effacer votre seule identité.'; -$messages['addsubfolderhint'] = 'Ce dossier sera créé comme sous-dossier de celui sélectionné.'; $messages['forbiddencharacter'] = 'Le nom du dossier contient un caractère interdit'; $messages['selectimportfile'] = 'Veuillez sélectionner un fichier à envoyer'; $messages['addresswriterror'] = 'Impossible d\'écrire dans le carnet d\'adresse sélectionné'; @@ -111,10 +111,21 @@ $messages['smtpautherror'] = 'Erreur SMTP ($code): Echec de l\'authentification' $messages['smtpfromerror'] = 'Erreur SMTP ($code): Impossible de définir l\'expéditeur "$from" ($msg)'; $messages['smtptoerror'] = 'Erreur SMTP ($code): Impossible d\'ajouter le destinataire "$to" ($msg)'; $messages['smtprecipientserror'] = 'Erreur SMTP: Impossible de lire la liste des destinataires'; +$messages['smtpdsnerror'] = 'Erreur SMTP: Pas de support des notifications d\'état de distribution'; $messages['smtperror'] = 'Erreur SMTP: $msg'; $messages['emailformaterror'] = 'Adresse email incorrecte: $email'; $messages['toomanyrecipients'] = 'Trop de destinataires. Réduisez leur nombre à $max maximum.'; $messages['maxgroupmembersreached'] = 'Le nombre de membres du groupe dépasse le maximum de $max.'; $messages['internalerror'] = 'Une erreur interne est survenue. Merci de réessayer'; +$messages['contactdelerror'] = 'Les contacts n\'ont pas pu être supprimés'; +$messages['contactdeleted'] = 'Les contacts ont bien été supprimés'; +$messages['groupdeleted'] = 'Le groupe a bien été supprimé'; +$messages['grouprenamed'] = 'Le groupe a bien été renommé'; +$messages['groupcreated'] = 'Le groupe a bien été créé'; +$messages['messagedeleted'] = 'Les messages ont bien été supprimés'; +$messages['messagemoved'] = 'Les messages ont bien été déplacés'; +$messages['messagecopied'] = 'Les messages ont bien été copiés'; +$messages['messagemarked'] = 'Les messages ont bien été marqués'; +$messages['autocompletechars'] = 'Entrez au moins $min caractères pour l\'auto-complétion'; -?> \ No newline at end of file +?> diff --git a/program/localization/ga_IE/labels.inc b/program/localization/ga_IE/labels.inc index d6c5f0530..40b99a232 100755 --- a/program/localization/ga_IE/labels.inc +++ b/program/localization/ga_IE/labels.inc @@ -167,9 +167,6 @@ $labels['foldername'] = 'Ainm fillteán'; $labels['subscribed'] = 'Síntiú'; $labels['create'] = 'Cruthaigh'; $labels['createfolder'] = 'Cruthaigh fillteán nua'; -$labels['rename'] = 'Ainmnigh arís'; -$labels['renamefolder'] = 'Ainmnigh fillteán arís'; -$labels['deletefolder'] = 'Scrios fillteán'; $labels['managefolders'] = 'Stiúir na fillteán'; $labels['sortby'] = 'Sórtáil trí'; $labels['sortasc'] = 'Sórtáil in ord méadaitheach'; diff --git a/program/localization/gl_ES/labels.inc b/program/localization/gl_ES/labels.inc index 13e2a2ca8..1ba8edbd9 100644 --- a/program/localization/gl_ES/labels.inc +++ b/program/localization/gl_ES/labels.inc @@ -28,18 +28,22 @@ $labels['inbox'] = 'Caixa de entrada'; $labels['drafts'] = 'Borradores'; $labels['sent'] = 'Enviado'; $labels['trash'] = 'Cubo do Lixo'; -$labels['junk'] = 'Lixo'; +$labels['junk'] = 'Correo Lixo'; $labels['subject'] = 'Asunto'; $labels['from'] = 'Remitente'; $labels['to'] = 'Destinatario'; -$labels['cc'] = 'Copia'; -$labels['bcc'] = 'Copia Oculta'; -$labels['replyto'] = 'Respostar a'; +$labels['cc'] = 'Copia (CC)'; +$labels['bcc'] = 'Copia Oculta (BCC)'; +$labels['replyto'] = 'Respostar a (Reply-To)'; +$labels['followupto'] = 'Respostar a todos (Followup-To)'; $labels['date'] = 'Data'; $labels['size'] = 'Tamaño'; $labels['priority'] = 'Prioridade'; $labels['organization'] = 'Organización'; +$labels['readstatus'] = 'Estado da lectura'; $labels['reply-to'] = 'Respostar a'; +$labels['mail-reply-to'] = 'Respostar ao autor'; +$labels['mail-followup-to'] = 'Respostar a todos'; $labels['mailboxlist'] = 'Cartafoles'; $labels['messagesfromto'] = 'Mensaxes do $from ao $to de $count'; $labels['threadsfromto'] = 'Fíos do $from ao $to de $count'; @@ -93,10 +97,12 @@ $labels['today'] = 'Hoxe'; $labels['checkmail'] = 'Procurar novas mensaxes'; $labels['writenewmessage'] = 'Crear unha nova mensaxe'; $labels['replytomessage'] = 'Respostar a mensaxe'; -$labels['replytoallmessage'] = 'Respostar a todos'; +$labels['replytoallmessage'] = 'Respostar á lista ou ao remitente e a tódolos destinatarios'; +$labels['replyall'] = 'Respostar a todos'; +$labels['replylist'] = 'Respostar á lista de correo'; $labels['forwardmessage'] = 'Reenviar a mensaxe'; $labels['deletemessage'] = 'Eliminar a mensaxe'; -$labels['movemessagetotrash'] = 'Mover a mensaxe ó cubo do lixo'; +$labels['movemessagetotrash'] = 'Mover a mensaxe ao cubo do lixo'; $labels['printmessage'] = 'Imprimir esta mensaxe'; $labels['previousmessage'] = 'Amosar a mensaxe anterior'; $labels['previousmessages'] = 'Amosar o grupo anterior de mensaxes'; @@ -165,7 +171,9 @@ $labels['sendmessage'] = 'Enviar a mensaxe agora'; $labels['addattachment'] = 'Anexar un ficheiro'; $labels['charset'] = 'Codificación'; $labels['editortype'] = 'Tipo de editor'; -$labels['returnreceipt'] = 'Notificación de disposición'; +$labels['returnreceipt'] = 'Notificación da entrega'; +$labels['dsn'] = 'Notificación do estado de envío (DSN)'; +$labels['editidents'] = 'Modificar identidades'; $labels['checkspelling'] = 'Revisar a ortografía'; $labels['resumeediting'] = 'Voltar á edición'; $labels['revertto'] = 'Voltar a'; @@ -189,9 +197,10 @@ $labels['maxuploadsize'] = 'O tamaño máximo permitido de ficheiro é de $size' $labels['addcc'] = 'Engadir Copia (CC)'; $labels['addbcc'] = 'Engadir Copia Oculta (BCC)'; $labels['addreplyto'] = 'Engadir Respostar a (Reply-To)'; +$labels['addfollowupto'] = 'Engadir Respostar a todos (Followup-To)'; $labels['mdnrequest'] = 'O remitente desta mensaxe pediu ser notificado cando vostede a lea. Quere notificar ao remitente?'; -$labels['receiptread'] = 'Notificación da disposición da mensaxe (lectura)'; -$labels['yourmessage'] = 'Esta é unha notificación de disposición para a súa mensaxe'; +$labels['receiptread'] = 'Notificación da entrega da mensaxe (lectura)'; +$labels['yourmessage'] = 'Esta é unha notificación da entrega da súa mensaxe'; $labels['receiptnote'] = 'Nota: Esta notificación só confirma que a mensaxe se abriu no computador do destinatario. Non asegura que o destinatario o lera ou entendera o seu contido.'; $labels['name'] = 'Nome completo'; $labels['firstname'] = 'Nome'; @@ -200,6 +209,7 @@ $labels['email'] = 'Correo Electrónico'; $labels['addcontact'] = 'Engadir novo contacto'; $labels['editcontact'] = 'Editar contacto'; $labels['contacts'] = 'Contactos'; +$labels['contactproperties'] = 'Propiedades do contacto'; $labels['edit'] = 'Editar'; $labels['cancel'] = 'Cancelar'; $labels['save'] = 'Gardar'; @@ -247,6 +257,7 @@ $labels['pagesize'] = 'Liñas por páxina'; $labels['signature'] = 'Sinatura'; $labels['dstactive'] = 'Cambio de hora'; $labels['htmleditor'] = 'Redactar mensaxes HTML'; +$labels['htmlonreply'] = 'só cando se resposte a unha mensaxe HTML'; $labels['htmlsignature'] = 'Sinatura HTML'; $labels['previewpane'] = 'Amosar panel de previsualización'; $labels['skin'] = 'Aspecto da interface'; @@ -255,9 +266,11 @@ $labels['logoutcompact'] = 'Compactar a caixa de entrada ao saír.'; $labels['uisettings'] = 'Interface de usuario'; $labels['serversettings'] = 'Axustes do servidor'; $labels['mailboxview'] = 'Vista das caixas de correo'; -$labels['mdnrequests'] = 'Notificacións de envío'; -$labels['askuser'] = 'preguntar ao usuario'; +$labels['mdnrequests'] = 'Cando se solicitan notificacións da entrega'; +$labels['askuser'] = 'preguntarme qué facer'; $labels['autosend'] = 'enviar automáticamente'; +$labels['autosendknown'] = 'enviar aos meus contactos, noutros casos preguntarme'; +$labels['autosendknownignore'] = 'enviar aos meus contactos, noutros casos ignorar'; $labels['ignore'] = 'ignorar'; $labels['readwhendeleted'] = 'Marcar a mensaxe coma lida ao eliminar'; $labels['flagfordeletion'] = 'Marcar a mensaxe para eliminar no canto de eliminar'; @@ -302,6 +315,9 @@ $labels['abovequote'] = 'enriba do texto citado'; $labels['insertsignature'] = 'Engadir firma'; $labels['previewpanemarkread'] = 'Marcar como lidas as mensaxes previsualizadas'; $labels['afternseconds'] = 'logo de $n segundos'; +$labels['reqmdn'] = 'Solicitar sempre unha notificación da entrega'; +$labels['reqdsn'] = 'Solicitar sempre unha notificación do estado de envío'; +$labels['replysamefolder'] = 'Deixar as respostas no cartafol onde está a mensaxe á que se responde'; $labels['folder'] = 'Cartafol'; $labels['folders'] = 'Cartafoles'; $labels['foldername'] = 'Nome do cartafol'; @@ -309,9 +325,6 @@ $labels['subscribed'] = 'Subscrito'; $labels['messagecount'] = 'Mensaxes'; $labels['create'] = 'Crear'; $labels['createfolder'] = 'Crear novo cartafol'; -$labels['rename'] = 'Renomear'; -$labels['renamefolder'] = 'Renomear cartafol'; -$labels['deletefolder'] = 'Eliminar cartafol'; $labels['managefolders'] = 'Xestionar cartafoles'; $labels['specialfolders'] = 'Cartafoles especiais'; $labels['sortby'] = 'Ordenar por'; diff --git a/program/localization/gl_ES/messages.inc b/program/localization/gl_ES/messages.inc index 5eb5c898e..02e3fd716 100644 --- a/program/localization/gl_ES/messages.inc +++ b/program/localization/gl_ES/messages.inc @@ -19,7 +19,8 @@ $messages['loginfailed'] = 'Fallou o acceso'; $messages['cookiesdisabled'] = 'O seu navegador non acepta galletas'; $messages['sessionerror'] = 'A súa sesión non é válida ou expirou'; $messages['imaperror'] = 'Fallou a conexión co servidor IMAP'; -$messages['servererror'] = 'Erro no servidor!'; +$messages['servererror'] = 'Erro do servidor!'; +$messages['servererrormsg'] = 'Erro do servidor: $msg'; $messages['invalidrequest'] = 'Petición inválida!. Non se gardou ningún dato.'; $messages['nomessagesfound'] = 'Non se atoparon mensaxes nesta caixa de correo'; $messages['loggedout'] = 'Rematou correctamente a súa sesión. Ata logo!'; @@ -51,9 +52,7 @@ $messages['deletecontactconfirm'] = 'Quere eliminar o(s) contacto(s) seleccionad $messages['deletemessagesconfirm'] = 'Quere eliminar a(s) mensaxe(s) seleccionadas?'; $messages['deletefolderconfirm'] = 'Quere eliminar este cartafol?'; $messages['purgefolderconfirm'] = 'Quere eliminar tódalas mensaxes neste cartafol?'; -$messages['foldercreating'] = 'Creando o cartafol...'; $messages['folderdeleting'] = 'Eliminando o cartafol...'; -$messages['folderrenaming'] = 'Renomeando o cartafol...'; $messages['foldermoving'] = 'Movendo o cartafol...'; $messages['formincomplete'] = 'Non se cumprimentou completamente o formulario'; $messages['noemailwarning'] = 'Por favor, introduza un enderezo de correo electrónico válido'; @@ -83,12 +82,13 @@ $messages['copysuccess'] = 'Copiáronse correctamente $nr enderezos'; $messages['copyerror'] = 'Non foi posible copiar ningún enderezo'; $messages['sourceisreadonly'] = 'A orixe é de só lectura'; $messages['errorsavingcontact'] = 'Non foi posible gardar o contacto'; -$messages['movingmessage'] = 'Movendo a mensaxe...'; -$messages['copyingmessage'] = 'Copiando a mensaxe...'; -$messages['receiptsent'] = 'A notificación de disposición enviouse correctamente'; -$messages['errorsendingreceipt'] = 'Non foi posible enviar a notificación de disposición'; +$messages['movingmessage'] = 'Movendo a(s) mensaxe(s)...'; +$messages['copyingmessage'] = 'Copiando a(s) mensaxe(s)...'; +$messages['deletingmessage'] = 'Eliminando a(s) mensaxe(s)...'; +$messages['markingmessage'] = 'Marcando a(s) mensaxe(s)...'; +$messages['receiptsent'] = 'A notificación da entrega enviouse correctamente'; +$messages['errorsendingreceipt'] = 'Non foi posible enviar a notificación da entrega'; $messages['nodeletelastidentity'] = 'Non pode eliminar esta identidade, é a última'; -$messages['addsubfolderhint'] = 'Este cartafol vaise crear coma un subcartafol do seleccionado'; $messages['forbiddencharacter'] = 'O nome do cartafol contén un carácter non válido'; $messages['selectimportfile'] = 'Por favor, escolla un ficheiro para cargar'; $messages['addresswriterror'] = 'Non se pode escribir no caderno de enderezos que escolleu'; @@ -106,10 +106,21 @@ $messages['smtpautherror'] = 'Erro SMTP ($code): Fallou a autenticación'; $messages['smtpfromerror'] = 'Erro SMTP ($code): Non foi posible establecer o remitente "$from" ($msg)'; $messages['smtptoerror'] = 'Erro SMTP ($code): Non foi posible engadir o destinatario "$to" ($msg)'; $messages['smtprecipientserror'] = 'Erro SMTP: Non se pode analizar a lista de destinatarios'; +$messages['smtpdsnerror'] = 'Erro SMTP: Non hai soporte para notificacións do estado de envío (DSN)'; $messages['smtperror'] = 'Erro SMTP: $msg'; $messages['emailformaterror'] = 'O enderezo de correo electrónico é incorrecto: $email'; $messages['toomanyrecipients'] = 'Especificou demasiados destinatarios. Por favor, redúzaos a un máximo de $max.'; $messages['maxgroupmembersreached'] = 'O número de membros do grupo excede o máximo de $max.'; $messages['internalerror'] = 'Ocurriu un erro interno. Por favor, probe outra vez.'; +$messages['contactdelerror'] = 'Non foi posible borrar o(s) contacto(s)'; +$messages['contactdeleted'] = 'Borráronse correctamente o(s) contacto(s)'; +$messages['groupdeleted'] = 'Borrouse correctamente o grupo'; +$messages['grouprenamed'] = 'Mudouse correctamente o nome do grupo'; +$messages['groupcreated'] = 'Creouse correctamente o grupo'; +$messages['messagedeleted'] = 'Borráronse correctamente a(s) mensaxe(s)'; +$messages['messagemoved'] = 'Movéronse correctamente a(s) mensaxe(s)'; +$messages['messagecopied'] = 'Copiáronse correctamente a(s) mensaxe(s)'; +$messages['messagemarked'] = 'Marcáronse correctamente a(s) mensaxe(s)'; +$messages['autocompletechars'] = 'Introduza polo menos $min caracteres para autocompletar'; ?> diff --git a/program/localization/he_IL/labels.inc b/program/localization/he_IL/labels.inc index 0b0336794..61f27f769 100644 --- a/program/localization/he_IL/labels.inc +++ b/program/localization/he_IL/labels.inc @@ -11,7 +11,7 @@ +-----------------------------------------------------------------------+ | Author: Moshe Leibovitch | | Updates: Noor Dawod | -| Updates: Moshe Leibovitch 10112010 | +| Updates: Moshe Leibovitch 09122010 | +-----------------------------------------------------------------------+ */ @@ -36,16 +36,12 @@ $labels['to'] = 'הנמען'; $labels['cc'] = 'לידיעה'; $labels['bcc'] = 'מכותב מוסתר'; $labels['replyto'] = 'כתובת למענה'; -$labels['mailreplyto'] = 'כתובת למענה'; -$labels['mailfollowupto'] = 'כתובת להעברת הודעה'; +$labels['followupto'] = 'כתובת להעברת הודעה'; $labels['date'] = 'תאריך'; $labels['size'] = 'גודל'; $labels['priority'] = 'עדיפות'; $labels['organization'] = 'ארגון'; $labels['readstatus'] = 'נקרא'; -$labels['reply-to'] = 'כתובת למענה'; -$labels['mail-reply-to'] = 'כתובת למענה'; -$labels['mail-followup-to'] = 'כתובת להעברת הודעה'; $labels['mailboxlist'] = 'תיקים'; $labels['messagesfromto'] = 'הודעות $from עד $to מתוך $count'; $labels['threadsfromto'] = 'שרשור $from עד $to מתוך $count'; @@ -199,8 +195,7 @@ $labels['maxuploadsize'] = 'גודל מקסימלי לקובץ הוא $size'; $labels['addcc'] = 'הוספת מכותב לידיעה'; $labels['addbcc'] = 'הוספת מכותב נסתר'; $labels['addreplyto'] = 'הוספת כתובת למענה'; -$labels['addmailreplyto'] = 'הוספת כתובת למענה'; -$labels['addmailfollowupto'] = 'הוספת כתובת להעברת הודעה'; +$labels['addfollowupto'] = 'הוספת כתובת להעברת הודעה'; $labels['mdnrequest'] = 'השולח ביקש לדעת אם ההודעה נקראה. האם להודיע לשולח?'; $labels['receiptread'] = 'אישור קבלה (נקרא)'; $labels['yourmessage'] = 'אישור קבלה להודעתך'; @@ -328,11 +323,15 @@ $labels['subscribed'] = 'מנוי'; $labels['messagecount'] = 'הודעות'; $labels['create'] = 'יצירה'; $labels['createfolder'] = 'יצירת תיק חדש'; -$labels['rename'] = 'שינוי שם'; -$labels['renamefolder'] = 'שינוי שם תיק'; -$labels['deletefolder'] = 'מחיקת תיק'; $labels['managefolders'] = 'ניהול תיקים'; $labels['specialfolders'] = 'תיקים מיוחדים'; +$labels['properties'] = 'מאפיינים'; +$labels['folderproperties'] = 'מאפייני תיק'; +$labels['parentfolder'] = 'תיק אב'; +$labels['location'] = 'מיקום'; +$labels['info'] = 'מידע'; +$labels['getfoldersize'] = 'הקשה להצגה של גודל תיק'; +$labels['changesubscription'] = 'הקשה לשינוי הרשמה'; $labels['sortby'] = 'מיון לפי'; $labels['sortasc'] = 'מיון בסדר עולה'; $labels['sortdesc'] = 'מיון בסדר יורד'; diff --git a/program/localization/he_IL/messages.inc b/program/localization/he_IL/messages.inc index 3b3f9362b..9dd3c872b 100644 --- a/program/localization/he_IL/messages.inc +++ b/program/localization/he_IL/messages.inc @@ -11,7 +11,7 @@ +-----------------------------------------------------------------------+ | Author: Moshe Leibovitch | | Updates: Noor Dawod | -| Updates: Moshe Leibovitch 10112010 | +| Updates: Moshe Leibovitch 09122010 | +-----------------------------------------------------------------------+ */ @@ -23,6 +23,8 @@ $messages['sessionerror'] = 'כניסתך למערכת אינה חוקית או $messages['imaperror'] = 'הקשר לשרת הדואר נכשל'; $messages['servererror'] = '! שגיאת שרת'; $messages['servererrormsg'] = '$msg שגיאת שרת'; +$messages['errorreadonly'] = 'לא ניתן לבצע הפעולה כי התיק ניתן לקריאה בלבד'; +$messages['errornoperm'] = 'לא ניתן לבצע הפעולה כי אין הרשאה לבצעה'; $messages['invalidrequest'] = 'בקשה לא חוקית. המידע לא נשמר'; $messages['nomessagesfound'] = 'לא נמצאו הודעות בתיבה זו'; $messages['loggedout'] = 'הקשר הסתיים. להתראות!'; @@ -54,10 +56,10 @@ $messages['deletecontactconfirm'] = 'האם למחוק את איש הקשר?'; $messages['deletemessagesconfirm'] = 'האם למחוק את ההודעות המסומנות?'; $messages['deletefolderconfirm'] = 'האם למחוק תיק זה?'; $messages['purgefolderconfirm'] = 'האם למחוק את כל ההודעות בתיק זה?'; -$messages['foldercreating'] = 'התיקיה נוצרת...'; $messages['folderdeleting'] = 'התיקיה נמחקת...'; -$messages['folderrenaming'] = 'שינוי שם תיקיה...'; $messages['foldermoving'] = 'העברת תיקיה...'; +$messages['foldersubscribing'] = 'התיק נרשם...'; +$messages['folderunsubscribing'] = 'רישום התיק בוטל...'; $messages['formincomplete'] = 'לא הוזנו כל השדות בטופס זה'; $messages['noemailwarning'] = 'נא להוסיף כתובת דוא\"ל חוקית'; $messages['nonamewarning'] = 'נא להוסיף שם'; @@ -77,6 +79,10 @@ $messages['searching'] = 'חיפוש...'; $messages['checking'] = 'בדיקה...'; $messages['nospellerrors'] = 'לא נמצאו שגיאות כתיב'; $messages['folderdeleted'] = 'התיק נמחק בהצלחה'; +$messages['foldersubscribed'] = 'התיק נרשם בהצלחה'; +$messages['folderunsubscribed'] = 'ביטול רישום תיק הצליח'; +$messages['folderpurged'] = 'התיק נמחק בהצלחה'; +$messages['folderexpunged'] = 'התיק רוקן בהצלחה'; $messages['deletedsuccessfully'] = 'המחיקה הסתיימה בהצלחה'; $messages['converting'] = 'הסרת העיצוב מההודעה'; $messages['messageopenerror'] = 'לא ניתן לטעון ההודעה מהשרת'; @@ -93,7 +99,6 @@ $messages['markingmessage'] = 'סימון ההודעה בתהליך...'; $messages['receiptsent'] = 'אישור הקבלה נשלח בהצלחה'; $messages['errorsendingreceipt'] = 'לא ניתן לשלוח אישור קבלה'; $messages['nodeletelastidentity'] = 'זו הזהות האחרונה ולכן לא ניתן לבטלה'; -$messages['addsubfolderhint'] = 'תיקיה זו תוקם תחת התיקיה שנבחרה'; $messages['forbiddencharacter'] = 'שם התיקיה מכיל תוים אסורים'; $messages['selectimportfile'] = 'נא לבחור קובץ לייבוא'; $messages['addresswriterror'] = 'פנקס הכתובות שנבחר אינו ניתן לכתיבה'; @@ -127,5 +132,9 @@ $messages['messagemoved'] = 'ההודעה הועברה בהצלחה'; $messages['messagecopied'] = 'ההודעה הועתקה בהצלחה'; $messages['messagemarked'] = 'ההודעה סומנה בהצלחה'; $messages['autocompletechars'] = 'יש להקיש לפחות $min תווים להשלמה אוטומטית של המחרוזת'; +$messages['namecannotbeempty'] = 'השם אינו יכול להיות ריק'; +$messages['nametoolong'] = 'השם ארוך מדי'; +$messages['folderupdated'] = 'התיק עודכן בהצלחה'; +$messages['foldercreated'] = 'התיק נוצר בהצלחה'; ?> diff --git a/program/localization/hi_IN/labels.inc b/program/localization/hi_IN/labels.inc index 6db8e028c..36d91fe57 100644 --- a/program/localization/hi_IN/labels.inc +++ b/program/localization/hi_IN/labels.inc @@ -226,9 +226,6 @@ $labels['foldername'] = 'फ़ोल्डर नाम'; $labels['subscribed'] = 'सबस्क्राईब किया गया'; $labels['create'] = 'बनाऐं'; $labels['createfolder'] = 'फ़ोलडर बनाऐं'; -$labels['rename'] = 'नाम बदलें'; -$labels['renamefolder'] = 'फ़ोलडर का नाम बदलें'; -$labels['deletefolder'] = 'फ़ोलडर मिटाऐं'; $labels['managefolders'] = 'फ़ोलडर को व्यवस्थित करें'; $labels['sortby'] = 'ऐसे तय करें'; diff --git a/program/localization/hr_HR/labels.inc b/program/localization/hr_HR/labels.inc index 835159e96..2043f7c01 100644 --- a/program/localization/hr_HR/labels.inc +++ b/program/localization/hr_HR/labels.inc @@ -38,21 +38,25 @@ $labels['to'] = 'Za'; $labels['cc'] = 'Cc'; $labels['bcc'] = 'Bcc'; $labels['replyto'] = 'Odgovor-na'; +$labels['followupto'] = 'Nastavi-na'; $labels['date'] = 'Datum'; $labels['size'] = 'Veličina'; $labels['priority'] = 'Prioritet'; $labels['organization'] = 'Organizacija'; +$labels['readstatus'] = 'Pročitano'; $labels['reply-to'] = 'Odgovor-na'; +$labels['mail-reply-to'] = 'Mail-Odogovori-na'; +$labels['mail-followup-to'] = 'Mail-Nastavi-na'; $labels['mailboxlist'] = 'Mape'; $labels['messagesfromto'] = 'Poruke od $from do $to od ukupno $count'; +$labels['threadsfromto'] = 'Teme od $from do $to od ukupno $count'; $labels['messagenrof'] = 'Poruka broj $nr od $count'; -$labels['moveto'] = 'prebaci u...'; -$labels['download'] = 'preuzmi (download)'; +$labels['copy'] = 'Kopiraj'; +$labels['move'] = 'Premjesti'; +$labels['moveto'] = 'Premjesti u...'; +$labels['download'] = 'Preuzmi (download)'; $labels['filename'] = 'Ime datoteke'; $labels['filesize'] = 'Veličina datoteke'; -$labels['preferhtml'] = 'HTML format u prednosti'; -$labels['htmlmessage'] = 'HTML format poruke'; -$labels['prettydate'] = 'Formatiran datum'; $labels['addtoaddressbook'] = 'Dodaj u imenik'; $labels['sun'] = 'Ned'; $labels['mon'] = 'Pon'; @@ -97,6 +101,8 @@ $labels['checkmail'] = 'Provjera novih poruka'; $labels['writenewmessage'] = 'Nova poruka'; $labels['replytomessage'] = 'Odgovori na poruku'; $labels['replytoallmessage'] = 'Odgovori pošiljaocu i svim primateljima'; +$labels['replyall'] = 'Odgovori svima'; +$labels['replylist'] = 'Odgovori listi'; $labels['forwardmessage'] = 'Prosljedi poruku'; $labels['deletemessage'] = 'Prebaci poruku u mapu smeće'; $labels['movemessagetotrash'] = 'Preseli poruke u smeće'; @@ -120,12 +126,35 @@ $labels['messageactions'] = 'Više akcija'; $labels['select'] = 'Označi'; $labels['all'] = 'Sve'; $labels['none'] = 'Nijednu'; +$labels['currpage'] = 'Trenutna stranica'; $labels['unread'] = 'Nepročitane'; $labels['flagged'] = 'Markirane'; $labels['unanswered'] = 'Neodgovrene'; $labels['deleted'] = 'Obrisano'; $labels['invert'] = 'Obrni'; $labels['filter'] = 'Filtriraj'; +$labels['list'] = 'Lista'; +$labels['threads'] = 'Teme'; +$labels['expand-all'] = 'Proširi sve'; +$labels['expand-unread'] = 'Proširi nepročitane'; +$labels['collapse-all'] = 'Zatvori sve'; +$labels['threaded'] = 'Tematski prikaz'; +$labels['autoexpand_threads'] = 'Proširi teme poruka'; +$labels['do_expand'] = 'Sve teme'; +$labels['expand_only_unread'] = 'samo sa nepročitanim porukama'; +$labels['fromto'] = 'Pošiljatelj/Primatelj'; +$labels['flag'] = 'Zastava'; +$labels['attachment'] = 'Privitak'; +$labels['nonesort'] = 'Ništa'; +$labels['sentdate'] = 'Datum slanja'; +$labels['arrival'] = 'Datum primanja'; +$labels['asc'] = 'uzlazno'; +$labels['desc'] = 'silazno'; +$labels['listcolumns'] = 'Kolone'; +$labels['listsorting'] = 'Sortirajuća kolona'; +$labels['listorder'] = 'Sortirajući redoslijed'; +$labels['listmode'] = 'Model pregleda listi'; +$labels['folderactions'] = 'Akcije mapa'; $labels['compact'] = 'Kompresiranje'; $labels['empty'] = 'Isprazni '; $labels['purge'] = 'Očisti'; @@ -146,12 +175,15 @@ $labels['addattachment'] = 'Priloži datoteku'; $labels['charset'] = 'Charset'; $labels['editortype'] = 'Tip editora'; $labels['returnreceipt'] = 'Potvrda o primitku poruke'; +$labels['dsn'] = 'Potvrda o poslanoj poruci'; +$labels['editidents'] = 'Promijeni identitete'; $labels['checkspelling'] = 'Provjera pravopisa'; $labels['resumeediting'] = 'Povratak u pisanje'; $labels['revertto'] = 'Vrati na'; $labels['attachments'] = 'Privitci (Attachments)'; $labels['upload'] = 'Dodaj'; $labels['close'] = 'Zatvori'; +$labels['messageoptions'] = 'Opcije poruka...'; $labels['low'] = 'Nizak'; $labels['lowest'] = 'Najniži'; $labels['normal'] = 'Srednji'; @@ -168,6 +200,7 @@ $labels['maxuploadsize'] = 'Maksimalna dozvoljena velicina datoteke je $size'; $labels['addcc'] = 'Dodaj Cc'; $labels['addbcc'] = 'Dodaj Bcc'; $labels['addreplyto'] = 'Dodaj Odgovori-na'; +$labels['addfollowupto'] = 'Dodaj Nastavak-na'; $labels['mdnrequest'] = 'Pošiljaoc ove poruke je tražio da bude obaviješten o njenom primitku. Želite li obavijestiti pošiljaoca?'; $labels['receiptread'] = 'Vrati potvrdu (pročitano)'; $labels['yourmessage'] = 'Ovo je vraćena potvrda vaše poruke'; @@ -178,6 +211,8 @@ $labels['surname'] = 'Prezime'; $labels['email'] = 'E-Mail'; $labels['addcontact'] = 'Dodaj novi kontakt'; $labels['editcontact'] = 'Izmjeni kontakt'; +$labels['contacts'] = 'Kontakti'; +$labels['contactproperties'] = 'Svojstva kontakta'; $labels['edit'] = 'Izmjeni'; $labels['cancel'] = 'Odustani'; $labels['save'] = 'Spremi'; @@ -189,10 +224,13 @@ $labels['contactsfromto'] = 'Kontakti od $from do $to od ukupno $count'; $labels['print'] = 'Print'; $labels['export'] = 'Export'; $labels['exportvcards'] = 'Izvezi kontakte u vCard formatu'; +$labels['newcontactgroup'] = 'Napravi novu kontaktnu grupu'; +$labels['groupactions'] = 'Akcije kontaktne grupe'; $labels['previouspage'] = 'Prethodna strana'; $labels['firstpage'] = 'Prva strana'; $labels['nextpage'] = 'Slijedeća strana'; $labels['lastpage'] = 'Zadnja strana'; +$labels['group'] = 'Grupa'; $labels['groups'] = 'Grupe'; $labels['personaladrbook'] = 'Privatna adresa'; $labels['import'] = 'Uvoz'; @@ -210,6 +248,10 @@ $labels['manageidentities'] = 'Podesi identitete za ovaj nalog'; $labels['newidentity'] = 'Dodaj identitet'; $labels['newitem'] = 'Novo'; $labels['edititem'] = 'Uredi'; +$labels['preferhtml'] = 'HTML format u prednosti'; +$labels['defaultcharset'] = 'Zadani skup znakova'; +$labels['htmlmessage'] = 'HTML format poruke'; +$labels['prettydate'] = 'Formatiran datum'; $labels['setdefault'] = 'Postavi predodređeno'; $labels['autodetect'] = 'Auto'; $labels['language'] = 'Jezik'; @@ -218,6 +260,7 @@ $labels['pagesize'] = 'Redova po stranici'; $labels['signature'] = 'Potpis'; $labels['dstactive'] = 'Automatska promjena vremena'; $labels['htmleditor'] = 'Sastavi HTML poruke'; +$labels['htmlonreply'] = 'odgovor samo na HTML poruke'; $labels['htmlsignature'] = 'HTML potpis'; $labels['previewpane'] = 'Prikaži područje pregleda'; $labels['skin'] = 'Tema izgleda'; @@ -229,10 +272,13 @@ $labels['mailboxview'] = 'Pregled Mailboxa'; $labels['mdnrequests'] = 'Obavijest pošiljatelja'; $labels['askuser'] = 'pitaj korisnika'; $labels['autosend'] = 'šalji automatski'; -$labels['ignore'] = 'ignoriraj'; +$labels['autosendknown'] = 'Dodaj primatelja u moje kontakte, u suprotnom me pitaj'; +$labels['autosendknownignore'] = 'Dodaj primatelja u moje kontakte, u suprotnom zanemari'; +$labels['ignore'] = 'zanemari'; $labels['readwhendeleted'] = 'Označi poruku kao pročitanu pri brisanju'; $labels['flagfordeletion'] = 'Označi poruku za brisanje umjesto brisanja'; $labels['skipdeleted'] = 'Ne prikazivaj pobrisane poruke'; +$labels['deletealways'] = 'Ukoliko premještanje poruka u mapu otpad ne uspije, izbrši poruku'; $labels['showremoteimages'] = 'Prikaži slike s interneta'; $labels['fromknownsenders'] = 'od poznatih pošiljatelja'; $labels['always'] = 'uvijek'; @@ -240,13 +286,15 @@ $labels['showinlineimages'] = 'Prikaži slike ispod poruke'; $labels['autosavedraft'] = 'Automatski spremi draft'; $labels['everynminutes'] = 'svakih $n minuta'; $labels['keepalive'] = 'Provjeri nove poruke'; -$labels['never'] = 'Nikada'; +$labels['never'] = 'nikada'; +$labels['immediately'] = 'odmah'; $labels['messagesdisplaying'] = 'Prikazujem poruke'; $labels['messagescomposition'] = 'Komponiram poruke'; $labels['mimeparamfolding'] = 'Nazivi privitaka'; $labels['2231folding'] = 'Full RFC 2231 (Thunderbird)'; $labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)'; $labels['2047folding'] = 'Full RFC 2047 (ostali)'; +$labels['force7bit'] = 'Koristi MIME postavke za 8-bitne znakove'; $labels['advancedoptions'] = 'Napredne postavke'; $labels['focusonnewmessage'] = 'Fokusiraj browser pri novoj poruci'; $labels['checkallfolders'] = 'Provjeri nove poruke u svim mapama'; @@ -268,6 +316,11 @@ $labels['replysignaturepos'] = 'Kod downloada ili proslijeđivanja postavi potpi $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'; +$labels['reqmdn'] = 'Uvijek zatraži potvrdu o primitku poruke'; +$labels['reqdsn'] = 'Uvijek zatraži potvrdu o slanju poruke'; +$labels['replysamefolder'] = 'Spremi odgovore u mapu gdje se nalazi poruka'; $labels['folder'] = 'Mapa'; $labels['folders'] = 'Mape'; $labels['foldername'] = 'Ime mape'; @@ -275,9 +328,6 @@ $labels['subscribed'] = 'Pretplata'; $labels['messagecount'] = 'Poruke'; $labels['create'] = 'Napravi'; $labels['createfolder'] = 'Napravi novu mapu'; -$labels['rename'] = 'Preimenuj'; -$labels['renamefolder'] = 'Preimenuj Mapu'; -$labels['deletefolder'] = 'Obriši Mapu'; $labels['managefolders'] = 'Podesi Mapu'; $labels['specialfolders'] = 'Specijalna Mapa'; $labels['sortby'] = 'Sortiraj po'; @@ -287,5 +337,23 @@ $labels['B'] = 'B'; $labels['KB'] = 'KB'; $labels['MB'] = 'MB'; $labels['GB'] = 'GB'; +$labels['unicode'] = 'Unicode'; +$labels['english'] = 'Engleski'; +$labels['westerneuropean'] = 'Zapadno Europski'; +$labels['easterneuropean'] = 'Istočno Europski'; +$labels['southeasterneuropean'] = 'Južno-Istočni Europski'; +$labels['baltic'] = 'Balitčki'; +$labels['cyrillic'] = 'Čirilčni'; +$labels['arabic'] = 'Arapski'; +$labels['greek'] = 'Grčki'; +$labels['hebrew'] = 'Hibru'; +$labels['turkish'] = 'Turski'; +$labels['nordic'] = 'Nordski'; +$labels['thai'] = 'Tajlandski'; +$labels['celtic'] = 'Keltski'; +$labels['vietnamese'] = 'Vijetnamski'; +$labels['japanese'] = 'Japanski'; +$labels['korean'] = 'Korejski'; +$labels['chinese'] = 'Kineski'; ?> diff --git a/program/localization/hr_HR/messages.inc b/program/localization/hr_HR/messages.inc index 4f4b7c519..7594efa3b 100644 --- a/program/localization/hr_HR/messages.inc +++ b/program/localization/hr_HR/messages.inc @@ -53,9 +53,7 @@ $messages['deletecontactconfirm'] = 'Želite li obrisati izabrane kontakte?'; $messages['deletemessagesconfirm'] = 'Sigurno želite obrisati odabrane poruke?'; $messages['deletefolderconfirm'] = 'Želite li obrisati ovu mapu?'; $messages['purgefolderconfirm'] = 'Želite li obrisati sve poruke u mapi?'; -$messages['foldercreating'] = 'Kreiram mapu...'; $messages['folderdeleting'] = 'Brišem mapu...'; -$messages['folderrenaming'] = 'Mijenjam naziv mape...'; $messages['foldermoving'] = 'Premještam mapu...'; $messages['formincomplete'] = 'Obrazac nije u cjelosti popunjen'; $messages['noemailwarning'] = 'Unesite valjanu e-mail adresu'; @@ -89,7 +87,6 @@ $messages['movingmessage'] = 'Premještanje poruke...'; $messages['receiptsent'] = 'Uspješno poslana potvrda (pročitano)'; $messages['errorsendingreceipt'] = 'Ne može poslati potvrdu'; $messages['nodeletelastidentity'] = 'Ne možete izbrisati zadnji identitet.'; -$messages['addsubfolderhint'] = 'Ova mapa će biti stvorena kao podmapa na trenutno označenoj'; $messages['forbiddencharacter'] = 'Naziv mape sadrži zabranjene znakove'; $messages['selectimportfile'] = 'Odaberite datoteku za prijenos'; $messages['addresswriterror'] = 'U odabrani adresar nije moguće zapisivat...'; diff --git a/program/localization/hu_HU/labels.inc b/program/localization/hu_HU/labels.inc index e2553884f..f8f2b6fce 100644 --- a/program/localization/hu_HU/labels.inc +++ b/program/localization/hu_HU/labels.inc @@ -40,16 +40,15 @@ $labels['to'] = 'Címzett'; $labels['cc'] = 'Másolat'; $labels['bcc'] = 'Titkos másolat'; $labels['replyto'] = 'Válaszcím'; -$labels['mailreplyto'] = 'Hírcsoport'; -$labels['mailfollowupto'] = 'Hírcsoport válasz'; +$labels['followupto'] = 'Hírcsoport válasz'; $labels['date'] = 'Dátum'; $labels['size'] = 'Méret'; $labels['priority'] = 'Sürgősség'; $labels['organization'] = 'Szervezet'; $labels['readstatus'] = 'Olvasott'; $labels['reply-to'] = 'Válaszcím'; -$labels['mailreply-to'] = 'Hírcsoport'; -$labels['mailfollowup-to'] = 'Hírcsoport válasz'; +$labels['mail-reply-to'] = 'Hírcsoport'; +$labels['mail-followup-to'] = 'Hírcsoport válasz'; $labels['mailboxlist'] = 'Mappák'; $labels['messagesfromto'] = 'Üzenetek: $from - $to / $count'; $labels['threadsfromto'] = 'Témák ($from - $to, összesen $count)'; @@ -203,8 +202,7 @@ $labels['maxuploadsize'] = 'A maximális feltölthető fájl mérete $size'; $labels['addcc'] = 'Cc (Másolati cím) hozzáadása'; $labels['addbcc'] = 'Bcc (titkos másolati cím) hozzáadása'; $labels['addreplyto'] = 'Válaszcím hozzáadása'; -$labels['addmailreplyto'] = 'Hírcsoport hozzáadása'; -$labels['addmailfollowupto'] = 'Hírcsoport válasz hozzáadása'; +$labels['addfollowupto'] = 'Hírcsoport válasz hozzáadása'; $labels['mdnrequest'] = 'Az üzenet küldője értesítést kér arról, hogy elolvasta a levelet. El legyen küldve az olvasási visszaigazolás?'; $labels['receiptread'] = 'Olvasási visszaigazolás (olvasott)'; $labels['yourmessage'] = 'Ez az üzenete olvasási visszaigazolása'; @@ -331,9 +329,6 @@ $labels['subscribed'] = 'Feliratkozás'; $labels['messagecount'] = 'Üzenet'; $labels['create'] = 'Létrehozás'; $labels['createfolder'] = 'Új mappa létrehozása'; -$labels['rename'] = 'Átnevezés'; -$labels['renamefolder'] = 'Mappa átnevezése'; -$labels['deletefolder'] = 'Mappa törlése'; $labels['managefolders'] = 'Mappák kezelése'; $labels['specialfolders'] = 'Különleges mappák'; $labels['sortby'] = 'Rendezés'; diff --git a/program/localization/hu_HU/messages.inc b/program/localization/hu_HU/messages.inc index 3f5d7de5b..c820bc28d 100644 --- a/program/localization/hu_HU/messages.inc +++ b/program/localization/hu_HU/messages.inc @@ -57,9 +57,7 @@ $messages['deletecontactconfirm'] = 'Biztos, hogy törölni szeretné a kijelöl $messages['deletemessagesconfirm'] = 'Biztos, hogy törölni szeretné a kijelölt üzenete(ke)t?'; $messages['deletefolderconfirm'] = 'Biztos, hogy törölni szeretné ezt a mappát?'; $messages['purgefolderconfirm'] = 'Biztos benne, hogy az összes üzenet törölhető?'; -$messages['foldercreating'] = 'Mappa létrehozása...'; $messages['folderdeleting'] = 'Mappa törlése...'; -$messages['folderrenaming'] = 'Mappa átnevezése...'; $messages['foldermoving'] = 'Mappa mozgatása...'; $messages['formincomplete'] = 'Az űrlap hiányosan lett kitöltve'; $messages['noemailwarning'] = 'Adjon meg egy valós e-mail címet'; @@ -94,7 +92,6 @@ $messages['copyingmessage'] = 'Üzenet másolása...'; $messages['receiptsent'] = 'Az olvasási visszaigazolás el lett küldve'; $messages['errorsendingreceipt'] = 'Az olvasási visszaigazolást nem sikerült elküldeni'; $messages['nodeletelastidentity'] = 'Nem törölheti ezt az azonosítót, ez az egyetlen'; -$messages['addsubfolderhint'] = 'Az új könyvtár az aktuálisan kiválasztott alkönyvtáraként lesz létrehozva'; $messages['forbiddencharacter'] = 'A mappa neve tiltott karaktert tartalmaz'; $messages['selectimportfile'] = 'Kérjük válassza ki a feltölteni kívánt fájlt'; $messages['addresswriterror'] = 'A kiválasztott címjegyzék nem írható'; diff --git a/program/localization/hy_AM/labels.inc b/program/localization/hy_AM/labels.inc index 7081d44e8..5809c13f2 100644 --- a/program/localization/hy_AM/labels.inc +++ b/program/localization/hy_AM/labels.inc @@ -249,9 +249,6 @@ $labels['subscribed'] = 'Բաժանորդագրված'; $labels['messagecount'] = 'Նամակներ'; $labels['create'] = 'Ստեղծել'; $labels['createfolder'] = 'Բացել նոր դարակ'; -$labels['rename'] = 'Վերանվանել'; -$labels['renamefolder'] = 'Վերանվանել դարակը'; -$labels['deletefolder'] = 'Ջնջել դարակը'; $labels['managefolders'] = 'Կարգավորել դարակները'; $labels['specialfolders'] = 'Հատուկ դարակներ'; $labels['sortby'] = 'Դասավորել'; diff --git a/program/localization/hy_AM/messages.inc b/program/localization/hy_AM/messages.inc index cd8aab234..5313ba112 100644 --- a/program/localization/hy_AM/messages.inc +++ b/program/localization/hy_AM/messages.inc @@ -48,9 +48,7 @@ $messages['deletecontactconfirm'] = 'Ուզու՞մ էք ջնջել նշված $messages['deletemessagesconfirm'] = 'Ուզու՞մ էք ջնջել նշված նամակները'; $messages['deletefolderconfirm'] = 'Ուզու՞մ էք ջնջել այս դարակը'; $messages['purgefolderconfirm'] = 'Ուզու՞մ էք ջնջել այս դարակի բոլոր նամակները'; -$messages['foldercreating'] = 'Դարակը ստեղծվում է…'; $messages['folderdeleting'] = 'Դարակը ջնջվում է…'; -$messages['folderrenaming'] = 'Դարակը վերանվանվում է…'; $messages['foldermoving'] = 'Դարակը տեղափոխվում է…'; $messages['formincomplete'] = 'Ձևը թերի է լրացված'; $messages['noemailwarning'] = 'Մուտքագրեք ճիշտ էլ. հասցե'; @@ -83,7 +81,6 @@ $messages['movingmessage'] = 'Նամակը տեղափոխվում է…'; $messages['receiptsent'] = 'Նամակի ընթերցման ծանուցագիրն ուղարկված է'; $messages['errorsendingreceipt'] = 'Ծանուցագրի ուղարկումը ձախողվեց'; $messages['nodeletelastidentity'] = 'Անհնար է ջնջել վերջին տարբերակը'; -$messages['addsubfolderhint'] = 'Այս դարակը կստեղծվի որպես նշվածի ենթադարակ'; $messages['forbiddencharacter'] = 'Դարակի անունը պարունակում է անթույլատրելի նշան'; $messages['selectimportfile'] = 'Ընտրեք ուղարկվող ֆայլը'; $messages['addresswriterror'] = 'Ընտրված հասցեագիրքը ենթակա չէ փոփոխման'; diff --git a/program/localization/id_ID/labels.inc b/program/localization/id_ID/labels.inc index 854712d1f..80a351adf 100644 --- a/program/localization/id_ID/labels.inc +++ b/program/localization/id_ID/labels.inc @@ -10,7 +10,7 @@ | Licensed under the GNU GPL | | | +-----------------------------------------------------------------------+ -| Author: Putu Arya Sabda Wijaya | +| Author: Putu Arya Sabda Wijaya | +-----------------------------------------------------------------------+ @version $Id$ @@ -38,11 +38,15 @@ $labels['to'] = 'Penerima'; $labels['cc'] = 'Lampiran'; $labels['bcc'] = 'Lampiran tersembunyi'; $labels['replyto'] = 'Balas kepada'; +$labels['followupto'] = 'Surat Tindak Lanjut Untuk'; $labels['date'] = 'Tanggal'; $labels['size'] = 'Ukuran'; $labels['priority'] = 'Prioritas'; $labels['organization'] = 'Organisasi'; +$labels['readstatus'] = 'Status Terbaca'; $labels['reply-to'] = 'Balas kepada'; +$labels['mail-reply-to'] = 'Surat Balasan Untuk'; +$labels['mail-followup-to'] = 'Surat Tindak Lanjut Untuk'; $labels['mailboxlist'] = 'Map'; $labels['messagesfromto'] = 'Pesan ke $from sampai $to dari $count'; $labels['threadsfromto'] = 'Untaian ke $from sampai $to dari $count'; @@ -97,6 +101,8 @@ $labels['checkmail'] = 'Periksa pesan baru'; $labels['writenewmessage'] = 'Buat pesan baru'; $labels['replytomessage'] = 'Balas pesan'; $labels['replytoallmessage'] = 'Balas ke pengirim dan yang lain'; +$labels['replyall'] = 'Balas ke semua'; +$labels['replylist'] = 'Balas ke milis'; $labels['forwardmessage'] = 'Teruskan pesan'; $labels['deletemessage'] = 'Hapus pesan'; $labels['movemessagetotrash'] = 'Pindahkan pesan ke tong sampah'; @@ -168,7 +174,9 @@ $labels['sendmessage'] = 'Kirim pesan sekarang'; $labels['addattachment'] = 'Sisipkan sebuah berkas'; $labels['charset'] = 'Set karakter'; $labels['editortype'] = 'Tipe penyunting'; -$labels['returnreceipt'] = 'Kembalikan penerima'; +$labels['returnreceipt'] = 'Tanda terima kembali'; +$labels['dsn'] = 'Pemberitahuan status terkirim'; +$labels['editidents'] = 'Ubah identitas'; $labels['checkspelling'] = 'Pemeriksaan ejaan'; $labels['resumeediting'] = 'Lanjutkan menyunting'; $labels['revertto'] = 'Balikkan ke'; @@ -192,6 +200,7 @@ $labels['maxuploadsize'] = 'Ukuran file maksimal adalah $size'; $labels['addcc'] = 'Tambah Cc'; $labels['addbcc'] = 'Tambah Bcc'; $labels['addreplyto'] = 'Tambah Balas Ke'; +$labels['addfollowupto'] = 'Tambahkan Tindak-Lanjut-Ke'; $labels['mdnrequest'] = 'Pengirim pesan ini telah meminta untuk diberitahu ketika Anda membaca pesan ini. Apakah anda ingin memberitahu pengirim?'; $labels['receiptread'] = 'Tanda Terima (baca)'; $labels['yourmessage'] = 'Ini adalah Tanda Terima untuk pesan Anda'; @@ -203,6 +212,7 @@ $labels['email'] = 'E-Mail'; $labels['addcontact'] = 'Tambah kontak baru'; $labels['editcontact'] = 'Ubah kontak'; $labels['contacts'] = 'Daftar kontak'; +$labels['contactproperties'] = 'Properti kontak'; $labels['edit'] = 'Ubah'; $labels['cancel'] = 'Batal'; $labels['save'] = 'Simpan'; @@ -250,6 +260,7 @@ $labels['pagesize'] = 'Baris per halaman'; $labels['signature'] = 'Tanda tangan'; $labels['dstactive'] = 'Waktu Musim Panas'; $labels['htmleditor'] = 'Tulis pesan HTML'; +$labels['htmlonreply'] = 'balasan untuk pesan HTML saja'; $labels['htmlsignature'] = 'Tandatangan HTML'; $labels['previewpane'] = 'Perlihatkan tempat melihat'; $labels['skin'] = 'Tampilan antarmuka'; @@ -258,9 +269,11 @@ $labels['logoutcompact'] = 'Mampatkan Kotak Masuk saat keluar'; $labels['uisettings'] = 'Antarmuka pengguna'; $labels['serversettings'] = 'Pengaturan Server'; $labels['mailboxview'] = 'Tampilan Kotak Surat'; -$labels['mdnrequests'] = 'Pemberitahuan pada pengirim'; +$labels['mdnrequests'] = 'Sedang dimintakan tanda terima kembali'; $labels['askuser'] = 'tanya pengguna'; $labels['autosend'] = 'kirim otomatis'; +$labels['autosendknown'] = 'kirim tanda terima kepada kontak saya, selain itu tanyai saya'; +$labels['autosendknownignore'] = 'kirim tanda terima kepada kontak saya, selain acuhkan'; $labels['ignore'] = 'acuhkan'; $labels['readwhendeleted'] = 'Tandai pesan sebagai terbaca saat dihapus'; $labels['flagfordeletion'] = 'Tandai pesan untuk penghapusan daripada dihapus'; @@ -305,6 +318,9 @@ $labels['abovequote'] = 'Diatas kutipan'; $labels['insertsignature'] = 'Isi tanda tangan'; $labels['previewpanemarkread'] = 'Tandai pesan yang sudah dilihat '; $labels['afternseconds'] = 'setelah $n detik'; +$labels['reqmdn'] = 'Selalu meminta tanda terima kembali'; +$labels['reqdsn'] = 'Selalu meminta pemberitahuan status terkirim'; +$labels['replysamefolder'] = 'Taruh balasan di folder yang sama dengan pesan yang dibalas'; $labels['folder'] = 'Map'; $labels['folders'] = 'Map-map'; $labels['foldername'] = 'Nama map'; @@ -312,9 +328,6 @@ $labels['subscribed'] = 'Subscribed'; $labels['messagecount'] = 'Pesan-pesan'; $labels['create'] = 'Buat'; $labels['createfolder'] = 'Buat map baru'; -$labels['rename'] = 'Namai ulang'; -$labels['renamefolder'] = 'Namai ulang map'; -$labels['deletefolder'] = 'Hapus map'; $labels['managefolders'] = 'Atur map'; $labels['specialfolders'] = 'Map Khusus'; $labels['sortby'] = 'Urut berdasarkan'; diff --git a/program/localization/id_ID/messages.inc b/program/localization/id_ID/messages.inc index f0b49e4d6..39502492c 100644 --- a/program/localization/id_ID/messages.inc +++ b/program/localization/id_ID/messages.inc @@ -10,7 +10,7 @@ | Licensed under the GNU GPL | | | +-----------------------------------------------------------------------+ -| Author: Putu Arya Sabda Wijaya | +| Author: Putu Arya Sabda Wijaya | +-----------------------------------------------------------------------+ @version $Id$ @@ -23,6 +23,7 @@ $messages['cookiesdisabled'] = 'Browser Anda tidak menerima cookies'; $messages['sessionerror'] = 'Session Anda invalid atau kadaluwarsa'; $messages['imaperror'] = 'Koneksi ke IMAP server gagal'; $messages['servererror'] = 'Server Error!'; +$messages['servererrormsg'] = 'Server Error: $msg'; $messages['invalidrequest'] = 'Permintaan tidak valid! Tidak ada data yang tersimpan.'; $messages['nomessagesfound'] = 'Surat tidak ditemukan di kotak masuk ini'; $messages['loggedout'] = 'Anda berhasil mengakhiri session. Selamat Tinggal!'; @@ -34,7 +35,7 @@ $messages['checkingmail'] = 'Memeriksa pesan baru...'; $messages['sendingmessage'] = 'Mengirim pesan...'; $messages['messagesent'] = 'Pesan terkirim'; $messages['savingmessage'] = 'Menyimpan pesan...'; -$messages['messagesaved'] = 'MMenyimpan pesan ke daftar tunggu'; +$messages['messagesaved'] = 'Menyimpan pesan ke daftar tunggu'; $messages['successfullysaved'] = 'Berhasil disimpan'; $messages['addedsuccessfully'] = 'Kontak berhasil ditambahkan ke buku alamat'; $messages['contactexists'] = 'Kontak dengan alamat e-mail ini sudah ada'; @@ -54,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Apakah anda yakin untuk menghapus kontak te $messages['deletemessagesconfirm'] = 'Yakin menghapus pesan terpilih?'; $messages['deletefolderconfirm'] = 'Apakah anda benar-benar ingin menghapus map ini?'; $messages['purgefolderconfirm'] = 'Yakin menghapus semua pesan pada map ini?'; -$messages['foldercreating'] = 'Membuat map...'; $messages['folderdeleting'] = 'Menghapus map...'; -$messages['folderrenaming'] = 'Mengubah nama map...'; $messages['foldermoving'] = 'Memindahkan map...'; $messages['formincomplete'] = 'Isian tidak terisi semua'; $messages['noemailwarning'] = 'Tolong masukkan alamat email yang valid'; @@ -88,10 +87,11 @@ $messages['sourceisreadonly'] = 'Sumber dari alamat ini hanya dapat dibaca'; $messages['errorsavingcontact'] = 'Tidak bisa menyimpan alamat kontak'; $messages['movingmessage'] = 'Memindahkan pesan...'; $messages['copyingmessage'] = 'Menyalin pesan...'; +$messages['deletingmessage'] = 'Menghapus pesan...'; +$messages['markingmessage'] = 'Menandai Pesan...'; $messages['receiptsent'] = 'Berhasil mengirim pemberitahuan tanda terima telah terbaca'; $messages['errorsendingreceipt'] = 'Tidak dapat mengirim tanda terima'; $messages['nodeletelastidentity'] = 'Anda tidak bida mengapus identitas ini, ini identitas yang terakhir'; -$messages['addsubfolderhint'] = 'Folder ini akan dibuat sebagai subfolder pada folder yang terpilih'; $messages['forbiddencharacter'] = 'Nama folder mengandung karakter terlarang'; $messages['selectimportfile'] = 'Mohon pilih sebuah berkas untuk diunggah'; $messages['addresswriterror'] = 'Buku alamat terpilih tidak dapat ditulisi'; @@ -109,10 +109,21 @@ $messages['smtpautherror'] = 'SMTP Error ($code): Otentifikasi gagal'; $messages['smtpfromerror'] = 'SMTP Error ($code): Gagal mengatur pengirim "$from" ($msg)'; $messages['smtptoerror'] = 'SMTP Error ($code): Gagal menambah penerima "$to" ($msg)'; $messages['smtprecipientserror'] = 'SMTP Error ($code): Tidak dapat menguraikan daftar penerima'; +$messages['smtpdsnerror'] = 'SMTP Error: Tidak ada dukungan untuk pemberitahuan status terkirim'; $messages['smtperror'] = 'SMTP Error : $msg'; $messages['emailformaterror'] = 'Alamat e-mail salah: $email'; $messages['toomanyrecipients'] = 'Terlalu banyak penerima. Batas maksimal penerima adalah $max'; $messages['maxgroupmembersreached'] = 'Jumlah grup melebihi jumlah maksimum $max'; $messages['internalerror'] = 'Terjadi kesalahan internal. Silahkan diulang kembali'; +$messages['contactdelerror'] = 'Kontak tidak bisa dihapus'; +$messages['contactdeleted'] = 'Kontak berhasil dihapus'; +$messages['groupdeleted'] = 'Grup berhasil dihapus'; +$messages['grouprenamed'] = 'Grup berhasil dinamai kembali'; +$messages['groupcreated'] = 'Grub berhasil dibuat'; +$messages['messagedeleted'] = 'Pesan berhasil dihapus'; +$messages['messagemoved'] = 'Pesan berhasil dipindahkan'; +$messages['messagecopied'] = 'Pesan berhasil disalin'; +$messages['messagemarked'] = 'Pesan berhasil ditandai'; +$messages['autocompletechars'] = 'Masukkan setidaknya $min karakter untuk swaparipurna'; ?> diff --git a/program/localization/is_IS/labels.inc b/program/localization/is_IS/labels.inc index f21a3b5cc..edb0ce348 100644 --- a/program/localization/is_IS/labels.inc +++ b/program/localization/is_IS/labels.inc @@ -250,9 +250,6 @@ $labels['subscribed'] = 'Valin'; $labels['messagecount'] = 'Skeyti'; $labels['create'] = 'Búa til'; $labels['createfolder'] = 'Búa til nýja möppu'; -$labels['rename'] = 'Endurnefna'; -$labels['renamefolder'] = 'Breyta nafni möppu'; -$labels['deletefolder'] = 'Eyða möppu'; $labels['managefolders'] = 'Sýsla með möppum'; $labels['specialfolders'] = 'Sérstakar möppur'; $labels['sortby'] = 'Raða eftir'; diff --git a/program/localization/it_IT/labels.inc b/program/localization/it_IT/labels.inc index 5f6cc8505..327791c82 100644 --- a/program/localization/it_IT/labels.inc +++ b/program/localization/it_IT/labels.inc @@ -39,15 +39,14 @@ $labels['to'] = 'Destinatario'; $labels['cc'] = 'Cc'; $labels['bcc'] = 'Bcn'; $labels['replyto'] = 'Rispondi a'; -$labels['mailreplyto'] = 'Mail-Reply-To'; -$labels['mailfollowupto'] = 'Mail-Followup-To'; +$labels['followupto'] = 'Followup-To'; $labels['date'] = 'Data'; $labels['size'] = 'Dimensione'; $labels['priority'] = 'Priorità'; $labels['organization'] = 'Società'; $labels['reply-to'] = 'Rispondi a'; -$labels['mailreply-to'] = 'Mail-Reply-To'; -$labels['mailfollowup-to'] = 'Mail-Followup-To'; +$labels['mail-reply-to'] = 'Mail-Reply-To'; +$labels['mail-followup-to'] = 'Mail-Followup-To'; $labels['mailboxlist'] = 'Cartelle'; $labels['messagesfromto'] = 'Messaggi da $from a $to di $count'; $labels['threadsfromto'] = 'Thread da $from a $to di $count'; @@ -201,8 +200,7 @@ $labels['maxuploadsize'] = 'La dimensione massima consentita è $size'; $labels['addcc'] = 'Aggiungi Cc'; $labels['addbcc'] = 'Aggiungi Bcc'; $labels['addreplyto'] = 'Aggiungi Rispondi a'; -$labels['addmailreplyto'] = 'Aggiungi Mail-Reply-To'; -$labels['addmailfollowupto'] = 'Aggiungi Mail-Followup-To'; +$labels['addfollowupto'] = 'Aggiungi Followup-To'; $labels['mdnrequest'] = 'Il mittente ha richiesto di ricevere una notifica dell\'avvenuta lettura del messaggio. Si desidera inviare tale notifica?'; $labels['receiptread'] = 'Ricevuta di ritorno (letto)'; $labels['yourmessage'] = 'Questa è la ricevuta di ritorno del messaggio inviato'; @@ -328,9 +326,6 @@ $labels['subscribed'] = 'Sottoscritta'; $labels['messagecount'] = 'Messaggi'; $labels['create'] = 'Crea'; $labels['createfolder'] = 'Crea nuova cartella'; -$labels['rename'] = 'Rinomina'; -$labels['renamefolder'] = 'Rinomina cartella'; -$labels['deletefolder'] = 'Cancella cartella'; $labels['managefolders'] = 'Gestione cartelle'; $labels['specialfolders'] = 'Cartelle Speciali'; $labels['sortby'] = 'Ordina per'; diff --git a/program/localization/it_IT/messages.inc b/program/localization/it_IT/messages.inc index 1a0c9db76..665a9e5ba 100644 --- a/program/localization/it_IT/messages.inc +++ b/program/localization/it_IT/messages.inc @@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Sei sicuro di voler eliminare i contatti se $messages['deletemessagesconfirm'] = 'Sei sicuro di voler eliminare i messaggi selezionati?'; $messages['deletefolderconfirm'] = 'Sei sicuro di voler eliminare la cartella selezionata?'; $messages['purgefolderconfirm'] = 'Sei sicuro di voler eliminare tutti i messaggi in questa cartella?'; -$messages['foldercreating'] = 'Creazione cartella...'; $messages['folderdeleting'] = 'Eliminazione cartella...'; -$messages['folderrenaming'] = 'Rinominazione cartella...'; $messages['foldermoving'] = 'Spostamento cartella...'; $messages['formincomplete'] = 'Per favore, compila tutti i campi'; $messages['noemailwarning'] = 'Per favore, immetti un indirizzo e-mail valido'; @@ -92,7 +90,6 @@ $messages['copyingmessage'] = 'Copia del messaggio'; $messages['receiptsent'] = 'Ricevuta di ritorno inviata con successo'; $messages['errorsendingreceipt'] = 'Impossibile spedire la ricevuta di ritorno'; $messages['nodeletelastidentity'] = 'Impossibile eliminare l\'unica identità disponibile'; -$messages['addsubfolderhint'] = 'La cartella verrà creata come sotto cartella della cartella corrente'; $messages['forbiddencharacter'] = 'Il nome della cartella contiene un carattere vietato'; $messages['selectimportfile'] = 'Per favore, seleziona il file da caricare'; $messages['addresswriterror'] = 'La rubrica selezionata non è scrivibile'; diff --git a/program/localization/ja_JP/labels.inc b/program/localization/ja_JP/labels.inc index c8ff8ac1b..317ba6ea2 100644 --- a/program/localization/ja_JP/labels.inc +++ b/program/localization/ja_JP/labels.inc @@ -16,68 +16,51 @@ @version $Id$ -EN-Revision: 4184 +EN-Revision: 3891 */ $labels = array(); - -// login page $labels['welcome'] = 'ようこそ $product へ'; $labels['username'] = 'ユーザー名'; $labels['password'] = 'パスワード'; $labels['server'] = 'サーバー'; $labels['login'] = 'ログイン'; - -// taskbar $labels['logout'] = 'ログアウト'; $labels['mail'] = '電子メール'; $labels['settings'] = '個人設定'; $labels['addressbook'] = 'アドレス帳'; - -// mailbox names $labels['inbox'] = '受信トレイ'; $labels['drafts'] = '下書き'; $labels['sent'] = '送信済みアイテム'; $labels['trash'] = 'ごみ箱'; $labels['junk'] = '迷惑メール'; - -// message listing $labels['subject'] = '件名'; $labels['from'] = '差出人'; $labels['to'] = '宛先'; $labels['cc'] = 'コピー'; $labels['bcc'] = 'Bcc'; $labels['replyto'] = 'Reply-To (返信先)'; -$labels['mailreplyto'] = 'Mail-Reply-To (ML 投稿者)'; -$labels['mailfollowupto'] = 'Mail-Followup-To (ML の宛先)'; +$labels['followupto'] = 'Followup-To ( の宛先)'; $labels['date'] = '日付'; -$labels['size'] = '容量'; +$labels['size'] = 'サイズ'; $labels['priority'] = '優先度'; $labels['organization'] = '所属'; -$labels['readstatus'] = '閲覧の状態'; - -// aliases -$labels['reply-to'] = $labels['replyto']; -$labels['mail-reply-to'] = $labels['mailreplyto']; -$labels['mail-followup-to'] = $labels['mailfollowupto']; - -$labels['mailboxlist'] = 'フォルダー一覧'; +$labels['readstatus'] = '閲覧状況'; +$labels['reply-to'] = '返信先'; +$labels['mail-reply-to'] = 'Mail-Reply-To (ML 投稿者)'; +$labels['mail-followup-to'] = 'Mail-Followup-To (ML の宛先)'; +$labels['mailboxlist'] = 'フォルダ一覧'; $labels['messagesfromto'] = '表示中のメール: $from ~ $to (全: $count 件)'; $labels['threadsfromto'] = '表示中のスレッド: $from ~ $to (全: $count 件)'; $labels['messagenrof'] = '現在のメール: $nr (全: $count 件)'; - -$labels['copy'] = 'コピー'; -$labels['move'] = '移動'; -$labels['moveto'] = 'フォルダーの移動'; +$labels['copy'] = 'コピー'; +$labels['move'] = '移動'; +$labels['moveto'] = 'フォルダの移動'; $labels['download'] = 'ダウンロード'; - $labels['filename'] = 'ファイル名'; $labels['filesize'] = 'ファイル サイズ'; - $labels['addtoaddressbook'] = 'アドレス帳に追加'; - -// weekdays short $labels['sun'] = '日'; $labels['mon'] = '月'; $labels['tue'] = '火'; @@ -85,74 +68,64 @@ $labels['wed'] = '水'; $labels['thu'] = '木'; $labels['fri'] = '金'; $labels['sat'] = '土'; - -// weekdays long -$labels['sunday'] = '日曜日'; -$labels['monday'] = '月曜日'; -$labels['tuesday'] = '火曜日'; +$labels['sunday'] = '日曜日'; +$labels['monday'] = '月曜日'; +$labels['tuesday'] = '火曜日'; $labels['wednesday'] = '水曜日'; -$labels['thursday'] = '木曜日'; -$labels['friday'] = '金曜日'; -$labels['saturday'] = '土曜日'; - -// months short -$labels['jan'] = '1 月'; -$labels['feb'] = '2 月'; -$labels['mar'] = '3 月'; -$labels['apr'] = '4 月'; -$labels['may'] = '5 月'; -$labels['jun'] = '6 月'; -$labels['jul'] = '7 月'; -$labels['aug'] = '8 月'; -$labels['sep'] = '9 月'; -$labels['oct'] = '10 月'; -$labels['nov'] = '11 月'; -$labels['dec'] = '12 月'; - -// months long -$labels['longjan'] = '1 月'; -$labels['longfeb'] = '2 月'; -$labels['longmar'] = '3 月'; -$labels['longapr'] = '4 月'; -$labels['longmay'] = '5 月'; -$labels['longjun'] = '6 月'; -$labels['longjul'] = '7 月'; -$labels['longaug'] = '8 月'; -$labels['longsep'] = '9 月'; -$labels['longoct'] = '10 月'; -$labels['longnov'] = '11 月'; -$labels['longdec'] = '12 月'; - +$labels['thursday'] = '木曜日'; +$labels['friday'] = '金曜日'; +$labels['saturday'] = '土曜日'; +$labels['jan'] = '1 月'; +$labels['feb'] = '2 月'; +$labels['mar'] = '3 月'; +$labels['apr'] = '4 月'; +$labels['may'] = '5 月'; +$labels['jun'] = '6 月'; +$labels['jul'] = '7 月'; +$labels['aug'] = '8 月'; +$labels['sep'] = '9 月'; +$labels['oct'] = '10 月'; +$labels['nov'] = '11 月'; +$labels['dec'] = '12 月'; +$labels['longjan'] = '1 月'; +$labels['longfeb'] = '2 月'; +$labels['longmar'] = '3 月'; +$labels['longapr'] = '4 月'; +$labels['longmay'] = '5 月'; +$labels['longjun'] = '6 月'; +$labels['longjul'] = '7 月'; +$labels['longaug'] = '8 月'; +$labels['longsep'] = '9 月'; +$labels['longoct'] = '10 月'; +$labels['longnov'] = '11 月'; +$labels['longdec'] = '12 月'; $labels['today'] = '今日'; - -// toolbar buttons -$labels['checkmail'] = '新着の確認'; -$labels['writenewmessage'] = '新規メールの作成'; -$labels['replytomessage'] = '返信'; +$labels['checkmail'] = '新着の確認'; +$labels['writenewmessage'] = '新規メールの作成'; +$labels['replytomessage'] = '返信'; $labels['replytoallmessage'] = '差出人とすべての宛先に返信'; -$labels['replyall'] = '全員に返信'; -$labels['replylist'] = 'ML に返信'; -$labels['forwardmessage'] = '転送'; -$labels['deletemessage'] = '削除'; +$labels['replyall'] = '全員に返信'; +$labels['replylist'] = 'ML に返信'; +$labels['forwardmessage'] = '転送'; +$labels['deletemessage'] = '削除'; $labels['movemessagetotrash'] = 'ごみ箱に移動'; -$labels['printmessage'] = '印刷'; -$labels['previousmessage'] = '前のメールへ'; +$labels['printmessage'] = '印刷'; +$labels['previousmessage'] = '前のメールへ'; $labels['previousmessages'] = '前の一覧へ'; -$labels['firstmessage'] = '最初のメールへ'; -$labels['firstmessages'] = '最初の一覧へ'; -$labels['nextmessage'] = '次のメールへ'; -$labels['nextmessages'] = '次の一覧へ'; -$labels['lastmessage'] = '最後のメールへ'; -$labels['lastmessages'] = '最後の一覧へ'; -$labels['backtolist'] = '一覧に戻る'; -$labels['viewsource'] = 'ソースの表示'; -$labels['markmessages'] = 'マークを付ける'; -$labels['markread'] = '既読にする'; -$labels['markunread'] = '未読にする'; -$labels['markflagged'] = 'フラグを付ける'; -$labels['markunflagged'] = 'フラグを外す'; +$labels['firstmessage'] = '最初のメールへ'; +$labels['firstmessages'] = '最初の一覧へ'; +$labels['nextmessage'] = '次のメールへ'; +$labels['nextmessages'] = '次の一覧へ'; +$labels['lastmessage'] = '最後のメールへ'; +$labels['lastmessages'] = '最後の一覧へ'; +$labels['backtolist'] = '一覧に戻る'; +$labels['viewsource'] = 'ソースの表示'; +$labels['markmessages'] = 'マークを付ける'; +$labels['markread'] = '既読にする'; +$labels['markunread'] = '未読にする'; +$labels['markflagged'] = 'フラグを付ける'; +$labels['markunflagged'] = 'フラグを外す'; $labels['messageactions'] = 'その他の操作...'; - $labels['select'] = '選択'; $labels['all'] = 'すべて'; $labels['none'] = 'なし'; @@ -163,14 +136,12 @@ $labels['unanswered'] = '未返信'; $labels['deleted'] = '削除済み'; $labels['invert'] = '反転'; $labels['filter'] = 'フィルター'; - $labels['list'] = '一覧'; $labels['threads'] = 'スレッド'; $labels['expand-all'] = 'すべて展開'; $labels['expand-unread'] = '未開封のメールを展開'; $labels['collapse-all'] = 'すべて折りたたむ'; $labels['threaded'] = 'スレッドにする'; - $labels['autoexpand_threads'] = 'スレッドの展開'; $labels['do_expand'] = 'すべてのスレッド'; $labels['expand_only_unread'] = '未開封のメールのみ'; @@ -186,89 +157,69 @@ $labels['listcolumns'] = '列の一覧'; $labels['listsorting'] = '整列基準'; $labels['listorder'] = '整列順'; $labels['listmode'] = '一覧表示モード'; - -$labels['folderactions'] = 'フォルダーの操作...'; +$labels['folderactions'] = 'フォルダの操作...'; $labels['compact'] = 'コンパクト'; $labels['empty'] = '空'; $labels['purge'] = 'ごみ箱を空にする'; - $labels['quota'] = 'ディスク使用量'; -$labels['unknown'] = '不明'; -$labels['unlimited'] = '無制限'; - +$labels['unknown'] = '不明'; +$labels['unlimited'] = '無制限'; $labels['quicksearch'] = '検索'; $labels['resetsearch'] = '検索解除'; -$labels['searchmod'] = '検索条件'; -$labels['msgtext'] = 'すべてのメール'; - +$labels['searchmod'] = '検索条件'; +$labels['msgtext'] = 'すべてのメール'; $labels['openinextwin'] = '新しいウィンドウで開く'; $labels['emlsave'] = 'eml 形式で保存する'; - -// message compose -$labels['compose'] = 'メールの作成'; -$labels['editasnew'] = '新規として編集'; -$labels['savemessage'] = '下書きに保存'; -$labels['sendmessage'] = '今すぐ送信'; -$labels['addattachment'] = 'ファイルの添付'; -$labels['charset'] = '文字エンコード'; -$labels['editortype'] = 'エディターの種類'; -$labels['returnreceipt'] = '開封確認'; -$labels['dsn'] = '配送状況の通知'; - -$labels['editidents'] = '個人情報の編集'; +$labels['compose'] = 'メールの作成'; +$labels['editasnew'] = '新規として編集'; +$labels['savemessage'] = '下書きに保存'; +$labels['sendmessage'] = '今すぐ送信'; +$labels['addattachment'] = 'ファイルの添付'; +$labels['charset'] = '文字エンコード'; +$labels['editortype'] = 'エディターの種類'; +$labels['returnreceipt'] = '開封確認'; +$labels['dsn'] = '配送状況通知'; +$labels['editidents'] = '個人情報の編集'; $labels['checkspelling'] = 'スペル チェック'; $labels['resumeediting'] = 'メール作成に戻る'; -$labels['revertto'] = '元に戻す'; - +$labels['revertto'] = '元に戻す'; $labels['attachments'] = '添付ファイル'; $labels['upload'] = 'アップロード'; -$labels['close'] = '閉じる'; +$labels['close'] = '閉じる'; $labels['messageoptions'] = 'メッセージのオプション...'; - -$labels['low'] = '低い'; -$labels['lowest'] = '最低'; -$labels['normal'] = '通常'; -$labels['high'] = '高い'; +$labels['low'] = '低い'; +$labels['lowest'] = '最低'; +$labels['normal'] = '通常'; +$labels['high'] = '高い'; $labels['highest'] = '最高'; - $labels['nosubject'] = '(件名なし)'; $labels['showimages'] = '画像の表示'; $labels['alwaysshow'] = '$sender から届いた画像は常に表示'; - $labels['htmltoggle'] = 'HTML'; $labels['plaintoggle'] = 'テキスト'; $labels['savesentmessagein'] = '送信済みメールの保存先'; $labels['dontsave'] = '保存しない'; $labels['maxuploadsize'] = '添付可能なファイルのサイズは最大 $size です。'; - $labels['addcc'] = 'Cc 追加'; $labels['addbcc'] = 'Bcc 追加'; $labels['addreplyto'] = 'Reply-To 追加'; -$labels['addmailreplyto'] = 'Mail-Reply-To 追加'; -$labels['addmailfollowupto'] = 'Mail-Followup-To 追加'; - -// mdn +$labels['addfollowupto'] = 'Followup-To 追加'; $labels['mdnrequest'] = 'メールの差出人は開封確認の送付を求めています。開封確認のメールを送付しますか?'; $labels['receiptread'] = '開封確認 (表示済み)'; $labels['yourmessage'] = 'これはあなたが送信したメールに対する開封確認です。'; $labels['receiptnote'] = '注意: この開封確認はメールが受信者に表示されたことの通知です。受信者がメールを読んだこと、内容を理解したことを保証するものではありません。'; - -// address boook $labels['name'] = '表示名'; $labels['firstname'] = '名 (ファースト ネーム)'; $labels['surname'] = '姓 (ラスト ネーム)'; $labels['email'] = 'メールアドレス'; - $labels['addcontact'] = '連絡先の新規追加'; $labels['editcontact'] = '連絡先の編集'; $labels['contacts'] = '連絡先'; $labels['contactproperties'] = '連絡先のプロパティ'; - $labels['edit'] = '編集'; $labels['cancel'] = 'キャンセル'; $labels['save'] = '保存'; $labels['delete'] = '削除'; - $labels['newcontact'] = '連絡先の新規作成'; $labels['deletecontact'] = '連絡先の削除'; $labels['composeto'] = 'この連絡先へメールの送信'; @@ -278,37 +229,28 @@ $labels['export'] = 'エクスポート'; $labels['exportvcards'] = 'vCard 形式でエクスポート'; $labels['newcontactgroup'] = '連絡先グループの新規作成'; $labels['groupactions'] = '連絡先グループの操作...'; - $labels['previouspage'] = '前の一覧へ'; $labels['firstpage'] = '最初の一覧へ'; $labels['nextpage'] = '次の一覧へ'; $labels['lastpage'] = '最後の一覧へ'; - $labels['group'] = 'グループ'; $labels['groups'] = 'グループ'; $labels['personaladrbook'] = '個人アドレス'; - $labels['import'] = 'インポート'; $labels['importcontacts'] = '連絡先のインポート'; $labels['importfromfile'] = 'インポートするファイル:'; $labels['importreplace'] = '現在のアドレス帳と置き換える'; $labels['importtext'] = '既存のアドレス帳の連絡先をアップロードできます。現在、vCard 形式からのインポートに対応しています。'; $labels['done'] = '完了'; - -// settings $labels['settingsfor'] = '次の設定:'; - $labels['preferences'] = '設定'; $labels['userpreferences'] = 'ユーザー設定'; $labels['editpreferences'] = 'ユーザー設定の変更'; - $labels['identities'] = '個人情報'; $labels['manageidentities'] = 'アカウントの個人情報管理'; $labels['newidentity'] = '個人情報の新規作成'; - $labels['newitem'] = '新しい項目'; $labels['edititem'] = '項目の編集'; - $labels['preferhtml'] = 'HTML を表示する'; $labels['defaultcharset'] = '標準の文字セット'; $labels['htmlmessage'] = 'HTML メール'; @@ -320,19 +262,19 @@ $labels['timezone'] = 'タイムゾーン'; $labels['pagesize'] = '1 ページの表示件数'; $labels['signature'] = '署名'; $labels['dstactive'] = 'サマータイムを適用する'; -$labels['htmleditor'] = '新規メールでは HTML を標準にする'; -$labels['htmlonreply'] = 'メールの返信時は常に HTML を使用する'; +$labels['htmleditor'] = '新規メールは HTML を標準にする'; +$labels['htmlonreply'] = '返信メールでは常に HTML を使用'; $labels['htmlsignature'] = '署名に HTML タグを使用する'; $labels['previewpane'] = 'プレビュー ペインを表示する'; $labels['skin'] = 'スキン'; $labels['logoutclear'] = 'ログアウト時にごみ箱を空にする'; -$labels['logoutcompact'] = 'ログアウト時にフォルダーのコンパクト化を実行する'; +$labels['logoutcompact'] = 'ログアウト時にフォルダのコンパクト化を実行する'; $labels['uisettings'] = 'ユーザー インターフェース'; $labels['serversettings'] = 'サーバーの設定'; $labels['mailboxview'] = '受信箱'; -$labels['mdnrequests'] = '開封確認の送信要求時'; -$labels['askuser'] = '開封確認メールの送信を確認する'; -$labels['autosend'] = '開封確認メールを送信する'; +$labels['mdnrequests'] = '差出人への通知'; +$labels['askuser'] = 'ユーザーに確認'; +$labels['autosend'] = '自動的に送信'; $labels['autosendknown'] = '差出人が連絡先に登録されていれば開封確認を送信し、それ以外は問い合わせる'; $labels['autosendknownignore'] = '差出人が連絡先に登録されていれば開封確認を送信し、それ以外は無視する'; $labels['ignore'] = '無視'; @@ -358,7 +300,7 @@ $labels['2047folding'] = 'RFC 2047 準拠 (他のメーラー)'; $labels['force7bit'] = 'マルチバイト文字列を MIME エンコードする'; $labels['advancedoptions'] = '高度な設定'; $labels['focusonnewmessage'] = '新着メールが届いたらブラウザーをアクティブにする'; -$labels['checkallfolders'] = 'すべてのフォルダーで新着メールを表示する'; +$labels['checkallfolders'] = 'すべてのフォルダで新着メールを表示する'; $labels['displaynext'] = 'メールの削除や移動後に次のメールを表示する'; $labels['mainoptions'] = '基本設定'; $labels['section'] = '設定項目'; @@ -370,7 +312,7 @@ $labels['whenreplying'] = '返信時の本文'; $labels['replytopposting'] = '元のメッセージ引用部の前に本文を作成する'; $labels['replybottomposting'] = '元のメッセージ引用部の後に本文を作成する'; $labels['replyremovesignature'] = '返信時にメッセージからオリジナルの署名を除去する'; -$labels['autoaddsignature'] = '自動的に署名を付加する'; +$labels['autoaddsignature'] = '署名を自動的に付加する'; $labels['newmessageonly'] = '新規作成時のみ'; $labels['replyandforwardonly'] = '返信・転送時のみ'; $labels['replysignaturepos'] = '返信・転送時に署名を挿入する位置'; @@ -379,34 +321,32 @@ $labels['abovequote'] = '引用部の前'; $labels['insertsignature'] = '署名の挿入'; $labels['previewpanemarkread'] = '開封済みにする'; $labels['afternseconds'] = '$n 秒後'; -$labels['reqmdn'] = '常に開封確認通知を要求する'; -$labels['reqdsn'] = '常に配送状況の通知を要求する'; -$labels['replysamefolder'] = '返信されたメールを返信元メールと同じフォルダに保存'; - -$labels['folder'] = 'フォルダー'; -$labels['folders'] = 'フォルダー一覧'; -$labels['foldername'] = 'フォルダー名'; +$labels['reqmdn'] = '常に開封確認を要求'; +$labels['reqdsn'] = '常に配送状況通知を要求'; +$labels['replysamefolder'] = '返信されてきたメールを返信元メールと同じフォルダに保存'; +$labels['folder'] = 'フォルダ'; +$labels['folders'] = 'フォルダ一覧'; +$labels['foldername'] = 'フォルダ名'; $labels['subscribed'] = '購読済'; $labels['messagecount'] = 'メール'; -$labels['create'] = '作成'; -$labels['createfolder'] = 'フォルダーの新規作成'; -$labels['rename'] = '名前の変更'; -$labels['renamefolder'] = 'フォルダー名の変更'; -$labels['deletefolder'] = 'フォルダーの削除'; -$labels['managefolders'] = 'フォルダーの管理'; -$labels['specialfolders'] = '特殊なフォルダー'; - +$labels['create'] = '作成'; +$labels['createfolder'] = 'フォルダの新規作成'; +$labels['managefolders'] = 'フォルダの管理'; +$labels['specialfolders'] = '特殊なフォルダ'; +$labels['properties'] = 'プロパティ'; +$labels['folderproperties'] = 'フォルダのプロパティ'; +$labels['parentfolder'] = '親フォルダ'; +$labels['location'] = 'フォルダパス'; +$labels['info'] = 'フォルダ情報'; +$labels['getfoldersize'] = 'クリックでフォルダサイズを表示'; +$labels['changesubscription'] = 'クリックで同期設定を変更'; $labels['sortby'] = '並び替えの基準'; $labels['sortasc'] = '昇順で並び替え'; $labels['sortdesc'] = '降順で並び替え'; - -// units $labels['B'] = 'バイト'; $labels['KB'] = 'KB'; $labels['MB'] = 'MB'; $labels['GB'] = 'GB'; - -// character sets $labels['unicode'] = 'Unicode'; $labels['english'] = '英語'; $labels['westerneuropean'] = '西ヨーロッパ言語'; diff --git a/program/localization/ja_JP/messages.inc b/program/localization/ja_JP/messages.inc index b1b88b0c4..3c3e7bdad 100644 --- a/program/localization/ja_JP/messages.inc +++ b/program/localization/ja_JP/messages.inc @@ -26,7 +26,7 @@ $messages['cookiesdisabled'] = 'ブラウザで Cookie が無効に設定され $messages['sessionerror'] = 'セッションが正しくないか期限切れです。'; $messages['imaperror'] = 'IMAP サーバーへの接続に失敗しました。'; $messages['servererror'] = 'サーバーでエラーが発生しました。'; -$messages['servererrormsg'] = 'サーバー エラー: $msg'; +$messages['servererrormsg'] = 'サーバーエラー: $msg'; $messages['invalidrequest'] = '不正なリクエストです。データは保存されませんでした。'; $messages['nomessagesfound'] = 'メールはありません。'; $messages['loggedout'] = 'ログアウトしました。'; @@ -53,15 +53,15 @@ $messages['errorsaving'] = '保存中にエラーが発生しました。'; $messages['errormoving'] = 'メールを移動できません。'; $messages['errorcopying'] = 'メールをコピーできません。'; $messages['errordeleting'] = 'メールを削除できません。'; -$messages['errormarking'] = 'メールのマークを設定できません。'; +$messages['errormarking'] = 'メールにマークを付けられません。'; $messages['deletecontactconfirm'] = '選択した連絡先を本当に削除しますか?'; $messages['deletemessagesconfirm'] = '選択したメールを本当に削除しますか?'; -$messages['deletefolderconfirm'] = 'このフォルダーを本当に削除しますか?'; -$messages['purgefolderconfirm'] = 'このフォルダーの全メールを本当に削除しますか?'; -$messages['foldercreating'] = 'フォルダーを作成しています...'; -$messages['folderdeleting'] = 'フォルダーを削除しています...'; -$messages['folderrenaming'] = 'フォルダー名を変更しています...'; -$messages['foldermoving'] = 'フォルダーを移動しています...'; +$messages['deletefolderconfirm'] = 'このフォルダを本当に削除しますか?'; +$messages['purgefolderconfirm'] = 'このフォルダの全メールを本当に削除しますか?'; +$messages['folderdeleting'] = 'フォルダを削除しています...'; +$messages['foldermoving'] = 'フォルダを移動しています...'; +$messages['foldersubscribing'] = 'フォルダの同期を登録しています...'; +$messages['folderunsubscribing'] = 'フォルダの同期を解除しています...'; $messages['formincomplete'] = 'すべてのフォームの項目を入力していません。'; $messages['noemailwarning'] = '有効なメールアドレスを入力してください。'; $messages['nonamewarning'] = '名前を入力してください。'; @@ -80,7 +80,10 @@ $messages['searchnomatch'] = '一致するメールがありません。'; $messages['searching'] = '検索しています...'; $messages['checking'] = '確認しています...'; $messages['nospellerrors'] = 'スペル ミスは見つかりませんでした。'; -$messages['folderdeleted'] = 'フォルダーを削除しました。'; +$messages['folderdeleted'] = 'フォルダを削除しました。'; +$messages['foldersubscribed'] = 'フォルダの同期が設定されました。'; +$messages['folderunsubscribed'] = 'フォルダの同期が解除されました。'; +$messages['folderpurged'] = 'フォルダを削除しました。'; $messages['deletedsuccessfully'] = '削除しました。'; $messages['converting'] = 'メールから書式を削除しています...'; $messages['messageopenerror'] = 'サーバーからメールを取得できません。'; @@ -93,12 +96,11 @@ $messages['errorsavingcontact'] = '連絡先のアドレスを保存できませ $messages['movingmessage'] = 'メールを移動しています...'; $messages['copyingmessage'] = 'メールをコピーしています...'; $messages['deletingmessage'] = 'メールを削除しています...'; -$messages['markingmessage'] = 'メールのマークを設定しています...'; +$messages['markingmessage'] = 'メールにマークを付けています...'; $messages['receiptsent'] = '開封確認を送信しました。'; $messages['errorsendingreceipt'] = '開封確認を送信できません。'; $messages['nodeletelastidentity'] = '削除できません。少なくとも 1 つの個人情報が必要です。'; -$messages['addsubfolderhint'] = '現在選択しているフォルダーのサブ フォルダーとして作成されます。'; -$messages['forbiddencharacter'] = 'フォルダー名に利用できない文字が含まれています。'; +$messages['forbiddencharacter'] = 'フォルダ名に利用できない文字が含まれています。'; $messages['selectimportfile'] = 'アップロードするファイルを選択してください。'; $messages['addresswriterror'] = '選択したアドレス帳に書き込めません。'; $messages['contactaddedtogroup'] = 'グループに連絡先を追加しました。'; @@ -110,26 +112,30 @@ $messages['opnotpermitted'] = '許可されていない操作です。'; $messages['nofromaddress'] = '選択中の個人情報にメールアドレスが含まれていません。'; $messages['editorwarning'] = 'テキスト エディターに切り替えるとすべての書式が失われます。よろしいですか?'; $messages['httpreceivedencrypterror'] = '致命的な設定エラーが発生しました。メッセージは送信されませんでした。システム管理者に至急連絡してください。'; -$messages['smtpconnerror'] = 'SMTP Error ($code): サーバーへの接続に失敗しました。'; -$messages['smtpautherror'] = 'SMTP Error ($code): 認証に失敗しました。'; +$messages['smtpconnerror'] = 'SMTP Error ($code): サーバーへの接続に失敗しました'; +$messages['smtpautherror'] = 'SMTP Error ($code): 認証に失敗しました'; $messages['smtpfromerror'] = 'SMTP Error ($code): 差出人 "$from" を設定できません ($msg)'; $messages['smtptoerror'] = 'SMTP Error ($code): 宛先 "$to" を追加できません ($msg)'; -$messages['smtprecipientserror'] = 'SMTP Error: 宛先の一覧を解析できません。'; -$messages['smtpdsnerror'] = 'SMTP エラー: 配送状況通知をサポートしていません。'; -$messages['smtperror'] = 'SMTP エラー: $msg'; +$messages['smtprecipientserror'] = 'SMTP Error: 宛先のリストを解析できません'; +$messages['smtpdsnerror'] = 'SMTP Error: 配送状況通知 (DSN) はサポートされていません'; +$messages['smtperror'] = 'SMTP Error: $msg'; $messages['emailformaterror'] = 'メールアドレスが正しくありません: $email'; $messages['toomanyrecipients'] = '宛先が多すぎます。$max 件以内にしてください。'; $messages['maxgroupmembersreached'] = 'グループのメンバーが多すぎます。$max 件以内にしてください。'; $messages['internalerror'] = '内部エラーが発生しました。もう一度やり直してください。'; -$messages['contactdelerror'] = '連絡先を削除できませんでした。'; +$messages['contactdelerror'] = '連絡先を削除できません。'; $messages['contactdeleted'] = '連絡先を削除しました。'; $messages['groupdeleted'] = 'グループを削除しました。'; -$messages['grouprenamed'] = 'グループ名を変更しました.'; +$messages['grouprenamed'] = 'グループ名を変更しました。'; $messages['groupcreated'] = 'グループを作成しました。'; $messages['messagedeleted'] = 'メールを削除しました。'; $messages['messagemoved'] = 'メールを移動しました。'; $messages['messagecopied'] = 'メールをコピーしました。'; -$messages['messagemarked'] = 'メールのマークを設定しました。'; +$messages['messagemarked'] = 'メールにマークを付けました。'; $messages['autocompletechars'] = '自動補完には少なくとも $min 文字入力してください。'; +$messages['namecannotbeempty'] = '名前が入力されていません。'; +$messages['nametoolong'] = '名前が長すぎます。'; +$messages['folderupdated'] = 'フォルダを更新しました。'; +$messages['foldercreated'] = 'フォルダを作成しました。'; ?> diff --git a/program/localization/ka_GE/labels.inc b/program/localization/ka_GE/labels.inc index 8234318c9..7a56fc41b 100755 --- a/program/localization/ka_GE/labels.inc +++ b/program/localization/ka_GE/labels.inc @@ -274,9 +274,6 @@ $labels['subscribed'] = 'გამოწერილია'; $labels['messagecount'] = 'შეტყობინებები'; $labels['create'] = 'შექმნა'; $labels['createfolder'] = 'საქაღალდის შექმნა'; -$labels['rename'] = 'სახელის გადარქმევა'; -$labels['renamefolder'] = 'სახელის გადარქმევა საქაღალდისთვის'; -$labels['deletefolder'] = 'საქაღალდის წაშლა'; $labels['managefolders'] = 'საქაღალდეების მართვა'; $labels['specialfolders'] = 'სპეციალური საქაღალდე'; $labels['sortby'] = 'დალაგება'; diff --git a/program/localization/ka_GE/messages.inc b/program/localization/ka_GE/messages.inc index 33767dded..6e526b768 100755 --- a/program/localization/ka_GE/messages.inc +++ b/program/localization/ka_GE/messages.inc @@ -52,9 +52,7 @@ $messages['deletecontactconfirm'] = 'ნამდვილად გსურთ $messages['deletemessagesconfirm'] = 'ნამდვილად გსურთ მონიშნული შეტყობინებების წაშლა?'; $messages['deletefolderconfirm'] = 'ნამდვილად გსურთ ამ საქაღალდის წაშლა?'; $messages['purgefolderconfirm'] = 'ნამდვილად გსურთ ყველა შეტყობინების წაშლა აღნიშნულ საქაღალდეში?'; -$messages['foldercreating'] = 'საქაღალდის შექმნა...'; $messages['folderdeleting'] = 'საქაღალდის წაშლა...'; -$messages['folderrenaming'] = 'საქაღალდის სახელის შეცვლა...'; $messages['foldermoving'] = 'საქაღალდის გადატანა...'; $messages['formincomplete'] = 'ყველა ველი არ არის შევსებული'; $messages['noemailwarning'] = 'მიუთითეთ სწორი ელ–ფოსტის მისამართი'; @@ -88,7 +86,6 @@ $messages['movingmessage'] = 'შეტყობინების გადა $messages['receiptsent'] = 'წარმატებით გაიგზავნა'; $messages['errorsendingreceipt'] = 'არ გაიგზავნა'; $messages['nodeletelastidentity'] = 'წაშლა შეუძლებელია, ის თქვენთვის ერთადერთია'; -$messages['addsubfolderhint'] = 'საქაღალდე შეიქმნება როგორც ქვესაქაღალდე მონიშნულ საქაღალდეში'; $messages['forbiddencharacter'] = 'საქაღალდის სახელი შეიცავს აკრძალულ სიმბოლოებს'; $messages['selectimportfile'] = 'გთხოვთ მონიშნოთ ფაილი ასატვირთად'; $messages['addresswriterror'] = 'მონიშნულ მისამართებში ჩაწერა შეუძლებელია'; diff --git a/program/localization/kh_KH/labels.inc b/program/localization/kh_KH/labels.inc index 7782b285e..75799a292 100644 --- a/program/localization/kh_KH/labels.inc +++ b/program/localization/kh_KH/labels.inc @@ -312,9 +312,6 @@ $labels['subscribed'] = 'ភ្ជាប់ជាប្រចាំ'; $labels['messagecount'] = 'សារ'; $labels['create'] = 'បង្កើត'; $labels['createfolder'] = 'បង្កើត Folder ថ្មី'; -$labels['rename'] = 'ប្តូឈ្មោះ'; -$labels['renamefolder'] = 'ប្តូឈ្មោះថត'; -$labels['deletefolder'] = 'លុបថត'; $labels['managefolders'] = 'រៀបចំថត'; $labels['specialfolders'] = 'ថតពិសេស'; $labels['sortby'] = 'តំរៀបតាម'; diff --git a/program/localization/kh_KH/messages.inc b/program/localization/kh_KH/messages.inc index db148d374..9d67d9dc0 100644 --- a/program/localization/kh_KH/messages.inc +++ b/program/localization/kh_KH/messages.inc @@ -54,9 +54,7 @@ $messages['deletecontactconfirm'] = 'តើអ្នកពិតជាចង់ $messages['deletemessagesconfirm'] = 'តើអ្នកពិតជាចង់លុបសារនេះមែនទេ?'; $messages['deletefolderconfirm'] = 'តើអ្នកពិតជាចង់លុបថតនេះមែនទេ?'; $messages['purgefolderconfirm'] = 'តើអ្នកពិតជាចង់លុបសារទាំងអស់មែនទេ?'; -$messages['foldercreating'] = 'កំពុងបង្កើតថតសំរាប់ទុកឯកសារ...'; $messages['folderdeleting'] = 'កំពុងលុបថតសំរាប់ទុកឯកសារ...'; -$messages['folderrenaming'] = 'កំពុងប្តូរឈ្មោះថតសំរាប់ទុកឯកសារ...'; $messages['foldermoving'] = 'កំពុងផ្តេរថតសំរាប់ទុកឯកសារ...'; $messages['formincomplete'] = 'ទំរង់នេះមិនទាន់ពេញលេញនៅឡើយទេ'; $messages['noemailwarning'] = 'សូមវាយបញ្ចូលអ៊ីមែលរបស់អ្នក'; @@ -91,7 +89,6 @@ $messages['copyingmessage'] = 'កំពុងចំលងសារ...'; $messages['receiptsent'] = 'ការបញ្ជូន read receipt បានសំរេច'; $messages['errorsendingreceipt'] = 'មិនអាចបញ្ជុន receipt ទេ'; $messages['nodeletelastidentity'] = 'អ្នកមិនអាចលុបអត្តសញ្ញាណនេះទេ ព្រោះវានៅសល់ចុងក្រោយគេ'; -$messages['addsubfolderhint'] = 'Folder នេះនឹងបង្កើតជា Subfolder នៃ Folder ដែលកំពុងស្ថិតនៅនេះ'; $messages['forbiddencharacter'] = 'ឈ្មោះ Folder នេះមានអក្សរដែលត្រូវហាមឃាត់'; $messages['selectimportfile'] = 'សូមជ្រើសរើសឯកសារដើម្បីផ្ញើ'; $messages['addresswriterror'] = 'សៀវភៅអាសយដ្ឋាននោះមិនអាចសរសេរចូលបានទេ'; diff --git a/program/localization/ko_KR/labels.inc b/program/localization/ko_KR/labels.inc index 2d9799824..15bb8e7a3 100644 --- a/program/localization/ko_KR/labels.inc +++ b/program/localization/ko_KR/labels.inc @@ -250,9 +250,6 @@ $labels['subscribed'] = '가입됨'; $labels['messagecount'] = '메시지'; $labels['create'] = '만들기'; $labels['createfolder'] = '새 폴더 만들기'; -$labels['rename'] = '이름 바꾸기'; -$labels['renamefolder'] = '폴더 이름 바꾸기'; -$labels['deletefolder'] = '폴더 지우기'; $labels['managefolders'] = '폴더 관리'; $labels['specialfolders'] = '특수 폴더'; $labels['sortby'] = '정렬'; diff --git a/program/localization/ko_KR/messages.inc b/program/localization/ko_KR/messages.inc index ea2b45143..596e2b162 100644 --- a/program/localization/ko_KR/messages.inc +++ b/program/localization/ko_KR/messages.inc @@ -49,9 +49,7 @@ $messages['deletecontactconfirm'] = '정말 선택한 연락처들을 삭제하 $messages['deletemessagesconfirm'] = '정말 선택한 메일들을 삭제하시겠습니까?'; $messages['deletefolderconfirm'] = '정말 이 폴더를 삭제하시겠습니까?'; $messages['purgefolderconfirm'] = '정말 이 폴더의 모든 메일을 삭제하시겠습니까?'; -$messages['foldercreating'] = '폴더 만드는 중...'; $messages['folderdeleting'] = '폴더 지우는 중...'; -$messages['folderrenaming'] = '폴더 이름 바꾸는 중...'; $messages['foldermoving'] = '폴더 옮기는 중...'; $messages['formincomplete'] = '양식을 완전히 채우지 않았습니다'; $messages['noemailwarning'] = '유효한 이메일 주소를 넣어주십시오'; @@ -84,7 +82,6 @@ $messages['movingmessage'] = '메시지 이동 중...'; $messages['receiptsent'] = '메일 읽음 확인을 보냈습니다'; $messages['errorsendingreceipt'] = '읽음 확인을 보낼 수 없습니다'; $messages['nodeletelastidentity'] = '이 정보는 마지막 남은 것이므로 지울 수 없습니다'; -$messages['addsubfolderhint'] = '이 폴더는 현재 선택된 폴더의 서브 폴더로 만들어질 것입니다'; $messages['forbiddencharacter'] = '폴더 이름에 쓸 수 없는 문자가 포함되어 있습니다'; $messages['selectimportfile'] = '업로드할 파일을 선택하세요'; $messages['addresswriterror'] = '선택한 주소록은 쓸 수 없습니다'; diff --git a/program/localization/ku/labels.inc b/program/localization/ku/labels.inc index c1b706862..699e37419 100644 --- a/program/localization/ku/labels.inc +++ b/program/localization/ku/labels.inc @@ -177,9 +177,6 @@ $labels['subscribed'] = 'Ni şanenav'; $labels['messagecount'] = 'Peyam'; $labels['create'] = 'Biafirîne'; $labels['createfolder'] = 'Peldankeke nû biafirîne'; -$labels['rename'] = 'Nav biguherîne'; -$labels['renamefolder'] = 'Navê peldankê biguherîne'; -$labels['deletefolder'] = 'Peldankê jê bibe'; $labels['managefolders'] = 'Rêveberiya peldankan'; $labels['sortby'] = 'Şêweyê rêzkirinê'; $labels['sortasc'] = 'Wekî zêde dibe'; diff --git a/program/localization/ku/messages.inc b/program/localization/ku/messages.inc index 37029a9e2..d5d2e018a 100644 --- a/program/localization/ku/messages.inc +++ b/program/localization/ku/messages.inc @@ -74,6 +74,5 @@ $messages['movingmessage'] = 'Ciyê peyamê tê guhertin...'; $messages['receiptsent'] = 'Rapora şandina serkeftî'; $messages['errorsendingreceipt'] = 'Rapor nehat şandin'; $messages['nodeletelastidentity'] = 'Nikarî vê nasnameyê jê bibî. Ew ya dawî ye.'; -$messages['addsubfolderhint'] = 'Ev peldank wê wekî binepeldanka ya heyî bê afirandin'; ?> diff --git a/program/localization/lt_LT/labels.inc b/program/localization/lt_LT/labels.inc index a72a125b3..392d7b208 100644 --- a/program/localization/lt_LT/labels.inc +++ b/program/localization/lt_LT/labels.inc @@ -39,11 +39,15 @@ $labels['to'] = 'Gavėjas'; $labels['cc'] = 'Kopija'; $labels['bcc'] = 'Slaptoji kopija'; $labels['replyto'] = 'Atsakymą gaus'; +$labels['followupto'] = 'Followup-To'; $labels['date'] = 'Data'; $labels['size'] = 'Dydis'; $labels['priority'] = 'Prioritetas'; $labels['organization'] = 'Organizacija'; +$labels['readstatus'] = 'Neskaitytas'; $labels['reply-to'] = 'Atsakymą gaus'; +$labels['mail-reply-to'] = 'Mail-Reply-To'; +$labels['mail-followup-to'] = 'Mail-Followup-To'; $labels['mailboxlist'] = 'Aplankai'; $labels['messagesfromto'] = 'Laiškai nuo $from iki $to iš $count'; $labels['threadsfromto'] = 'Gijos nuo $from iki $to iš $count'; @@ -97,7 +101,9 @@ $labels['today'] = 'Šiandien'; $labels['checkmail'] = 'Tikrinti, ar yra naujų laiškų'; $labels['writenewmessage'] = 'Rašyti naują laišką'; $labels['replytomessage'] = 'Atsakyti siuntėjui'; -$labels['replytoallmessage'] = 'Atsakyti visiems'; +$labels['replytoallmessage'] = 'Atsakyti el. pašto grupei arba laiško siuntėjui ir visiems jo gavėjams'; +$labels['replyall'] = 'Atsakyti visiems'; +$labels['replylist'] = 'Atsakyti el. pašto grupei'; $labels['forwardmessage'] = 'Persiųsti laišką'; $labels['deletemessage'] = 'Pašalinti laišką'; $labels['movemessagetotrash'] = 'Perkelti laišką į šiukšlinę'; @@ -169,7 +175,8 @@ $labels['sendmessage'] = 'Išsiųsti laiską'; $labels['addattachment'] = 'Pridėti failą'; $labels['charset'] = 'Koduotė'; $labels['editortype'] = 'Laiško tipas'; -$labels['returnreceipt'] = 'Prašyti gavimo pažymos'; +$labels['returnreceipt'] = 'Prašyti pristatymo pažymos'; +$labels['dsn'] = 'Laiško pristatymo pažyma'; $labels['editidents'] = 'Tvarkyti tapatybes'; $labels['checkspelling'] = 'Tikrinti rašybą'; $labels['resumeediting'] = 'Tęsti redagavimą'; @@ -194,6 +201,7 @@ $labels['maxuploadsize'] = 'Maksimalus leistinas failo dydis yra $size'; $labels['addcc'] = 'Pridėti Cc'; $labels['addbcc'] = 'Pridėti Bcc'; $labels['addreplyto'] = 'Pridėti Reply-To'; +$labels['addfollowupto'] = 'Pridėti Followup-To'; $labels['mdnrequest'] = 'Šio laiško siuntėjas paprašė patvirtinti, kad jūs jį perskaitėte. Ar išsiųsti tai patvirtinančią pažymą?'; $labels['receiptread'] = 'Patvirtinimas (laiškas perskaitytas)'; $labels['yourmessage'] = 'Tai – pažyma, patvirtinanti, jog buvo perskaitytas Jūsų laiškas'; @@ -205,6 +213,7 @@ $labels['email'] = 'El. paštas'; $labels['addcontact'] = 'Pridėti adresatą'; $labels['editcontact'] = 'Taisyti adresatą'; $labels['contacts'] = 'Adresatai'; +$labels['contactproperties'] = 'Adresato savybės'; $labels['edit'] = 'Redaguoti'; $labels['cancel'] = 'Atsisakyti'; $labels['save'] = 'Įrašyti'; @@ -252,6 +261,7 @@ $labels['pagesize'] = 'Eilučių skaičius puslapyje'; $labels['signature'] = 'Parašas'; $labels['dstactive'] = 'Vasaros laikas skiriasi'; $labels['htmleditor'] = 'Laiškus kurti HTML formatu'; +$labels['htmlonreply'] = 'tik atsakymus į HTML formato laiškus'; $labels['htmlsignature'] = 'HTML parašas'; $labels['previewpane'] = 'Rodyti laiško peržiūros polangį'; $labels['skin'] = 'Grafinis apvalkalas'; @@ -259,12 +269,13 @@ $labels['logoutclear'] = 'Išvalyti Šiukšlinę atsijungiant'; $labels['logoutcompact'] = 'Suspausti Gautų laiškų aplanką atsijungiant'; $labels['uisettings'] = 'Naudotojo sąsaja'; $labels['serversettings'] = 'Serverio nustatymai'; -$labels['mailboxview'] = 'Pašto dėžutės rodinys'; -$labels['mdnrequests'] = 'Siuntėjų prašomos pažymos'; -$labels['askuser'] = 'kaskart klausti'; -$labels['autosend'] = 'siųsti automatiškai'; -$labels['autosendknown'] = 'siųsti tik adresų knygoje esantiems adresatams'; -$labels['ignore'] = 'nesiųsti'; +$labels['mailboxview'] = 'Pašto dėžutės rodymas'; +$labels['mdnrequests'] = 'Gavus prašymą patvirtinti, jog laiškas perskaitytas'; +$labels['askuser'] = 'visuomet klausti, ar siųsti patvirtinimą'; +$labels['autosend'] = 'visuomet siųsti patvirtinimą automatiškai'; +$labels['autosendknown'] = 'automatiškai siųsti patvirtinimą adresų knygoje esantiems adresatams, kitu atveju klausti'; +$labels['autosendknownignore'] = 'automatiškai siųsti patvirtinimą adresų knygoje esantiems adresatams, kitu atveju nesiųsti'; +$labels['ignore'] = 'niekada nesiųsti patvirtinimo'; $labels['readwhendeleted'] = 'Pažymėti laišką kaip skaitytą prieš šalinant'; $labels['flagfordeletion'] = 'Pažymėti laišką šalinimui užuot šalinus'; $labels['skipdeleted'] = 'Nerodyti pašalintų laiškų'; @@ -308,7 +319,9 @@ $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.'; -$labels['reqmdn'] = 'Visuomet prašyti gavimo pažymos'; +$labels['reqmdn'] = 'Visuomet prašyti patvirtinimo, jog laiškas perskaitytas'; +$labels['reqdsn'] = 'Visuomet prašyti laiško pristatymo pažymos'; +$labels['replysamefolder'] = 'Atsakymus talpinti į tą patį aplanką, kuriame yra pirminis laiškas'; $labels['folder'] = 'Aplankas'; $labels['folders'] = 'Aplankai'; $labels['foldername'] = 'Aplanko vardas'; @@ -316,9 +329,6 @@ $labels['subscribed'] = 'Užsakytas'; $labels['messagecount'] = 'Laiškai'; $labels['create'] = 'Sukurti'; $labels['createfolder'] = 'Sukurti naują aplanką'; -$labels['rename'] = 'Pervardinti'; -$labels['renamefolder'] = 'Pervardinti aplanką'; -$labels['deletefolder'] = 'Pašalinti aplanką'; $labels['managefolders'] = 'Tvarkyti aplankus'; $labels['specialfolders'] = 'Specialieji aplankai'; $labels['sortby'] = 'Rikiuoti pagal'; diff --git a/program/localization/lt_LT/messages.inc b/program/localization/lt_LT/messages.inc index 62d59dec4..f6cdb6247 100644 --- a/program/localization/lt_LT/messages.inc +++ b/program/localization/lt_LT/messages.inc @@ -24,6 +24,7 @@ $messages['cookiesdisabled'] = 'Jūsų naršyklė nepriima slapukų'; $messages['sessionerror'] = 'Jūsų sesija negaliojanti'; $messages['imaperror'] = 'Nepavyko prisijungti prie IMAP serverio'; $messages['servererror'] = 'Serverio klaida!'; +$messages['servererrormsg'] = 'Serverio klaida: $msg'; $messages['invalidrequest'] = 'Netinkama užklausa! Duomenys neišsaugoti.'; $messages['nomessagesfound'] = 'Šioje pašto dėžutėje laiškų nėra '; $messages['loggedout'] = 'Jūs sėkmingai atsijungėte. Iki kito karto!'; @@ -55,10 +56,10 @@ $messages['deletecontactconfirm'] = 'Ar tikrai pašalinti pažymėtą(-us) adres $messages['deletemessagesconfirm'] = 'Ar tikrai pašalinti pažymėtą(-us) laišką(-us)?'; $messages['deletefolderconfirm'] = 'Ar tikrai pašalinti šį aplanką?'; $messages['purgefolderconfirm'] = 'Ar tikrai pašalinti visus šiame aplanke esančius laiškus?'; -$messages['foldercreating'] = 'Aplankas kuriamas…'; $messages['folderdeleting'] = 'Aplankas šalinamas…'; -$messages['folderrenaming'] = 'Aplankas pervardinamas…'; $messages['foldermoving'] = 'Aplankas perkeliamas…'; +$messages['foldersubscribing'] = 'Aplankas prenumeruojamas…'; +$messages['folderunsubscribing'] = 'Atsisakoma aplanko prenumeratos…'; $messages['formincomplete'] = 'Formos laukai nepilnai užpildyti'; $messages['noemailwarning'] = 'Prašom įvesti teisingą el. pašto adresą'; $messages['nonamewarning'] = 'Prašom įvesti vardą'; @@ -78,6 +79,9 @@ $messages['searching'] = 'Ieškoma…'; $messages['checking'] = 'Tikrinama…'; $messages['nospellerrors'] = 'Rašybos klaidų nerasta'; $messages['folderdeleted'] = 'Aplankas sėkmingai pašalintas'; +$messages['foldersubscribed'] = 'Aplankas sėkmingai užprenumeruotas'; +$messages['folderunsubscribed'] = 'Aplanko prenumeratos sėkmingai atsisakyta'; +$messages['folderpurged'] = 'Aplankas sėkmingai ištuštintas'; $messages['deletedsuccessfully'] = 'Sėkmingai pašalinta'; $messages['converting'] = 'Šalinamas laiško formatavimas…'; $messages['messageopenerror'] = 'Nepavyko įkelti laiško iš serverio'; @@ -87,12 +91,13 @@ $messages['copysuccess'] = 'Nukopijuota adresų: $nr'; $messages['copyerror'] = 'Adresų nukopijuoti nepavyko'; $messages['sourceisreadonly'] = 'Šis adresų šaltinis prieinamas tik skaitymui'; $messages['errorsavingcontact'] = 'Asmens adreso įrašyti nepavyko'; -$messages['movingmessage'] = 'Laiškas perkeliamas…'; -$messages['copyingmessage'] = 'Laiškas kopijuojamas…'; +$messages['movingmessage'] = 'Laiškas(-ai) perkeliamas(-i)…'; +$messages['copyingmessage'] = 'Laiškai(-ai) kopijuojamas(-i)…'; +$messages['deletingmessage'] = 'Laiškas(-ai) šalinamas(-i)…'; +$messages['markingmessage'] = 'Laiškas(-ai) žymimas(-i)…'; $messages['receiptsent'] = 'Laiško perskaitymo pažyma sėkmingai išsiųsta'; $messages['errorsendingreceipt'] = 'Laiško perskaitymo pažymos išsiųsti nepavyko'; $messages['nodeletelastidentity'] = 'Jūs negalite ištrinti šios tapatybės, nes ji yra vienintelė likusi.'; -$messages['addsubfolderhint'] = 'Šis aplankas bus sukurtas kaip pažymėtojo aplanko poaplankis'; $messages['forbiddencharacter'] = 'Aplanko varde rasta neleistinų simbolių'; $messages['selectimportfile'] = 'Parinkite įkelti norimą failą'; $messages['addresswriterror'] = 'Pasirinktoji adresų knyga prieinama tik skaitymui'; @@ -110,10 +115,25 @@ $messages['smtpautherror'] = 'SMTP klaida ($code): nepavyko autentikuotis'; $messages['smtpfromerror'] = 'SMTP klaida ($code): nepavyko nurodyti siuntėjo „$from“ ($msg)'; $messages['smtptoerror'] = 'SMTP klaida ($code): nepavyko pridėti gavėjo „$to“ ($msg)'; $messages['smtprecipientserror'] = 'SMTP klaida: nepavyko apdoroti gavėjų sąrašo'; +$messages['smtpdsnerror'] = 'SMTP klaida: laiškų pristatymo pažymos nepalaikomos'; $messages['smtperror'] = 'SMTP klaida: $msg'; $messages['emailformaterror'] = 'Netinkamas el. pašto adresas: $email'; $messages['toomanyrecipients'] = 'Per daug gavėjų. Sumažinkite jų bent iki $max.'; $messages['maxgroupmembersreached'] = 'Grupės narių skaičius viršijo maksimalų leistiną ($max)'; $messages['internalerror'] = 'Įvyko klaida. Prašom bandyti iš naujo.'; +$messages['contactdelerror'] = 'Nepavyko pašalinti adresato(-ų)'; +$messages['contactdeleted'] = 'Adresatas(-ai) sėkmingai pašalintas(-i)'; +$messages['groupdeleted'] = 'Grupė sėkmingai pašalinta'; +$messages['grouprenamed'] = 'Grupė sėkmingai pervardinta'; +$messages['groupcreated'] = 'Grupė sėkmingai sukurta'; +$messages['messagedeleted'] = 'Laiškas(-ai) sėkmingai pašalintas(-i)'; +$messages['messagemoved'] = 'Laiškas(-ai) sėkmingai perkeltas(-i)'; +$messages['messagecopied'] = 'Laiškas(-ai) sėkmingai nukopijuotas(-i)'; +$messages['messagemarked'] = 'Laiškas(-ai) sėkmingai pažymėtas(-i)'; +$messages['autocompletechars'] = 'Automatiniam užbaigimui būtini bent $min simboliai'; +$messages['namecannotbeempty'] = 'Vardas negali būti tuščias'; +$messages['nametoolong'] = 'Vardas yra per ilgas'; +$messages['folderupdated'] = 'Aplanko savybės sėkmingai atnaujintos'; +$messages['foldercreated'] = 'Aplankas sėkmingai sukurtas'; ?> diff --git a/program/localization/lv_LV/labels.inc b/program/localization/lv_LV/labels.inc index cafa1d397..797b455f8 100644 --- a/program/localization/lv_LV/labels.inc +++ b/program/localization/lv_LV/labels.inc @@ -277,9 +277,6 @@ $labels['subscribed'] = 'Abonēta'; $labels['messagecount'] = 'Vēstules'; $labels['create'] = 'Izveidot'; $labels['createfolder'] = 'Izveidot jaunu mapi'; -$labels['rename'] = 'Pārsaukt'; -$labels['renamefolder'] = 'Pārsaukt mapi'; -$labels['deletefolder'] = 'Dzēst mapi'; $labels['managefolders'] = 'Rediģēt mapes'; $labels['specialfolders'] = 'Īpašās mapes'; $labels['sortby'] = 'Kārtot pēc'; diff --git a/program/localization/lv_LV/messages.inc b/program/localization/lv_LV/messages.inc index e84a83246..78b3a4abe 100644 --- a/program/localization/lv_LV/messages.inc +++ b/program/localization/lv_LV/messages.inc @@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Vai tiešām vēlaties dzēst iezīmēto(ā $messages['deletemessagesconfirm'] = 'Vai tiešām vēlaties dzēst iezīmēto(ās) vēstules?'; $messages['deletefolderconfirm'] = 'Vai tiešām vēlaties dzēst šo mapi?'; $messages['purgefolderconfirm'] = 'Vai tiešām vēlaties dzēst visas vēstules, kas atrodas šajā mapē?'; -$messages['foldercreating'] = 'Izveidoju mapi...'; $messages['folderdeleting'] = 'Dzēšu mapi...'; -$messages['folderrenaming'] = 'Pārsaucu mapi...'; $messages['foldermoving'] = 'Pārvietoju mapi...'; $messages['formincomplete'] = 'Formulārs nav pilnībā aizpildīts'; $messages['noemailwarning'] = 'Lūdzu ievadiet pareizu e-pasta adresi'; @@ -91,7 +89,6 @@ $messages['movingmessage'] = 'Pārvietoju vēstules...'; $messages['receiptsent'] = 'Saņemšanas apstiprinājums nosūtīts'; $messages['errorsendingreceipt'] = 'Neizdevās nosūtīt apstiprinājumu'; $messages['nodeletelastidentity'] = 'Šo identitāti nevar izdzēst, tā ir pati pēdējā.'; -$messages['addsubfolderhint'] = 'Šis folderis tiks izveidots kā apakšfolderis tam, kurš patreiz ir izvēlēts'; $messages['forbiddencharacter'] = 'Mapes nosaukums satur aizliegtus simbolus'; $messages['selectimportfile'] = 'Lūdzu izvēlieties failu, ko vēlaties augšupielādēt'; $messages['addresswriterror'] = 'Izvēlētās adrešu grāmatas datus nevar labot'; diff --git a/program/localization/mk_MK/labels.inc b/program/localization/mk_MK/labels.inc index 4d8d69f56..462fdce4b 100755 --- a/program/localization/mk_MK/labels.inc +++ b/program/localization/mk_MK/labels.inc @@ -274,9 +274,6 @@ $labels['subscribed'] = 'Претплатен'; $labels['messagecount'] = 'Пораки'; $labels['create'] = 'Создај'; $labels['createfolder'] = 'Создај нова папка'; -$labels['rename'] = 'Преименувај'; -$labels['renamefolder'] = 'Преименувај папка'; -$labels['deletefolder'] = 'Избриши папка'; $labels['managefolders'] = 'Организирање на папки'; $labels['specialfolders'] = 'Специјални папки'; $labels['sortby'] = 'Сортирај по'; diff --git a/program/localization/mk_MK/messages.inc b/program/localization/mk_MK/messages.inc index 4d51bb51c..03440616e 100755 --- a/program/localization/mk_MK/messages.inc +++ b/program/localization/mk_MK/messages.inc @@ -52,9 +52,7 @@ $messages['deletecontactconfirm'] = 'Дали сте сигурни дека с $messages['deletemessagesconfirm'] = 'Дали сте сигурни дека сакате да го(и) избришете обележаниот(те) писмо(а)?'; $messages['deletefolderconfirm'] = 'Дали сте сигурни дека сакате да ја избришете оваа папка?'; $messages['purgefolderconfirm'] = 'Дали сте сигурни дека сакате да ги избршете сите писма во оваа папка?'; -$messages['foldercreating'] = 'Ја создавам папката...'; $messages['folderdeleting'] = 'Ја бришам папката...'; -$messages['folderrenaming'] = 'Ја преименувам папката...'; $messages['foldermoving'] = 'Ја преместувам папката...'; $messages['formincomplete'] = 'Имате изоставено непополнети информации'; $messages['noemailwarning'] = 'Внесете валидна е-поштенска адреса'; @@ -88,7 +86,6 @@ $messages['movingmessage'] = 'Пораката се преместува...'; $messages['receiptsent'] = 'Известувањето е успешно пратено'; $messages['errorsendingreceipt'] = 'Известувањето не е пратено'; $messages['nodeletelastidentity'] = 'Овој идентитет неможе да се избрише, тој е последниот.'; -$messages['addsubfolderhint'] = 'Оваа папка ќе биде креирана како потпапка на моментално избраната.'; $messages['forbiddencharacter'] = 'Името на папката содржи несоодветен формат'; $messages['selectimportfile'] = 'Изберете ја податотеката која сакате да ја прикачите'; $messages['addresswriterror'] = 'Одбраниот именик не може да се менува'; diff --git a/program/localization/mr_IN/labels.inc b/program/localization/mr_IN/labels.inc index a8cf8655e..218781381 100755 --- a/program/localization/mr_IN/labels.inc +++ b/program/localization/mr_IN/labels.inc @@ -378,9 +378,6 @@ $labels['subscribed'] = 'वर्गणिदार होणे'; $labels['messagecount'] = 'संदेश'; $labels['create'] = 'तयार करा'; $labels['createfolder'] = 'नवीन फोल्डर तयार करा'; -$labels['rename'] = 'नवीन नाव द्या'; -$labels['renamefolder'] = 'फोल्डरला नवीन नाव द्या'; -$labels['deletefolder'] = 'फोल्डर काढून टाका'; $labels['managefolders'] = 'फोल्डर्सचे नियोजन करा'; $labels['specialfolders'] = 'विषेश फोल्डर'; $labels['sortby'] = 'ने वर्गवारी करा'; diff --git a/program/localization/mr_IN/messages.inc b/program/localization/mr_IN/messages.inc index 3dc07fd5f..6ee3a5e8b 100755 --- a/program/localization/mr_IN/messages.inc +++ b/program/localization/mr_IN/messages.inc @@ -51,9 +51,7 @@ $messages['deletecontactconfirm'] = 'खूण केलेले सर्व $messages['deletemessagesconfirm'] = 'खूण केलेले सर्व संदेश खरोखरच तुम्हाला काढून टाकायचे आहेत का?'; $messages['deletefolderconfirm'] = 'हा फोल्डर खरोखरच तुम्हाला काढून टाकायचा आहेत का?'; $messages['purgefolderconfirm'] = 'या फोल्डरमधिल सर्व संदेश खरोखरच तुम्हाला काढून टाकायचे आहेत का?'; -$messages['foldercreating'] = 'फोल्डर तयार करत आहे'; $messages['folderdeleting'] = 'फोल्डर काढून टाकत आहे'; -$messages['folderrenaming'] = 'फोल्डरला नवीन नाव देत आहे.'; $messages['foldermoving'] = 'फोल्डर हलवत आहे.'; $messages['formincomplete'] = 'फॉर्म पूर्णपणे भरलेला नाही. '; $messages['noemailwarning'] = 'योग्य, बरोबर, आणि वैध इमेल पत्ता द्या. '; @@ -88,7 +86,6 @@ $messages['copyingmessage'] = 'संदेशाची नक्‍कल क $messages['receiptsent'] = 'पोचपावती यशस्वीरित्या पाठवण्यात आली आहे. '; $messages['errorsendingreceipt'] = 'पोचपावती पाठवता आली नाही.'; $messages['nodeletelastidentity'] = 'तुम्ही हे खाते काढून टाकू शकत नाही कारण हे तुमचे शेवटचे खाते आहे.'; -$messages['addsubfolderhint'] = 'हा फोल्डर निवडलेल्या फोल्डरचा उप-फोल्डर असेल'; $messages['forbiddencharacter'] = 'फोल्डरच्या नावात न चालणारी अक्षरे किंवा खूणा आहेत.'; $messages['selectimportfile'] = 'चढवण्यासाठी फाईल निवडा'; $messages['addresswriterror'] = 'निवडलेल्या पत्ता नोंदवहीत नोंद करता येत नाही.'; diff --git a/program/localization/ms_MY/labels.inc b/program/localization/ms_MY/labels.inc index c6a585818..bf395daa1 100644 --- a/program/localization/ms_MY/labels.inc +++ b/program/localization/ms_MY/labels.inc @@ -215,9 +215,6 @@ $labels['subscribed'] = 'Dilanggan'; $labels['messagecount'] = 'Mesej-mesej'; $labels['create'] = 'Cipta'; $labels['createfolder'] = 'Cipta kabinet fail baru'; -$labels['rename'] = 'Namakan semula'; -$labels['renamefolder'] = 'Namakan semula kabinet fail'; -$labels['deletefolder'] = 'Hapus kabinet fail'; $labels['managefolders'] = 'Urus kabinet fail'; $labels['sortby'] = 'Susun dengan'; $labels['sortasc'] = 'Susun menaik'; diff --git a/program/localization/ms_MY/messages.inc b/program/localization/ms_MY/messages.inc index 2dac2bc90..907903b58 100644 --- a/program/localization/ms_MY/messages.inc +++ b/program/localization/ms_MY/messages.inc @@ -77,6 +77,5 @@ $messages['movingmessage'] = 'Memindah mesej...'; $messages['receiptsent'] = 'Berjaya menghantar resip bacaan'; $messages['errorsendingreceipt'] = 'Tidak dapat menghantar resip'; $messages['nodeletelastidentity'] = 'Anda tidak boleh membuang identiti ini, ia milik anda yang terakhir.'; -$messages['addsubfolderhint'] = 'Folder ini akan dibina sebagai subfolder kepada folder yang dipilih sekarang'; ?> diff --git a/program/localization/nb_NO/labels.inc b/program/localization/nb_NO/labels.inc index 0e828a26c..c9f3b0ff1 100644 --- a/program/localization/nb_NO/labels.inc +++ b/program/localization/nb_NO/labels.inc @@ -312,9 +312,6 @@ $labels['subscribed'] = 'Abonnere'; $labels['messagecount'] = 'Meldinger'; $labels['create'] = 'Opprett'; $labels['createfolder'] = 'Lag ny mappe'; -$labels['rename'] = 'Endre navn'; -$labels['renamefolder'] = 'Endre navn på mappe'; -$labels['deletefolder'] = 'Slett mappe'; $labels['managefolders'] = 'Rediger mapper'; $labels['specialfolders'] = 'Spesielle mapper'; $labels['sortby'] = 'Sorter etter'; diff --git a/program/localization/nb_NO/messages.inc b/program/localization/nb_NO/messages.inc index db00818a7..4f823a587 100644 --- a/program/localization/nb_NO/messages.inc +++ b/program/localization/nb_NO/messages.inc @@ -57,9 +57,7 @@ $messages['deletecontactconfirm'] = 'Vil du virkelig slette valgte kontakt(er)?' $messages['deletemessagesconfirm'] = 'Vil du virkelig slette de(n) valgte meldingen(e)?'; $messages['deletefolderconfirm'] = 'Vil du virkelig slette denne mappen?'; $messages['purgefolderconfirm'] = 'Vil du virkelig slette alle meldingene i denne mappen?'; -$messages['foldercreating'] = 'Oppretter mappe...'; $messages['folderdeleting'] = 'Sletter mappe...'; -$messages['folderrenaming'] = 'Gir nytt navn til mappe...'; $messages['foldermoving'] = 'Flytter mappe...'; $messages['formincomplete'] = 'Skjemaet var ikke fullstendig fylt ut'; $messages['noemailwarning'] = 'Skriv inn en gyldig e-postadresse'; @@ -94,7 +92,6 @@ $messages['copyingmessage'] = 'Kopierer e-post...'; $messages['receiptsent'] = 'Kvittering er sent'; $messages['errorsendingreceipt'] = 'Kunne ikke sende kvittering'; $messages['nodeletelastidentity'] = 'Du kan ikke slette denne identiteten, det er din eneste.'; -$messages['addsubfolderhint'] = 'Mappen vil bli opprettet som en undermappe av nåværende valgt mappe'; $messages['forbiddencharacter'] = 'Mappenavnet inneholder tegn som ikke er tillatt'; $messages['selectimportfile'] = 'Vennligst velg en fil for opplasting'; $messages['addresswriterror'] = 'Den valgte adresseboken er ikke skrivbar'; diff --git a/program/localization/ne_NP/labels.inc b/program/localization/ne_NP/labels.inc index ee1cc09ec..ec4ed1aca 100644 --- a/program/localization/ne_NP/labels.inc +++ b/program/localization/ne_NP/labels.inc @@ -166,9 +166,6 @@ $labels['foldername'] = 'फोल्डरको नाम'; $labels['subscribed'] = 'सबस्क्राईब गरियो'; $labels['create'] = 'बनाउनुहोस'; $labels['createfolder'] = 'नया फोलडर बनाउनुहोस'; -$labels['rename'] = 'नाम बदल्नुहोस'; -$labels['renamefolder'] = 'फोलडरको नाम बदल्नुहोस'; -$labels['deletefolder'] = 'फोलडर मेट्नुहोस'; $labels['managefolders'] = 'फोलडर व्यवस्थित गर्नुहोस'; $labels['sortby'] = 'यसरी तय गर्नुहोस'; $labels['sortasc'] = 'पहिलो देखि अन्तिम सम्म तय गर्नुहोस'; diff --git a/program/localization/nl_BE/labels.inc b/program/localization/nl_BE/labels.inc index 2ac0eeae0..86b6c4b94 100644 --- a/program/localization/nl_BE/labels.inc +++ b/program/localization/nl_BE/labels.inc @@ -321,9 +321,6 @@ $labels['subscribed'] = 'Gebruiken'; $labels['messagecount'] = 'Berichten'; $labels['create'] = 'Aanmaken'; $labels['createfolder'] = 'Nieuwe map aanmaken'; -$labels['rename'] = 'Hernoemen'; -$labels['renamefolder'] = 'Hernoem map'; -$labels['deletefolder'] = 'Map verwijderen'; $labels['managefolders'] = 'Mappen beheren'; $labels['specialfolders'] = 'Speciale mappen'; $labels['sortby'] = 'Sorteren op'; diff --git a/program/localization/nl_BE/messages.inc b/program/localization/nl_BE/messages.inc index 8739fa5b0..71fbb3dec 100644 --- a/program/localization/nl_BE/messages.inc +++ b/program/localization/nl_BE/messages.inc @@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Bent u zeker dat u de geselecteerde contact $messages['deletemessagesconfirm'] = 'Bent u zeker dat u de geselecteerde bericht(en) wilt verwijderen?'; $messages['deletefolderconfirm'] = 'Weet u zeker dat u deze map wilt verwijderen?'; $messages['purgefolderconfirm'] = 'Bent u zeker dat u alle berichten in deze map wilt verwijderen?'; -$messages['foldercreating'] = 'Map aanmaken...'; $messages['folderdeleting'] = 'Map verwijderen...'; -$messages['folderrenaming'] = 'Map hernoemen...'; $messages['foldermoving'] = 'Map verplaatsen...'; $messages['formincomplete'] = 'Het formulier is niet volledig ingevuld...'; $messages['noemailwarning'] = 'Geef een geldig e-mailadres op...'; @@ -92,7 +90,6 @@ $messages['copyingmessage'] = 'Bericht wordt gekopieerd...'; $messages['receiptsent'] = 'Ontvangstbevestiging verstuurd'; $messages['errorsendingreceipt'] = 'Kon de ontvangstbevestigign niet versturen'; $messages['nodeletelastidentity'] = 'U kunt dit laatste afzendadres niet verwijderen.'; -$messages['addsubfolderhint'] = 'De map wordt aangemaakt als submap van de geselecteerde map.'; $messages['forbiddencharacter'] = 'De naam van de map bevat een karakter dat niet is toegestaan'; $messages['selectimportfile'] = 'Selecteer een bestand om te uploaden'; $messages['addresswriterror'] = 'Het geselecteerde adresboek is alleen-lezen'; diff --git a/program/localization/nl_NL/labels.inc b/program/localization/nl_NL/labels.inc index 97ad8cc18..5097ec7a4 100644 --- a/program/localization/nl_NL/labels.inc +++ b/program/localization/nl_NL/labels.inc @@ -42,16 +42,15 @@ $labels['to'] = 'Ontvanger'; $labels['cc'] = 'Kopie'; $labels['bcc'] = 'Bcc'; $labels['replyto'] = 'Antwoord-aan'; -$labels['mailreplyto'] = 'Mail-Antwoord-Aan'; -$labels['mailfollowupto'] = 'Mail-Followup-Aan'; +$labels['followupto'] = 'Followup-Aan'; $labels['date'] = 'Datum'; $labels['size'] = 'Grootte'; $labels['priority'] = 'Prioriteit'; $labels['organization'] = 'Organisatie'; $labels['readstatus'] = 'Gelezen?'; $labels['reply-to'] = 'Antwoord-aan'; -$labels['mailreply-to'] = 'Mail-Antwoord-Aan'; -$labels['mailfollowup-to'] = 'Mail-Followup-Aan'; +$labels['mail-reply-to'] = 'Mail-Antwoord-Aan'; +$labels['mail-followup-to'] = 'Mail-Followup-Aan'; $labels['mailboxlist'] = 'Mappen'; $labels['messagesfromto'] = 'Bericht $from t/m $to van $count'; $labels['threadsfromto'] = 'Conversatie $from t/m $to van $count'; @@ -205,8 +204,7 @@ $labels['maxuploadsize'] = 'Maximum toegestane bestandsgrootte is $size'; $labels['addcc'] = 'Cc toevoegen'; $labels['addbcc'] = 'Bcc toevoegen'; $labels['addreplyto'] = 'Antwoord-aan toevoegen'; -$labels['addmailreplyto'] = 'Mail-Antwoord-Aan toevoegen'; -$labels['addmailfollowupto'] = 'Mail-Followup-Aan toevoegen'; +$labels['addfollowupto'] = 'Mail-Followup-Aan toevoegen'; $labels['mdnrequest'] = 'De afzender van dit bericht heeft gevraagd een melding te ontvangen wanneer u dit bericht heeft gelezen. Wilt u deze melding verzenden?'; $labels['receiptread'] = 'Ontvangstbevestiging (gelezen)'; $labels['yourmessage'] = 'Dit is een ontvangstbevestiging voor uw bericht'; @@ -218,6 +216,7 @@ $labels['email'] = 'E-Mail'; $labels['addcontact'] = 'Nieuwe contactpersoon toevoegen'; $labels['editcontact'] = 'Contactpersoon wijzigen'; $labels['contacts'] = 'Contacten'; +$labels['contactproperties'] = 'Contact eigenschappen'; $labels['edit'] = 'Wijzig'; $labels['cancel'] = 'Annuleer'; $labels['save'] = 'Opslaan'; @@ -325,6 +324,7 @@ $labels['previewpanemarkread'] = 'Markeer voorbeeld bericht als gelezen'; $labels['afternseconds'] = 'Na $n seconden'; $labels['reqmdn'] = 'Vraag altijd een ontvangstbevestiging'; $labels['reqdsn'] = 'Vraag altijd een afleverings status notificatie (DSN)'; +$labels['replysamefolder'] = 'Plaats antwoorden in de folder van het beantwoorde bericht'; $labels['folder'] = 'Map'; $labels['folders'] = 'Mappen'; $labels['foldername'] = 'Mapnaam'; @@ -332,9 +332,6 @@ $labels['subscribed'] = 'Geabonneerd'; $labels['messagecount'] = 'Berichten'; $labels['create'] = 'Nieuw'; $labels['createfolder'] = 'Maak nieuwe map'; -$labels['rename'] = 'Wijzig naam'; -$labels['renamefolder'] = 'Wijzig mapnaam'; -$labels['deletefolder'] = 'Verwijder map'; $labels['managefolders'] = 'Beheer mappen'; $labels['specialfolders'] = 'Speciale mappen'; $labels['sortby'] = 'Sorteer op'; diff --git a/program/localization/nl_NL/messages.inc b/program/localization/nl_NL/messages.inc index 9fd802a39..f83789dd4 100644 --- a/program/localization/nl_NL/messages.inc +++ b/program/localization/nl_NL/messages.inc @@ -58,9 +58,7 @@ $messages['deletecontactconfirm'] = 'Weet u zeker dat u de geselecteerde contact $messages['deletemessagesconfirm'] = 'Weet u zeker dat u de geselecteerde bericht(en) wilt verwijderen?'; $messages['deletefolderconfirm'] = 'Weet u zeker dat u deze map wilt verwijderen?'; $messages['purgefolderconfirm'] = 'Weet u zeker dat u alle berichten in deze map wilt verwijderen?'; -$messages['foldercreating'] = 'Map aanmaken...'; $messages['folderdeleting'] = 'Map verwijderen...'; -$messages['folderrenaming'] = 'Mapnaam wijzigen...'; $messages['foldermoving'] = 'Map verplaatsen...'; $messages['formincomplete'] = 'Het formulier was niet volledig ingevuld'; $messages['noemailwarning'] = 'Geef een geldig e-mailadres op'; @@ -95,7 +93,6 @@ $messages['copyingmessage'] = 'Kopiëren bericht...'; $messages['receiptsent'] = 'Ontvangstbevestiging is verstuurd'; $messages['errorsendingreceipt'] = 'Kan de ontvangstbevestiging niet versturen'; $messages['nodeletelastidentity'] = 'U kunt uw enige identiteit niet verwijderen'; -$messages['addsubfolderhint'] = 'Deze map zal worden aangemaakt onder de geselecteerde map'; $messages['forbiddencharacter'] = 'De naam van de map bevat een karakter dat niet is toegestaan'; $messages['selectimportfile'] = 'Selecteer een bestand om de uploaden'; $messages['addresswriterror'] = 'Het geselecteerde adresboek is alleen lezen'; diff --git a/program/localization/nn_NO/labels.inc b/program/localization/nn_NO/labels.inc index 5f4a0a91c..d79c67c20 100644 --- a/program/localization/nn_NO/labels.inc +++ b/program/localization/nn_NO/labels.inc @@ -310,9 +310,6 @@ $labels['subscribed'] = 'Abonnert'; $labels['messagecount'] = 'Meldingar'; $labels['create'] = 'Opprette'; $labels['createfolder'] = 'Opprett ny mappe'; -$labels['rename'] = 'Gje nytt namn'; -$labels['renamefolder'] = 'Gje nytt namn til mappe'; -$labels['deletefolder'] = 'Slett mappe'; $labels['managefolders'] = 'Mappehandsaming'; $labels['specialfolders'] = 'Spesialmapper'; $labels['sortby'] = 'Sorter etter'; diff --git a/program/localization/nn_NO/messages.inc b/program/localization/nn_NO/messages.inc index 904e3b696..1e181a2dc 100644 --- a/program/localization/nn_NO/messages.inc +++ b/program/localization/nn_NO/messages.inc @@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Sletta kontakt(ar)?'; $messages['deletemessagesconfirm'] = 'Sletta melding(ar)?'; $messages['deletefolderconfirm'] = 'Sletta mappa?'; $messages['purgefolderconfirm'] = 'Sletta alle meldingane i denne mappa?'; -$messages['foldercreating'] = 'Lagar mappe...'; $messages['folderdeleting'] = 'Slettar mappe...'; -$messages['folderrenaming'] = 'Endrar namn på mappe...'; $messages['foldermoving'] = 'Flyttar mappe...'; $messages['formincomplete'] = 'Fyll ut skjema'; $messages['noemailwarning'] = 'Skriv inn korrekt epostadresse'; @@ -92,7 +90,6 @@ $messages['copyingmessage'] = 'Kopierer epost...'; $messages['receiptsent'] = 'Sende melding-er-lest-kvittering'; $messages['errorsendingreceipt'] = 'Kunne ikkje senda melding-er-lest-kvittering'; $messages['nodeletelastidentity'] = 'Du kan ikkje sletta denne identiteten, det er den siste.'; -$messages['addsubfolderhint'] = 'Denne mappa vert laga som ei undermappe til den du hev markert'; $messages['forbiddencharacter'] = 'Mappenamn inneheld eit teikn som ikkje er støtta'; $messages['selectimportfile'] = 'Vel ei fil til å lasta opp'; $messages['addresswriterror'] = 'Denne adresseboka er ikkje skrivbar'; diff --git a/program/localization/pl_PL/labels.inc b/program/localization/pl_PL/labels.inc index 03eaa97ed..519eb34ef 100644 --- a/program/localization/pl_PL/labels.inc +++ b/program/localization/pl_PL/labels.inc @@ -42,13 +42,12 @@ $labels['from'] = 'Nadawca'; $labels['to'] = 'Odbiorca'; $labels['cc'] = 'Kopia'; $labels['bcc'] = 'Ukryta kopia'; -$labels['replyto'] = 'Odp. do'; +$labels['replyto'] = 'Odpowiedź do'; $labels['date'] = 'Data'; $labels['size'] = 'Rozmiar'; $labels['readstatus'] = 'Przeczytano'; $labels['priority'] = 'Priorytet'; $labels['organization'] = 'Organizacja'; -$labels['reply-to'] = 'Odpowiedz do'; $labels['mailboxlist'] = 'Foldery'; $labels['messagesfromto'] = 'Wiadomości od $from do $to z $count'; $labels['threadsfromto'] = 'Wątki od $from do $to z $count'; @@ -319,9 +318,6 @@ $labels['subscribed'] = 'Zasubskrybowany'; $labels['messagecount'] = 'Wiadomości'; $labels['create'] = 'Utwórz'; $labels['createfolder'] = 'Utwórz nowy folder'; -$labels['rename'] = 'Zmień nazwę'; -$labels['renamefolder'] = 'Zmień nazwę folderu'; -$labels['deletefolder'] = 'Usuń folder'; $labels['managefolders'] = 'Zarządzaj folderami'; $labels['specialfolders'] = 'Foldery specjalne'; $labels['sortby'] = 'Sortuj wg'; @@ -352,18 +348,21 @@ $labels['chinese'] = 'chiński'; $labels['folderactions'] = 'Działania na folderach...'; $labels['contacts'] = 'Kontakty'; $labels['messageoptions'] = 'Opcje wiadomości...'; -$labels['mailreplyto'] = 'Mail-Reply-To'; -$labels['mailfollowupto'] = 'Mail-Followup-To'; -$labels['mail-reply-to'] = 'Mail-Reply-To'; -$labels['mail-followup-to'] = 'Mail-Followup-To'; +$labels['followupto'] = 'Kontynuacja do'; $labels['replyall'] = 'Odpowiedz wszystkim'; $labels['replylist'] = 'Odpowiedz na listę'; $labels['editidents'] = 'Edytuj tożsamości'; -$labels['addmailreplyto'] = 'Dodaj Mail-Reply-To'; -$labels['addmailfollowupto'] = 'Dodaj Mail-Followup-To'; +$labels['addfollowupto'] = 'Dodaj Followup-To'; $labels['dsn'] = 'Status dostarczenia (DSN)'; $labels['reqdsn'] = 'Zawsze żądaj statusu dostarczenia (DSN)'; $labels['replysamefolder'] = 'Umieszczaj odpowiedzi w folderze wiadomości, na którą odpowiadam'; $labels['contactproperties'] = 'Właściwości'; +$labels['properties'] = 'Właściwości'; +$labels['folderproperties'] = 'Włąściwości folderu'; +$labels['parentfolder'] = 'Folder nadrzędny'; +$labels['location'] = 'Położenie'; +$labels['info'] = 'Informacje'; +$labels['getfoldersize'] = 'Kliknij aby pobrać rozmiar folderu'; +$labels['changesubscription'] = 'Kliknij aby zmienić subskrypcję'; ?> diff --git a/program/localization/pl_PL/messages.inc b/program/localization/pl_PL/messages.inc index 29749caae..d3c205bf0 100644 --- a/program/localization/pl_PL/messages.inc +++ b/program/localization/pl_PL/messages.inc @@ -60,9 +60,7 @@ $messages['deletecontactconfirm'] = 'Czy na pewno chcesz usunąć wybrane kontak $messages['deletemessagesconfirm'] = 'Czy na pewno chcesz usunąć wybrane wiadomości?'; $messages['deletefolderconfirm'] = 'Czy na pewno chcesz usunąć wybrany folder?'; $messages['purgefolderconfirm'] = 'Czy na pewno chcesz usunąć wszystkie wiadomości w tym folderze?'; -$messages['foldercreating'] = 'Dodawanie folderu...'; $messages['folderdeleting'] = 'Usuwanie folderu...'; -$messages['folderrenaming'] = 'Zmiana nazwy folderu...'; $messages['foldermoving'] = 'Przenoszenie folderu...'; $messages['formincomplete'] = 'Uzupełnij formularz!'; $messages['noemailwarning'] = 'Podaj poprawny adres e-mail!'; @@ -99,7 +97,6 @@ $messages['markingmessage'] = 'Oznaczanie wiadomości...'; $messages['receiptsent'] = 'Pomyślnie wysłano potwierdzenie dostarczenia'; $messages['errorsendingreceipt'] = 'Nie można wysłać potwierdzenia'; $messages['nodeletelastidentity'] = 'Nie można skasować tej tożsamości, ponieważ jest ostatnią.'; -$messages['addsubfolderhint'] = 'Ten folder zostanie utworzony jako podfolder aktualnie wybranego.'; $messages['forbiddencharacter'] = 'Nazwa folderu zawiera niedozwolony znak'; $messages['selectimportfile'] = 'Proszę wybrać plik do wysłania'; $messages['addresswriterror'] = 'Wybrana książka adresowa jest tylko-do-odczytu'; @@ -133,5 +130,17 @@ $messages['messagemoved'] = 'Wiadomości zostały przeniesione'; $messages['messagecopied'] = 'Wiadomości zostały skopiowane'; $messages['messagemarked'] = 'Wiadomości zostały oznaczone'; $messages['autocompletechars'] = 'Wprowadź co najmniej $min znak(ów) aby skorzystać z autouzupełniania'; +$messages['foldersubscribing'] = 'Subskrybowanie folderu...'; +$messages['folderunsubscribing'] = 'Odsubskrybowanie folderu...'; +$messages['foldersubscribed'] = 'Folder pomyślnie zasubskrybowany'; +$messages['folderunsubscribed'] = 'Folder pomyślnie odsubskrybowany'; +$messages['folderpurged'] = 'Folder pomyślnie wyczyszczony'; +$messages['folderexpunged'] = 'Folder pomyślnie opróżniony'; +$messages['namecannotbeempty'] = 'Nazwa nie może być pusta'; +$messages['nametoolong'] = 'Name jest zbyt długa'; +$messages['folderupdated'] = 'Folder pomyślnie zaktualizowany'; +$messages['foldercreated'] = 'Folder pomyślnie utworzony'; +$messages['errorreadonly'] = 'Nie można wykonać operacji. Folder tylko do odczytu'; +$messages['errornoperm'] = 'Nie można wykonać operacji. Brak uprawnień'; ?> diff --git a/program/localization/ps/labels.inc b/program/localization/ps/labels.inc index 7dd643045..e7692e7bc 100755 --- a/program/localization/ps/labels.inc +++ b/program/localization/ps/labels.inc @@ -287,9 +287,6 @@ $labels['subscribed'] = 'ګډ شو '; $labels['messagecount'] = 'استوزي '; $labels['create'] = 'جوړول، رامنځ ته کول '; $labels['createfolder'] = 'نوې پوښۍ جوړ کړه '; -$labels['rename'] = 'بيانومول '; -$labels['renamefolder'] = 'پوښۍ بيانومول '; -$labels['deletefolder'] = 'پوښۍ ړنګول '; $labels['managefolders'] = 'پوښيو څارل '; $labels['specialfolders'] = 'ځانګړي پوښۍۍ'; diff --git a/program/localization/ps/messages.inc b/program/localization/ps/messages.inc index c5aae6aa9..f29475c6d 100755 --- a/program/localization/ps/messages.inc +++ b/program/localization/ps/messages.inc @@ -31,9 +31,7 @@ $messages['deletecontactconfirm'] = ' په رښتيا سره غواړئ چې ټ $messages['deletemessagesconfirm'] = 'په رښتيا سره غواړئ چې ټاکل شوي استوزي‌ړنګ کړئ؟'; $messages['deletefolderconfirm'] = 'په رښتيآ سره غواړئ چې دا پوښۍ ړنګه کړئ؟'; $messages['purgefolderconfirm'] = 'په رښتيا سره غواړئ چې ددې پوښۍ ټول استوزي‌ړنګ کړئ؟'; -$messages['foldercreating'] = 'پوښۍ جوړوي'; $messages['folderdeleting'] = 'پوښۍ ړنګوي'; -$messages['folderrenaming'] = 'پوښۍ بيانوموي'; $messages['foldermoving'] = 'پوښۍ خوځوي'; $messages['formincomplete'] = 'دا پورمه بشپړه ډکه شوې نه ده'; $messages['noemailwarning'] = 'مهرباني وکړئ د يوه شته برېښناليک پته ورځای کړئ'; @@ -66,7 +64,6 @@ $messages['movingmessage'] = 'استوزه خوځوي'; $messages['receiptsent'] = 'يو لوستل شوی رسليک په بشپړه توګه واستول شو'; $messages['errorsendingreceipt'] = 'رسليک يې ونه شوای ليږلی'; $messages['nodeletelastidentity'] = 'تاسې نه شئ کولی چې دا پېژندنه ړنګه کړئ، داستاسو اخرنی پيژندنه ده'; -$messages['addsubfolderhint'] = 'دا پوښۍ د دويمۍ پوښۍ په توګه د ټاکل شوي اوسني ځای کې جوړشي'; $messages['forbiddencharacter'] = 'د پوښۍ نوم له فوربايډن تورو څخه جوړ دی'; $messages['selectimportfile'] = 'مهرباني وکړئ‌يو فايل د پورته کولو لپاره وټاکئ'; $messages['addresswriterror'] = 'ټاکل شوی پتې کتاب د بياليکلو نه دی'; diff --git a/program/localization/pt_BR/labels.inc b/program/localization/pt_BR/labels.inc index 27c5bb51b..ee236d7da 100644 --- a/program/localization/pt_BR/labels.inc +++ b/program/localization/pt_BR/labels.inc @@ -316,9 +316,6 @@ $labels['subscribed'] = 'Ativo'; $labels['messagecount'] = 'Mensagens'; $labels['create'] = 'Criar'; $labels['createfolder'] = 'Criar nova pasta'; -$labels['rename'] = 'Renomear'; -$labels['renamefolder'] = 'Renomear pasta'; -$labels['deletefolder'] = 'Apagar pasta'; $labels['managefolders'] = 'Gerenciar pastas'; $labels['specialfolders'] = 'Pastas especiais'; $labels['sortby'] = 'Ordenado por'; diff --git a/program/localization/pt_BR/messages.inc b/program/localization/pt_BR/messages.inc index 8e4e39f1b..2fd94373c 100644 --- a/program/localization/pt_BR/messages.inc +++ b/program/localization/pt_BR/messages.inc @@ -59,9 +59,7 @@ $messages['deletecontactconfirm'] = 'Deseja realmente excluir o(s) contato(s) se $messages['deletemessagesconfirm'] = 'Deseja realmente excluir a(s) mensagem(s) selecionada(s)?'; $messages['deletefolderconfirm'] = 'Deseja realmente excluir esta pasta?'; $messages['purgefolderconfirm'] = 'Deseja realmente excluir todas mensagens desta pasta?'; -$messages['foldercreating'] = 'Criando pasta...'; $messages['folderdeleting'] = 'Apagando pasta...'; -$messages['folderrenaming'] = 'Renomeando pasta...'; $messages['foldermoving'] = 'Movendo pasta...'; $messages['formincomplete'] = 'Os campos não foram completamente preenchidos'; $messages['noemailwarning'] = 'Por favor, informe um endereço de e-mail válido'; @@ -96,7 +94,6 @@ $messages['copyingmessage'] = 'Copiando mensagem...'; $messages['receiptsent'] = 'Confirmação de recebimento enviada com sucesso'; $messages['errorsendingreceipt'] = 'Não foi possível enviar a confirmação de recebimento'; $messages['nodeletelastidentity'] = 'Você não pode excluir a única identidade'; -$messages['addsubfolderhint'] = 'Esta pasta será criada como uma sub-pasta da que está selecionada'; $messages['forbiddencharacter'] = 'O nome da pasta contém um caractere não permitido'; $messages['selectimportfile'] = 'Selecione o arquivo para envio'; $messages['addresswriterror'] = 'O catálogo de endereços selecionado não tem permissão de modificação'; diff --git a/program/localization/pt_PT/labels.inc b/program/localization/pt_PT/labels.inc index 0202eb373..8897c5138 100644 --- a/program/localization/pt_PT/labels.inc +++ b/program/localization/pt_PT/labels.inc @@ -42,8 +42,7 @@ $labels['to'] = 'Para'; $labels['cc'] = 'Cc'; $labels['bcc'] = 'Bcc'; $labels['replyto'] = 'Responder para'; -$labels['mailreplyto'] = 'Mensagem-Responder-Para'; -$labels['mailfollowupto'] = 'Mensagem-Reencaminhar-Para'; +$labels['followupto'] = 'Reencaminhar-Para'; $labels['date'] = 'Data'; $labels['size'] = 'Tamanho'; $labels['priority'] = 'Prioridade'; @@ -205,8 +204,7 @@ $labels['maxuploadsize'] = 'Tamanho máximo permitido do ficheiro é $size'; $labels['addcc'] = 'Adicionar Cc'; $labels['addbcc'] = 'Adicionar Bcc'; $labels['addreplyto'] = 'Adicionar Responder para'; -$labels['addmailreplyto'] = 'Adicionar Mensagem-Responder-Para'; -$labels['addmailfollowupto'] = 'Adicionar Mensagem-Reencaminhar-Para'; +$labels['addfollowupto'] = 'Adicionar Reencaminhar-Para'; $labels['mdnrequest'] = 'O remetente desta mensagem pediu para ser notificado quando esta mensagem fosse lida. Deseja enviar uma notificação?'; $labels['receiptread'] = 'Recibo de leitura'; $labels['yourmessage'] = 'Isto é um recibo de leitura da sua mensagem'; @@ -334,11 +332,15 @@ $labels['subscribed'] = 'Subscrita'; $labels['messagecount'] = 'Mensagens'; $labels['create'] = 'Criar'; $labels['createfolder'] = 'Criar nova pasta'; -$labels['rename'] = 'Renomear'; -$labels['renamefolder'] = 'Renomear pasta'; -$labels['deletefolder'] = 'Eliminar pasta'; $labels['managefolders'] = 'Gerir pastas'; $labels['specialfolders'] = 'Pastas especiais (predefinidas)'; +$labels['properties'] = 'Propriedades'; +$labels['folderproperties'] = 'Propriedades da pasta'; +$labels['parentfolder'] = 'Pasta de origem'; +$labels['location'] = 'Localização'; +$labels['info'] = 'Informação'; +$labels['getfoldersize'] = 'Clique para obter o tamanho da pasta'; +$labels['changesubscription'] = 'Clique para alterar a subscrição'; $labels['sortby'] = 'Ordenar por'; $labels['sortasc'] = 'Ordenação Ascendente'; $labels['sortdesc'] = 'Ordenação Descendente'; @@ -365,4 +367,4 @@ $labels['japanese'] = 'Japonês'; $labels['korean'] = 'Coreano'; $labels['chinese'] = 'Chinês'; -?> \ No newline at end of file +?> diff --git a/program/localization/pt_PT/messages.inc b/program/localization/pt_PT/messages.inc index 511a2ed05..8bd4b3908 100644 --- a/program/localization/pt_PT/messages.inc +++ b/program/localization/pt_PT/messages.inc @@ -58,10 +58,10 @@ $messages['deletecontactconfirm'] = 'Deseja realmente eliminar o(s) contacto(s) $messages['deletemessagesconfirm'] = 'Deseja realmente eliminar a(s) mensagem(ns) selecionada(s)?'; $messages['deletefolderconfirm'] = 'Deseja realmente eliminar esta pasta?'; $messages['purgefolderconfirm'] = 'Deseja realmente eliminar todas mensagens desta pasta?'; -$messages['foldercreating'] = 'A criar pasta...'; $messages['folderdeleting'] = 'A eliminar pasta...'; -$messages['folderrenaming'] = 'A renomear pasta...'; $messages['foldermoving'] = 'A mover pasta...'; +$messages['foldersubscribing'] = 'A subscrever pasta...'; +$messages['folderunsubscribing'] = 'A cancelar subscrição da pasta...'; $messages['formincomplete'] = 'Os campos não foram completamente preenchidos'; $messages['noemailwarning'] = 'Por favor escreva um endereço de e-mail válido'; $messages['nonamewarning'] = 'Por favor escreva o nome'; @@ -81,6 +81,9 @@ $messages['searching'] = 'A pesquisar...'; $messages['checking'] = 'A verificar...'; $messages['nospellerrors'] = 'Não foi encontrado nenhum erro ortográfico'; $messages['folderdeleted'] = 'Pasta eliminada com sucesso'; +$messages['foldersubscribed'] = 'Subscrição da pasta concluída com sucesso'; +$messages['folderunsubscribed'] = 'Subscrição da pasta cancelada com sucesso'; +$messages['folderpurged'] = 'Pasta eliminada com sucesso'; $messages['deletedsuccessfully'] = 'Eliminado com sucesso'; $messages['converting'] = 'A remover a formatação...'; $messages['messageopenerror'] = 'Não foi possível carregar a mensagem'; @@ -97,7 +100,6 @@ $messages['markingmessage'] = 'A marcar mensagens...'; $messages['receiptsent'] = 'Recibo de leitura enviadocom sucesso'; $messages['errorsendingreceipt'] = 'Não foi possível enviar o recibo'; $messages['nodeletelastidentity'] = 'Esta é a última identidade, não é possível eliminá-la.'; -$messages['addsubfolderhint'] = 'Esta pasta será criada como uma sub-pasta da que está seleccionada'; $messages['forbiddencharacter'] = 'O nome da pasta contém um caractere inválido'; $messages['selectimportfile'] = 'Por favor seleccione um ficheiro para carregar'; $messages['addresswriterror'] = 'Não é possível escrever no livro de endereços seleccionado'; @@ -131,5 +133,9 @@ $messages['messagemoved'] = 'Mensagens movidas com sucesso'; $messages['messagecopied'] = 'Mensagens copiadas com sucesso'; $messages['messagemarked'] = 'Mensagens marcadas com sucesso'; $messages['autocompletechars'] = 'Indique pelo menos $min caracteres para auto completar'; +$messages['namecannotbeempty'] = 'O nome não pode estar em branco'; +$messages['nametoolong'] = 'O nome é demasiado longo'; +$messages['folderupdated'] = 'Actualização da pasta concluída com sucesso'; +$messages['foldercreated'] = 'Pasta criada com sucesso'; -?> \ No newline at end of file +?> diff --git a/program/localization/ro_RO/labels.inc b/program/localization/ro_RO/labels.inc index 6f77b1fed..83778a081 100644 --- a/program/localization/ro_RO/labels.inc +++ b/program/localization/ro_RO/labels.inc @@ -310,9 +310,6 @@ $labels['subscribed'] = 'Înscris'; $labels['messagecount'] = 'Mesaje'; $labels['create'] = 'Creează'; $labels['createfolder'] = 'Creează dosar nou'; -$labels['rename'] = 'Redenumeşte'; -$labels['renamefolder'] = 'Redenumeşte dosar'; -$labels['deletefolder'] = 'Şterge dosar'; $labels['managefolders'] = 'Administrează dosare'; $labels['specialfolders'] = 'Dosare speciale'; $labels['sortby'] = 'Sortează după'; diff --git a/program/localization/ro_RO/messages.inc b/program/localization/ro_RO/messages.inc index 8027f427a..8ced7d260 100644 --- a/program/localization/ro_RO/messages.inc +++ b/program/localization/ro_RO/messages.inc @@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi c $messages['deletemessagesconfirm'] = 'Chiar doriţi să ştergeţi mesajele selectate ?'; $messages['deletefolderconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi acest dosar?'; $messages['purgefolderconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi toate mesajele din acest dosar?'; -$messages['foldercreating'] = 'Se creează dosarul...'; $messages['folderdeleting'] = 'Se şterge dosarul...'; -$messages['folderrenaming'] = 'Se redenumeşte dosarul...'; $messages['foldermoving'] = 'Se mută dosarul...'; $messages['formincomplete'] = 'Formularul nu a fost completat corect'; $messages['noemailwarning'] = 'Vă rugăm să introduceţi o adresă de e-mail validă'; @@ -92,7 +90,6 @@ $messages['copyingmessage'] = 'Copiere mesaj...'; $messages['receiptsent'] = 'Confirmarea de citire a fost trimisă cu succes'; $messages['errorsendingreceipt'] = 'Confirmarea nu a putut fi trimisă'; $messages['nodeletelastidentity'] = 'Nu puteţi şterge această identitate, este ultima.'; -$messages['addsubfolderhint'] = 'Acest dosar va fi creat ca subdosar al celui selectat.'; $messages['forbiddencharacter'] = 'Numele dosarului conţine un caracter nepermis.'; $messages['selectimportfile'] = 'Va rugăm să selectaţi fişierul pentru încărcare'; $messages['addresswriterror'] = 'Agenda selectată nu poate fi actualizată'; diff --git a/program/localization/ru_RU/labels.inc b/program/localization/ru_RU/labels.inc index d8e5ff84a..6aeeff4f4 100644 --- a/program/localization/ru_RU/labels.inc +++ b/program/localization/ru_RU/labels.inc @@ -40,13 +40,15 @@ $labels['to'] = 'Кому'; $labels['cc'] = 'Копия'; $labels['bcc'] = 'Скрытая'; $labels['replyto'] = 'Ответить'; -$labels['mailreplyto'] = 'Ответить в списке рассылки'; +$labels['followupto'] = 'Followup-To'; $labels['date'] = 'Дата'; $labels['size'] = 'Размер'; $labels['priority'] = 'Приоритет'; $labels['organization'] = 'Организация'; +$labels['readstatus'] = 'Статус прочтения'; $labels['reply-to'] = 'Ответить'; -$labels['mailreply-to'] = 'Ответить в списке рассылки'; +$labels['mail-reply-to'] = 'Mail-Reply-To'; +$labels['mail-followup-to'] = 'Mail-Followup-To'; $labels['mailboxlist'] = 'Папки'; $labels['messagesfromto'] = 'Сообщения с $from по $to из $count'; $labels['threadsfromto'] = 'Обсуждения с $from по $to из $count'; @@ -200,7 +202,7 @@ $labels['maxuploadsize'] = 'Максимальный размер файла $si $labels['addcc'] = 'Копия'; $labels['addbcc'] = 'Скрытая копия'; $labels['addreplyto'] = 'Кому ответить'; -$labels['addmailreplyto'] = 'Кому ответить в списке рассылки'; +$labels['addfollowupto'] = 'Добавить Followup-To'; $labels['mdnrequest'] = 'Отправитель этого сообщения запросил уведомление о прочтении. Отправить уведомление?'; $labels['receiptread'] = 'Уведомление о прочтении'; $labels['yourmessage'] = 'Это уведомление о прочтении вашего сообщения'; @@ -212,6 +214,7 @@ $labels['email'] = 'E-Mail'; $labels['addcontact'] = 'Добавить выбранные контакты в список контактов'; $labels['editcontact'] = 'Редактировать контакт'; $labels['contacts'] = 'Контакты'; +$labels['contactproperties'] = 'Свойства контакта'; $labels['edit'] = 'Правка'; $labels['cancel'] = 'Отмена'; $labels['save'] = 'Сохранить'; @@ -319,6 +322,7 @@ $labels['previewpanemarkread'] = 'Отмечать просмотренные с $labels['afternseconds'] = 'через $n секунд'; $labels['reqmdn'] = 'Всегда запрашивать уведомление о доставке'; $labels['reqdsn'] = 'Всегда запрашивать уведомление о состоянии доставки'; +$labels['replysamefolder'] = 'Помещать ответы в ту же папку, где находится оригинал'; $labels['folder'] = 'Папка'; $labels['folders'] = 'Папки'; $labels['foldername'] = 'Имя папки'; @@ -326,9 +330,6 @@ $labels['subscribed'] = 'Подписан'; $labels['messagecount'] = 'Сообщения'; $labels['create'] = 'Создать'; $labels['createfolder'] = 'Создать новую папку'; -$labels['rename'] = 'Переименовать'; -$labels['renamefolder'] = 'Переименовать папку'; -$labels['deletefolder'] = 'Удалить папку'; $labels['managefolders'] = 'Управление папками'; $labels['specialfolders'] = 'Особые папки'; $labels['sortby'] = 'Сортировать по'; diff --git a/program/localization/ru_RU/messages.inc b/program/localization/ru_RU/messages.inc index 75c6d77ce..f37c07816 100644 --- a/program/localization/ru_RU/messages.inc +++ b/program/localization/ru_RU/messages.inc @@ -56,9 +56,7 @@ $messages['deletecontactconfirm'] = 'Вы действительно хотит $messages['deletemessagesconfirm'] = 'Вы действительно хотите удалить выбранные сообщения?'; $messages['deletefolderconfirm'] = 'Вы действительно хотите удалить эту папку?'; $messages['purgefolderconfirm'] = 'Вы действительно хотите удалить все сообщения в этой папке?'; -$messages['foldercreating'] = 'Создание папки...'; $messages['folderdeleting'] = 'Удаление папки...'; -$messages['folderrenaming'] = 'Переименование папки...'; $messages['foldermoving'] = 'Перемещение папки...'; $messages['formincomplete'] = 'Заполнены не все поля'; $messages['noemailwarning'] = 'Пожалуйста, введите корректный адрес электронной почты'; @@ -95,7 +93,6 @@ $messages['markingmessage'] = 'Выделение сообщений...'; $messages['receiptsent'] = 'Уведомление о прочтении отправлено'; $messages['errorsendingreceipt'] = 'Уведомление о прочтении не отправлено'; $messages['nodeletelastidentity'] = 'Вы не можете удалить этот профиль, он у вас последний'; -$messages['addsubfolderhint'] = 'Эта папка будет создана как подпапка в текущей папке'; $messages['forbiddencharacter'] = 'Имя папки содержит недопустимые символы'; $messages['selectimportfile'] = 'Выберите файл для загрузки'; $messages['addresswriterror'] = 'Выбранная адресная книга недоступна для записи'; diff --git a/program/localization/si_LK/labels.inc b/program/localization/si_LK/labels.inc index 632b9679e..6b3ad9ef8 100644 --- a/program/localization/si_LK/labels.inc +++ b/program/localization/si_LK/labels.inc @@ -179,9 +179,6 @@ $labels['subscribed'] = 'සාමාජික'; $labels['messagecount'] = 'පනිවුඩ'; $labels['create'] = 'සෑදීම'; $labels['createfolder'] = 'අඵත් ෆෝල්ඩරයක් සෑදීම'; -$labels['rename'] = 'නැවත නම් කිරීම'; -$labels['renamefolder'] = 'ෆෝල්ඩරය නැවත නම් කිරීම'; -$labels['deletefolder'] = 'ෆෝල්ඩරය මකා දැමීම'; $labels['managefolders'] = 'හැසිරවීම හැසිරවීම'; $labels['sortby'] = 'චිසින් වර්ග කිරීම'; $labels['sortasc'] = 'ආරෝහණ වර්ග කිරීම'; diff --git a/program/localization/si_LK/messages.inc b/program/localization/si_LK/messages.inc index 61a0b429f..0a5a5fc25 100644 --- a/program/localization/si_LK/messages.inc +++ b/program/localization/si_LK/messages.inc @@ -76,6 +76,5 @@ $messages['movingmessage'] = 'පනිවුඩය ගෙනයමින් ප $messages['receiptsent'] = 'කියවීම් භාර ගැනීම සාර්ථකව යවන ලදී'; $messages['errorsendingreceipt'] = 'කියවීම් භාර ගැනීම යැවීමට නොහැක'; $messages['nodeletelastidentity'] = 'අවසාන අනන්‍යතාවය මකා දැමිය නොහැක'; -$messages['addsubfolderhint'] = 'ෆෝල්ඩරය දැනට තෝරාගෙන ඇති ෆෝල්ඩරයෙහි අනු ෆෝල්ඩරයක් ලෙස සෑදේ'; ?> diff --git a/program/localization/sk_SK/labels.inc b/program/localization/sk_SK/labels.inc index e2c22e01e..ce93f888f 100644 --- a/program/localization/sk_SK/labels.inc +++ b/program/localization/sk_SK/labels.inc @@ -318,9 +318,6 @@ $labels['subscribed'] = 'Prihlásený k odberu'; $labels['messagecount'] = 'Počet správ'; $labels['create'] = 'Vytvoriť'; $labels['createfolder'] = 'Vytvor nový priečinok'; -$labels['rename'] = 'Premenovať'; -$labels['renamefolder'] = 'Premenovať priečinok'; -$labels['deletefolder'] = 'Zmazať priečinok'; $labels['managefolders'] = 'Spravovať priečinky'; $labels['specialfolders'] = 'Špeciálne priečinky'; $labels['sortby'] = 'Triediť podľa'; diff --git a/program/localization/sk_SK/messages.inc b/program/localization/sk_SK/messages.inc index 4476fd729..315038f96 100644 --- a/program/localization/sk_SK/messages.inc +++ b/program/localization/sk_SK/messages.inc @@ -57,9 +57,7 @@ $messages['deletecontactconfirm'] = 'Ste si istý, že chcete zmazať zvolený( $messages['deletemessagesconfirm'] = 'Ste si istý, že chcete zmazať zvolenú(é) správu(y)?'; $messages['deletefolderconfirm'] = 'Ste si istý, že chcete zmazať tento priečinok?'; $messages['purgefolderconfirm'] = 'Ste si istý, že chcete zmazať všetky správy v tomto priečinku?'; -$messages['foldercreating'] = 'Vytvára sa priečinok ...'; $messages['folderdeleting'] = 'Odstraňuje sa priečinok ...'; -$messages['folderrenaming'] = 'Mení sa názov priečinka ...'; $messages['foldermoving'] = 'Prečinok sa presúva ...'; $messages['formincomplete'] = 'Formulár nie je kompletne vyplnený'; $messages['noemailwarning'] = 'Prosím, vložte platnú emailovú adresu'; @@ -94,7 +92,6 @@ $messages['copyingmessage'] = 'Správa sa kopíruje...'; $messages['receiptsent'] = 'Potvrdenie o prijatí správy bolo odoslané'; $messages['errorsendingreceipt'] = 'Potvrdenie o prijatí správy sa nedalo odoslať'; $messages['nodeletelastidentity'] = 'Identita sa nedá odstrániť, je posledná a musí zostať.'; -$messages['addsubfolderhint'] = 'Tento priečinok bude vytvorený ako podpriečinok aktuálne zvoleného priečinka'; $messages['forbiddencharacter'] = 'Názov priečinka obsahuje nepovolený znak'; $messages['selectimportfile'] = 'Zvoľte súbor, ktorý chcete načítať'; $messages['addresswriterror'] = 'Zvolený adresár kontaktov je iba na čítanie'; diff --git a/program/localization/sl_SI/labels.inc b/program/localization/sl_SI/labels.inc index 8b90a004c..191a55251 100644 --- a/program/localization/sl_SI/labels.inc +++ b/program/localization/sl_SI/labels.inc @@ -39,16 +39,15 @@ $labels['to'] = 'Prejemnik'; $labels['cc'] = 'Kp'; $labels['bcc'] = 'Skp'; $labels['replyto'] = 'Odgovor na'; -$labels['mailreplyto'] = 'Odgovor na'; -$labels['mailfollowupto'] = 'Odgovor na'; +$labels['followupto'] = 'Odgovor na'; $labels['date'] = 'Datum'; $labels['size'] = 'Velikost'; $labels['priority'] = 'Prioriteta'; $labels['organization'] = 'Organizacija'; $labels['readstatus'] = 'Status'; $labels['reply-to'] = 'Odgovor na'; -$labels['mailreply-to'] = 'Odgovor na'; -$labels['mailfollowup-to'] = 'Odgovor na'; +$labels['mail-reply-to'] = 'Odgovor na'; +$labels['mail-followup-to'] = 'Odgovor na'; $labels['mailboxlist'] = 'Mape'; $labels['messagesfromto'] = 'Sporočila $from do $to od $count'; $labels['threadsfromto'] = 'Nit $from do $to od $count'; @@ -202,8 +201,7 @@ $labels['maxuploadsize'] = 'Največja dovoljena velikost datoteke je $size'; $labels['addcc'] = 'Dodaj Kp'; $labels['addbcc'] = 'Dodaj Skp'; $labels['addreplyto'] = 'Dodaj naslov za odgovor'; -$labels['addmailreplyto'] = 'Dodaj naslov za odgovor'; -$labels['addmailfollowupto'] = 'Dodaj naslov za odgovor'; +$labels['addfollowupto'] = 'Dodaj naslov za odgovor'; $labels['mdnrequest'] = 'Pošiljatelj tega sporočila je zaprosil za potrdilo o branju. Želite o tem obvestiti pošiljatelja?'; $labels['receiptread'] = 'Potrdilo o branju'; $labels['yourmessage'] = 'To je potrdilo o branju.'; @@ -329,9 +327,6 @@ $labels['subscribed'] = 'Vpisan'; $labels['messagecount'] = 'Sporočila'; $labels['create'] = 'Ustvari'; $labels['createfolder'] = 'Ustvari novo mapo'; -$labels['rename'] = 'Preimenuj'; -$labels['renamefolder'] = 'Preimenuj mapo'; -$labels['deletefolder'] = 'Izbriši mapo'; $labels['managefolders'] = 'Uredi mape'; $labels['specialfolders'] = 'Posebne mape'; $labels['sortby'] = 'Uredi po'; diff --git a/program/localization/sl_SI/messages.inc b/program/localization/sl_SI/messages.inc index 7570919b8..689685873 100644 --- a/program/localization/sl_SI/messages.inc +++ b/program/localization/sl_SI/messages.inc @@ -52,9 +52,7 @@ $messages['deletecontactconfirm'] = 'Ste prepričani, da želite izbrisati ozna $messages['deletemessagesconfirm'] = 'Ste prepričani, da želite izbrisati označeno(a) sporočilo(a)?'; $messages['deletefolderconfirm'] = 'Ste prepričani, da želite to mapo izbrisati?'; $messages['purgefolderconfirm'] = 'Ste prepričani, da želite izbrisati vsa sporočila v mapi?'; -$messages['foldercreating'] = 'Ustvarjanje mape...'; $messages['folderdeleting'] = 'Brisanje mape...'; -$messages['folderrenaming'] = 'Preimenovanje mape...'; $messages['foldermoving'] = 'Premikanje mape...'; $messages['formincomplete'] = 'Obrazec ni v celoti izpolnjen'; $messages['noemailwarning'] = 'Vnesite veljaven elektronski naslov'; @@ -89,7 +87,6 @@ $messages['copyingmessage'] = 'Kopiranje sporočila...'; $messages['receiptsent'] = 'Sporočilo o branju je bilo uspešno poslano'; $messages['errorsendingreceipt'] = 'Sporočila o branju ni bilo mogoče poslati'; $messages['nodeletelastidentity'] = 'Te identitete ni mogoče izbrisati, saj je edina.'; -$messages['addsubfolderhint'] = 'Ta mapa bo ustvarjena kot podmapa od izbrane mape.'; $messages['forbiddencharacter'] = 'Ime mape vsebuje nedovoljen znak'; $messages['selectimportfile'] = 'Izberite datoteko, ki jo želite prenesti'; $messages['addresswriterror'] = 'Izbran imenik ni zapisljiv'; diff --git a/program/localization/sq_AL/labels.inc b/program/localization/sq_AL/labels.inc index 2e0f437b2..51ffb7aa8 100644 --- a/program/localization/sq_AL/labels.inc +++ b/program/localization/sq_AL/labels.inc @@ -180,9 +180,6 @@ $labels['subscribed'] = 'Regjistruar'; $labels['messagecount'] = 'Mesazhe'; $labels['create'] = 'Krijo'; $labels['createfolder'] = 'Krijo kuti të re'; -$labels['rename'] = 'Riemëro'; -$labels['renamefolder'] = 'Riemëro kutinë'; -$labels['deletefolder'] = 'Fshi kutinë'; $labels['managefolders'] = 'Sistemo kutitë'; $labels['sortby'] = 'Rradhit sipas'; $labels['sortasc'] = 'Rradhitje rritëse'; diff --git a/program/localization/sq_AL/messages.inc b/program/localization/sq_AL/messages.inc index d5bcad621..4af0b1b37 100644 --- a/program/localization/sq_AL/messages.inc +++ b/program/localization/sq_AL/messages.inc @@ -77,6 +77,5 @@ $messages['movingmessage'] = 'Po lëviz mesazhin...'; $messages['receiptsent'] = 'U dërgua me sukses një njoftim leximi'; $messages['errorsendingreceipt'] = 'Nuk mund të dërgohet njoftimi'; $messages['nodeletelastidentity'] = 'Ju nuk mund ta fshini këtë identitet sepse nuk ju ka mbetur tjetër.'; -$messages['addsubfolderhint'] = 'Kjo kuti do të krijohet si një nënkuti e asaj që është e zgjedhur'; ?> diff --git a/program/localization/sr_CS/labels.inc b/program/localization/sr_CS/labels.inc index 780e6d675..64f5f373e 100644 --- a/program/localization/sr_CS/labels.inc +++ b/program/localization/sr_CS/labels.inc @@ -180,9 +180,6 @@ $labels['subscribed'] = 'Потписана'; $labels['messagecount'] = 'Поруке'; $labels['create'] = 'Креирај'; $labels['createfolder'] = 'Креирај нову фасциклу'; -$labels['rename'] = 'Преименуј'; -$labels['renamefolder'] = 'Преименуј фасциклу'; -$labels['deletefolder'] = 'Обриши фасциклу'; $labels['managefolders'] = 'Подеси фасциклу'; $labels['sortby'] = 'Сортирај по'; $labels['sortasc'] = 'Сортирај растуће'; diff --git a/program/localization/sr_CS/messages.inc b/program/localization/sr_CS/messages.inc index 4756b5cec..76f178c45 100644 --- a/program/localization/sr_CS/messages.inc +++ b/program/localization/sr_CS/messages.inc @@ -77,6 +77,5 @@ $messages['movingmessage'] = 'Премештам поруку...'; $messages['receiptsent'] = 'Успешно послато обавештење о приспећу'; $messages['errorsendingreceipt'] = 'Неуспело слање обавештења о приспећу'; $messages['nodeletelastidentity'] = 'Не можете обрисати овај идентитет, он Вам је последњи.'; -$messages['addsubfolderhint'] = 'Ова фасцикла ће бити креирана као подфасцикла тренутне'; ?> diff --git a/program/localization/sv_SE/labels.inc b/program/localization/sv_SE/labels.inc index 3519e2b91..55dfddad0 100644 --- a/program/localization/sv_SE/labels.inc +++ b/program/localization/sv_SE/labels.inc @@ -40,12 +40,12 @@ $labels['to'] = 'Mottagare'; $labels['cc'] = 'Kopia'; $labels['bcc'] = 'Hemlig kopia'; $labels['replyto'] = 'Svara till'; -$labels['mailreplyto'] = 'Mail-Reply-To'; -$labels['mailfollowupto'] = 'Mail-Followup-To'; +$labels['followupto'] = 'Followup-To'; $labels['date'] = 'Datum'; $labels['size'] = 'Storlek'; $labels['priority'] = 'Prioritet'; $labels['organization'] = 'Organisation'; +$labels['readstatus'] = 'Lässtatus'; $labels['reply-to'] = 'Svara till'; $labels['mail-reply-to'] = 'Mail-Reply-To'; $labels['mail-followup-to'] = 'Mail-Followup-To'; @@ -202,8 +202,7 @@ $labels['maxuploadsize'] = 'Tillåten filstorlek är $size'; $labels['addcc'] = 'Kopia'; $labels['addbcc'] = 'Hemlig kopia'; $labels['addreplyto'] = 'Svara till'; -$labels['addmailreplyto'] = 'Lägg till Mail-Reply-To'; -$labels['addmailfollowupto'] = 'Lägg till Mail-Followup-To'; +$labels['addfollowupto'] = 'Lägg till Mail-Followup-To'; $labels['mdnrequest'] = 'Avsändaren har begärt mottagarkvitto för det här meddelandet. Vill du skicka ett mottagarkvitto?'; $labels['receiptread'] = 'Mottagarkvitto (läst)'; $labels['yourmessage'] = 'Det här är ett mottagarkvitto för ditt meddelande'; @@ -215,6 +214,7 @@ $labels['email'] = 'E-post'; $labels['addcontact'] = 'Lägg till ny kontakt'; $labels['editcontact'] = 'Redigera kontakt'; $labels['contacts'] = 'Kontakter'; +$labels['contactproperties'] = 'Kontaktegenskaper'; $labels['edit'] = 'Redigera'; $labels['cancel'] = 'Avbryt'; $labels['save'] = 'Spara'; @@ -322,6 +322,7 @@ $labels['previewpanemarkread'] = 'Märk meddelande som läst vid visning'; $labels['afternseconds'] = 'Efter $n sekunder'; $labels['reqmdn'] = 'Begär alltid mottagningskvitto'; $labels['reqdsn'] = 'Begär alltid leveransstatusmeddelande'; +$labels['replysamefolder'] = 'Placera svar i samma katalog som besvarat meddelande'; $labels['folder'] = 'Katalog'; $labels['folders'] = 'Kataloger'; $labels['foldername'] = 'Katalognamn'; @@ -329,9 +330,6 @@ $labels['subscribed'] = 'Ansluten'; $labels['messagecount'] = 'Meddelanden'; $labels['create'] = 'Skapa'; $labels['createfolder'] = 'Ny katalog'; -$labels['rename'] = 'Ändra namn'; -$labels['renamefolder'] = 'Ändra katalognamn'; -$labels['deletefolder'] = 'Radera katalog'; $labels['managefolders'] = 'Hantera kataloger'; $labels['specialfolders'] = 'Speciella kataloger'; $labels['sortby'] = 'Sortera på'; diff --git a/program/localization/sv_SE/messages.inc b/program/localization/sv_SE/messages.inc index 1933d73ce..6e2a419fa 100644 --- a/program/localization/sv_SE/messages.inc +++ b/program/localization/sv_SE/messages.inc @@ -57,9 +57,7 @@ $messages['deletecontactconfirm'] = 'Vill du verkligen radera valda kontakter?'; $messages['deletemessagesconfirm'] = 'Vill du verkligen ta bort valda meddelanden?'; $messages['deletefolderconfirm'] = 'Vill du verkligen radera den här katalogen?'; $messages['purgefolderconfirm'] = 'Vill du verkligen radera alla meddelanden i den här katalogen?'; -$messages['foldercreating'] = 'Skapar katalog...'; $messages['folderdeleting'] = 'Raderar katalog...'; -$messages['folderrenaming'] = 'Namnändrar katalog...'; $messages['foldermoving'] = 'Flyttar katalog...'; $messages['formincomplete'] = 'Formuläret var inte ifyllt i sin helhet'; $messages['noemailwarning'] = 'Vänligen ange en giltig adress'; @@ -91,10 +89,11 @@ $messages['sourceisreadonly'] = 'Denna adresskälla är skrivskyddad'; $messages['errorsavingcontact'] = 'Kunde inte spara kontaktadressen'; $messages['movingmessage'] = 'Flyttar meddelande...'; $messages['copyingmessage'] = 'Kopierar meddelande...'; +$messages['deletingmessage'] = 'Raderar meddelande...'; +$messages['markingmessage'] = 'Markerar meddelande...'; $messages['receiptsent'] = 'Mottagarkvitto har skickats'; $messages['errorsendingreceipt'] = 'Kunde inte skicka mottagarkvitto'; $messages['nodeletelastidentity'] = 'Du kan inte radera den här identiteten, det är din sista.'; -$messages['addsubfolderhint'] = 'Den här katalogen kommer att skapas som en underkatalog till den valda'; $messages['forbiddencharacter'] = 'Katalognamnet innehåller otillåtna tecken'; $messages['selectimportfile'] = 'Välj en fil att ladda upp'; $messages['addresswriterror'] = 'Angiven adressbok är skrivskyddad'; @@ -118,5 +117,15 @@ $messages['emailformaterror'] = 'Felaktig adress: $email'; $messages['toomanyrecipients'] = 'Förmånga mottagare. Minska antalet till högst $max.'; $messages['maxgroupmembersreached'] = 'Antalet gruppmedlemmar får inte överstiga $max'; $messages['internalerror'] = 'Ett internt fel uppstod. Vänligen försök igen.'; +$messages['contactdelerror'] = 'Kunde inte radera kontakt'; +$messages['contactdeleted'] = 'Kontakt raderad'; +$messages['groupdeleted'] = 'Grupp raderad'; +$messages['grouprenamed'] = 'Gruppnamn ändrat'; +$messages['groupcreated'] = 'Grupp skapad'; +$messages['messagedeleted'] = 'Meddelande raderat'; +$messages['messagemoved'] = 'Meddelande flyttat'; +$messages['messagecopied'] = 'Meddelande kopierat'; +$messages['messagemarked'] = 'Meddelande markerat'; +$messages['autocompletechars'] = 'Ange minst $min tecken för automatisk komplettering'; ?> diff --git a/program/localization/ta_IN/labels.inc b/program/localization/ta_IN/labels.inc index 9492ad999..2045c7b06 100644 --- a/program/localization/ta_IN/labels.inc +++ b/program/localization/ta_IN/labels.inc @@ -272,9 +272,6 @@ $labels['subscribed'] = 'சந்தா'; $labels['messagecount'] = 'செய்திகள்'; $labels['create'] = 'உருவாக்கு'; $labels['createfolder'] = 'புது அடைவு உருவாக்கு'; -$labels['rename'] = 'மறுபெயரிடு'; -$labels['renamefolder'] = 'அடைவை மறுபெயரிடு'; -$labels['deletefolder'] = 'அடைவை நீக்கு'; $labels['managefolders'] = 'அடைவுகளை நிற்வகி'; $labels['specialfolders'] = 'சிறப்பு அடைவுகள்'; $labels['sortby'] = 'வாரியாக அடுக்கு'; diff --git a/program/localization/ta_IN/messages.inc b/program/localization/ta_IN/messages.inc index 40684a55b..7f722f6fb 100644 --- a/program/localization/ta_IN/messages.inc +++ b/program/localization/ta_IN/messages.inc @@ -50,9 +50,7 @@ $messages['deletecontactconfirm'] = 'நீங்கள் தேர்ந்த $messages['deletemessagesconfirm'] = 'நீங்கள் தேர்ந்தெடுத்த செய்திகளை நீக்க விரும்புகிறீர்களா ?'; $messages['deletefolderconfirm'] = 'நீங்கள் இந்த அடைவை நீக்க விரும்புகிறீர்களா ?'; $messages['purgefolderconfirm'] = 'நீங்கள் இந்த அடைவிலிருக்கும் எல்லா செய்திகளையும் நீக்க விரும்புகிறீர்களா ?'; -$messages['foldercreating'] = 'அடைவை உருவாக்குகிறது...'; $messages['folderdeleting'] = 'அடைவை நீக்குகிறது...'; -$messages['folderrenaming'] = 'அடைவை மறுபெயரிடுகிறது...'; $messages['foldermoving'] = 'அடைவை நகர்த்துகிறது...'; $messages['formincomplete'] = 'விண்ணப்பத்தை முழுமையாக நிறைவு செய்யவில்லை'; $messages['noemailwarning'] = 'தயவு செய்து உண்மையான மின்னஞ்சலை எழுதுங்கள்'; @@ -86,7 +84,6 @@ $messages['movingmessage'] = 'செய்தியை நகர்த்து $messages['receiptsent'] = 'படித்த சீட்டு வெற்றிகரமாக அனுப்பப்பட்டது'; $messages['errorsendingreceipt'] = 'சீட்டை அனுப்ப முடியவில்லை'; $messages['nodeletelastidentity'] = 'நீங்கள் இந்த அடையாளத்தை நீக்க முடியாது இது தான் கடைசி'; -$messages['addsubfolderhint'] = 'இந்த அடைவு இப்போது தேர்ந்தெடுக்கப்பட்டதன் துணை அடைவாக உருவாக்கப்படும்'; $messages['forbiddencharacter'] = 'அடைவு பெயரில் தடை செய்யப்பட்ட எழுத்துக்கள் உள்ளது'; $messages['selectimportfile'] = 'தயவு செய்து ஏற்றுவதற்கு ஒரு கோப்பை தேர்ந்தெடுங்கள்'; $messages['addresswriterror'] = 'நீங்கள் தேர்ந்தெடுத்த தொடர்புகளில் எழுத முடியாது'; diff --git a/program/localization/th_TH/labels.inc b/program/localization/th_TH/labels.inc index 4daa87bbb..3a6ea4948 100644 --- a/program/localization/th_TH/labels.inc +++ b/program/localization/th_TH/labels.inc @@ -162,9 +162,6 @@ $labels['foldername'] = 'ชื่อกล่องจดหมาย'; $labels['subscribed'] = 'ลงชื่อ'; $labels['create'] = 'สร้าง'; $labels['createfolder'] = 'สร้างกล่องจดหมาย'; -$labels['rename'] = 'เปลื่ยนชื่อ'; -$labels['renamefolder'] = 'เปลี่ยนชื่อกล่องจดหมาย'; -$labels['deletefolder'] = 'ลบกล่องจดหมาย'; $labels['managefolders'] = 'จัดการกล่องจดหมาย'; $labels['sortby'] = 'เรียงตาม'; $labels['sortasc'] = 'เรียงจากหน้าไปหลัง'; diff --git a/program/localization/tr_TR/labels.inc b/program/localization/tr_TR/labels.inc index fc1e0bdd2..31707336d 100644 --- a/program/localization/tr_TR/labels.inc +++ b/program/localization/tr_TR/labels.inc @@ -313,9 +313,6 @@ $labels['subscribed'] = 'Abonelik'; $labels['messagecount'] = 'Postalar'; $labels['create'] = 'Oluştur'; $labels['createfolder'] = 'Yeni klasör oluştur'; -$labels['rename'] = 'Yeniden adlandır'; -$labels['renamefolder'] = 'Klasörü yeniden adlandır'; -$labels['deletefolder'] = 'Klasörü sil'; $labels['managefolders'] = 'Klasörleri düzenle'; $labels['specialfolders'] = 'Özel klasörler'; $labels['sortby'] = 'Sırala'; diff --git a/program/localization/tr_TR/messages.inc b/program/localization/tr_TR/messages.inc index 2d057d35b..bab14905e 100644 --- a/program/localization/tr_TR/messages.inc +++ b/program/localization/tr_TR/messages.inc @@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Seçili kişileri silmek istediğinizden em $messages['deletemessagesconfirm'] = 'Seçili postaları silmek istediğinizden emin misiniz?'; $messages['deletefolderconfirm'] = 'Bu klasörü silmek istediğinizden emin misiniz?'; $messages['purgefolderconfirm'] = 'Bu klasördeki tüm postaları silmek istediğinizden emin misiniz?'; -$messages['foldercreating'] = 'Klasör oluştuluyor...'; $messages['folderdeleting'] = 'Klasör siliniyor...'; -$messages['folderrenaming'] = 'Klasör yeniden adlandırılıyor...'; $messages['foldermoving'] = 'Klasör taşınıyor...'; $messages['formincomplete'] = 'Form tam olarak doldurulmadı'; $messages['noemailwarning'] = 'Lütfen geçerli bir e-posta adresi girin'; @@ -92,7 +90,6 @@ $messages['copyingmessage'] = 'Posta kopyalanıyor...'; $messages['receiptsent'] = 'Okundu onayı gönderildi'; $messages['errorsendingreceipt'] = 'Okundu onayı gönderilemedi'; $messages['nodeletelastidentity'] = 'Son kimliğiniz olduğu için bu kimliği silemezsiniz'; -$messages['addsubfolderhint'] = 'Bu klasör, şu an seçili olanın alt klasörü olarak oluşturulacak'; $messages['forbiddencharacter'] = 'Klasör ismi yasaklanmış bir karakter içeriyor'; $messages['selectimportfile'] = 'Lütfen yüklenecek dosyayı seçin'; $messages['addresswriterror'] = 'Seçili adres defterine yazılamaz'; diff --git a/program/localization/uk_UA/labels.inc b/program/localization/uk_UA/labels.inc index be69f41af..877682dd1 100644 --- a/program/localization/uk_UA/labels.inc +++ b/program/localization/uk_UA/labels.inc @@ -38,15 +38,15 @@ $labels['to'] = 'Кому'; $labels['cc'] = 'Копія'; $labels['bcc'] = 'Прихована'; $labels['replyto'] = 'Зворотня адреса'; -$labels['mailreplyto'] = 'Mail-Reply-To'; -$labels['mailfollowupto'] = 'Mail-Followup-To'; +$labels['followupto'] = 'Followup-To'; $labels['date'] = 'Дата'; $labels['size'] = 'Розмір'; $labels['priority'] = 'Пріоритет'; $labels['organization'] = 'Організація'; +$labels['readstatus'] = 'Статус прочитання'; $labels['reply-to'] = 'Відповісти'; -$labels['mailreply-to'] = 'Mail-Reply-To'; -$labels['mailfollowup-to'] = 'Mail-Followup-To'; +$labels['mail-reply-to'] = 'Mail-Reply-To'; +$labels['mail-followup-to'] = 'Mail-Followup-To'; $labels['mailboxlist'] = 'Папки'; $labels['messagesfromto'] = 'Повідомлення з $from по $to із $count'; $labels['threadsfromto'] = 'Обговорення з $from по $to із $count'; @@ -200,8 +200,7 @@ $labels['maxuploadsize'] = 'Максимальний розмір файлу $si $labels['addcc'] = 'Додати копію'; $labels['addbcc'] = 'Додати приховану копію'; $labels['addreplyto'] = 'Додати зворотню адресу'; -$labels['addmailreplyto'] = 'Додати Mail-Reply-To'; -$labels['addmailfollowupto'] = 'Додати Mail-Followup-To'; +$labels['addfollowupto'] = 'Додати Followup-To'; $labels['mdnrequest'] = 'Відправник цього листа запитав про прочитання. Повідомити відправника?'; $labels['receiptread'] = 'Повідомлення про прочитання'; $labels['yourmessage'] = 'Повідомлення про прочитання Вашого листа'; @@ -213,6 +212,7 @@ $labels['email'] = 'Електронна адреса'; $labels['addcontact'] = 'Додати вибрані контакти до списку контактів'; $labels['editcontact'] = 'Редагувати контакт'; $labels['contacts'] = 'Контакти'; +$labels['contactproperties'] = 'Властивості контакта'; $labels['edit'] = 'Правка'; $labels['cancel'] = 'Скасувати'; $labels['save'] = 'Зберегти'; @@ -320,6 +320,7 @@ $labels['previewpanemarkread'] = 'Позначити переглянуті ли $labels['afternseconds'] = 'через $n секунд'; $labels['reqmdn'] = 'Завжди вимагати повідомлення про доставку'; $labels['reqdsn'] = 'Завжди вимагати повідомлення про статус доставки'; +$labels['replysamefolder'] = 'Розмістити відповіді у тій же папці, де знаходиться оригінал'; $labels['folder'] = 'Папка'; $labels['folders'] = 'Папки'; $labels['foldername'] = 'Назва папки'; @@ -327,9 +328,6 @@ $labels['subscribed'] = 'Підписані'; $labels['messagecount'] = 'Листи'; $labels['create'] = 'Створити'; $labels['createfolder'] = 'Створити нову папку'; -$labels['rename'] = 'Перейменувати'; -$labels['renamefolder'] = 'Перейменувати папку'; -$labels['deletefolder'] = 'Видалити папку'; $labels['managefolders'] = 'Керування папками'; $labels['specialfolders'] = 'Особливі папки'; $labels['sortby'] = 'Відсортувати за'; diff --git a/program/localization/uk_UA/messages.inc b/program/localization/uk_UA/messages.inc index 6ec33e506..c917c318b 100644 --- a/program/localization/uk_UA/messages.inc +++ b/program/localization/uk_UA/messages.inc @@ -23,6 +23,7 @@ $messages['cookiesdisabled'] = 'Ваш переглядач не приймає $messages['sessionerror'] = 'Ваша сесія застаріла'; $messages['imaperror'] = 'Невдале з`єднання з IMAP сервером'; $messages['servererror'] = 'Помилка сервера!'; +$messages['servererrormsg'] = 'Помилка сервера: $msg'; $messages['invalidrequest'] = 'Невірний запит! Дані не збережено.'; $messages['nomessagesfound'] = 'Листів не знайдено'; $messages['loggedout'] = 'Вашу сесію завершено. Всього найкращого!'; @@ -54,9 +55,7 @@ $messages['deletecontactconfirm'] = 'Ви дійсно бажаєте видал $messages['deletemessagesconfirm'] = 'Ви дійсно бажаєте видалити вибрані листи?'; $messages['deletefolderconfirm'] = 'Ви дійсно бажаєте видалити цю папку?'; $messages['purgefolderconfirm'] = 'Ви дійсно бажаєте видалити всі листи у цій папці?'; -$messages['foldercreating'] = 'Створення папки...'; $messages['folderdeleting'] = 'Видалення папки...'; -$messages['folderrenaming'] = 'Перейменування папки...'; $messages['foldermoving'] = 'Переміщення папки...'; $messages['formincomplete'] = 'Заповнено не всі поля'; $messages['noemailwarning'] = 'Будь ласка, введіть коректну адресу електронної пошти'; @@ -88,10 +87,11 @@ $messages['sourceisreadonly'] = 'Дане джерело адрес доступ $messages['errorsavingcontact'] = 'Неможливо зберегти адресу контакту'; $messages['movingmessage'] = 'Переміщення листа...'; $messages['copyingmessage'] = 'Копіювання листа...'; +$messages['deletingmessage'] = 'Видалення листа (ів)'; +$messages['markingmessage'] = 'Позначення листа (ів)'; $messages['receiptsent'] = 'Повідомлення про прочитання відправлено'; $messages['errorsendingreceipt'] = 'Не вдалося відправити повідомлення про прочитання'; $messages['nodeletelastidentity'] = 'Ви не можете видалити цей профіль, він у Вас останній.'; -$messages['addsubfolderhint'] = 'Цю папку буде створено як підпапку в поточній.'; $messages['forbiddencharacter'] = 'Ім\'я папки містить заборонені символи'; $messages['selectimportfile'] = 'Виберіть файл для завантаження'; $messages['addresswriterror'] = 'Обрана адресна книга недоступна для запису'; @@ -115,5 +115,15 @@ $messages['emailformaterror'] = 'Невірна електронна адрес $messages['toomanyrecipients'] = 'Занадто багато отримувачів. Зменшіть їх число до $max.'; $messages['maxgroupmembersreached'] = 'Число адрес у групі перевищило максимум у $max.'; $messages['internalerror'] = 'Виникла внутрішня помилка. Будь ласка, спробуйте ще раз'; +$messages['contactdelerror'] = 'Неможливо видалити контакт(и)'; +$messages['contactdeleted'] = 'Контакт(и) видалено успішно'; +$messages['groupdeleted'] = 'Група видалена успішно'; +$messages['grouprenamed'] = 'Група перейменована успішно'; +$messages['groupcreated'] = 'Група створена успішно'; +$messages['messagedeleted'] = 'Лист(и) видалено успішно'; +$messages['messagemoved'] = 'Лист(и) переміщено успішно'; +$messages['messagecopied'] = 'Лист(и) скопійовано успішно'; +$messages['messagemarked'] = 'Лист(и) помічено успішно'; +$messages['autocompletechars'] = 'Введіть щонайменьше $min символів для автозаповнення'; ?> diff --git a/program/localization/vi_VN/labels.inc b/program/localization/vi_VN/labels.inc index 611b5a40c..ece0a5ced 100644 --- a/program/localization/vi_VN/labels.inc +++ b/program/localization/vi_VN/labels.inc @@ -205,9 +205,6 @@ $labels['foldername'] = 'Tên thư mục'; $labels['subscribed'] = 'Cho sử dụng'; $labels['create'] = 'Tạo'; $labels['createfolder'] = 'Tạo thư mục mới'; -$labels['rename'] = 'Đổi tên'; -$labels['renamefolder'] = 'Đổi tên thư mục'; -$labels['deletefolder'] = 'Xóa thư mục'; $labels['managefolders'] = 'Quản trị thư mục'; $labels['sortby'] = 'Sắp xếp'; diff --git a/program/localization/zh_CN/labels.inc b/program/localization/zh_CN/labels.inc index acebdf718..6c3c79ad6 100644 --- a/program/localization/zh_CN/labels.inc +++ b/program/localization/zh_CN/labels.inc @@ -311,9 +311,6 @@ $labels['subscribed'] = '已订阅'; $labels['messagecount'] = '邮件数量'; $labels['create'] = '建立'; $labels['createfolder'] = '建立新邮件夹'; -$labels['rename'] = '重命名'; -$labels['renamefolder'] = '重命名邮件夹'; -$labels['deletefolder'] = '删除邮件夹'; $labels['managefolders'] = '管理邮件夹'; $labels['specialfolders'] = '指定邮件夹'; $labels['sortby'] = '排序'; diff --git a/program/localization/zh_CN/messages.inc b/program/localization/zh_CN/messages.inc index 5fc0d3f95..dbe5af585 100644 --- a/program/localization/zh_CN/messages.inc +++ b/program/localization/zh_CN/messages.inc @@ -55,9 +55,7 @@ $messages['deletecontactconfirm'] = '确定要删除已选中的联系人?'; $messages['deletemessagesconfirm'] = '确定要删除已选中的邮件?'; $messages['deletefolderconfirm'] = '确定要删除已选中的邮件夹?'; $messages['purgefolderconfirm'] = '是否确认要删除当前邮件夹中的所有邮件?'; -$messages['foldercreating'] = '正在创建邮件夹'; $messages['folderdeleting'] = '正在删除邮件夹'; -$messages['folderrenaming'] = '正在重命名邮件夹'; $messages['foldermoving'] = '正在移动目录...'; $messages['formincomplete'] = '当前表单未填写完整,请完整填写'; $messages['noemailwarning'] = '请输入一个有效的邮件地址'; @@ -92,7 +90,6 @@ $messages['copyingmessage'] = '复制邮件到...'; $messages['receiptsent'] = '成功发送了一个已读回执'; $messages['errorsendingreceipt'] = '无法发送回执'; $messages['nodeletelastidentity'] = '无法删除这个身份,这是最后一个。'; -$messages['addsubfolderhint'] = '新建的文件夹将成为所选文件夹的子文件夹'; $messages['forbiddencharacter'] = '目录名包含隐藏字符'; $messages['selectimportfile'] = '请选择要上传的文件'; $messages['addresswriterror'] = '已选择的地址簿不可写'; diff --git a/program/localization/zh_TW/labels.inc b/program/localization/zh_TW/labels.inc index c05622edf..886d3a380 100644 --- a/program/localization/zh_TW/labels.inc +++ b/program/localization/zh_TW/labels.inc @@ -40,8 +40,7 @@ $labels['to'] = '收件者'; $labels['cc'] = '副本'; $labels['bcc'] = '密件副本'; $labels['replyto'] = '回覆至'; -$labels['mailreplyto'] = '信件回覆至'; -$labels['mailfollowupto'] = '信件跟隨至'; +$labels['followupto'] = '信件跟隨至'; $labels['date'] = '日期'; $labels['size'] = '大小'; $labels['priority'] = '優先順序'; @@ -203,8 +202,7 @@ $labels['maxuploadsize'] = '上傳檔案大小限制為 $size'; $labels['addcc'] = '新增副本'; $labels['addbcc'] = '新增密件副本'; $labels['addreplyto'] = '新增回覆地址'; -$labels['addmailreplyto'] = '新增 信件回覆至'; -$labels['addmailfollowupto'] = '新增 信件跟隨至'; +$labels['addfollowupto'] = '新增 信件跟隨至'; $labels['mdnrequest'] = '此郵件的寄件者希望在你閱讀此郵件時受到通知。你想要通知寄件者嗎?'; $labels['receiptread'] = '郵件回條(已閱讀)'; $labels['yourmessage'] = '這是你郵件的郵件回條'; @@ -332,9 +330,6 @@ $labels['subscribed'] = '顯示'; $labels['messagecount'] = '郵件數目'; $labels['create'] = '建立'; $labels['createfolder'] = '建立新資料夾'; -$labels['rename'] = '重新命名'; -$labels['renamefolder'] = '重新命名資料夾'; -$labels['deletefolder'] = '刪除資料夾'; $labels['managefolders'] = '管理資料夾'; $labels['specialfolders'] = '預設資料夾設定'; $labels['sortby'] = '排序'; diff --git a/program/localization/zh_TW/messages.inc b/program/localization/zh_TW/messages.inc index fc3ebbf8e..68c543fc2 100644 --- a/program/localization/zh_TW/messages.inc +++ b/program/localization/zh_TW/messages.inc @@ -57,9 +57,7 @@ $messages['deletecontactconfirm'] = '你確定要刪除已選擇的聯絡人?' $messages['deletemessagesconfirm'] = '你確定要刪除已選擇的郵件?'; $messages['deletefolderconfirm'] = '你確定要刪除這個資料夾嗎?'; $messages['purgefolderconfirm'] = '你確定要刪除這個資料夾裡面所有的郵件嗎?'; -$messages['foldercreating'] = '建立資料夾中...'; $messages['folderdeleting'] = '刪除資料夾中...'; -$messages['folderrenaming'] = '重新命名資料夾中...'; $messages['foldermoving'] = '移動資料夾中...'; $messages['formincomplete'] = '這個表單有部分未填,請完整填寫'; $messages['noemailwarning'] = '請輸入一個有效的電子郵件位址'; @@ -96,7 +94,6 @@ $messages['markingmessage'] = '標示訊息...'; $messages['receiptsent'] = '閱讀回條傳送成功'; $messages['errorsendingreceipt'] = '無法傳送回條'; $messages['nodeletelastidentity'] = '你不能刪除此身份,因為只剩一個身份。'; -$messages['addsubfolderhint'] = '此資料夾會成為目前所選資料夾的子資料夾'; $messages['forbiddencharacter'] = '資料夾名稱中包含非法的字元'; $messages['selectimportfile'] = '請選擇一個上傳的檔案'; $messages['addresswriterror'] = '無法寫入選擇的通訊錄'; @@ -129,5 +126,6 @@ $messages['messagedeleted'] = '訊息成功刪除'; $messages['messagemoved'] = '訊息成功移動'; $messages['messagecopied'] = '訊息成功複製'; $messages['messagemarked'] = '訊息成功標示'; +$messages['autocompletechars'] = '輸入至少 $min 字元才能自動完成自動完成'; ?> diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc index 828a94f3b..45b95c937 100644 --- a/program/steps/mail/compose.inc +++ b/program/steps/mail/compose.inc @@ -267,19 +267,11 @@ function rcmail_compose_headers($attrib) $param = 'replyto'; $header = 'reply-to'; - case 'mailreplyto': - case 'mail-reply-to': + case 'followupto': + case 'followup-to': if (!$fname) { - $fname = '_mailreplyto'; - $param = 'mailreplyto'; - $header = 'mail-reply-to'; - } - - case 'mailfollowupto': - case 'mail-followup-to': - if (!$fname) { - $fname = '_mailfollowupto'; - $param = 'mailfollowupto'; + $fname = '_followupto'; + $param = 'followupto'; $header = 'mail-followup-to'; } @@ -354,10 +346,10 @@ function rcmail_compose_headers($attrib) $fvalue = $MESSAGE->get_header('cc'); else if ($header=='bcc' && !empty($MESSAGE->headers->bcc)) $fvalue = $MESSAGE->get_header('bcc'); + else if ($header=='reply-to' && !empty($MESSAGE->headers->others['mail-reply-to'])) + $fvalue = $MESSAGE->get_header('mail-reply-to'); else if ($header=='reply-to' && !empty($MESSAGE->headers->replyto)) $fvalue = $MESSAGE->get_header('reply-to'); - else if ($header=='mail-reply-to' && !empty($MESSAGE->headers->others['mail-reply-to'])) - $fvalue = $MESSAGE->get_header('followup-to'); else if ($header=='mail-followup-to' && !empty($MESSAGE->headers->others['mail-followup-to'])) $fvalue = $MESSAGE->get_header('mail-followup-to'); @@ -742,7 +734,7 @@ function rcmail_create_reply_body($body, $bodyIsHtml) // build reply prefix $from = array_pop($RCMAIL->imap->decode_address_list($MESSAGE->get_header('from'))); $prefix = sprintf("On %s, %s wrote:", - $MESSAGE->headers->date, $from['name'] ? $from['name'] : idn_to_utf8($from['email'])); + $MESSAGE->headers->date, $from['name'] ? $from['name'] : idn_to_utf8($from['mailto'])); if (!$bodyIsHtml) { $body = preg_replace('/\r?\n/', "\n", $body); diff --git a/program/steps/mail/copy.inc b/program/steps/mail/copy.inc index 4cd51d816..8a7c5916b 100644 --- a/program/steps/mail/copy.inc +++ b/program/steps/mail/copy.inc @@ -33,7 +33,7 @@ if (!empty($_POST['_uid']) && !empty($_POST['_target_mbox'])) { if (!$copied) { // send error message - $OUTPUT->show_message('errorcopying', 'error'); + rcmail_display_server_error('errorcopying'); $OUTPUT->send(); exit; } @@ -52,5 +52,3 @@ else { // send response $OUTPUT->send(); - - diff --git a/program/steps/mail/folders.inc b/program/steps/mail/folders.inc index 26f464b0c..3b96dc29c 100644 --- a/program/steps/mail/folders.inc +++ b/program/steps/mail/folders.inc @@ -20,55 +20,61 @@ // only process ajax requests if (!$OUTPUT->ajax_call) - return; + return; $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true); // send EXPUNGE command -if ($RCMAIL->action=='expunge') -{ - $success = $IMAP->expunge($mbox); +if ($RCMAIL->action == 'expunge') { - // reload message list if current mailbox - if ($success && !empty($_REQUEST['_reload'])) - { - $OUTPUT->command('set_quota', rcmail_quota_content()); - $OUTPUT->command('message_list.clear'); - $RCMAIL->action = 'list'; - return; - } - else - $commands = "// expunged: $success\n"; + $success = $IMAP->expunge($mbox); + + // reload message list if current mailbox + if ($success) { + $OUTPUT->show_message('folderexpunged', 'confirmation'); + + if (!empty($_REQUEST['_reload'])) { + $OUTPUT->command('set_quota', rcmail_quota_content()); + $OUTPUT->command('message_list.clear'); + $RCMAIL->action = 'list'; + return; + } + } + else { + rcmail_display_server_error(); + } } // clear mailbox -else if ($RCMAIL->action=='purge') +else if ($RCMAIL->action == 'purge') { - $delimiter = $IMAP->get_hierarchy_delimiter(); - $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/'; - $junk_regexp = '/^' . preg_quote($CONFIG['junk_mbox'] . $delimiter, '/') . '/'; + $delimiter = $IMAP->get_hierarchy_delimiter(); + $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/'; + $junk_regexp = '/^' . preg_quote($CONFIG['junk_mbox'] . $delimiter, '/') . '/'; - // we should only be purging trash and junk (or their subfolders) - if ($mbox == $CONFIG['trash_mbox'] || $mbox == $CONFIG['junk_mbox'] - || preg_match($trash_regexp, $mbox) || preg_match($junk_regexp, $mbox)) - { - $success = $IMAP->clear_mailbox($mbox); - - if ($success && !empty($_REQUEST['_reload'])) - { - $OUTPUT->set_env('messagecount', 0); - $OUTPUT->set_env('pagecount', 0); - $OUTPUT->command('message_list.clear'); - $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text()); - $OUTPUT->command('set_unread_count', $mbox, 0); - $OUTPUT->command('set_quota', rcmail_quota_content()); - $_SESSION['unseen_count'][$mbox] = 0; - } - else - $commands = "// purged: $success"; - } -} + // we should only be purging trash and junk (or their subfolders) + if ($mbox == $CONFIG['trash_mbox'] || $mbox == $CONFIG['junk_mbox'] + || preg_match($trash_regexp, $mbox) || preg_match($junk_regexp, $mbox) + ) { + $success = $IMAP->clear_mailbox($mbox); -$OUTPUT->send($commands); + if ($success) { + $OUTPUT->show_message('folderpurged', 'confirmation'); + if (!empty($_REQUEST['_reload'])) { + $OUTPUT->set_env('messagecount', 0); + $OUTPUT->set_env('pagecount', 0); + $OUTPUT->command('message_list.clear'); + $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text()); + $OUTPUT->command('set_unread_count', $mbox, 0); + $OUTPUT->command('set_quota', rcmail_quota_content()); + rcmail_set_unseen_count($mbox, 0); + } + } + else { + rcmail_display_server_error(); + } + } +} +$OUTPUT->send(); diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc index c7498d5b1..750cf6f61 100644 --- a/program/steps/mail/func.inc +++ b/program/steps/mail/func.inc @@ -436,65 +436,6 @@ function rcmail_messagecount_display($attrib) } -function rcmail_quota_display($attrib) - { - global $OUTPUT; - - if (!$attrib['id']) - $attrib['id'] = 'rcmquotadisplay'; - - if(isset($attrib['display'])) - $_SESSION['quota_display'] = $attrib['display']; - - $OUTPUT->add_gui_object('quotadisplay', $attrib['id']); - - $quota = rcmail_quota_content($attrib); - - $OUTPUT->add_script('$(document).ready(function(){ - rcmail.set_quota('.json_serialize($quota).')});', 'foot'); - - return html::span($attrib, ''); - } - - -function rcmail_quota_content($attrib=NULL) - { - global $COMM_PATH, $RCMAIL; - - $quota = $RCMAIL->imap->get_quota(); - $quota = $RCMAIL->plugins->exec_hook('quota', $quota); - - $quota_result = (array) $quota; - $quota_result['type'] = isset($_SESSION['quota_display']) ? $_SESSION['quota_display'] : ''; - - if (!$quota['total'] && $RCMAIL->config->get('quota_zero_as_unlimited')) { - $quota_result['title'] = rcube_label('unlimited'); - $quota_result['percent'] = 0; - } - else if ($quota['total']) { - if (!isset($quota['percent'])) - $quota_result['percent'] = min(100, round(($quota['used']/max(1,$quota['total']))*100)); - - $title = sprintf('%s / %s (%.0f%%)', - show_bytes($quota['used'] * 1024), show_bytes($quota['total'] * 1024), - $quota_result['percent']); - - $quota_result['title'] = $title; - - if ($attrib['width']) - $quota_result['width'] = $attrib['width']; - if ($attrib['height']) - $quota_result['height'] = $attrib['height']; - } - else { - $quota_result['title'] = rcube_label('unknown'); - $quota_result['percent'] = 0; - } - - return $quota_result; - } - - function rcmail_get_messagecount_text($count=NULL, $page=NULL) { global $RCMAIL, $IMAP; @@ -545,7 +486,7 @@ function rcmail_send_unread_count($mbox_name, $force=false, $count=null) { global $RCMAIL; - $old_unseen = $_SESSION['unseen_count'][$mbox_name]; + $old_unseen = rcmail_get_unseen_count($mbox_name); if ($count === null) $unseen = $RCMAIL->imap->messagecount($mbox_name, 'UNSEEN', $force); @@ -555,13 +496,33 @@ function rcmail_send_unread_count($mbox_name, $force=false, $count=null) if ($unseen != $old_unseen || ($mbox_name == 'INBOX')) $RCMAIL->output->command('set_unread_count', $mbox_name, $unseen, ($mbox_name == 'INBOX')); - // @TODO: this data is doubled (session and cache tables) if caching is enabled - $_SESSION['unseen_count'][$mbox_name] = $unseen; + rcmail_set_unseen_count($mbox_name, $unseen); return $unseen; } +function rcmail_set_unseen_count($mbox_name, $count) +{ + // @TODO: this data is doubled (session and cache tables) if caching is enabled + + // Make sure we have an array here (#1487066) + if (!is_array($_SESSION['unseen_count'])) + $_SESSION['unseen_count'] = array(); + + $_SESSION['unseen_count'][$mbox_name] = $count; +} + + +function rcmail_get_unseen_count($mbox_name) +{ + if (is_array($_SESSION['unseen_count']) && array_key_exists($mbox_name, $_SESSION['unseen_count'])) + return $_SESSION['unseen_count'][$mbox_name]; + else + return null; +} + + /** * Sets message is_safe flag according to 'show_images' option value * @@ -966,10 +927,14 @@ function rcmail_message_headers($attrib, $headers=NULL) else $header_value = trim($IMAP->decode_header($value)); - $output_headers[$hkey] = array('title' => rcube_label($hkey), 'value' => $header_value, 'raw' => $value); + $output_headers[$hkey] = array( + 'title' => rcube_label(preg_replace('/(^mail-|-)/', '', $hkey)), + 'value' => $header_value, 'raw' => $value + ); } - $plugin = $RCMAIL->plugins->exec_hook('message_headers_output', array('output' => $output_headers, 'headers' => $MESSAGE->headers)); + $plugin = $RCMAIL->plugins->exec_hook('message_headers_output', + array('output' => $output_headers, 'headers' => $MESSAGE->headers)); // compose html table $table = new html_table(array('cols' => 2)); diff --git a/program/steps/mail/getunread.inc b/program/steps/mail/getunread.inc index a035f5204..e60f36cae 100644 --- a/program/steps/mail/getunread.inc +++ b/program/steps/mail/getunread.inc @@ -28,15 +28,18 @@ if (!empty($a_folders)) $check_all = (bool)$RCMAIL->config->get('check_all_folders'); foreach ($a_folders as $mbox_row) { - if (!$check_all && isset($_SESSION['unseen_count'][$mbox_row]) && $mbox_row != $current) - $unseen = $_SESSION['unseen_count'][$mbox_row]; + $unseen_old = rcmail_get_unseen_count($mbox_row); + + if (!$check_all && $unseen_old !== null && $mbox_row != $current) + $unseen = $unseen_old; else - $unseen = $IMAP->messagecount($mbox_row, 'UNSEEN', !isset($_SESSION['unseen_count'][$mbox_row])); + $unseen = $IMAP->messagecount($mbox_row, 'UNSEEN', $unseen_old === null); - if ($unseen || !isset($_SESSION['unseen_count'][$mbox_row])) { + if ($unseen || $unseen_old === null) { $OUTPUT->command('set_unread_count', $mbox_row, $unseen, $inbox && $mbox_row == 'INBOX'); } - $_SESSION['unseen_count'][$mbox_row] = $unseen; + + rcmail_set_unseen_count($mbox_row, $unseen); } } diff --git a/program/steps/mail/list.inc b/program/steps/mail/list.inc index 6353be7cc..7e6d294c8 100644 --- a/program/steps/mail/list.inc +++ b/program/steps/mail/list.inc @@ -106,8 +106,7 @@ if (isset($a_headers) && count($a_headers)) else { // handle IMAP errors (e.g. #1486905) if ($err_code = $IMAP->get_error_code()) { - $err_str = $IMAP->get_error_str(); - $OUTPUT->show_message('servererrormsg', 'error', array('msg' => $err_str)); + rcmail_display_server_error(); } else if ($search_request) $OUTPUT->show_message('searchnomatch', 'notice'); diff --git a/program/steps/mail/mark.inc b/program/steps/mail/mark.inc index 5411e3f46..1ff4407c5 100644 --- a/program/steps/mail/mark.inc +++ b/program/steps/mail/mark.inc @@ -47,7 +47,7 @@ if (($uids = get_input_value('_uid', RCUBE_INPUT_POST)) && ($flag = get_input_va // send error message if ($_POST['_from'] != 'show') $OUTPUT->command('list_mailbox'); - $OUTPUT->show_message('errormarking', 'error'); + rcmail_display_server_error('errormarking'); $OUTPUT->send(); exit; } @@ -98,11 +98,11 @@ if (($uids = get_input_value('_uid', RCUBE_INPUT_POST)) && ($flag = get_input_va // update mailboxlist $mbox = $IMAP->get_mailbox_name(); $unseen_count = $msg_count ? $IMAP->messagecount($mbox, 'UNSEEN') : 0; - $old_unseen = $_SESSION['unseen_count'][$mbox]; + $old_unseen = rcmail_get_unseen_count($mbox); if ($old_unseen != $unseen_count) { $OUTPUT->command('set_unread_count', $mbox, $unseen_count, ($mbox == 'INBOX')); - $_SESSION['unseen_count'][$mbox] = $unseen_count; + rcmail_set_unseen_count($mbox, $unseen_count); } $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count)); diff --git a/program/steps/mail/move_del.inc b/program/steps/mail/move_del.inc index 3940b6db9..2db3ec31a 100644 --- a/program/steps/mail/move_del.inc +++ b/program/steps/mail/move_del.inc @@ -39,7 +39,7 @@ if ($RCMAIL->action=='moveto' && !empty($_POST['_uid']) && strlen($_POST['_targe // send error message if ($_POST['_from'] != 'show') $OUTPUT->command('list_mailbox'); - $OUTPUT->show_message('errormoving', 'error'); + rcmail_display_server_error('errormoving'); $OUTPUT->send(); exit; } @@ -60,7 +60,7 @@ else if ($RCMAIL->action=='delete' && !empty($_POST['_uid'])) { // send error message if ($_POST['_from'] != 'show') $OUTPUT->command('list_mailbox'); - $OUTPUT->show_message('errordeleting', 'error'); + rcmail_display_server_error('errordeleting'); $OUTPUT->send(); exit; } @@ -109,11 +109,11 @@ else // update mailboxlist $mbox = $IMAP->get_mailbox_name(); $unseen_count = $msg_count ? $IMAP->messagecount($mbox, 'UNSEEN') : 0; - $old_unseen = $_SESSION['unseen_count'][$mbox]; - + $old_unseen = rcmail_get_unseen_count($mbox); + if ($old_unseen != $unseen_count) { $OUTPUT->command('set_unread_count', $mbox, $unseen_count, ($mbox == 'INBOX')); - $_SESSION['unseen_count'][$mbox] = $unseen_count; + rcmail_set_unseen_count($mbox, $unseen_count); } if ($RCMAIL->action=='moveto' && strlen($target)) { diff --git a/program/steps/mail/search.inc b/program/steps/mail/search.inc index 90d1c374c..39fb32fc9 100644 --- a/program/steps/mail/search.inc +++ b/program/steps/mail/search.inc @@ -124,8 +124,7 @@ if (!empty($result_h)) { } // handle IMAP errors (e.g. #1486905) else if ($err_code = $IMAP->get_error_code()) { - $err_str = $IMAP->get_error_str(); - $OUTPUT->show_message('servererrormsg', 'error', array('msg' => $err_str)); + rcmail_display_server_error(); } else { $OUTPUT->show_message('searchnomatch', 'notice'); diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc index 796e7782b..09f12ed07 100644 --- a/program/steps/mail/sendmail.inc +++ b/program/steps/mail/sendmail.inc @@ -70,7 +70,7 @@ function rcmail_encrypt_header($what) function rcmail_get_identity($id) { global $USER, $OUTPUT; - + if ($sql_arr = $USER->get_identity($id)) { $out = $sql_arr; $out['mailto'] = $sql_arr['email']; @@ -100,7 +100,7 @@ function rcmail_fix_emoticon_paths(&$mime_message) // remove any null-byte characters before parsing $body = preg_replace('/\x00/', '', $body); - + $searchstr = 'program/js/tiny_mce/plugins/emotions/img/'; $offset = 0; @@ -193,6 +193,7 @@ function rcmail_email_input_format($mailto, $count=false, $check=true) return implode(', ', $result); } + /****** compose message ********/ if (strlen($_POST['_draft_saveid']) > 3) @@ -297,12 +298,12 @@ $headers['From'] = rcube_charset_convert($from_string, RCMAIL_CHARSET, $message_ $headers['To'] = $mailto; // additional recipients -if (!empty($mailcc)) +if (!empty($mailcc)) { $headers['Cc'] = $mailcc; - -if (!empty($mailbcc)) +} +if (!empty($mailbcc)) { $headers['Bcc'] = $mailbcc; - +} if (!empty($identity_arr['bcc'])) { $headers['Bcc'] = ($headers['Bcc'] ? $headers['Bcc'].', ' : '') . $identity_arr['bcc']; $RECIPIENT_COUNT ++; @@ -318,36 +319,43 @@ if (($max_recipients = (int) $RCMAIL->config->get('max_recipients')) > 0) { // add subject $headers['Subject'] = trim(get_input_value('_subject', RCUBE_INPUT_POST, TRUE, $message_charset)); -if (!empty($identity_arr['organization'])) +if (!empty($identity_arr['organization'])) { $headers['Organization'] = $identity_arr['organization']; - -if (!empty($_POST['_replyto'])) +} +if (!empty($_POST['_replyto'])) { $headers['Reply-To'] = rcmail_email_input_format(get_input_value('_replyto', RCUBE_INPUT_POST, TRUE, $message_charset)); -else if (!empty($identity_arr['reply-to'])) +} +else if (!empty($identity_arr['reply-to'])) { $headers['Reply-To'] = rcmail_email_input_format($identity_arr['reply-to'], false, true); - -if (!empty($_POST['_mailfollowupto'])) - $headers['Mail-Followup-To'] = rcmail_email_input_format(get_input_value('_mailfollowupto', RCUBE_INPUT_POST, TRUE, $message_charset)); -if (!empty($_POST['_mailreplyto'])) - $headers['Mail-Reply-To'] = rcmail_email_input_format(get_input_value('_mailreplyto', RCUBE_INPUT_POST, TRUE, $message_charset)); - -if (!empty($_SESSION['compose']['reply_msgid'])) +} +if (!empty($headers['Reply-To'])) { + $headers['Mail-Reply-To'] = $headers['Reply-To']; +} +if (!empty($_POST['_followupto'])) { + $headers['Mail-Followup-To'] = rcmail_email_input_format(get_input_value('_followupto', RCUBE_INPUT_POST, TRUE, $message_charset)); +} +if (!empty($_SESSION['compose']['reply_msgid'])) { $headers['In-Reply-To'] = $_SESSION['compose']['reply_msgid']; +} // remember reply/forward UIDs in special headers -if (!empty($_SESSION['compose']['reply_uid']) && $savedraft) +if (!empty($_SESSION['compose']['reply_uid']) && $savedraft) { $headers['X-Draft-Info'] = array('type' => 'reply', 'uid' => $_SESSION['compose']['reply_uid']); -else if (!empty($_SESSION['compose']['forward_uid']) && $savedraft) +} +else if (!empty($_SESSION['compose']['forward_uid']) && $savedraft) { $headers['X-Draft-Info'] = array('type' => 'forward', 'uid' => $_SESSION['compose']['forward_uid']); +} -if (!empty($_SESSION['compose']['references'])) +if (!empty($_SESSION['compose']['references'])) { $headers['References'] = $_SESSION['compose']['references']; +} if (!empty($_POST['_priority'])) { $priority = intval($_POST['_priority']); $a_priorities = array(1=>'highest', 2=>'high', 4=>'low', 5=>'lowest'); - if ($str_priority = $a_priorities[$priority]) + if ($str_priority = $a_priorities[$priority]) { $headers['X-Priority'] = sprintf("%d (%s)", $priority, ucfirst($str_priority)); + } } if (!empty($_POST['_receipt'])) { @@ -359,11 +367,12 @@ if (!empty($_POST['_receipt'])) { $headers['Message-ID'] = $message_id; $headers['X-Sender'] = $from; -if (is_array($headers['X-Draft-Info'])) +if (is_array($headers['X-Draft-Info'])) { $headers['X-Draft-Info'] = rcmail_draftinfo_encode($headers['X-Draft-Info'] + array('folder' => $_SESSION['compose']['mailbox'])); - -if (!empty($CONFIG['useragent'])) +} +if (!empty($CONFIG['useragent'])) { $headers['User-Agent'] = $CONFIG['useragent']; +} // exec hook for header checking and manipulation $data = $RCMAIL->plugins->exec_hook('message_outgoing_headers', array('headers' => $headers)); @@ -441,13 +450,16 @@ if ($isHtml) { $MAIL_MIME->setHTMLBody($plugin['body']); + // replace emoticons + $plugin['body'] = rcmail_replace_emoticons($plugin['body']); + // add a plain text version of the e-mail as an alternative part. $h2t = new html2text($plugin['body'], false, true, 0); $plainTextPart = rc_wordwrap($h2t->get_text(), $LINE_LENGTH, "\r\n"); $plainTextPart = wordwrap($plainTextPart, 998, "\r\n", true); if (!$plainTextPart) { - // empty message body breaks attachment handling in drafts - $plainTextPart = "\r\n"; + // empty message body breaks attachment handling in drafts + $plainTextPart = "\r\n"; } else { // make sure all line endings are CRLF (#1486712) @@ -513,9 +525,10 @@ if (is_array($_SESSION['compose']['attachments'])) ($attachment['data'] ? false : true), ($ctype == 'message/rfc822' ? '8bit' : 'base64'), ($ctype == 'message/rfc822' ? 'inline' : 'attachment'), - $message_charset, '', '', + '', '', '', $CONFIG['mime_param_folding'] ? 'quoted-printable' : NULL, - $CONFIG['mime_param_folding'] == 2 ? 'quoted-printable' : NULL + $CONFIG['mime_param_folding'] == 2 ? 'quoted-printable' : NULL, + '', RCMAIL_CHARSET ); } } diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc index e660207cd..45dd8e168 100644 --- a/program/steps/mail/show.inc +++ b/program/steps/mail/show.inc @@ -196,8 +196,11 @@ else if ($MESSAGE && $MESSAGE->headers && !$MESSAGE->headers->seen && ($RCMAIL->action == 'show' || ($RCMAIL->action == 'preview' && intval($CONFIG['preview_pane_mark_read']) == 0))) { - if ($IMAP->set_flag($MESSAGE->uid, 'SEEN') && $_SESSION['unseen_count'][$mbox_name]) - $_SESSION['unseen_count'][$mbox_name] -= 1; + if ($IMAP->set_flag($MESSAGE->uid, 'SEEN')) { + if ($count = rcmail_get_unseen_count($mbox_name)) { + rcmail_set_unseen_count($mbox_name, $count - 1); + } + } } exit; diff --git a/program/steps/settings/edit_folder.inc b/program/steps/settings/edit_folder.inc new file mode 100644 index 000000000..3a7c0d946 --- /dev/null +++ b/program/steps/settings/edit_folder.inc @@ -0,0 +1,294 @@ + | + +-----------------------------------------------------------------------+ + + $Id$ + +*/ + +// WARNING: folder names in UI are encoded with RCMAIL_CHARSET + +// init IMAP connection +$RCMAIL->imap_connect(); + +function rcube_folder_form($attrib) +{ + global $RCMAIL; + + // edited folder name (empty in create-folder mode) + $mbox = trim(get_input_value('_mbox', RCUBE_INPUT_GPC, true)); + $mbox_imap = rcube_charset_convert($mbox, RCMAIL_CHARSET, 'UTF7-IMAP'); + + // predefined path for new folder + $parent = trim(get_input_value('_path', RCUBE_INPUT_GPC, true)); + $parent_imap = rcube_charset_convert($parent, RCMAIL_CHARSET, 'UTF7-IMAP'); + + $delimiter = $RCMAIL->imap->get_hierarchy_delimiter(); + $special = (strlen($mbox_imap) && in_array($mbox_imap, (array) $RCMAIL->config->get('default_imap_folders'))); + $protected = ($special && $RCMAIL->config->get('protect_default_folders')); + $threading_supported = $RCMAIL->imap->get_capability('thread=references') + || $IMAP->get_capability('thread=orderedsubject') + || $IMAP->get_capability('thread=refs'); + + // Get mailbox stats (messages count, etc.), mailbox name and parent + if (strlen($mbox)) { + $msgcount = $RCMAIL->imap->messagecount($mbox_imap, 'ALL', true, false); + + $path = explode($delimiter, $mbox_imap); + $folder = array_pop($path); + $path = implode($delimiter, $path); + + $folder = rcube_charset_convert($folder, 'UTF7-IMAP'); + + $hidden_fields = array('name' => '_mbox', 'value' => $mbox); + } + else { + $path = $parent_imap; + } + + $form = array(); + + // General tab + $form['props'] = array( + 'name' => rcube_label('properties'), + ); + + // Location (name) + if ($protected) + $foldername = rcmail_localize_foldername($mbox_imap); + else { + if (isset($_POST['_name'])) + $folder = trim(get_input_value('_name', RCUBE_INPUT_POST, true)); + + $foldername = new html_inputfield(array('name' => '_name', 'id' => '_name', 'size' => 30)); + $foldername = $foldername->show($folder); + + if ($special) + $foldername .= ' (' . rcmail_localize_foldername($mbox_imap) .')'; + } + + $form['props']['fieldsets']['location'] = array( + 'name' => rcube_label('location'), + 'content' => array( + 'name' => array( + 'label' => rcube_label('foldername'), + 'value' => $foldername, + ), + ), + ); + + if (strlen($path)) { + $radio1 = new html_radiobutton(array('name' => '_parent', 'value' => '')); + $radio2 = new html_radiobutton(array('name' => '_parent', 'value' => $path)); + $selected = isset($_POST['_parent']) ? $_POST['_parent'] : $path; + + $html_path = str_replace($delimiter, ' » ', rcmail_localize_folderpath($path)); + + $folderpath = $radio1->show($selected) . Q(rcube_label('none')) . ' ' + .$radio2->show($selected) . Q($html_path); + + $form['props']['fieldsets']['location']['content']['path'] = array( + 'label' => rcube_label('parentfolder'), + 'value' => $folderpath, + ); + } + + // Settings + $form['props']['fieldsets']['settings'] = array( + 'name' => rcube_label('settings'), + ); + + // Settings: threading + if ($threading_supported) { + $select = new html_select(array('name' => '_viewmode', 'id' => '_listmode')); + $select->add(rcube_label('list'), 0); + $select->add(rcube_label('threads'), 1); + + if (isset($_POST['_viewmode'])) { + $value = (int) $_POST['_viewmode']; + } + else if (strlen($mbox_imap)) { + $a_threaded = $RCMAIL->config->get('message_threading', array()); + $value = (int) isset($a_threaded[$mbox_imap]); + } + + $form['props']['fieldsets']['settings']['content']['viewmode'] = array( + 'label' => rcube_label('listmode'), + 'value' => $select->show($value), + ); + } +/* + // Settings: sorting column + $select = new html_select(array('name' => '_sortcol', 'id' => '_sortcol')); + $select->add(rcube_label('nonesort'), ''); + $select->add(rcube_label('arrival'), 'arrival'); + $select->add(rcube_label('sentdate'), 'date'); + $select->add(rcube_label('subject'), 'subject'); + $select->add(rcube_label('fromto'), 'from'); + $select->add(rcube_label('replyto'), 'replyto'); + $select->add(rcube_label('cc'), 'cc'); + $select->add(rcube_label('size'), 'size'); + + $value = isset($_POST['_sortcol']) ? $_POST['_sortcol'] : ''; + + $form['props']['fieldsets']['settings']['content']['sortcol'] = array( + 'label' => rcube_label('listsorting'), + 'value' => $select->show($value), + ); + + // Settings: sorting order + $select = new html_select(array('name' => '_sortord', 'id' => '_sortord')); + $select->add(rcube_label('asc'), 'ASC'); + $select->add(rcube_label('desc'), 'DESC'); + + $value = isset($_POST['_sortord']) ? $_POST['_sortord'] : ''; + + $form['props']['fieldsets']['settings']['content']['sortord'] = array( + 'label' => rcube_label('listorder'), + 'value' => $select->show(), + ); +*/ + // Information (count, size) - Edit mode + if (strlen($mbox)) { + // Number of messages + $form['props']['fieldsets']['info'] = array( + 'name' => rcube_label('info'), + 'content' => array( + 'count' => array( + 'label' => rcube_label('messagecount'), + 'value' => (int) $msgcount, + ), + ), + ); + + // Size + if ($msgcount) { + // create link with folder-size command + $onclick = sprintf("return %s.command('folder-size', '%s', this)", + JS_OBJECT_NAME, JQ($mbox_imap)); + $size = html::a(array('href' => '#', 'onclick' => $onclick, 'id' => 'folder-size'), + rcube_label('getfoldersize')); + } + else { + // no messages -> zero size + $size = 0; + } + $form['props']['fieldsets']['info']['content']['size'] = array( + 'label' => rcube_label('size'), + 'value' => $size, + ); + } + + // Allow plugins to modify folder form content + $plugin = $RCMAIL->plugins->exec_hook('folder_form', array('form' => $form)); + + $form = $plugin['form']; + + // Set form tags and hidden fields + list($form_start, $form_end) = get_form_tags($attrib, 'save-folder', null, $hidden_fields); + + unset($attrib['form']); + + // return the complete edit form as table + $out = "$form_start\n"; + + // Create form output + foreach ($form as $tab) { + if (!empty($tab['fieldsets']) && is_array($tab['fieldsets'])) { + $content = ''; + foreach ($tab['fieldsets'] as $fieldset) { + $subcontent = rcmail_get_form_part($fieldset); + if ($subcontent) { + $content .= html::tag('fieldset', null, html::tag('legend', null, Q($fieldset['name'])) . $subcontent) ."\n"; + } + } + } + else { + $content = rcmail_get_form_part($tab); + } + + if ($content) { + $out .= html::tag('fieldset', null, html::tag('legend', null, Q($tab['name'])) . $content) ."\n"; + } + } + + $out .= "\n$form_end"; + + $RCMAIL->output->set_env('messagecount', (int) $msgcount); + + return $out; +} + +function rcmail_get_form_part($form) +{ + $content = ''; + + if (is_array($form['content']) && !empty($form['content'])) { + $table = new html_table(array('cols' => 2)); + foreach ($form['content'] as $col => $colprop) { + $colprop['id'] = '_'.$col; + $label = !empty($colprop['label']) ? $colprop['label'] : rcube_label($col); + + $table->add('title', sprintf('', $colprop['id'], Q($label))); + $table->add(null, $colprop['value']); + } + $content = $table->show(); + } + else { + $content = $tag['content']; + } + + return $content; +} + +function rcmail_localize_folderpath($path) +{ + global $RCMAIL; + + $protect_folders = $RCMAIL->config->get('protect_default_folders'); + $default_folders = (array) $RCMAIL->config->get('default_imap_folders'); + $delimiter = $RCMAIL->imap->get_hierarchy_delimiter(); + $path = explode($delimiter, $path); + $result = array(); + + foreach ($path as $idx => $dir) { + $directory = implode($delimiter, array_slice($path, 0, $idx+1)); + if ($protect_folders && in_array($directory, $default_folders)) { + unset($result); + $result[] = rcmail_localize_foldername($directory); + } + else if ($protect_folders && in_array($dir, $default_folders)) { + $result[] = rcmail_localize_foldername($dir); + } + else { + $result[] = rcube_charset_convert($dir, 'UTF7-IMAP'); + } + } + + return implode($delimiter, $result); +} + + +//$OUTPUT->set_pagetitle(rcube_label('folders')); + +// register UI objects +$OUTPUT->add_handlers(array( + 'folderdetails' => 'rcube_folder_form', +)); + +$OUTPUT->add_label('nonamewarning'); + +$OUTPUT->send('folderedit'); diff --git a/program/steps/settings/edit_identity.inc b/program/steps/settings/edit_identity.inc index ef2be6584..f458cbfee 100644 --- a/program/steps/settings/edit_identity.inc +++ b/program/steps/settings/edit_identity.inc @@ -126,7 +126,8 @@ function rcube_identity_form($attrib) foreach ($fieldset['content'] as $col => $colprop) { $colprop['id'] = 'rcmfd_'.$col; - $label = !empty($colprop['label']) ? $colprop['label'] : rcube_label($col); + $label = !empty($colprop['label']) ? $colprop['label'] : + rcube_label(str_replace('-', '', $col)); $value = !empty($colprop['value']) ? $colprop['value'] : rcmail_get_edit_field($col, $IDENTITY_RECORD[$col], $colprop, $colprop['type']); diff --git a/program/steps/settings/folders.inc b/program/steps/settings/folders.inc new file mode 100644 index 000000000..7ae4fb35d --- /dev/null +++ b/program/steps/settings/folders.inc @@ -0,0 +1,377 @@ + | + | Author: Aleksander Machniak | + +-----------------------------------------------------------------------+ + + $Id$ + +*/ + +// WARNING: folder names in UI are encoded with RCMAIL_CHARSET + +// init IMAP connection +$RCMAIL->imap_connect(); + +// subscribe mailbox +if ($RCMAIL->action == 'subscribe') +{ + $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP'); + if (strlen($mbox)) { + $result = $IMAP->subscribe(array($mbox)); + + // Handle virtual (non-existing) folders + if (!$result && $IMAP->get_error_code() == -1 && + $IMAP->get_response_code() == rcube_imap::TRYCREATE + ) { + $result = $IMAP->create_mailbox($mbox, true); + if ($result) { + // @TODO: remove 'virtual' class of folder's row + } + } + + if ($result) + $OUTPUT->show_message('foldersubscribed', 'confirmation'); + else + rcmail_display_server_error('errorsaving'); + } +} + +// unsubscribe mailbox +else if ($RCMAIL->action == 'unsubscribe') +{ + $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP'); + if (strlen($mbox)) { + $result = $IMAP->unsubscribe(array($mbox)); + if ($result) + $OUTPUT->show_message('folderunsubscribed', 'confirmation'); + else + rcmail_display_server_error('errorsaving'); + } +} + +// delete an existing mailbox +else if ($RCMAIL->action == 'delete-folder') +{ + $mbox_utf8 = get_input_value('_mbox', RCUBE_INPUT_POST, true); + $mbox = rcube_charset_convert($mbox_utf8, RCMAIL_CHARSET, 'UTF7-IMAP'); + + // get folder's children or all folders if the name contains special characters + $delimiter = $IMAP->get_hierarchy_delimiter(); + if ((strpos($mbox, '%') === false) && (strpos($mbox, '*') === false)) + $a_mboxes = $IMAP->list_unsubscribed('', $mbox.$delimiter.'*'); + else + $a_mboxes = $IMAP->list_unsubscribed(); + + if (strlen($mbox)) + $deleted = $IMAP->delete_mailbox($mbox); + + if ($OUTPUT->ajax_call && $deleted) { + // Remove folder and subfolders rows + $OUTPUT->command('remove_folder_row', $mbox_utf8); + foreach ($a_mboxes as $folder) { + if (preg_match('/^'. preg_quote($mbox.$delimiter, '/') .'/', $folder)) { + $OUTPUT->command('remove_folder_row', rcube_charset_convert($folder, 'UTF7-IMAP')); + } + } + $OUTPUT->show_message('folderdeleted', 'confirmation'); + // Clear content frame + $OUTPUT->command('subscription_select'); + $OUTPUT->command('set_quota', rcmail_quota_content()); + } + else if (!$deleted) { + rcmail_display_server_error('errorsaving'); + } +} + +// rename an existing mailbox +else if ($RCMAIL->action == 'rename-folder') +{ + $name_utf8 = trim(get_input_value('_folder_newname', RCUBE_INPUT_POST, true)); + $oldname_utf8 = trim(get_input_value('_folder_oldname', RCUBE_INPUT_POST, true)); + + if (strlen($name_utf8) && strlen($oldname_utf8)) { + $name = rcube_charset_convert($name_utf8, RCMAIL_CHARSET, 'UTF7-IMAP'); + $oldname = rcube_charset_convert($oldname_utf8, RCMAIL_CHARSET, 'UTF7-IMAP'); + + $rename = rcmail_rename_folder($oldname, $name); + } + + if ($rename && $OUTPUT->ajax_call) { + $folderlist = $IMAP->list_unsubscribed(); + $delimiter = $IMAP->get_hierarchy_delimiter(); + + $regexp = '/^' . preg_quote($name . $delimiter, '/') . '/'; + + // subfolders + for ($x=sizeof($folderlist)-1; $x>=0; $x--) { + if (preg_match($regexp, $folderlist[$x])) { + $oldfolder = $oldname . $delimiter . preg_replace($regexp, '', $folderlist[$x]); + $foldersplit = explode($delimiter, $folderlist[$x]); + $level = count($foldersplit) - 1; + $display_rename = str_repeat('    ', $level) + . rcube_charset_convert($foldersplit[$level], 'UTF7-IMAP'); + + $before = isset($folderlist[$x+1]) ? rcube_charset_convert($folderlist[$x+1], 'UTF7-IMAP') : false; + + $OUTPUT->command('replace_folder_row', rcube_charset_convert($oldfolder, 'UTF7-IMAP'), + rcube_charset_convert($folderlist[$x], 'UTF7-IMAP'), $display_rename, $before); + } + } + + $foldersplit = explode($delimiter, $name); + $level = count($foldersplit) - 1; + $display_rename = str_repeat('    ', $level) . rcube_charset_convert($foldersplit[$level], 'UTF7-IMAP'); + $index = array_search($name, $folderlist); + $before = $index !== false && isset($folderlist[$index+1]) ? rcube_charset_convert($folderlist[$index+1], 'UTF7-IMAP') : false; + + $OUTPUT->command('replace_folder_row', $oldname_utf8, + rcube_charset_convert($name, 'UTF7-IMAP'), $display_rename, $before); + } + else if (!$rename) { + rcmail_display_server_error('errorsaving'); + } +} + +// clear mailbox +else if ($RCMAIL->action == 'purge') +{ + $mbox_utf8 = get_input_value('_mbox', RCUBE_INPUT_POST, true); + $mbox = rcube_charset_convert($mbox_utf8, RCMAIL_CHARSET, 'UTF7-IMAP'); + $delimiter = $IMAP->get_hierarchy_delimiter(); + $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/'; + + // we should only be purging trash (or their subfolders) + if (!strlen($CONFIG['trash_mbox']) || $mbox == $CONFIG['trash_mbox'] + || preg_match($trash_regexp, $mbox) + ) { + $success = $IMAP->clear_mailbox($mbox); + $delete = true; + } + // copy to Trash + else { + $success = $IMAP->move_message('1:*', $CONFIG['trash_mbox'], $mbox); + $delete = false; + } + + if ($success) { + $OUTPUT->set_env('messagecount', 0); + if ($delete) { + $OUTPUT->show_message('folderpurged', 'confirmation'); + $OUTPUT->command('set_quota', rcmail_quota_content()); + } + else { + $OUTPUT->show_message('messagemoved', 'confirmation'); + } + $_SESSION['unseen_count'][$mbox] = 0; + $OUTPUT->command('show_folder', $mbox_utf8, null, true); + } + else { + rcmail_display_server_error('errorsaving'); + } +} + +// get mailbox size +else if ($RCMAIL->action == 'folder-size') +{ + $name = trim(get_input_value('_mbox', RCUBE_INPUT_POST, true)); + + $size = $IMAP->get_mailbox_size($name); + + // @TODO: check quota and show percentage usage of specified mailbox? + + if ($size !== false) { + $OUTPUT->command('folder_size_update', show_bytes($size)); + } + else { + rcmail_display_server_error(); + } +} + +if ($OUTPUT->ajax_call) + $OUTPUT->send(); + + +// build table with all folders listed by server +function rcube_subscription_form($attrib) +{ + global $RCMAIL, $IMAP, $CONFIG, $OUTPUT; + + list($form_start, $form_end) = get_form_tags($attrib, 'folders'); + unset($attrib['form']); + + if (!$attrib['id']) + $attrib['id'] = 'rcmSubscriptionlist'; + + $table = new html_table(); + + if ($attrib['noheader'] !== true && $attrib['noheader'] != "true") { + // add table header + $table->add_header('name', rcube_label('foldername')); + $table->add_header('subscribed', ''); + } + + // get folders from server + $IMAP->clear_cache('mailboxes'); + + $a_unsubscribed = $IMAP->list_unsubscribed(); + $a_subscribed = $IMAP->list_mailboxes(); + $delimiter = $IMAP->get_hierarchy_delimiter(); + $a_js_folders = array(); + $seen = array(); + $list_folders = array(); + + // pre-process folders list + foreach ($a_unsubscribed as $i => $folder) { + $foldersplit = explode($delimiter, $folder); + $name = rcube_charset_convert(array_pop($foldersplit), 'UTF7-IMAP'); + $parent_folder = join($delimiter, $foldersplit); + $level = count($foldersplit); + + // add any necessary "virtual" parent folders + if ($parent_folder && !$seen[$parent_folder]) { + for ($i=1; $i<=$level; $i++) { + $ancestor_folder = join($delimiter, array_slice($foldersplit, 0, $i)); + if ($ancestor_folder && !$seen[$ancestor_folder]++) { + $ancestor_name = rcube_charset_convert($foldersplit[$i-1], 'UTF7-IMAP'); + $list_folders[] = array( + 'id' => $ancestor_folder, + 'name' => $ancestor_name, + 'level' => $i-1, + 'virtual' => true, + ); + } + } + } + + $seen[$folder]++; + + $list_folders[] = array( + 'id' => $folder, + 'name' => $name, + 'level' => $level, + ); + } + + unset($seen); + + $checkbox_subscribe = new html_checkbox(array( + 'name' => '_subscribed[]', + 'title' => rcube_label('changesubscription'), + 'onclick' => JS_OBJECT_NAME.".command(this.checked?'subscribe':'unsubscribe',this.value)", + )); + + // create list of available folders + foreach ($list_folders as $i => $folder) { + $idx = $i + 1; + $subscribed = in_array($folder['id'], $a_subscribed); + $protected = ($CONFIG['protect_default_folders'] == true && in_array($folder['id'], $CONFIG['default_imap_folders'])); + $classes = array($i%2 ? 'even' : 'odd'); + + $folder_js = Q($folder['id']); + $folder_utf8 = rcube_charset_convert($folder['id'], 'UTF7-IMAP'); + $display_folder = str_repeat('    ', $folder['level']) + . Q($protected ? rcmail_localize_foldername($folder['id']) : $folder['name']); + + if ($folder['virtual']) { + $classes[] = 'virtual'; + } + + if (!$protected) { + $opts = $IMAP->mailbox_options($folder['id']); + $noselect = in_array('\\Noselect', $opts); + } + + $table->add_row(array('id' => 'rcmrow'.$idx, 'class' => join(' ', $classes))); + + $table->add('name', $display_folder); + $table->add('subscribed', $checkbox_subscribe->show(($subscribed ? $folder_utf8 : ''), + array('value' => $folder_utf8, 'disabled' => ($protected || $noselect) ? 'disabled' : ''))); + + $a_js_folders['rcmrow'.$idx] = array($folder_utf8, Q($display_folder), $protected || $folder['virtual']); + } + + $RCMAIL->plugins->exec_hook('folders_list', array('table' => $table)); + + $OUTPUT->add_gui_object('subscriptionlist', $attrib['id']); + $OUTPUT->set_env('subscriptionrows', $a_js_folders); + $OUTPUT->set_env('defaultfolders', $CONFIG['default_imap_folders']); + $OUTPUT->set_env('delimiter', $delimiter); + + return $form_start . $table->show($attrib) . $form_end; +} + +function rcmail_folder_frame($attrib) +{ + global $OUTPUT; + + if (!$attrib['id']) + $attrib['id'] = 'rcmfolderframe'; + + $attrib['name'] = $attrib['id']; + + $OUTPUT->set_env('contentframe', $attrib['name']); + $OUTPUT->set_env('blankpage', $attrib['src'] ? $OUTPUT->abs_url($attrib['src']) : 'program/blank.gif'); + + return html::iframe($attrib); +} + +function rcmail_rename_folder($oldname, $newname) +{ + global $RCMAIL; + + $delimiter = $RCMAIL->imap->get_hierarchy_delimiter(); + $rename = $RCMAIL->imap->rename_mailbox($oldname, $newname); + + // update per-folder options for modified folder and its subfolders + if ($rename !== false) { + $a_threaded = (array) $RCMAIL->config->get('message_threading', array()); + $oldprefix = '/^' . preg_quote($oldname . $delimiter, '/') . '/'; + + foreach ($a_threaded as $key => $val) { + if ($key == $oldname) { + unset($a_threaded[$key]); + $a_threaded[$newname] = true; + } + else if (preg_match($oldprefix, $key)) { + unset($a_threaded[$key]); + $a_threaded[preg_replace($oldprefix, $newname.$delimiter, $key)] = true; + } + } + $RCMAIL->user->save_prefs(array('message_threading' => $a_threaded)); + + return true; + } + + return false; +} + +$OUTPUT->set_pagetitle(rcube_label('folders')); +$OUTPUT->include_script('list.js'); +$OUTPUT->set_env('quota', $IMAP->get_capability('QUOTA')); + +// add some labels to client +$OUTPUT->add_label('deletefolderconfirm', 'purgefolderconfirm', 'folderdeleting', + 'foldermoving', 'foldersubscribing', 'folderunsubscribing', 'quota'); + +// register UI objects +$OUTPUT->add_handlers(array( + 'foldersubscription' => 'rcube_subscription_form', + 'folderframe' => 'rcmail_folder_frame', + 'quotadisplay' => 'rcmail_quota_display', +)); + +$OUTPUT->send('folders'); + diff --git a/program/steps/settings/manage_folders.inc b/program/steps/settings/manage_folders.inc deleted file mode 100644 index 3a5d909e4..000000000 --- a/program/steps/settings/manage_folders.inc +++ /dev/null @@ -1,443 +0,0 @@ - | - +-----------------------------------------------------------------------+ - - $Id$ - -*/ - -// WARNING: folder names in UI are encoded with RCMAIL_CHARSET - -// init IMAP connection -$RCMAIL->imap_connect(); - -// subscribe to one or more mailboxes -if ($RCMAIL->action=='subscribe') - { - $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP'); - if (strlen($mbox)) - $IMAP->subscribe(array($mbox)); - } - -// unsubscribe one or more mailboxes -else if ($RCMAIL->action=='unsubscribe') - { - $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP'); - if (strlen($mbox)) - $IMAP->unsubscribe(array($mbox)); - } - -// enable threading for one or more mailboxes -else if ($RCMAIL->action=='enable-threading') - { - $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP'); - if (strlen($mbox)) - rcube_set_threading($mbox, true); - } - -// enable threading for one or more mailboxes -else if ($RCMAIL->action=='disable-threading') - { - $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP'); - if (strlen($mbox)) - rcube_set_threading($mbox, false); - } - -// create a new mailbox -else if ($RCMAIL->action=='create-folder') - { - if (strlen(trim($_POST['_name']))) - { - $name = trim(get_input_value('_name', RCUBE_INPUT_POST, true, 'UTF7-IMAP')); - $create = $IMAP->create_mailbox($name, TRUE); - } - - if ($create && $OUTPUT->ajax_call) - { - $delimiter = $IMAP->get_hierarchy_delimiter(); - $folderlist = $IMAP->list_unsubscribed(); - $index = array_search($create, $folderlist); - $before = $index !== false && isset($folderlist[$index+1]) ? rcube_charset_convert($folderlist[$index+1], 'UTF7-IMAP') : false; - - $create = rcube_charset_convert($create, 'UTF7-IMAP'); - $foldersplit = explode($delimiter, $create); - $display_create = str_repeat('    ', substr_count($create, $delimiter)) - . Q($foldersplit[count($foldersplit)-1]); - - $OUTPUT->command('add_folder_row', $create, $display_create, false, $before); - } - else if (!$create) - { - $OUTPUT->show_message('errorsaving', 'error'); - } - } - -// rename a mailbox -else if ($RCMAIL->action=='rename-folder') - { - if (strlen(trim($_POST['_folder_oldname'])) && strlen(trim($_POST['_folder_newname']))) - { - $name_utf8 = trim(get_input_value('_folder_newname', RCUBE_INPUT_POST, true)); - $oldname_utf8 = get_input_value('_folder_oldname', RCUBE_INPUT_POST, true); - $name = rcube_charset_convert($name_utf8, RCMAIL_CHARSET, 'UTF7-IMAP'); - $oldname = rcube_charset_convert($oldname_utf8, RCMAIL_CHARSET, 'UTF7-IMAP'); - - $rename = $IMAP->rename_mailbox($oldname, $name); - } - - // update per-folder options for modified folder and its subfolders - if ($rename) { - $a_threaded = $RCMAIL->config->get('message_threading', array()); - $delimiter = $IMAP->get_hierarchy_delimiter(); - $oldprefix = '/^' . preg_quote($oldname . $delimiter, '/') . '/'; - foreach ($a_threaded as $key => $val) - if ($key == $oldname) { - unset($a_threaded[$key]); - $a_threaded[$name] = true; - } - else if (preg_match($oldprefix, $key)) { - unset($a_threaded[$key]); - $a_threaded[preg_replace($oldprefix, $name.$delimiter, $key)] = true; - } - - $RCMAIL->user->save_prefs(array('message_threading' => $a_threaded)); - } - - if ($rename && $OUTPUT->ajax_call) - { - $folderlist = $IMAP->list_unsubscribed(); - $delimiter = $IMAP->get_hierarchy_delimiter(); - - $regexp = '/^' . preg_quote($rename . $delimiter, '/') . '/'; - - // subfolders - for ($x=sizeof($folderlist)-1; $x>=0; $x--) - { - if (preg_match($regexp, $folderlist[$x])) - { - $oldfolder = $oldname . $delimiter . preg_replace($regexp, '', $folderlist[$x]); - $foldersplit = explode($delimiter, $folderlist[$x]); - $level = count($foldersplit) - 1; - $display_rename = str_repeat('    ', $level) - . Q(rcube_charset_convert($foldersplit[$level], 'UTF7-IMAP')); - - $before = isset($folderlist[$x+1]) ? rcube_charset_convert($folderlist[$x+1], 'UTF7-IMAP') : false; - - $OUTPUT->command('replace_folder_row', rcube_charset_convert($oldfolder, 'UTF7-IMAP'), - rcube_charset_convert($folderlist[$x], 'UTF7-IMAP'), $display_rename, $before); - } - } - - $foldersplit = explode($delimiter, $rename); - $level = count($foldersplit) - 1; - $display_rename = str_repeat('    ', $level) . Q(rcube_charset_convert($foldersplit[$level], 'UTF7-IMAP')); - $index = array_search($rename, $folderlist); - $before = $index !== false && isset($folderlist[$index+1]) ? rcube_charset_convert($folderlist[$index+1], 'UTF7-IMAP') : false; - - $OUTPUT->command('replace_folder_row', $oldname_utf8, rcube_charset_convert($rename, 'UTF7-IMAP'), $display_rename, $before); - $OUTPUT->command('reset_folder_rename'); - } - else if (!$rename && $OUTPUT->ajax_call) - { - $OUTPUT->command('reset_folder_rename'); - $OUTPUT->show_message('errorsaving', 'error'); - } - else if (!$rename) - $OUTPUT->show_message('errorsaving', 'error'); - } - -// delete an existing IMAP mailbox -else if ($RCMAIL->action=='delete-folder') - { - $a_mboxes = $IMAP->list_unsubscribed(); - $delimiter = $IMAP->get_hierarchy_delimiter(); - - $mboxes_utf8 = get_input_value('_mboxes', RCUBE_INPUT_POST, true); - $mboxes = rcube_charset_convert($mboxes_utf8, RCMAIL_CHARSET, 'UTF7-IMAP'); - - if (strlen($mboxes)) - $deleted = $IMAP->delete_mailbox(array($mboxes)); - - if ($OUTPUT->ajax_call && $deleted) - { - $OUTPUT->command('remove_folder_row', $mboxes_utf8); - foreach ($a_mboxes as $mbox) - { - if (preg_match('/^'. preg_quote($mboxes.$delimiter, '/') .'/', $mbox)) - { - $OUTPUT->command('remove_folder_row', rcube_charset_convert($mbox, 'UTF7-IMAP')); - } - } - $OUTPUT->show_message('folderdeleted', 'confirmation'); - } - else if (!$deleted) - { - $OUTPUT->show_message('errorsaving', 'error'); - } - } - -if ($OUTPUT->ajax_call) - $OUTPUT->send(); - - -// build table with all folders listed by server -function rcube_subscription_form($attrib) - { - global $RCMAIL, $IMAP, $CONFIG, $OUTPUT; - - $threading_supported = $IMAP->get_capability('thread=references') - || $IMAP->get_capability('thread=orderedsubject') - || $IMAP->get_capability('thread=refs'); - - list($form_start, $form_end) = get_form_tags($attrib, 'folders'); - unset($attrib['form']); - - if (!$attrib['id']) - $attrib['id'] = 'rcmSubscriptionlist'; - - $table = new html_table(); - - // add table header - $table->add_header('name', rcube_label('foldername')); - $table->add_header('msgcount', rcube_label('messagecount')); - $table->add_header('subscribed', rcube_label('subscribed')); - if ($threading_supported) - $table->add_header('threaded', rcube_label('threaded')); - $table->add_header('rename', ' '); - $table->add_header('delete', ' '); - - // get folders from server - $IMAP->clear_cache('mailboxes'); - - $a_unsubscribed = $IMAP->list_unsubscribed(); - $a_subscribed = $IMAP->list_mailboxes(); - $a_threaded = $a_threaded_copy = $RCMAIL->config->get('message_threading', array()); - $delimiter = $IMAP->get_hierarchy_delimiter(); - $a_js_folders = $seen = $list_folders = array(); - - // pre-process folders list - foreach ($a_unsubscribed as $i => $folder) { - $foldersplit = explode($delimiter, $folder); - $name = rcube_charset_convert(array_pop($foldersplit), 'UTF7-IMAP'); - $parent_folder = join($delimiter, $foldersplit); - $level = count($foldersplit); - - // add any necessary "virtual" parent folders - if ($parent_folder && !$seen[$parent_folder]) { - for ($i=1; $i<=$level; $i++) { - $ancestor_folder = join($delimiter, array_slice($foldersplit, 0, $i)); - if ($ancestor_folder && !$seen[$ancestor_folder]++) { - $ancestor_name = rcube_charset_convert($foldersplit[$i-1], 'UTF7-IMAP'); - $list_folders[] = array('id' => $ancestor_folder, 'name' => $ancestor_name, 'level' => $i-1, 'virtual' => true); - } - } - } - - unset($a_threaded_copy[$folder]); - - $list_folders[] = array('id' => $folder, 'name' => $name, 'level' => $level); - $seen[$folder]++; - } - - unset($seen); - - // remove 'message_threading' option for not existing folders - if ($a_threaded_copy) { - foreach ($a_threaded_copy as $key => $val) - unset($a_threaded[$key]); - unset($a_threaded_copy); - $RCMAIL->user->save_prefs(array('message_threading' => $a_threaded)); - } - - $checkbox_subscribe = new html_checkbox(array( - 'name' => '_subscribed[]', - 'onclick' => JS_OBJECT_NAME.".command(this.checked?'subscribe':'unsubscribe',this.value)", - )); - $checkbox_threaded = new html_checkbox(array( - 'name' => '_threaded[]', - 'onclick' => JS_OBJECT_NAME.".command(this.checked?'enable-threading':'disable-threading',this.value)", - )); - - if (!empty($attrib['deleteicon'])) - $del_button = html::img(array('src' => $CONFIG['skin_path'] . $attrib['deleteicon'], 'alt' => rcube_label('delete'))); - else - $del_button = rcube_label('delete'); - - if (!empty($attrib['renameicon'])) - $edit_button = html::img(array('src' => $CONFIG['skin_path'] . $attrib['renameicon'], 'alt' => rcube_label('rename'))); - else - $edit_button = rcube_label('rename'); - - // create list of available folders - foreach ($list_folders as $i => $folder) { - $idx = $i + 1; - $subscribed = in_array($folder['id'], $a_subscribed); - $threaded = $a_threaded[$folder['id']]; - $protected = ($CONFIG['protect_default_folders'] == true && in_array($folder['id'], $CONFIG['default_imap_folders'])); - $classes = array($i%2 ? 'even' : 'odd'); - $folder_js = Q($folder['id']); - $display_folder = str_repeat('    ', $folder['level']) . Q($protected ? rcmail_localize_foldername($folder['id']) : $folder['name']); - $folder_utf8 = rcube_charset_convert($folder['id'], 'UTF7-IMAP'); - - if ($folder['virtual']) { - $classes[] = 'virtual'; - } - - if (!$protected) { - $opts = $IMAP->mailbox_options($folder['id']); - $noselect = in_array('\\Noselect', $opts); - } - - $table->add_row(array('id' => 'rcmrow'.$idx, 'class' => join(' ', $classes))); - - $table->add('name', $display_folder); - $table->add('msgcount', (($folder['virtual'] || $noselect) ? '' : $IMAP->messagecount($folder['id'], 'ALL', false, false))); - $table->add('subscribed', $checkbox_subscribe->show(($subscribed ? $folder_utf8 : ''), - array('value' => $folder_utf8, 'disabled' => ($protected || $noselect) ? 'disabled' : ''))); - if ($threading_supported) { - $table->add('threaded', $folder['virtual'] ? '' : - $checkbox_threaded->show(($threaded ? $folder_utf8 : ''), array('value' => $folder_utf8))); - } - - // add rename and delete buttons - if (!$protected && !$folder['virtual']) { - $table->add('rename', html::a(array('href' => "#rename", 'title' => rcube_label('renamefolder')), $edit_button)); - $table->add('delete', html::a(array('href' => "#delete", 'title' => rcube_label('deletefolder')), $del_button)); - } - else { - $table->add('rename', ' '); - $table->add('delete', ' '); - } - - $a_js_folders['rcmrow'.$idx] = array($folder_utf8, Q($display_folder), $protected || $folder['virtual']); - } - - rcmail::get_instance()->plugins->exec_hook('folders_list', array('table' => $table)); - - $OUTPUT->add_gui_object('subscriptionlist', $attrib['id']); - $OUTPUT->set_env('subscriptionrows', $a_js_folders); - $OUTPUT->set_env('defaultfolders', $CONFIG['default_imap_folders']); - $OUTPUT->set_env('delimiter', $delimiter); - - return $form_start . $table->show($attrib) . $form_end; - } - - -function rcube_create_folder_form($attrib) - { - global $OUTPUT; - - list($form_start, $form_end) = get_form_tags($attrib, 'create-folder'); - unset($attrib['form']); - - if ($attrib['hintbox']) - $OUTPUT->add_gui_object('createfolderhint', $attrib['hintbox']); - - // return the complete edit form as table - $out = "$form_start\n"; - - $input = new html_inputfield(array('name' => '_folder_name')); - $out .= $input->show(); - - if (get_boolean($attrib['button'])) - { - $button = new html_inputfield(array('type' => 'button', - 'value' => rcube_label('create'), - 'onclick' => JS_OBJECT_NAME.".command('create-folder',this.form)")); - $out .= $button->show(); - } - - $out .= "\n$form_end"; - - return $out; - } - -function rcube_rename_folder_form($attrib) - { - global $CONFIG, $IMAP; - - list($form_start, $form_end) = get_form_tags($attrib, 'rename-folder'); - unset($attrib['form']); - - // return the complete edit form as table - $out = "$form_start\n"; - - $a_unsubscribed = $IMAP->list_unsubscribed(); - $select_folder = new html_select(array('name' => '_folder_oldname', 'id' => 'rcmfd_oldfolder')); - - foreach ($a_unsubscribed as $i => $folder) - { - if ($CONFIG['protect_default_folders'] == TRUE && in_array($folder,$CONFIG['default_imap_folders'])) - continue; - - $select_folder->add($folder); - } - - $out .= $select_folder->show(); - - $out .= " to "; - $inputtwo = new html_inputfield(array('name' => '_folder_newname')); - $out .= $inputtwo->show(); - - if (get_boolean($attrib['button'])) - { - $button = new html_inputfield(array('type' => 'button', - 'value' => rcube_label('rename'), - 'onclick' => JS_OBJECT_NAME.".command('rename-folder',this.form)")); - $out .= $button->show(); - } - - $out .= "\n$form_end"; - - return $out; - } - - -// (un)set 'threading' for selected folder -function rcube_set_threading($mbox, $state=true) - { - global $RCMAIL; - $mbox = (array)$mbox; - $a_prefs = (array)$RCMAIL->config->get('message_threading'); - - if ($state) { - foreach ($mbox as $box) - $a_prefs[$box] = true; - } - else { - foreach ($mbox as $box) - unset($a_prefs[$box]); - } - - $RCMAIL->user->save_prefs(array('message_threading' => $a_prefs)); - } - - -$OUTPUT->set_pagetitle(rcube_label('folders')); -$OUTPUT->include_script('list.js'); - -// register UI objects -$OUTPUT->add_handlers(array( - 'foldersubscription' => 'rcube_subscription_form', - 'createfolder' => 'rcube_create_folder_form', - 'renamefolder' => 'rcube_rename_folder_form' -)); - -// add some labels to client -$OUTPUT->add_label('deletefolderconfirm','addsubfolderhint','forbiddencharacter','folderdeleting','folderrenaming','foldercreating','foldermoving'); - -$OUTPUT->send('managefolders'); - diff --git a/program/steps/settings/save_folder.inc b/program/steps/settings/save_folder.inc new file mode 100644 index 000000000..da646a56e --- /dev/null +++ b/program/steps/settings/save_folder.inc @@ -0,0 +1,176 @@ + | + +-----------------------------------------------------------------------+ + + $Id$ + +*/ + +// WARNING: folder names in UI are encoded with RCMAIL_CHARSET + +// init IMAP connection +$RCMAIL->imap_connect(); + + +$name = trim(get_input_value('_name', RCUBE_INPUT_POST, true)); +$old = trim(get_input_value('_mbox', RCUBE_INPUT_POST, true)); +$path = trim(get_input_value('_parent', RCUBE_INPUT_POST, true)); + +$name_imap = rcube_charset_convert($name, RCMAIL_CHARSET, 'UTF7-IMAP'); +$old_imap = rcube_charset_convert($old, RCMAIL_CHARSET, 'UTF7-IMAP'); +// $path is in UTF7-IMAP already + +$delimiter = $IMAP->get_hierarchy_delimiter(); +$special = (strlen($old_imap) && in_array($old_imap, (array) $RCMAIL->config->get('default_imap_folders'))); +$protected = ($special && $RCMAIL->config->get('protect_default_folders')); + + +// Folder name checks +if ($protected) { +} +else if (!strlen($name)) { + $error = rcube_label('cannotbeempty'); +} +else if (mb_strlen($name) > 128) { + $error = rcube_label('nametoolong'); +} +else { + // these characters are problematic e.g. when used in LIST/LSUB + foreach (array($delimiter, '%', '*') as $char) { + if (strpos($name, $delimiter) !== false) { + $error = rcube_label('forbiddencharacter') . " ($char)"; + break; + } + } +} + +if ($error) { + $OUTPUT->command('display_message', $error, 'error'); +} +else { + if ($protected) { + $name_imap = $old_imap; + } + else if (strlen($path)) { + $name_imap = $path . $delimiter . $name_imap; + } + + $folder['name'] = $name_imap; + $folder['oldname'] = $old_imap; + $folder['settings'] = array( + // List view mode: 0-list, 1-threads + 'view_mode' => (int) get_input_value('_viewmode', RCUBE_INPUT_POST), + 'sort_column' => get_input_value('_sortcol', RCUBE_INPUT_POST), + 'sort_order' => get_input_value('_sortord', RCUBE_INPUT_POST), + ); +} + +// create a new mailbox +if (!$error && !strlen($old)) { + + $plugin = $RCMAIL->plugins->exec_hook('folder_create', array('record' => $folder)); + + $folder = $plugin['record']; + + if (!$plugin['abort']) { + $created = $IMAP->create_mailbox($folder['name'], TRUE); + } + else { + $created = $plugin['result']; + } + + if ($created) { + // Save folder settings + if (isset($_POST['_viewmode'])) { + $a_threaded = (array) $RCMAIL->config->get('message_threading', array()); + + if ($_POST['_viewmode']) + $a_threaded[$folder['name']] = true; + else + unset($a_threaded[$folder['name']]); + + $RCMAIL->user->save_prefs(array('message_threading' => $a_threaded)); + } + + $OUTPUT->show_message('foldercreated', 'confirmation'); + $OUTPUT->command('reload', 250); + $OUTPUT->send('iframe'); + } + else { + // show error message + $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error', null, false); + } +} + +// update a mailbox +else if (!$error) { + $plugin = $RCMAIL->plugins->exec_hook('folder_update', array('record' => $folder)); + + $folder = $plugin['record']; + $rename = ($folder['oldname'] != $folder['name']); + + if (!$plugin['abort']) { + if ($rename) { + $updated = $RCMAIL->imap->rename_mailbox($folder['oldname'], $folder['name']); + } + else { + $updated = true; + } + } + else { + $updated = $plugin['result']; + } + + if ($updated) { + // Update folder settings, + if (isset($_POST['_viewmode'])) { + $a_threaded = (array) $RCMAIL->config->get('message_threading', array()); + + // In case of name change update names of childrens in settings + if ($rename) { + $delimiter = $RCMAIL->imap->get_hierarchy_delimiter(); + $oldprefix = '/^' . preg_quote($folder['oldname'] . $delimiter, '/') . '/'; + foreach ($a_threaded as $key => $val) { + if ($key == $folder['oldname']) { + unset($a_threaded[$key]); + } + else if (preg_match($oldprefix, $key)) { + unset($a_threaded[$key]); + $a_threaded[preg_replace($oldprefix, $folder['name'].$delimiter, $key)] = true; + } + } + } + if ($_POST['_viewmode']) + $a_threaded[$folder['name']] = true; + else + unset($a_threaded[$folder['name']]); + + $RCMAIL->user->save_prefs(array('message_threading' => $a_threaded)); + } + + $OUTPUT->show_message('folderupdated', 'confirmation'); + if ($rename) { + $OUTPUT->command('reload', 250); + $OUTPUT->send('iframe'); + } + } + else { + // show error message + $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error', null, false); + } +} + +rcmail_overwrite_action('edit-folder'); diff --git a/program/steps/utils/html2text.inc b/program/steps/utils/html2text.inc index ef74ec49e..15c6a52a4 100644 --- a/program/steps/utils/html2text.inc +++ b/program/steps/utils/html2text.inc @@ -19,7 +19,12 @@ */ -$converter = new html2text($HTTP_RAW_POST_DATA); +$html = $HTTP_RAW_POST_DATA; + +// Replace emoticon images with its text representation +$html = rcmail_replace_emoticons($html); + +$converter = new html2text($html); header('Content-Type: text/plain; charset=UTF-8'); print rtrim($converter->get_text()); diff --git a/skins/default/common.css b/skins/default/common.css index 938c68a5e..622fba949 100644 --- a/skins/default/common.css +++ b/skins/default/common.css @@ -249,6 +249,11 @@ img background: url(images/listheader.gif) top left repeat-x #CCC; } +.boxtitle .rightalign +{ + float: right; +} + .boxcontent { padding: 15px 10px 10px 10px; @@ -861,3 +866,17 @@ fieldset.tabbed padding-top: 12px; } +.quota_text { + text-align: center; + font-size: 10px; + color: #666; + border: 1px solid #999; + cursor: default; +} +.quota_bg { background-color: white; } +.quota_high { background-color: #F33131; } +.quota_mid { background-color: #F5AD3C; } +.quota_low { background-color: #91E164; } +.quota_text_high { color: white; } +.quota_text_mid { color: #666; } +.quota_text_low { color: #666; } diff --git a/skins/default/functions.js b/skins/default/functions.js index 3197c9847..77cdeb8d2 100644 --- a/skins/default/functions.js +++ b/skins/default/functions.js @@ -353,7 +353,7 @@ switch_preview_pane: function(elem) /* Message composing */ init_compose_form: function() { - var f, field, fields = ['cc', 'bcc', 'replyto', 'mailreplyto', 'mailfollowupto'], + var f, field, fields = ['cc', 'bcc', 'replyto', 'followupto'], div = document.getElementById('compose-div'), headers_div = document.getElementById('compose-headers-div'); diff --git a/skins/default/iehacks.css b/skins/default/iehacks.css index 2b2180fb9..29ab8cb75 100644 --- a/skins/default/iehacks.css +++ b/skins/default/iehacks.css @@ -38,11 +38,6 @@ input, textarea height: expression((parseInt(document.documentElement.clientHeight)-105)+'px'); } -#folder-manager -{ - height: expression((parseInt(this.parentNode.offsetHeight)-105)+'px'); -} - #messagetoolbar { width: expression((parseInt(document.documentElement.clientWidth)-215)+'px'); @@ -90,7 +85,8 @@ input, textarea #messageframe, #identity-details, #contacts-box, -#prefs-box +#prefs-box, +#folder-box { height: expression(parseInt(this.parentNode.offsetHeight)+'px'); } diff --git a/skins/default/mail.css b/skins/default/mail.css index ead0aa610..7bb308c06 100644 --- a/skins/default/mail.css +++ b/skins/default/mail.css @@ -1337,8 +1337,7 @@ input.from_address #compose-cc, #compose-bcc, #compose-replyto, -#compose-mailreplyto, -#compose-mailfollowupto +#compose-followupto { display: none; } @@ -1435,9 +1434,6 @@ input.from_address margin-top: 4px; } - -/** quota indicator */ - #quota { position: absolute; @@ -1453,19 +1449,3 @@ input.from_address right: 6px; z-index: 101; } - -.quota_text { - text-align: center; - font-size: 10px; - color: #666; - border: 1px solid #999; - cursor: default; -} -.quota_bg { background-color: white; } -.quota_high { background-color: #F33131; } -.quota_mid { background-color: #F5AD3C; } -.quota_low { background-color: #91E164; } -.quota_text_high { color: white; } -.quota_text_mid { color: #666; } -.quota_text_low { color: #666; } - diff --git a/skins/default/settings.css b/skins/default/settings.css index c902740a6..5624f80e3 100644 --- a/skins/default/settings.css +++ b/skins/default/settings.css @@ -5,41 +5,20 @@ width: 300px; } -#folder-manager -{ - position: absolute; - width: 600px; - top: 0; - left: 0; - bottom: 105px; - overflow: auto; - border: 1px solid #999999; -} - #folder-manager.droptarget { border: 1px solid #CC3333; background-color: #FFFFA6; } -#listbuttons -{ - position: absolute; - left: 20px; - bottom: 18px; -} - -#identities-table +#identities-table, +#subscription-table, +#sections-table { width: 100%; table-layout: fixed; } -#subscription-table -{ - width: 100%; -} - #subscription-table input { font: inherit; @@ -50,14 +29,8 @@ #sections-table tbody td { cursor: default; - overflow: hidden; text-overflow: ellipsis; -o-text-overflow: ellipsis; -} - -#subscription-table tbody td -{ - height: 22px !important; height: 18px; } @@ -66,49 +39,26 @@ color: #666; } -#subscription-table tr.selected td, -#subscription-table tr.selected td a +#subscription-table tr.selected td { color: #FFFFFF; background-color: #CC3333; } -#subscription-table tr.droptarget td, -#subscription-table tr.droptarget td a +#subscription-table tr.droptarget td { background-color: #FFFFA6; } -#subscription-table thead td.name -{ - width: 95%; -} - -#subscription-table thead td.msgcount, -#subscription-table thead td.subscribed, -#subscription-table thead td.threaded -{ - white-space: nowrap; - min-width: 50px; -} - -#subscription-table tbody td.subscribed, -#subscription-table tbody td.rename, -#subscription-table tbody td.delete -{ - padding: 1px 4px; -} - -#subscription-table thead td.rename, -#subscription-table thead td.delete +#subscription-table td.name { - width: 30px; + width: auto; } -#subscription-table td.name input +#subscription-table td.subscribed { - font: inherit; - width: 90%; + text-align: right; + padding-right: 12px; } #identity-frame @@ -118,7 +68,9 @@ border: 1px solid #999999; } -#identity-details +#identity-details, +#folder-box, +#prefs-box { position: absolute; top: 0; @@ -129,7 +81,8 @@ background-color: #F2F2F2; } -#identity-details table td.title +#identity-details table td.title, +#folder-details table td.title { font-weight: bold; text-align: right; @@ -150,6 +103,7 @@ input.disabled } #identities-list, +#folder-manager, #sectionslist { position: absolute; @@ -161,24 +115,9 @@ input.disabled overflow: hidden; } -#sections-table -{ - width: 100%; - table-layout: fixed; -} - -#prefs-box -{ - position: absolute; - top: 0; - right: 0; - bottom: 0; - border: 1px solid #999999; - overflow: hidden; -} - body.iframe, -#prefs-frame +#prefs-frame, +#folder-frame { background-color: #F2F2F2; border: none; @@ -203,3 +142,24 @@ body.iframe, text-align: right; float: right; } + +#quota +{ + position: absolute; + top: 3px; + right: 8px; + width: 100px; +} + +#quotaimg +{ + position: absolute; + top: 3px; + right: 6px; + z-index: 101; +} + +#rcmfd_signature +{ + font-family: monospace; +} diff --git a/skins/default/splitter.js b/skins/default/splitter.js index de228c58a..e11f9fea5 100644 --- a/skins/default/splitter.js +++ b/skins/default/splitter.js @@ -24,7 +24,7 @@ function rcube_splitter(attrib) // create and position the handle for this splitter this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset(); this.p2pos = this.relative ? $(this.p2).position() : $(this.p2).offset(); - + if (this.horizontal) { var top = this.p1pos.top + this.p1.offsetHeight; this.layer = new rcube_layer(this.id, {x: 0, y: top, height: 10, @@ -92,7 +92,7 @@ function rcube_splitter(attrib) this.onDragStart = function(e) { // disable text selection while dragging the splitter - if (window.webkit || bw.safari) + if (bw.konq || bw.chrome || bw.safari) document.body.style.webkitUserSelect = 'none'; this.p1pos = this.relative ? $(this.p1).position() : $(this.p1).offset(); @@ -155,7 +155,7 @@ function rcube_splitter(attrib) this.onDragStop = function(e) { // resume the ability to highlight text - if (window.webkit || bw.safari) + if (bw.konq || bw.chrome || bw.safari) document.body.style.webkitUserSelect = 'auto'; // cancel the listening for drag events diff --git a/skins/default/templates/compose.html b/skins/default/templates/compose.html index 99015abee..2dcf8b0c1 100644 --- a/skins/default/templates/compose.html +++ b/skins/default/templates/compose.html @@ -78,18 +78,12 @@ - + - - + + - - - - - - - + @@ -99,9 +93,7 @@ | | - - | - + diff --git a/skins/default/templates/folderedit.html b/skins/default/templates/folderedit.html new file mode 100644 index 000000000..78ddd335e --- /dev/null +++ b/skins/default/templates/folderedit.html @@ -0,0 +1,24 @@ + + + +<roundcube:object name="pagetitle" /> + + + + + +
+ +
+ +

+ + " class="button" onclick="history.back()" />  + + +

+
+ + + + diff --git a/skins/default/templates/folders.html b/skins/default/templates/folders.html new file mode 100644 index 000000000..1710b8ca0 --- /dev/null +++ b/skins/default/templates/folders.html @@ -0,0 +1,62 @@ + + + +<roundcube:object name="pagetitle" /> + + + + + + + + + + + +
+ +
+
+
+ +
+
+ + + + + +
+ +
+ +
+
+ + + +
+ +
+ +
+ +
+
    +
  • +
  • + +
+
+ + + diff --git a/skins/default/templates/identityedit.html b/skins/default/templates/identityedit.html index 24c37a629..45c68f1ad 100644 --- a/skins/default/templates/identityedit.html +++ b/skins/default/templates/identityedit.html @@ -40,7 +40,7 @@
- +

diff --git a/skins/default/templates/managefolders.html b/skins/default/templates/managefolders.html deleted file mode 100644 index 164d56f54..000000000 --- a/skins/default/templates/managefolders.html +++ /dev/null @@ -1,41 +0,0 @@ - - - -<roundcube:object name="pagetitle" /> - - - - - - - - - -

- -
- -
- -
- -
-
- -
-:  - - -
-
-
- -
- -
- - - -- cgit v1.2.3