summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--CHANGELOG8
-rwxr-xr-xbin/transifexpull.sh3
-rw-r--r--config/defaults.inc.php5
-rw-r--r--plugins/acl/localization/lv_LV.inc18
-rw-r--r--plugins/archive/archive.js26
-rw-r--r--plugins/archive/archive.php68
-rw-r--r--plugins/archive/composer.json7
-rw-r--r--plugins/archive/package.xml10
-rw-r--r--plugins/attachment_reminder/localization/pt_BR.inc2
-rw-r--r--plugins/attachment_reminder/localization/uk_UA.inc4
-rw-r--r--plugins/help/help.php5
-rw-r--r--plugins/managesieve/localization/bg_BG.inc9
-rw-r--r--plugins/managesieve/localization/bs_BA.inc9
-rw-r--r--plugins/managesieve/localization/ca_ES.inc38
-rw-r--r--plugins/managesieve/localization/cy_GB.inc9
-rw-r--r--plugins/managesieve/localization/da_DK.inc3
-rw-r--r--plugins/managesieve/localization/de_CH.inc9
-rw-r--r--plugins/managesieve/localization/es_ES.inc15
-rw-r--r--plugins/managesieve/localization/hu_HU.inc9
-rw-r--r--plugins/managesieve/localization/it_IT.inc9
-rw-r--r--plugins/managesieve/localization/lv_LV.inc15
-rw-r--r--plugins/managesieve/localization/pt_BR.inc9
-rw-r--r--plugins/managesieve/localization/sk_SK.inc9
-rw-r--r--plugins/managesieve/localization/sl_SI.inc10
-rw-r--r--plugins/managesieve/localization/sv_SE.inc9
-rw-r--r--plugins/managesieve/localization/tr_TR.inc9
-rw-r--r--plugins/newmail_notifier/localization/ca_ES.inc1
-rw-r--r--plugins/newmail_notifier/localization/da_DK.inc1
-rw-r--r--plugins/newmail_notifier/localization/fa_IR.inc1
-rw-r--r--plugins/newmail_notifier/localization/lv_LV.inc1
-rw-r--r--plugins/newmail_notifier/localization/sl_SI.inc1
-rw-r--r--plugins/password/drivers/domainfactory.php117
-rw-r--r--program/include/rcmail_output_html.php4
-rw-r--r--program/js/app.js188
-rw-r--r--program/js/common.js8
-rw-r--r--program/js/editor.js4
-rw-r--r--program/js/list.js118
-rw-r--r--program/lib/Roundcube/rcube_ldap.php6
-rw-r--r--program/lib/Roundcube/rcube_spellchecker.php3
-rw-r--r--program/lib/Roundcube/rcube_utils.php79
-rw-r--r--program/localization/be_BE/labels.inc44
-rw-r--r--program/localization/be_BE/messages.inc18
-rw-r--r--program/localization/bg_BG/labels.inc8
-rw-r--r--program/localization/bg_BG/messages.inc5
-rw-r--r--program/localization/bs_BA/messages.inc3
-rw-r--r--program/localization/ca_ES/labels.inc12
-rw-r--r--program/localization/ca_ES/messages.inc3
-rw-r--r--program/localization/cs_CZ/labels.inc8
-rw-r--r--program/localization/cs_CZ/messages.inc2
-rw-r--r--program/localization/cy_GB/messages.inc3
-rw-r--r--program/localization/da_DK/labels.inc12
-rw-r--r--program/localization/da_DK/messages.inc5
-rw-r--r--program/localization/de_CH/labels.inc8
-rw-r--r--program/localization/de_CH/messages.inc5
-rw-r--r--program/localization/en_US/labels.inc3
-rw-r--r--program/localization/es_ES/messages.inc3
-rw-r--r--program/localization/fa_IR/labels.inc16
-rw-r--r--program/localization/fa_IR/messages.inc3
-rw-r--r--program/localization/fi_FI/labels.inc8
-rw-r--r--program/localization/fi_FI/messages.inc2
-rw-r--r--program/localization/fr_FR/labels.inc8
-rw-r--r--program/localization/hu_HU/labels.inc8
-rw-r--r--program/localization/hu_HU/messages.inc5
-rw-r--r--program/localization/it_IT/messages.inc3
-rw-r--r--program/localization/ja_JP/labels.inc8
-rw-r--r--program/localization/ja_JP/messages.inc2
-rw-r--r--program/localization/lb_LU/labels.inc12
-rw-r--r--program/localization/lb_LU/messages.inc5
-rw-r--r--program/localization/lv_LV/labels.inc9
-rw-r--r--program/localization/lv_LV/messages.inc5
-rw-r--r--program/localization/nl_NL/labels.inc8
-rw-r--r--program/localization/nl_NL/messages.inc2
-rw-r--r--program/localization/pt_BR/labels.inc8
-rw-r--r--program/localization/pt_BR/messages.inc5
-rw-r--r--program/localization/pt_PT/labels.inc8
-rw-r--r--program/localization/pt_PT/messages.inc2
-rw-r--r--program/localization/ru_RU/messages.inc2
-rw-r--r--program/localization/sk_SK/labels.inc8
-rw-r--r--program/localization/sk_SK/messages.inc5
-rw-r--r--program/localization/sl_SI/labels.inc12
-rw-r--r--program/localization/sl_SI/messages.inc5
-rw-r--r--program/localization/sv_SE/labels.inc8
-rw-r--r--program/localization/sv_SE/messages.inc5
-rw-r--r--program/localization/tr_TR/messages.inc5
-rw-r--r--program/localization/uk_UA/messages.inc2
-rw-r--r--program/steps/addressbook/save.inc4
-rw-r--r--program/steps/mail/func.inc43
-rw-r--r--program/steps/mail/sendmail.inc33
-rw-r--r--program/steps/settings/func.inc18
-rw-r--r--program/steps/settings/save_prefs.inc1
-rw-r--r--skins/classic/functions.js2
-rw-r--r--skins/classic/mail.css1
-rw-r--r--skins/larry/ui.js2
-rw-r--r--tests/Framework/Utils.php26
-rw-r--r--tests/MailFunc.php48
95 files changed, 1005 insertions, 353 deletions
diff --git a/CHANGELOG b/CHANGELOG
index fb7fd87da..0ae6254b5 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -1,6 +1,14 @@
CHANGELOG Roundcube Webmail
===========================
+- Improve identity selection based on From: header (#1489378)
+- Fix issue where mails with inline images of the same name contained only the first image multiple times (#1489406)
+- Use left/right arrow keys to collapse/expand thread and spacebar to select a row, change Ctrl key behavior (#1489392)
+- Fix an issue where using arrow keys to go up a list can result in selected message being under headers (#1489403)
+- Fix an issue where Home/End keys don't focus list row properly, don't scrollTo properly (#1489396)
+- Add an option to disable smart Reply-List behaviour - reply_all_mode (#1488734)
+- Fix an issue where pressing minus key on contacts list was hiding list records (#1489393)
+- Fix an issue where shift + arrow-up key wasn't selecting all messages in collapsed thread (#1489397)
- Added icon for priority column in messages list header (#1489234)
- New feature "Canned Responses" to save and recall boilerplate text snippets
- Fix HTML part detection when encapsulated inside multipart/signed (#1489372)
diff --git a/bin/transifexpull.sh b/bin/transifexpull.sh
index ce25f6fc1..ba26a07f1 100755
--- a/bin/transifexpull.sh
+++ b/bin/transifexpull.sh
@@ -3,6 +3,9 @@
# In 'translator' mode files will contain empty translated texts
# where translation is not available, we'll remove these later
+# Note: there's a bug in txclib, so if the command below doesn't
+# work see https://github.com/transifex/transifex-client/commit/a80320735973dd608b48520bf3b89ad53e2b088b
+
tx --debug pull -a --mode translator
PWD=`dirname "$0"`
diff --git a/config/defaults.inc.php b/config/defaults.inc.php
index 9e4ba11bf..ab0e188bd 100644
--- a/config/defaults.inc.php
+++ b/config/defaults.inc.php
@@ -1023,3 +1023,8 @@ $config['default_font_size'] = '10pt';
// Enables display of email address with name instead of a name (and address in title)
$config['message_show_email'] = false;
+
+// Default behavior of Reply-All button:
+// 0 - Reply-All always
+// 1 - Reply-List if mailing list is detected
+$config['reply_all_mode'] = 0;
diff --git a/plugins/acl/localization/lv_LV.inc b/plugins/acl/localization/lv_LV.inc
index 83ceec5eb..cadb34ae2 100644
--- a/plugins/acl/localization/lv_LV.inc
+++ b/plugins/acl/localization/lv_LV.inc
@@ -15,6 +15,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-acl/
*/
+$labels['sharing'] = 'Dalīšanās';
$labels['myrights'] = 'Piekļuves tiesības';
$labels['username'] = 'Lietotājs:';
$labels['advanced'] = 'paplašinātais režīms';
@@ -25,10 +26,15 @@ $labels['anonymous'] = 'Viesi (anonīmie)';
$labels['identifier'] = 'Identifikators';
$labels['acll'] = 'Atrast';
$labels['aclr'] = 'Lasīt ziņojumus';
+$labels['acls'] = 'Paturēt "Redzētā" statusu';
+$labels['aclw'] = 'Saglabāt atzīmes';
+$labels['acli'] = 'Ievietot (Iekopēt)';
+$labels['aclp'] = 'Nosūtīt';
$labels['aclc'] = 'Izveidot apakšmapes';
$labels['aclk'] = 'Izveidot apakšmapes';
$labels['acld'] = 'Dzēst ziņojumus';
$labels['aclt'] = 'Dzēst ziņojumus';
+$labels['acle'] = 'Izdzēst';
$labels['aclx'] = 'Dzēst mapi';
$labels['acla'] = 'Pārvaldīt';
$labels['aclfull'] = 'Pilna kontrole';
@@ -41,17 +47,29 @@ $labels['shortaclr'] = 'Lasīt';
$labels['shortacls'] = 'Paturēt';
$labels['shortaclw'] = 'Rakstīt';
$labels['shortacli'] = 'Ievietot';
+$labels['shortaclp'] = 'Nosūtīt';
$labels['shortaclc'] = 'Izveidot';
$labels['shortaclk'] = 'Izveidot';
$labels['shortacld'] = 'Dzēst';
$labels['shortaclt'] = 'Dzēst';
+$labels['shortacle'] = 'Izdzēst';
$labels['shortaclx'] = 'Mapju dzēšana';
$labels['shortacla'] = 'Pārvaldīt';
$labels['shortaclother'] = 'Cits';
$labels['shortaclread'] = 'Lasīt';
$labels['shortaclwrite'] = 'Rakstīt';
$labels['shortacldelete'] = 'Dzēst';
+$labels['longacll'] = 'Mape ir redzama kopējā mapju sarakstā un var tikt abonēta';
$labels['longaclr'] = 'Ši mape var tikt atvērta lasīšanai';
+$labels['longacls'] = 'Ziņojumu "Redzēts" atzīme var tik mainīta';
+$labels['longaclw'] = 'Ziņojumu atzīmes, izņemot "Redzēts" un "Dzēsts", un atslēgvārdi var tik mainīti';
+$labels['longacli'] = 'Ziņojumi var tikt ierakstīti vai pārkopēti uz šo mapi';
+$labels['longaclp'] = 'Vēstules var tikt ievietotas šajā mapē';
+$labels['longaclc'] = 'Zem šīs mapes pa tiešo var tikt izveidotas (vai pārsauktas) citas mapes';
+$labels['longaclk'] = 'Zem šīs mapes pa tiešo var tikt izveidotas (vai pārsauktas) citas mapes';
+$labels['longacld'] = 'Ziņojumu "Dzēst" atzīme var tikt mainīta';
+$labels['longaclt'] = 'Ziņojumu "Dzēst" atzīme var tikt mainīta';
+$labels['longacle'] = 'Vēstules var tikt izdzēstas';
$labels['longaclx'] = 'Mape var tikt gan dzēsta, gan pārdēvēta';
$labels['longacla'] = 'Mapes pieejas tiesības var tikt izmainītas';
$labels['longaclfull'] = 'Pilna kontrole, iekļaujot arī mapju administrēšanu';
diff --git a/plugins/archive/archive.js b/plugins/archive/archive.js
index 3500b9fe4..2e5267425 100644
--- a/plugins/archive/archive.js
+++ b/plugins/archive/archive.js
@@ -1,6 +1,6 @@
/*
* Archive plugin script
- * @version 2.0
+ * @version 2.1
*/
function rcmail_archive(prop)
@@ -8,29 +8,41 @@ function rcmail_archive(prop)
if (!rcmail.env.uid && (!rcmail.message_list || !rcmail.message_list.get_selection().length))
return;
- if (rcmail.env.mailbox.indexOf(rcmail.env.archive_folder) != 0) {
+ if (rcmail_is_archive()) {
if (!rcmail.env.archive_type) {
// simply move to archive folder (if no partition type is set)
rcmail.command('move', rcmail.env.archive_folder);
}
else {
// let the server sort the messages to the according subfolders
- var post_data = { _uid: rcmail.message_list.get_selection().join(','), _mbox: rcmail.env.mailbox };
- rcmail.http_post('plugin.move2archive', post_data);
+ rcmail.http_post('plugin.move2archive', rcmail.selection_post_data());
}
}
}
+function rcmail_is_archive()
+{
+ if (!rcmail.env.archive_folder)
+ return false;
+
+ // check if current folder is an archive folder or one of its children
+ if (rcmail.env.mailbox == rcmail.env.archive_folder
+ || rcmail.env.mailbox.startsWith(rcmail.env.archive_folder + rcmail.env.delimiter)
+ ) {
+ return true;
+ }
+}
+
// callback for app-onload event
if (window.rcmail) {
rcmail.addEventListener('init', function(evt) {
// register command (directly enable in message view mode)
- rcmail.register_command('plugin.archive', rcmail_archive, (rcmail.env.uid && rcmail.env.mailbox != rcmail.env.archive_folder));
+ rcmail.register_command('plugin.archive', rcmail_archive, rcmail.env.uid && rcmail_is_archive());
// add event-listener to message list
if (rcmail.message_list)
rcmail.message_list.addEventListener('select', function(list) {
- rcmail.enable_command('plugin.archive', (list.get_selection().length > 0 && rcmail.env.mailbox != rcmail.env.archive_folder));
+ rcmail.enable_command('plugin.archive', list.get_selection().length > 0 && rcmail_is_archive());
});
// set css style for archive folder
@@ -41,7 +53,7 @@ if (window.rcmail) {
// callback for server response
rcmail.addEventListener('plugin.move2archive_response', function(result) {
if (result.update)
- rcmail.command('checkmail'); // refresh list
+ rcmail.command('list'); // refresh list
});
})
}
diff --git a/plugins/archive/archive.php b/plugins/archive/archive.php
index 7a81606ab..4a00d5f58 100644
--- a/plugins/archive/archive.php
+++ b/plugins/archive/archive.php
@@ -6,9 +6,9 @@
* Plugin that adds a new button to the mailbox toolbar
* to move messages to a (user selectable) archive folder.
*
- * @version 2.0
+ * @version 2.1
* @license GNU GPLv3+
- * @author Andre Rodier, Thomas Bruederli
+ * @author Andre Rodier, Thomas Bruederli, Aleksander Machniak
*/
class archive extends rcube_plugin
{
@@ -110,19 +110,29 @@ class archive extends rcube_plugin
*/
function move_messages()
{
- $rcmail = rcmail::get_instance();
$this->add_texts('localization');
- $storage = $rcmail->get_storage();
+ $rcmail = rcmail::get_instance();
+ $storage = $rcmail->get_storage();
+ $delimiter = $storage->get_hierarchy_delimiter();
+ $archive_folder = $rcmail->config->get('archive_mbox');
+ $archive_type = $rcmail->config->get('archive_type', '');
+
$storage->set_folder(($current_mbox = rcube_utils::get_input_value('_mbox', RCUBE_INPUT_POST)));
- $delimiter = $storage->get_hierarchy_delimiter();
- $archive_folder = $rcmail->config->get('archive_mbox');
- $archive_type = $rcmail->config->get('archive_type', '');
+ $result = array('reload' => false, 'update' => false, 'errors' => array());
+ $folders = array();
+ $uids = rcube_utils::get_input_value('_uid', RCUBE_INPUT_POST);
+ $search_request = get_input_value('_search', RCUBE_INPUT_GPC);
- $result = array('reload' => false, 'update' => false, 'errors' => array());
+ if ($uids == '*') {
+ $index = $storage->index(null, rcmail_sort_column(), rcmail_sort_order());
+ $uids = $index->get();
+ }
+ else {
+ $uids = explode(',', $uids);
+ }
- $uids = explode(',', rcube_utils::get_input_value('_uid', RCUBE_INPUT_POST));
foreach ($uids as $uid) {
if (!$archive_folder || !($message = $rcmail->storage->get_message($uid))) {
continue;
@@ -164,12 +174,27 @@ class archive extends rcube_plugin
}
// compose full folder path
- $folder = $archive_folder . ($subfolder ? $delimiter . $subfolder : '');
+ $folder = $archive_folder . ($subfolder ? $delimiter . $subfolder : '');
// create archive subfolder if it doesn't yet exist
- if (!$storage->folder_exists($folder, false)) {
- if ($storage->create_folder($folder, true))
- $result['reload'] = true;
+ // we'll create all folders in the path
+ if (!in_array($folder, $folders)) {
+ if (empty($list)) {
+ $list = $storage->list_folders('', $archive_folder . '*', 'mail', null, true);
+ }
+ $path = explode($delimiter, $folder);
+
+ for ($i=0; $i<count($path); $i++) {
+ $_folder = implode($delimiter, array_slice($path, 0, $i+1));
+ if (!in_array($_folder, $list)) {
+ if ($storage->create_folder($_folder, true)) {
+ $result['reload'] = true;
+ $list[] = $_folder;
+ }
+ }
+ }
+
+ $folders[] = $folder;
}
// move message to target folder
@@ -192,7 +217,22 @@ class archive extends rcube_plugin
$rcmail->output->show_message($this->gettext('archived'), 'confirmation');
}
- $rcmail->output->command('plugin.move2archive_response', $result);
+ // refresh saved search set after moving some messages
+ if ($search_request && $rcmail->storage->get_search_set()) {
+ $_SESSION['search'] = $rcmail->storage->refresh_search();
+ }
+
+ if ($_POST['_from'] == 'show' && !empty($result['update'])) {
+ if ($next = get_input_value('_next_uid', RCUBE_INPUT_GPC)) {
+ $rcmail->output->command('show_message', $next);
+ }
+ else {
+ $rcmail->output->command('command', 'list');
+ }
+ }
+ else {
+ $rcmail->output->command('plugin.move2archive_response', $result);
+ }
}
/**
diff --git a/plugins/archive/composer.json b/plugins/archive/composer.json
index 7826545b8..8a585ad09 100644
--- a/plugins/archive/composer.json
+++ b/plugins/archive/composer.json
@@ -3,12 +3,17 @@
"type": "roundcube-plugin",
"description": "This adds a button to move the selected messages to an archive folder. The folder (and the optional structure of subfolders) can be selected in the settings panel.",
"license": "GNU GPLv3+",
- "version": "2.0",
+ "version": "2.1",
"authors": [
{
"name": "Thomas Bruederli",
"email": "roundcube@gmail.com",
"role": "Lead"
+ },
+ {
+ "name": "Aleksander Machniak",
+ "email": "alec@alec.pl",
+ "role": "Developer"
}
],
"repositories": [
diff --git a/plugins/archive/package.xml b/plugins/archive/package.xml
index 62a009a99..ec3323e4b 100644
--- a/plugins/archive/package.xml
+++ b/plugins/archive/package.xml
@@ -13,9 +13,15 @@
<email>roundcube@gmail.com</email>
<active>yes</active>
</lead>
- <date>2013-01-20</date>
+ <lead>
+ <name>Aleksander Machniak</name>
+ <user>alec</user>
+ <email>alec@alec.pl</email>
+ <active>yes</active>
+ </lead>
+ <date>2013-10-30</date>
<version>
- <release>2.0</release>
+ <release>2.1</release>
<api>2.0</api>
</version>
<stability>
diff --git a/plugins/attachment_reminder/localization/pt_BR.inc b/plugins/attachment_reminder/localization/pt_BR.inc
index b06e8923e..4b61e951c 100644
--- a/plugins/attachment_reminder/localization/pt_BR.inc
+++ b/plugins/attachment_reminder/localization/pt_BR.inc
@@ -16,5 +16,5 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-attachment_reminder/
*/
$messages['forgotattachment'] = "Você esqueceu-se de anexar um arquivo?";
-$messages['reminderoption'] = "Alertar quando os anexos forem esquecidos";
+$messages['reminderoption'] = "Alertar sobre o possível esquecimento de anexos";
$messages['keywords'] = "anexo,arquivo,anexar,anexado,anexando,incluso,CV,currículo";
diff --git a/plugins/attachment_reminder/localization/uk_UA.inc b/plugins/attachment_reminder/localization/uk_UA.inc
index c3b4aaa02..122fb2bee 100644
--- a/plugins/attachment_reminder/localization/uk_UA.inc
+++ b/plugins/attachment_reminder/localization/uk_UA.inc
@@ -15,6 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/plugin-attachment_reminder/
*/
-$messages['forgotattachment'] = "";
-$messages['reminderoption'] = "";
+$messages['forgotattachment'] = "Ви забули прикріпити файл?";
+$messages['reminderoption'] = "Нагадати про забуте вкладення";
$messages['keywords'] = "";
diff --git a/plugins/help/help.php b/plugins/help/help.php
index 37fd908a3..df08caf71 100644
--- a/plugins/help/help.php
+++ b/plugins/help/help.php
@@ -33,6 +33,11 @@ class help extends rcube_plugin
$this->register_action('about', array($this, 'action'));
$this->register_action('license', array($this, 'action'));
+ $this->add_hook('startup', array($this, 'startup'));
+ }
+
+ function startup($args)
+ {
$rcmail = rcmail::get_instance();
// add taskbar button
diff --git a/plugins/managesieve/localization/bg_BG.inc b/plugins/managesieve/localization/bg_BG.inc
index a9a77d5df..c9d06d2fd 100644
--- a/plugins/managesieve/localization/bg_BG.inc
+++ b/plugins/managesieve/localization/bg_BG.inc
@@ -159,22 +159,31 @@ $labels['index'] = 'индекс:';
$labels['indexlast'] = 'наобратно';
$messages['filterunknownerror'] = 'Неизвестна сървърна грешка.';
$messages['filterconnerror'] = 'Неуспешно свързване с managesieve сървъра.';
+$messages['filterdeleteerror'] = 'Невъзможно изтриване на филтъра. Възникна сървърна грешка.';
$messages['filterdeleted'] = 'Филтърът е изтрит успешно.';
$messages['filtersaved'] = 'Филтърът е записан успешно.';
+$messages['filtersaveerror'] = 'Невъзможно записване на филтъра. Възникна сървърна грешка.';
$messages['filterdeleteconfirm'] = 'Наистина ли желаете да изтриете избрания филтър?';
$messages['ruledeleteconfirm'] = 'Сигурни ли сте, че желаете да изтриете избраното условие?';
$messages['actiondeleteconfirm'] = 'Сигурни ли сте, че желаете да изтриете избраното действие?';
$messages['forbiddenchars'] = 'Забранени символи в полето.';
$messages['cannotbeempty'] = 'Полето не може да бъде празно.';
$messages['ruleexist'] = 'Вече има филтър с указаното име.';
+$messages['setactivateerror'] = 'Невъзможно активиране на избрания набор от филтри. Възникна сървърна грешка.';
+$messages['setdeactivateerror'] = 'Невъзможно деактивиране на избрания набор от филтри. Възникна сървърна грешка.';
+$messages['setdeleteerror'] = 'Невъзможно изтриване на избрания набор от филтри. Възникна сървърна грешка.';
$messages['setactivated'] = 'Наборът от филтри е активиран успешно.';
$messages['setdeactivated'] = 'Наборът от филтри е деактивиран успешно.';
$messages['setdeleted'] = 'Наборът от филтри е изтрит успешно.';
$messages['setdeleteconfirm'] = 'Сигурни ли сте, че желаете да изтриете избрания набор от филтри?';
+$messages['setcreateerror'] = 'Невъзможно създаване на набор от филтри. Възникна сървърна грешка.';
$messages['setcreated'] = 'Наборът от филтри е създаден успешно.';
+$messages['activateerror'] = 'Невъзможно включване на филтъра. Възникна сървърна грешка.';
+$messages['deactivateerror'] = 'Невъзможно изключване на филтъра. Възникна сървърна грешка.';
$messages['deactivated'] = 'Филтърът е изключен успешно.';
$messages['activated'] = 'Филтърът е включен успешно.';
$messages['moved'] = 'Филтърът е преместен успешно.';
+$messages['moveerror'] = 'Невъзможно преместване на филтъра. Възникна сървърна грешка.';
$messages['nametoolong'] = 'Името е прекалено дълго.';
$messages['namereserved'] = 'Резервирано име.';
$messages['setexist'] = 'Вече има такъв набор филтри.';
diff --git a/plugins/managesieve/localization/bs_BA.inc b/plugins/managesieve/localization/bs_BA.inc
index f4b5ebb22..0667db33c 100644
--- a/plugins/managesieve/localization/bs_BA.inc
+++ b/plugins/managesieve/localization/bs_BA.inc
@@ -159,22 +159,31 @@ $labels['index'] = 'indeks:';
$labels['indexlast'] = 'unazad';
$messages['filterunknownerror'] = 'Nepoznata serverska greška.';
$messages['filterconnerror'] = 'Nije se moguće povezati na server.';
+$messages['filterdeleteerror'] = 'Nije moguće obrisati filter. Desila se serverska greška.';
$messages['filterdeleted'] = 'Filter je uspješno obrisan.';
$messages['filtersaved'] = 'Filter je uspješno sačuvan.';
+$messages['filtersaveerror'] = 'Nije moguće sačuvati filter. Desila se serverska greška.';
$messages['filterdeleteconfirm'] = 'Da li zaista želite obrisati označeni filter?';
$messages['ruledeleteconfirm'] = 'Jeste li sigurni da želite obrisati označeno pravilo?';
$messages['actiondeleteconfirm'] = 'Jeste li sigurni da želite obrisati označenu akciju?';
$messages['forbiddenchars'] = 'U polje su uneseni nedozvoljeni znakovi.';
$messages['cannotbeempty'] = 'Polje ne može biti prazno.';
$messages['ruleexist'] = 'Filter s tim imenom već postoji.';
+$messages['setactivateerror'] = 'Nije moguće aktivirati označeni set filtera. Desila se serverska greška.';
+$messages['setdeactivateerror'] = 'Nije moguće deaktivirati označeni set filtera. Desila se serverska greška.';
+$messages['setdeleteerror'] = 'Nije moguće obrisati označeni set filtera. Desila se serverska greška.';
$messages['setactivated'] = 'Set filtera je uspješno aktiviran.';
$messages['setdeactivated'] = 'Set filtera je uspješno deaktiviran.';
$messages['setdeleted'] = 'Set filtera je uspješno obrisan.';
$messages['setdeleteconfirm'] = 'Jeste li sigurni da želite obrisati označeni set filtera?';
+$messages['setcreateerror'] = 'Nije moguće kreirati set filtera. Desila se serverska greška.';
$messages['setcreated'] = 'Set filtera je uspješno kreiran.';
+$messages['activateerror'] = 'Nije moguće omogućiti označene filtere. Desila se serverska greška.';
+$messages['deactivateerror'] = 'Nije moguće onemogućiti označene filtere. Desila se serverska greška.';
$messages['deactivated'] = 'Filteri su uspješno omogućeni.';
$messages['activated'] = 'Filteri su uspješno onemogućeni.';
$messages['moved'] = 'Filteri su uspješno premješteni.';
+$messages['moveerror'] = 'Nije moguće premjestiti označeni filter. Desila se serverska greška.';
$messages['nametoolong'] = 'Ime je predugo.';
$messages['namereserved'] = 'Ime je rezervisano.';
$messages['setexist'] = 'Set već postoji.';
diff --git a/plugins/managesieve/localization/ca_ES.inc b/plugins/managesieve/localization/ca_ES.inc
index cf5117f6a..dae49397a 100644
--- a/plugins/managesieve/localization/ca_ES.inc
+++ b/plugins/managesieve/localization/ca_ES.inc
@@ -39,7 +39,7 @@ $labels['filternotregex'] = 'no coincideix amb l\'expressió regular';
$labels['filterunder'] = 'sota';
$labels['filterover'] = 'sobre';
$labels['addrule'] = 'Afegeix una regla';
-$labels['delrule'] = 'Suprimeix regla';
+$labels['delrule'] = 'Suprimeix una regla';
$labels['messagemoveto'] = 'Mou el missatge a';
$labels['messageredirect'] = 'Redirigeix el missatge cap a';
$labels['messagecopyto'] = 'Copia el missatge a';
@@ -54,8 +54,9 @@ $labels['add'] = 'Afegeix';
$labels['del'] = 'Suprimeix';
$labels['sender'] = 'Remitent';
$labels['recipient'] = 'Destinatari/a';
+$labels['vacationaddr'] = 'Les meves adreces de correu addicionals:';
$labels['vacationdays'] = 'Cada quan enviar un missatge (en dies):';
-$labels['vacationinterval'] = 'Amb quina freqüència enviar missatges:';
+$labels['vacationinterval'] = 'Amb quina freqüència s\'han d\'enviar els missatges:';
$labels['days'] = 'dies';
$labels['seconds'] = 'segons';
$labels['vacationreason'] = 'Cos del missatge (raó de les vacances):';
@@ -77,9 +78,9 @@ $labels['fromset'] = 'des del conjunt';
$labels['fromfile'] = 'des del fitxer';
$labels['filterdisabled'] = 'Filtre deshabilitat';
$labels['countisgreaterthan'] = 'el recompte és major que';
-$labels['countisgreaterthanequal'] = 'el recompte és major o igual que';
+$labels['countisgreaterthanequal'] = 'el recompte és major o igual a';
$labels['countislessthan'] = 'el recompte és menor que';
-$labels['countislessthanequal'] = 'el recompte és menor o igual que';
+$labels['countislessthanequal'] = 'el recompte és menor o igual a';
$labels['countequals'] = 'el recompte és igual que';
$labels['countnotequals'] = 'el recompte és diferent de';
$labels['valueisgreaterthan'] = 'el valor és major que';
@@ -102,16 +103,16 @@ $labels['setvarvalue'] = 'Valor de la variable:';
$labels['setvarmodifiers'] = 'Modificadors:';
$labels['varlower'] = 'minúscules';
$labels['varupper'] = 'majúscules';
-$labels['varlowerfirst'] = 'el primer caràcter és minúscul';
-$labels['varupperfirst'] = 'el primer caràcter és majúscul';
+$labels['varlowerfirst'] = 'el primer caràcter en minúscula';
+$labels['varupperfirst'] = 'el primer caràcter en majúscula';
$labels['varquotewildcard'] = 'engloba els caràcters especials amb cometes';
$labels['varlength'] = 'llargada';
$labels['notify'] = 'Envia notificació';
$labels['notifyaddress'] = 'Per a adreça de correu electrònic:';
$labels['notifybody'] = 'Cos de la notificació';
-$labels['notifysubject'] = 'Tema de la notificació:';
+$labels['notifysubject'] = 'Assumpte de la notificació:';
$labels['notifyfrom'] = 'Remitent de la notificació:';
-$labels['notifyimportance'] = 'Importànica:';
+$labels['notifyimportance'] = 'Importància:';
$labels['notifyimportancelow'] = 'baixa';
$labels['notifyimportancenormal'] = 'normal';
$labels['notifyimportancehigh'] = 'alta';
@@ -133,7 +134,7 @@ $labels['second'] = 'segon';
$labels['time'] = 'hora (hh:mm:ss)';
$labels['iso8601'] = 'data (ISO8601)';
$labels['std11'] = 'data (RFC2822)';
-$labels['zone'] = 'Fus horari';
+$labels['zone'] = 'fus horari';
$labels['weekday'] = 'dia de la setmana (0-6)';
$labels['advancedopts'] = 'Opcions avançades';
$labels['body'] = 'Cos';
@@ -142,7 +143,7 @@ $labels['envelope'] = 'sobre';
$labels['modifier'] = 'modificador:';
$labels['text'] = 'text';
$labels['undecoded'] = 'descodificat (en brut)';
-$labels['contenttype'] = 'tipus de contigut';
+$labels['contenttype'] = 'tipus de contingut';
$labels['modtype'] = 'tipus:';
$labels['allparts'] = 'tots';
$labels['domain'] = 'domini';
@@ -150,7 +151,7 @@ $labels['localpart'] = 'part local';
$labels['user'] = 'usuari/a';
$labels['detail'] = 'detall';
$labels['comparator'] = 'comparador:';
-$labels['default'] = 'per omissió';
+$labels['default'] = 'per defecte';
$labels['octet'] = 'estricte (octet)';
$labels['asciicasemap'] = 'No distingeix entre majúscules i minúscules (ascii-casemap)';
$labels['asciinumeric'] = 'numèric (ascii-numeric)';
@@ -158,22 +159,31 @@ $labels['index'] = 'índex:';
$labels['indexlast'] = 'cap enrere';
$messages['filterunknownerror'] = 'Error desconegut al servidor.';
$messages['filterconnerror'] = 'No s\'ha pogut connectar al servidor.';
+$messages['filterdeleteerror'] = 'No s\'ha pogut suprimir el filtre. Hi ha hagut un error al servidor.';
$messages['filterdeleted'] = 'El filtre s\'ha suprimit correctament.';
$messages['filtersaved'] = 'Filtre desat correctament.';
+$messages['filtersaveerror'] = 'No s\'ha pogut desar el filtre. Hi ha hagut un error al servidor.';
$messages['filterdeleteconfirm'] = 'Realment voleu suprimit el filtre seleccionat?';
$messages['ruledeleteconfirm'] = 'Esteu segur que voleu suprimir la norma seleccionada?';
$messages['actiondeleteconfirm'] = 'Esteu segur que voleu suprimir l\'acció seleccionada?';
$messages['forbiddenchars'] = 'El camp conté caràcters prohibits.';
$messages['cannotbeempty'] = 'El camp no pot estar buit.';
-$messages['ruleexist'] = 'Ja existeix un filtre amb aquest nom';
+$messages['ruleexist'] = 'Ja existeix un filtre amb aquest nom.';
+$messages['setactivateerror'] = 'No s\'ha pogut activar el conjunt de filtres seleccionat. Hi ha hagut un error al servidor.';
+$messages['setdeactivateerror'] = 'No s\'ha pogut desactivar el conjunt de filtres seleccionat. Hi ha hagut un error al servidor.';
+$messages['setdeleteerror'] = 'No s\'ha pogut suprimir el conjunt de filtres seleccionat. Hi ha hagut un error al servidor.';
$messages['setactivated'] = 'El conjunt de filtres s\'ha activat correctament.';
$messages['setdeactivated'] = 'El conjunt de filtres s\'ha desactivat correctament.';
$messages['setdeleted'] = 'El conjunt de filtres s\'ha suprimit correctament.';
$messages['setdeleteconfirm'] = 'Esteu segurs que voleu suprimir el conjunt de filtres seleccionats?';
+$messages['setcreateerror'] = 'No s\'ha pogut crear el conjunt de filtres. Hi ha hagut un error al servidor.';
$messages['setcreated'] = 'S\'ha creat correctament el conjunt de filtres.';
-$messages['deactivated'] = 'Filtre(s) habilitat(s) correctament.';
-$messages['activated'] = 'Filtre(s) deshabilitat(s) correctament.';
+$messages['activateerror'] = 'No s\'ha pogut habilitar el(s) filtre(s) seleccionat(s). Hi ha hagut un error al servidor.';
+$messages['deactivateerror'] = 'No s\'ha pogut deshabilitar el(s) filtre(s) seleccionat(s). Hi ha hagut un error al servidor.';
+$messages['deactivated'] = 'Filtre(s) deshabilitat(s) correctament.';
+$messages['activated'] = 'Filtre(s) habilitat(s) correctament.';
$messages['moved'] = 'S\'ha mogut correctament el filtre.';
+$messages['moveerror'] = 'No s\'ha pogut moure el filtre seleccionat. Hi ha hagut un error al servidor.';
$messages['nametoolong'] = 'El nom és massa llarg.';
$messages['namereserved'] = 'Nom reservat.';
$messages['setexist'] = 'El conjunt ja existeix.';
diff --git a/plugins/managesieve/localization/cy_GB.inc b/plugins/managesieve/localization/cy_GB.inc
index 806a49dde..a10205d09 100644
--- a/plugins/managesieve/localization/cy_GB.inc
+++ b/plugins/managesieve/localization/cy_GB.inc
@@ -159,22 +159,31 @@ $labels['index'] = 'mynegai:';
$labels['indexlast'] = 'o chwith';
$messages['filterunknownerror'] = 'Gwall gweinydd anhysbys.';
$messages['filterconnerror'] = 'Methwyd cysylltu a\'r gweinydd.';
+$messages['filterdeleteerror'] = 'Methwyd dileu hidlydd. Cafwydd gwall gweinydd.';
$messages['filterdeleted'] = 'Dilëuwyd hidlydd yn llwyddiannus.';
$messages['filtersaved'] = 'Cadwyd hidlydd yn llwyddiannus.';
+$messages['filtersaveerror'] = 'Methwyd cadw hidlydd. Cafwyd gwall gweinydd.';
$messages['filterdeleteconfirm'] = 'Ydych chi wir am ddileu yr hidlydd ddewiswyd?';
$messages['ruledeleteconfirm'] = 'Ydych chi\'n siwr eich bod am ddileu\'r rheol ddewiswyd?';
$messages['actiondeleteconfirm'] = 'Ydych chi\'n siwr eich bod am ddileu\'r weithred ddewiswyd?';
$messages['forbiddenchars'] = 'Llythrennau gwaharddedig yn y maes.';
$messages['cannotbeempty'] = 'Ni all y maes fod yn wag.';
$messages['ruleexist'] = 'Mae hidlydd gyda\'r enw yma yn bodoli\'n barod.';
+$messages['setactivateerror'] = 'Methwyd galluogi y hidlyddion dewiswyd. Cafwyd gwall gweinydd.';
+$messages['setdeactivateerror'] = 'Methwyd analluogi y hidlyddion dewiswyd. Cafwyd gwall gweinydd.';
+$messages['setdeleteerror'] = 'Methwyd dileu y set hidlyddion ddewiswyd. Cafwyd gwall gweinydd.';
$messages['setactivated'] = 'Bywiogwyd y set hidlydd yn llwyddiannus.';
$messages['setdeactivated'] = 'Dadfywiogwyd y set hidlydd yn llwyddiannus.';
$messages['setdeleted'] = 'Dilëuwyd y set hidlydd yn llwyddiannus.';
$messages['setdeleteconfirm'] = 'Ydych chi\'n siwr eich bod am ddileu\'r set hidlydd ddewiswyd?';
+$messages['setcreateerror'] = 'Methwyd creu set hidlydd. Cafwyd gwall gweinydd.';
$messages['setcreated'] = 'Crëuwyd y set hidlydd yn llwyddiannus.';
+$messages['activateerror'] = 'Methwyd galluogi y hidlydd(ion) dewiswyd. Cafwyd gwall gweinydd.';
+$messages['deactivateerror'] = 'Methwyd analluogi y hidlydd(ion) dewiswyd. Cafwyd gwall gweinydd.';
$messages['deactivated'] = 'Galluogwyd y hidlydd(ion) yn llwyddiannus.';
$messages['activated'] = 'Analluogwyd y hidlydd(ion) yn llwyddiannus.';
$messages['moved'] = 'Symudwyd y hidlydd yn llwyddiannus.';
+$messages['moveerror'] = 'Methwyd symud y hidlydd dewiswyd. Cafwyd gwall gweinydd.';
$messages['nametoolong'] = 'Enw yn rhy hir.';
$messages['namereserved'] = 'Enw neilltuedig.';
$messages['setexist'] = 'Mae\'r set yn bodoli\'n barod.';
diff --git a/plugins/managesieve/localization/da_DK.inc b/plugins/managesieve/localization/da_DK.inc
index 863dc1ecf..f12b20f3a 100644
--- a/plugins/managesieve/localization/da_DK.inc
+++ b/plugins/managesieve/localization/da_DK.inc
@@ -47,12 +47,14 @@ $labels['messagesendcopy'] = 'Send kopi af besked til';
$labels['messagereply'] = 'Svar med besked';
$labels['messagedelete'] = 'Slet besked';
$labels['messagediscard'] = 'Slet med besked';
+$labels['messagekeep'] = 'Behold besked i Inbox';
$labels['messagesrules'] = 'For indkomne besked:';
$labels['messagesactions'] = '...udfør følgende aktioner:';
$labels['add'] = 'Tilføje';
$labels['del'] = 'Fjern';
$labels['sender'] = 'Afsender';
$labels['recipient'] = 'Modtager';
+$labels['vacationaddr'] = 'Min(e) yderligere email-adresse(r):';
$labels['vacationdays'] = 'Hvor tit skal besked sendes (i dage):';
$labels['vacationinterval'] = 'Hvor tit skal besked sendes:';
$labels['days'] = 'dage';
@@ -157,6 +159,7 @@ $labels['index'] = 'indeks:';
$labels['indexlast'] = 'baglends';
$messages['filterunknownerror'] = 'Ukendt server fejl.';
$messages['filterconnerror'] = 'Kan ikke forbinde til server.';
+$messages['filterdeleteerror'] = 'Kunne ikke slette filter. Serverfejl opstod.';
$messages['filterdeleted'] = 'Filter slettet.';
$messages['filtersaved'] = 'Filter gemt.';
$messages['filterdeleteconfirm'] = 'Vil du slette det valgte filter?';
diff --git a/plugins/managesieve/localization/de_CH.inc b/plugins/managesieve/localization/de_CH.inc
index f3559fa89..234f31315 100644
--- a/plugins/managesieve/localization/de_CH.inc
+++ b/plugins/managesieve/localization/de_CH.inc
@@ -159,22 +159,31 @@ $labels['index'] = 'Index:';
$labels['indexlast'] = 'rückwärts';
$messages['filterunknownerror'] = 'Unbekannter Serverfehler';
$messages['filterconnerror'] = 'Kann nicht zum Sieve-Server verbinden';
+$messages['filterdeleteerror'] = 'Serverfehler beim Löschen des Filters.';
$messages['filterdeleted'] = 'Filter erfolgreich gelöscht';
$messages['filtersaved'] = 'Filter gespeichert';
+$messages['filtersaveerror'] = 'Serverfehler beim Speichern des Filters.';
$messages['filterdeleteconfirm'] = 'Möchten Sie den Filter löschen ?';
$messages['ruledeleteconfirm'] = 'Sicher, dass Sie die Regel löschen wollen?';
$messages['actiondeleteconfirm'] = 'Sicher, dass Sie die ausgewaehlte Aktion löschen wollen?';
$messages['forbiddenchars'] = 'Unerlaubte Zeichen im Feld';
$messages['cannotbeempty'] = 'Feld darf nicht leer sein';
$messages['ruleexist'] = 'Ein Filter mit dem angegebenen Namen existiert bereits.';
+$messages['setactivateerror'] = 'Serverfehler beim Aktivieren des gewählten Filtersatzes.';
+$messages['setdeactivateerror'] = 'Serverfehler beim Deaktivieren des gewählten Filtersatzes.';
+$messages['setdeleteerror'] = 'Serverfehler beim Löschen des gewählten Filtersatzes.';
$messages['setactivated'] = 'Filtersatz erfolgreich aktiviert.';
$messages['setdeactivated'] = 'Filtersatz erfolgreich deaktiviert.';
$messages['setdeleted'] = 'Filtersatz erfolgreich gelöscht.';
$messages['setdeleteconfirm'] = 'Sind Sie sicher, dass Sie den ausgewählten Filtersatz löschen möchten?';
+$messages['setcreateerror'] = 'Serverfehler beim Erstellen des Filtersatzes.';
$messages['setcreated'] = 'Filter erfolgreich erstellt.';
+$messages['activateerror'] = 'Serverfehler beim Aktivieren des/der gewählten Filter(s).';
+$messages['deactivateerror'] = 'Serverfehler beim Deaktivieren des/der gewählten Filter(s).';
$messages['deactivated'] = 'Filter erfolgreich aktiviert.';
$messages['activated'] = 'Filter erfolgreich deaktiviert.';
$messages['moved'] = 'Filter erfolgreich verschoben.';
+$messages['moveerror'] = 'Serverfehler beim Verschieben des gewählten Filters.';
$messages['nametoolong'] = 'Filtersatz kann nicht erstellt werden. Name zu lang.';
$messages['namereserved'] = 'Reservierter Name.';
$messages['setexist'] = 'Filtersatz existiert bereits.';
diff --git a/plugins/managesieve/localization/es_ES.inc b/plugins/managesieve/localization/es_ES.inc
index 208477a96..91602ee7b 100644
--- a/plugins/managesieve/localization/es_ES.inc
+++ b/plugins/managesieve/localization/es_ES.inc
@@ -157,25 +157,34 @@ $labels['asciicasemap'] = 'no sensible a mayúsculas (ascii-casemap)';
$labels['asciinumeric'] = 'numerico (ascii-numeric)';
$labels['index'] = 'índice:';
$labels['indexlast'] = 'hacia atrás';
-$messages['filterunknownerror'] = 'Error desconocido de servidor.';
-$messages['filterconnerror'] = 'Imposible conectar con el servidor managesieve.';
+$messages['filterunknownerror'] = 'Error desconocido en el servidor.';
+$messages['filterconnerror'] = 'No se ha podido conectar con el servidor managesieve.';
+$messages['filterdeleteerror'] = 'No se ha podido borrar el filtro. Ha ocurrido un error en el servidor.';
$messages['filterdeleted'] = 'Filtro borrado satisfactoriamente.';
$messages['filtersaved'] = 'Filtro guardado satisfactoriamente.';
+$messages['filtersaveerror'] = 'No se ha podido guardar el filtro. Ha ocurrido un error en el servidor.';
$messages['filterdeleteconfirm'] = '¿Realmente desea borrar el filtro seleccionado?';
$messages['ruledeleteconfirm'] = '¿Está seguro de que desea borrar la regla seleccionada?';
$messages['actiondeleteconfirm'] = '¿Está seguro de que desea borrar la acción seleccionada?';
$messages['forbiddenchars'] = 'Caracteres prohibidos en el campo.';
$messages['cannotbeempty'] = 'El campo no puede estar vacío.';
$messages['ruleexist'] = 'Ya existe un filtro con el nombre especificado.';
+$messages['setactivateerror'] = 'No se ha podido activar el conjunto de filtros seleccionado. Ha ocurrido un error en el servidor.';
+$messages['setdeactivateerror'] = 'No se ha podido desactivar el conjunto de filtros seleccionado. Ha ocurrido un error en el servidor.';
+$messages['setdeleteerror'] = 'No se ha podido borrar el conjunto de filtros seleccionado. Ha ocurrido un error en el servidor.';
$messages['setactivated'] = 'Conjunto de filtros activado satisfactoriamente.';
$messages['setdeactivated'] = 'Conjunto de filtros desactivado satisfactoriamente.';
$messages['setdeleted'] = 'Conjunto de filtros borrado satisfactoriamente.';
$messages['setdeleteconfirm'] = '¿Está seguro de que desea borrar el conjunto de filtros seleccionado?';
+$messages['setcreateerror'] = 'No se ha podido crear el conjunto de filtros. Ha ocurrido un error en el servidor.';
$messages['setcreated'] = 'Conjunto de filtros creado satisfactoriamente.';
+$messages['activateerror'] = 'No se han podido habilitar los filtros seleccionados. Ha ocurrido un error en el servidor.';
+$messages['deactivateerror'] = 'No se han podido deshabilitar los filtros seleccionados. Ha ocurrido un error en el servidor.';
$messages['deactivated'] = 'Filtro(s) deshabilitado(s) correctamente.';
$messages['activated'] = 'Filtro(s) habilitado(s) correctamente.';
$messages['moved'] = 'Filtro movido correctamente.';
-$messages['nametoolong'] = 'Imposible crear el conjunto de filtros. Nombre demasiado largo';
+$messages['moveerror'] = 'No se ha podido mover el filtro seleccionado. Ha ocurrido un error en el servidor.';
+$messages['nametoolong'] = 'Nombre demasiado largo.';
$messages['namereserved'] = 'Nombre reservado.';
$messages['setexist'] = 'El conjunto ya existe.';
$messages['nodata'] = '¡Al menos una posición debe ser seleccionada!';
diff --git a/plugins/managesieve/localization/hu_HU.inc b/plugins/managesieve/localization/hu_HU.inc
index 862c32b94..afab3f3a6 100644
--- a/plugins/managesieve/localization/hu_HU.inc
+++ b/plugins/managesieve/localization/hu_HU.inc
@@ -159,22 +159,31 @@ $labels['index'] = 'index:';
$labels['indexlast'] = 'visszafelé';
$messages['filterunknownerror'] = 'Ismeretlen szerverhiba';
$messages['filterconnerror'] = 'Nem tudok a szűrőszerverhez kapcsolódni';
+$messages['filterdeleteerror'] = 'A szűrőt nem lehet törölni. Szerverhiba történt';
$messages['filterdeleted'] = 'A szűrő törlése sikeres';
$messages['filtersaved'] = 'A szűrő mentése sikeres';
+$messages['filtersaveerror'] = 'A szűrő mentése sikertelen. Szerverhiba történt';
$messages['filterdeleteconfirm'] = 'Biztosan törli ezt a szűrőt?';
$messages['ruledeleteconfirm'] = 'Biztosan törli ezt a szabályt?';
$messages['actiondeleteconfirm'] = 'Biztosan törli ezt a műveletet?';
$messages['forbiddenchars'] = 'Érvénytelen karakter a mezőben';
$messages['cannotbeempty'] = 'A mező nem lehet üres';
$messages['ruleexist'] = 'Már van ilyen névvel elmentett szűrő.';
+$messages['setactivateerror'] = 'A kiválasztott szűrő készletet nem sikerült engedélyezni. Szerver hiba történt.';
+$messages['setdeactivateerror'] = 'A kiválasztott szűrő készletet nem sikerült tiltani. Szerver hiba történt.';
+$messages['setdeleteerror'] = 'Nem sikerült a kiválasztott szűrő készletet törölni. Szerver hiba történt.';
$messages['setactivated'] = 'A filter készlet engedélyezése sikeresen végrehajtódott.';
$messages['setdeactivated'] = 'A filter készlet tiltása sikeresen végrehajtódott.';
$messages['setdeleted'] = 'A filter készlet törlése sikeresen végrehajtódott.';
$messages['setdeleteconfirm'] = 'Biztosan törölni szeretnéd a kiválasztott szűrő készleteket?';
+$messages['setcreateerror'] = 'Nem sikerült létrehozni a szűrő készletet. Szerver hiba történt.';
$messages['setcreated'] = 'A szűrő készlet sikeresen létrejött.';
+$messages['activateerror'] = 'Nem sikerült engedélyezni a kiválasztott szűrö(k)et. Szerver hiba történt.';
+$messages['deactivateerror'] = 'Nem sikerült kikapcsolni a kiválasztott szűrő(ke)t. Szerver hiba történt.';
$messages['deactivated'] = 'Szűrő(k) sikeresen bekapcsolva.';
$messages['activated'] = 'Szűrő(k) sikeresen kikapcsolva.';
$messages['moved'] = 'A szűrő sikeresen áthelyezve.';
+$messages['moveerror'] = 'Az áthelyezés nem sikerült. Szerver hiba történt.';
$messages['nametoolong'] = 'Túll hosszu név';
$messages['namereserved'] = 'Nem használható (foglalt) név-';
$messages['setexist'] = 'A készlet már létezik.';
diff --git a/plugins/managesieve/localization/it_IT.inc b/plugins/managesieve/localization/it_IT.inc
index 9de758fa5..b7fc970e5 100644
--- a/plugins/managesieve/localization/it_IT.inc
+++ b/plugins/managesieve/localization/it_IT.inc
@@ -159,22 +159,31 @@ $labels['index'] = 'indice:';
$labels['indexlast'] = 'indietro';
$messages['filterunknownerror'] = 'Errore sconosciuto del server';
$messages['filterconnerror'] = 'Collegamento al server managesieve fallito';
+$messages['filterdeleteerror'] = 'Eliminazione del filtro fallita. Si è verificato un errore nel server.';
$messages['filterdeleted'] = 'Filtro eliminato con successo';
$messages['filtersaved'] = 'Filtro salvato con successo';
+$messages['filtersaveerror'] = 'Salvataggio del filtro fallito. Si è verificato un errore nel server.';
$messages['filterdeleteconfirm'] = 'Vuoi veramente eliminare il filtro selezionato?';
$messages['ruledeleteconfirm'] = 'Sei sicuro di voler eliminare la regola selezionata?';
$messages['actiondeleteconfirm'] = 'Sei sicuro di voler eliminare l\'azione selezionata?';
$messages['forbiddenchars'] = 'Caratteri non consentiti nel campo';
$messages['cannotbeempty'] = 'Il campo non può essere vuoto';
$messages['ruleexist'] = 'Esiste già un filtro con questo nome';
+$messages['setactivateerror'] = 'Impossibile attivare il filtro. Errore del server.';
+$messages['setdeactivateerror'] = 'Impossibile disattivare i filtri selezionati. Errore del server.';
+$messages['setdeleteerror'] = 'Impossibile cancellare i filtri selezionati. Errore del server.';
$messages['setactivated'] = 'Filtro attivato';
$messages['setdeactivated'] = 'Filtro disattivato';
$messages['setdeleted'] = 'Filtro cancellato';
$messages['setdeleteconfirm'] = 'Sei sicuro di voler cancellare il gruppo di filtri';
+$messages['setcreateerror'] = 'Impossibile creare il gruppo di filtri. Errore del server.';
$messages['setcreated'] = 'Gruppo di filtri creato';
+$messages['activateerror'] = 'Impossibile abilitare i filtri selzionati. Errore del server.';
+$messages['deactivateerror'] = 'impossibile disabilitare i filtri selezionati. Errore del server.';
$messages['deactivated'] = 'filtro abilitato';
$messages['activated'] = 'filtro disabilitato';
$messages['moved'] = 'filtro spostato';
+$messages['moveerror'] = 'impossibile spostare il filtro selezionato. Errore del server.';
$messages['nametoolong'] = 'Impossibile creare il gruppo: Nome troppo lungo';
$messages['namereserved'] = 'nome riservato';
$messages['setexist'] = 'Il gruppo esiste già';
diff --git a/plugins/managesieve/localization/lv_LV.inc b/plugins/managesieve/localization/lv_LV.inc
index 73aa76573..111f3b4f6 100644
--- a/plugins/managesieve/localization/lv_LV.inc
+++ b/plugins/managesieve/localization/lv_LV.inc
@@ -47,13 +47,15 @@ $labels['messagesendcopy'] = 'Pārsūtīt vēstules kopiju uz';
$labels['messagereply'] = 'Atbildēt ar vēstuli';
$labels['messagedelete'] = 'Dzēst vēstuli';
$labels['messagediscard'] = 'Dzēst vēstuli un atbildēt';
+$labels['messagekeep'] = 'Paturēt ziņu Iesūtnē';
$labels['messagesrules'] = 'Ienākošajām vēstulēm:';
$labels['messagesactions'] = '...izpildīt sekojošās darbības:';
$labels['add'] = 'Pievienot';
$labels['del'] = 'Dzēst';
$labels['sender'] = 'Sūtītājs';
$labels['recipient'] = 'Saņēmējs';
-$labels['vacationdays'] = 'Cik dienu laikā vienam un tam pašam sūtītājam neatbildēt atkārtoti (piem., 7):';
+$labels['vacationaddr'] = 'Mana(s) papildus e-pasta adrese(s):';
+$labels['vacationdays'] = 'Cik bieži sūtī ziņojumus (dienās):';
$labels['vacationinterval'] = 'Cik bieži sūtīt vēstules:';
$labels['days'] = 'dienas';
$labels['seconds'] = 'sekundes';
@@ -154,25 +156,34 @@ $labels['octet'] = 'precīzs (oktets)';
$labels['asciicasemap'] = 'reģistrnejutīgs (ascii tabula)';
$labels['asciinumeric'] = 'skaitļu (ascii skaitļu)';
$labels['index'] = 'indekss:';
-$labels['indexlast'] = '"backwards"';
+$labels['indexlast'] = 'atpakaļ';
$messages['filterunknownerror'] = 'Nezināma servera kļūda.';
$messages['filterconnerror'] = 'Neizdevās pieslēgties ManageSieve serverim.';
+$messages['filterdeleteerror'] = 'Neizdevās izdzēst filtru - atgadījās servera iekšējā kļūda.';
$messages['filterdeleted'] = 'Filtrs veiksmīgi izdzēsts.';
$messages['filtersaved'] = 'Filtrs veiksmīgi saglabāts.';
+$messages['filtersaveerror'] = 'Neizdevās saglabāt filtru - atgadījās servera iekšējā kļūda.';
$messages['filterdeleteconfirm'] = 'Vai Jūs tiešām vēlaties dzēst atzīmēto filtru?';
$messages['ruledeleteconfirm'] = 'Vai Jūs tiešām vēlaties dzēst atzīmēto nosacījumu?';
$messages['actiondeleteconfirm'] = 'Vai Jūs tiešām vēlaties dzēst atzīmēto darbību?';
$messages['forbiddenchars'] = 'Lauks satur aizliegtus simbolus.';
$messages['cannotbeempty'] = 'Lauks nedrīkst būt tukšs.';
$messages['ruleexist'] = 'Filtrs ar tādu nosaukumu jau pastāv.';
+$messages['setactivateerror'] = 'Neizdevās aktivizēt atzīmēto filtru kopu - atgadījās servera iekšējā kļūda.';
+$messages['setdeactivateerror'] = 'Neizdevās deaktivizēt atzīmēto filtru kopu - atgadījās servera iekšējā kļūda.';
+$messages['setdeleteerror'] = 'Neizdevās izdzēst atzīmēto filtru kopu - atgadījās servera ieksējā kļūda.';
$messages['setactivated'] = 'Filtru kopa veiksmīgi aktivizēta.';
$messages['setdeactivated'] = 'Filtru kopa veiksmīgi deaktivizēta.';
$messages['setdeleted'] = 'Filtru kopa veiksmīgi izdzēsta.';
$messages['setdeleteconfirm'] = 'Vai tiešām Jūs vēlaties dzēst atzīmēto filtru kopu?';
+$messages['setcreateerror'] = 'Neizdevās izveidot filtru kopu - atgadījās servera iekšējā kļūda.';
$messages['setcreated'] = 'Filtru kopa veiksmīgi izveidota.';
+$messages['activateerror'] = 'Nav iespējams ieslēgt izvēlēto(s) filtru(s) - atgadījās servera iekšējā kļūda.';
+$messages['deactivateerror'] = 'Nav iespējams atslēgt izvēlēto(s) filtru(s) - atgadījās servera iekšējā kļūda.';
$messages['deactivated'] = 'Filtrs(i) veiksmīgi atslēgts(i).';
$messages['activated'] = 'Filtrs(i) veiksmīgi ieslēgts(i).';
$messages['moved'] = 'Filtrs veiksmīgi pārvietots.';
+$messages['moveerror'] = 'Nav iespējams pārvietot izvēlēto filtru - atgadījās servera iekšējā kļūda.';
$messages['nametoolong'] = 'Neizdevās izveidot filtru kopu. Pārāk garš kopas nosaukums.';
$messages['namereserved'] = 'Rezervētais nosaukums.';
$messages['setexist'] = 'Kopa jau eksistē.';
diff --git a/plugins/managesieve/localization/pt_BR.inc b/plugins/managesieve/localization/pt_BR.inc
index 9b245e7d8..063c60c5f 100644
--- a/plugins/managesieve/localization/pt_BR.inc
+++ b/plugins/managesieve/localization/pt_BR.inc
@@ -159,22 +159,31 @@ $labels['index'] = 'índice:';
$labels['indexlast'] = 'retroceder';
$messages['filterunknownerror'] = 'Erro desconhecido de servidor';
$messages['filterconnerror'] = 'Não foi possível conectar ao servidor managesieve';
+$messages['filterdeleteerror'] = 'Impossível excluir o filtro. Ocorreu um erro no servidor.';
$messages['filterdeleted'] = 'Filtro excluído com sucesso';
$messages['filtersaved'] = 'Filtro gravado com sucesso';
+$messages['filtersaveerror'] = 'Impossível salvar o filtro. Ocorreu um erro no servidor.';
$messages['filterdeleteconfirm'] = 'Deseja realmente excluir o filtro selecionado?';
$messages['ruledeleteconfirm'] = 'Deseja realmente excluir a regra selecionada?';
$messages['actiondeleteconfirm'] = 'Deseja realmente excluir a ação selecionada?';
$messages['forbiddenchars'] = 'Caracteres não permitidos no campo';
$messages['cannotbeempty'] = 'Campo não pode ficar em branco';
$messages['ruleexist'] = 'O filtro com o nome especificado já existe.';
+$messages['setactivateerror'] = 'Impossível ativar o conjunto de filtros selecionados. Ocorreu um erro no servidor.';
+$messages['setdeactivateerror'] = 'Impossível desativar o conjunto de filtros selecionados. Ocorreu um erro no servidor.';
+$messages['setdeleteerror'] = 'Impossível excluir o conjunto de filtros selecionados. Ocorreu um erro no servidor.';
$messages['setactivated'] = 'Conjunto de filtros ativados com sucesso.';
$messages['setdeactivated'] = 'Conjunto de filtros desativados com sucesso.';
$messages['setdeleted'] = 'Conjunto de filtros excluídos com sucesso.';
$messages['setdeleteconfirm'] = 'Você está certo que deseja excluir o conjunto de filtros selecionados?';
+$messages['setcreateerror'] = 'Impossível criar o conjunto de filtros. Ocorreu um erro no servidor.';
$messages['setcreated'] = 'Conjunto de filtros criado com sucesso.';
+$messages['activateerror'] = 'Impossível habilitar o(s) filtro(s) selecionado(s). Ocorreu um erro no servidor.';
+$messages['deactivateerror'] = 'Impossível desabilitar o(s) filtro(s) selecionado(s). Ocorreu um erro no servidor.';
$messages['deactivated'] = 'Filtro(s) habilitado(s) com sucesso.';
$messages['activated'] = 'Filtro(s) desabilitado(s) com sucesso.';
$messages['moved'] = 'Filtro movido com sucesso.';
+$messages['moveerror'] = 'Impossível mover o filtro selecionado. Ocorreu um erro no servidor.';
$messages['nametoolong'] = 'Nome muito longo.';
$messages['namereserved'] = 'Nome reservado.';
$messages['setexist'] = 'Conjunto já existe.';
diff --git a/plugins/managesieve/localization/sk_SK.inc b/plugins/managesieve/localization/sk_SK.inc
index 5e7bfb3b5..8a9e01708 100644
--- a/plugins/managesieve/localization/sk_SK.inc
+++ b/plugins/managesieve/localization/sk_SK.inc
@@ -159,22 +159,31 @@ $labels['index'] = 'index:';
$labels['indexlast'] = 'dozadu';
$messages['filterunknownerror'] = 'Neznáma chyba serveru';
$messages['filterconnerror'] = 'Nepodarilo sa pripojiť k managesieve serveru';
+$messages['filterdeleteerror'] = 'Nemožno vymazať filter. Nastala chyba servera.';
$messages['filterdeleted'] = 'Filter bol zmazaný';
$messages['filtersaved'] = 'Filter bol uložený';
+$messages['filtersaveerror'] = 'Nemožno uložiť filter. Nastala chyba servera.';
$messages['filterdeleteconfirm'] = 'Naozaj si prajete zmazať tento filter?';
$messages['ruledeleteconfirm'] = 'Naozaj si prajete zamzať toto pravidlo?';
$messages['actiondeleteconfirm'] = 'Naozaj si prajete zmazať túto akciu?';
$messages['forbiddenchars'] = 'Pole obsahuje nepovolené znaky';
$messages['cannotbeempty'] = 'Pole nemôže byť prázdne';
$messages['ruleexist'] = 'Filter so zadaným menom už existuje.';
+$messages['setactivateerror'] = 'Nemožno aktivovať vybranú súpravu filtrov. Nastala chyba servera.';
+$messages['setdeactivateerror'] = 'Nemožno deaktivovať vybranú súpravu filtrov. Nastala chyba servera.';
+$messages['setdeleteerror'] = 'Nemožno vymazať vybranú súpravu filtrov. Nastala chyba servera.';
$messages['setactivated'] = 'Sada filtrov bola aktivovaná';
$messages['setdeactivated'] = 'Sada filtrov bola deaktivovaná';
$messages['setdeleted'] = 'Sada filtrov bola zmazaná';
$messages['setdeleteconfirm'] = 'Naozaj si prajete zmazať túto sadu filtrov?';
+$messages['setcreateerror'] = 'Nemožno vytvoriť súpravu filtrov. Nastala chyba servera.';
$messages['setcreated'] = 'Sada filtrov bola vytvorená';
+$messages['activateerror'] = 'Nemožno aktivovať vybraný filter (vybrané filtre). Nastala chyba servera.';
+$messages['deactivateerror'] = 'Nemožno deaktivovať vybraný filter (vybrané filtre). Nastala chyba servera.';
$messages['deactivated'] = 'Filter(e) povolený.';
$messages['activated'] = 'Filter(e) úspešne vypnutý.';
$messages['moved'] = 'Filter presunutý.';
+$messages['moveerror'] = 'Nemožno presunúť vybraný filter. Nastala chyba servera.';
$messages['nametoolong'] = 'Názov sady filtrov je príliš dlhý';
$messages['namereserved'] = 'Rezervovaný názov.';
$messages['setexist'] = 'Množina už existuje.';
diff --git a/plugins/managesieve/localization/sl_SI.inc b/plugins/managesieve/localization/sl_SI.inc
index c776a337a..2915684d3 100644
--- a/plugins/managesieve/localization/sl_SI.inc
+++ b/plugins/managesieve/localization/sl_SI.inc
@@ -54,6 +54,7 @@ $labels['add'] = 'Dodaj';
$labels['del'] = 'Izbriši';
$labels['sender'] = 'Pošiljatelj';
$labels['recipient'] = 'Prejemnik';
+$labels['vacationaddr'] = 'Moji dodatni e-naslovi';
$labels['vacationdays'] = 'Kako pogosto naj bodo sporočila poslana (v dnevih):';
$labels['vacationinterval'] = 'Sporočila pošlji na:';
$labels['days'] = 'dni';
@@ -158,22 +159,31 @@ $labels['index'] = 'indeks:';
$labels['indexlast'] = 'obraten vrstni red';
$messages['filterunknownerror'] = 'Prišlo je do neznane napake.';
$messages['filterconnerror'] = 'Povezave s strežnikom (managesieve) ni bilo mogoče vzpostaviti';
+$messages['filterdeleteerror'] = 'Pravila ni bilo mogoče izbrisati. Prišlo je do napake.';
$messages['filterdeleted'] = 'Pravilo je bilo uspešno izbrisano.';
$messages['filtersaved'] = 'Pravilo je bilo uspešno shranjeno';
+$messages['filtersaveerror'] = 'Pravila ni bilo mogoče shraniti. Prišlo je do napake.';
$messages['filterdeleteconfirm'] = 'Ste prepričani, da želite izbrisati izbrano pravilo?';
$messages['ruledeleteconfirm'] = 'Ste prepričani, da želite izbrisati izbrano pravilo?';
$messages['actiondeleteconfirm'] = 'Ste prepričani, da želite izbrisati izbrano dejanje?';
$messages['forbiddenchars'] = 'V polju so neveljavni znaki';
$messages['cannotbeempty'] = 'Polje ne sme biti prazno';
$messages['ruleexist'] = 'Filer s tem imenom že obstaja';
+$messages['setactivateerror'] = 'Izbranih filtrov ni bilo mogoče vključiti. Prišlo je do napake na strežniku.';
+$messages['setdeactivateerror'] = 'Izbranih filtrov ni bilo mogoče izključiti. Prišlo je do napake na strežniku.';
+$messages['setdeleteerror'] = 'Izbranih filtrov ni bilo mogoče izbrisati. Prišlo je do napake na strežniku.';
$messages['setactivated'] = 'Filter je bil uspešno vključen.';
$messages['setdeactivated'] = 'Filter je bil uspešno onemogočen.';
$messages['setdeleted'] = 'Filter je bil uspešno izbrisan.';
$messages['setdeleteconfirm'] = 'Ste prepričani, da želite izbrisati ta filter?';
+$messages['setcreateerror'] = 'Nabora filtrov ni bilo mogoče ustvariti. Prišlo je do napake na strežniku.';
$messages['setcreated'] = 'Filter je bil uspešno ustvarjen.';
+$messages['activateerror'] = 'Izbranega/ih filtra/ov ni bilo mogoče vključiti. Prišlo je do napake na strežniku.';
+$messages['deactivateerror'] = 'Izbranega/ih fitra/ov ni bilo mogoče izključiti. Prišlo je do napake na strežniku.';
$messages['deactivated'] = 'Filtri so bili uspešno omogočeni.';
$messages['activated'] = 'Filtri so bili uspešno onemogočeni.';
$messages['moved'] = 'Filter je bil uspešno premaknjen.';
+$messages['moveerror'] = 'Izbranega filtra ni bilo mogoče premakniti. Prišlo je do napake na strežniku.';
$messages['nametoolong'] = 'Ime je predolgo.';
$messages['namereserved'] = 'Rezervirano ime.';
$messages['setexist'] = 'Nastavitev filtra že obstaja.';
diff --git a/plugins/managesieve/localization/sv_SE.inc b/plugins/managesieve/localization/sv_SE.inc
index 5d855bd09..63f88aeba 100644
--- a/plugins/managesieve/localization/sv_SE.inc
+++ b/plugins/managesieve/localization/sv_SE.inc
@@ -159,22 +159,31 @@ $labels['index'] = 'index:';
$labels['indexlast'] = 'omvänd';
$messages['filterunknownerror'] = 'Okänt serverfel';
$messages['filterconnerror'] = 'Anslutning till serverns filtertjänst misslyckades';
+$messages['filterdeleteerror'] = 'Filtret kunde inte tas bort på grund av serverfel';
$messages['filterdeleted'] = 'Filtret är borttaget';
$messages['filtersaved'] = 'Filtret har sparats';
+$messages['filtersaveerror'] = 'Filtret kunde inte sparas på grund av serverfel';
$messages['filterdeleteconfirm'] = 'Vill du ta bort det markerade filtret?';
$messages['ruledeleteconfirm'] = 'Vill du ta bort filterregeln?';
$messages['actiondeleteconfirm'] = 'Vill du ta bort filteråtgärden?';
$messages['forbiddenchars'] = 'Otillåtet tecken i fältet';
$messages['cannotbeempty'] = 'Fältet kan inte lämnas tomt';
$messages['ruleexist'] = 'Ett filter med angivet namn finns redan.';
+$messages['setactivateerror'] = 'Filtergruppen kunde inte aktiveras på grund av serverfel';
+$messages['setdeactivateerror'] = 'Filtergruppen kunde inte deaktiveras på grund av serverfel';
+$messages['setdeleteerror'] = 'Filtergruppen kunde inte tas bort på grund av serverfel';
$messages['setactivated'] = 'Filtergruppen är aktiverad';
$messages['setdeactivated'] = 'Filtergruppen är deaktiverad';
$messages['setdeleted'] = 'Filtergruppen är borttagen';
$messages['setdeleteconfirm'] = 'Vill du ta bort filtergruppen?';
+$messages['setcreateerror'] = 'Filtergruppen kunde inte läggas till på grund av serverfel';
$messages['setcreated'] = 'Filtergruppen har lagts till';
+$messages['activateerror'] = 'Kunde inte aktivera filter på grund av serverfel.';
+$messages['deactivateerror'] = 'Kunde inte deaktivera filter på grund av serverfel.';
$messages['deactivated'] = 'Filter aktiverat.';
$messages['activated'] = 'Filter deaktiverat.';
$messages['moved'] = 'Filter flyttat.';
+$messages['moveerror'] = 'Kunde inte flytta filter på grund av serverfel.';
$messages['nametoolong'] = 'Filtergruppen kan inte läggas till med för långt namn';
$messages['namereserved'] = 'Reserverat namn.';
$messages['setexist'] = 'Filtergrupp finns redan.';
diff --git a/plugins/managesieve/localization/tr_TR.inc b/plugins/managesieve/localization/tr_TR.inc
index 98db751fc..b0b09e18a 100644
--- a/plugins/managesieve/localization/tr_TR.inc
+++ b/plugins/managesieve/localization/tr_TR.inc
@@ -159,22 +159,31 @@ $labels['index'] = 'indeks:';
$labels['indexlast'] = 'geriye yönelik';
$messages['filterunknownerror'] = 'Bilinmeyen sunucu hatası.';
$messages['filterconnerror'] = 'Sunucuya bağlanamıyor.';
+$messages['filterdeleteerror'] = 'Filtre silinemedi. Sunucuda hata oluştu.';
$messages['filterdeleted'] = 'Filtre başarıyla silindi.';
$messages['filtersaved'] = 'Filter başarıyla kaydedildi.';
+$messages['filtersaveerror'] = 'Filtre kaydedilemedi. Sunucuda hata oluştu.';
$messages['filterdeleteconfirm'] = 'Seçilen filtreleri gerçekten silmek istiyor musun?';
$messages['ruledeleteconfirm'] = 'Seçili kuralları silmek istediğinizden emin misiniz?';
$messages['actiondeleteconfirm'] = 'Seçili aksiyonları silmek istediğinizden emin misiniz?';
$messages['forbiddenchars'] = 'Alanda izin verilmeyen karakterler var.';
$messages['cannotbeempty'] = 'Alan boş olmaz';
$messages['ruleexist'] = 'Belirtilen isimde bir filtre zaten var.';
+$messages['setactivateerror'] = 'Seçilen filtreler etkinleştirilemedi. Sunucuda hata oluştu.';
+$messages['setdeactivateerror'] = 'Seçilen filtreler pasifleştirilemedi. Sunucuda hata oluştu.';
+$messages['setdeleteerror'] = 'Seçilen filtreler silinemedi. Sunucuda hata oluştu.';
$messages['setactivated'] = 'Filtreler başarıyla etkinleştirilemedi.';
$messages['setdeactivated'] = 'Filtreler başarıyla pasifleştirildi.';
$messages['setdeleted'] = 'Filtre seti başarıyla silindi.';
$messages['setdeleteconfirm'] = 'Seçilen filtre setlerini silmek istediğinizden emin misiniz?';
+$messages['setcreateerror'] = 'Filtre setleri oluşturulamadı. Sunucuda hata oluştu.';
$messages['setcreated'] = 'Filtre setleri başarıyla oluşturuldu.';
+$messages['activateerror'] = 'Seçilen filtre(ler) etkinleştirilemedi. Sunucuda hata oluştu.';
+$messages['deactivateerror'] = 'Seçilen filtre(ler) pasifleştirilemedi. Sunucuda hata oluştu.';
$messages['deactivated'] = 'Filtre(ler) başarıyla etkinleştirildi.';
$messages['activated'] = 'Filtre(ler) başarıyla iptal edildi.';
$messages['moved'] = 'Filtre başarıyla taşındı.';
+$messages['moveerror'] = 'Seçilen filtre taşınamadı. Sunucuda hata oluştu.';
$messages['nametoolong'] = 'İsim çok uzun.';
$messages['namereserved'] = 'rezerve edilmiş isim.';
$messages['setexist'] = 'Set zaten var.';
diff --git a/plugins/newmail_notifier/localization/ca_ES.inc b/plugins/newmail_notifier/localization/ca_ES.inc
index bb510ae26..1ae40d158 100644
--- a/plugins/newmail_notifier/localization/ca_ES.inc
+++ b/plugins/newmail_notifier/localization/ca_ES.inc
@@ -24,4 +24,5 @@ $labels['body'] = 'Heu rebut un missatge nou.';
$labels['testbody'] = 'Això és una notificació de prova.';
$labels['desktopdisabled'] = 'Les notificacions d\'escriptori estan deshabilitades al vostre navegador.';
$labels['desktopunsupported'] = 'El vostre navegador no permet les notificacions d\'escriptori.';
+$labels['desktoptimeout'] = 'Tancar notificació de l\'escriptori';
?>
diff --git a/plugins/newmail_notifier/localization/da_DK.inc b/plugins/newmail_notifier/localization/da_DK.inc
index 26e4e6a7b..356076f71 100644
--- a/plugins/newmail_notifier/localization/da_DK.inc
+++ b/plugins/newmail_notifier/localization/da_DK.inc
@@ -24,4 +24,5 @@ $labels['body'] = 'Du har modtaget en ny besked.';
$labels['testbody'] = 'Dette er en test meddelelse.';
$labels['desktopdisabled'] = 'Skrivebordsbeskeder er deaktiveret i din browser.';
$labels['desktopunsupported'] = 'Din browser understøtter ikke skrivebordsbeskeder.';
+$labels['desktoptimeout'] = 'Luk skrivebordsbesked';
?>
diff --git a/plugins/newmail_notifier/localization/fa_IR.inc b/plugins/newmail_notifier/localization/fa_IR.inc
index af58aeed2..2c7980640 100644
--- a/plugins/newmail_notifier/localization/fa_IR.inc
+++ b/plugins/newmail_notifier/localization/fa_IR.inc
@@ -24,4 +24,5 @@ $labels['body'] = 'شما یک پیغام جدید دریافت کرده‌ای
$labels['testbody'] = 'این یک تذکر آزمایشی است.';
$labels['desktopdisabled'] = 'تذکرهای رومیزی در مرورگر شما غیرفعال شده‌اند.';
$labels['desktopunsupported'] = 'مرورگر شما تذکرهای رومیزی را پشتیبانی نمی‌کند.';
+$labels['desktoptimeout'] = 'بستن تذکر دسکتاپ';
?>
diff --git a/plugins/newmail_notifier/localization/lv_LV.inc b/plugins/newmail_notifier/localization/lv_LV.inc
index 60d951e5e..4ca083598 100644
--- a/plugins/newmail_notifier/localization/lv_LV.inc
+++ b/plugins/newmail_notifier/localization/lv_LV.inc
@@ -24,4 +24,5 @@ $labels['body'] = 'Jūs esat saņēmis jaunu vēstuli.';
$labels['testbody'] = 'Šis ir testa paziņojums.';
$labels['desktopdisabled'] = 'Darbavirsmas paziņojumi Jūsu pārlūkprogrammā ir atslēgti.';
$labels['desktopunsupported'] = 'Jūsu pārlūkprogramma neatbalsta darbavirsmas paziņojumus.';
+$labels['desktoptimeout'] = 'Aizvērt darbavirsmas paziņojumu';
?>
diff --git a/plugins/newmail_notifier/localization/sl_SI.inc b/plugins/newmail_notifier/localization/sl_SI.inc
index 32f36f7d9..a95fde055 100644
--- a/plugins/newmail_notifier/localization/sl_SI.inc
+++ b/plugins/newmail_notifier/localization/sl_SI.inc
@@ -24,4 +24,5 @@ $labels['body'] = 'Prejeli ste novo sporočilo.';
$labels['testbody'] = 'To je testno obvestilo.';
$labels['desktopdisabled'] = 'Obvestila na namizju so v vašem brskalniku onemogočena.';
$labels['desktopunsupported'] = 'Vaš brskalnik ne podpira izpis obvestil na namizju.';
+$labels['desktoptimeout'] = 'Zapri obvestila na namizju';
?>
diff --git a/plugins/password/drivers/domainfactory.php b/plugins/password/drivers/domainfactory.php
index 7f6b8860e..9128720c9 100644
--- a/plugins/password/drivers/domainfactory.php
+++ b/plugins/password/drivers/domainfactory.php
@@ -4,9 +4,9 @@
* domainFACTORY Password Driver
*
* Driver to change passwords with the hosting provider domainFACTORY.
- * See: http://www.df.eu/
+ * http://www.df.eu/
*
- * @version 2.0
+ * @version 2.1
* @author Till Krüss <me@tillkruess.com>
* @link http://tillkruess.com/projects/roundcube/
*
@@ -14,57 +14,76 @@
class rcube_domainfactory_password
{
- function save($curpass, $passwd)
- {
- $rcmail = rcmail::get_instance();
+ function save($curpass, $passwd)
+ {
+ $rcmail = rcmail::get_instance();
- if (is_null($curpass)) {
- $curpass = $rcmail->decrypt($_SESSION['password']);
- }
+ if (is_null($curpass)) {
+ $curpass = $rcmail->decrypt($_SESSION['password']);
+ }
- if ($ch = curl_init()) {
- // initial login
- curl_setopt_array($ch, array(
- CURLOPT_RETURNTRANSFER => true,
- CURLOPT_URL => 'https://ssl.df.eu/chmail.php',
- CURLOPT_POST => true,
- CURLOPT_POSTFIELDS => array(
- 'login' => $rcmail->user->get_username(),
- 'pwd' => $curpass,
- 'action' => 'change'
- )
- ));
+ if ($ch = curl_init()) {
- if ($result = curl_exec($ch)) {
- // login successful, get token!
- $postfields = array(
- 'pwd1' => $passwd,
- 'pwd2' => $passwd,
- 'action[update]' => 'Speichern'
- );
+ // initial login
+ curl_setopt_array($ch, array(
+ CURLOPT_RETURNTRANSFER => true,
+ CURLOPT_URL => 'https://ssl.df.eu/chmail.php',
+ CURLOPT_POST => true,
+ CURLOPT_POSTFIELDS => array(
+ 'login' => $rcmail->user->get_username(),
+ 'pwd' => $curpass,
+ 'action' => 'change'
+ )
+ ));
- preg_match_all('~<input name="(.+?)" type="hidden" value="(.+?)">~i', $result, $fields);
- foreach ($fields[1] as $field_key => $field_name) {
- $postfields[$field_name] = $fields[2][$field_key];
- }
+ if ($result = curl_exec($ch)) {
+ // login successful, get token!
+ $postfields = array(
+ 'pwd1' => $passwd,
+ 'pwd2' => $passwd,
+ 'action[update]' => 'Speichern'
+ );
- // change password
- $ch = curl_copy_handle($ch);
- curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
- if ($result = curl_exec($ch)) {
- if (strpos($result, 'Einstellungen erfolgreich') !== false) {
- return PASSWORD_SUCCESS;
- }
- } else {
- return PASSWORD_CONNECT_ERROR;
- }
- } else {
- return PASSWORD_CONNECT_ERROR;
- }
- } else {
- return PASSWORD_CONNECT_ERROR;
- }
+ preg_match_all('~<input name="(.+?)" type="hidden" value="(.+?)">~i', $result, $fields);
+ foreach ($fields[1] as $field_key => $field_name) {
+ $postfields[$field_name] = $fields[2][$field_key];
+ }
- return PASSWORD_ERROR;
- }
+ // change password
+ $ch = curl_copy_handle($ch);
+ curl_setopt($ch, CURLOPT_POSTFIELDS, $postfields);
+ if ($result = curl_exec($ch)) {
+
+ // has the password been changed?
+ if (strpos($result, 'Einstellungen erfolgreich') !== false) {
+ return PASSWORD_SUCCESS;
+ }
+
+ // show error message(s) if possible
+ if (strpos($result, '<div class="d-msg-text">') !== false) {
+ preg_match_all('#<div class="d-msg-text">(.*?)</div>#s', $result, $errors);
+ if (isset($errors[1])) {
+ $error_message = '';
+ foreach ( $errors[1] as $error ) {
+ $error_message .= trim(mb_convert_encoding( $error, 'UTF-8', 'ISO-8859-15' )).' ';
+ }
+ return array('code' => PASSWORD_ERROR, 'message' => $error_message);
+ }
+ }
+
+
+ } else {
+ return PASSWORD_CONNECT_ERROR;
+ }
+
+ } else {
+ return PASSWORD_CONNECT_ERROR;
+ }
+
+ } else {
+ return PASSWORD_CONNECT_ERROR;
+ }
+
+ return PASSWORD_ERROR;
+ }
}
diff --git a/program/include/rcmail_output_html.php b/program/include/rcmail_output_html.php
index 0c95fbc0e..8a960673d 100644
--- a/program/include/rcmail_output_html.php
+++ b/program/include/rcmail_output_html.php
@@ -1165,7 +1165,7 @@ class rcmail_output_html extends rcmail_output
}
else if ($attrib['type'] == 'link') {
$btn_content = isset($attrib['content']) ? $attrib['content'] : ($attrib['label'] ? $attrib['label'] : $attrib['command']);
- $link_attrib = array('href', 'onclick', 'title', 'id', 'class', 'style', 'tabindex', 'target');
+ $link_attrib = array_merge(html::$common_attrib, array('href', 'onclick', 'tabindex', 'target'));
if ($attrib['innerclass'])
$btn_content = html::span($attrib['innerclass'], $btn_content);
}
@@ -1184,7 +1184,7 @@ class rcmail_output_html extends rcmail_output
// generate html code for button
if ($btn_content) {
- $attrib_str = html::attrib_string($attrib, array_merge(html::$common_attrib, $link_attrib));
+ $attrib_str = html::attrib_string($attrib, $link_attrib);
$out = sprintf('<a%s>%s</a>', $attrib_str, $btn_content);
}
diff --git a/program/js/app.js b/program/js/app.js
index bfae977b9..f7fd7cea0 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -218,12 +218,8 @@ function rcube_webmail()
// load messages
this.command('list');
- }
- if (this.gui_objects.qsearchbox) {
- if (this.env.search_text != null)
- this.gui_objects.qsearchbox.value = this.env.search_text;
- $(this.gui_objects.qsearchbox).focusin(function() { rcmail.message_list && rcmail.message_list.blur(); });
+ $(this.gui_objects.qsearchbox).val(this.env.search_text).focusin(function() { rcmail.message_list.blur(); });
}
this.set_button_titles();
@@ -285,10 +281,10 @@ function rcube_webmail()
return rcube_event.cancel(e);
});
- // avoid textarea loosing focus when hitting the save-response button/link
- for (var i=0; this.buttons['save-response'] && i < this.buttons['save-response'].length; i++) {
- $('#'+this.buttons['save-response'][i].id).mousedown(function(e){ return rcube_event.cancel(e); })
- }
+ // avoid textarea loosing focus when hitting the save-response button/link
+ for (var i=0; this.buttons['save-response'] && i < this.buttons['save-response'].length; i++) {
+ $('#'+this.buttons['save-response'][i].id).mousedown(function(e){ return rcube_event.cancel(e); })
+ }
}
document.onmouseup = function(e){ return p.doc_mouse_up(e); };
@@ -351,7 +347,7 @@ function rcube_webmail()
this.env.contactfolders = $.extend($.extend({}, this.env.address_sources), this.env.contactgroups);
this.enable_command('add', 'import', this.env.writable_source);
- this.enable_command('list', 'listgroup', 'pushgroup', 'popgroup', 'listsearch', 'advanced-search', true);
+ this.enable_command('list', 'listgroup', 'pushgroup', 'popgroup', 'listsearch', 'search', 'reset-search', 'advanced-search', true);
if (this.gui_objects.contactslist) {
this.contact_list = new rcube_list_widget(this.gui_objects.contactslist,
@@ -369,8 +365,8 @@ function rcube_webmail()
this.gui_objects.contactslist.parentNode.onmousedown = function(e){ return p.click_on_list(e); };
document.onmouseup = function(e){ return p.doc_mouse_up(e); };
- if (this.gui_objects.qsearchbox)
- $(this.gui_objects.qsearchbox).focusin(function() { rcmail.contact_list.blur(); });
+
+ $(this.gui_objects.qsearchbox).focusin(function() { rcmail.contact_list.blur(); });
this.update_group_commands();
this.command('list');
@@ -394,9 +390,6 @@ function rcube_webmail()
this.init_contact_form();
}
- if (this.gui_objects.qsearchbox)
- this.enable_command('search', 'reset-search', true);
-
break;
case 'settings':
@@ -408,9 +401,6 @@ function rcube_webmail()
else if (this.env.action == 'edit-identity' || this.env.action == 'add-identity') {
this.enable_command('save', 'edit', 'toggle-editor', true);
this.enable_command('delete', this.env.identities_level < 2);
-
- if (this.env.action == 'add-identity')
- $("input[type='text']").first().select();
}
else if (this.env.action == 'folders') {
this.enable_command('subscribe', 'unsubscribe', 'create-folder', 'rename-folder', true);
@@ -419,7 +409,6 @@ function rcube_webmail()
this.enable_command('save', 'folder-size', true);
parent.rcmail.env.exists = this.env.messagecount;
parent.rcmail.enable_command('purge', this.env.messagecount);
- $("input[type='text']").first().select();
}
else if (this.env.action == 'responses') {
this.enable_command('add', true);
@@ -445,7 +434,7 @@ function rcube_webmail()
}
else if (this.gui_objects.responseslist) {
this.responses_list = new rcube_list_widget(this.gui_objects.responseslist, {multiselect:false, draggable:false, keyboard:false});
- this.responses_list.addEventListener('select', function(list){
+ this.responses_list.addEventListener('select', function(list) {
var win, id = list.get_single_selection();
p.enable_command('delete', !!id && $.inArray(id, p.env.readonly_responses) < 0);
if (id && (win = p.get_frame_window(p.env.contentframe))) {
@@ -489,6 +478,11 @@ function rcube_webmail()
break;
}
+ // select first input field in an edit form
+ if (this.gui_objects.editform)
+ $("input,select,textarea", this.gui_objects.editform)
+ .not(':hidden').not(':disabled').first().select();
+
// unset contentframe variable if preview_pane is enabled
if (this.env.contentframe && !$('#' + this.env.contentframe).is(':visible'))
this.env.contentframe = null;
@@ -1065,7 +1059,7 @@ function rcube_webmail()
url = {_reply_uid: uid, _mbox: this.env.mailbox};
if (command == 'reply-all')
// do reply-list, when list is detected and popup menu wasn't used
- url._all = (!props && this.commands['reply-list'] ? 'list' : 'all');
+ url._all = (!props && this.env.reply_all_mode == 1 && this.commands['reply-list'] ? 'list' : 'all');
else if (command == 'reply-list')
url._all = 'list';
@@ -1474,7 +1468,7 @@ function rcube_webmail()
// select the folder if one of its childs is currently selected
// don't select if it's virtual (#1488346)
- if (this.env.mailbox && this.env.mailbox.indexOf(name + this.env.delimiter) == 0 && !node.virtual)
+ if (this.env.mailbox && this.env.mailbox.startsWith(name + this.env.delimiter) && !node.virtual)
this.command('list', name);
}
else {
@@ -1655,8 +1649,8 @@ function rcube_webmail()
this.env.coltypes = [];
for (i=0; i<cols.length; i++)
- if (cols[i].id && cols[i].id.match(/^rcm/)) {
- name = cols[i].id.replace(/^rcm/, '');
+ if (cols[i].id && cols[i].id.startsWith('rcm')) {
+ name = cols[i].id.slice(3);
this.env.coltypes.push(name);
}
@@ -2062,12 +2056,14 @@ function rcube_webmail()
if (name && (frame = this.get_frame_element(name))) {
if (!show && (win = this.get_frame_window(name))) {
- if (win.stop)
- win.stop();
- else // IE
- win.document.execCommand('Stop');
+ if (win.location.href.indexOf(this.env.blankpage) < 0) {
+ if (win.stop)
+ win.stop();
+ else // IE
+ win.document.execCommand('Stop');
- win.location.href = this.env.blankpage;
+ win.location.href = this.env.blankpage;
+ }
}
else if (!bw.safari && !bw.konq)
$(frame)[show ? 'show' : 'hide']();
@@ -2742,9 +2738,6 @@ function rcube_webmail()
}
}
- if (this.env.display_next && this.env.next_uid)
- post_data._next_uid = this.env.next_uid;
-
if (count < 0)
post_data._count = (count*-1);
// remove threads from the end of the list
@@ -2780,6 +2773,9 @@ function rcube_webmail()
if (this.env.search_request)
data._search = this.env.search_request;
+ if (this.env.display_next && this.env.next_uid)
+ data._next_uid = this.env.next_uid;
+
return data;
};
@@ -3030,9 +3026,12 @@ function rcube_webmail()
// test if purge command is allowed
this.purge_mailbox_test = function()
{
- return (this.env.exists && (this.env.mailbox == this.env.trash_mailbox || this.env.mailbox == this.env.junk_mailbox
- || this.env.mailbox.match('^' + RegExp.escape(this.env.trash_mailbox) + RegExp.escape(this.env.delimiter))
- || this.env.mailbox.match('^' + RegExp.escape(this.env.junk_mailbox) + RegExp.escape(this.env.delimiter))));
+ return (this.env.exists && (
+ this.env.mailbox == this.env.trash_mailbox
+ || this.env.mailbox == this.env.junk_mailbox
+ || this.env.mailbox.startsWith(this.env.trash_mailbox + this.env.delimiter)
+ || this.env.mailbox.startsWith(this.env.junk_mailbox + this.env.delimiter)
+ ));
};
@@ -4177,7 +4176,7 @@ function rcube_webmail()
return;
// ...new search value contains old one and previous search was not finished or its result was empty
- if (old_value && old_value.length && q.indexOf(old_value) == 0 && (!ac || ac.num <= 0) && this.env.contacts && !this.env.contacts.length)
+ if (old_value && old_value.length && q.startsWith(old_value) && (!ac || ac.num <= 0) && this.env.contacts && !this.env.contacts.length)
return;
var i, lock, source, xhr, reqid = new Date().getTime(),
@@ -4815,8 +4814,6 @@ function rcube_webmail()
$('input.datepicker').datepicker();
}
- $("input[type='text']:visible").first().focus();
-
// Submit search form on Enter
if (this.env.action == 'search')
$(this.gui_objects.editform).append($('<input type="submit">').hide())
@@ -5433,7 +5430,10 @@ function rcube_webmail()
this.init_subscription_list = function()
{
- var p = this;
+ var p = this, delim = RegExp.escape(this.env.delimiter);
+
+ this.last_sub_rx = RegExp('['+delim+']?[^'+delim+']+$');
+
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); });
@@ -5444,6 +5444,7 @@ function rcube_webmail()
row.obj.onmouseout = function() { p.unfocus_subscription(row.id); };
};
this.subscription_list.init();
+
$('#mailboxroot')
.mouseover(function(){ p.focus_subscription(this.id); })
.mouseout(function(){ p.unfocus_subscription(this.id); })
@@ -5451,9 +5452,7 @@ function rcube_webmail()
this.focus_subscription = function(id)
{
- var row, folder,
- delim = RegExp.escape(this.env.delimiter),
- reg = RegExp('['+delim+']?[^'+delim+']+$');
+ var row, folder;
if (this.drag_active && this.env.mailbox && (row = document.getElementById(id)))
if (this.env.subscriptionrows[id] &&
@@ -5461,8 +5460,8 @@ function rcube_webmail()
) {
if (this.check_droptarget(folder) &&
!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))))
+ folder != this.env.mailbox.replace(this.last_sub_rx, '') &&
+ !folder.startsWith(this.env.mailbox + this.env.delimiter)
) {
this.env.dstfolder = folder;
$(row).addClass('droptarget');
@@ -5475,7 +5474,8 @@ function rcube_webmail()
var row = $('#'+id);
this.env.dstfolder = null;
- if (this.env.subscriptionrows[id] && row[0])
+
+ if (this.env.subscriptionrows[id] && row.length)
row.removeClass('droptarget');
else
$(this.subscription_list.frame).removeClass('droptarget');
@@ -5501,21 +5501,20 @@ function rcube_webmail()
this.subscription_move_folder = function(list)
{
- var delim = RegExp.escape(this.env.delimiter),
- reg = RegExp('['+delim+']?[^'+delim+']+$');
-
- if (this.env.mailbox && this.env.dstfolder !== null && (this.env.dstfolder != this.env.mailbox) &&
- (this.env.dstfolder != this.env.mailbox.replace(reg, ''))
+ if (this.env.mailbox && this.env.dstfolder !== null &&
+ this.env.dstfolder != this.env.mailbox &&
+ this.env.dstfolder != this.env.mailbox.replace(this.last_sub_rx, '')
) {
- reg = new RegExp('[^'+delim+']*['+delim+']', 'g');
- var basename = this.env.mailbox.replace(reg, ''),
- newname = this.env.dstfolder === '' ? basename : this.env.dstfolder+this.env.delimiter+basename;
+ var path = this.env.mailbox.split(this.env.delimiter),
+ basename = path.pop(),
+ newname = this.env.dstfolder === '' ? basename : this.env.dstfolder + this.env.delimiter + basename;
if (newname != this.env.mailbox) {
this.http_post('rename-folder', {_folder_oldname: this.env.mailbox, _folder_newname: newname}, this.set_busy(true, 'foldermoving'));
this.subscription_list.draglayer.hide();
}
}
+
this.drag_active = false;
this.unfocus_subscription(this.get_folder_row_id(this.env.dstfolder));
};
@@ -5588,7 +5587,7 @@ function rcube_webmail()
tmp = tmp_name;
}
// protected folder's child
- else if (tmp && folders[n][0].indexOf(tmp) == 0)
+ else if (tmp && folders[n][0].startsWith(tmp))
slist.push(folders[n][0]);
// other
else {
@@ -5599,7 +5598,7 @@ function rcube_webmail()
// check if subfolder of a protected folder
for (n=0; n<slist.length; n++) {
- if (name.indexOf(slist[n]+this.env.delimiter) == 0)
+ if (name.startsWith(slist[n] + this.env.delimiter))
rowid = this.get_folder_row_id(slist[n]);
}
@@ -5637,7 +5636,7 @@ function rcube_webmail()
tbody = this.gui_objects.subscriptionlist.tBodies[0],
folders = this.env.subscriptionrows,
id = this.get_folder_row_id(oldfolder),
- regex = new RegExp('^'+RegExp.escape(oldfolder)),
+ prefix_len = oldfolder.length,
subscribed = $('input[name="_subscribed[]"]', $('#'+id)).prop('checked'),
// find subfolders of renamed folder
list = this.get_subfolders(oldfolder);
@@ -5662,7 +5661,7 @@ function rcube_webmail()
row.after(tmprow);
row = tmprow;
// update folder index
- name = name.replace(regex, newfolder);
+ name = newfolder + name.slice(prefix_len);
$('input[name="_subscribed[]"]', row).val(name);
this.env.subscriptionrows[id][0] = name;
// update the name if level is changed
@@ -5711,13 +5710,13 @@ function rcube_webmail()
this.get_subfolders = function(folder)
{
var name, list = [],
- regex = new RegExp('^'+RegExp.escape(folder)+RegExp.escape(this.env.delimiter)),
+ prefix = folder + this.env.delimiter,
row = $('#'+this.get_folder_row_id(folder)).get(0);
while (row = row.nextSibling) {
if (row.id) {
name = this.env.subscriptionrows[row.id][0];
- if (regex.test(name)) {
+ if (name && name.startsWith(prefix)) {
list.push(row.id);
}
else
@@ -5907,59 +5906,36 @@ function rcube_webmail()
// mouse over button
this.button_over = function(command, id)
{
- var n, button, obj, a_buttons = this.buttons[command],
- len = a_buttons ? a_buttons.length : 0;
-
- for (n=0; n<len; n++) {
- button = a_buttons[n];
- if (button.id == id && button.status == 'act') {
- obj = document.getElementById(button.id);
- if (obj && button.over) {
- if (button.type == 'image')
- obj.src = button.over;
- else
- obj.className = button.over;
- }
- }
- }
+ this.button_event(command, id, 'over');
};
// mouse down on button
this.button_sel = function(command, id)
{
- var n, button, obj, a_buttons = this.buttons[command],
- len = a_buttons ? a_buttons.length : 0;
-
- for (n=0; n<len; n++) {
- button = a_buttons[n];
- if (button.id == id && button.status == 'act') {
- obj = document.getElementById(button.id);
- if (obj && button.sel) {
- if (button.type == 'image')
- obj.src = button.sel;
- else
- obj.className = button.sel;
- }
- this.buttons_sel[id] = command;
- }
- }
+ this.button_event(command, id, 'sel');
};
// mouse out of button
this.button_out = function(command, id)
{
+ this.button_event(command, id, 'act');
+ };
+
+ // event of button
+ this.button_event = function(command, id, event)
+ {
var n, button, obj, a_buttons = this.buttons[command],
len = a_buttons ? a_buttons.length : 0;
for (n=0; n<len; n++) {
button = a_buttons[n];
if (button.id == id && button.status == 'act') {
- obj = document.getElementById(button.id);
- if (obj && button.act) {
- if (button.type == 'image')
- obj.src = button.act;
- else
- obj.className = button.act;
+ if (button[event] && (obj = document.getElementById(button.id))) {
+ obj[button.type == 'image' ? 'src' : 'className'] = button[event];
+ }
+
+ if (event == 'sel') {
+ this.buttons_sel[id] = command;
}
}
}
@@ -6147,8 +6123,8 @@ function rcube_webmail()
// enable/disable buttons for page shifting
this.set_page_buttons = function()
{
- this.enable_command('nextpage', 'lastpage', (this.env.pagecount > this.env.current_page));
- this.enable_command('previouspage', 'firstpage', (this.env.current_page > 1));
+ this.enable_command('nextpage', 'lastpage', this.env.pagecount > this.env.current_page);
+ this.enable_command('previouspage', 'firstpage', this.env.current_page > 1);
};
// mark a mailbox as selected and set environment variable
@@ -6158,14 +6134,10 @@ function rcube_webmail()
this.treelist.select(name);
}
else if (this.gui_objects.folderlist) {
- var current_li, target_li;
-
- if ((current_li = $('li.selected', this.gui_objects.folderlist))) {
- current_li.removeClass('selected').addClass('unfocused');
- }
- if ((target_li = this.get_folder_li(name, prefix, encode))) {
- $(target_li).removeClass('unfocused').addClass('selected');
- }
+ $('li.selected', this.gui_objects.folderlist)
+ .removeClass('selected').addClass('unfocused');
+ $(this.get_folder_li(name, prefix, encode))
+ .removeClass('unfocused').addClass('selected');
// trigger event hook
this.triggerEvent('selectfolder', { folder:name, prefix:prefix });
@@ -6194,8 +6166,6 @@ function rcube_webmail()
name = this.html_identifier(name, encode);
return document.getElementById(prefix+name);
}
-
- return null;
};
// for reordering column array (Konqueror workaround)
@@ -6320,7 +6290,7 @@ function rcube_webmail()
div.className.match(/collapsed/)) {
// add children's counters
for (var k in this.env.unread_counts)
- if (k.indexOf(mbox + this.env.delimiter) == 0)
+ if (k.startsWith(mbox + this.env.delimiter))
childcount += this.env.unread_counts[k];
}
diff --git a/program/js/common.js b/program/js/common.js
index afaf91639..02934f734 100644
--- a/program/js/common.js
+++ b/program/js/common.js
@@ -592,6 +592,14 @@ Date.prototype.getStdTimezoneOffset = function()
return tzo;
}
+// define String's startsWith() method for old browsers
+if (!String.prototype.startsWith) {
+ String.prototype.startsWith = function(search, position) {
+ position = position || 0;
+ return this.slice(position, search.length) === search;
+ };
+}
+
// Make getElementById() case-sensitive on IE
if (bw.ie) {
document._getElementById = document.getElementById;
diff --git a/program/js/editor.js b/program/js/editor.js
index 6d7b9538a..020971d6e 100644
--- a/program/js/editor.js
+++ b/program/js/editor.js
@@ -161,8 +161,8 @@ function rcmail_editor_images()
for (i in files) {
att = files[i];
- if (att.complete && att.mimetype.indexOf('image/') == 0) {
- list.push([att.name, rcmail.env.comm_path+'&_action=display-attachment&_file='+i+'&_id='+rcmail.env.compose_id]);
+ if (att.complete && att.mimetype.startsWith('image/')) {
+ list.push([att.name, rcmail.env.comm_path+'&_id='+rcmail.env.compose_id+'&_action=display-attachment&_file='+i]);
}
}
diff --git a/program/js/list.js b/program/js/list.js
index 0b6f416e3..4af01e53a 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -31,6 +31,7 @@ function rcube_list_widget(list, p)
this.list = list ? list : null;
this.tagname = this.list ? this.list.nodeName.toLowerCase() : 'table';
+ this.id_regexp = /^rcmrow([a-z0-9\-_=\+\/]+)/i;
this.thead;
this.tbody;
this.fixed_header;
@@ -55,7 +56,6 @@ function rcube_list_widget(list, p)
this.column_fixed = null;
this.last_selected = 0;
this.shift_start = 0;
- this.in_selection_before = false;
this.focused = false;
this.drag_mouse_start = null;
this.dblclick_time = 500; // default value on MS Windows is 500
@@ -111,7 +111,7 @@ init: function()
init_row: function(row)
{
// make references in internal array and set event handlers
- if (row && String(row.id).match(/^rcmrow([a-z0-9\-_=\+\/]+)/i)) {
+ if (row && String(row.id).match(this.id_regexp)) {
var self = this,
uid = RegExp.$1;
row.uid = uid;
@@ -405,10 +405,7 @@ drag_column: function(e, col)
drag_row: function(e, id)
{
// don't do anything (another action processed before)
- var evtarget = rcube_event.get_target(e),
- tagname = evtarget.tagName.toLowerCase();
-
- if (evtarget && (tagname == 'input' || tagname == 'img' || (tagname != 'a' && evtarget.onclick)))
+ if (!this.is_event_target(e))
return true;
// accept right-clicks
@@ -420,12 +417,13 @@ drag_row: function(e, id)
// selects currently unselected row
if (!this.in_selection_before) {
var mod_key = rcube_event.get_modifier(e);
- this.select_row(id, mod_key, false);
+ this.select_row(id, mod_key, true);
}
if (this.draggable && this.selection.length && this.in_selection(id)) {
this.drag_start = true;
this.drag_mouse_start = rcube_event.get_mouse_pos(e);
+
rcube_event.add_listener({event:'mousemove', object:this, method:'drag_mouse_move'});
rcube_event.add_listener({event:'mouseup', object:this, method:'drag_mouse_up'});
if (bw.touch) {
@@ -446,19 +444,16 @@ drag_row: function(e, id)
*/
click_row: function(e, id)
{
- var now = new Date().getTime(),
- mod_key = rcube_event.get_modifier(e),
- evtarget = rcube_event.get_target(e),
- tagname = evtarget.tagName.toLowerCase();
-
- if ((evtarget && (tagname == 'input' || tagname == 'img')))
+ // don't do anything (another action processed before)
+ if (!this.is_event_target(e))
return true;
- var dblclicked = now - this.rows[id].clicked < this.dblclick_time;
+ var now = new Date().getTime(),
+ dblclicked = now - this.rows[id].clicked < this.dblclick_time;
- // selects/unselects currently selected row
- if (!this.drag_active && this.in_selection_before == id && !dblclicked)
- this.select_row(id, mod_key, true);
+ // unselects currently selected row
+ if (!this.drag_active && !dblclicked && this.in_selection_before == id)
+ this.select_row(id, rcube_event.get_modifier(e), true);
this.drag_start = false;
this.in_selection_before = false;
@@ -482,6 +477,18 @@ click_row: function(e, id)
},
+/**
+ * Check target of the current event
+ */
+is_event_target: function(e)
+{
+ var target = rcube_event.get_target(e),
+ tagname = target.tagName.toLowerCase();
+
+ return !(target && (tagname == 'input' || tagname == 'img' || (tagname != 'a' && target.onclick)));
+},
+
+
/*
* Returns thread root ID for specified row ID
*/
@@ -726,7 +733,7 @@ get_first_row: function()
var i, len, rows = this.tbody.childNodes;
for (i=0, len=rows.length-1; i<len; i++)
- if (rows[i].id && String(rows[i].id).match(/^rcmrow([a-z0-9\-_=\+\/]+)/i) && this.rows[RegExp.$1] != null)
+ if (rows[i].id && String(rows[i].id).match(this.id_regexp) && this.rows[RegExp.$1] != null)
return RegExp.$1;
}
@@ -739,7 +746,7 @@ get_last_row: function()
var i, rows = this.tbody.childNodes;
for (i=rows.length-1; i>=0; i--)
- if (rows[i].id && String(rows[i].id).match(/^rcmrow([a-z0-9\-_=\+\/]+)/i) && this.rows[RegExp.$1] != null)
+ if (rows[i].id && String(rows[i].id).match(this.id_regexp) && this.rows[RegExp.$1] != null)
return RegExp.$1;
}
@@ -769,6 +776,7 @@ get_cell: function(row, index)
select_row: function(id, mod_key, with_mouse)
{
var select_before = this.selection.join(',');
+
if (!this.multiselect)
mod_key = 0;
@@ -787,8 +795,10 @@ select_row: function(id, mod_key, with_mouse)
break;
case CONTROL_KEY:
- if (with_mouse)
+ if (with_mouse) {
+ this.shift_start = id;
this.highlight_row(id, true);
+ }
break;
case CONTROL_SHIFT_KEY:
@@ -799,6 +809,7 @@ select_row: function(id, mod_key, with_mouse)
this.highlight_row(id, false);
break;
}
+
this.multi_selecting = true;
}
@@ -856,14 +867,8 @@ select_first: function(mod_key)
{
var row = this.get_first_row();
if (row) {
- if (mod_key) {
- this.shift_select(row, mod_key);
- this.triggerEvent('select');
- this.scrollto(row);
- }
- else {
- this.select(row);
- }
+ this.select_row(row, mod_key, false);
+ this.scrollto(row);
}
},
@@ -875,14 +880,8 @@ select_last: function(mod_key)
{
var row = this.get_last_row();
if (row) {
- if (mod_key) {
- this.shift_select(row, mod_key);
- this.triggerEvent('select');
- this.scrollto(row);
- }
- else {
- this.select(row);
- }
+ this.select_row(row, mod_key, false);
+ this.scrollto(row);
}
},
@@ -912,7 +911,8 @@ shift_select: function(id, control)
from_rowIndex = this._rowIndex(this.rows[this.shift_start].obj),
to_rowIndex = this._rowIndex(to_row.obj);
- if (!to_row.expanded && to_row.has_children)
+ // if we're going down the list, and we hit a thread, and it's closed, select the whole thread
+ if (from_rowIndex < to_rowIndex && !to_row.expanded && to_row.has_children)
if (to_row = this.rows[(this.row_children(id)).pop()])
to_rowIndex = this._rowIndex(to_row.obj);
@@ -934,6 +934,7 @@ shift_select: function(id, control)
}
},
+
/**
* Helper method to emulate the rowIndex property of non-tr elements
*/
@@ -1134,10 +1135,13 @@ key_press: function(e)
// Stop propagation so that the browser doesn't scroll
rcube_event.cancel(e);
return this.use_arrow_key(keyCode, mod_key);
- case 61:
- case 107: // Plus sign on a numeric keypad (fc11 + firefox 3.5.2)
- case 109:
case 32:
+ rcube_event.cancel(e);
+ return this.select_row(this.last_selected, mod_key, true);
+ case 37: // Left arrow key
+ case 39: // Right arrow key
+ case 107: // Plus sign on a numeric keypad
+ case 109: // Minus sign on a numeric keypad
// Stop propagation
rcube_event.cancel(e);
var ret = this.use_plusminus_key(keyCode, mod_key);
@@ -1202,21 +1206,30 @@ use_arrow_key: function(keyCode, mod_key)
use_plusminus_key: function(keyCode, mod_key)
{
var selected_row = this.rows[this.last_selected];
- if (!selected_row)
+
+ if (!selected_row || !selected_row.has_children)
return;
- if (keyCode == 32)
- keyCode = selected_row.expanded ? 109 : 61;
- if (keyCode == 61 || keyCode == 107)
+ // expand
+ if (keyCode == 39 || keyCode == 107) {
+ if (selected_row.expanded)
+ return;
+
if (mod_key == CONTROL_KEY || this.multiexpand)
this.expand_all(selected_row);
else
- this.expand(selected_row);
- else
+ this.expand(selected_row);
+ }
+ // collapse
+ else {
+ if (!selected_row.expanded)
+ return;
+
if (mod_key == CONTROL_KEY || this.multiexpand)
this.collapse_all(selected_row);
else
this.collapse(selected_row);
+ }
this.update_expando(selected_row.uid, selected_row.expanded);
@@ -1231,7 +1244,8 @@ scrollto: function(id)
{
var row = this.rows[id].obj;
if (row && this.frame) {
- var scroll_to = Number(row.offsetTop);
+ var scroll_to = Number(row.offsetTop),
+ head_offset = 0;
// expand thread if target row is hidden (collapsed)
if (!scroll_to && this.rows[id].parent_uid) {
@@ -1240,8 +1254,14 @@ scrollto: function(id)
scroll_to = Number(row.offsetTop);
}
- if (scroll_to < Number(this.frame.scrollTop))
- this.frame.scrollTop = scroll_to;
+ if (this.fixed_header)
+ head_offset = Number(this.thead.offsetHeight);
+
+ // if row is above the frame (or behind header)
+ if (scroll_to < Number(this.frame.scrollTop) + head_offset) {
+ // scroll window so that row isn't behind header
+ this.frame.scrollTop = scroll_to - head_offset;
+ }
else if (scroll_to + Number(row.offsetHeight) > Number(this.frame.scrollTop) + Number(this.frame.offsetHeight))
this.frame.scrollTop = (scroll_to + Number(row.offsetHeight)) - Number(this.frame.offsetHeight);
}
diff --git a/program/lib/Roundcube/rcube_ldap.php b/program/lib/Roundcube/rcube_ldap.php
index 18319fc9a..b733e2465 100644
--- a/program/lib/Roundcube/rcube_ldap.php
+++ b/program/lib/Roundcube/rcube_ldap.php
@@ -706,7 +706,7 @@ class rcube_ldap extends rcube_addressbook
if ($result = $this->ldap->search($m[1], $filter, $m[2], $attrs, $this->group_data)) {
$entries = $result->entries();
for ($j = 0; $j < $entries['count']; $j++) {
- if (self::is_group_entry($entries[$j]) && ($nested_group_members = $this->list_group_members($entries[$j]['dn'], $count)))
+ if ($this->is_group_entry($entries[$j]) && ($nested_group_members = $this->list_group_members($entries[$j]['dn'], $count)))
$group_members = array_merge($group_members, $nested_group_members);
else
$group_members[] = $entries[$j];
@@ -1391,7 +1391,7 @@ class rcube_ldap extends rcube_addressbook
$out[$this->primary_key] = self::dn_encode($rec['dn']);
// determine record type
- if (self::is_group_entry($rec)) {
+ if ($this->is_group_entry($rec)) {
$out['_type'] = 'group';
$out['readonly'] = true;
$fieldmap['name'] = $this->group_data['name_attr'] ? $this->group_data['name_attr'] : $this->prop['groups']['name_attr'];
@@ -1516,7 +1516,7 @@ class rcube_ldap extends rcube_addressbook
/**
* Determines whether the given LDAP entry is a group record
*/
- private static function is_group_entry($entry)
+ private function is_group_entry($entry)
{
$classes = array_map('strtolower', (array)$entry['objectclass']);
diff --git a/program/lib/Roundcube/rcube_spellchecker.php b/program/lib/Roundcube/rcube_spellchecker.php
index d087d2584..3182ff378 100644
--- a/program/lib/Roundcube/rcube_spellchecker.php
+++ b/program/lib/Roundcube/rcube_spellchecker.php
@@ -104,6 +104,9 @@ class rcube_spellchecker
}
}
+ // remove possible duplicates (#1489395)
+ $languages = array_unique($languages);
+
asort($languages);
return $languages;
diff --git a/program/lib/Roundcube/rcube_utils.php b/program/lib/Roundcube/rcube_utils.php
index 174fe398c..27a618d83 100644
--- a/program/lib/Roundcube/rcube_utils.php
+++ b/program/lib/Roundcube/rcube_utils.php
@@ -747,40 +747,13 @@ class rcube_utils
*/
public static function strtotime($date)
{
- $date = trim($date);
-
- // check for MS Outlook vCard date format YYYYMMDD
- if (preg_match('/^([12][90]\d\d)([01]\d)([0123]\d)$/', $date, $m)) {
- return mktime(0,0,0, intval($m[2]), intval($m[3]), intval($m[1]));
- }
-
- // common little-endian formats, e.g. dd/mm/yyyy (not all are supported by strtotime)
- if (preg_match('/^(\d{1,2})[.\/-](\d{1,2})[.\/-](\d{4})$/', $date, $m)
- && $m[1] > 0 && $m[1] <= 31 && $m[2] > 0 && $m[2] <= 12 && $m[3] >= 1970
- ) {
- return mktime(0,0,0, intval($m[2]), intval($m[1]), intval($m[3]));
- }
+ $date = self::clean_datestr($date);
// unix timestamp
if (is_numeric($date)) {
return (int) $date;
}
- // Clean malformed data
- $date = preg_replace(
- array(
- '/GMT\s*([+-][0-9]+)/', // support non-standard "GMTXXXX" literal
- '/[^a-z0-9\x20\x09:+-]/i', // remove any invalid characters
- '/\s*(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s*/i', // remove weekday names
- ),
- array(
- '\\1',
- '',
- '',
- ), $date);
-
- $date = trim($date);
-
// if date parsing fails, we have a date in non-rfc format.
// remove token from the end and try again
while ((($ts = @strtotime($date)) === false) || ($ts < 0)) {
@@ -808,8 +781,8 @@ class rcube_utils
return $date;
}
- $dt = false;
- $date = trim($date);
+ $dt = false;
+ $date = self::clean_datestr($date);
// try to parse string with DateTime first
if (!empty($date)) {
@@ -834,6 +807,52 @@ class rcube_utils
return $dt;
}
+ /**
+ * Clean up date string for strtotime() input
+ *
+ * @param string $date Date string
+ *
+ * @return string Date string
+ */
+ public static function clean_datestr($date)
+ {
+ $date = trim($date);
+
+ // check for MS Outlook vCard date format YYYYMMDD
+ if (preg_match('/^([12][90]\d\d)([01]\d)([0123]\d)$/', $date, $m)) {
+ return sprintf('%04d-%02d-%02d 00:00:00', intval($m[1]), intval($m[2]), intval($m[3]));
+ }
+
+ // Clean malformed data
+ $date = preg_replace(
+ array(
+ '/GMT\s*([+-][0-9]+)/', // support non-standard "GMTXXXX" literal
+ '/[^a-z0-9\x20\x09:+-\/]/i', // remove any invalid characters
+ '/\s*(Mon|Tue|Wed|Thu|Fri|Sat|Sun)\s*/i', // remove weekday names
+ ),
+ array(
+ '\\1',
+ '',
+ '',
+ ), $date);
+
+ $date = trim($date);
+
+ // try to fix dd/mm vs. mm/dd discrepancy, we can't do more here
+ if (preg_match('/^(\d{1,2})[.\/-](\d{1,2})[.\/-](\d{4})$/', $date, $m)) {
+ $mdy = $m[2] > 12 && $m[1] <= 12;
+ $day = $mdy ? $m[2] : $m[1];
+ $month = $mdy ? $m[1] : $m[2];
+ $date = sprintf('%04d-%02d-%02d 00:00:00', intval($m[3]), $month, $day);
+ }
+ // I've found that YYYY.MM.DD is recognized wrong, so here's a fix
+ else if (preg_match('/^(\d{4})\.(\d{1,2})\.(\d{1,2})$/', $date)) {
+ $date = str_replace('.', '-', $date) . ' 00:00:00';
+ }
+
+ return $date;
+ }
+
/*
* Idn_to_ascii wrapper.
* Intl/Idn modules version of this function doesn't work with e-mail address
diff --git a/program/localization/be_BE/labels.inc b/program/localization/be_BE/labels.inc
index b5a3ed6d8..549c315a6 100644
--- a/program/localization/be_BE/labels.inc
+++ b/program/localization/be_BE/labels.inc
@@ -29,7 +29,7 @@ $labels['drafts'] = 'Чарнавікі';
$labels['sent'] = 'Дасланыя';
$labels['trash'] = 'Сметніца';
$labels['junk'] = 'Спам';
-$labels['show_real_foldernames'] = 'Паказваць сапраўдныя імёны для адмысловых папак';
+$labels['show_real_foldernames'] = 'Паказваць сапраўдныя назвы для адмысловых папак';
$labels['subject'] = 'Тэма';
$labels['from'] = 'Ад каго';
$labels['sender'] = 'Адпраўнік';
@@ -44,7 +44,7 @@ $labels['priority'] = 'Прыярытэт';
$labels['organization'] = 'Установа';
$labels['readstatus'] = 'Не прачытанае';
$labels['listoptions'] = 'Параметры спісу...';
-$labels['mailboxlist'] = 'Тэчкі';
+$labels['mailboxlist'] = 'Папкі';
$labels['messagesfromto'] = 'Паведамленні $from—$to з $count';
$labels['threadsfromto'] = 'Абмеркаванні $from—$to з $count';
$labels['messagenrof'] = 'Паведамленне $nr з $count';
@@ -52,11 +52,11 @@ $labels['fromtoshort'] = '$from—$to з $count';
$labels['copy'] = 'Капіраваць';
$labels['move'] = 'Перамясціць';
$labels['moveto'] = 'Перамясціць у...';
-$labels['download'] = 'Спампаваць';
-$labels['open'] = 'Адчыніць';
+$labels['download'] = 'Сцягнуць';
+$labels['open'] = 'Адкрыць';
$labels['showattachment'] = 'Паказаць';
$labels['showanyway'] = 'Усё адно паказваць';
-$labels['filename'] = 'Імя файла';
+$labels['filename'] = 'Назва файла';
$labels['filesize'] = 'Памер файла';
$labels['addtoaddressbook'] = 'Дадаць у адрасную кнігу';
$labels['sun'] = 'нд';
@@ -177,8 +177,8 @@ $labels['msgtext'] = 'Усё паведамленне';
$labels['body'] = 'Цела';
$labels['type'] = 'Тып';
$labels['namex'] = 'Імя';
-$labels['openinextwin'] = 'Адчыніць у новым акне';
-$labels['emlsave'] = 'Спампаваць (.eml)';
+$labels['openinextwin'] = 'Адкрыць у новым акне';
+$labels['emlsave'] = 'Сцягнуць (.eml)';
$labels['changeformattext'] = 'Паказаць як просты тэкст';
$labels['changeformathtml'] = 'Паказаць як HTML';
$labels['editasnew'] = 'Адрэдагаваць як новае';
@@ -197,11 +197,19 @@ $labels['spellcheck'] = 'Правапіс';
$labels['checkspelling'] = 'Праверыць правапіс';
$labels['resumeediting'] = 'Працягнуць рэдагаванне';
$labels['revertto'] = 'Адкаціцца на';
+$labels['responses'] = 'Адказы';
+$labels['insertresponse'] = 'Уставіць адказ';
+$labels['manageresponses'] = 'Кіраваць адказамі';
+$labels['savenewresponse'] = 'Захаваць новы адказ';
+$labels['editresponses'] = 'Рэдагаваць адказы';
+$labels['editresponse'] = 'Рэдагаваць адказ';
+$labels['responsename'] = 'Назва';
+$labels['responsetext'] = 'Тэкст адказу';
$labels['attach'] = 'Далучыць';
$labels['attachments'] = 'Далучэнні';
-$labels['upload'] = 'Запампаваць';
+$labels['upload'] = 'Апублікаваць';
$labels['uploadprogress'] = '$percent ($current з $total)';
-$labels['close'] = 'Зачыніць';
+$labels['close'] = 'Закрыць';
$labels['messageoptions'] = 'Параметры паведамлення...';
$labels['low'] = 'Нізкі';
$labels['lowest'] = 'Найнізшы';
@@ -228,7 +236,7 @@ $labels['mdnrequest'] = 'Адпраўнік пажадаў даведацца а
$labels['receiptread'] = 'Пацверджанне атрымання (прачытання)';
$labels['yourmessage'] = 'Гэта пацверджанне аб атрыманні вашага паведамлення';
$labels['receiptnote'] = 'Заўвага: Гэтае пацверджанне значыць адно, што паведамленне было адлюстравана на экране кампутара адрасата. Няма гарантыі, што атрымальнік прачытаў альбо зразумеў змест паведамлення.';
-$labels['name'] = 'Экраннае імя';
+$labels['name'] = 'Экранная назва';
$labels['firstname'] = 'Імя';
$labels['surname'] = 'Прозвішча';
$labels['middlename'] = 'Другое імя';
@@ -286,10 +294,10 @@ $labels['edit'] = 'Рэдагаваць';
$labels['cancel'] = 'Скасаваць';
$labels['save'] = 'Захаваць';
$labels['delete'] = 'Выдаліць';
-$labels['rename'] = 'Перайменаваць';
+$labels['rename'] = 'Пераназваць';
$labels['addphoto'] = 'Дадаць';
$labels['replacephoto'] = 'Замяніць';
-$labels['uploadphoto'] = 'Запампаваць фота';
+$labels['uploadphoto'] = 'Апублікаваць фота';
$labels['newcontact'] = 'Стварыць новую картку кантакта';
$labels['deletecontact'] = 'Выдаліць абраных кантактаў';
$labels['composeto'] = 'Скласці ліст да';
@@ -300,7 +308,7 @@ $labels['exportall'] = 'Экспартаваць усё';
$labels['exportsel'] = 'Экспартаваць абранае';
$labels['exportvcards'] = 'Экспартаваць кантакты ў фармаце vCard';
$labels['newcontactgroup'] = 'Стварыць новую групу кантактаў';
-$labels['grouprename'] = 'Перайменаваць групу';
+$labels['grouprename'] = 'Пераназваць групу';
$labels['groupdelete'] = 'Выдаліць групу';
$labels['groupremoveselected'] = 'Выдаліць абраных кантакаў з групы';
$labels['previouspage'] = 'Папярэдняя старонка';
@@ -321,7 +329,7 @@ $labels['importreplace'] = 'Замяніць адрасную кнігу цал
$labels['importgroups'] = 'Імпартаваць прызначэнні групы';
$labels['importgroupsall'] = 'Усе (стварыць групы пры неабходнасці)';
$labels['importgroupsexisting'] = 'Толькі для існуючых груп';
-$labels['importdesc'] = 'Кантакты можна запампаваць з існуючай адраснай кнігі.<br/>На дадзены момант падтрымліваюцца адрасы ў фарматах <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> і CSV (значэнні цераз коску).';
+$labels['importdesc'] = 'Кантакты можна загрузіць з існуючай адраснай кнігі.<br/>На дадзены момант падтрымліваюцца адрасы ў фарматах <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> і CSV (значэнні праз коску).';
$labels['done'] = 'Гатова';
$labels['settingsfor'] = 'Настаўленні для';
$labels['about'] = 'Апісанне';
@@ -348,13 +356,13 @@ $labels['timezone'] = 'Часавая зона';
$labels['pagesize'] = 'Радкоў на старонку';
$labels['signature'] = 'Подпіс';
$labels['dstactive'] = 'Летні/зімовы час';
-$labels['showinextwin'] = 'Адчыняць паведамленне ў новым акне';
+$labels['showinextwin'] = 'Адкрываць паведамленні ў новым акне';
$labels['composeextwin'] = 'Складаць у новым акне';
$labels['htmleditor'] = 'Складаць паведамленні ў HTML';
$labels['htmlonreply'] = 'у адказ на паведамленні ў HTML';
$labels['htmlonreplyandforward'] = 'пры перасылцы альбо ў адказ на паведамленні ў HTML';
$labels['htmlsignature'] = 'Подпіс у HTML';
-$labels['showemail'] = 'Паказваць адрас электроннай пошты разам з экранным імем';
+$labels['showemail'] = 'Паказваць адрас электроннай пошты разам з экраннай назвай';
$labels['previewpane'] = 'Панэль прагляду';
$labels['skin'] = 'Тэма інтэрфейсу';
$labels['logoutclear'] = 'Ачышчаць Сметніцу па выхадзе';
@@ -384,7 +392,7 @@ $labels['never'] = 'ніколі';
$labels['immediately'] = 'імгненна';
$labels['messagesdisplaying'] = 'Адлюстраванне паведамленняў';
$labels['messagescomposition'] = 'Складанне паведамленняў';
-$labels['mimeparamfolding'] = 'Імёны далучэнняў';
+$labels['mimeparamfolding'] = 'Назвы далучэнняў';
$labels['2231folding'] = 'Поўны RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Поўны RFC 2047 (інш.)';
@@ -429,7 +437,7 @@ $labels['forwardmode'] = 'Перасылка паведамленняў';
$labels['inline'] = 'у тэксце';
$labels['asattachment'] = 'як далучэнне';
$labels['folder'] = 'Папка';
-$labels['folders'] = 'Тэчкі';
+$labels['folders'] = 'Папкі';
$labels['foldername'] = 'Назва папкі';
$labels['subscribed'] = 'Падпісаная';
$labels['messagecount'] = 'Паведамленні';
diff --git a/program/localization/be_BE/messages.inc b/program/localization/be_BE/messages.inc
index 4b2f07a2f..5833fd8a4 100644
--- a/program/localization/be_BE/messages.inc
+++ b/program/localization/be_BE/messages.inc
@@ -35,8 +35,8 @@ $messages['loggedout'] = 'Сесія скасавана. Да пабачэння
$messages['mailboxempty'] = 'У скрынцы пуста.';
$messages['refreshing'] = 'Абнаўляецца...';
$messages['loading'] = 'Загружаецца...';
-$messages['uploading'] = 'Файл запампоўваюцца...';
-$messages['uploadingmany'] = 'Файлы запампоўваюцца...';
+$messages['uploading'] = 'Файл зацягваецца...';
+$messages['uploadingmany'] = 'Файлы зацягваюцца...';
$messages['loadingdata'] = 'Загружаюцца даныя...';
$messages['checkingmail'] = 'Праверка новых паведамленняў...';
$messages['sendingmessage'] = 'Паведамленне адпраўляецца...';
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Паведамленні адпраўлены.';
$messages['savingmessage'] = 'Паведамленне захоўваецца...';
$messages['messagesaved'] = 'Паведамленне захавана ў Чарнавікі.';
$messages['successfullysaved'] = 'Захавана.';
+$messages['savingresponse'] = 'Тэкст адказу захоўваецца...';
+$messages['deleteresponseconfirm'] = 'Напраўду выдаліць тэкст адказу?';
$messages['addedsuccessfully'] = 'Кантакт дададзены ў адрасную кнігу.';
$messages['contactexists'] = 'Кантакт з такім самым адрасам эл. пошты ўжо існуе.';
$messages['contactnameexists'] = 'Кантакт з такім самым імем ужо існуе.';
@@ -82,7 +84,7 @@ $messages['nobodywarning'] = 'Адправіць гэта паведамленн
$messages['notsentwarning'] = 'Паведамленне не адпраўлена. Жадаеце скасаваць сваё паведамленне?';
$messages['noldapserver'] = 'Задайце ldap-сервер для пошуку.';
$messages['nosearchname'] = 'Задайце імя кантакта альбо адрас электроннай пошты.';
-$messages['notuploadedwarning'] = 'Не ўсе далучэнні пакуль яшчэ запампаваныя. Пачакайце альбо скасуйце аперацыю.';
+$messages['notuploadedwarning'] = 'Не ўсе далучэнні пакуль яшчэ зацягнутыя. Пачакайце альбо скасуйце аперацыю.';
$messages['searchsuccessful'] = 'Знойдзена $nr паведамленняў.';
$messages['contactsearchsuccessful'] = 'Знойдзена $nr кантактаў.';
$messages['searchnomatch'] = 'Пошук не даў выніку.';
@@ -97,8 +99,8 @@ $messages['folderexpunged'] = 'Папка сціснута. ';
$messages['deletedsuccessfully'] = 'Выдалена.';
$messages['converting'] = 'Фарматаванне выдаляецца...';
$messages['messageopenerror'] = 'Не ўдалося загрузіць паведамленне з сервера.';
-$messages['fileuploaderror'] = 'Не ўдалося запампаваць файл.';
-$messages['filesizeerror'] = 'Запампаваны файл перавышае максімальна дазволены памер $size.';
+$messages['fileuploaderror'] = 'Не ўдалося зацягнуць файл.';
+$messages['filesizeerror'] = 'Зацягнуты файл перавышае максімальна дазволены памер $size.';
$messages['copysuccess'] = '$nr кантактаў скапіявана.';
$messages['movesuccess'] = '$nr кантактаў перамешчана.';
$messages['copyerror'] = 'Не ўдалося скапіяваць ніводнага кантакта.';
@@ -118,17 +120,17 @@ $messages['errorsendingreceipt'] = 'Не ўдалося адправіць па
$messages['deleteidentityconfirm'] = 'Напраўду выдаліць гэтую тоеснасць?';
$messages['nodeletelastidentity'] = 'Гэтую тоеснасць выдаліць няможна, бо апошняя.';
$messages['forbiddencharacter'] = 'Назва папкі змяшчае забаронены знак.';
-$messages['selectimportfile'] = 'Абярыце файл на запампоўку.';
+$messages['selectimportfile'] = 'Абярыце файл да зацягвання.';
$messages['addresswriterror'] = 'Абраная адрасная кніга ёсць толькі-для-чытання.';
$messages['contactaddedtogroup'] = 'Кантакты дададзены ў групу.';
$messages['contactremovedfromgroup'] = 'Кантакты выдаленыя з групы.';
$messages['nogroupassignmentschanged'] = 'Усе прызначэнні групы засталіся без зменаў.';
$messages['importwait'] = 'Ідзе імпартаванне. Чакайце...';
-$messages['importformaterror'] = 'Імпартаванне не ўдалося! Запампаваны файл не ўтрымоўвае слушных даных на імпарт.';
+$messages['importformaterror'] = 'Імпартаванне не ўдалося! Загружаны файл не ўтрымоўвае слушных даных на імпарт.';
$messages['importconfirm'] = '<b>$inserted кантактаў імпартаваныя</b>';
$messages['importconfirmskipped'] = '<b>Прапушчана $skipped існуючых запісаў</b>';
$messages['importmessagesuccess'] = '$nr паведамленняў імпартавана';
-$messages['importmessageerror'] = 'Не ўдалося імпартаваць! Запампаваны файл не ёсць слушным паведамленнем альбо файлам паштовай скрынкі';
+$messages['importmessageerror'] = 'Не ўдалося імпартаваць! Загружаны файл не ёсць слушным паведамленнем альбо файлам паштовай скрынкі';
$messages['opnotpermitted'] = 'Аперацыя не дазволеная!';
$messages['nofromaddress'] = 'У абранай тоеснасці не стае адрасу эл. пошты.';
$messages['editorwarning'] = 'Змена рэдактара прывядзе да страты фарматавання. Працягнуць?';
diff --git a/program/localization/bg_BG/labels.inc b/program/localization/bg_BG/labels.inc
index 29c99e8f4..0394f19b9 100644
--- a/program/localization/bg_BG/labels.inc
+++ b/program/localization/bg_BG/labels.inc
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'Правопис';
$labels['checkspelling'] = 'Проверка на правописа';
$labels['resumeediting'] = 'Продължи черновата';
$labels['revertto'] = 'Върни се към';
+$labels['responses'] = 'Отговори';
+$labels['insertresponse'] = 'Вмъкване на отговори';
+$labels['manageresponses'] = 'Настройка на отговори';
+$labels['savenewresponse'] = 'Запис на нов отговор';
+$labels['editresponses'] = 'Редакция на отговори';
+$labels['editresponse'] = 'Редакция на отговор';
+$labels['responsename'] = 'Име';
+$labels['responsetext'] = 'Текст на отговор';
$labels['attach'] = 'Прикачи';
$labels['attachments'] = 'Прикачени файлове';
$labels['upload'] = 'Качи';
diff --git a/program/localization/bg_BG/messages.inc b/program/localization/bg_BG/messages.inc
index 210eda1b1..48e1fbcc0 100644
--- a/program/localization/bg_BG/messages.inc
+++ b/program/localization/bg_BG/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Писмото е изпратено успешно.
$messages['savingmessage'] = 'Записване на писмо...';
$messages['messagesaved'] = 'Писмото е записано в Чернови.';
$messages['successfullysaved'] = 'Успешен запис.';
+$messages['savingresponse'] = 'Записване текст на отговор...';
+$messages['deleteresponseconfirm'] = 'Желаете ли да изтриете текст за отговор?';
$messages['addedsuccessfully'] = 'Контактът е добавен в адресната книга.';
$messages['contactexists'] = 'Вече съществува контакт с този e-mail адрес.';
$messages['contactnameexists'] = 'Вече съществува контакт с това име.';
@@ -54,6 +56,8 @@ $messages['contactnotfound'] = 'Търсеният контакт не е нам
$messages['contactsearchonly'] = 'Използвайте полето за да търсите контакти';
$messages['sendingfailed'] = 'Неуспешно изпращане на писмо.';
$messages['senttooquickly'] = 'Моля изчакайте $sec секунди преди да изпратите писмото.';
+$messages['errorsavingsent'] = 'Възникна грешка при записване на изпратеното писмо.';
+$messages['errorsaving'] = 'Възникна грешка при записването.';
$messages['errormoving'] = 'Писмото не може да бъде преместено.';
$messages['errorcopying'] = 'Писмото не може да бъде копирано.';
$messages['errordeleting'] = 'Писмото не може да бъде изтрито.';
@@ -140,6 +144,7 @@ $messages['smtperror'] = 'SMTP грешка: $msg';
$messages['emailformaterror'] = 'Невалиден e-mail адрес: $email';
$messages['toomanyrecipients'] = 'Прекалено много адреси за изпращане (максимум: $max).';
$messages['maxgroupmembersreached'] = 'Броят на членовете на групата е повече от максималния: $max.';
+$messages['internalerror'] = 'Възникна вътрешна грешка. Моля опитайте отново.';
$messages['contactdelerror'] = 'Невъзможно изтриване на контакти.';
$messages['contactdeleted'] = 'Контактът беше изтрит успешно.';
$messages['contactrestoreerror'] = 'Неуспешно възстановяване на изтрите контакти.';
diff --git a/program/localization/bs_BA/messages.inc b/program/localization/bs_BA/messages.inc
index 3424013c5..9e0f083ff 100644
--- a/program/localization/bs_BA/messages.inc
+++ b/program/localization/bs_BA/messages.inc
@@ -54,6 +54,8 @@ $messages['contactnotfound'] = 'Traženi kontakt nije pronađen.';
$messages['contactsearchonly'] = 'Unesite neki pojam za pretragu';
$messages['sendingfailed'] = 'Greška pri slanju poruke.';
$messages['senttooquickly'] = 'Molimo sačekajte $sec sekundi prije slanja ove poruke.';
+$messages['errorsavingsent'] = 'Desila se greška pri snimanju poslane poruke.';
+$messages['errorsaving'] = 'Desila se greška pri snimanju.';
$messages['errormoving'] = 'Nije moguće premjestiti poruke.';
$messages['errorcopying'] = 'Nije moguće kopirati poruke.';
$messages['errordeleting'] = 'Nije moguće obrisati poruke.';
@@ -140,6 +142,7 @@ $messages['smtperror'] = 'SMTP greška: $msg';
$messages['emailformaterror'] = 'Netačna email adresa: $email';
$messages['toomanyrecipients'] = 'Previše primaoca. Smanjite broj primaoca na $max.';
$messages['maxgroupmembersreached'] = 'Broj članova grupe prelazi maksimum od $max.';
+$messages['internalerror'] = 'Dogodila se interna greška. Molimo vas da pokušate ponovo.';
$messages['contactdelerror'] = 'Kontakti ne mogu biti obrisani.';
$messages['contactdeleted'] = 'Kontakti su uspješno obrisani.';
$messages['contactrestoreerror'] = 'Nije moguće vratiti obrisane kontakte.';
diff --git a/program/localization/ca_ES/labels.inc b/program/localization/ca_ES/labels.inc
index 065431fbc..a93b18434 100644
--- a/program/localization/ca_ES/labels.inc
+++ b/program/localization/ca_ES/labels.inc
@@ -175,14 +175,14 @@ $labels['resetsearch'] = 'Neteja cerca';
$labels['searchmod'] = 'Cerca modificadors';
$labels['msgtext'] = 'Missatge sencer';
$labels['body'] = 'Cos';
-$labels['type'] = 'tipus:';
+$labels['type'] = 'Tipus';
$labels['namex'] = 'Nom';
$labels['openinextwin'] = 'Obre a una nova finestra';
$labels['emlsave'] = 'Descarrega (.eml)';
$labels['changeformattext'] = 'Mostra en format de text net';
$labels['changeformathtml'] = 'Mostra en format HTML';
$labels['editasnew'] = 'Edita com a nou';
-$labels['send'] = 'Enviar';
+$labels['send'] = 'Envia';
$labels['sendmessage'] = 'Envia el missatge';
$labels['savemessage'] = 'Desa aquest esborrany';
$labels['addattachment'] = 'Adjunta un fitxer';
@@ -316,7 +316,11 @@ $labels['searchdelete'] = 'Suprimeix la cerca';
$labels['import'] = 'Importa';
$labels['importcontacts'] = 'Importa contactes';
$labels['importfromfile'] = 'Importa des d\'un fitxer:';
+$labels['importtarget'] = 'Afegeix contactes a';
$labels['importreplace'] = 'Reemplaça la llibreta d\'adreçes sencera';
+$labels['importgroups'] = 'Importa assignacions de grup';
+$labels['importgroupsall'] = 'Tot (crea grups si és necessari)';
+$labels['importgroupsexisting'] = 'Només per a grups existents';
$labels['importdesc'] = 'Podeu carregar contactes des d\'una llibreta de direccions.<br/>Actualment donem suport a la importació d\'adreces des de fitxers de tipus <a href="http://ca.wikipedia.org/wiki/VCard">vCard</a> o CSV (valors separats per comes).';
$labels['done'] = 'Fet';
$labels['settingsfor'] = 'Configuració per a';
@@ -344,8 +348,8 @@ $labels['timezone'] = 'Fus horari';
$labels['pagesize'] = 'Files per pàgina';
$labels['signature'] = 'Signatura';
$labels['dstactive'] = 'Horari d\'estiu';
-$labels['showinextwin'] = 'Obrir el missatge en una nova finestra';
-$labels['composeextwin'] = 'Redactar en una nova finestra';
+$labels['showinextwin'] = 'Obre el missatge en una nova finestra';
+$labels['composeextwin'] = 'Redacta en una nova finestra';
$labels['htmleditor'] = 'Escriu missatges en HTML';
$labels['htmlonreply'] = 'només en resposta a missatges en HTML';
$labels['htmlonreplyandforward'] = 'en reenviament o resposta a missatge HTML';
diff --git a/program/localization/ca_ES/messages.inc b/program/localization/ca_ES/messages.inc
index 06a72cb50..5f5854de8 100644
--- a/program/localization/ca_ES/messages.inc
+++ b/program/localization/ca_ES/messages.inc
@@ -54,6 +54,8 @@ $messages['contactnotfound'] = 'No s\'ha trobat el contacte sol·licitat.';
$messages['contactsearchonly'] = 'Introduïu termes de cerca per trobar contactes';
$messages['sendingfailed'] = 'Error enviant el missatge.';
$messages['senttooquickly'] = 'Si us plau, espereu $sec segon(s) abans d\'enviar aquest missatge.';
+$messages['errorsavingsent'] = 'S\'ha produït un error mentre es desava el missatge enviat.';
+$messages['errorsaving'] = 'S\'ha produït un error mentre es desava.';
$messages['errormoving'] = 'No s\'ha pogut moure el(s) missatge(s).';
$messages['errorcopying'] = 'No s\'ha pogut copiar el(s) missatge(s).';
$messages['errordeleting'] = 'No s\'ha pogut suprimir el(s) missatge(s).';
@@ -140,6 +142,7 @@ $messages['smtperror'] = 'Error SMTP: $msg';
$messages['emailformaterror'] = 'Adreça de correu no vàlida: $email';
$messages['toomanyrecipients'] = 'Massa destinataris. Reduïu el nombre de destinataris a $max.';
$messages['maxgroupmembersreached'] = 'El nombre de membres del grup excedeix el màxim de $max.';
+$messages['internalerror'] = 'S\'ha produït un error intern. Si us plau torneu-ho a provar.';
$messages['contactdelerror'] = 'No s\'han pogut suprimir el(s) contacte(s).';
$messages['contactdeleted'] = 'Contacte(s) suprimit(s) correctament.';
$messages['contactrestoreerror'] = 'No s\'ha pogut restaurar el(s) contacte(s) suprimit(s).';
diff --git a/program/localization/cs_CZ/labels.inc b/program/localization/cs_CZ/labels.inc
index d887d8d0a..aac514ec5 100644
--- a/program/localization/cs_CZ/labels.inc
+++ b/program/localization/cs_CZ/labels.inc
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'Pravopis';
$labels['checkspelling'] = 'Zkontrolovat pravopis';
$labels['resumeediting'] = 'Pokračovat v úpravách';
$labels['revertto'] = 'Přejít na';
+$labels['responses'] = 'Odpovědi';
+$labels['insertresponse'] = 'Vložit odpověd';
+$labels['manageresponses'] = 'Spravovat odpovědí';
+$labels['savenewresponse'] = 'Uložit novou odpověď';
+$labels['editresponses'] = 'Upravit odpovědi';
+$labels['editresponse'] = 'Upravit odpověď';
+$labels['responsename'] = 'Název';
+$labels['responsetext'] = 'Text odpovědi';
$labels['attach'] = 'Přiložit';
$labels['attachments'] = 'Přílohy';
$labels['upload'] = 'Nahrát';
diff --git a/program/localization/cs_CZ/messages.inc b/program/localization/cs_CZ/messages.inc
index 0bd6b0e82..2e3a75c52 100644
--- a/program/localization/cs_CZ/messages.inc
+++ b/program/localization/cs_CZ/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Zpráva byla odeslána';
$messages['savingmessage'] = 'Ukládám zprávu...';
$messages['messagesaved'] = 'Zpráva uložena do Rozepsané';
$messages['successfullysaved'] = 'Uloženo';
+$messages['savingresponse'] = 'Ukládám text odpovědi...';
+$messages['deleteresponseconfirm'] = 'Opravdu chcete odstranit tento text odpovědi?';
$messages['addedsuccessfully'] = 'Kontakt byl úspěšně přidán do adresáře';
$messages['contactexists'] = 'Kontakt se zadanou e-mailovou adresou již existuje';
$messages['contactnameexists'] = 'Kontakt se stejným jménem již existuje';
diff --git a/program/localization/cy_GB/messages.inc b/program/localization/cy_GB/messages.inc
index 5dd8230c7..be6c4dac6 100644
--- a/program/localization/cy_GB/messages.inc
+++ b/program/localization/cy_GB/messages.inc
@@ -54,6 +54,8 @@ $messages['contactnotfound'] = 'Ni gafwyd hyd i\'r cysylltiad gofynnwyd amdano';
$messages['contactsearchonly'] = 'Rhowch dermau chwilio i ganfod cysylltiadau';
$messages['sendingfailed'] = 'Methwyd danfon y neges';
$messages['senttooquickly'] = 'Arhoswch $sec eiliad cyn danfon y neges';
+$messages['errorsavingsent'] = 'Fe gafwyd gwall wrth gadw\'r neges ddanfonwyd.';
+$messages['errorsaving'] = 'Fe gafwyd gwall wrth gadw';
$messages['errormoving'] = 'Methwyd symud y neges';
$messages['errorcopying'] = 'Methwyd copïo\'r neges(euon)';
$messages['errordeleting'] = 'Methwyd dileu y neges';
@@ -140,6 +142,7 @@ $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['contactrestoreerror'] = 'Methwyd adfer y cyswllt/cysylltiadau a ddilëwyd';
diff --git a/program/localization/da_DK/labels.inc b/program/localization/da_DK/labels.inc
index 52de86d92..53d32090c 100644
--- a/program/localization/da_DK/labels.inc
+++ b/program/localization/da_DK/labels.inc
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'Stav';
$labels['checkspelling'] = 'Stavekontrol';
$labels['resumeediting'] = 'Genoptag redigering';
$labels['revertto'] = 'Vend tilbage til';
+$labels['responses'] = 'Svar';
+$labels['insertresponse'] = 'Indsæt et svar';
+$labels['manageresponses'] = 'Administrer svar';
+$labels['savenewresponse'] = 'Gem et nyt svar';
+$labels['editresponses'] = 'Rediger svar';
+$labels['editresponse'] = 'Rediger svar';
+$labels['responsename'] = 'Navn';
+$labels['responsetext'] = 'Svartekst';
$labels['attach'] = 'Vedhæft';
$labels['attachments'] = 'Vedhæftninger';
$labels['upload'] = 'Overfør';
@@ -316,7 +324,11 @@ $labels['searchdelete'] = 'Slet søgning';
$labels['import'] = 'Importér';
$labels['importcontacts'] = 'Importér kontakter';
$labels['importfromfile'] = 'Importér fra fil:';
+$labels['importtarget'] = 'Tilføj kontakter til';
$labels['importreplace'] = 'Overskriv hele adressebogen';
+$labels['importgroups'] = 'Importer gruppetildelinger';
+$labels['importgroupsall'] = 'Alle (opret grupper hvis nødvendigt)';
+$labels['importgroupsexisting'] = 'Kun for eksisterende grupper';
$labels['importdesc'] = 'Du kan uploade kontakter fra en eksisterende adressebog. <br/>I øjeblikket supportere vi import af adresser fra <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> og CSV (komma-separeret) data format.';
$labels['done'] = 'Færdig';
$labels['settingsfor'] = 'Indstillinger for';
diff --git a/program/localization/da_DK/messages.inc b/program/localization/da_DK/messages.inc
index c12236eef..1e4635b8d 100644
--- a/program/localization/da_DK/messages.inc
+++ b/program/localization/da_DK/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Beskeden blev afsendt succesfuldt.';
$messages['savingmessage'] = 'Gemmer besked...';
$messages['messagesaved'] = 'Beskeden er gemt i kladdemappen.';
$messages['successfullysaved'] = 'Gemt succesfuldt';
+$messages['savingresponse'] = 'Gemmer svartekst...';
+$messages['deleteresponseconfirm'] = 'Er du sikker på, at du ønsker at slette svarteksten?';
$messages['addedsuccessfully'] = 'Kontakten blev tilføjet adressebogen.';
$messages['contactexists'] = 'Der er allerede en kontakt med denne e-mailadresse.';
$messages['contactnameexists'] = 'En kontakt med samme navn eksisterer allerede.';
@@ -54,6 +56,8 @@ $messages['contactnotfound'] = 'Den søgte kontakt blev ikke fundet.';
$messages['contactsearchonly'] = 'Indtast søgeord for at finde kontakter.';
$messages['sendingfailed'] = 'Beskeden kunne ikke sendes.';
$messages['senttooquickly'] = 'Vent venligst $sec sekunder før du sender denne besked.';
+$messages['errorsavingsent'] = 'Der opstod en fejl ved at gemme den sendte besked.';
+$messages['errorsaving'] = 'Der opstod en fejl ved at gemme.';
$messages['errormoving'] = 'Beskeden kunne ikke flyttes.';
$messages['errorcopying'] = 'Beskeden kunne ikke kopieres.';
$messages['errordeleting'] = 'Beskeden kunne ikke slettes.';
@@ -140,6 +144,7 @@ $messages['smtperror'] = 'SMTP fejl: $msg';
$messages['emailformaterror'] = 'Ugyldig e-mailadresse: $email';
$messages['toomanyrecipients'] = 'For mange modtagere. Reducer antallet af modtagere til $max.';
$messages['maxgroupmembersreached'] = 'Antallet af gruppemedlemmer overstiger maksimum på $max.';
+$messages['internalerror'] = 'En intern fejl opstod. Prøv venligst igen.';
$messages['contactdelerror'] = 'Kunne ikke slette kontakt(er).';
$messages['contactdeleted'] = 'Kontakt(er) slettet.';
$messages['contactrestoreerror'] = 'Kunne ikke gendanne slettede kontakt(er).';
diff --git a/program/localization/de_CH/labels.inc b/program/localization/de_CH/labels.inc
index e5fe1ec66..b416d0b98 100644
--- a/program/localization/de_CH/labels.inc
+++ b/program/localization/de_CH/labels.inc
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'Rechtschreibung';
$labels['checkspelling'] = 'Rechtschreibung prüfen';
$labels['resumeediting'] = 'Bearbeitung fortsetzen';
$labels['revertto'] = 'Zurück zu';
+$labels['responses'] = 'Antworten';
+$labels['insertresponse'] = 'Antwort einfügen';
+$labels['manageresponses'] = 'Antworten verwalten';
+$labels['savenewresponse'] = 'Neue Antwort speichern';
+$labels['editresponses'] = 'Antworten bearbeiten';
+$labels['editresponse'] = 'Antwort bearbeiten';
+$labels['responsename'] = 'Name';
+$labels['responsetext'] = 'Antworttext';
$labels['attach'] = 'Anhängen';
$labels['attachments'] = 'Anhänge';
$labels['upload'] = 'Hochladen';
diff --git a/program/localization/de_CH/messages.inc b/program/localization/de_CH/messages.inc
index 4e5ccaa46..2f3257703 100644
--- a/program/localization/de_CH/messages.inc
+++ b/program/localization/de_CH/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Nachricht erfolgreich gesendet';
$messages['savingmessage'] = 'Nachricht wird gespeichert...';
$messages['messagesaved'] = 'Nachricht als Entwurf gespeichert';
$messages['successfullysaved'] = 'Erfolgreich gespeichert';
+$messages['savingresponse'] = 'Antwort wird gespeichert...';
+$messages['deleteresponseconfirm'] = 'Wollen Sie diese Antwort wirklich löschen?';
$messages['addedsuccessfully'] = 'Kontakt zum Adressbuch hinzugefügt';
$messages['contactexists'] = 'Es existiert bereits ein Kontakt mit dieser E-Mail-Adresse.';
$messages['contactnameexists'] = 'Es existiert bereits ein Kontakt mit diesem Namen';
@@ -54,6 +56,8 @@ $messages['contactnotfound'] = 'Die gewählte Adresse wurde nicht gefunden';
$messages['contactsearchonly'] = 'Geben Sie einen Suchbegriff ein, um Kontakte zu finden';
$messages['sendingfailed'] = 'Versand der Nachricht fehlgeschlagen';
$messages['senttooquickly'] = 'Bitte warten Sie $sec Sekunde(n) vor dem Senden dieser Nachricht';
+$messages['errorsavingsent'] = 'Beim Speichern der gesendeten Nachricht ist ein Fehler aufgetreten.';
+$messages['errorsaving'] = 'Beim Speichern ist ein Fehler aufgetreten.';
$messages['errormoving'] = 'Nachricht(en) konnte(n) nicht verschoben werden.';
$messages['errorcopying'] = 'Nachticht(en) konnte(n) nicht kopiert werden.';
$messages['errordeleting'] = 'Nachricht(en) konnte(n) nicht gelöscht werden.';
@@ -140,6 +144,7 @@ $messages['smtperror'] = 'SMTP Fehler: $msg';
$messages['emailformaterror'] = 'Ungültige E-Mail-Adresse: $email';
$messages['toomanyrecipients'] = 'Zuviele Empfänger angegeben. Reduzieren Sie die Empfängeradressen auf $max.';
$messages['maxgroupmembersreached'] = 'Die Anzahl Adressen in dieser Gruppe überschreitet das Maximum von $max.';
+$messages['internalerror'] = 'Ein interner Fehler ist aufgetreten. Bitte versuchen Sie den Vorgang erneut.';
$messages['contactdelerror'] = 'Fehler beim Löschen.';
$messages['contactdeleted'] = 'Kontakt(e) erfolgreich gelöscht.';
$messages['contactrestoreerror'] = 'Die gelöschten Kontakte konnten nicht wiederhergestellt werden.';
diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
index 69ef2505c..8f221a3a9 100644
--- a/program/localization/en_US/labels.inc
+++ b/program/localization/en_US/labels.inc
@@ -493,6 +493,9 @@ $labels['standardwindows'] = 'Handle popups as standard windows';
$labels['forwardmode'] = 'Messages forwarding';
$labels['inline'] = 'inline';
$labels['asattachment'] = 'as attachment';
+$labels['replyallmode'] = 'Default action of [Reply all] button';
+$labels['replyalldefault'] = 'reply to all';
+$labels['replyalllist'] = 'reply to mailing list only (if found)';
$labels['folder'] = 'Folder';
$labels['folders'] = 'Folders';
diff --git a/program/localization/es_ES/messages.inc b/program/localization/es_ES/messages.inc
index 3a8b5ab31..694544cca 100644
--- a/program/localization/es_ES/messages.inc
+++ b/program/localization/es_ES/messages.inc
@@ -54,6 +54,8 @@ $messages['contactnotfound'] = 'El contacto solicitado no existe.';
$messages['contactsearchonly'] = 'Ingrese algún criterio para buscar contactos';
$messages['sendingfailed'] = 'Error al enviar mensaje.';
$messages['senttooquickly'] = 'Por favor, espere $sec segundo(s) antes de mandar este mensaje.';
+$messages['errorsavingsent'] = 'Ha ocurrido un error al guardar el mensaje enviado.';
+$messages['errorsaving'] = 'Ha ocurrido un error al guardar.';
$messages['errormoving'] = 'No se ha podido mover el/los mensaje(s).';
$messages['errorcopying'] = 'No se ha podido copiar el/los mensaje(s).';
$messages['errordeleting'] = 'No se ha podido eliminar el/los mensaje(s).';
@@ -140,6 +142,7 @@ $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'] = 'Ha ocurrido un error interno. Por favor, inténtelo de nuevo.';
$messages['contactdelerror'] = 'No se ha podido eliminar el/los contacto(s).';
$messages['contactdeleted'] = 'Contacto(s) eliminado(s) correctamente.';
$messages['contactrestoreerror'] = 'No se han podido restaurar los contactos borrados.';
diff --git a/program/localization/fa_IR/labels.inc b/program/localization/fa_IR/labels.inc
index de23577a0..14f6f8621 100644
--- a/program/localization/fa_IR/labels.inc
+++ b/program/localization/fa_IR/labels.inc
@@ -18,16 +18,16 @@
$labels['welcome'] = 'به $product خوش آمدید';
$labels['username'] = 'نام کاربری';
$labels['password'] = 'گذرواژه';
-$labels['server'] = 'سرویس‌دهنده';
+$labels['server'] = 'سرور';
$labels['login'] = 'ورود';
-$labels['logout'] = 'برون‌رفت';
-$labels['mail'] = 'پست';
+$labels['logout'] = 'خروج';
+$labels['mail'] = 'نامه';
$labels['settings'] = 'تنظیمات';
$labels['addressbook'] = 'دفتر نشانی';
$labels['inbox'] = 'صندوق ورودی';
$labels['drafts'] = 'پیش‌نویس‌ها';
$labels['sent'] = 'فرستاده شده';
-$labels['trash'] = 'حذف شده‌ها';
+$labels['trash'] = 'زباله‌دان';
$labels['junk'] = 'بنجل';
$labels['show_real_foldernames'] = 'نمایش نام واقعی برای پوشه‌های ویژه';
$labels['subject'] = 'موضوع';
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'املاء';
$labels['checkspelling'] = 'بررسی املایی';
$labels['resumeediting'] = 'ادامه‌ی ویرایش';
$labels['revertto'] = 'برگرداندن به';
+$labels['responses'] = 'پاسخ‌ها';
+$labels['insertresponse'] = 'درج پاسخ';
+$labels['manageresponses'] = 'مدیریت پاسخ‌ها';
+$labels['savenewresponse'] = 'ذخیره پاسخ جدید';
+$labels['editresponses'] = 'ویرایش پاسخ‌ها';
+$labels['editresponse'] = 'ویرایش پاسخ';
+$labels['responsename'] = 'نام';
+$labels['responsetext'] = 'متن پاسخ';
$labels['attach'] = 'پیوست کردن';
$labels['attachments'] = 'پیوست‌ها';
$labels['upload'] = 'بارگذاری';
diff --git a/program/localization/fa_IR/messages.inc b/program/localization/fa_IR/messages.inc
index 43f5a6c2a..502b0445a 100644
--- a/program/localization/fa_IR/messages.inc
+++ b/program/localization/fa_IR/messages.inc
@@ -54,6 +54,8 @@ $messages['contactnotfound'] = 'مخاطب درخواست شده پیدا نشد
$messages['contactsearchonly'] = 'برای یافتن مخاطب عبارتی را جستجو کنید';
$messages['sendingfailed'] = 'ارسال پیغام ناموفق بود.';
$messages['senttooquickly'] = 'لطفا قبل از ارسال این پیغام $sec ثانیه صبر کنید.';
+$messages['errorsavingsent'] = 'خطایی رخ داده است پیام ارسالی ذخیره می گردد.';
+$messages['errorsaving'] = 'خطایی در ذخیره کردن رخ داده است.';
$messages['errormoving'] = 'پیغام(ها) منتقل نشدند.';
$messages['errorcopying'] = 'پیغام(ها) کپی نشدند.';
$messages['errordeleting'] = 'پیغام(ها) حذف نشدند.';
@@ -140,6 +142,7 @@ $messages['smtperror'] = 'خطای SMTP: $msg';
$messages['emailformaterror'] = 'پست الکترونیکی نامعتبر: $email';
$messages['toomanyrecipients'] = 'گیرنده‌های بیش از اندازه: تعداد گیرنده ها را به $max کاهش دهید.';
$messages['maxgroupmembersreached'] = 'تعداد اعضای گروه بیشتر از $max است.';
+$messages['internalerror'] = 'یک خطای داخلی رخ داده است. لطفا دوباره سعی کنید.';
$messages['contactdelerror'] = 'حذف مخاطب(ها) انجام شد.';
$messages['contactdeleted'] = 'مخاطب(ها) با موفقیت حذف شدند.';
$messages['contactrestoreerror'] = 'مخاطب(های) حذف شده بازگردانی نخواهند شد.';
diff --git a/program/localization/fi_FI/labels.inc b/program/localization/fi_FI/labels.inc
index 8a9064028..1e5e26193 100644
--- a/program/localization/fi_FI/labels.inc
+++ b/program/localization/fi_FI/labels.inc
@@ -196,6 +196,13 @@ $labels['spellcheck'] = 'Oikeinkirjoitus';
$labels['checkspelling'] = 'Tarkista oikeinkirjoitus';
$labels['resumeediting'] = 'Jatka muokkausta';
$labels['revertto'] = 'Muuta takaisin';
+$labels['responses'] = 'Vastaukset';
+$labels['manageresponses'] = 'Hallitse vastauksia';
+$labels['savenewresponse'] = 'Tallenna uusi vastaus';
+$labels['editresponses'] = 'Muokkaa vastauksia';
+$labels['editresponse'] = 'Muokkaa vastausta';
+$labels['responsename'] = 'Nimi';
+$labels['responsetext'] = 'Vastausteksti';
$labels['attach'] = 'Liitä';
$labels['attachments'] = 'Liitetiedostot';
$labels['upload'] = 'Lisää';
@@ -315,6 +322,7 @@ $labels['import'] = 'Tuo';
$labels['importcontacts'] = 'Tuo yhteystiedot';
$labels['importfromfile'] = 'Tuo tiedostosta:';
$labels['importreplace'] = 'Korvaa koko osoitekirja';
+$labels['importgroupsall'] = 'Kaikki (luo ryhmät tarvittaessa)';
$labels['importdesc'] = 'Voit tuoda yhteystietoja olemassa olevasta osoitekirjasta.<br/>Tuettuja muotoja ovat <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> ja CSV (pilkuin erotetut arvot).';
$labels['done'] = 'Valmis';
$labels['settingsfor'] = 'Asetukset';
diff --git a/program/localization/fi_FI/messages.inc b/program/localization/fi_FI/messages.inc
index 1b3c3ea49..a94339af1 100644
--- a/program/localization/fi_FI/messages.inc
+++ b/program/localization/fi_FI/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Viesti lähetetty';
$messages['savingmessage'] = 'Tallennetaan viestiä...';
$messages['messagesaved'] = 'Viesti tallennettu "Luonnokset"-kansioon';
$messages['successfullysaved'] = 'Tallennus onnistui';
+$messages['savingresponse'] = 'Tallennetaan vastaustekstiä...';
+$messages['deleteresponseconfirm'] = 'Haluatko varmasti poistaa tämän vastaustekstin?';
$messages['addedsuccessfully'] = 'Yhteystieto lisätty osoitekirjaan';
$messages['contactexists'] = 'Samalla sähköpostiosoitteella on jo olemassa yhteystieto';
$messages['contactnameexists'] = 'Yhteystieto samalla nimellä on jo olemassa';
diff --git a/program/localization/fr_FR/labels.inc b/program/localization/fr_FR/labels.inc
index dd0acf4f1..14d1066f9 100644
--- a/program/localization/fr_FR/labels.inc
+++ b/program/localization/fr_FR/labels.inc
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'Orthographe';
$labels['checkspelling'] = 'Vérifier l\'orthographe';
$labels['resumeediting'] = 'Retourner à l\'édition';
$labels['revertto'] = 'Revenir à';
+$labels['responses'] = 'Réponses';
+$labels['insertresponse'] = 'Insérer une réponse';
+$labels['manageresponses'] = 'Gérer les réponses';
+$labels['savenewresponse'] = 'Sauvegarder une nouvelle réponse';
+$labels['editresponses'] = 'Editer les réponses';
+$labels['editresponse'] = 'Editer la réponse';
+$labels['responsename'] = 'Nom';
+$labels['responsetext'] = 'Texte de la réponse';
$labels['attach'] = 'Joindre';
$labels['attachments'] = 'Fichiers joints';
$labels['upload'] = 'Transférer';
diff --git a/program/localization/hu_HU/labels.inc b/program/localization/hu_HU/labels.inc
index 648ac759f..f8d6a1c23 100644
--- a/program/localization/hu_HU/labels.inc
+++ b/program/localization/hu_HU/labels.inc
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'Helyesírás ellenőrzés';
$labels['checkspelling'] = 'Helyesírás-ellenőrzés';
$labels['resumeediting'] = 'Helyesírás-ellenőrzés vége';
$labels['revertto'] = 'Visszaállítás erre';
+$labels['responses'] = 'Válaszok';
+$labels['insertresponse'] = 'Egy válasz beillesztése';
+$labels['manageresponses'] = 'Válaszok kezelése';
+$labels['savenewresponse'] = 'Új válasz mentése';
+$labels['editresponses'] = 'Válaszok szerkesztése';
+$labels['editresponse'] = 'Válasz szerkesztése';
+$labels['responsename'] = 'Név';
+$labels['responsetext'] = 'Válasz Szöveg';
$labels['attach'] = 'Csatolás';
$labels['attachments'] = 'Csatolmányok';
$labels['upload'] = 'Feltöltés';
diff --git a/program/localization/hu_HU/messages.inc b/program/localization/hu_HU/messages.inc
index 3ca87a52f..79de6ed2b 100644
--- a/program/localization/hu_HU/messages.inc
+++ b/program/localization/hu_HU/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Az üzenet elküldve';
$messages['savingmessage'] = 'Az üzenet mentése...';
$messages['messagesaved'] = 'Az üzenet elmentve a Piszkozatokhoz';
$messages['successfullysaved'] = 'A mentés sikerült';
+$messages['savingresponse'] = 'A válasz szövegének mentése...';
+$messages['deleteresponseconfirm'] = 'Biztosan törli ezt a válasz szöveget?';
$messages['addedsuccessfully'] = 'A kapcsolat hozzáadása a címjegyzékhez megtörtént';
$messages['contactexists'] = 'Ezzel az e-mail címmel már létezik kapcsolat';
$messages['contactnameexists'] = 'Ezzel a névvel már létezik kapcsolat';
@@ -54,6 +56,8 @@ $messages['contactnotfound'] = 'A kiválasztott kapcsolat nem található';
$messages['contactsearchonly'] = 'Adjon meg keresőkifejezéseket a kapcsolatok közti kereséshez';
$messages['sendingfailed'] = 'Az üzenet elküldése nem sikerült';
$messages['senttooquickly'] = 'Kérem várjon még $sec másodpercet az üzenet elküldése előtt';
+$messages['errorsavingsent'] = 'Hiba történt az elküldött üzenet mentése közben';
+$messages['errorsaving'] = 'A mentés során hiba lépett fel';
$messages['errormoving'] = 'Az üzenet(ek)et nem sikerült áthelyezni';
$messages['errorcopying'] = 'Az üzenet(ek)et nem sikerült másolni';
$messages['errordeleting'] = 'Az üzenet(ek)et nem sikerült törölni';
@@ -140,6 +144,7 @@ $messages['smtperror'] = 'SMTP hiba ($code): $msg';
$messages['emailformaterror'] = 'Helytelen formátumú e-mail cím: $email';
$messages['toomanyrecipients'] = 'Túl sok a címzett. Csökkentse a címzettek számát maximum $max címre!';
$messages['maxgroupmembersreached'] = 'A csoport létszáma meghaladja a maximum $max főt';
+$messages['internalerror'] = 'Belső hiba történt. Kérjük próbálja újra!';
$messages['contactdelerror'] = 'Hiba a kapcsolat(ok) törlésekor';
$messages['contactdeleted'] = 'Kapcsolat(ok) sikeresen törölve';
$messages['contactrestoreerror'] = 'Nem sikerült a törölt kapcsolat(ok) helyreállítása';
diff --git a/program/localization/it_IT/messages.inc b/program/localization/it_IT/messages.inc
index c5a81044e..0fd084f1b 100644
--- a/program/localization/it_IT/messages.inc
+++ b/program/localization/it_IT/messages.inc
@@ -54,6 +54,8 @@ $messages['contactnotfound'] = 'Il contatto richiesto non è stato trovato';
$messages['contactsearchonly'] = 'Inserisci dei termini per cercare i contatti';
$messages['sendingfailed'] = 'Impossibile inviare il messaggio';
$messages['senttooquickly'] = 'Per favore, attendi $sec secondi prima di inviare questo messaggio';
+$messages['errorsavingsent'] = 'Si è verificato un errore nel savare il messaggio inviato.';
+$messages['errorsaving'] = 'Si è verificato un errore nel salvataggio.';
$messages['errormoving'] = 'Impossibile spostare il messaggio';
$messages['errorcopying'] = 'Impossibile copiare il messaggio';
$messages['errordeleting'] = 'Impossibile eliminare il messaggio';
@@ -140,6 +142,7 @@ $messages['smtperror'] = 'Errore SMTP: $msg';
$messages['emailformaterror'] = 'Indirizzo e-mail non corretto: $email';
$messages['toomanyrecipients'] = 'Numero eccessivo di destinatari, ridurlo a $max';
$messages['maxgroupmembersreached'] = 'Il numero dei membri del gruppo eccede il massimo di $max';
+$messages['internalerror'] = 'Si è verificato un errore interno. Riprovare più tardi.';
$messages['contactdelerror'] = 'Impossibile eliminare il/i contatto/i';
$messages['contactdeleted'] = 'Contatto/i correttamente eliminato/i';
$messages['contactrestoreerror'] = 'Impossibile ripristinare il/i contatto/i cancellato/i';
diff --git a/program/localization/ja_JP/labels.inc b/program/localization/ja_JP/labels.inc
index aadc8fce0..ef52695bb 100644
--- a/program/localization/ja_JP/labels.inc
+++ b/program/localization/ja_JP/labels.inc
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'スペル';
$labels['checkspelling'] = 'スペルチェック';
$labels['resumeediting'] = '編集を再開';
$labels['revertto'] = '元に戻す';
+$labels['responses'] = '回答';
+$labels['insertresponse'] = '回答を挿入';
+$labels['manageresponses'] = '回答を管理';
+$labels['savenewresponse'] = '新しい回答を保存';
+$labels['editresponses'] = '回答を編集';
+$labels['editresponse'] = '回答を編集';
+$labels['responsename'] = '名前';
+$labels['responsetext'] = '回答の文章';
$labels['attach'] = '添付';
$labels['attachments'] = '添付ファイル';
$labels['upload'] = 'アップロード';
diff --git a/program/localization/ja_JP/messages.inc b/program/localization/ja_JP/messages.inc
index fb03bc0f8..abe5a6e7a 100644
--- a/program/localization/ja_JP/messages.inc
+++ b/program/localization/ja_JP/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'メッセージを送信しました。';
$messages['savingmessage'] = 'メッセージを保存中...';
$messages['messagesaved'] = 'メッセージを下書きに保存しました。';
$messages['successfullysaved'] = '保存しました。';
+$messages['savingresponse'] = '回答の文章を保存中...';
+$messages['deleteresponseconfirm'] = 'この回答の文章を本当に削除しますか?';
$messages['addedsuccessfully'] = '連絡先をアドレス帳に追加しました。';
$messages['contactexists'] = '同じメールアドレスの連絡先が既に存在します。';
$messages['contactnameexists'] = '同じ名前の連絡先が既に存在します。';
diff --git a/program/localization/lb_LU/labels.inc b/program/localization/lb_LU/labels.inc
index d32a263a1..cbd5a12a8 100644
--- a/program/localization/lb_LU/labels.inc
+++ b/program/localization/lb_LU/labels.inc
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'Orthographie';
$labels['checkspelling'] = 'Orthographie kontrolléieren';
$labels['resumeediting'] = 'Weider editéieren';
$labels['revertto'] = 'Zréck bei';
+$labels['responses'] = 'Äntwerten';
+$labels['insertresponse'] = 'Äntwert afügen';
+$labels['manageresponses'] = 'Äntwerte geréieren';
+$labels['savenewresponse'] = 'Nei Äntwert späicheren';
+$labels['editresponses'] = 'Äntwerten Editéieren';
+$labels['editresponse'] = 'Äntwert editéieren';
+$labels['responsename'] = 'Numm';
+$labels['responsetext'] = 'Äntwert-Text';
$labels['attach'] = 'Drunhänken';
$labels['attachments'] = 'Unhäng';
$labels['upload'] = 'Eroplueden';
@@ -316,7 +324,11 @@ $labels['searchdelete'] = 'Sich läschen';
$labels['import'] = 'Importéieren';
$labels['importcontacts'] = 'Kontakter importéieren';
$labels['importfromfile'] = 'Aus Fichier importéieren:';
+$labels['importtarget'] = 'Kontakter dobäisetze bei';
$labels['importreplace'] = 'Dat ganzt Adressbuch ersetzen';
+$labels['importgroups'] = 'Gruppen-Zouweisung importéieren';
+$labels['importgroupsall'] = 'All (nei Gruppen uleeën falls néideg)';
+$labels['importgroupsexisting'] = 'Just fir Gruppen déi schon existéieren';
$labels['importdesc'] = 'Du kanns Kontakter aus engem existéierenden Adressbuch eroplueden.<br/>Mir ënnerstëtze momentan en Adress-Import vum <a href="http://en.wikipedia.org/wiki/VCard">vCard</a>- oder CSV (mat Komma getrennt)-Date-Format.';
$labels['done'] = 'Erleedegt';
$labels['settingsfor'] = 'Astellunge fir';
diff --git a/program/localization/lb_LU/messages.inc b/program/localization/lb_LU/messages.inc
index 8ef0b2f6c..fc053b59e 100644
--- a/program/localization/lb_LU/messages.inc
+++ b/program/localization/lb_LU/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Message erfollegräich verschéckt.';
$messages['savingmessage'] = 'Message gëtt gespäichert...';
$messages['messagesaved'] = 'Message als Brouillon gespäichert.';
$messages['successfullysaved'] = 'Erfollegräich gespäichert.';
+$messages['savingresponse'] = 'Äntwert-Text gëtt gespäichert...';
+$messages['deleteresponseconfirm'] = 'Wëlls du dësen Äntwert-Text wierklech läschen?';
$messages['addedsuccessfully'] = 'Kontakt erfollegräich an d\'Adressbuch gesat.';
$messages['contactexists'] = 'Et existéiert schon e Kontakt mat der selweschter E-Mail-Adress.';
$messages['contactnameexists'] = 'Et existéiert schon e Kontakt mam selweschten Numm.';
@@ -54,6 +56,8 @@ $messages['contactnotfound'] = 'Den ugefrotene Kontakt gouf net fonnt.';
$messages['contactsearchonly'] = 'Gëff e puer Sichbegrëffer a fir Kontakter ze fannen';
$messages['sendingfailed'] = 'De Message konnt net verschéckt ginn.';
$messages['senttooquickly'] = 'Waart wann ech gelift $sec Sekonn(en) bevir s du de Message verschécks. ';
+$messages['errorsavingsent'] = 'Beim Späichere vum geschéckte Message ass e Feeler opgetruden.';
+$messages['errorsaving'] = 'Beim Späicheren ass e Feeler opgetrueden.';
$messages['errormoving'] = 'D\'Messagë konnten net verréckelt ginn.';
$messages['errorcopying'] = 'D\'Messagë konnten net kopéiert ginn.';
$messages['errordeleting'] = 'D\'Messagë konnten net geläscht ginn.';
@@ -140,6 +144,7 @@ $messages['smtperror'] = 'SMTP-Feeler: $msg';
$messages['emailformaterror'] = 'Ongëlteg E-Mail-Adress: $email';
$messages['toomanyrecipients'] = 'Zevill Empfänger. Reduzéier d\'Zuel vun den Empfänger op $max.';
$messages['maxgroupmembersreached'] = 'D\'Unzuel vu Gruppememberen iwwersteigt de Maximum vun $max.';
+$messages['internalerror'] = 'En interne Feeler ass opgetrueden. Probéier w.e.gl nach eng Kéier.';
$messages['contactdelerror'] = 'Kontakter konnten net geläscht ginn.';
$messages['contactdeleted'] = 'Kontakter erfollegräich geläscht.';
$messages['contactrestoreerror'] = 'Déi geläschte Kontakter konnten net recuperéiert ginn.';
diff --git a/program/localization/lv_LV/labels.inc b/program/localization/lv_LV/labels.inc
index 95afc4c49..0f80350bb 100644
--- a/program/localization/lv_LV/labels.inc
+++ b/program/localization/lv_LV/labels.inc
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'Izrunāt';
$labels['checkspelling'] = 'Pārbaudīt pareizrakstību';
$labels['resumeediting'] = 'Turpināt rediģēšanu';
$labels['revertto'] = 'Atgriezt uz';
+$labels['responses'] = 'Atbildes';
+$labels['insertresponse'] = 'Ievietot atbildi';
+$labels['manageresponses'] = 'Pārvaldīt atbildes';
+$labels['savenewresponse'] = 'Saglabāt jauno atbildi';
+$labels['editresponses'] = 'Rediģēt atbildes';
+$labels['editresponse'] = 'Rediģēt atbildi';
+$labels['responsename'] = 'Vārds';
+$labels['responsetext'] = 'Atbildes teksts';
$labels['attach'] = 'Pievienot';
$labels['attachments'] = 'Pielikumi';
$labels['upload'] = 'Augšupielādēt';
@@ -318,6 +326,7 @@ $labels['importcontacts'] = 'Importēt kontaktus';
$labels['importfromfile'] = 'Importēt no faila:';
$labels['importtarget'] = 'Kontaktus pievienot';
$labels['importreplace'] = 'Aizvietot visu adrešu grāmatu';
+$labels['importgroups'] = 'Importēt grupu piesaistes';
$labels['importgroupsall'] = 'Visus (ja nepieciešams, izveidojiet grupas)';
$labels['importgroupsexisting'] = 'Tikai esošām grupām';
$labels['importdesc'] = 'Jūs varat ieimportēt kontaktus no jau esošas adrešu grāmatas.<br/>Uz doto brīdi tiek atbalstīti <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> vai CSV (ar komatu atdalītie) datu formāti.';
diff --git a/program/localization/lv_LV/messages.inc b/program/localization/lv_LV/messages.inc
index f27b01b84..55cff4134 100644
--- a/program/localization/lv_LV/messages.inc
+++ b/program/localization/lv_LV/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Vēstule nosūtīta veiksmīgi';
$messages['savingmessage'] = 'Vēstule tiek saglabāta ...';
$messages['messagesaved'] = 'Vēstule saglabāta Uzmetumos';
$messages['successfullysaved'] = 'Veiksmīgi saglabāts.';
+$messages['savingresponse'] = 'Tiek saglabāts atbildes teksts ...';
+$messages['deleteresponseconfirm'] = 'Vai Jūs tiešām gribat dzēst šo atbildes tekstu?';
$messages['addedsuccessfully'] = 'Kontakts veiksmīgi pievienots adrešu grāmatai';
$messages['contactexists'] = 'Kontakts ar šādu e-pasta adresi jau eksistē';
$messages['contactnameexists'] = 'Kontakts ar šādu vārdu jau eksistē.';
@@ -54,6 +56,8 @@ $messages['contactnotfound'] = 'Pieprasītais kontakts nav atrasts';
$messages['contactsearchonly'] = 'Lai atrastu kontaktus, ievadiet meklēšanas kritērijus';
$messages['sendingfailed'] = 'Vēstule netika nosūtīta';
$messages['senttooquickly'] = 'Lūdzu uzgaidiet $sec sekundi(-es) pirms sūtiet šo vēstuli';
+$messages['errorsavingsent'] = 'Saglabājot nosūtīto vēstuli notika kļūda - vēstule netika saglabāta';
+$messages['errorsaving'] = 'Saglabājot vēstuli notika kļūda - vēstule netika saglabāta';
$messages['errormoving'] = 'Vēstule(s) netika pārvietota(s)';
$messages['errorcopying'] = 'Vēstules pārkopēt neizdevās';
$messages['errordeleting'] = 'Vēstules izdzēst neizdevās';
@@ -140,6 +144,7 @@ $messages['smtperror'] = 'SMTP kļūda: $msg';
$messages['emailformaterror'] = 'Nepareiza e-pasta adrese: $email';
$messages['toomanyrecipients'] = 'Pārāk daudz saņēmēju. Samaziniet skaitu līdz $max.';
$messages['maxgroupmembersreached'] = 'Grupas dalībnieku skaits pārsniedz limitu $max.';
+$messages['internalerror'] = 'Atgadījās servera iekšējā kļūda. Lūdzu mēģiniet vēlreiz.';
$messages['contactdelerror'] = 'Kontaktus izdzēst neizdevās.';
$messages['contactdeleted'] = 'Kontakti izdzēsti veiksmīgi.';
$messages['contactrestoreerror'] = 'Izdzēstos kontaktus atjaunot neizdevās.';
diff --git a/program/localization/nl_NL/labels.inc b/program/localization/nl_NL/labels.inc
index f0e4a74b4..b5f273659 100644
--- a/program/localization/nl_NL/labels.inc
+++ b/program/localization/nl_NL/labels.inc
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'Spelling';
$labels['checkspelling'] = 'Controleer spelling';
$labels['resumeediting'] = 'Doorgaan met opstellen';
$labels['revertto'] = 'Terugwijzigen in';
+$labels['responses'] = 'Reacties';
+$labels['insertresponse'] = 'Reactie invoegen';
+$labels['manageresponses'] = 'Reacties beheren';
+$labels['savenewresponse'] = 'Nieuwe reactie opslaan';
+$labels['editresponses'] = 'Bewerk reactie';
+$labels['editresponse'] = 'Bewerk reactie';
+$labels['responsename'] = 'Naam';
+$labels['responsetext'] = 'Reactie';
$labels['attach'] = 'Bijvoegen';
$labels['attachments'] = 'Bijlagen';
$labels['upload'] = 'Toevoegen';
diff --git a/program/localization/nl_NL/messages.inc b/program/localization/nl_NL/messages.inc
index 22f9e0f6b..f6081bd8e 100644
--- a/program/localization/nl_NL/messages.inc
+++ b/program/localization/nl_NL/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Bericht succesvol verstuurd.';
$messages['savingmessage'] = 'Bericht wordt opgeslagen...';
$messages['messagesaved'] = 'Bericht opgeslagen in Concepten.';
$messages['successfullysaved'] = 'Succesvol opgeslagen.';
+$messages['savingresponse'] = 'Reactie wordt opgeslagen...';
+$messages['deleteresponseconfirm'] = 'Weet u zeker dat u deze reactie wilt verwijderen?';
$messages['addedsuccessfully'] = 'Contactpersoon succesvol toegevoegd aan het adresboek.';
$messages['contactexists'] = 'Er bestaat al een contactpersoon met dit e-mailadres.';
$messages['contactnameexists'] = 'Er bestaat al een contactpersoon met deze naam.';
diff --git a/program/localization/pt_BR/labels.inc b/program/localization/pt_BR/labels.inc
index 13db63e99..e42b1ce95 100644
--- a/program/localization/pt_BR/labels.inc
+++ b/program/localization/pt_BR/labels.inc
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'Revisar';
$labels['checkspelling'] = 'Verificar ortografia';
$labels['resumeediting'] = 'Continuar a edição';
$labels['revertto'] = 'Reverter para';
+$labels['responses'] = 'Respostas';
+$labels['insertresponse'] = 'Inserir uma resposta';
+$labels['manageresponses'] = 'Gerenciar respostas';
+$labels['savenewresponse'] = 'Salvar nova resposta';
+$labels['editresponses'] = 'Editar respostas';
+$labels['editresponse'] = 'Editar resposta';
+$labels['responsename'] = 'Nome';
+$labels['responsetext'] = 'Texto da resposta';
$labels['attach'] = 'Anexar';
$labels['attachments'] = 'Anexos';
$labels['upload'] = 'Enviar arquivo';
diff --git a/program/localization/pt_BR/messages.inc b/program/localization/pt_BR/messages.inc
index 2f5782373..823dad22e 100644
--- a/program/localization/pt_BR/messages.inc
+++ b/program/localization/pt_BR/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Mensagem enviada com sucesso';
$messages['savingmessage'] = 'Salvando Mensagem...';
$messages['messagesaved'] = 'Mensagem salva em Rascunhos';
$messages['successfullysaved'] = 'Salvo com sucesso';
+$messages['savingresponse'] = 'Salvando texto de resposta...';
+$messages['deleteresponseconfirm'] = 'Você realmente deseja apagar este texto de resposta?';
$messages['addedsuccessfully'] = 'Contato incluído com sucesso no catálogo de endereços.';
$messages['contactexists'] = 'Já existe um contato com esse mesmo e-mail.';
$messages['contactnameexists'] = 'Já existe um contato com o mesmo nome.';
@@ -54,6 +56,8 @@ $messages['contactnotfound'] = 'O contato solicitado não foi encontrado.';
$messages['contactsearchonly'] = 'Informe os termos de pesquisa para localizar os contatos';
$messages['sendingfailed'] = 'Falha no envio da mensagem.';
$messages['senttooquickly'] = 'Aguarde $sec s para enviar a mensagem.';
+$messages['errorsavingsent'] = 'Ocorreu um erro ao salvar a mensagem enviada.';
+$messages['errorsaving'] = 'Ocorreu um erro ao salvar.';
$messages['errormoving'] = 'Não foi possível mover a(s) mensagem(ns).';
$messages['errorcopying'] = 'Não foi possível copiar a(s) mensagem(ns).';
$messages['errordeleting'] = 'Não foi possível apagar a(s) mensagem(ns).';
@@ -140,6 +144,7 @@ $messages['smtperror'] = 'Erro SMTP: $msg';
$messages['emailformaterror'] = 'Endereço de e-mail inválido: $email';
$messages['toomanyrecipients'] = 'Há muitos destinatários. Reduza o número de destinatários para $max.';
$messages['maxgroupmembersreached'] = 'O número de membros do grupo excede o máximo de $max';
+$messages['internalerror'] = 'Ocorreu um erro interno. Por favor tente novamente.';
$messages['contactdelerror'] = 'Não foi possível excluir o(s) contato(s).';
$messages['contactdeleted'] = 'Contato(s) excluído(s) com sucesso.';
$messages['contactrestoreerror'] = 'Não foi possivel recuperar o(s) contato(s) excluído(s).';
diff --git a/program/localization/pt_PT/labels.inc b/program/localization/pt_PT/labels.inc
index b12830031..b6db8a41e 100644
--- a/program/localization/pt_PT/labels.inc
+++ b/program/localization/pt_PT/labels.inc
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'Corrector Ortográfico';
$labels['checkspelling'] = 'Verificar ortografia';
$labels['resumeediting'] = 'Continuar a edição';
$labels['revertto'] = 'Reverter para';
+$labels['responses'] = 'Respostas';
+$labels['insertresponse'] = 'Insira uma resposta';
+$labels['manageresponses'] = 'Gerir respostas';
+$labels['savenewresponse'] = 'Gravar nova resposta';
+$labels['editresponses'] = 'Editar respostas';
+$labels['editresponse'] = 'Editar resposta';
+$labels['responsename'] = 'Nome';
+$labels['responsetext'] = 'Texto da resposta';
$labels['attach'] = 'Anexar';
$labels['attachments'] = 'Anexos';
$labels['upload'] = 'Carregar';
diff --git a/program/localization/pt_PT/messages.inc b/program/localization/pt_PT/messages.inc
index 06e78198d..fed7fa09e 100644
--- a/program/localization/pt_PT/messages.inc
+++ b/program/localization/pt_PT/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Mensagem enviada com sucesso';
$messages['savingmessage'] = 'A guardar mensagem...';
$messages['messagesaved'] = 'Mensagem guardada como rascunho';
$messages['successfullysaved'] = 'Guardado com sucesso';
+$messages['savingresponse'] = 'A guardar texto de resposta...';
+$messages['deleteresponseconfirm'] = 'Deseja realmente apagar este texto de resposta?';
$messages['addedsuccessfully'] = 'Contacto adicionado com sucesso';
$messages['contactexists'] = 'Já existe um contacto com este e-mail';
$messages['contactnameexists'] = 'Já existe um contacto com este nome.';
diff --git a/program/localization/ru_RU/messages.inc b/program/localization/ru_RU/messages.inc
index d8da5ee5c..2509ba49b 100644
--- a/program/localization/ru_RU/messages.inc
+++ b/program/localization/ru_RU/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Сообщение отправлено.';
$messages['savingmessage'] = 'Сохранение сообщения...';
$messages['messagesaved'] = 'Сохранено в Черновиках.';
$messages['successfullysaved'] = 'Сохранено.';
+$messages['savingresponse'] = 'Сохранение текста ответа...';
+$messages['deleteresponseconfirm'] = 'Вы действительно хотите удалить этот текст ответа?';
$messages['addedsuccessfully'] = 'Контакт добавлен в адресную книгу.';
$messages['contactexists'] = 'Контакт с этим адресом e-mail уже существует.';
$messages['contactnameexists'] = 'Контакт с таким именем уже существует.';
diff --git a/program/localization/sk_SK/labels.inc b/program/localization/sk_SK/labels.inc
index 36d9850a0..93bca166f 100644
--- a/program/localization/sk_SK/labels.inc
+++ b/program/localization/sk_SK/labels.inc
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'Pravopis';
$labels['checkspelling'] = 'Skontrolovať pravopis';
$labels['resumeediting'] = 'Pokračovať v úpravách';
$labels['revertto'] = 'Vrátiť sa na';
+$labels['responses'] = 'Odpovede';
+$labels['insertresponse'] = 'Vložiť odpoveď';
+$labels['manageresponses'] = 'Spravovať odpovede';
+$labels['savenewresponse'] = 'Uložiť novú odpoveď';
+$labels['editresponses'] = 'Upraviť odpovede';
+$labels['editresponse'] = 'Upraviť odpoveď';
+$labels['responsename'] = 'Meno';
+$labels['responsetext'] = 'Text odpovede';
$labels['attach'] = 'Priložiť';
$labels['attachments'] = 'Prílohy';
$labels['upload'] = 'Nahrať';
diff --git a/program/localization/sk_SK/messages.inc b/program/localization/sk_SK/messages.inc
index db830c2a7..71d5d52c1 100644
--- a/program/localization/sk_SK/messages.inc
+++ b/program/localization/sk_SK/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Správa bola úspešne odoslaná';
$messages['savingmessage'] = 'Správa sa ukladá...';
$messages['messagesaved'] = 'Správa bola uložená medzi Rozpísané správy';
$messages['successfullysaved'] = 'Úspešne uložená';
+$messages['savingresponse'] = 'Ukladanie textu odpovede...';
+$messages['deleteresponseconfirm'] = 'Naozaj chcete vymazať text odpovede?';
$messages['addedsuccessfully'] = 'Kontakt bol pridaný do adresára';
$messages['contactexists'] = 'Kontakt s touto e-mailovou adresou už existuje';
$messages['contactnameexists'] = 'Kontakt s rovnakým menom už existuje.';
@@ -54,6 +56,8 @@ $messages['contactnotfound'] = 'Požadovaný kontakt nebol nájdený';
$messages['contactsearchonly'] = 'Zadaj nejaký vyhľadávací výraz pre hľadanie kontaktov.';
$messages['sendingfailed'] = 'Odosielanie správy zlyhalo';
$messages['senttooquickly'] = 'Počkajte $sec sekúnd pred odoslaním tejto správy';
+$messages['errorsavingsent'] = 'Počas ukladania odoslanej správy nastala chyba.';
+$messages['errorsaving'] = 'Počas ukladania nastala chyba.';
$messages['errormoving'] = 'Správa sa nedá presunúť';
$messages['errorcopying'] = 'Správa sa nedá skopírovať';
$messages['errordeleting'] = 'Správa sa nedá zmazať';
@@ -140,6 +144,7 @@ $messages['smtperror'] = 'Chyba SMTP: $msg';
$messages['emailformaterror'] = 'Neplatná e-mailová adresa: $email';
$messages['toomanyrecipients'] = 'Príliš veľa príjemcov. Zmenšite počet príjemcov na $max.';
$messages['maxgroupmembersreached'] = 'Počet členov skupiny dosiahol maxima z $max';
+$messages['internalerror'] = 'Došlo k internej chybe systému. Prosím skúste to ešte raz.';
$messages['contactdelerror'] = 'Nemôžem vymazať kontakt(y)';
$messages['contactdeleted'] = 'Kontakt(y) bol vymazaný';
$messages['contactrestoreerror'] = 'Nemôžem obnoviť zmazané kontakty';
diff --git a/program/localization/sl_SI/labels.inc b/program/localization/sl_SI/labels.inc
index f93684d69..f1e9010d4 100644
--- a/program/localization/sl_SI/labels.inc
+++ b/program/localization/sl_SI/labels.inc
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'Črkovanje';
$labels['checkspelling'] = 'Preglej pravopis';
$labels['resumeediting'] = 'Nadaljuj z urejanjem';
$labels['revertto'] = 'Razveljavi';
+$labels['responses'] = 'Odgovori';
+$labels['insertresponse'] = 'Vnesi odgovor';
+$labels['manageresponses'] = 'Uredi odgovore';
+$labels['savenewresponse'] = 'Shrani nove odgovore';
+$labels['editresponses'] = 'Uredi odgovore';
+$labels['editresponse'] = 'Uredi odgovor';
+$labels['responsename'] = 'Ime';
+$labels['responsetext'] = 'Tekst za odgovor';
$labels['attach'] = 'Pripni';
$labels['attachments'] = 'Priponke';
$labels['upload'] = 'Naloži';
@@ -316,7 +324,11 @@ $labels['searchdelete'] = 'Izbriši iskanje';
$labels['import'] = 'Uvozi';
$labels['importcontacts'] = 'Uvozi stike';
$labels['importfromfile'] = 'Uvozi iz datoteke:';
+$labels['importtarget'] = 'Dodaj stike v';
$labels['importreplace'] = 'Zamenjaj celoten imenik';
+$labels['importgroups'] = 'Vnesi skupinske zadolžitve';
+$labels['importgroupsall'] = 'Vse (ustvari skupine, če je potrebno)';
+$labels['importgroupsexisting'] = 'Samo za obstoječe skupine';
$labels['importdesc'] = 'Stike lahko naložite iz obstoječega imenika. <br/>Trenutno je podprt uvoz stikov v zapisu <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> ali v CSV (z vejico ločene vrednosti) zapisu.';
$labels['done'] = 'Dokončano';
$labels['settingsfor'] = 'Nastavitve za';
diff --git a/program/localization/sl_SI/messages.inc b/program/localization/sl_SI/messages.inc
index f1beffc0f..3d1ea677c 100644
--- a/program/localization/sl_SI/messages.inc
+++ b/program/localization/sl_SI/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Sporočilo je bilo uspešno poslano.';
$messages['savingmessage'] = 'Shranjevanje sporočila...';
$messages['messagesaved'] = 'Sporočilo je bilo shranjeno v Osnutke';
$messages['successfullysaved'] = 'Uspešno shranjeno.';
+$messages['savingresponse'] = 'Shranjevanje odgovora...';
+$messages['deleteresponseconfirm'] = 'Ste prepričani, da želite izbrisati ta odgovor?';
$messages['addedsuccessfully'] = 'Stik je bil uspešno dodan v imenik.';
$messages['contactexists'] = 'Stik s tem elektronskim naslovom že obstaja.';
$messages['contactnameexists'] = 'Stik s tem imenom že obstaja';
@@ -54,6 +56,8 @@ $messages['contactnotfound'] = 'Iskanega stika ni bilo mogoče najti.';
$messages['contactsearchonly'] = 'Vpišite iskalni parameter za iskanje stika';
$messages['sendingfailed'] = 'Sporočila ni bilo mogoče poslati.';
$messages['senttooquickly'] = 'Počakajte $sec sekund in nato znova poskusite s pošiljanjem sporočila.';
+$messages['errorsavingsent'] = 'Pri shranjevanju poslanega sporočila je prišlo do napake.';
+$messages['errorsaving'] = 'Pri shranjevanju je prišlo do napake.';
$messages['errormoving'] = 'Sporočila ni bilo mogoče premakniti.';
$messages['errorcopying'] = 'Sporočila ni bilo mogoče kopirati.';
$messages['errordeleting'] = 'Sporočila ni bilo mogoče izbrisati.';
@@ -140,6 +144,7 @@ $messages['smtperror'] = 'Napaka pri pošiljanju:$msg';
$messages['emailformaterror'] = 'Nepravilen elektronski naslov: $email';
$messages['toomanyrecipients'] = 'Navedli ste preveč prejemnikov. Zmanjšajte število prejemnikov na $max';
$messages['maxgroupmembersreached'] = 'Število članov skupine presega največje dovoljeno število $max.';
+$messages['internalerror'] = 'Prišlo je do napake. Poskusite znova.';
$messages['contactdelerror'] = 'Stika/ov ni bilo mogoče izbrisati';
$messages['contactdeleted'] = 'Stik/i so bili uspešno izbrisani';
$messages['contactrestoreerror'] = 'Ni bilo mogoče obnoviti izbrisanih stikov.';
diff --git a/program/localization/sv_SE/labels.inc b/program/localization/sv_SE/labels.inc
index 48f71ab57..8116afeff 100644
--- a/program/localization/sv_SE/labels.inc
+++ b/program/localization/sv_SE/labels.inc
@@ -197,6 +197,14 @@ $labels['spellcheck'] = 'Rättstava';
$labels['checkspelling'] = 'Kontrollera stavning';
$labels['resumeediting'] = 'Återuppta redigering';
$labels['revertto'] = 'Återgå till';
+$labels['responses'] = 'Responser';
+$labels['insertresponse'] = 'Infoga respons';
+$labels['manageresponses'] = 'Hantera responser';
+$labels['savenewresponse'] = 'Spara ny respons';
+$labels['editresponses'] = 'Ändra responser';
+$labels['editresponse'] = 'Ändra respons';
+$labels['responsename'] = 'Namn';
+$labels['responsetext'] = 'Responstext';
$labels['attach'] = 'Bifoga';
$labels['attachments'] = 'Bilagor';
$labels['upload'] = 'Bifoga';
diff --git a/program/localization/sv_SE/messages.inc b/program/localization/sv_SE/messages.inc
index 2773ae4c7..16bbd5a23 100644
--- a/program/localization/sv_SE/messages.inc
+++ b/program/localization/sv_SE/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Meddelandet har skickats.';
$messages['savingmessage'] = 'Sparar meddelande...';
$messages['messagesaved'] = 'Meddelandet har sparats i Utkast';
$messages['successfullysaved'] = 'Informationen har sparats.';
+$messages['savingresponse'] = 'Sparar responstext...';
+$messages['deleteresponseconfirm'] = 'Vill du verkligen ta bort denna responstext?';
$messages['addedsuccessfully'] = 'Kontakten har lagts till i adressboken.';
$messages['contactexists'] = 'En kontakt med den här adressen finns redan';
$messages['contactnameexists'] = 'En kontakt med det här namnet finns redan';
@@ -54,6 +56,8 @@ $messages['contactnotfound'] = 'Efterfrågad kontakt hittades inte';
$messages['contactsearchonly'] = 'Ange sökord för att hitta kontakter';
$messages['sendingfailed'] = 'Meddelandet kunde inte skickas';
$messages['senttooquickly'] = 'Vänta ytterligare $sec sekunder med att skicka meddelandet';
+$messages['errorsavingsent'] = 'Ett fel inträffade när det skickade meddelandet skulle sparas';
+$messages['errorsaving'] = 'Meddelandet kunde inte sparas';
$messages['errormoving'] = 'Meddelandet kunde inte flyttas';
$messages['errorcopying'] = 'Meddelandet kunde inte kopieras';
$messages['errordeleting'] = 'Meddelandet kunde inte tas bort';
@@ -140,6 +144,7 @@ $messages['smtperror'] = 'SMTP-fel: $msg';
$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. Försök igen.';
$messages['contactdelerror'] = 'Kontakt kunde inte tas bort';
$messages['contactdeleted'] = 'Kontakt borttagen.';
$messages['contactrestoreerror'] = 'Borttagna kontakter kunde inte återskapas';
diff --git a/program/localization/tr_TR/messages.inc b/program/localization/tr_TR/messages.inc
index 0b2ac1e46..182fc966b 100644
--- a/program/localization/tr_TR/messages.inc
+++ b/program/localization/tr_TR/messages.inc
@@ -44,6 +44,8 @@ $messages['messagesent'] = 'Posta gönderildi';
$messages['savingmessage'] = 'Posta kaydediliyor...';
$messages['messagesaved'] = 'Posta taslaklara kaydedildi';
$messages['successfullysaved'] = 'Kaydedildi';
+$messages['savingresponse'] = 'Yanıt metni kaydediliyor...';
+$messages['deleteresponseconfirm'] = 'Yanıt metnini gerçekten silmek istiyor musunuz?';
$messages['addedsuccessfully'] = 'Kişi adres defterine eklendi';
$messages['contactexists'] = 'Rehberde bu e-posta adresine sahip biri zaten var';
$messages['contactnameexists'] = 'Rehberde bu ada sahip biri zaten var.';
@@ -54,6 +56,8 @@ $messages['contactnotfound'] = 'İstenen kişi bulunamadı';
$messages['contactsearchonly'] = 'Kişi aramak için arama terimleri giriniz';
$messages['sendingfailed'] = 'Posta gönderilemedi';
$messages['senttooquickly'] = 'Lütfen bu postayı göndermeden önce $sec saniye bekleyin';
+$messages['errorsavingsent'] = 'Gönderilen postayı kaydederken hata oluştu.';
+$messages['errorsaving'] = 'Kaydederken bir hata oluştu.';
$messages['errormoving'] = 'Posta taşınamadı';
$messages['errorcopying'] = 'Posta kopyalanamadı';
$messages['errordeleting'] = 'Posta silinemedi';
@@ -140,6 +144,7 @@ $messages['smtperror'] = 'SMTP Hatası: $msg';
$messages['emailformaterror'] = 'Hatalı e-posta adresi: $email';
$messages['toomanyrecipients'] = 'Çok fazla alıcı. En fazla $max alıcı girebilirsiniz.';
$messages['maxgroupmembersreached'] = 'Grup üyelerinin sayısı $max sınırını aşıyor.';
+$messages['internalerror'] = 'Dahili bir hata oluştu. Lütfen tekrar deneyin.';
$messages['contactdelerror'] = 'Kişi(ler) silinemedi';
$messages['contactdeleted'] = 'Kişi(ler) silindi';
$messages['contactrestoreerror'] = 'Silinen kişi(ler) geri getirilemiyor.';
diff --git a/program/localization/uk_UA/messages.inc b/program/localization/uk_UA/messages.inc
index 669190c2e..620e1520b 100644
--- a/program/localization/uk_UA/messages.inc
+++ b/program/localization/uk_UA/messages.inc
@@ -53,6 +53,7 @@ $messages['contactnotfound'] = 'Запитаний контакт не знай
$messages['contactsearchonly'] = 'Введіть деякі критерії пошуку, щоб знайти контакти';
$messages['sendingfailed'] = 'Не вдалося відправити листа';
$messages['senttooquickly'] = 'Будь ласка, зачекайте $sec секунд для відправки листа';
+$messages['errorsavingsent'] = 'Помилка при збереженні відправленого повідомлення.';
$messages['errormoving'] = 'Не вдалося перемістити листи';
$messages['errorcopying'] = 'Не вдалося зкопіювати листи';
$messages['errordeleting'] = 'Не вдалося видалити листи';
@@ -96,6 +97,7 @@ $messages['converting'] = 'Видалення форматування...';
$messages['messageopenerror'] = 'Не вдалося завантажити повідомлення з сервера';
$messages['fileuploaderror'] = 'Не вдалося вкласти файл';
$messages['filesizeerror'] = 'Розмір вибраного файлу перевищує максимально дозволений ($size)';
+$messages['copyerror'] = 'Не вдалося скопіювати жодного контакту.';
$messages['sourceisreadonly'] = 'Дане джерело адрес доступне лише для читання';
$messages['errorsavingcontact'] = 'Неможливо зберегти адресу контакту';
$messages['movingmessage'] = 'Переміщення листа...';
diff --git a/program/steps/addressbook/save.inc b/program/steps/addressbook/save.inc
index 2adc53bcf..7911802b9 100644
--- a/program/steps/addressbook/save.inc
+++ b/program/steps/addressbook/save.inc
@@ -80,8 +80,8 @@ foreach ($GLOBALS['CONTACT_COLTYPES'] as $col => $colprop) {
// normalize the submitted date strings
if ($colprop['type'] == 'date') {
- if ($timestamp = rcube_utils::strtotime($a_record[$col])) {
- $a_record[$col] = date('Y-m-d', $timestamp);
+ if ($a_record[$col] && ($dt = rcube_utils::anytodatetime($a_record[$col]))) {
+ $a_record[$col] = $dt->format('Y-m-d');
}
else {
unset($a_record[$col]);
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 70441e0d7..78a977b82 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -97,6 +97,7 @@ if (empty($RCMAIL->action) || $RCMAIL->action == 'list') {
$OUTPUT->set_env('delimiter', $delimiter);
$OUTPUT->set_env('threading', $threading);
$OUTPUT->set_env('threads', $threading || $RCMAIL->storage->get_capability('THREAD'));
+ $OUTPUT->set_env('reply_all_mode', (int) $RCMAIL->config->get('reply_all_mode'));
$OUTPUT->set_env('preview_pane_mark_read', $RCMAIL->config->get('preview_pane_mark_read', 0));
if ($RCMAIL->storage->get_capability('QUOTA')) {
$OUTPUT->set_env('quota', true);
@@ -1775,28 +1776,34 @@ function rcmail_identity_select($MESSAGE, $identities = null, $compose_mode = 'r
}
}
- $from_idx = null;
- $found_idx = null;
- $default_identity = 0; // default identity is always first on the list
+ // decode From: address
+ $from = rcube_mime::decode_address_list($MESSAGE->headers->from, null, true, $MESSAGE->headers->charset);
+ $from = array_shift($from);
+ $from['mailto'] = strtolower($from['mailto']);
+
+ $from_idx = null;
+ $found_idx = array('to' => null, 'from' => null);
+ $check_from = in_array($compose_mode, array('draft', 'edit', 'reply'));
// Select identity
foreach ($identities as $idx => $ident) {
- // use From header
- if (in_array($compose_mode, array('draft', 'edit'))) {
- if ($MESSAGE->headers->from == $ident['ident']) {
+ // use From: header when in edit/draft or reply-to-self
+ if ($check_from && $from['mailto'] == strtolower($ident['email_ascii'])) {
+ // remember first matching identity address
+ if ($found_idx['from'] === null) {
+ $found_idx['from'] = $idx;
+ }
+ // match identity name
+ if ($from['name'] && $ident['name'] && $from['name'] == $ident['name']) {
$from_idx = $idx;
break;
}
}
- // reply to yourself
- else if ($compose_mode == 'reply' && $MESSAGE->headers->from == $ident['ident']) {
- $from_idx = $idx;
- break;
- }
- // use replied message recipients
+ // use replied/forwarded message recipients
else if (($found = array_search(strtolower($ident['email_ascii']), $a_recipients)) !== false) {
- if ($found_idx === null) {
- $found_idx = $idx;
+ // remember first matching identity address
+ if ($found_idx['to'] === null) {
+ $found_idx['to'] = $idx;
}
// match identity name
if ($a_names[$found] && $ident['name'] && $a_names[$found] == $ident['name']) {
@@ -1806,9 +1813,10 @@ function rcmail_identity_select($MESSAGE, $identities = null, $compose_mode = 'r
}
}
- // If matching by name+address doesn't found any matches, get first found address (identity)
+ // If matching by name+address didn't find any matches,
+ // get first found identity (address) if any
if ($from_idx === null) {
- $from_idx = $found_idx;
+ $from_idx = $found_idx['from'] !== null ? $found_idx['from'] : $found_idx['to'];
}
// Try Return-Path
@@ -1839,7 +1847,8 @@ function rcmail_identity_select($MESSAGE, $identities = null, $compose_mode = 'r
$selected = $plugin['selected'];
- return $identities[$selected !== null ? $selected : $default_identity];
+ // default identity is always first on the list
+ return $identities[$selected !== null ? $selected : 0];
}
// Fixes some content-type names
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index ccb8978be..52b02ecff 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -615,22 +615,39 @@ else {
}
// add stored attachments, if any
-if (is_array($COMPOSE['attachments']))
-{
+if (is_array($COMPOSE['attachments'])) {
foreach ($COMPOSE['attachments'] as $id => $attachment) {
// This hook retrieves the attachment contents from the file storage backend
$attachment = $RCMAIL->plugins->exec_hook('attachment_get', $attachment);
- $dispurl = '/\ssrc\s*=\s*[\'"]*\S+display-attachment\S+file=rcmfile' . preg_quote($attachment['id']) . '[\s\'"]*/';
- $message_body = $MAIL_MIME->getHTMLBody();
- if ($isHtml && (preg_match($dispurl, $message_body) > 0)) {
- $message_body = preg_replace($dispurl, ' src="'.$attachment['name'].'" ', $message_body);
+ if ($isHtml) {
+ $dispurl = '/\ssrc\s*=\s*[\'"]*\S+display-attachment\S+file=rcmfile' . preg_quote($attachment['id']) . '[\s\'"]*/';
+ $message_body = $MAIL_MIME->getHTMLBody();
+ $is_inline = preg_match($dispurl, $message_body);
+ }
+ else {
+ $is_inline = false;
+ }
+
+ // inline image
+ if ($is_inline) {
+ // Mail_Mime does not support many inline attachments with the same name (#1489406)
+ // we'll generate cid: urls here to workaround this
+ $cid = preg_replace('/[^0-9a-zA-Z]/', '', uniqid(time(), true));
+ if (preg_match('#(@[0-9a-zA-Z\-\.]+)#', $from, $matches)) {
+ $cid .= $matches[1];
+ } else {
+ $cid .= '@localhost';
+ }
+
+ $message_body = preg_replace($dispurl, ' src="cid:' . $cid . '" ', $message_body);
+
$MAIL_MIME->setHTMLBody($message_body);
if ($attachment['data'])
- $MAIL_MIME->addHTMLImage($attachment['data'], $attachment['mimetype'], $attachment['name'], false);
+ $MAIL_MIME->addHTMLImage($attachment['data'], $attachment['mimetype'], $attachment['name'], false, $cid);
else
- $MAIL_MIME->addHTMLImage($attachment['path'], $attachment['mimetype'], $attachment['name'], true);
+ $MAIL_MIME->addHTMLImage($attachment['path'], $attachment['mimetype'], $attachment['name'], true, $cid);
}
else {
$ctype = str_replace('image/pjpeg', 'image/jpeg', $attachment['mimetype']); // #1484914
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index 38bb09c8d..c922aca08 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -869,6 +869,24 @@ function rcmail_user_prefs($current = null)
$select_default_font_size->show($RCMAIL->config->get('default_font_size', 1))
);
}
+
+ if (!isset($no_override['reply_all_mode'])) {
+ if (!$current) {
+ continue 2;
+ }
+
+ $field_id = 'rcmfd_reply_all_mode';
+ $select = new html_select(array('name' => '_reply_all_mode', 'id' => $field_id));
+
+ $select->add(rcube_label('replyalldefault'), 0);
+ $select->add(rcube_label('replyalllist'), 1);
+
+ $blocks['main']['options']['reply_all_mode'] = array(
+ 'title' => html::label($field_id, Q(rcube_label('replyallmode'))),
+ 'content' => $select->show(intval($config['reply_all_mode'])),
+ );
+ }
+
break;
// Addressbook config
diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc
index 717c7ad8c..bcd05bb85 100644
--- a/program/steps/settings/save_prefs.inc
+++ b/program/steps/settings/save_prefs.inc
@@ -90,6 +90,7 @@ switch ($CURR_SECTION)
'strip_existing_sig' => isset($_POST['_strip_existing_sig']),
'default_font' => get_input_value('_default_font', RCUBE_INPUT_POST),
'default_font_size' => get_input_value('_default_font_size', RCUBE_INPUT_POST),
+ 'reply_all_mode' => intval($_POST['_reply_all_mode']),
'forward_attachment' => !empty($_POST['_forward_attachment']),
);
diff --git a/skins/classic/functions.js b/skins/classic/functions.js
index 4ad13136f..8d81c3ad2 100644
--- a/skins/classic/functions.js
+++ b/skins/classic/functions.js
@@ -625,7 +625,7 @@ prev_sibling: function(elm)
enable_command: function(p)
{
- if (p.command == 'reply-list') {
+ if (p.command == 'reply-list' && rcmail.env.reply_all_mode == 1) {
var label = rcmail.gettext(p.status ? 'replylist' : 'replyall');
$('a.button.replyAll').attr('title', label);
}
diff --git a/skins/classic/mail.css b/skins/classic/mail.css
index 7f150714d..dce49b36f 100644
--- a/skins/classic/mail.css
+++ b/skins/classic/mail.css
@@ -989,6 +989,7 @@ table.messagelist.fixedcopy
#listmenu
{
padding: 6px;
+ max-height: none;
}
#listmenu legend
diff --git a/skins/larry/ui.js b/skins/larry/ui.js
index d558f16a2..0fd0241f7 100644
--- a/skins/larry/ui.js
+++ b/skins/larry/ui.js
@@ -473,7 +473,7 @@ function rcube_mail_ui()
function enable_command(p)
{
- if (p.command == 'reply-list') {
+ if (p.command == 'reply-list' && rcmail.env.reply_all_mode == 1) {
var label = rcmail.gettext(p.status ? 'replylist' : 'replyall');
if (rcmail.env.action == 'preview')
$('a.button.replyall').attr('title', label);
diff --git a/tests/Framework/Utils.php b/tests/Framework/Utils.php
index 2f4aec32e..1f1e57b0e 100644
--- a/tests/Framework/Utils.php
+++ b/tests/Framework/Utils.php
@@ -294,6 +294,32 @@ class Framework_Utils extends PHPUnit_Framework_TestCase
}
/**
+ * rcube:utils::anytodatetime()
+ */
+ function test_anytodatetime()
+ {
+ $test = array(
+ '2013-04-22' => '2013-04-22',
+ '2013/04/22' => '2013-04-22',
+ '2013.04.22' => '2013-04-22',
+ '22-04-2013' => '2013-04-22',
+ '22/04/2013' => '2013-04-22',
+ '22.04.2013' => '2013-04-22',
+ '04/22/2013' => '2013-04-22',
+ '22.4.2013' => '2013-04-22',
+ '20130422' => '2013-04-22',
+ '1900-10-10' => '1900-10-10',
+ '01-01-1900' => '1900-01-01',
+ '01/30/1960' => '1960-01-30'
+ );
+
+ foreach ($test as $datetime => $ts) {
+ $result = rcube_utils::anytodatetime($datetime);
+ $this->assertSame($ts, $result ? $result->format('Y-m-d') : '', "Error parsing date: $datetime");
+ }
+ }
+
+ /**
* rcube:utils::normalize _string()
*/
function test_normalize_string()
diff --git a/tests/MailFunc.php b/tests/MailFunc.php
index 08cbd4ed0..ab0074ef2 100644
--- a/tests/MailFunc.php
+++ b/tests/MailFunc.php
@@ -217,4 +217,52 @@ class MailFunc extends PHPUnit_Framework_TestCase
$this->assertSame($identities[1], $res);
}
+
+ /**
+ * Test identities selection (#1489378)
+ */
+ function test_rcmail_identity_select2()
+ {
+ $identities = array(
+ array(
+ 'name' => 'Test 1',
+ 'email_ascii' => 'addr1@domain.tld',
+ 'ident' => 'Test 1 <addr1@domain.tld>',
+ ),
+ array(
+ 'name' => 'Test 2',
+ 'email_ascii' => 'addr2@domain.tld',
+ 'ident' => 'Test 2 <addr2@domain.tld>',
+ ),
+ array(
+ 'name' => 'Test 3',
+ 'email_ascii' => 'addr3@domain.tld',
+ 'ident' => 'Test 3 <addr3@domain.tld>',
+ ),
+ array(
+ 'name' => 'Test 4',
+ 'email_ascii' => 'addr2@domain.tld',
+ 'ident' => 'Test 4 <addr2@domain.tld>',
+ ),
+ );
+
+ $message = new stdClass;
+ $message->headers = new rcube_message_header;
+
+ $message->headers->set('From', '<addr2@domain.tld>');
+ $res = rcmail_identity_select($message, $identities);
+ $this->assertSame($identities[1], $res);
+
+ $message->headers->set('From', 'Test 2 <addr2@domain.tld>');
+ $res = rcmail_identity_select($message, $identities);
+ $this->assertSame($identities[1], $res);
+
+ $message->headers->set('From', 'Other <addr2@domain.tld>');
+ $res = rcmail_identity_select($message, $identities);
+ $this->assertSame($identities[1], $res);
+
+ $message->headers->set('From', 'Test 4 <addr2@domain.tld>');
+ $res = rcmail_identity_select($message, $identities);
+ $this->assertSame($identities[3], $res);
+ }
}