summaryrefslogtreecommitdiff
path: root/program
diff options
context:
space:
mode:
Diffstat (limited to 'program')
-rw-r--r--program/.htaccess4
-rw-r--r--program/include/clisetup.php2
-rw-r--r--program/include/iniset.php1
-rw-r--r--program/include/rcmail.php1692
-rw-r--r--program/include/rcmail_html_page.php5
-rw-r--r--program/include/rcmail_output_html.php78
-rw-r--r--program/include/rcmail_string_replacer.php21
-rw-r--r--program/js/app.js1155
-rw-r--r--program/js/common.js89
-rw-r--r--program/js/editor.js7
-rw-r--r--program/js/list.js329
-rw-r--r--program/js/tiny_mce/langs/en.js2
-rw-r--r--program/js/tiny_mce/license.txt2
-rw-r--r--program/js/tiny_mce/plugins/advlink/js/advlink.js10
-rw-r--r--program/js/tiny_mce/plugins/autolink/editor_plugin.js2
-rw-r--r--program/js/tiny_mce/plugins/autolink/editor_plugin_src.js4
-rw-r--r--program/js/tiny_mce/plugins/emotions/langs/en_dlg.js2
-rw-r--r--program/js/tiny_mce/plugins/example/editor_plugin_src.js2
-rw-r--r--program/js/tiny_mce/plugins/fullscreen/editor_plugin.js2
-rw-r--r--program/js/tiny_mce/plugins/fullscreen/editor_plugin_src.js131
-rw-r--r--program/js/tiny_mce/plugins/fullscreen/fullscreen.htm25
-rw-r--r--program/js/tiny_mce/plugins/inlinepopups/editor_plugin.js2
-rw-r--r--program/js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js26
-rw-r--r--program/js/tiny_mce/plugins/media/js/media.js44
-rw-r--r--program/js/tiny_mce/plugins/media/langs/en_dlg.js2
-rw-r--r--program/js/tiny_mce/plugins/paste/editor_plugin.js2
-rw-r--r--program/js/tiny_mce/plugins/paste/editor_plugin_src.js28
-rw-r--r--program/js/tiny_mce/plugins/searchreplace/js/searchreplace.js6
-rw-r--r--program/js/tiny_mce/plugins/spellchecker/editor_plugin.js2
-rw-r--r--program/js/tiny_mce/plugins/spellchecker/editor_plugin_src.js45
-rw-r--r--program/js/tiny_mce/plugins/style/langs/en_dlg.js2
-rw-r--r--program/js/tiny_mce/plugins/table/editor_plugin.js2
-rw-r--r--program/js/tiny_mce/plugins/table/editor_plugin_src.js15
-rw-r--r--program/js/tiny_mce/plugins/table/js/row.js17
-rw-r--r--program/js/tiny_mce/plugins/table/js/table.js14
-rw-r--r--program/js/tiny_mce/plugins/table/row.htm30
-rw-r--r--program/js/tiny_mce/themes/advanced/editor_template.js2
-rw-r--r--program/js/tiny_mce/themes/advanced/editor_template_src.js16
-rw-r--r--program/js/tiny_mce/themes/advanced/langs/en_dlg.js2
-rw-r--r--program/js/tiny_mce/tiny_mce.js2
-rw-r--r--program/js/tiny_mce/tiny_mce_popup.js2
-rw-r--r--program/js/tiny_mce/tiny_mce_src.js532
-rw-r--r--program/js/treelist.js60
-rw-r--r--program/lib/Crypt/GPG.php812
-rw-r--r--program/lib/Crypt/GPG/ByteUtils.php105
-rw-r--r--program/lib/Crypt/GPG/DecryptStatusHandler.php40
-rw-r--r--program/lib/Crypt/GPG/Engine.php560
-rw-r--r--program/lib/Crypt/GPG/Exceptions.php129
-rw-r--r--program/lib/Crypt/GPG/Key.php2
-rw-r--r--program/lib/Crypt/GPG/KeyGenerator.php790
-rw-r--r--program/lib/Crypt/GPG/KeyGeneratorErrorHandler.php121
-rw-r--r--program/lib/Crypt/GPG/KeyGeneratorStatusHandler.php173
-rw-r--r--program/lib/Crypt/GPG/PinEntry.php875
-rw-r--r--program/lib/Crypt/GPG/ProcessControl.php150
-rw-r--r--program/lib/Crypt/GPG/Signature.php9
-rw-r--r--program/lib/Crypt/GPG/SubKey.php27
-rw-r--r--program/lib/Crypt/GPG/UserId.php2
-rw-r--r--program/lib/Crypt/GPG/VerifyStatusHandler.php2
-rw-r--r--program/lib/Crypt/GPGAbstract.php508
-rw-r--r--program/lib/Roundcube/html.php23
-rw-r--r--program/lib/Roundcube/rcube.php49
-rw-r--r--program/lib/Roundcube/rcube_addressbook.php34
-rw-r--r--program/lib/Roundcube/rcube_base_replacer.php4
-rw-r--r--program/lib/Roundcube/rcube_browser.php36
-rw-r--r--program/lib/Roundcube/rcube_charset.php10
-rw-r--r--program/lib/Roundcube/rcube_config.php6
-rw-r--r--program/lib/Roundcube/rcube_contacts.php56
-rw-r--r--program/lib/Roundcube/rcube_csv2vcard.php10
-rw-r--r--program/lib/Roundcube/rcube_db.php31
-rw-r--r--program/lib/Roundcube/rcube_html2text.php13
-rw-r--r--program/lib/Roundcube/rcube_imap.php57
-rw-r--r--program/lib/Roundcube/rcube_imap_cache.php13
-rw-r--r--program/lib/Roundcube/rcube_imap_generic.php11
-rw-r--r--program/lib/Roundcube/rcube_imap_search.php4
-rw-r--r--program/lib/Roundcube/rcube_ldap.php92
-rw-r--r--program/lib/Roundcube/rcube_message.php17
-rw-r--r--program/lib/Roundcube/rcube_mime.php16
-rw-r--r--program/lib/Roundcube/rcube_plugin.php8
-rw-r--r--program/lib/Roundcube/rcube_plugin_api.php13
-rw-r--r--program/lib/Roundcube/rcube_result_thread.php33
-rw-r--r--program/lib/Roundcube/rcube_session.php45
-rw-r--r--program/lib/Roundcube/rcube_spellcheck_atd.php204
-rw-r--r--program/lib/Roundcube/rcube_spellcheck_enchant.php182
-rw-r--r--program/lib/Roundcube/rcube_spellcheck_engine.php91
-rw-r--r--program/lib/Roundcube/rcube_spellcheck_googie.php176
-rw-r--r--program/lib/Roundcube/rcube_spellcheck_pspell.php189
-rw-r--r--program/lib/Roundcube/rcube_spellchecker.php498
-rw-r--r--program/lib/Roundcube/rcube_storage.php12
-rw-r--r--program/lib/Roundcube/rcube_string_replacer.php41
-rw-r--r--program/lib/Roundcube/rcube_user.php50
-rw-r--r--program/lib/Roundcube/rcube_utils.php133
-rw-r--r--program/lib/Roundcube/rcube_vcard.php33
-rw-r--r--program/lib/Roundcube/rcube_washtml.php92
-rw-r--r--program/localization/ar_SA/labels.inc101
-rw-r--r--program/localization/ar_SA/messages.inc24
-rw-r--r--program/localization/ast/labels.inc66
-rw-r--r--program/localization/ast/messages.inc6
-rw-r--r--program/localization/az_AZ/labels.inc97
-rw-r--r--program/localization/az_AZ/messages.inc12
-rw-r--r--program/localization/be_BE/labels.inc925
-rw-r--r--program/localization/be_BE/messages.inc310
-rw-r--r--program/localization/ber/labels.inc1
-rw-r--r--program/localization/bg_BG/labels.inc77
-rw-r--r--program/localization/bg_BG/messages.inc6
-rw-r--r--program/localization/bn_BD/labels.inc290
-rw-r--r--program/localization/bn_BD/messages.inc91
-rw-r--r--program/localization/br/labels.inc339
-rw-r--r--program/localization/br/messages.inc103
-rw-r--r--program/localization/bs_BA/labels.inc83
-rw-r--r--program/localization/bs_BA/messages.inc6
-rw-r--r--program/localization/ca_ES/labels.inc173
-rw-r--r--program/localization/ca_ES/messages.inc32
-rw-r--r--program/localization/cs_CZ/labels.inc85
-rw-r--r--program/localization/cs_CZ/messages.inc15
-rw-r--r--program/localization/cy_GB/labels.inc64
-rw-r--r--program/localization/cy_GB/messages.inc5
-rw-r--r--program/localization/da_DK/labels.inc89
-rw-r--r--program/localization/da_DK/messages.inc12
-rw-r--r--program/localization/de_CH/labels.inc77
-rw-r--r--program/localization/de_CH/messages.inc8
-rw-r--r--program/localization/de_DE/labels.inc72
-rw-r--r--program/localization/de_DE/messages.inc6
-rw-r--r--program/localization/el_GR/labels.inc70
-rw-r--r--program/localization/el_GR/messages.inc13
-rw-r--r--program/localization/en_CA/labels.inc496
-rw-r--r--program/localization/en_CA/messages.inc176
-rw-r--r--program/localization/en_GB/labels.inc81
-rw-r--r--program/localization/en_GB/messages.inc17
-rw-r--r--program/localization/en_US/labels.inc16
-rw-r--r--program/localization/en_US/messages.inc3
-rw-r--r--program/localization/eo/labels.inc219
-rw-r--r--program/localization/eo/messages.inc95
-rw-r--r--program/localization/es_419/labels.inc423
-rw-r--r--program/localization/es_419/messages.inc26
-rw-r--r--program/localization/es_AR/labels.inc126
-rw-r--r--program/localization/es_AR/messages.inc15
-rw-r--r--program/localization/es_ES/labels.inc81
-rw-r--r--program/localization/es_ES/messages.inc16
-rw-r--r--program/localization/et_EE/labels.inc68
-rw-r--r--program/localization/et_EE/messages.inc13
-rw-r--r--program/localization/eu_ES/labels.inc535
-rw-r--r--program/localization/eu_ES/messages.inc6
-rw-r--r--program/localization/fa_AF/labels.inc290
-rw-r--r--program/localization/fa_AF/messages.inc78
-rw-r--r--program/localization/fa_IR/labels.inc114
-rw-r--r--program/localization/fa_IR/messages.inc9
-rw-r--r--program/localization/fi_FI/labels.inc86
-rw-r--r--program/localization/fi_FI/messages.inc32
-rw-r--r--program/localization/fr_FR/csv2vcard.inc11
-rw-r--r--program/localization/fr_FR/labels.inc76
-rw-r--r--program/localization/fr_FR/messages.inc218
-rw-r--r--program/localization/fy_NL/labels.inc457
-rw-r--r--program/localization/fy_NL/messages.inc155
-rw-r--r--[-rwxr-xr-x]program/localization/ga_IE/labels.inc351
-rw-r--r--[-rwxr-xr-x]program/localization/ga_IE/messages.inc107
-rw-r--r--program/localization/gl_ES/labels.inc237
-rw-r--r--program/localization/gl_ES/messages.inc159
-rw-r--r--program/localization/he_IL/labels.inc70
-rw-r--r--program/localization/he_IL/messages.inc13
-rw-r--r--program/localization/hi_IN/labels.inc352
-rw-r--r--program/localization/hi_IN/messages.inc110
-rw-r--r--program/localization/hr_HR/labels.inc106
-rw-r--r--program/localization/hr_HR/messages.inc23
-rw-r--r--program/localization/hu_HU/labels.inc77
-rw-r--r--program/localization/hu_HU/messages.inc8
-rw-r--r--program/localization/hy_AM/labels.inc99
-rw-r--r--program/localization/hy_AM/messages.inc21
-rw-r--r--program/localization/ia/labels.inc255
-rw-r--r--program/localization/ia/messages.inc135
-rw-r--r--program/localization/id_ID/labels.inc75
-rw-r--r--program/localization/id_ID/messages.inc20
-rw-r--r--program/localization/index.inc4
-rw-r--r--program/localization/is_IS/labels.inc105
-rw-r--r--program/localization/is_IS/messages.inc118
-rw-r--r--program/localization/it_IT/labels.inc93
-rw-r--r--program/localization/it_IT/messages.inc12
-rw-r--r--program/localization/ja_JP/labels.inc85
-rw-r--r--program/localization/ja_JP/messages.inc8
-rw-r--r--[-rwxr-xr-x]program/localization/ka_GE/labels.inc186
-rw-r--r--[-rwxr-xr-x]program/localization/ka_GE/messages.inc60
-rw-r--r--program/localization/km_KH/labels.inc157
-rw-r--r--program/localization/km_KH/messages.inc49
-rw-r--r--program/localization/ko_KR/labels.inc88
-rw-r--r--program/localization/ko_KR/messages.inc20
-rw-r--r--program/localization/ku/labels.inc363
-rw-r--r--program/localization/ku/messages.inc103
-rw-r--r--program/localization/lb_LU/labels.inc82
-rw-r--r--program/localization/lb_LU/messages.inc7
-rw-r--r--program/localization/lt_LT/labels.inc97
-rw-r--r--program/localization/lt_LT/messages.inc9
-rw-r--r--program/localization/lv_LV/labels.inc78
-rw-r--r--program/localization/lv_LV/messages.inc18
-rw-r--r--[-rwxr-xr-x]program/localization/mk_MK/labels.inc270
-rw-r--r--[-rwxr-xr-x]program/localization/mk_MK/messages.inc78
-rw-r--r--program/localization/ml_IN/labels.inc268
-rw-r--r--program/localization/ml_IN/messages.inc149
-rw-r--r--[-rwxr-xr-x]program/localization/mr_IN/labels.inc161
-rw-r--r--[-rwxr-xr-x]program/localization/mr_IN/messages.inc62
-rw-r--r--program/localization/ms_MY/labels.inc262
-rw-r--r--program/localization/ms_MY/messages.inc103
-rw-r--r--program/localization/nb_NO/labels.inc70
-rw-r--r--program/localization/nb_NO/messages.inc11
-rw-r--r--program/localization/ne_NP/labels.inc333
-rw-r--r--program/localization/ne_NP/messages.inc107
-rw-r--r--program/localization/nl_BE/labels.inc172
-rw-r--r--program/localization/nl_BE/messages.inc15
-rw-r--r--program/localization/nl_NL/labels.inc85
-rw-r--r--program/localization/nl_NL/messages.inc6
-rw-r--r--program/localization/nn_NO/labels.inc75
-rw-r--r--program/localization/nn_NO/messages.inc15
-rw-r--r--program/localization/pl_PL/csv2vcard.inc7
-rw-r--r--program/localization/pl_PL/labels.inc76
-rw-r--r--program/localization/pl_PL/messages.inc12
-rw-r--r--[-rwxr-xr-x]program/localization/ps/labels.inc290
-rw-r--r--[-rwxr-xr-x]program/localization/ps/messages.inc91
-rw-r--r--program/localization/pt_BR/labels.inc77
-rw-r--r--program/localization/pt_BR/messages.inc6
-rw-r--r--program/localization/pt_PT/labels.inc89
-rw-r--r--program/localization/pt_PT/messages.inc10
-rw-r--r--program/localization/ro_RO/labels.inc64
-rw-r--r--program/localization/ro_RO/messages.inc80
-rw-r--r--program/localization/ru_RU/labels.inc82
-rw-r--r--program/localization/ru_RU/messages.inc6
-rw-r--r--program/localization/si_LK/labels.inc226
-rw-r--r--program/localization/si_LK/messages.inc88
-rw-r--r--program/localization/sk_SK/csv2vcard.inc93
-rw-r--r--program/localization/sk_SK/labels.inc427
-rw-r--r--program/localization/sk_SK/messages.inc286
-rw-r--r--program/localization/sl_SI/labels.inc78
-rw-r--r--program/localization/sl_SI/messages.inc12
-rw-r--r--program/localization/sq_AL/labels.inc363
-rw-r--r--program/localization/sq_AL/messages.inc103
-rw-r--r--program/localization/sr_CS/labels.inc124
-rw-r--r--program/localization/sr_CS/messages.inc15
-rw-r--r--program/localization/sv_SE/labels.inc83
-rw-r--r--program/localization/sv_SE/messages.inc6
-rw-r--r--program/localization/ta_IN/labels.inc270
-rw-r--r--program/localization/ta_IN/messages.inc78
-rw-r--r--program/localization/th_TH/labels.inc248
-rw-r--r--program/localization/th_TH/messages.inc91
-rw-r--r--program/localization/tr_TR/labels.inc85
-rw-r--r--program/localization/tr_TR/messages.inc19
-rw-r--r--program/localization/uk_UA/labels.inc83
-rw-r--r--program/localization/uk_UA/messages.inc27
-rw-r--r--program/localization/ur_PK/labels.inc40
-rw-r--r--program/localization/ur_PK/messages.inc18
-rw-r--r--program/localization/vi_VN/labels.inc81
-rw-r--r--program/localization/vi_VN/messages.inc15
-rw-r--r--program/localization/zh_CN/labels.inc134
-rw-r--r--program/localization/zh_CN/messages.inc147
-rw-r--r--program/localization/zh_TW/csv2vcard.inc9
-rw-r--r--program/localization/zh_TW/labels.inc72
-rw-r--r--program/localization/zh_TW/messages.inc22
-rw-r--r--program/steps/addressbook/copy.inc9
-rw-r--r--program/steps/addressbook/delete.inc26
-rw-r--r--program/steps/addressbook/edit.inc132
-rw-r--r--program/steps/addressbook/export.inc86
-rw-r--r--program/steps/addressbook/func.inc217
-rw-r--r--program/steps/addressbook/groups.inc207
-rw-r--r--program/steps/addressbook/import.inc332
-rw-r--r--program/steps/addressbook/mailto.inc29
-rw-r--r--program/steps/addressbook/move.inc4
-rw-r--r--program/steps/addressbook/photo.inc8
-rw-r--r--program/steps/addressbook/save.inc321
-rw-r--r--program/steps/addressbook/search.inc34
-rw-r--r--program/steps/addressbook/show.inc49
-rw-r--r--program/steps/addressbook/undo.inc8
-rw-r--r--program/steps/addressbook/upload_photo.inc16
-rw-r--r--program/steps/mail/addcontact.inc121
-rw-r--r--program/steps/mail/attachments.inc255
-rw-r--r--program/steps/mail/autocomplete.inc217
-rw-r--r--program/steps/mail/check_recent.inc28
-rw-r--r--program/steps/mail/compose.inc2520
-rw-r--r--program/steps/mail/copy.inc13
-rw-r--r--program/steps/mail/folders.inc35
-rw-r--r--program/steps/mail/func.inc2798
-rw-r--r--program/steps/mail/get.inc656
-rw-r--r--program/steps/mail/getunread.inc52
-rw-r--r--program/steps/mail/headers.inc5
-rw-r--r--program/steps/mail/import.inc17
-rw-r--r--program/steps/mail/list.inc30
-rw-r--r--program/steps/mail/list_contacts.inc20
-rw-r--r--program/steps/mail/mark.inc227
-rw-r--r--program/steps/mail/move_del.inc35
-rw-r--r--program/steps/mail/pagenav.inc14
-rw-r--r--program/steps/mail/search.inc172
-rw-r--r--program/steps/mail/search_contacts.inc8
-rw-r--r--program/steps/mail/sendmail.inc1269
-rw-r--r--program/steps/mail/sendmdn.inc17
-rw-r--r--program/steps/mail/show.inc523
-rw-r--r--program/steps/mail/viewsource.inc66
-rw-r--r--program/steps/settings/about.inc127
-rw-r--r--program/steps/settings/delete_identity.inc46
-rw-r--r--program/steps/settings/edit_folder.inc109
-rw-r--r--program/steps/settings/edit_identity.inc252
-rw-r--r--program/steps/settings/edit_prefs.inc84
-rw-r--r--program/steps/settings/edit_response.inc108
-rw-r--r--program/steps/settings/folders.inc139
-rw-r--r--program/steps/settings/func.inc378
-rw-r--r--program/steps/settings/identities.inc29
-rw-r--r--program/steps/settings/responses.inc133
-rw-r--r--program/steps/settings/save_folder.inc38
-rw-r--r--program/steps/settings/save_identity.inc224
-rw-r--r--program/steps/settings/save_prefs.inc240
-rw-r--r--program/steps/utils/error.inc73
-rw-r--r--program/steps/utils/html2text.inc2
-rw-r--r--program/steps/utils/modcss.inc2
-rw-r--r--program/steps/utils/save_pref.inc24
-rw-r--r--program/steps/utils/spell.inc11
-rw-r--r--program/steps/utils/spell_html.inc2
310 files changed, 18424 insertions, 22809 deletions
diff --git a/program/.htaccess b/program/.htaccess
deleted file mode 100644
index be9e7e25a..000000000
--- a/program/.htaccess
+++ /dev/null
@@ -1,4 +0,0 @@
-<IfModule mod_rewrite.c>
-RewriteEngine On
-RewriteRule !^(js|resources) - [F]
-</IfModule>
diff --git a/program/include/clisetup.php b/program/include/clisetup.php
index 07e318521..47a40719a 100644
--- a/program/include/clisetup.php
+++ b/program/include/clisetup.php
@@ -20,7 +20,7 @@
*/
if (php_sapi_name() != 'cli') {
- die('Not on the "shell" (php-cli).');
+ die('Not on the "shell" (php-cli).');
}
require_once INSTALL_PATH . 'program/include/iniset.php';
diff --git a/program/include/iniset.php b/program/include/iniset.php
index 919cc7682..f6ad466da 100644
--- a/program/include/iniset.php
+++ b/program/include/iniset.php
@@ -84,4 +84,3 @@ function rcmail_autoload($classname)
return false;
}
-
diff --git a/program/include/rcmail.php b/program/include/rcmail.php
index 0483f0e18..a927b7946 100644
--- a/program/include/rcmail.php
+++ b/program/include/rcmail.php
@@ -5,8 +5,8 @@
| program/include/rcmail.php |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2008-2012, The Roundcube Dev Team |
- | Copyright (C) 2011-2012, Kolab Systems AG |
+ | Copyright (C) 2008-2013, The Roundcube Dev Team |
+ | Copyright (C) 2011-2013, Kolab Systems AG |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -21,7 +21,6 @@
+-----------------------------------------------------------------------+
*/
-
/**
* Application class of Roundcube Webmail
* implemented as singleton
@@ -30,575 +29,640 @@
*/
class rcmail extends rcube
{
- /**
- * Main tasks.
- *
- * @var array
- */
- static public $main_tasks = array('mail','settings','addressbook','login','logout','utils','dummy');
-
- /**
- * Current task.
- *
- * @var string
- */
- public $task;
-
- /**
- * Current action.
- *
- * @var string
- */
- public $action = '';
- public $comm_path = './';
- public $filename = '';
-
- private $address_books = array();
- private $action_map = array();
-
-
- const ERROR_STORAGE = -2;
- const ERROR_INVALID_REQUEST = 1;
- const ERROR_INVALID_HOST = 2;
- const ERROR_COOKIES_DISABLED = 3;
-
-
- /**
- * This implements the 'singleton' design pattern
- *
- * @param string Environment name to run (e.g. live, dev, test)
- * @return rcmail The one and only instance
- */
- static function get_instance($env = '')
- {
- if (!self::$instance || !is_a(self::$instance, 'rcmail')) {
- self::$instance = new rcmail($env);
- self::$instance->startup(); // init AFTER object was linked with self::$instance
- }
+ /**
+ * Main tasks.
+ *
+ * @var array
+ */
+ static public $main_tasks = array('mail','settings','addressbook','login','logout','utils','dummy');
- return self::$instance;
- }
-
-
- /**
- * Initial startup function
- * to register session, create database and imap connections
- */
- protected function startup()
- {
- $this->init(self::INIT_WITH_DB | self::INIT_WITH_PLUGINS);
-
- // set filename if not index.php
- if (($basename = basename($_SERVER['SCRIPT_FILENAME'])) && $basename != 'index.php')
- $this->filename = $basename;
-
- // start session
- $this->session_init();
-
- // create user object
- $this->set_user(new rcube_user($_SESSION['user_id']));
-
- // set task and action properties
- $this->set_task(rcube_utils::get_input_value('_task', rcube_utils::INPUT_GPC));
- $this->action = asciiwords(rcube_utils::get_input_value('_action', rcube_utils::INPUT_GPC));
-
- // reset some session parameters when changing task
- if ($this->task != 'utils') {
- // we reset list page when switching to another task
- // but only to the main task interface - empty action (#1489076)
- // this will prevent from unintentional page reset on cross-task requests
- if ($this->session && $_SESSION['task'] != $this->task && empty($this->action))
- $this->session->remove('page');
- // set current task to session
- $_SESSION['task'] = $this->task;
- }
+ /**
+ * Current task.
+ *
+ * @var string
+ */
+ public $task;
- // init output class
- if (!empty($_REQUEST['_remote']))
- $GLOBALS['OUTPUT'] = $this->json_init();
- else
- $GLOBALS['OUTPUT'] = $this->load_gui(!empty($_REQUEST['_framed']));
-
- // load plugins
- $this->plugins->init($this, $this->task);
- $this->plugins->load_plugins((array)$this->config->get('plugins', array()), array('filesystem_attachments', 'jqueryui'));
- }
-
-
- /**
- * Setter for application task
- *
- * @param string Task to set
- */
- public function set_task($task)
- {
- $task = asciiwords($task, true);
-
- if ($this->user && $this->user->ID)
- $task = !$task ? 'mail' : $task;
- else
- $task = 'login';
-
- $this->task = $task;
- $this->comm_path = $this->url(array('task' => $this->task));
-
- if ($this->output)
- $this->output->set_env('task', $this->task);
- }
-
-
- /**
- * Setter for system user object
- *
- * @param rcube_user Current user instance
- */
- public function set_user($user)
- {
- if (is_object($user)) {
- $this->user = $user;
-
- // overwrite config with user preferences
- $this->config->set_user_prefs((array)$this->user->get_prefs());
- }
+ /**
+ * Current action.
+ *
+ * @var string
+ */
+ public $action = '';
+ public $comm_path = './';
+ public $filename = '';
- $lang = $this->language_prop($this->config->get('language', $_SESSION['language']));
- $_SESSION['language'] = $this->user->language = $lang;
+ private $address_books = array();
+ private $action_map = array();
- // set localization
- setlocale(LC_ALL, $lang . '.utf8', $lang . '.UTF-8', 'en_US.utf8', 'en_US.UTF-8');
- // workaround for http://bugs.php.net/bug.php?id=18556
- if (version_compare(PHP_VERSION, '5.5.0', '<') && in_array($lang, array('tr_TR', 'ku', 'az_AZ'))) {
- setlocale(LC_CTYPE, 'en_US.utf8', 'en_US.UTF-8');
- }
- }
-
-
- /**
- * Return instance of the internal address book class
- *
- * @param string Address book identifier (-1 for default addressbook)
- * @param boolean True if the address book needs to be writeable
- *
- * @return rcube_contacts Address book object
- */
- public function get_address_book($id, $writeable = false)
- {
- $contacts = null;
- $ldap_config = (array)$this->config->get('ldap_public');
-
- // 'sql' is the alias for '0' used by autocomplete
- if ($id == 'sql')
- $id = '0';
- else if ($id == -1) {
- $id = $this->config->get('default_addressbook');
- $default = true;
- }
+ const ERROR_STORAGE = -2;
+ const ERROR_INVALID_REQUEST = 1;
+ const ERROR_INVALID_HOST = 2;
+ const ERROR_COOKIES_DISABLED = 3;
- // use existing instance
- if (isset($this->address_books[$id]) && ($this->address_books[$id] instanceof rcube_addressbook)) {
- $contacts = $this->address_books[$id];
- }
- else if ($id && $ldap_config[$id]) {
- $contacts = new rcube_ldap($ldap_config[$id], $this->config->get('ldap_debug'), $this->config->mail_domain($_SESSION['storage_host']));
- }
- else if ($id === '0') {
- $contacts = new rcube_contacts($this->db, $this->get_user_id());
- }
- else {
- $plugin = $this->plugins->exec_hook('addressbook_get', array('id' => $id, 'writeable' => $writeable));
- // plugin returned instance of a rcube_addressbook
- if ($plugin['instance'] instanceof rcube_addressbook) {
- $contacts = $plugin['instance'];
- }
- }
+ /**
+ * This implements the 'singleton' design pattern
+ *
+ * @param string Environment name to run (e.g. live, dev, test)
+ *
+ * @return rcmail The one and only instance
+ */
+ static function get_instance($env = '')
+ {
+ if (!self::$instance || !is_a(self::$instance, 'rcmail')) {
+ self::$instance = new rcmail($env);
+ // init AFTER object was linked with self::$instance
+ self::$instance->startup();
+ }
- // when user requested default writeable addressbook
- // we need to check if default is writeable, if not we
- // will return first writeable book (if any exist)
- if ($contacts && $default && $contacts->readonly && $writeable) {
- $contacts = null;
+ return self::$instance;
}
- // Get first addressbook from the list if configured default doesn't exist
- // This can happen when user deleted the addressbook (e.g. Kolab folder)
- if (!$contacts && (!$id || $default)) {
- $source = reset($this->get_address_sources($writeable, !$default));
- if (!empty($source)) {
- $contacts = $this->get_address_book($source['id']);
- if ($contacts) {
- $id = $source['id'];
+ /**
+ * Initial startup function
+ * to register session, create database and imap connections
+ */
+ protected function startup()
+ {
+ $this->init(self::INIT_WITH_DB | self::INIT_WITH_PLUGINS);
+
+ // set filename if not index.php
+ if (($basename = basename($_SERVER['SCRIPT_FILENAME'])) && $basename != 'index.php') {
+ $this->filename = $basename;
}
- }
- }
- if (!$contacts) {
- // there's no default, just return
- if ($default) {
- return null;
- }
-
- self::raise_error(array(
- 'code' => 700, 'type' => 'php',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Addressbook source ($id) not found!"),
- true, true);
- }
+ // start session
+ $this->session_init();
- // add to the 'books' array for shutdown function
- $this->address_books[$id] = $contacts;
+ // create user object
+ $this->set_user(new rcube_user($_SESSION['user_id']));
- if ($writeable && $contacts->readonly) {
- return null;
- }
+ // set task and action properties
+ $this->set_task(rcube_utils::get_input_value('_task', rcube_utils::INPUT_GPC));
+ $this->action = asciiwords(rcube_utils::get_input_value('_action', rcube_utils::INPUT_GPC));
- // set configured sort order
- if ($sort_col = $this->config->get('addressbook_sort_col')) {
- $contacts->set_sort_order($sort_col);
- }
+ // reset some session parameters when changing task
+ if ($this->task != 'utils') {
+ // we reset list page when switching to another task
+ // but only to the main task interface - empty action (#1489076)
+ // this will prevent from unintentional page reset on cross-task requests
+ if ($this->session && $_SESSION['task'] != $this->task && empty($this->action)) {
+ $this->session->remove('page');
+ }
- return $contacts;
- }
-
-
- /**
- * Return identifier of the address book object
- *
- * @param rcube_addressbook Addressbook source object
- *
- * @return string Source identifier
- */
- public function get_address_book_id($object)
- {
- foreach ($this->address_books as $index => $book) {
- if ($book === $object) {
- return $index;
- }
- }
- }
-
-
- /**
- * Return address books list
- *
- * @param boolean True if the address book needs to be writeable
- * @param boolean True if the address book needs to be not hidden
- *
- * @return array Address books array
- */
- public function get_address_sources($writeable = false, $skip_hidden = false)
- {
- $abook_type = (string) $this->config->get('address_book_type');
- $ldap_config = (array) $this->config->get('ldap_public');
- $autocomplete = (array) $this->config->get('autocomplete_addressbooks');
- $list = array();
-
- // We are using the DB address book or a plugin address book
- if (!empty($abook_type) && strtolower($abook_type) != 'ldap') {
- if (!isset($this->address_books['0']))
- $this->address_books['0'] = new rcube_contacts($this->db, $this->get_user_id());
- $list['0'] = array(
- 'id' => '0',
- 'name' => $this->gettext('personaladrbook'),
- 'groups' => $this->address_books['0']->groups,
- 'readonly' => $this->address_books['0']->readonly,
- 'autocomplete' => in_array('sql', $autocomplete),
- 'undelete' => $this->address_books['0']->undelete && $this->config->get('undo_timeout'),
- );
- }
+ // set current task to session
+ $_SESSION['task'] = $this->task;
+ }
- if (!empty($ldap_config)) {
- foreach ($ldap_config as $id => $prop) {
- // handle misconfiguration
- if (empty($prop) || !is_array($prop)) {
- continue;
- }
- $list[$id] = array(
- 'id' => $id,
- 'name' => html::quote($prop['name']),
- 'groups' => !empty($prop['groups']) || !empty($prop['group_filters']),
- 'readonly' => !$prop['writable'],
- 'hidden' => $prop['hidden'],
- 'autocomplete' => in_array($id, $autocomplete)
- );
- }
- }
+ // init output class
+ if (!empty($_REQUEST['_remote']))
+ $GLOBALS['OUTPUT'] = $this->json_init();
+ else
+ $GLOBALS['OUTPUT'] = $this->load_gui(!empty($_REQUEST['_framed']));
- $plugin = $this->plugins->exec_hook('addressbooks_list', array('sources' => $list));
- $list = $plugin['sources'];
-
- foreach ($list as $idx => $item) {
- // register source for shutdown function
- if (!is_object($this->address_books[$item['id']])) {
- $this->address_books[$item['id']] = $item;
- }
- // remove from list if not writeable as requested
- if ($writeable && $item['readonly']) {
- unset($list[$idx]);
- }
- // remove from list if hidden as requested
- else if ($skip_hidden && $item['hidden']) {
- unset($list[$idx]);
- }
+ // load plugins
+ $this->plugins->init($this, $this->task);
+ $this->plugins->load_plugins((array)$this->config->get('plugins', array()),
+ array('filesystem_attachments', 'jqueryui'));
}
- return $list;
- }
-
-
- /**
- * Init output object for GUI and add common scripts.
- * This will instantiate a rcmail_output_html object and set
- * environment vars according to the current session and configuration
- *
- * @param boolean True if this request is loaded in a (i)frame
- * @return rcube_output Reference to HTML output object
- */
- public function load_gui($framed = false)
- {
- // init output page
- if (!($this->output instanceof rcmail_output_html))
- $this->output = new rcmail_output_html($this->task, $framed);
-
- // set refresh interval
- $this->output->set_env('refresh_interval', $this->config->get('refresh_interval', 0));
- $this->output->set_env('session_lifetime', $this->config->get('session_lifetime', 0) * 60);
-
- if ($framed) {
- $this->comm_path .= '&_framed=1';
- $this->output->set_env('framed', true);
- }
+ /**
+ * Setter for application task
+ *
+ * @param string Task to set
+ */
+ public function set_task($task)
+ {
+ $task = asciiwords($task, true);
- $this->output->set_env('task', $this->task);
- $this->output->set_env('action', $this->action);
- $this->output->set_env('comm_path', $this->comm_path);
- $this->output->set_charset(RCUBE_CHARSET);
-
- // add some basic labels to client
- $this->output->add_label('loading', 'servererror', 'requesttimedout', 'refreshing');
-
- return $this->output;
- }
-
-
- /**
- * Create an output object for JSON responses
- *
- * @return rcube_output Reference to JSON output object
- */
- public function json_init()
- {
- if (!($this->output instanceof rcmail_output_json))
- $this->output = new rcmail_output_json($this->task);
-
- return $this->output;
- }
-
-
- /**
- * Create session object and start the session.
- */
- public function session_init()
- {
- parent::session_init();
-
- // set initial session vars
- if (!$_SESSION['user_id'])
- $_SESSION['temp'] = true;
-
- // restore skin selection after logout
- if ($_SESSION['temp'] && !empty($_SESSION['skin']))
- $this->config->set('skin', $_SESSION['skin']);
- }
-
-
- /**
- * Perfom login to the mail server and to the webmail service.
- * This will also create a new user entry if auto_create_user is configured.
- *
- * @param string Mail storage (IMAP) user name
- * @param string Mail storage (IMAP) password
- * @param string Mail storage (IMAP) host
- * @param bool Enables cookie check
- *
- * @return boolean True on success, False on failure
- */
- function login($username, $pass, $host = null, $cookiecheck = false)
- {
- $this->login_error = null;
-
- if (empty($username)) {
- return false;
- }
+ if ($this->user && $this->user->ID)
+ $task = !$task ? 'mail' : $task;
+ else
+ $task = 'login';
- if ($cookiecheck && empty($_COOKIE)) {
- $this->login_error = self::ERROR_COOKIES_DISABLED;
- return false;
- }
+ $this->task = $task;
+ $this->comm_path = $this->url(array('task' => $this->task));
- $config = $this->config->all();
-
- if (!$host)
- $host = $config['default_host'];
-
- // Validate that selected host is in the list of configured hosts
- if (is_array($config['default_host'])) {
- $allowed = false;
- foreach ($config['default_host'] as $key => $host_allowed) {
- if (!is_numeric($key))
- $host_allowed = $key;
- if ($host == $host_allowed) {
- $allowed = true;
- break;
- }
- }
- if (!$allowed) {
- $host = null;
- }
- }
- else if (!empty($config['default_host']) && $host != rcube_utils::parse_host($config['default_host'])) {
- $host = null;
+ if ($this->output) {
+ $this->output->set_env('task', $this->task);
+ }
}
- if (!$host) {
- $this->login_error = self::ERROR_INVALID_HOST;
- return false;
- }
+ /**
+ * Setter for system user object
+ *
+ * @param rcube_user Current user instance
+ */
+ public function set_user($user)
+ {
+ if (is_object($user)) {
+ $this->user = $user;
- // parse $host URL
- $a_host = parse_url($host);
- if ($a_host['host']) {
- $host = $a_host['host'];
- $ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? $a_host['scheme'] : null;
- if (!empty($a_host['port']))
- $port = $a_host['port'];
- else if ($ssl && $ssl != 'tls' && (!$config['default_port'] || $config['default_port'] == 143))
- $port = 993;
- }
+ // overwrite config with user preferences
+ $this->config->set_user_prefs((array)$this->user->get_prefs());
+ }
- if (!$port) {
- $port = $config['default_port'];
+ $lang = $this->language_prop($this->config->get('language', $_SESSION['language']));
+ $_SESSION['language'] = $this->user->language = $lang;
+
+ // set localization
+ setlocale(LC_ALL, $lang . '.utf8', $lang . '.UTF-8', 'en_US.utf8', 'en_US.UTF-8');
+
+ // workaround for http://bugs.php.net/bug.php?id=18556
+ if (version_compare(PHP_VERSION, '5.5.0', '<') && in_array($lang, array('tr_TR', 'ku', 'az_AZ'))) {
+ setlocale(LC_CTYPE, 'en_US.utf8', 'en_US.UTF-8');
+ }
}
- // Check if we need to add/force domain to username
- if (!empty($config['username_domain'])) {
- $domain = is_array($config['username_domain']) ? $config['username_domain'][$host] : $config['username_domain'];
+ /**
+ * Return instance of the internal address book class
+ *
+ * @param string Address book identifier (-1 for default addressbook)
+ * @param boolean True if the address book needs to be writeable
+ *
+ * @return rcube_contacts Address book object
+ */
+ public function get_address_book($id, $writeable = false)
+ {
+ $contacts = null;
+ $ldap_config = (array)$this->config->get('ldap_public');
- if ($domain = rcube_utils::parse_host((string)$domain, $host)) {
- $pos = strpos($username, '@');
+ // 'sql' is the alias for '0' used by autocomplete
+ if ($id == 'sql')
+ $id = '0';
+ else if ($id == -1) {
+ $id = $this->config->get('default_addressbook');
+ $default = true;
+ }
- // force configured domains
- if (!empty($config['username_domain_forced']) && $pos !== false) {
- $username = substr($username, 0, $pos) . '@' . $domain;
+ // use existing instance
+ if (isset($this->address_books[$id]) && ($this->address_books[$id] instanceof rcube_addressbook)) {
+ $contacts = $this->address_books[$id];
}
- // just add domain if not specified
- else if ($pos === false) {
- $username .= '@' . $domain;
+ else if ($id && $ldap_config[$id]) {
+ $domain = $this->config->mail_domain($_SESSION['storage_host']);
+ $contacts = new rcube_ldap($ldap_config[$id], $this->config->get('ldap_debug'), $domain);
}
- }
- }
+ else if ($id === '0') {
+ $contacts = new rcube_contacts($this->db, $this->get_user_id());
+ }
+ else {
+ $plugin = $this->plugins->exec_hook('addressbook_get', array('id' => $id, 'writeable' => $writeable));
- if (!isset($config['login_lc'])) {
- $config['login_lc'] = 2; // default
- }
+ // plugin returned instance of a rcube_addressbook
+ if ($plugin['instance'] instanceof rcube_addressbook) {
+ $contacts = $plugin['instance'];
+ }
+ }
+
+ // when user requested default writeable addressbook
+ // we need to check if default is writeable, if not we
+ // will return first writeable book (if any exist)
+ if ($contacts && $default && $contacts->readonly && $writeable) {
+ $contacts = null;
+ }
+
+ // Get first addressbook from the list if configured default doesn't exist
+ // This can happen when user deleted the addressbook (e.g. Kolab folder)
+ if (!$contacts && (!$id || $default)) {
+ $source = reset($this->get_address_sources($writeable, !$default));
+ if (!empty($source)) {
+ $contacts = $this->get_address_book($source['id']);
+ if ($contacts) {
+ $id = $source['id'];
+ }
+ }
+ }
+
+ if (!$contacts) {
+ // there's no default, just return
+ if ($default) {
+ return null;
+ }
+
+ self::raise_error(array(
+ 'code' => 700,
+ 'file' => __FILE__,
+ 'line' => __LINE__,
+ 'message' => "Addressbook source ($id) not found!"
+ ),
+ true, true);
+ }
- // Convert username to lowercase. If storage backend
- // is case-insensitive we need to store always the same username (#1487113)
- if ($config['login_lc']) {
- if ($config['login_lc'] == 2 || $config['login_lc'] === true) {
- $username = mb_strtolower($username);
- }
- else if (strpos($username, '@')) {
- // lowercase domain name
- list($local, $domain) = explode('@', $username);
- $username = $local . '@' . mb_strtolower($domain);
- }
+ // add to the 'books' array for shutdown function
+ $this->address_books[$id] = $contacts;
+
+ if ($writeable && $contacts->readonly) {
+ return null;
+ }
+
+ // set configured sort order
+ if ($sort_col = $this->config->get('addressbook_sort_col')) {
+ $contacts->set_sort_order($sort_col);
+ }
+
+ return $contacts;
}
- // try to resolve email address from virtuser table
- if (strpos($username, '@') && ($virtuser = rcube_user::email2user($username))) {
- $username = $virtuser;
+ /**
+ * Return identifier of the address book object
+ *
+ * @param rcube_addressbook Addressbook source object
+ *
+ * @return string Source identifier
+ */
+ public function get_address_book_id($object)
+ {
+ foreach ($this->address_books as $index => $book) {
+ if ($book === $object) {
+ return $index;
+ }
+ }
}
- // Here we need IDNA ASCII
- // Only rcube_contacts class is using domain names in Unicode
- $host = rcube_utils::idn_to_ascii($host);
- $username = rcube_utils::idn_to_ascii($username);
+ /**
+ * Return address books list
+ *
+ * @param boolean True if the address book needs to be writeable
+ * @param boolean True if the address book needs to be not hidden
+ *
+ * @return array Address books array
+ */
+ public function get_address_sources($writeable = false, $skip_hidden = false)
+ {
+ $abook_type = (string) $this->config->get('address_book_type');
+ $ldap_config = (array) $this->config->get('ldap_public');
+ $autocomplete = (array) $this->config->get('autocomplete_addressbooks');
+ $list = array();
+
+ // We are using the DB address book or a plugin address book
+ if (!empty($abook_type) && strtolower($abook_type) != 'ldap') {
+ if (!isset($this->address_books['0'])) {
+ $this->address_books['0'] = new rcube_contacts($this->db, $this->get_user_id());
+ }
+
+ $list['0'] = array(
+ 'id' => '0',
+ 'name' => $this->gettext('personaladrbook'),
+ 'groups' => $this->address_books['0']->groups,
+ 'readonly' => $this->address_books['0']->readonly,
+ 'undelete' => $this->address_books['0']->undelete && $this->config->get('undo_timeout'),
+ 'autocomplete' => in_array('sql', $autocomplete),
+ );
+ }
- // user already registered -> overwrite username
- if ($user = rcube_user::query($username, $host)) {
- $username = $user->data['username'];
+ if (!empty($ldap_config)) {
+ foreach ($ldap_config as $id => $prop) {
+ // handle misconfiguration
+ if (empty($prop) || !is_array($prop)) {
+ continue;
+ }
+
+ $list[$id] = array(
+ 'id' => $id,
+ 'name' => html::quote($prop['name']),
+ 'groups' => !empty($prop['groups']) || !empty($prop['group_filters']),
+ 'readonly' => !$prop['writable'],
+ 'hidden' => $prop['hidden'],
+ 'autocomplete' => in_array($id, $autocomplete)
+ );
+ }
+ }
+
+ $plugin = $this->plugins->exec_hook('addressbooks_list', array('sources' => $list));
+ $list = $plugin['sources'];
+
+ foreach ($list as $idx => $item) {
+ // register source for shutdown function
+ if (!is_object($this->address_books[$item['id']])) {
+ $this->address_books[$item['id']] = $item;
+ }
+ // remove from list if not writeable as requested
+ if ($writeable && $item['readonly']) {
+ unset($list[$idx]);
+ }
+ // remove from list if hidden as requested
+ else if ($skip_hidden && $item['hidden']) {
+ unset($list[$idx]);
+ }
+ }
+
+ return $list;
}
- $storage = $this->get_storage();
+ /**
+ * Getter for compose responses.
+ * These are stored in local config and user preferences.
+ *
+ * @param boolean True to sort the list alphabetically
+ * @param boolean True if only this user's responses shall be listed
+ *
+ * @return array List of the current user's stored responses
+ */
+ public function get_compose_responses($sorted = false, $user_only = false)
+ {
+ $responses = array();
+
+ if (!$user_only) {
+ foreach ($this->config->get('compose_responses_static', array()) as $response) {
+ if (empty($response['key'])) {
+ $response['key'] = substr(md5($response['name']), 0, 16);
+ }
+
+ $response['static'] = true;
+ $response['class'] = 'readonly';
+
+ $k = $sorted ? '0000-' . strtolower($response['name']) : $response['key'];
+ $responses[$k] = $response;
+ }
+ }
+
+ foreach ($this->config->get('compose_responses', array()) as $response) {
+ if (empty($response['key'])) {
+ $response['key'] = substr(md5($response['name']), 0, 16);
+ }
+
+ $k = $sorted ? strtolower($response['name']) : $response['key'];
+ $responses[$k] = $response;
+ }
- // try to log in
- if (!$storage->connect($host, $username, $pass, $port, $ssl)) {
- return false;
+ // sort list by name
+ if ($sorted) {
+ ksort($responses, SORT_LOCALE_STRING);
+ }
+
+ return array_values($responses);
}
- // user already registered -> update user's record
- if (is_object($user)) {
- // update last login timestamp
- $user->touch();
+ /**
+ * Init output object for GUI and add common scripts.
+ * This will instantiate a rcmail_output_html object and set
+ * environment vars according to the current session and configuration
+ *
+ * @param boolean True if this request is loaded in a (i)frame
+ *
+ * @return rcube_output Reference to HTML output object
+ */
+ public function load_gui($framed = false)
+ {
+ // init output page
+ if (!($this->output instanceof rcmail_output_html)) {
+ $this->output = new rcmail_output_html($this->task, $framed);
+ }
+
+ // set refresh interval
+ $this->output->set_env('refresh_interval', $this->config->get('refresh_interval', 0));
+ $this->output->set_env('session_lifetime', $this->config->get('session_lifetime', 0) * 60);
+
+ if ($framed) {
+ $this->comm_path .= '&_framed=1';
+ $this->output->set_env('framed', true);
+ }
+
+ $this->output->set_env('task', $this->task);
+ $this->output->set_env('action', $this->action);
+ $this->output->set_env('comm_path', $this->comm_path);
+ $this->output->set_charset(RCUBE_CHARSET);
+
+ if ($this->user && $this->user->ID) {
+ $this->output->set_env('user_id', $this->user->get_hash());
+ }
+
+ // add some basic labels to client
+ $this->output->add_label('loading', 'servererror', 'requesttimedout', 'refreshing');
+
+ return $this->output;
}
- // create new system user
- else if ($config['auto_create_user']) {
- if ($created = rcube_user::create($username, $host)) {
- $user = $created;
- }
- else {
- self::raise_error(array(
- 'code' => 620, 'type' => 'php',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Failed to create a user record. Maybe aborted by a plugin?"
- ), true, false);
- }
+
+ /**
+ * Create an output object for JSON responses
+ *
+ * @return rcube_output Reference to JSON output object
+ */
+ public function json_init()
+ {
+ if (!($this->output instanceof rcmail_output_json)) {
+ $this->output = new rcmail_output_json($this->task);
+ }
+
+ return $this->output;
}
- else {
- self::raise_error(array(
- 'code' => 621, 'type' => 'php',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Access denied for new user $username. 'auto_create_user' is disabled"
- ), true, false);
+
+ /**
+ * Create session object and start the session.
+ */
+ public function session_init()
+ {
+ parent::session_init();
+
+ // set initial session vars
+ if (!$_SESSION['user_id']) {
+ $_SESSION['temp'] = true;
+ }
+
+ // restore skin selection after logout
+ if ($_SESSION['temp'] && !empty($_SESSION['skin'])) {
+ $this->config->set('skin', $_SESSION['skin']);
+ }
}
- // login succeeded
- if (is_object($user) && $user->ID) {
- // Configure environment
- $this->set_user($user);
- $this->set_storage_prop();
+ /**
+ * Perfom login to the mail server and to the webmail service.
+ * This will also create a new user entry if auto_create_user is configured.
+ *
+ * @param string Mail storage (IMAP) user name
+ * @param string Mail storage (IMAP) password
+ * @param string Mail storage (IMAP) host
+ * @param bool Enables cookie check
+ *
+ * @return boolean True on success, False on failure
+ */
+ function login($username, $pass, $host = null, $cookiecheck = false)
+ {
+ $this->login_error = null;
- // fix some old settings according to namespace prefix
- $this->fix_namespace_settings($user);
+ if (empty($username)) {
+ return false;
+ }
- // create default folders on first login
- if ($config['create_default_folders'] && (!empty($created) || empty($user->data['last_login']))) {
- $storage->create_default_folders();
- }
+ if ($cookiecheck && empty($_COOKIE)) {
+ $this->login_error = self::ERROR_COOKIES_DISABLED;
+ return false;
+ }
- // set session vars
- $_SESSION['user_id'] = $user->ID;
- $_SESSION['username'] = $user->data['username'];
- $_SESSION['storage_host'] = $host;
- $_SESSION['storage_port'] = $port;
- $_SESSION['storage_ssl'] = $ssl;
- $_SESSION['password'] = $this->encrypt($pass);
- $_SESSION['login_time'] = time();
+ $config = $this->config->all();
- if (isset($_REQUEST['_timezone']) && $_REQUEST['_timezone'] != '_default_')
- $_SESSION['timezone'] = rcube_utils::get_input_value('_timezone', rcube_utils::INPUT_GPC);
+ if (!$host) {
+ $host = $config['default_host'];
+ }
- // force reloading complete list of subscribed mailboxes
- $storage->clear_cache('mailboxes', true);
+ // Validate that selected host is in the list of configured hosts
+ if (is_array($config['default_host'])) {
+ $allowed = false;
- return true;
- }
+ foreach ($config['default_host'] as $key => $host_allowed) {
+ if (!is_numeric($key)) {
+ $host_allowed = $key;
+ }
+ if ($host == $host_allowed) {
+ $allowed = true;
+ break;
+ }
+ }
+
+ if (!$allowed) {
+ $host = null;
+ }
+ }
+ else if (!empty($config['default_host']) && $host != rcube_utils::parse_host($config['default_host'])) {
+ $host = null;
+ }
+
+ if (!$host) {
+ $this->login_error = self::ERROR_INVALID_HOST;
+ return false;
+ }
+
+ // parse $host URL
+ $a_host = parse_url($host);
+ if ($a_host['host']) {
+ $host = $a_host['host'];
+ $ssl = (isset($a_host['scheme']) && in_array($a_host['scheme'], array('ssl','imaps','tls'))) ? $a_host['scheme'] : null;
+
+ if (!empty($a_host['port']))
+ $port = $a_host['port'];
+ else if ($ssl && $ssl != 'tls' && (!$config['default_port'] || $config['default_port'] == 143))
+ $port = 993;
+ }
+
+ if (!$port) {
+ $port = $config['default_port'];
+ }
+
+ // Check if we need to add/force domain to username
+ if (!empty($config['username_domain'])) {
+ $domain = is_array($config['username_domain']) ? $config['username_domain'][$host] : $config['username_domain'];
+
+ if ($domain = rcube_utils::parse_host((string)$domain, $host)) {
+ $pos = strpos($username, '@');
+
+ // force configured domains
+ if (!empty($config['username_domain_forced']) && $pos !== false) {
+ $username = substr($username, 0, $pos) . '@' . $domain;
+ }
+ // just add domain if not specified
+ else if ($pos === false) {
+ $username .= '@' . $domain;
+ }
+ }
+ }
+
+ if (!isset($config['login_lc'])) {
+ $config['login_lc'] = 2; // default
+ }
+
+ // Convert username to lowercase. If storage backend
+ // is case-insensitive we need to store always the same username (#1487113)
+ if ($config['login_lc']) {
+ if ($config['login_lc'] == 2 || $config['login_lc'] === true) {
+ $username = mb_strtolower($username);
+ }
+ else if (strpos($username, '@')) {
+ // lowercase domain name
+ list($local, $domain) = explode('@', $username);
+ $username = $local . '@' . mb_strtolower($domain);
+ }
+ }
+
+ // try to resolve email address from virtuser table
+ if (strpos($username, '@') && ($virtuser = rcube_user::email2user($username))) {
+ $username = $virtuser;
+ }
+
+ // Here we need IDNA ASCII
+ // Only rcube_contacts class is using domain names in Unicode
+ $host = rcube_utils::idn_to_ascii($host);
+ $username = rcube_utils::idn_to_ascii($username);
+
+ // user already registered -> overwrite username
+ if ($user = rcube_user::query($username, $host)) {
+ $username = $user->data['username'];
+ }
+
+ $storage = $this->get_storage();
+
+ // try to log in
+ if (!$storage->connect($host, $username, $pass, $port, $ssl)) {
+ return false;
+ }
- return false;
- }
+ // user already registered -> update user's record
+ if (is_object($user)) {
+ // update last login timestamp
+ $user->touch();
+ }
+ // create new system user
+ else if ($config['auto_create_user']) {
+ if ($created = rcube_user::create($username, $host)) {
+ $user = $created;
+ }
+ else {
+ self::raise_error(array(
+ 'code' => 620,
+ 'file' => __FILE__,
+ 'line' => __LINE__,
+ 'message' => "Failed to create a user record. Maybe aborted by a plugin?"
+ ),
+ true, false);
+ }
+ }
+ else {
+ self::raise_error(array(
+ 'code' => 621,
+ 'file' => __FILE__,
+ 'line' => __LINE__,
+ 'message' => "Access denied for new user $username. 'auto_create_user' is disabled"
+ ),
+ true, false);
+ }
+
+ // login succeeded
+ if (is_object($user) && $user->ID) {
+ // Configure environment
+ $this->set_user($user);
+ $this->set_storage_prop();
+
+ // fix some old settings according to namespace prefix
+ $this->fix_namespace_settings($user);
+
+ // create default folders on first login
+ if ($config['create_default_folders'] && (!empty($created) || empty($user->data['last_login']))) {
+ $storage->create_default_folders();
+ }
+
+ // set session vars
+ $_SESSION['user_id'] = $user->ID;
+ $_SESSION['username'] = $user->data['username'];
+ $_SESSION['storage_host'] = $host;
+ $_SESSION['storage_port'] = $port;
+ $_SESSION['storage_ssl'] = $ssl;
+ $_SESSION['password'] = $this->encrypt($pass);
+ $_SESSION['login_time'] = time();
+
+ if (isset($_REQUEST['_timezone']) && $_REQUEST['_timezone'] != '_default_') {
+ $_SESSION['timezone'] = rcube_utils::get_input_value('_timezone', rcube_utils::INPUT_GPC);
+ }
+ // force reloading complete list of subscribed mailboxes
+ $storage->clear_cache('mailboxes', true);
+
+ return true;
+ }
+
+ return false;
+ }
/**
* Returns error code of last login operation
@@ -616,315 +680,317 @@ class rcmail extends rcube
}
}
+ /**
+ * Auto-select IMAP host based on the posted login information
+ *
+ * @return string Selected IMAP host
+ */
+ public function autoselect_host()
+ {
+ $default_host = $this->config->get('default_host');
+ $host = null;
- /**
- * Auto-select IMAP host based on the posted login information
- *
- * @return string Selected IMAP host
- */
- public function autoselect_host()
- {
- $default_host = $this->config->get('default_host');
- $host = null;
-
- if (is_array($default_host)) {
- $post_host = rcube_utils::get_input_value('_host', rcube_utils::INPUT_POST);
- $post_user = rcube_utils::get_input_value('_user', rcube_utils::INPUT_POST);
-
- list(, $domain) = explode('@', $post_user);
-
- // direct match in default_host array
- if ($default_host[$post_host] || in_array($post_host, array_values($default_host))) {
- $host = $post_host;
- }
- // try to select host by mail domain
- else if (!empty($domain)) {
- foreach ($default_host as $storage_host => $mail_domains) {
- if (is_array($mail_domains) && in_array_nocase($domain, $mail_domains)) {
- $host = $storage_host;
- break;
- }
- else if (stripos($storage_host, $domain) !== false || stripos(strval($mail_domains), $domain) !== false) {
- $host = is_numeric($storage_host) ? $mail_domains : $storage_host;
- break;
- }
+ if (is_array($default_host)) {
+ $post_host = rcube_utils::get_input_value('_host', rcube_utils::INPUT_POST);
+ $post_user = rcube_utils::get_input_value('_user', rcube_utils::INPUT_POST);
+
+ list(, $domain) = explode('@', $post_user);
+
+ // direct match in default_host array
+ if ($default_host[$post_host] || in_array($post_host, array_values($default_host))) {
+ $host = $post_host;
+ }
+ // try to select host by mail domain
+ else if (!empty($domain)) {
+ foreach ($default_host as $storage_host => $mail_domains) {
+ if (is_array($mail_domains) && in_array_nocase($domain, $mail_domains)) {
+ $host = $storage_host;
+ break;
+ }
+ else if (stripos($storage_host, $domain) !== false || stripos(strval($mail_domains), $domain) !== false) {
+ $host = is_numeric($storage_host) ? $mail_domains : $storage_host;
+ break;
+ }
+ }
+ }
+
+ // take the first entry if $host is still not set
+ if (empty($host)) {
+ list($key, $val) = each($default_host);
+ $host = is_numeric($key) ? $val : $key;
+ }
+ }
+ else if (empty($default_host)) {
+ $host = rcube_utils::get_input_value('_host', rcube_utils::INPUT_POST);
+ }
+ else {
+ $host = rcube_utils::parse_host($default_host);
}
- }
- // take the first entry if $host is still not set
- if (empty($host)) {
- list($key, $val) = each($default_host);
- $host = is_numeric($key) ? $val : $key;
- }
+ return $host;
}
- else if (empty($default_host)) {
- $host = rcube_utils::get_input_value('_host', rcube_utils::INPUT_POST);
+
+ /**
+ * Destroy session data and remove cookie
+ */
+ public function kill_session()
+ {
+ $this->plugins->exec_hook('session_destroy');
+
+ $this->session->kill();
+ $_SESSION = array('language' => $this->user->language, 'temp' => true, 'skin' => $this->config->get('skin'));
+ $this->user->reset();
}
- else
- $host = rcube_utils::parse_host($default_host);
- return $host;
- }
+ /**
+ * Do server side actions on logout
+ */
+ public function logout_actions()
+ {
+ $config = $this->config->all();
+ $storage = $this->get_storage();
+ if ($config['logout_purge'] && !empty($config['trash_mbox'])) {
+ $storage->clear_folder($config['trash_mbox']);
+ }
- /**
- * Destroy session data and remove cookie
- */
- public function kill_session()
- {
- $this->plugins->exec_hook('session_destroy');
+ if ($config['logout_expunge']) {
+ $storage->expunge_folder('INBOX');
+ }
- $this->session->kill();
- $_SESSION = array('language' => $this->user->language, 'temp' => true, 'skin' => $this->config->get('skin'));
- $this->user->reset();
- }
+ // Try to save unsaved user preferences
+ if (!empty($_SESSION['preferences'])) {
+ $this->user->save_prefs(unserialize($_SESSION['preferences']));
+ }
+ }
+ /**
+ * Generate a unique token to be used in a form request
+ *
+ * @return string The request token
+ */
+ public function get_request_token()
+ {
+ $sess_id = $_COOKIE[ini_get('session.name')];
- /**
- * Do server side actions on logout
- */
- public function logout_actions()
- {
- $config = $this->config->all();
- $storage = $this->get_storage();
+ if (!$sess_id) {
+ $sess_id = session_id();
+ }
- if ($config['logout_purge'] && !empty($config['trash_mbox'])) {
- $storage->clear_folder($config['trash_mbox']);
- }
+ $plugin = $this->plugins->exec_hook('request_token', array(
+ 'value' => md5('RT' . $this->get_user_id() . $this->config->get('des_key') . $sess_id)));
- if ($config['logout_expunge']) {
- $storage->expunge_folder('INBOX');
+ return $plugin['value'];
}
- // Try to save unsaved user preferences
- if (!empty($_SESSION['preferences'])) {
- $this->user->save_prefs(unserialize($_SESSION['preferences']));
- }
- }
-
-
- /**
- * Generate a unique token to be used in a form request
- *
- * @return string The request token
- */
- public function get_request_token()
- {
- $sess_id = $_COOKIE[ini_get('session.name')];
- if (!$sess_id) $sess_id = session_id();
-
- $plugin = $this->plugins->exec_hook('request_token', array(
- 'value' => md5('RT' . $this->get_user_id() . $this->config->get('des_key') . $sess_id)));
-
- return $plugin['value'];
- }
-
-
- /**
- * Check if the current request contains a valid token
- *
- * @param int Request method
- * @return boolean True if request token is valid false if not
- */
- public function check_request($mode = rcube_utils::INPUT_POST)
- {
- $token = rcube_utils::get_input_value('_token', $mode);
- $sess_id = $_COOKIE[ini_get('session.name')];
- return !empty($sess_id) && $token == $this->get_request_token();
- }
-
-
- /**
- * Build a valid URL to this instance of Roundcube
- *
- * @param mixed Either a string with the action or url parameters as key-value pairs
- *
- * @return string Valid application URL
- */
- public function url($p)
- {
- if (!is_array($p)) {
- if (strpos($p, 'http') === 0)
- return $p;
-
- $p = array('_action' => @func_get_arg(0));
- }
+ /**
+ * Check if the current request contains a valid token
+ *
+ * @param int Request method
+ *
+ * @return boolean True if request token is valid false if not
+ */
+ public function check_request($mode = rcube_utils::INPUT_POST)
+ {
+ $token = rcube_utils::get_input_value('_token', $mode);
+ $sess_id = $_COOKIE[ini_get('session.name')];
- $task = $p['_task'] ? $p['_task'] : ($p['task'] ? $p['task'] : $this->task);
- $p['_task'] = $task;
- unset($p['task']);
-
- $url = './' . $this->filename;
- $delm = '?';
- foreach (array_reverse($p) as $key => $val) {
- if ($val !== '' && $val !== null) {
- $par = $key[0] == '_' ? $key : '_'.$key;
- $url .= $delm.urlencode($par).'='.urlencode($val);
- $delm = '&';
- }
+ return !empty($sess_id) && $token == $this->get_request_token();
}
- return $url;
- }
+ /**
+ * Build a valid URL to this instance of Roundcube
+ *
+ * @param mixed Either a string with the action or url parameters as key-value pairs
+ *
+ * @return string Valid application URL
+ */
+ public function url($p)
+ {
+ if (!is_array($p)) {
+ if (strpos($p, 'http') === 0) {
+ return $p;
+ }
- /**
- * Function to be executed in script shutdown
- */
- public function shutdown()
- {
- parent::shutdown();
+ $p = array('_action' => @func_get_arg(0));
+ }
- foreach ($this->address_books as $book) {
- if (is_object($book) && is_a($book, 'rcube_addressbook'))
- $book->close();
- }
+ $task = $p['_task'] ? $p['_task'] : ($p['task'] ? $p['task'] : $this->task);
+ $p['_task'] = $task;
+ unset($p['task']);
- // write performance stats to logs/console
- if ($this->config->get('devel_mode')) {
- if (function_exists('memory_get_usage'))
- $mem = $this->show_bytes(memory_get_usage());
- if (function_exists('memory_get_peak_usage'))
- $mem .= '/'.$this->show_bytes(memory_get_peak_usage());
-
- $log = $this->task . ($this->action ? '/'.$this->action : '') . ($mem ? " [$mem]" : '');
- if (defined('RCMAIL_START'))
- self::print_timer(RCMAIL_START, $log);
- else
- self::console($log);
- }
- }
-
-
- /**
- * Registers action aliases for current task
- *
- * @param array $map Alias-to-filename hash array
- */
- public function register_action_map($map)
- {
- if (is_array($map)) {
- foreach ($map as $idx => $val) {
- $this->action_map[$idx] = $val;
- }
- }
- }
-
-
- /**
- * Returns current action filename
- *
- * @param array $map Alias-to-filename hash array
- */
- public function get_action_file()
- {
- if (!empty($this->action_map[$this->action])) {
- return $this->action_map[$this->action];
- }
+ $url = './' . $this->filename;
+ $delm = '?';
- return strtr($this->action, '-', '_') . '.inc';
- }
-
-
- /**
- * Fixes some user preferences according to namespace handling change.
- * Old Roundcube versions were using folder names with removed namespace prefix.
- * Now we need to add the prefix on servers where personal namespace has prefix.
- *
- * @param rcube_user $user User object
- */
- private function fix_namespace_settings($user)
- {
- $prefix = $this->storage->get_namespace('prefix');
- $prefix_len = strlen($prefix);
-
- if (!$prefix_len)
- return;
-
- $prefs = $this->config->all();
- if (!empty($prefs['namespace_fixed']))
- return;
-
- // Build namespace prefix regexp
- $ns = $this->storage->get_namespace();
- $regexp = array();
-
- foreach ($ns as $entry) {
- if (!empty($entry)) {
- foreach ($entry as $item) {
- if (strlen($item[0])) {
- $regexp[] = preg_quote($item[0], '/');
- }
+ foreach (array_reverse($p) as $key => $val) {
+ if ($val !== '' && $val !== null) {
+ $par = $key[0] == '_' ? $key : '_'.$key;
+ $url .= $delm.urlencode($par).'='.urlencode($val);
+ $delm = '&';
+ }
}
- }
+
+ return $url;
}
- $regexp = '/^('. implode('|', $regexp).')/';
- // Fix preferences
- $opts = array('drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox', 'archive_mbox');
- foreach ($opts as $opt) {
- if ($value = $prefs[$opt]) {
- if ($value != 'INBOX' && !preg_match($regexp, $value)) {
- $prefs[$opt] = $prefix.$value;
+ /**
+ * Function to be executed in script shutdown
+ */
+ public function shutdown()
+ {
+ parent::shutdown();
+
+ foreach ($this->address_books as $book) {
+ if (is_object($book) && is_a($book, 'rcube_addressbook'))
+ $book->close();
}
- }
- }
- if (!empty($prefs['default_folders'])) {
- foreach ($prefs['default_folders'] as $idx => $name) {
- if ($name != 'INBOX' && !preg_match($regexp, $name)) {
- $prefs['default_folders'][$idx] = $prefix.$name;
+ // write performance stats to logs/console
+ if ($this->config->get('devel_mode')) {
+ if (function_exists('memory_get_usage'))
+ $mem = $this->show_bytes(memory_get_usage());
+ if (function_exists('memory_get_peak_usage'))
+ $mem .= '/'.$this->show_bytes(memory_get_peak_usage());
+
+ $log = $this->task . ($this->action ? '/'.$this->action : '') . ($mem ? " [$mem]" : '');
+
+ if (defined('RCMAIL_START'))
+ self::print_timer(RCMAIL_START, $log);
+ else
+ self::console($log);
}
- }
}
- if (!empty($prefs['search_mods'])) {
- $folders = array();
- foreach ($prefs['search_mods'] as $idx => $value) {
- if ($idx != 'INBOX' && $idx != '*' && !preg_match($regexp, $idx)) {
- $idx = $prefix.$idx;
+ /**
+ * Registers action aliases for current task
+ *
+ * @param array $map Alias-to-filename hash array
+ */
+ public function register_action_map($map)
+ {
+ if (is_array($map)) {
+ foreach ($map as $idx => $val) {
+ $this->action_map[$idx] = $val;
+ }
}
- $folders[$idx] = $value;
- }
- $prefs['search_mods'] = $folders;
}
- if (!empty($prefs['message_threading'])) {
- $folders = array();
- foreach ($prefs['message_threading'] as $idx => $value) {
- if ($idx != 'INBOX' && !preg_match($regexp, $idx)) {
- $idx = $prefix.$idx;
+ /**
+ * Returns current action filename
+ *
+ * @param array $map Alias-to-filename hash array
+ */
+ public function get_action_file()
+ {
+ if (!empty($this->action_map[$this->action])) {
+ return $this->action_map[$this->action];
}
- $folders[$prefix.$idx] = $value;
- }
- $prefs['message_threading'] = $folders;
+
+ return strtr($this->action, '-', '_') . '.inc';
}
- if (!empty($prefs['collapsed_folders'])) {
- $folders = explode('&&', $prefs['collapsed_folders']);
- $count = count($folders);
- $folders_str = '';
+ /**
+ * Fixes some user preferences according to namespace handling change.
+ * Old Roundcube versions were using folder names with removed namespace prefix.
+ * Now we need to add the prefix on servers where personal namespace has prefix.
+ *
+ * @param rcube_user $user User object
+ */
+ private function fix_namespace_settings($user)
+ {
+ $prefix = $this->storage->get_namespace('prefix');
+ $prefix_len = strlen($prefix);
+
+ if (!$prefix_len)
+ return;
- if ($count) {
- $folders[0] = substr($folders[0], 1);
- $folders[$count-1] = substr($folders[$count-1], 0, -1);
- }
+ $prefs = $this->config->all();
+ if (!empty($prefs['namespace_fixed']))
+ return;
+
+ // Build namespace prefix regexp
+ $ns = $this->storage->get_namespace();
+ $regexp = array();
- foreach ($folders as $value) {
- if ($value != 'INBOX' && !preg_match($regexp, $value)) {
- $value = $prefix.$value;
+ foreach ($ns as $entry) {
+ if (!empty($entry)) {
+ foreach ($entry as $item) {
+ if (strlen($item[0])) {
+ $regexp[] = preg_quote($item[0], '/');
+ }
+ }
+ }
+ }
+ $regexp = '/^('. implode('|', $regexp).')/';
+
+ // Fix preferences
+ $opts = array('drafts_mbox', 'junk_mbox', 'sent_mbox', 'trash_mbox', 'archive_mbox');
+ foreach ($opts as $opt) {
+ if ($value = $prefs[$opt]) {
+ if ($value != 'INBOX' && !preg_match($regexp, $value)) {
+ $prefs[$opt] = $prefix.$value;
+ }
+ }
+ }
+
+ if (!empty($prefs['default_folders'])) {
+ foreach ($prefs['default_folders'] as $idx => $name) {
+ if ($name != 'INBOX' && !preg_match($regexp, $name)) {
+ $prefs['default_folders'][$idx] = $prefix.$name;
+ }
+ }
+ }
+
+ if (!empty($prefs['search_mods'])) {
+ $folders = array();
+ foreach ($prefs['search_mods'] as $idx => $value) {
+ if ($idx != 'INBOX' && $idx != '*' && !preg_match($regexp, $idx)) {
+ $idx = $prefix.$idx;
+ }
+ $folders[$idx] = $value;
+ }
+
+ $prefs['search_mods'] = $folders;
}
- $folders_str .= '&'.$value.'&';
- }
- $prefs['collapsed_folders'] = $folders_str;
- }
- $prefs['namespace_fixed'] = true;
+ if (!empty($prefs['message_threading'])) {
+ $folders = array();
+ foreach ($prefs['message_threading'] as $idx => $value) {
+ if ($idx != 'INBOX' && !preg_match($regexp, $idx)) {
+ $idx = $prefix.$idx;
+ }
+ $folders[$prefix.$idx] = $value;
+ }
+
+ $prefs['message_threading'] = $folders;
+ }
+
+ if (!empty($prefs['collapsed_folders'])) {
+ $folders = explode('&&', $prefs['collapsed_folders']);
+ $count = count($folders);
+ $folders_str = '';
+
+ if ($count) {
+ $folders[0] = substr($folders[0], 1);
+ $folders[$count-1] = substr($folders[$count-1], 0, -1);
+ }
+
+ foreach ($folders as $value) {
+ if ($value != 'INBOX' && !preg_match($regexp, $value)) {
+ $value = $prefix.$value;
+ }
+ $folders_str .= '&'.$value.'&';
+ }
- // save updated preferences and reset imap settings (default folders)
- $user->save_prefs($prefs);
- $this->set_storage_prop();
- }
+ $prefs['collapsed_folders'] = $folders_str;
+ }
+ $prefs['namespace_fixed'] = true;
+
+ // save updated preferences and reset imap settings (default folders)
+ $user->save_prefs($prefs);
+ $this->set_storage_prop();
+ }
/**
* Overwrite action variable
@@ -937,6 +1003,17 @@ class rcmail extends rcube
$this->output->set_env('action', $action);
}
+ /**
+ * Set environment variables for specified config options
+ */
+ public function set_env_config($options)
+ {
+ foreach ((array) $options as $option) {
+ if ($this->config->get($option)) {
+ $this->output->set_env($option, true);
+ }
+ }
+ }
/**
* Returns RFC2822 formatted current date in user's timezone
@@ -957,7 +1034,6 @@ class rcmail extends rcube
return $date->format('r');
}
-
/**
* Write login data (name, ID, IP address) to the 'userlogins' log file.
*/
@@ -982,14 +1058,13 @@ class rcmail extends rcube
}
$message = sprintf('Successful login for %s (ID: %d) from %s in session %s',
- $user_name, $user_id, rcube_utils::remote_ip(), session_id());
+ $user_name, $user_id, rcube_utils::remote_ip(), session_id());
}
// log login
self::write_log('userlogins', $message);
}
-
/**
* Create a HTML table based on the given data
*
@@ -1039,7 +1114,6 @@ class rcmail extends rcube
return $table->show($attrib);
}
-
/**
* Convert the given date to a human readable form
* This uses the date formatting properties from config
@@ -1169,7 +1243,6 @@ class rcmail extends rcube
return $out;
}
-
/**
* Return folders list in HTML
*
@@ -1241,19 +1314,27 @@ class rcmail extends rcube
}
else {
$js_mailboxlist = array();
- $out = html::tag('ul', $attrib, $rcmail->render_folder_tree_html($a_mailboxes, $mbox_name, $js_mailboxlist, $attrib), html::$common_attrib);
+ $tree = $rcmail->render_folder_tree_html($a_mailboxes, $mbox_name, $js_mailboxlist, $attrib);
+
+ if ($type != 'js') {
+ $out = html::tag('ul', $attrib, $tree, html::$common_attrib);
+
+ $rcmail->output->include_script('treelist.js');
+ $rcmail->output->add_gui_object('mailboxlist', $attrib['id']);
+ $rcmail->output->set_env('unreadwrap', $attrib['unreadwrap']);
+ $rcmail->output->set_env('collapsed_folders', (string)$rcmail->config->get('collapsed_folders'));
+ }
- $rcmail->output->include_script('treelist.js');
- $rcmail->output->add_gui_object('mailboxlist', $attrib['id']);
$rcmail->output->set_env('mailboxes', $js_mailboxlist);
- $rcmail->output->set_env('unreadwrap', $attrib['unreadwrap']);
- $rcmail->output->set_env('collapsed_folders', (string)$rcmail->config->get('collapsed_folders'));
+
+ // we can't use object keys in javascript because they are unordered
+ // we need sorted folders list for folder-selector widget
+ $rcmail->output->set_env('mailboxes_list', array_keys($js_mailboxlist));
}
return $out;
}
-
/**
* Return folders list as html_select object
*
@@ -1297,7 +1378,6 @@ class rcmail extends rcube
return $select;
}
-
/**
* Create a hierarchical array of the mailbox list
*/
@@ -1355,7 +1435,6 @@ class rcmail extends rcube
}
}
-
/**
* Return html for a structured list &lt;ul&gt; for the mailbox tree
*/
@@ -1432,9 +1511,13 @@ class rcmail extends rcube
$jslist[$folder['id']] = array(
'id' => $folder['id'],
'name' => $foldername,
- 'virtual' => $folder['virtual']
+ 'virtual' => $folder['virtual'],
);
+ if (!empty($folder_class)) {
+ $jslist[$folder['id']]['class'] = $folder_class;
+ }
+
if (!empty($folder['folders'])) {
$out .= html::tag('ul', array('style' => ($is_collapsed ? "display:none;" : null)),
$this->render_folder_tree_html($folder['folders'], $mbox_name, $jslist, $attrib, $nestLevel+1));
@@ -1446,7 +1529,6 @@ class rcmail extends rcube
return $out;
}
-
/**
* Return html for a flat list <select> for the mailbox tree
*/
@@ -1491,7 +1573,6 @@ class rcmail extends rcube
return $out;
}
-
/**
* Return internal name for the given folder if it matches the configured special folders
*/
@@ -1510,7 +1591,6 @@ class rcmail extends rcube
}
}
-
/**
* Try to localize the given IMAP folder name.
* UTF-7 decode it in case no localized text was found
@@ -1589,7 +1669,7 @@ class rcmail extends rcube
$rcmail->output->add_script('rcmail.set_quota('.rcube_output::json_serialize($quota).');', 'docready');
- return html::span($attrib, '');
+ return html::span($attrib, '&nbsp;');
}
@@ -1628,7 +1708,6 @@ class rcmail extends rcube
return $quota_result;
}
-
/**
* Outputs error message according to server error/response codes
*
@@ -1682,7 +1761,6 @@ class rcmail extends rcube
}
}
-
/**
* Output HTML editor scripts
*
@@ -1723,7 +1801,6 @@ class rcmail extends rcube
$this->output->add_script("rcmail_editor_init($script)", 'docready');
}
-
/**
* Replaces TinyMCE's emoticon images with plain-text representation
*
@@ -1761,7 +1838,6 @@ class rcmail extends rcube
return preg_replace($search, $replace, $html);
}
-
/**
* File upload progress handler.
*/
@@ -1793,7 +1869,6 @@ class rcmail extends rcube
$this->output->send();
}
-
/**
* Initializes file uploading interface.
*/
@@ -1811,19 +1886,19 @@ class rcmail extends rcube
// find max filesize value
$max_filesize = parse_bytes(ini_get('upload_max_filesize'));
$max_postsize = parse_bytes(ini_get('post_max_size'));
+
if ($max_postsize && $max_postsize < $max_filesize) {
$max_filesize = $max_postsize;
}
$this->output->set_env('max_filesize', $max_filesize);
- $max_filesize = self::show_bytes($max_filesize);
+ $max_filesize = $this->show_bytes($max_filesize);
$this->output->set_env('filesizeerror', $this->gettext(array(
'name' => 'filesizeerror', 'vars' => array('size' => $max_filesize))));
return $max_filesize;
}
-
/**
* Initializes client-side autocompletion.
*/
@@ -1850,7 +1925,6 @@ class rcmail extends rcube
$this->output->add_label('autocompletechars', 'autocompletemore');
}
-
/**
* Returns supported font-family specifications
*
@@ -1883,7 +1957,6 @@ class rcmail extends rcube
return $fonts;
}
-
/**
* Create a human readable string for a number of bytes
*
@@ -1911,7 +1984,6 @@ class rcmail extends rcube
return $str;
}
-
/**
* Returns real size (calculated) of the message part
*
diff --git a/program/include/rcmail_html_page.php b/program/include/rcmail_html_page.php
index 5d07b8d04..d5610ab47 100644
--- a/program/include/rcmail_html_page.php
+++ b/program/include/rcmail_html_page.php
@@ -38,11 +38,12 @@ class rcmail_html_page extends rcmail_output_html
}
else { // set default styles for warning blocks inside the attachment part frame
$this->add_header(html::tag('style', array('type' => 'text/css'),
- ".rcmail-inline-message { font-family: sans-serif; border:2px solid #ffdf0e; background:#fef893; padding:0.6em 1em; margin-bottom:0.6em }\n" .
+ ".rcmail-inline-message { font-family: sans-serif; border:2px solid #ffdf0e;"
+ . "background:#fef893; padding:0.6em 1em; margin-bottom:0.6em }\n" .
".rcmail-inline-buttons { margin-bottom:0 }"
));
}
parent::write($contents);
}
-} \ No newline at end of file
+}
diff --git a/program/include/rcmail_output_html.php b/program/include/rcmail_output_html.php
index 7cab3725e..4df755985 100644
--- a/program/include/rcmail_output_html.php
+++ b/program/include/rcmail_output_html.php
@@ -5,7 +5,7 @@
| program/include/rcmail_output_html.php |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2006-2012, The Roundcube Dev Team |
+ | Copyright (C) 2006-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -45,6 +45,7 @@ class rcmail_output_html extends rcmail_output
protected $footer = '';
protected $body = '';
protected $base_path = '';
+ protected $devel_mode = false;
// deprecated names of templates used before 0.5
protected $deprecated_templates = array(
@@ -64,6 +65,8 @@ class rcmail_output_html extends rcmail_output
{
parent::__construct();
+ $this->devel_mode = $this->config->get('devel_mode');
+
//$this->framed = $framed;
$this->set_env('task', $task);
$this->set_env('x_frame_options', $this->config->get('x_frame_options', 'sameorigin'));
@@ -80,9 +83,9 @@ class rcmail_output_html extends rcmail_output
$this->set_env('skin', $skin);
if (!empty($_REQUEST['_extwin']))
- $this->set_env('extwin', 1);
+ $this->set_env('extwin', 1);
if ($this->framed || !empty($_REQUEST['_framed']))
- $this->set_env('framed', 1);
+ $this->set_env('framed', 1);
// add common javascripts
$this->add_script('var '.self::JS_OBJECT_NAME.' = new rcube_webmail();', 'head_top');
@@ -116,6 +119,7 @@ class rcmail_output_html extends rcmail_output
public function set_env($name, $value, $addtojs = true)
{
$this->env[$name] = $value;
+
if ($addtojs || isset($this->js_env[$name])) {
$this->js_env[$name] = $value;
}
@@ -310,12 +314,14 @@ class rcmail_output_html extends rcmail_output
*/
public function reset($all = false)
{
+ $framed = $this->framed;
$env = $all ? null : array_intersect_key($this->env, array('extwin'=>1, 'framed'=>1));
parent::reset();
// let some env variables survive
$this->env = $this->js_env = $env;
+ $this->framed = $framed || $this->env['framed'];
$this->js_labels = array();
$this->js_commands = array();
$this->script_files = array();
@@ -323,6 +329,11 @@ class rcmail_output_html extends rcmail_output
$this->header = '';
$this->footer = '';
$this->body = '';
+
+ // load defaults
+ if (!$all) {
+ $this->__construct();
+ }
}
/**
@@ -651,16 +662,37 @@ class rcmail_output_html extends rcmail_output
}
// add file modification timestamp
- if (preg_match('/\.(js|css)$/', $file)) {
- if ($fs = @filemtime($file)) {
- $file .= '?s=' . $fs;
- }
+ if (preg_match('/\.(js|css)$/', $file, $m)) {
+ $file = $this->file_mod($file);
}
return $matches[1] . '=' . $matches[2] . $file . $matches[4];
}
/**
+ * Modify file by adding mtime indicator
+ */
+ protected function file_mod($file)
+ {
+ $fs = false;
+ $ext = substr($file, strrpos($file, '.') + 1);
+
+ // use minified file if exists (not in development mode)
+ if (!$this->devel_mode && !preg_match('/\.min\.' . $ext . '$/', $file)) {
+ $minified_file = substr($file, 0, strlen($ext) * -1) . 'min.' . $ext;
+ if ($fs = @filemtime($minified_file)) {
+ return $minified_file . '?s=' . $fs;
+ }
+ }
+
+ if ($fs = @filemtime($file)) {
+ $file .= '?s=' . $fs;
+ }
+
+ return $file;
+ }
+
+ /**
* Public wrapper to dipp into template parsing.
*
* @param string $input
@@ -964,7 +996,7 @@ class rcmail_output_html extends rcmail_output
$content = html::quote($this->get_pagetitle());
}
else if ($object == 'pagetitle') {
- if ($this->config->get('devel_mode') && !empty($_SESSION['username']))
+ if ($this->devel_mode && !empty($_SESSION['username']))
$title = $_SESSION['username'].' :: ';
else if ($prod_name = $this->config->get('product_name'))
$title = $prod_name . ' :: ';
@@ -1165,7 +1197,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);
}
@@ -1203,26 +1235,17 @@ class rcmail_output_html extends rcmail_output
*/
public function include_script($file, $position='head')
{
- static $sa_files = array();
-
if (!preg_match('|^https?://|i', $file) && $file[0] != '/') {
- $file = $this->scripts_path . $file;
- if ($fs = @filemtime($file)) {
- $file .= '?s=' . $fs;
- }
- }
-
- if (in_array($file, $sa_files)) {
- return;
+ $file = $this->file_mod($this->scripts_path . $file);
}
- $sa_files[] = $file;
-
if (!is_array($this->script_files[$position])) {
$this->script_files[$position] = array();
}
- $this->script_files[$position][] = $file;
+ if (!in_array($file, $this->script_files[$position])) {
+ $this->script_files[$position][] = $file;
+ }
}
/**
@@ -1280,7 +1303,12 @@ class rcmail_output_html extends rcmail_output
*/
public function _write($templ = '', $base_path = '')
{
- $output = empty($templ) ? $this->default_template : trim($templ);
+ $output = trim($templ);
+
+ if (empty($output)) {
+ $output = $this->default_template;
+ $is_empty = true;
+ }
// set default page title
if (empty($this->pagetitle)) {
@@ -1371,8 +1399,8 @@ class rcmail_output_html extends rcmail_output
}
// add css files in head, before scripts, for speed up with parallel downloads
- if (!empty($this->css_files) &&
- (($pos = stripos($output, '<script ')) || ($pos = stripos($output, '</head>')))
+ if (!empty($this->css_files) && !$is_empty
+ && (($pos = stripos($output, '<script ')) || ($pos = stripos($output, '</head>')))
) {
$css = '';
foreach ($this->css_files as $file) {
diff --git a/program/include/rcmail_string_replacer.php b/program/include/rcmail_string_replacer.php
index 4fbc611c9..6771375e1 100644
--- a/program/include/rcmail_string_replacer.php
+++ b/program/include/rcmail_string_replacer.php
@@ -5,7 +5,7 @@
| program/include/rcmail_string_replacer.php |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2012, The Roundcube Dev Team |
+ | Copyright (C) 2012-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -19,7 +19,6 @@
+-----------------------------------------------------------------------+
*/
-
/**
* Helper class for turning URLs and email addresses in plaintext content
* into clickable links.
@@ -40,15 +39,15 @@ class rcmail_string_replacer extends rcube_string_replacer
*/
public function mailto_callback($matches)
{
- $href = $matches[1];
- $suffix = $this->parse_url_brackets($href);
+ $href = $matches[1];
+ $suffix = $this->parse_url_brackets($href);
- $i = $this->add(html::a(array(
- 'href' => 'mailto:' . $href,
- 'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('compose','".rcube::JQ($href)."',this)",
- ), rcube::Q($href)) . $suffix);
+ $i = $this->add(html::a(array(
+ 'href' => 'mailto:' . $href,
+ 'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('compose','".rcube::JQ($href)."',this)",
+ ),
+ rcube::Q($href)) . $suffix);
- return $i >= 0 ? $this->get_replacement($i) : '';
+ return $i >= 0 ? $this->get_replacement($i) : '';
}
-
-} \ No newline at end of file
+}
diff --git a/program/js/app.js b/program/js/app.js
index 94f343f9e..2717e35d5 100644
--- a/program/js/app.js
+++ b/program/js/app.js
@@ -35,7 +35,7 @@ function rcube_webmail()
// webmail client settings
this.dblclick_time = 500;
- this.message_time = 4000;
+ this.message_time = 5000;
this.identifier_expr = new RegExp('[^0-9a-z\-_]', 'gi');
// environment defaults
@@ -199,32 +199,29 @@ function rcube_webmail()
multiselect:true, multiexpand:true, draggable:true, keyboard:true,
column_movable:this.env.col_movable, dblclick_time:this.dblclick_time
});
- this.message_list.row_init = function(o){ p.init_message_row(o); };
- this.message_list.addEventListener('dblclick', function(o){ p.msglist_dbl_click(o); });
- this.message_list.addEventListener('click', function(o){ p.msglist_click(o); });
- this.message_list.addEventListener('keypress', function(o){ p.msglist_keypress(o); });
- this.message_list.addEventListener('select', function(o){ p.msglist_select(o); });
- this.message_list.addEventListener('dragstart', function(o){ p.drag_start(o); });
- this.message_list.addEventListener('dragmove', function(e){ p.drag_move(e); });
- this.message_list.addEventListener('dragend', function(e){ p.drag_end(e); });
- this.message_list.addEventListener('expandcollapse', function(e){ p.msglist_expand(e); });
- this.message_list.addEventListener('column_replace', function(e){ p.msglist_set_coltypes(e); });
- this.message_list.addEventListener('listupdate', function(e){ p.triggerEvent('listupdate', e); });
+ this.message_list
+ .addEventListener('initrow', function(o) { p.init_message_row(o); })
+ .addEventListener('dblclick', function(o) { p.msglist_dbl_click(o); })
+ .addEventListener('click', function(o) { p.msglist_click(o); })
+ .addEventListener('keypress', function(o) { p.msglist_keypress(o); })
+ .addEventListener('select', function(o) { p.msglist_select(o); })
+ .addEventListener('dragstart', function(o) { p.drag_start(o); })
+ .addEventListener('dragmove', function(e) { p.drag_move(e); })
+ .addEventListener('dragend', function(e) { p.drag_end(e); })
+ .addEventListener('expandcollapse', function(o) { p.msglist_expand(o); })
+ .addEventListener('column_replace', function(o) { p.msglist_set_coltypes(o); })
+ .addEventListener('listupdate', function(o) { p.triggerEvent('listupdate', o); })
+ .init();
document.onmouseup = function(e){ return p.doc_mouse_up(e); };
this.gui_objects.messagelist.parentNode.onmousedown = function(e){ return p.click_on_list(e); };
- this.message_list.init();
this.enable_command('toggle_status', 'toggle_flag', 'sort', true);
// 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();
@@ -257,12 +254,14 @@ function rcube_webmail()
}
else if (this.env.action == 'compose') {
this.env.address_group_stack = [];
- this.env.compose_commands = ['send-attachment', 'remove-attachment', 'send', 'cancel', 'toggle-editor', 'list-adresses', 'pushgroup', 'search', 'reset-search', 'extwin'];
+ this.env.compose_commands = ['send-attachment', 'remove-attachment', 'send', 'cancel',
+ 'toggle-editor', 'list-adresses', 'pushgroup', 'search', 'reset-search', 'extwin',
+ 'insert-response', 'save-response'];
if (this.env.drafts_mailbox)
this.env.compose_commands.push('savedraft')
- this.enable_command(this.env.compose_commands, 'identities', true);
+ this.enable_command(this.env.compose_commands, 'identities', 'responses', true);
// add more commands (not enabled)
$.merge(this.env.compose_commands, ['add-recipient', 'firstpage', 'previouspage', 'nextpage', 'lastpage']);
@@ -273,6 +272,23 @@ function rcube_webmail()
this.enable_command('spellcheck', true);
}
+ // init canned response functions
+ if (this.gui_objects.responseslist) {
+ $('a.insertresponse', this.gui_objects.responseslist)
+ .attr('unselectable', 'on')
+ .mousedown(function(e){ return rcube_event.cancel(e); })
+ .mouseup(function(e){
+ ref.command('insert-response', $(this).attr('rel'));
+ $(document.body).trigger('mouseup'); // hides the menu
+ 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); };
// init message compose form
@@ -299,9 +315,11 @@ function rcube_webmail()
if (this.gui_objects.contactslist) {
this.contact_list = new rcube_list_widget(this.gui_objects.contactslist,
{ multiselect:true, draggable:false, keyboard:false });
- this.contact_list.addEventListener('select', function(o){ ref.compose_recipient_select(o); });
- this.contact_list.addEventListener('dblclick', function(o){ ref.compose_add_recipient('to'); });
- this.contact_list.init();
+ this.contact_list
+ .addEventListener('initrow', function(o) { p.triggerEvent('insertrow', { cid:o.uid, row:o }); })
+ .addEventListener('select', function(o) { ref.compose_recipient_select(o); })
+ .addEventListener('dblclick', function(o) { ref.compose_add_recipient('to'); })
+ .init();
}
if (this.gui_objects.addressbookslist) {
@@ -333,26 +351,27 @@ 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,
{multiselect:true, draggable:this.gui_objects.folderlist?true:false, keyboard:true});
- this.contact_list.row_init = function(row){ p.triggerEvent('insertrow', { cid:row.uid, row:row }); };
- this.contact_list.addEventListener('keypress', function(o){ p.contactlist_keypress(o); });
- this.contact_list.addEventListener('select', function(o){ p.contactlist_select(o); });
- this.contact_list.addEventListener('dragstart', function(o){ p.drag_start(o); });
- this.contact_list.addEventListener('dragmove', function(e){ p.drag_move(e); });
- this.contact_list.addEventListener('dragend', function(e){ p.drag_end(e); });
- this.contact_list.init();
+ this.contact_list
+ .addEventListener('initrow', function(o) { p.triggerEvent('insertrow', { cid:o.uid, row:o }); })
+ .addEventListener('keypress', function(o) { p.contactlist_keypress(o); })
+ .addEventListener('select', function(o) { p.contactlist_select(o); })
+ .addEventListener('dragstart', function(o) { p.drag_start(o); })
+ .addEventListener('dragmove', function(e) { p.drag_move(e); })
+ .addEventListener('dragend', function(e) { p.drag_end(e); })
+ .init();
if (this.env.cid)
this.contact_list.highlight_row(this.env.cid);
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');
@@ -376,13 +395,10 @@ function rcube_webmail()
this.init_contact_form();
}
- if (this.gui_objects.qsearchbox)
- this.enable_command('search', 'reset-search', true);
-
break;
case 'settings':
- this.enable_command('preferences', 'identities', 'save', 'folders', true);
+ this.enable_command('preferences', 'identities', 'responses', 'save', 'folders', true);
if (this.env.action == 'identities') {
this.enable_command('add', this.env.identities_level < 2);
@@ -390,9 +406,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);
@@ -401,26 +414,46 @@ 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);
}
if (this.gui_objects.identitieslist) {
- this.identity_list = new rcube_list_widget(this.gui_objects.identitieslist, {multiselect:false, draggable:false, keyboard:false});
- this.identity_list.addEventListener('select', function(o){ p.identity_select(o); });
- this.identity_list.init();
- this.identity_list.focus();
+ this.identity_list = new rcube_list_widget(this.gui_objects.identitieslist,
+ {multiselect:false, draggable:false, keyboard:false});
+ this.identity_list
+ .addEventListener('select', function(o) { p.identity_select(o); })
+ .init()
+ .focus();
if (this.env.iid)
this.identity_list.highlight_row(this.env.iid);
}
else if (this.gui_objects.sectionslist) {
this.sections_list = new rcube_list_widget(this.gui_objects.sectionslist, {multiselect:false, draggable:false, keyboard:false});
- this.sections_list.addEventListener('select', function(o){ p.section_select(o); });
- this.sections_list.init();
- this.sections_list.focus();
+ this.sections_list
+ .addEventListener('select', function(o) { p.section_select(o); })
+ .init()
+ .focus();
}
- else if (this.gui_objects.subscriptionlist)
+ else if (this.gui_objects.subscriptionlist) {
this.init_subscription_list();
+ }
+ 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) {
+ 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))) {
+ p.set_busy(true);
+ p.location_href({ _action:'edit-response', _key:id, _framed:1 }, win);
+ }
+ })
+ .init()
+ .focus();
+ }
break;
@@ -454,6 +487,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;
@@ -464,6 +502,7 @@ function rcube_webmail()
// flag object as complete
this.loaded = true;
+ this.env.lastrefresh = new Date();
// show message
if (this.pending_message)
@@ -479,11 +518,12 @@ function rcube_webmail()
id_prefix: 'rcmli',
id_encode: this.html_identifier_encode,
id_decode: this.html_identifier_decode,
- check_droptarget: function(node){ return !node.virtual && ref.check_droptarget(node.id) }
+ check_droptarget: function(node) { return !node.virtual && ref.check_droptarget(node.id) }
});
- this.treelist.addEventListener('collapse', function(node){ ref.folder_collapsed(node) });
- this.treelist.addEventListener('expand', function(node){ ref.folder_collapsed(node) });
- this.treelist.addEventListener('select', function(node){ ref.triggerEvent('selectfolder', { folder:node.id, prefix:'rcmli' }) });
+ this.treelist
+ .addEventListener('collapse', function(node) { ref.folder_collapsed(node) })
+ .addEventListener('expand', function(node) { ref.folder_collapsed(node) })
+ .addEventListener('select', function(node) { ref.triggerEvent('selectfolder', { folder:node.id, prefix:'rcmli' }) });
}
}
@@ -548,9 +588,12 @@ function rcube_webmail()
}
// check input before leaving compose step
- if (this.task == 'mail' && this.env.action == 'compose' && $.inArray(command, this.env.compose_commands)<0) {
+ if (this.task == 'mail' && this.env.action == 'compose' && $.inArray(command, this.env.compose_commands) < 0 && !this.env.server_error) {
if (this.cmp_hash != this.compose_field_hash() && !confirm(this.get_label('notsentwarning')))
return false;
+
+ // remove copy from local storage if compose screen is left intentionally
+ this.remove_compose_data(this.env.compose_id);
}
// process external commands
@@ -585,10 +628,10 @@ function rcube_webmail()
break;
// commands to switch task
+ case 'logout':
case 'mail':
case 'addressbook':
case 'settings':
- case 'logout':
this.switch_task(command);
break;
@@ -608,6 +651,7 @@ function rcube_webmail()
var form = this.gui_objects.messageform,
win = this.open_window('');
+ this.save_compose_form_local();
$("input[name='_action']", form).val('compose');
form.action = this.url('mail/compose', { _id: this.env.compose_id, _extwin: 1 });
form.target = win.name;
@@ -726,6 +770,13 @@ function rcube_webmail()
case 'add':
if (this.task == 'addressbook')
this.load_contact(0, 'add');
+ else if (this.task == 'settings' && this.env.action == 'responses') {
+ var frame;
+ if ((frame = this.get_frame_window(this.env.contentframe))) {
+ this.set_busy(true);
+ this.location_href({ _action:'add-response', _framed:1 }, frame);
+ }
+ }
else if (this.task == 'settings') {
this.identity_list.clear_selection();
this.load_identity(0, 'add-identity');
@@ -789,7 +840,10 @@ function rcube_webmail()
// addressbook task
else if (this.task == 'addressbook')
this.delete_contacts();
- // user settings task
+ // settings: canned response
+ else if (this.task == 'settings' && this.env.action == 'responses')
+ this.delete_response();
+ // settings: user identities
else if (this.task == 'settings')
this.delete_identity();
break;
@@ -798,14 +852,14 @@ function rcube_webmail()
case 'move':
case 'moveto': // deprecated
if (this.task == 'mail')
- this.move_messages(props);
+ this.move_messages(props, obj);
else if (this.task == 'addressbook')
this.move_contacts(props);
break;
case 'copy':
if (this.task == 'mail')
- this.copy_messages(props);
+ this.copy_messages(props, obj);
else if (this.task == 'addressbook')
this.copy_contacts(props);
break;
@@ -816,37 +870,24 @@ function rcube_webmail()
break;
case 'toggle_status':
- if (props && !props._row)
- break;
-
- flag = 'read';
-
- if (props._row.uid) {
- uid = props._row.uid;
+ case 'toggle_flag':
+ flag = command == 'toggle_flag' ? 'flagged' : 'read';
+ if (uid = props) {
+ // toggle flagged/unflagged
+ if (flag == 'flagged') {
+ if (this.message_list.rows[uid].flagged)
+ flag = 'unflagged';
+ }
// toggle read/unread
- if (this.message_list.rows[uid].deleted)
+ else if (this.message_list.rows[uid].deleted)
flag = 'undelete';
else if (!this.message_list.rows[uid].unread)
flag = 'unread';
- }
- this.mark_message(flag, uid);
- break;
-
- case 'toggle_flag':
- if (props && !props._row)
- break;
-
- flag = 'flagged';
-
- if (props._row.uid) {
- uid = props._row.uid;
- // toggle flagged/unflagged
- if (this.message_list.rows[uid].flagged)
- flag = 'unflagged';
+ this.mark_message(flag, uid);
}
- this.mark_message(flag, uid);
+
break;
case 'always-load':
@@ -1032,7 +1073,7 @@ function rcube_webmail()
url = {_reply_uid: uid, _mbox: this.get_message_mailbox(uid)};
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';
@@ -1175,6 +1216,7 @@ function rcube_webmail()
// user settings commands
case 'preferences':
case 'identities':
+ case 'responses':
case 'folders':
this.goto_url('settings/' + command);
break;
@@ -1265,8 +1307,10 @@ function rcube_webmail()
return;
var url = this.get_task_url(task);
- if (task=='mail')
+ if (task == 'mail')
url += '&_mbox=INBOX';
+ else if (task == 'logout')
+ this.clear_compose_data();
this.redirect(url);
};
@@ -1378,8 +1422,6 @@ function rcube_webmail()
this.drag_start = function(list)
{
- var model = this.task == 'mail' ? this.env.mailboxes : this.env.contactfolders;
-
this.drag_active = true;
if (this.preview_timer)
@@ -1441,7 +1483,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 {
@@ -1622,8 +1664,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);
}
@@ -1673,7 +1715,7 @@ function rcube_webmail()
url += (url.match(/\?/) ? '&' : '?') + '_extwin=1';
if (this.env.standard_windows)
- extwin = window.open(url, wname);
+ var extwin = window.open(url, wname);
else {
var win = this.is_framed() ? parent.window : window,
page = $(win),
@@ -1693,8 +1735,11 @@ function rcube_webmail()
extwin.document.write('<html><body>' + this.get_label('loading') + '</body></html>');
}
+ // allow plugins to grab the window reference (#1489413)
+ this.triggerEvent('openwindow', { url:url, handle:extwin });
+
// focus window, delayed to bring to front
- window.setTimeout(function() { extwin.focus(); }, 10);
+ window.setTimeout(function() { extwin && extwin.focus(); }, 10);
return extwin;
};
@@ -1706,7 +1751,7 @@ function rcube_webmail()
this.init_message_row = function(row)
{
- var expando, self = this, uid = row.uid,
+ var i, fn = {}, self = this, uid = row.uid,
status_icon = (this.env.status_col != null ? 'status' : 'msg') + 'icn' + row.uid;
if (uid && this.env.messages[uid])
@@ -1714,8 +1759,7 @@ function rcube_webmail()
// set eventhandler to status icon
if (row.icon = document.getElementById(status_icon)) {
- row.icon._row = row.obj;
- row.icon.onmousedown = function(e) { self.command('toggle_status', this); rcube_event.cancel(e); };
+ fn.icon = function(e) { self.command('toggle_status', uid); };
}
// save message icon position too
@@ -1724,24 +1768,28 @@ function rcube_webmail()
else
row.msgicon = row.icon;
- // set eventhandler to flag icon, if icon found
+ // set eventhandler to flag icon
if (this.env.flagged_col != null && (row.flagicon = document.getElementById('flagicn'+row.uid))) {
- row.flagicon._row = row.obj;
- row.flagicon.onmousedown = function(e) { self.command('toggle_flag', this); rcube_event.cancel(e); };
+ fn.flagicon = function(e) { self.command('toggle_flag', uid); };
}
- if (!row.depth && row.has_children && (expando = document.getElementById('rcmexpando'+row.uid))) {
- row.expando = expando;
- expando.onmousedown = function(e) { return self.expand_message_row(e, uid); };
+ // set event handler to thread expand/collapse icon
+ if (!row.depth && row.has_children && (row.expando = document.getElementById('rcmexpando'+row.uid))) {
+ fn.expando = function(e) { self.expand_message_row(e, uid); };
+ }
+
+ // attach events
+ $.each(fn, function(i, f) {
+ row[i].onclick = function(e) { f(e); return rcube_event.cancel(e); };
if (bw.touch) {
- expando.addEventListener('touchend', function(e) {
+ row[i].addEventListener('touchend', function(e) {
if (e.changedTouches.length == 1) {
- self.expand_message_row(e, uid);
+ f(e);
return rcube_event.cancel(e);
}
}, false);
}
- }
+ });
this.triggerEvent('insertrow', { uid:uid, row:row });
};
@@ -2009,7 +2057,6 @@ function rcube_webmail()
if (preview && this.message_list && this.message_list.rows[id] && this.message_list.rows[id].unread && this.env.preview_pane_mark_read >= 0) {
this.preview_read_timer = setTimeout(function() {
ref.set_message(id, 'unread', false);
- ref.update_thread_root(id, 'read');
if (ref.env.unread_counts[ref.env.mailbox]) {
ref.env.unread_counts[ref.env.mailbox] -= 1;
ref.set_unread_count(ref.env.mailbox, ref.env.unread_counts[ref.env.mailbox], ref.env.mailbox == 'INBOX');
@@ -2027,12 +2074,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']();
@@ -2513,8 +2562,11 @@ function rcube_webmail()
if (!row)
return false;
- if (flag == 'unread')
+ if (flag == 'unread') {
+ if (row.unread != status)
+ this.update_thread_root(uid, status ? 'unread' : 'read');
row.unread = status;
+ }
else if(flag == 'deleted')
row.deleted = status;
else if (flag == 'replied')
@@ -2572,10 +2624,12 @@ function rcube_webmail()
};
// copy selected messages to the specified mailbox
- this.copy_messages = function(mbox)
+ this.copy_messages = function(mbox, obj)
{
if (mbox && typeof mbox === 'object')
mbox = mbox.id;
+ else if (!mbox)
+ return this.folder_selector(obj, function(folder) { ref.command('copy', folder); });
// exit if current or no mailbox specified
if (!mbox || mbox == this.env.mailbox)
@@ -2592,10 +2646,12 @@ function rcube_webmail()
};
// move selected messages to the specified mailbox
- this.move_messages = function(mbox)
+ this.move_messages = function(mbox, obj)
{
if (mbox && typeof mbox === 'object')
mbox = mbox.id;
+ else if (!mbox)
+ return this.folder_selector(obj, function(folder) { ref.command('move', folder); });
// exit if current or no mailbox specified
if (!mbox || mbox == this.env.mailbox)
@@ -2622,20 +2678,7 @@ function rcube_webmail()
// delete selected messages from the current mailbox
this.delete_messages = function(event)
{
- var uid, i, len, trash = this.env.trash_mailbox,
- list = this.message_list,
- selection = list ? list.get_selection() : [];
-
- // exit if no mailbox specified or if selection is empty
- if (!this.env.uid && !selection.length)
- return;
-
- // also select childs of collapsed rows
- for (i=0, len=selection.length; i<len; i++) {
- uid = selection[i];
- if (list.rows[uid].has_children && !list.rows[uid].expanded)
- list.select_children(uid);
- }
+ var list = this.message_list, trash = this.env.trash_mailbox;
// if config is set to flag for deletion
if (this.env.flag_for_deletion) {
@@ -2675,7 +2718,7 @@ function rcube_webmail()
this._with_selected_messages('delete', post_data);
};
- // Send a specifc move/delete request with UIDs of all selected messages
+ // Send a specific move/delete request with UIDs of all selected messages
// @private
this._with_selected_messages = function(action, post_data, lock)
{
@@ -2707,9 +2750,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
@@ -2745,6 +2785,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;
};
@@ -2811,9 +2854,6 @@ function rcube_webmail()
this.set_message(a_uids[i], 'unread', (flag == 'unread' ? true : false));
this.http_post('mark', post_data, lock);
-
- for (i=0; i<len; i++)
- this.update_thread_root(a_uids[i], flag);
};
// set image to flagged or unflagged
@@ -2995,9 +3035,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)
+ ));
};
@@ -3083,6 +3126,60 @@ function rcube_webmail()
}
}
+ // check for locally stored compose data
+ if (window.localStorage) {
+ var index = this.local_storage_get_item('compose.index', []);
+
+ for (var key, i = 0; i < index.length; i++) {
+ key = index[i], formdata = this.local_storage_get_item('compose.' + key, null, true);
+ if (!formdata) {
+ continue;
+ }
+ // restore saved copy of current compose_id
+ if (formdata.changed && key == this.env.compose_id) {
+ this.restore_compose_form(key, html_mode);
+ break;
+ }
+ // skip records from 'other' drafts
+ if (this.env.draft_id && formdata.draft_id && formdata.draft_id != this.env.draft_id) {
+ continue;
+ }
+ // show dialog asking to restore the message
+ if (formdata.changed && formdata.session != this.env.session_id) {
+ this.show_popup_dialog(
+ this.get_label('restoresavedcomposedata')
+ .replace('$date', new Date(formdata.changed).toLocaleString())
+ .replace('$subject', formdata._subject)
+ .replace(/\n/g, '<br/>'),
+ this.get_label('restoremessage'),
+ [{
+ text: this.get_label('restore'),
+ click: function(){
+ ref.restore_compose_form(key, html_mode);
+ ref.remove_compose_data(key); // remove old copy
+ ref.save_compose_form_local(); // save under current compose_id
+ $(this).dialog('close');
+ }
+ },
+ {
+ text: this.get_label('delete'),
+ click: function(){
+ ref.remove_compose_data(key);
+ $(this).dialog('close');
+ }
+ },
+ {
+ text: this.get_label('ignore'),
+ click: function(){
+ $(this).dialog('close');
+ }
+ }]
+ );
+ break;
+ }
+ }
+ }
+
if (input_to.val() == '')
input_to.focus();
else if (input_subject.val() == '')
@@ -3103,7 +3200,7 @@ function rcube_webmail()
{
this.env.recipients_delimiter = this.env.recipients_separator + ' ';
- obj[bw.ie || bw.safari || bw.chrome ? 'keydown' : 'keypress'](function(e) { return ref.ksearch_keydown(e, this, props); })
+ obj.keydown(function(e) { return ref.ksearch_keydown(e, this, props); })
.attr('autocomplete', 'off');
};
@@ -3288,6 +3385,154 @@ function rcube_webmail()
return true;
};
+ this.insert_response = function(key)
+ {
+ var insert = this.env.textresponses[key] ? this.env.textresponses[key].text : null;
+ if (!insert)
+ return false;
+
+ // insert into tinyMCE editor
+ if ($("input[name='_is_html']").val() == '1') {
+ var editor = tinyMCE.get(this.env.composebody);
+ editor.getWin().focus(); // correct focus in IE & Chrome
+ editor.selection.setContent(insert, { format:'text' });
+ }
+ // replace selection in compose textarea
+ else {
+ var textarea = rcube_find_object(this.env.composebody),
+ selection = $(textarea).is(':focus') ? this.get_input_selection(textarea) : { start:0, end:0 },
+ inp_value = textarea.value;
+ pre = inp_value.substring(0, selection.start),
+ end = inp_value.substring(selection.end, inp_value.length);
+
+ // insert response text
+ textarea.value = pre + insert + end;
+
+ // set caret after inserted text
+ this.set_caret_pos(textarea, selection.start + insert.length);
+ textarea.focus();
+ }
+ };
+
+ /**
+ * Open the dialog to save a new canned response
+ */
+ this.save_response = function()
+ {
+ var sigstart, text = '', strip = false;
+
+ // get selected text from tinyMCE editor
+ if ($("input[name='_is_html']").val() == '1') {
+ var editor = tinyMCE.get(this.env.composebody);
+ editor.getWin().focus(); // correct focus in IE & Chrome
+ text = editor.selection.getContent({ format:'text' });
+
+ if (!text) {
+ text = editor.getContent({ format:'text' });
+ strip = true;
+ }
+ }
+ // get selected text from compose textarea
+ else {
+ var textarea = rcube_find_object(this.env.composebody), sigstart;
+ if (textarea && $(textarea).is(':focus')) {
+ text = this.get_input_selection(textarea).text;
+ }
+
+ if (!text && textarea) {
+ text = textarea.value;
+ strip = true;
+ }
+ }
+
+ // strip off signature
+ if (strip) {
+ sigstart = text.indexOf('-- \n');
+ if (sigstart > 0) {
+ text = text.substring(0, sigstart);
+ }
+ }
+
+ // show dialog to enter a name and to modify the text to be saved
+ var buttons = {},
+ html = '<form class="propform">' +
+ '<div class="prop block"><label>' + this.get_label('responsename') + '</label>' +
+ '<input type="text" name="name" id="ffresponsename" size="40" /></div>' +
+ '<div class="prop block"><label>' + this.get_label('responsetext') + '</label>' +
+ '<textarea name="text" id="ffresponsetext" cols="40" rows="8"></textarea></div>' +
+ '</form>';
+
+ buttons[this.gettext('save')] = function(e) {
+ var name = $('#ffresponsename').val(),
+ text = $('#ffresponsetext').val();
+
+ if (!text) {
+ $('#ffresponsetext').select();
+ return false;
+ }
+ if (!name)
+ name = text.substring(0,40);
+
+ var lock = ref.display_message(ref.get_label('savingresponse'), 'loading');
+ ref.http_post('settings/responses', { _insert:1, _name:name, _text:text }, lock);
+ $(this).dialog('close');
+ };
+
+ buttons[this.gettext('cancel')] = function() {
+ $(this).dialog('close');
+ };
+
+ this.show_popup_dialog(html, this.gettext('savenewresponse'), buttons);
+
+ $('#ffresponsetext').val(text);
+ $('#ffresponsename').select();
+ };
+
+ this.add_response_item = function(response)
+ {
+ var key = response.key;
+ this.env.textresponses[key] = response;
+
+ // append to responses list
+ if (this.gui_objects.responseslist) {
+ var li = $('<li>').appendTo(this.gui_objects.responseslist);
+ $('<a>').addClass('insertresponse active')
+ .attr('href', '#')
+ .attr('rel', key)
+ .html(this.quote_html(response.name))
+ .appendTo(li)
+ .mousedown(function(e){
+ return rcube_event.cancel(e);
+ })
+ .mouseup(function(e){
+ ref.command('insert-response', key);
+ $(document.body).trigger('mouseup'); // hides the menu
+ return rcube_event.cancel(e);
+ });
+ }
+ };
+
+ this.edit_responses = function()
+ {
+ // TODO: implement inline editing of responses
+ };
+
+ this.delete_response = function(key)
+ {
+ if (!key && this.responses_list) {
+ var selection = this.responses_list.get_selection();
+ key = selection[0];
+ }
+
+ // submit delete request
+ if (key && confirm(this.get_label('deleteresponseconfirm'))) {
+ this.http_post('settings/delete-response', { _key: key }, false);
+ return true;
+ }
+
+ return false;
+ };
+
this.stop_spellchecking = function()
{
var ed;
@@ -3364,14 +3609,18 @@ function rcube_webmail()
{
var rc;
- if (!this.env.draft_id && id && (rc = this.opener())) {
- // refresh the drafts folder in opener window
- if (rc.env.task == 'mail' && rc.env.action == '' && rc.env.mailbox == this.env.drafts_mailbox)
- rc.command('checkmail');
- }
+ if (id && id != this.env.draft_id) {
+ if (rc = this.opener()) {
+ // refresh the drafts folder in opener window
+ if (rc.env.task == 'mail' && rc.env.action == '' && rc.env.mailbox == this.env.drafts_mailbox)
+ rc.command('checkmail');
+ }
+
+ this.env.draft_id = id;
+ $("input[name='_draft_saveid']").val(id);
- this.env.draft_id = id;
- $("input[name='_draft_saveid']").val(id);
+ this.remove_compose_data(this.env.compose_id);
+ }
};
this.auto_save_start = function()
@@ -3379,6 +3628,20 @@ function rcube_webmail()
if (this.env.draft_autosave)
this.save_timer = setTimeout(function(){ ref.command("savedraft"); }, this.env.draft_autosave * 1000);
+ // save compose form content to local storage every 5 seconds
+ if (!this.local_save_timer && window.localStorage) {
+ // track typing activity and only save on changes
+ this.compose_type_activity = this.compose_type_activity_last = 0;
+ $(document).bind('keypress', function(e){ ref.compose_type_activity++; });
+
+ this.local_save_timer = setInterval(function(){
+ if (ref.compose_type_activity > ref.compose_type_activity_last) {
+ ref.save_compose_form_local();
+ ref.compose_type_activity_last = ref.compose_type_activity;
+ }
+ }, 5000);
+ }
+
// Unlock interface now that saving is complete
this.busy = false;
};
@@ -3407,6 +3670,115 @@ function rcube_webmail()
return str;
};
+ // store the contents of the compose form to localstorage
+ this.save_compose_form_local = function()
+ {
+ var formdata = { session:this.env.session_id, changed:new Date().getTime() },
+ ed, empty = true;
+
+ // get fresh content from editor
+ if (window.tinyMCE && (ed = tinyMCE.get(this.env.composebody))) {
+ tinyMCE.triggerSave();
+ }
+
+ if (this.env.draft_id) {
+ formdata.draft_id = this.env.draft_id;
+ }
+
+ $('input, select, textarea', this.gui_objects.messageform).each(function(i, elem) {
+ switch (elem.tagName.toLowerCase()) {
+ case 'input':
+ if (elem.type == 'button' || elem.type == 'submit' || (elem.type == 'hidden' && elem.name != '_is_html')) {
+ break;
+ }
+ formdata[elem.name] = elem.type != 'checkbox' || elem.checked ? $(elem).val() : '';
+
+ if (formdata[elem.name] != '' && elem.type != 'hidden')
+ empty = false;
+ break;
+
+ case 'select':
+ formdata[elem.name] = $('option:checked', elem).val();
+ break;
+
+ default:
+ formdata[elem.name] = $(elem).val();
+ if (formdata[elem.name] != '')
+ empty = false;
+ }
+ });
+
+ if (window.localStorage && !empty) {
+ var index = this.local_storage_get_item('compose.index', []),
+ key = this.env.compose_id;
+
+ if ($.inArray(key, index) < 0) {
+ index.push(key);
+ }
+ this.local_storage_set_item('compose.' + key, formdata, true);
+ this.local_storage_set_item('compose.index', index);
+ }
+ };
+
+ // write stored compose data back to form
+ this.restore_compose_form = function(key, html_mode)
+ {
+ var ed, formdata = this.local_storage_get_item('compose.' + key, true);
+
+ if (formdata && typeof formdata == 'object') {
+ $.each(formdata, function(k, value) {
+ if (k[0] == '_') {
+ var elem = $("*[name='"+k+"']");
+ if (elem[0] && elem[0].type == 'checkbox') {
+ elem.prop('checked', value != '');
+ }
+ else {
+ elem.val(value);
+ }
+ }
+ });
+
+ // initialize HTML editor
+ if (formdata._is_html == '1') {
+ if (!html_mode) {
+ tinyMCE.execCommand('mceAddControl', false, this.env.composebody);
+ this.triggerEvent('aftertoggle-editor', { mode:'html' });
+ }
+ }
+ else if (html_mode) {
+ tinyMCE.execCommand('mceRemoveControl', false, this.env.composebody);
+ this.triggerEvent('aftertoggle-editor', { mode:'plain' });
+ }
+ }
+ };
+
+ // remove stored compose data from localStorage
+ this.remove_compose_data = function(key)
+ {
+ if (window.localStorage) {
+ var index = this.local_storage_get_item('compose.index', []);
+
+ if ($.inArray(key, index) >= 0) {
+ this.local_storage_remove_item('compose.' + key);
+ this.local_storage_set_item('compose.index', $.grep(index, function(val,i) { return val != key; }));
+ }
+ }
+ };
+
+ // clear all stored compose data of this user
+ this.clear_compose_data = function()
+ {
+ if (window.localStorage) {
+ var index = this.local_storage_get_item('compose.index', []);
+
+ for (var i=0; i < index.length; i++) {
+ this.local_storage_remove_item('compose.' + index[i]);
+ }
+ this.local_storage_remove_item('compose.index');
+ }
+ }
+
+
this.change_identity = function(obj, show_sig)
{
if (!obj || !obj.options)
@@ -3562,6 +3934,7 @@ function rcube_webmail()
}
this.env.identity = id;
+ this.triggerEvent('change_identity');
return true;
};
@@ -3838,7 +4211,7 @@ function rcube_webmail()
case 38: // arrow up
case 40: // arrow down
if (!this.ksearch_visible())
- break;
+ return;
var dir = key==38 ? 1 : 0;
@@ -3873,8 +4246,7 @@ function rcube_webmail()
case 37: // left
case 39: // right
- if (mod != SHIFT_KEY)
- return;
+ return;
}
// start timer
@@ -3937,8 +4309,10 @@ function rcube_webmail()
if (this.ksearch_input.setSelectionRange)
this.ksearch_input.setSelectionRange(cpos, cpos);
- if (trigger)
+ if (trigger) {
this.triggerEvent('autocomplete_insert', { field:this.ksearch_input, insert:insert });
+ this.compose_type_activity++;
+ }
};
this.replace_group_recipients = function(id, recipients)
@@ -3947,6 +4321,7 @@ function rcube_webmail()
this.group2expand[id].input.value = this.group2expand[id].input.value.replace(this.group2expand[id].name, recipients);
this.triggerEvent('autocomplete_insert', { field:this.group2expand[id].input, insert:recipients });
this.group2expand[id] = null;
+ this.compose_type_activity++;
}
};
@@ -3993,7 +4368,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 && (!data || data.num <= 0) && this.env.contacts && !this.env.contacts.length)
+ if (old_value && old_value.length && q.startsWith(old_value) && (!data || data.num <= 0) && this.env.contacts && !this.env.contacts.length)
return;
var sources = props && props.sources ? props.sources : [''];
@@ -4592,8 +4967,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())
@@ -4638,6 +5011,7 @@ function rcube_webmail()
{
var key = 'G'+prop.source+prop.id;
if (this.treelist.remove(key)) {
+ this.triggerEvent('group_delete', { source:prop.source, id:prop.id });
delete this.env.contactfolders[key];
delete this.env.contactgroups[key];
}
@@ -5135,9 +5509,8 @@ function rcube_webmail()
target = win;
}
- if (action && (id || action == 'add-identity')) {
- this.set_busy(true);
- this.location_href(url, target);
+ if (id || action == 'add-identity') {
+ this.location_href(url, target, true);
}
return true;
@@ -5174,6 +5547,35 @@ function rcube_webmail()
}
};
+ this.update_response_row = function(response, oldkey)
+ {
+ var list = this.responses_list;
+
+ if (list && oldkey) {
+ list.update_row(oldkey, [ response.name ], response.key, true);
+ }
+ else if (list) {
+ list.insert_row({ id:'rcmrow'+response.key, cols:[ { className:'name', innerHTML:response.name } ] });
+ list.select(response.key);
+ }
+ };
+
+ this.remove_response = function(key)
+ {
+ var frame;
+
+ if (this.env.textresponses) {
+ delete this.env.textresponses[key];
+ }
+
+ if (this.responses_list) {
+ this.responses_list.remove_row(key);
+ if (this.env.contentframe && (frame = this.get_frame_window(this.env.contentframe))) {
+ frame.location.href = this.env.blankpage;
+ }
+ }
+ };
+
/*********************************************************/
/********* folder manager methods *********/
@@ -5181,17 +5583,22 @@ 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); });
- this.subscription_list.addEventListener('dragstart', function(o){ p.drag_active = true; });
- this.subscription_list.addEventListener('dragend', function(o){ p.subscription_move_folder(o); });
- this.subscription_list.row_init = function (row) {
- row.obj.onmouseover = function() { p.focus_subscription(row.id); };
- row.obj.onmouseout = function() { p.unfocus_subscription(row.id); };
- };
- this.subscription_list.init();
+ this.subscription_list
+ .addEventListener('select', function(o){ p.subscription_select(o); })
+ .addEventListener('dragstart', function(o){ p.drag_active = true; })
+ .addEventListener('dragend', function(o){ p.subscription_move_folder(o); })
+ .addEventListener('initrow', function (row) {
+ row.obj.onmouseover = function() { p.focus_subscription(row.id); };
+ row.obj.onmouseout = function() { p.unfocus_subscription(row.id); };
+ })
+ .init();
+
$('#mailboxroot')
.mouseover(function(){ p.focus_subscription(this.id); })
.mouseout(function(){ p.unfocus_subscription(this.id); })
@@ -5199,9 +5606,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] &&
@@ -5209,8 +5614,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');
@@ -5223,7 +5628,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');
@@ -5249,21 +5655,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));
};
@@ -5292,7 +5697,7 @@ function rcube_webmail()
if (!this.gui_objects.subscriptionlist)
return false;
- var row, n, i, tmp, tmp_name, folders, rowid, list = [], slist = [],
+ var row, n, i, tmp, tmp_name, rowid, folders = [], list = [], slist = [],
tbody = this.gui_objects.subscriptionlist.tBodies[0],
refrow = $('tr', tbody).get(1),
id = 'rcmrow'+((new Date).getTime());
@@ -5307,8 +5712,7 @@ function rcube_webmail()
row = $(refrow).clone(true);
// set ID, reset css class
- row.attr('id', id);
- row.attr('class', class_name);
+ row.attr({id: id, 'class': class_name});
// set folder name
row.find('td:first').html(display_name);
@@ -5318,12 +5722,27 @@ function rcube_webmail()
.prop({checked: subscribed ? true : false, disabled: is_protected ? true : false});
// add to folder/row-ID map
- this.env.subscriptionrows[id] = [name, display_name, 0];
+ this.env.subscriptionrows[id] = [name, display_name, false];
+
+ // sort folders (to find a place where to insert the row)
+ // replace delimiter with \0 character to fix sorting
+ // issue where 'Abc Abc' would be placed before 'Abc/def'
+ var replace_from = RegExp(RegExp.escape(this.env.delimiter), 'g'),
+ replace_to = String.fromCharCode(0);
+
+ $.each(this.env.subscriptionrows, function(k,v) {
+ if (v.length < 4) {
+ var n = v[0];
+ n = n.replace(replace_from, replace_to);
+ v.push(n);
+ }
+ folders.push(v);
+ });
- // sort folders, to find a place where to insert the row
- folders = [];
- $.each(this.env.subscriptionrows, function(k,v){ folders.push(v) });
- folders.sort(function(a,b){ return a[0] < b[0] ? -1 : (a[0] > b[0] ? 1 : 0) });
+ folders.sort(function(a, b) {
+ var len = a.length - 1; n1 = a[len], n2 = b[len];
+ return n1 < n2 ? -1 : 1;
+ });
for (n in folders) {
// protected folder
@@ -5336,7 +5755,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 {
@@ -5347,7 +5766,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]);
}
@@ -5378,18 +5797,28 @@ function rcube_webmail()
// replace an existing table row with a new folder line (with subfolders)
this.replace_folder_row = function(oldfolder, newfolder, display_name, is_protected, class_name)
{
- if (!this.gui_objects.subscriptionlist)
+ if (!this.gui_objects.subscriptionlist) {
+ if (this.is_framed)
+ return parent.rcmail.replace_folder_row(oldfolder, newfolder, display_name, is_protected, class_name);
return false;
+ }
var i, n, len, name, dispname, oldrow, tmprow, row, level,
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);
+ // no renaming, only update class_name
+ if (oldfolder == newfolder) {
+ $('#'+id).attr('class', class_name || '');
+ this.subscription_list.focus();
+ return;
+ }
+
// replace an existing table row
this._remove_folder_row(id);
row = $(this.add_folder_row(newfolder, display_name, is_protected, subscribed, true, class_name));
@@ -5410,7 +5839,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
@@ -5459,13 +5888,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
@@ -5655,59 +6084,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;
}
}
}
@@ -5782,7 +6188,7 @@ function rcube_webmail()
this.triggerEvent('message', { message:msg, type:type, timeout:timeout, object:obj });
if (timeout > 0)
- setTimeout(function() { ref.hide_message(id, type == 'loading'); }, timeout);
+ setTimeout(function() { ref.hide_message(id, type != 'loading'); }, timeout);
return id;
};
@@ -5862,24 +6268,23 @@ function rcube_webmail()
};
// open a jquery UI dialog with the given content
- this.show_popup_dialog = function(html, title, buttons)
+ this.show_popup_dialog = function(html, title, buttons, options)
{
// forward call to parent window
if (this.is_framed()) {
- parent.rcmail.show_popup_dialog(html, title, buttons);
- return;
+ return parent.rcmail.show_popup_dialog(html, title, buttons);
}
var popup = $('<div class="popup">')
.html(html)
- .dialog({
+ .dialog($.extend({
title: title,
buttons: buttons,
modal: true,
resizable: true,
width: 500,
close: function(event, ui) { $(this).remove() }
- });
+ }, options || {}));
// resize and center popup
var win = $(window), w = win.width(), h = win.height(),
@@ -5889,13 +6294,15 @@ function rcube_webmail()
height: Math.min(h - 40, height + 75 + (buttons ? 50 : 0)),
width: Math.min(w - 20, width + 20)
});
+
+ return popup;
};
// 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
@@ -5905,14 +6312,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 });
@@ -5941,8 +6344,6 @@ function rcube_webmail()
name = this.html_identifier(name, encode);
return document.getElementById(prefix+name);
}
-
- return null;
};
// for reordering column array (Konqueror workaround)
@@ -6036,6 +6437,12 @@ function rcube_webmail()
this.env.quota_content = content;
};
+ // update trash folder state
+ this.set_trash_count = function(count)
+ {
+ this[(count ? 'un' : '') + 'mark_folder'](this.env.trash_mailbox, 'empty', '', true);
+ };
+
// update the mailboxlist
this.set_unread_count = function(mbox, count, set_title, mark)
{
@@ -6069,7 +6476,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];
}
@@ -6142,6 +6549,105 @@ function rcube_webmail()
elem.onclick = function() { rcmail.command('show-headers', '', elem); };
};
+ // create folder selector popup, position and display it
+ this.folder_selector = function(obj, callback)
+ {
+ var container = this.folder_selector_element;
+
+ if (!container) {
+ var rows = [],
+ delim = this.env.delimiter,
+ ul = $('<ul class="toolbarmenu iconized">'),
+ li = document.createElement('li'),
+ link = document.createElement('a'),
+ span = document.createElement('span');
+
+ container = $('<div id="folder-selector" class="popupmenu"></div>');
+ link.href = '#';
+ link.className = 'icon';
+
+ // loop over sorted folders list
+ $.each(this.env.mailboxes_list, function() {
+ var tmp, n = 0, s = 0,
+ folder = ref.env.mailboxes[this],
+ id = folder.id,
+ a = link.cloneNode(false), row = li.cloneNode(false);
+
+ if (folder.virtual)
+ a.className += ' virtual';
+ else {
+ a.className += ' active';
+ a.onclick = function() { container.hide().data('callback')(folder.id); };
+ }
+
+ if (folder['class'])
+ a.className += ' ' + folder['class'];
+
+ // calculate/set indentation level
+ while ((s = id.indexOf(delim, s)) >= 0) {
+ n++; s++;
+ }
+ a.style.paddingLeft = n ? (n * 16) + 'px' : 0;
+
+ // add folder name element
+ tmp = span.cloneNode(false);
+ $(tmp).text(folder.name);
+ a.appendChild(tmp);
+
+ row.appendChild(a);
+ rows.push(row);
+ });
+
+ ul.append(rows).appendTo(container);
+
+ // temporarily show element to calculate its size
+ container.css({left: '-1000px', top: '-1000px'})
+ .appendTo($('body')).show();
+
+ // set max-height if the list is long
+ if (rows.length > 10)
+ container.css('max-height', $('li', container)[0].offsetHeight * 10 + 9)
+
+ // hide selector on click out of selector element
+ var fn = function(e) { if (e.target != container.get(0)) container.hide(); };
+ $(document.body).on('mouseup', fn);
+ $('iframe').contents().on('mouseup', fn)
+ .load(function(e) { try { $(this).contents().on('mouseup', fn); } catch(e) {}; });
+
+ this.folder_selector_element = container;
+ }
+
+ // position menu on the screen
+ this.element_position(container, obj);
+
+ container.show().data('callback', callback);
+ };
+
+ // position a menu element on the screen in relation to other object
+ this.element_position = function(element, obj)
+ {
+ var obj = $(obj), win = $(window),
+ width = obj.width(),
+ height = obj.height(),
+ win_height = win.height(),
+ elem_height = $(element).height(),
+ elem_width = $(element).width(),
+ pos = obj.offset(),
+ top = pos.top,
+ left = pos.left + width;
+
+ if (top + elem_height > win_height) {
+ top -= elem_height - height;
+ if (top < 0)
+ top = Math.max(0, (win_height - elem_height) / 2);
+ }
+
+ if (left + elem_width > win.width())
+ left -= elem_width + width;
+
+ element.css({left: left + 'px', top: top + 'px'});
+ };
+
/********************************************************/
/********* html to text conversion functions *********/
@@ -6263,7 +6769,7 @@ function rcube_webmail()
if (result === false)
return false;
else
- query = result;
+ url = this.url(action, result);
}
url += '&_remote=1';
@@ -6411,6 +6917,16 @@ function rcube_webmail()
case 'refresh':
case 'check-recent':
+ // update message flags
+ $.each(this.env.recent_flags || {}, function(uid, flags) {
+ ref.set_message(uid, 'deleted', flags.deleted);
+ ref.set_message(uid, 'replied', flags.answered);
+ ref.set_message(uid, 'unread', !flags.seen);
+ ref.set_message(uid, 'forwarded', flags.forwarded);
+ ref.set_message(uid, 'flagged', flags.flagged);
+ });
+ delete this.env.recent_flags;
+
case 'getunread':
case 'search':
this.env.qsearch = null;
@@ -6423,7 +6939,6 @@ function rcube_webmail()
if ((response.action == 'list' || response.action == 'search') && this.message_list) {
this.msglist_select(this.message_list);
- this.message_list.resize();
this.triggerEvent('listupdate', { folder:this.env.mailbox, rowcount:this.message_list.rowcount });
}
}
@@ -6434,7 +6949,6 @@ function rcube_webmail()
this.enable_command('search-create', this.env.source == '');
this.enable_command('search-delete', this.env.search_id);
this.update_group_commands();
- this.contact_list.resize();
this.triggerEvent('listupdate', { folder:this.env.source, rowcount:this.contact_list.rowcount });
}
}
@@ -6488,6 +7002,20 @@ function rcube_webmail()
setTimeout(function(){ ref.keep_alive(); ref.start_keepalive(); }, 30000);
};
+ // handler for session errors detected on the server
+ this.session_error = function(redirect_url)
+ {
+ this.env.server_error = 401;
+
+ // save message in local storage and do not redirect
+ if (this.env.action == 'compose') {
+ this.save_compose_form_local();
+ }
+ else if (redirect_url) {
+ window.setTimeout(function(){ ref.redirect(redirect_url, true); }, 2000);
+ }
+ };
+
// callback when an iframe finished loading
this.iframe_loaded = function(unlock)
{
@@ -6624,7 +7152,7 @@ function rcube_webmail()
// post the given form to a hidden iframe
this.async_upload_form = function(form, action, onload)
{
- var ts = new Date().getTime(),
+ var frame, ts = new Date().getTime(),
frame_name = 'rcmupload'+ts;
// upload progress support
@@ -6643,21 +7171,19 @@ function rcube_webmail()
// have to do it this way for IE
// otherwise the form will be posted to a new window
if (document.all) {
- var html = '<iframe name="'+frame_name+'" src="program/resources/blank.gif" style="width:0;height:0;visibility:hidden;"></iframe>';
- document.body.insertAdjacentHTML('BeforeEnd', html);
+ document.body.insertAdjacentHTML('BeforeEnd', '<iframe name="'+frame_name+'"'
+ + ' src="program/resources/blank.gif" style="width:0;height:0;visibility:hidden;"></iframe>');
+ frame = $('iframe[name="'+frame_name+'"]');
}
- else { // for standards-compilant browsers
- var frame = document.createElement('iframe');
- frame.name = frame_name;
- frame.style.border = 'none';
- frame.style.width = 0;
- frame.style.height = 0;
- frame.style.visibility = 'hidden';
- document.body.appendChild(frame);
+ // for standards-compliant browsers
+ else {
+ frame = $('<iframe>').attr('name', frame_name)
+ .css({border: 'none', width: 0, height: 0, visibility: 'hidden'})
+ .appendTo(document.body);
}
// handle upload errors, parsing iframe content in onload
- $(frame_name).bind('load', {ts:ts}, onload);
+ frame.bind('load', {ts:ts}, onload);
$(form).attr({
target: frame_name,
@@ -6834,6 +7360,9 @@ function rcube_webmail()
if (this.task == 'mail' && this.gui_objects.mailboxlist)
params = this.check_recent_params();
+ params._last = Math.floor(this.env.lastrefresh.getTime() / 1000);
+ this.env.lastrefresh = new Date();
+
// plugins should bind to 'requestrefresh' event to add own params
this.http_request('refresh', params, lock);
};
@@ -6845,13 +7374,18 @@ function rcube_webmail()
if (this.gui_objects.mailboxlist)
params._folderlist = 1;
- if (this.gui_objects.messagelist)
- params._list = 1;
if (this.gui_objects.quotadisplay)
params._quota = 1;
if (this.env.search_request)
params._search = this.env.search_request;
+ if (this.gui_objects.messagelist) {
+ params._list = 1;
+
+ // message uids for flag updates check
+ params._uids = $.map(this.message_list.rows, function(row, uid) { return uid; }).join(',');
+ }
+
return params;
};
@@ -6860,6 +7394,14 @@ function rcube_webmail()
/********* helper methods *********/
/********************************************************/
+ /**
+ * Quote html entities
+ */
+ this.quote_html = function(str)
+ {
+ return String(str).replace(/</g, '&lt;').replace(/>/g, '&gt;').replace(/"/g, '&quot;');
+ };
+
// get window.opener.rcmail if available
this.opener = function()
{
@@ -6931,6 +7473,57 @@ function rcube_webmail()
}
};
+ // get selected text from an input field
+ // http://stackoverflow.com/questions/7186586/how-to-get-the-selected-text-in-textarea-using-jquery-in-internet-explorer-7
+ this.get_input_selection = function(obj)
+ {
+ var start = 0, end = 0,
+ normalizedValue, range,
+ textInputRange, len, endRange;
+
+ if (typeof obj.selectionStart == "number" && typeof obj.selectionEnd == "number") {
+ normalizedValue = obj.value;
+ start = obj.selectionStart;
+ end = obj.selectionEnd;
+ }
+ else {
+ range = document.selection.createRange();
+
+ if (range && range.parentElement() == obj) {
+ len = obj.value.length;
+ normalizedValue = obj.value; //.replace(/\r\n/g, "\n");
+
+ // create a working TextRange that lives only in the input
+ textInputRange = obj.createTextRange();
+ textInputRange.moveToBookmark(range.getBookmark());
+
+ // Check if the start and end of the selection are at the very end
+ // of the input, since moveStart/moveEnd doesn't return what we want
+ // in those cases
+ endRange = obj.createTextRange();
+ endRange.collapse(false);
+
+ if (textInputRange.compareEndPoints("StartToEnd", endRange) > -1) {
+ start = end = len;
+ }
+ else {
+ start = -textInputRange.moveStart("character", -len);
+ start += normalizedValue.slice(0, start).split("\n").length - 1;
+
+ if (textInputRange.compareEndPoints("EndToEnd", endRange) > -1) {
+ end = len;
+ }
+ else {
+ end = -textInputRange.moveEnd("character", -len);
+ end += normalizedValue.slice(0, end).split("\n").length - 1;
+ }
+ }
+ }
+ }
+
+ return { start:start, end:end, text:normalizedValue.substr(start, end-start) };
+ };
+
// disable/enable all fields of a form
this.lock_form = function(form, lock)
{
@@ -7080,7 +7673,37 @@ function rcube_webmail()
this.set_cookie = function(name, value, expires)
{
setCookie(name, value, expires, this.env.cookie_path, this.env.cookie_domain, this.env.cookie_secure);
- }
+ };
+
+ this.get_local_storage_prefix = function()
+ {
+ if (!this.local_storage_prefix)
+ this.local_storage_prefix = 'roundcube.' + (this.env.user_id || 'anonymous') + '.';
+
+ return this.local_storage_prefix;
+ };
+
+ // wrapper for localStorage.getItem(key)
+ this.local_storage_get_item = function(key, deflt, encrypted)
+ {
+
+ // TODO: add encryption
+ var item = localStorage.getItem(this.get_local_storage_prefix() + key);
+ return item !== null ? JSON.parse(item) : (deflt || null);
+ };
+
+ // wrapper for localStorage.setItem(key, data)
+ this.local_storage_set_item = function(key, data, encrypted)
+ {
+ // TODO: add encryption
+ return localStorage.setItem(this.get_local_storage_prefix() + key, JSON.stringify(data));
+ };
+
+ // wrapper for localStorage.removeItem(key)
+ this.local_storage_remove_item = function(key)
+ {
+ return localStorage.removeItem(this.get_local_storage_prefix() + key);
+ };
} // end object rcube_webmail
diff --git a/program/js/common.js b/program/js/common.js
index afaf91639..9c0bb9db3 100644
--- a/program/js/common.js
+++ b/program/js/common.js
@@ -37,47 +37,44 @@ function roundcube_browser()
this.vendver = n.vendorSub ? parseFloat(n.vendorSub) : 0;
this.product = n.product ? n.product : '';
this.platform = String(n.platform).toLowerCase();
- this.lang = (n.language) ? n.language.substring(0,2) :
- (n.browserLanguage) ? n.browserLanguage.substring(0,2) :
- (n.systemLanguage) ? n.systemLanguage.substring(0,2) : 'en';
+ this.lang = n.language ? n.language.substring(0,2) :
+ n.browserLanguage ? n.browserLanguage.substring(0,2) :
+ n.systemLanguage ? n.systemLanguage.substring(0,2) : 'en';
- this.win = (this.platform.indexOf('win') >= 0);
- this.mac = (this.platform.indexOf('mac') >= 0);
- this.linux = (this.platform.indexOf('linux') >= 0);
- this.unix = (this.platform.indexOf('unix') >= 0);
+ this.win = this.platform.indexOf('win') >= 0;
+ this.mac = this.platform.indexOf('mac') >= 0;
+ this.linux = this.platform.indexOf('linux') >= 0;
+ this.unix = this.platform.indexOf('unix') >= 0;
this.dom = document.getElementById ? true : false;
- this.dom2 = (document.addEventListener && document.removeEventListener);
-
- this.ie = (document.all && !window.opera);
- this.ie4 = (this.ie && !this.dom);
- this.ie5 = (this.dom && this.appver.indexOf('MSIE 5')>0);
- this.ie8 = (this.dom && this.appver.indexOf('MSIE 8')>0);
- this.ie9 = (this.dom && this.appver.indexOf('MSIE 9')>0);
- this.ie7 = (this.dom && this.appver.indexOf('MSIE 7')>0);
- this.ie6 = (this.dom && !this.ie8 && !this.ie7 && this.appver.indexOf('MSIE 6')>0);
-
- this.ns = ((this.ver < 5 && this.name == 'Netscape') || (this.ver >= 5 && this.vendor.indexOf('Netscape') >= 0));
- this.chrome = (this.agent_lc.indexOf('chrome') > 0);
- this.safari = (!this.chrome && (this.agent_lc.indexOf('safari') > 0 || this.agent_lc.indexOf('applewebkit') > 0));
- this.konq = (this.agent_lc.indexOf('konqueror') > 0);
- this.mz = (this.dom && !this.ie && !this.ns && !this.chrome && !this.safari && !this.konq && this.agent.indexOf('Mozilla') >= 0);
- this.iphone = (this.safari && (this.agent_lc.indexOf('iphone') > 0 || this.agent_lc.indexOf('ipod') > 0));
- this.ipad = (this.safari && this.agent_lc.indexOf('ipad') > 0);
- this.opera = window.opera ? true : false;
-
- if (this.opera && window.RegExp)
- this.vendver = (/opera(\s|\/)([0-9\.]+)/.test(this.agent_lc)) ? parseFloat(RegExp.$2) : -1;
- else if (this.chrome && window.RegExp)
- this.vendver = (/chrome\/([0-9\.]+)/.test(this.agent_lc)) ? parseFloat(RegExp.$1) : 0;
- else if (!this.vendver && this.safari)
- this.vendver = (/(safari|applewebkit)\/([0-9]+)/.test(this.agent_lc)) ? parseInt(RegExp.$2) : 0;
- else if ((!this.vendver && this.mz) || this.agent.indexOf('Camino')>0)
- this.vendver = (/rv:([0-9\.]+)/.test(this.agent)) ? parseFloat(RegExp.$1) : 0;
- else if (this.ie && window.RegExp)
- this.vendver = (/msie\s+([0-9\.]+)/.test(this.agent_lc)) ? parseFloat(RegExp.$1) : 0;
- else if (this.konq && window.RegExp)
- this.vendver = (/khtml\/([0-9\.]+)/.test(this.agent_lc)) ? parseFloat(RegExp.$1) : 0;
+ this.dom2 = document.addEventListener && document.removeEventListener;
+
+ this.ie = (document.all && !window.opera) || (this.win && this.agent_lc.indexOf('trident/') > 0);
+
+ if (this.ie) {
+ this.ie6 = this.appver.indexOf('MSIE 6') > 0;
+ this.ie7 = this.appver.indexOf('MSIE 7') > 0;
+ this.ie8 = this.appver.indexOf('MSIE 8') > 0;
+ this.ie9 = this.appver.indexOf('MSIE 9') > 0;
+ }
+ else {
+ this.chrome = this.agent_lc.indexOf('chrome') > 0;
+ this.safari = !this.chrome && (this.agent_lc.indexOf('safari') > 0 || this.agent_lc.indexOf('applewebkit') > 0);
+ this.konq = this.agent_lc.indexOf('konqueror') > 0;
+ this.mz = this.dom && !this.chrome && !this.safari && !this.konq && this.agent.indexOf('Mozilla') >= 0;
+ this.iphone = this.safari && (this.agent_lc.indexOf('iphone') > 0 || this.agent_lc.indexOf('ipod') > 0);
+ this.ipad = this.safari && this.agent_lc.indexOf('ipad') > 0;
+ this.opera = window.opera ? true : false;
+ }
+
+ if (!this.vendver) {
+ // common version strings
+ this.vendver = /(khtml|chrome|safari|applewebkit|opera|msie)(\s|\/)([0-9\.]+)/.test(this.agent_lc) ? parseFloat(RegExp.$3) : 0;
+
+ // any other (Mozilla, Camino, IE>=11)
+ if (!this.vendver)
+ this.vendver = /rv:([0-9\.]+)/.test(this.agent) ? parseFloat(RegExp.$1) : 0;
+ }
// get real language out of safari's user agent
if (this.safari && (/;\s+([a-z]{2})-[a-z]{2}\)/.test(this.agent_lc)))
@@ -86,11 +83,6 @@ function roundcube_browser()
this.tablet = /ipad|android|xoom|sch-i800|playbook|tablet|kindle/i.test(this.agent_lc);
this.mobile = /iphone|ipod|blackberry|iemobile|opera mini|opera mobi|mobile/i.test(this.agent_lc);
this.touch = this.mobile || this.tablet;
- this.dhtml = ((this.ie4 && this.win) || this.ie5 || this.ie6 || this.ns4 || this.mz);
- this.vml = (this.win && this.ie && this.dom && !this.opera);
- this.pngalpha = (this.mz || (this.opera && this.vendver >= 6) || (this.ie && this.mac && this.vendver >= 5) ||
- (this.ie && this.win && this.vendver >= 5.5) || this.safari);
- this.opacity = (this.mz || (this.ie && this.vendver >= 5.5 && !this.opera) || (this.safari && this.vendver >= 100));
this.cookies = n.cookieEnabled;
// test for XMLHTTP support
@@ -293,7 +285,6 @@ rcube_event_engine.prototype = {
*
* @param {String} Event name
* @param {Function} Handler function
- * @return Listener ID (used to remove this handler later on)
*/
addEventListener: function(evt, func, obj)
{
@@ -303,6 +294,8 @@ addEventListener: function(evt, func, obj)
this._events[evt] = [];
this._events[evt].push({func:func, obj:obj ? obj : window});
+
+ return this; // chainable
},
/**
@@ -592,6 +585,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..df3d41240 100644
--- a/program/js/editor.js
+++ b/program/js/editor.js
@@ -61,6 +61,9 @@ function rcmail_editor_init(config)
if (!active)
rcmail.spellcheck_state();
});
+ ed.onKeyPress.add(function(ed, e) {
+ rcmail.compose_type_activity++;
+ });
}
}
@@ -161,8 +164,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 32e34e080..319807eae 100644
--- a/program/js/list.js
+++ b/program/js/list.js
@@ -20,7 +20,7 @@
/**
* Roundcube List Widget class
- * @contructor
+ * @constructor
*/
function rcube_list_widget(list, p)
{
@@ -31,10 +31,7 @@ function rcube_list_widget(list, p)
this.list = list ? list : null;
this.tagname = this.list ? this.list.nodeName.toLowerCase() : 'table';
- this.thead;
- this.tbody;
- this.fixed_header;
- this.frame = null;
+ this.id_regexp = /^rcmrow([a-z0-9\-_=\+\/]+)/i;
this.rows = {};
this.selection = [];
this.rowcount = 0;
@@ -50,13 +47,11 @@ function rcube_list_widget(list, p)
this.keyboard = false;
this.toggleselect = false;
- this.dont_select = false;
this.drag_active = false;
this.col_drag_active = false;
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
@@ -92,8 +87,7 @@ init: function()
var r, len, rows = this.tbody.childNodes;
for (r=0, len=rows.length; r<len; r++) {
- this.init_row(rows[r]);
- this.rowcount++;
+ this.rowcount += this.init_row(rows[r]) ? 1 : 0;
}
this.init_header();
@@ -103,6 +97,8 @@ init: function()
if (this.keyboard)
rcube_event.add_listener({event:'keydown', object:this, method:'key_press'});
}
+
+ return this;
},
@@ -112,7 +108,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;
@@ -149,6 +145,8 @@ init_row: function(row)
this.row_init(this.rows[uid]); // legacy support
this.triggerEvent('initrow', this.rows[uid]);
+
+ return true;
}
},
@@ -249,6 +247,9 @@ clear: function(sel)
// reset scroll position (in Opera)
if (this.frame)
this.frame.scrollTop = 0;
+
+ // fix list header after removing any rows
+ this.resize();
},
@@ -257,7 +258,7 @@ clear: function(sel)
*/
remove_row: function(uid, sel_next)
{
- var node = this.rows[uid] ? this.rows[uid].obj : null;
+ var self = this, node = this.rows[uid] ? this.rows[uid].obj : null;
if (!node)
return;
@@ -269,6 +270,10 @@ remove_row: function(uid, sel_next)
delete this.rows[uid];
this.rowcount--;
+
+ // fix list header after removing any rows
+ clearTimeout(this.resize_timeout)
+ this.resize_timeout = setTimeout(function() { self.resize(); }, 50);
},
@@ -277,7 +282,7 @@ remove_row: function(uid, sel_next)
*/
insert_row: function(row, before)
{
- var tbody = this.tbody;
+ var self = this, tbody = this.tbody;
// create a real dom node first
if (row.nodeName === undefined) {
@@ -305,6 +310,10 @@ insert_row: function(row, before)
this.init_row(row);
this.rowcount++;
+
+ // fix list header after adding any rows
+ clearTimeout(this.resize_timeout)
+ this.resize_timeout = setTimeout(function() { self.resize(); }, 50);
},
/**
@@ -420,10 +429,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 (this.dont_select || (evtarget && (tagname == 'input' || tagname == 'img')))
+ if (!this.is_event_target(e))
return true;
// accept right-clicks
@@ -435,12 +441,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) {
@@ -461,25 +468,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')))
- return true;
-
// don't do anything (another action processed before)
- if (this.dont_select) {
- this.dont_select = false;
- return false;
- }
+ 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;
// unselects currently selected row
- if (!this.drag_active && this.in_selection_before == id && !dblclicked)
- this.select_row(id, mod_key, false);
+ 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;
@@ -503,6 +501,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
*/
@@ -523,8 +533,6 @@ expand_row: function(e, id)
evtarget = rcube_event.get_target(e),
mod_key = rcube_event.get_modifier(e);
- // Don't select this message
- this.dont_select = true;
// Don't treat double click on the expando as double click on the message.
row.clicked = 0;
@@ -546,17 +554,18 @@ expand_row: function(e, id)
collapse: function(row)
{
+ var r, depth = row.depth,
+ new_row = row ? row.obj.nextSibling : null;
+
row.expanded = false;
this.triggerEvent('expandcollapse', { uid:row.uid, expanded:row.expanded, obj:row.obj });
- var depth = row.depth;
- var new_row = row ? row.obj.nextSibling : null;
- var r;
while (new_row) {
if (new_row.nodeType == 1) {
- var r = this.rows[new_row.uid];
+ r = this.rows[new_row.uid];
if (r && r.depth <= depth)
break;
+
$(new_row).css('display', 'none');
if (r.expanded) {
r.expanded = false;
@@ -568,6 +577,7 @@ collapse: function(row)
this.resize();
this.triggerEvent('listupdate');
+
return false;
},
@@ -749,7 +759,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;
}
@@ -762,7 +772,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;
}
@@ -792,6 +802,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;
@@ -810,8 +821,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:
@@ -822,6 +835,7 @@ select_row: function(id, mod_key, with_mouse)
this.highlight_row(id, false);
break;
}
+
this.multi_selecting = true;
}
@@ -879,14 +893,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);
}
},
@@ -898,14 +906,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);
}
},
@@ -919,7 +921,7 @@ select_children: function(uid)
for (i=0; i<len; i++)
if (!this.in_selection(children[i]))
- this.select_row(children[i], CONTROL_KEY);
+ this.select_row(children[i], CONTROL_KEY, true);
},
@@ -935,7 +937,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);
@@ -957,6 +960,7 @@ shift_select: function(id, control)
}
},
+
/**
* Helper method to emulate the rowIndex property of non-tr elements
*/
@@ -971,7 +975,7 @@ _rowIndex: function(obj)
in_selection: function(id)
{
for (var n in this.selection)
- if (this.selection[n]==id)
+ if (this.selection[n] == id)
return true;
return false;
@@ -1067,9 +1071,26 @@ clear_selection: function(id)
/**
* Getter for the selection array
*/
-get_selection: function()
+get_selection: function(deep)
{
- return this.selection;
+ var res = $.merge([], this.selection);
+
+ // return children of selected threads even if only root is selected
+ if (deep !== false && res.length) {
+ for (var uid, uids, i=0, len=res.length; i<len; i++) {
+ uid = res[i];
+ if (this.rows[uid] && this.rows[uid].has_children && !this.rows[uid].expanded) {
+ uids = this.row_children(uid);
+ for (var j=0, uids_len=uids.length; j<uids_len; j++) {
+ uid = uids[j];
+ if (!this.in_selection(uid))
+ res.push(uid);
+ }
+ }
+ }
+ }
+
+ return res;
},
@@ -1143,6 +1164,7 @@ highlight_children: function(id, status)
key_press: function(e)
{
var target = e.target || {};
+
if (this.focused != true || target.nodeName == 'INPUT' || target.nodeName == 'TEXTAREA' || target.nodeName == 'SELECT')
return true;
@@ -1157,32 +1179,41 @@ 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
// Stop propagation
rcube_event.cancel(e);
- var ret = this.use_plusminus_key(keyCode, mod_key);
+ var ret = this.use_arrow_key(keyCode, mod_key);
this.key_pressed = keyCode;
this.modkey = mod_key;
this.triggerEvent('keypress');
this.modkey = 0;
return ret;
+
case 36: // Home
this.select_first(mod_key);
return rcube_event.cancel(e);
+
case 35: // End
this.select_last(mod_key);
return rcube_event.cancel(e);
+
case 27:
if (this.drag_active)
return this.drag_mouse_up(e);
+
if (this.col_drag_active) {
this.selected_column = null;
return this.column_drag_mouse_up(e);
}
+
return rcube_event.cancel(e);
+
default:
this.key_pressed = keyCode;
this.modkey = mod_key;
@@ -1202,46 +1233,49 @@ key_press: function(e)
*/
use_arrow_key: function(keyCode, mod_key)
{
- var new_row;
+ var new_row,
+ selected_row = this.rows[this.last_selected];
+
// Safari uses the nonstandard keycodes 63232/63233 for up/down, if we're
// using the keypress event (but not the keydown or keyup event).
if (keyCode == 40 || keyCode == 63233) // down arrow key pressed
new_row = this.get_next_row();
else if (keyCode == 38 || keyCode == 63232) // up arrow key pressed
new_row = this.get_prev_row();
+ else {
+ if (!selected_row || !selected_row.has_children)
+ return;
- if (new_row) {
- this.select_row(new_row.uid, mod_key, false);
- this.scrollto(new_row.uid);
- }
+ // expand
+ if (keyCode == 39) {
+ if (selected_row.expanded)
+ return;
- return false;
-},
+ if (mod_key == CONTROL_KEY || this.multiexpand)
+ this.expand_all(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);
+ }
-/**
- * Special handling method for +/- keys
- */
-use_plusminus_key: function(keyCode, mod_key)
-{
- var selected_row = this.rows[this.last_selected];
- if (!selected_row)
- return;
+ this.update_expando(selected_row.uid, selected_row.expanded);
- if (keyCode == 32)
- keyCode = selected_row.expanded ? 109 : 61;
- if (keyCode == 61 || keyCode == 107)
- if (mod_key == CONTROL_KEY || this.multiexpand)
- this.expand_all(selected_row);
- else
- this.expand(selected_row);
- else
- if (mod_key == CONTROL_KEY || this.multiexpand)
- this.collapse_all(selected_row);
- else
- this.collapse(selected_row);
+ return false;
+ }
- this.update_expando(selected_row.uid, selected_row.expanded);
+ if (new_row) {
+ this.select_row(new_row.uid, mod_key, false);
+ this.scrollto(new_row.uid);
+ }
return false;
},
@@ -1254,7 +1288,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) {
@@ -1263,8 +1298,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);
}
@@ -1286,60 +1327,71 @@ drag_mouse_move: function(e)
if (this.drag_start) {
// check mouse movement, of less than 3 pixels, don't start dragging
- var m = rcube_event.get_mouse_pos(e);
+ var m = rcube_event.get_mouse_pos(e),
+ limit = 10, selection = [], self = this;
if (!this.drag_mouse_start || (Math.abs(m.x - this.drag_mouse_start.x) < 3 && Math.abs(m.y - this.drag_mouse_start.y) < 3))
return false;
+ // remember dragging start position
+ this.drag_start_pos = {left: m.x, top: m.y};
+
+ // initialize drag layer
if (!this.draglayer)
this.draglayer = $('<div>').attr('id', 'rcmdraglayer')
- .css({ position:'absolute', display:'none', 'z-index':2000 })
+ .css({position: 'absolute', display: 'none', 'z-index': 2000})
.appendTo(document.body);
+ else
+ this.draglayer.html('');
- // also select childs of (collapsed) threads for dragging
- var n, uid, selection = $.merge([], this.selection);
- for (n in selection) {
- uid = selection[n];
- if (!this.rows[uid].expanded)
- this.select_children(uid);
- }
+ // get selected rows (in display order), don't use this.selection here
+ $(this.row_tagname() + '.selected', this.tbody).each(function() {
+ if (!String(this.id).match(self.id_regexp))
+ return;
- // reset content
- this.draglayer.html('');
+ var uid = RegExp.$1, row = self.rows[uid];
- // get subjects of selected messages
- var i, n, obj, me;
- for (n=0; n<this.selection.length; n++) {
- // only show 12 lines
- if (n>12) {
- this.draglayer.append('...');
- break;
- }
+ if ($.inArray(uid, selection) > -1)
+ return;
- me = this;
- if (obj = this.rows[this.selection[n]].obj) {
- $('> '+this.col_tagname(), obj).each(function(i,elem){
- if (n == 0)
- me.drag_start_pos = $(elem).offset();
+ selection.push(uid);
- if (me.subject_col < 0 || (me.subject_col >= 0 && me.subject_col == i)) {
- var subject = $(elem).text();
+ // also handle children of (collapsed) trees for dragging (they might be not selected)
+ if (row.has_children && !row.expanded)
+ $.each(self.row_children(uid), function() {
+ if ($.inArray(this, selection) > -1)
+ return;
+ selection.push(this);
+ });
- if (subject) {
- // remove leading spaces
- subject = $.trim(subject);
- // truncate line to 50 characters
- subject = (subject.length > 50 ? subject.substring(0, 50) + '...' : subject);
+ // break the loop asap
+ if (selection.length > limit + 1)
+ return false;
+ });
- var entry = $('<div>').text(subject);
- me.draglayer.append(entry);
- }
+ // append subject (of every row up to the limit) to the drag layer
+ $.each(selection, function(i, uid) {
+ if (i > limit) {
+ self.draglayer.append('...');
+ return false;
+ }
+
+ $('> ' + self.col_tagname(), self.rows[uid].obj).each(function(n, cell) {
+ if (self.subject_col < 0 || (self.subject_col >= 0 && self.subject_col == n)) {
+ var subject = $(cell).text();
+
+ if (subject) {
+ // remove leading spaces
+ subject = $.trim(subject);
+ // truncate line to 50 characters
+ subject = (subject.length > 50 ? subject.substring(0, 50) + '...' : subject);
- return false; // break
+ self.draglayer.append($('<div>').text(subject));
+ return false;
}
- });
- }
- }
+ }
+ });
+ });
this.draglayer.show();
this.drag_active = true;
@@ -1414,6 +1466,9 @@ column_drag_mouse_move: function(e)
var lpos = $(this.list).offset(),
cells = this.thead.rows[0].cells;
+ // fix layer position when list is scrolled
+ lpos.top += this.list.scrollTop + this.list.parentNode.scrollTop;
+
// create dragging layer
this.col_draglayer = $('<div>').attr('id', 'rcmcoldraglayer')
.css(lpos).css({ position:'absolute', 'z-index':2001,
@@ -1524,7 +1579,7 @@ row_children: function(uid)
while (row) {
if (row.nodeType == 1) {
- if ((r = this.rows[row.uid])) {
+ if (r = this.rows[row.uid]) {
if (!r.depth || r.depth <= depth)
break;
res.push(r.uid);
@@ -1559,7 +1614,7 @@ add_dragfix: function()
*/
del_dragfix: function()
{
- $('div.iframe-dragdrop-fix').each(function() { this.parentNode.removeChild(this); });
+ $('div.iframe-dragdrop-fix').remove();
},
diff --git a/program/js/tiny_mce/langs/en.js b/program/js/tiny_mce/langs/en.js
index 16d7a93e0..19324f74c 100644
--- a/program/js/tiny_mce/langs/en.js
+++ b/program/js/tiny_mce/langs/en.js
@@ -1 +1 @@
-tinyMCE.addI18n({en:{common:{"more_colors":"More Colors...","invalid_data":"Error: Invalid values entered, these are marked in red.","popup_blocked":"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.","clipboard_no_support":"Currently not supported by your browser, use keyboard shortcuts instead.","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","not_set":"-- Not Set --","class_name":"Class",browse:"Browse",close:"Close",cancel:"Cancel",update:"Update",insert:"Insert",apply:"Apply","edit_confirm":"Do you want to use the WYSIWYG mode for this textarea?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Full",right:"Right",center:"Center",left:"Left",align:"Alignment"},insertdatetime:{"day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","inserttime_desc":"Insert Time","insertdate_desc":"Insert Date","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Print"},preview:{"preview_desc":"Preview"},directionality:{"rtl_desc":"Direction Right to Left","ltr_desc":"Direction Left to Right"},layer:{content:"New layer...","absolute_desc":"Toggle Absolute Positioning","backward_desc":"Move Backward","forward_desc":"Move Forward","insertlayer_desc":"Insert New Layer"},save:{"save_desc":"Save","cancel_desc":"Cancel All Changes"},nonbreaking:{"nonbreaking_desc":"Insert Non-Breaking Space Character"},iespell:{download:"ieSpell not detected. Do you want to install it now?","iespell_desc":"Check Spelling"},advhr:{"delta_height":"","delta_width":"","advhr_desc":"Insert Horizontal Line"},emotions:{"delta_height":"","delta_width":"","emotions_desc":"Emotions"},searchreplace:{"replace_desc":"Find/Replace","delta_width":"","delta_height":"","search_desc":"Find"},advimage:{"delta_width":"","image_desc":"Insert/Edit Image","delta_height":""},advlink:{"delta_height":"","delta_width":"","link_desc":"Insert/Edit Link"},xhtmlxtras:{"attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":"","attribs_desc":"Insert/Edit Attributes","ins_desc":"Insertion","del_desc":"Deletion","acronym_desc":"Acronym","abbr_desc":"Abbreviation","cite_desc":"Citation"},style:{"delta_height":"","delta_width":"",desc:"Edit CSS Style"},paste:{"plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode_sticky":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"Select All","paste_word_desc":"Paste from Word","paste_text_desc":"Paste as Plain Text"},"paste_dlg":{"word_title":"Use Ctrl+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep Linebreaks","text_title":"Use Ctrl+V on your keyboard to paste the text into the window."},table:{"merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":"",cell:"Cell",col:"Column",row:"Row",del:"Delete Table","copy_row_desc":"Copy Table Row","cut_row_desc":"Cut Table Row","paste_row_after_desc":"Paste Table Row After","paste_row_before_desc":"Paste Table Row Before","props_desc":"Table Properties","cell_desc":"Table Cell Properties","row_desc":"Table Row Properties","merge_cells_desc":"Merge Table Cells","split_cells_desc":"Split Merged Table Cells","delete_col_desc":"Delete Column","col_after_desc":"Insert Column After","col_before_desc":"Insert Column Before","delete_row_desc":"Delete Row","row_after_desc":"Insert Row After","row_before_desc":"Insert Row Before",desc:"Insert/Edit Table"},autosave:{"warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Restore auto-saved content.","unload_msg":"The changes you made will be lost if you navigate away from this page."},fullscreen:{desc:"Toggle Full Screen Mode"},media:{"delta_height":"","delta_width":"",edit:"Edit Embedded Media",desc:"Insert/Edit Embedded Media"},fullpage:{desc:"Document Properties","delta_width":"","delta_height":""},template:{desc:"Insert Predefined Template Content"},visualchars:{desc:"Show/Hide Visual Control Characters"},spellchecker:{desc:"Toggle Spell Checker",menu:"Spell Checker Settings","ignore_word":"Ignore Word","ignore_words":"Ignore All",langs:"Languages",wait:"Please wait...",sug:"Suggestions","no_sug":"No Suggestions","no_mpell":"No misspellings found.","learn_word":"Learn word"},pagebreak:{desc:"Insert Page Break for Printing"},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words:"}}}); \ No newline at end of file
+tinyMCE.addI18n({en:{common:{"more_colors":"More Colors...","invalid_data":"Error: Invalid values entered, these are marked in red.","popup_blocked":"Sorry, but we have noticed that your popup-blocker has disabled a window that provides application functionality. You will need to disable popup blocking on this site in order to fully utilize this tool.","clipboard_no_support":"Currently not supported by your browser, use keyboard shortcuts instead.","clipboard_msg":"Copy/Cut/Paste is not available in Mozilla and Firefox.\nDo you want more information about this issue?","not_set":"-- Not Set --","class_name":"Class",browse:"Browse",close:"Close",cancel:"Cancel",update:"Update",insert:"Insert",apply:"Apply","edit_confirm":"Do you want to use the WYSIWYG mode for this textarea?","invalid_data_number":"{#field} must be a number","invalid_data_min":"{#field} must be a number greater than {#min}","invalid_data_size":"{#field} must be a number or percentage",value:"(value)"},contextmenu:{full:"Full",right:"Right",center:"Center",left:"Left",align:"Alignment"},insertdatetime:{"day_short":"Sun,Mon,Tue,Wed,Thu,Fri,Sat,Sun","day_long":"Sunday,Monday,Tuesday,Wednesday,Thursday,Friday,Saturday,Sunday","months_short":"Jan,Feb,Mar,Apr,May,Jun,Jul,Aug,Sep,Oct,Nov,Dec","months_long":"January,February,March,April,May,June,July,August,September,October,November,December","inserttime_desc":"Insert Time","insertdate_desc":"Insert Date","time_fmt":"%H:%M:%S","date_fmt":"%Y-%m-%d"},print:{"print_desc":"Print"},preview:{"preview_desc":"Preview"},directionality:{"rtl_desc":"Direction Right to Left","ltr_desc":"Direction Left to Right"},layer:{content:"New layer...","absolute_desc":"Toggle Absolute Positioning","backward_desc":"Move Backward","forward_desc":"Move Forward","insertlayer_desc":"Insert New Layer"},save:{"save_desc":"Save","cancel_desc":"Cancel All Changes"},nonbreaking:{"nonbreaking_desc":"Insert Non-Breaking Space Character"},iespell:{download:"ieSpell not detected. Do you want to install it now?","iespell_desc":"Check Spelling"},advhr:{"delta_height":"","delta_width":"","advhr_desc":"Insert Horizontal Line"},emotions:{"delta_height":"","delta_width":"","emotions_desc":"Emotions"},searchreplace:{"replace_desc":"Find/Replace","delta_width":"","delta_height":"","search_desc":"Find"},advimage:{"delta_width":"","image_desc":"Insert/Edit Image","delta_height":""},advlink:{"delta_height":"","delta_width":"","link_desc":"Insert/Edit Link"},xhtmlxtras:{"attribs_delta_height":"","attribs_delta_width":"","ins_delta_height":"","ins_delta_width":"","del_delta_height":"","del_delta_width":"","acronym_delta_height":"","acronym_delta_width":"","abbr_delta_height":"","abbr_delta_width":"","cite_delta_height":"","cite_delta_width":"","attribs_desc":"Insert/Edit Attributes","ins_desc":"Insertion","del_desc":"Deletion","acronym_desc":"Acronym","abbr_desc":"Abbreviation","cite_desc":"Citation"},style:{"delta_height":"","delta_width":"",desc:"Edit CSS Style"},paste:{"plaintext_mode_stick":"Paste is now in plain text mode. Click again to toggle back to regular paste mode.","plaintext_mode":"Paste is now in plain text mode. Click again to toggle back to regular paste mode. After you paste something you will be returned to regular paste mode.","selectall_desc":"Select All","paste_word_desc":"Paste from Word","paste_text_desc":"Paste as Plain Text"},"paste_dlg":{"word_title":"Use Ctrl+V on your keyboard to paste the text into the window.","text_linebreaks":"Keep Linebreaks","text_title":"Use Ctrl+V on your keyboard to paste the text into the window."},table:{"merge_cells_delta_height":"","merge_cells_delta_width":"","table_delta_height":"","table_delta_width":"","cellprops_delta_height":"","cellprops_delta_width":"","rowprops_delta_height":"","rowprops_delta_width":"",cell:"Cell",col:"Column",row:"Row",del:"Delete Table","copy_row_desc":"Copy Table Row","cut_row_desc":"Cut Table Row","paste_row_after_desc":"Paste Table Row After","paste_row_before_desc":"Paste Table Row Before","props_desc":"Table Properties","cell_desc":"Table Cell Properties","row_desc":"Table Row Properties","merge_cells_desc":"Merge Table Cells","split_cells_desc":"Split Merged Table Cells","delete_col_desc":"Delete Column","col_after_desc":"Insert Column After","col_before_desc":"Insert Column Before","delete_row_desc":"Delete Row","row_after_desc":"Insert Row After","row_before_desc":"Insert Row Before",desc:"Insert/Edit Table"},autosave:{"warning_message":"If you restore the saved content, you will lose all the content that is currently in the editor.\n\nAre you sure you want to restore the saved content?","restore_content":"Restore auto-saved content.","unload_msg":"The changes you made will be lost if you navigate away from this page."},fullscreen:{desc:"Toggle Full Screen Mode"},media:{"delta_height":"","delta_width":"",edit:"Edit Embedded Media",desc:"Insert/Edit Embedded Media"},fullpage:{desc:"Document Properties","delta_width":"","delta_height":""},template:{desc:"Insert Predefined Template Content"},visualchars:{desc:"Show/Hide Visual Control Characters"},spellchecker:{desc:"Toggle Spell Checker",menu:"Spell Checker Settings","ignore_word":"Ignore Word","ignore_words":"Ignore All",langs:"Languages",wait:"Please wait...",sug:"Suggestions","no_sug":"No Suggestions","no_mpell":"No misspellings found.","learn_word":"Learn word"},pagebreak:{desc:"Insert Page Break for Printing"},advlist:{types:"Types",def:"Default","lower_alpha":"Lower Alpha","lower_greek":"Lower Greek","lower_roman":"Lower Roman","upper_alpha":"Upper Alpha","upper_roman":"Upper Roman",circle:"Circle",disc:"Disc",square:"Square"},colors:{"333300":"Dark olive","993300":"Burnt orange","000000":"Black","003300":"Dark green","003366":"Dark azure","000080":"Navy Blue","333399":"Indigo","333333":"Very dark gray","800000":"Maroon",FF6600:"Orange","808000":"Olive","008000":"Green","008080":"Teal","0000FF":"Blue","666699":"Grayish blue","808080":"Gray",FF0000:"Red",FF9900:"Amber","99CC00":"Yellow green","339966":"Sea green","33CCCC":"Turquoise","3366FF":"Royal blue","800080":"Purple","999999":"Medium gray",FF00FF:"Magenta",FFCC00:"Gold",FFFF00:"Yellow","00FF00":"Lime","00FFFF":"Aqua","00CCFF":"Sky blue","993366":"Brown",C0C0C0:"Silver",FF99CC:"Pink",FFCC99:"Peach",FFFF99:"Light yellow",CCFFCC:"Pale green",CCFFFF:"Pale cyan","99CCFF":"Light sky blue",CC99FF:"Plum",FFFFFF:"White"},aria:{"rich_text_area":"Rich Text Area"},wordcount:{words:"Words:"},visualblocks:{desc:'Show/hide block elements'}}}); \ No newline at end of file
diff --git a/program/js/tiny_mce/license.txt b/program/js/tiny_mce/license.txt
index 60d6d4c8f..5a2534299 100644
--- a/program/js/tiny_mce/license.txt
+++ b/program/js/tiny_mce/license.txt
@@ -20,7 +20,7 @@ free software--to make sure the software is free for all its users.
This license, the Lesser General Public License, applies to some
specially designated software packages--typically libraries--of the
Free Software Foundation and other authors who decide to use it. You
-can use it too, but we suggest you first think carefully about whether
+can use it too, but we suggest you first think carefuly about whether
this license or the ordinary General Public License is the better
strategy to use in any particular case, based on the explanations below.
diff --git a/program/js/tiny_mce/plugins/advlink/js/advlink.js b/program/js/tiny_mce/plugins/advlink/js/advlink.js
index 9ca955c92..f013aac1e 100644
--- a/program/js/tiny_mce/plugins/advlink/js/advlink.js
+++ b/program/js/tiny_mce/plugins/advlink/js/advlink.js
@@ -64,13 +64,14 @@ function init() {
if (elm != null && elm.nodeName == "A")
action = "update";
- formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true);
+ formObj.insert.value = tinyMCEPopup.getLang(action, 'Insert', true);
setPopupControlsDisabled(true);
if (action == "update") {
var href = inst.dom.getAttrib(elm, 'href');
var onclick = inst.dom.getAttrib(elm, 'onclick');
+ var linkTarget = inst.dom.getAttrib(elm, 'target') ? inst.dom.getAttrib(elm, 'target') : "_self";
// Setup form data
setFormValue('href', href);
@@ -98,7 +99,7 @@ function init() {
setFormValue('onkeypress', inst.dom.getAttrib(elm, 'onkeypress'));
setFormValue('onkeydown', inst.dom.getAttrib(elm, 'onkeydown'));
setFormValue('onkeyup', inst.dom.getAttrib(elm, 'onkeyup'));
- setFormValue('target', inst.dom.getAttrib(elm, 'target'));
+ setFormValue('target', linkTarget);
setFormValue('classes', inst.dom.getAttrib(elm, 'class'));
// Parse onclick data
@@ -119,7 +120,7 @@ function init() {
addClassesToList('classlist', 'advlink_styles');
selectByValue(formObj, 'classlist', inst.dom.getAttrib(elm, 'class'), true);
- selectByValue(formObj, 'targetlist', inst.dom.getAttrib(elm, 'target'), true);
+ selectByValue(formObj, 'targetlist', linkTarget, true);
} else
addClassesToList('classlist', 'advlink_styles');
}
@@ -377,6 +378,9 @@ function getAnchorListHTML(id, target) {
for (i=0, len=nodes.length; i<len; i++) {
if ((name = ed.dom.getAttrib(nodes[i], "name")) != "")
html += '<option value="#' + name + '">' + name + '</option>';
+
+ if ((name = nodes[i].id) != "" && !nodes[i].href)
+ html += '<option value="#' + name + '">' + name + '</option>';
}
if (html == "")
diff --git a/program/js/tiny_mce/plugins/autolink/editor_plugin.js b/program/js/tiny_mce/plugins/autolink/editor_plugin.js
index d1c3502ac..71d86bbec 100644
--- a/program/js/tiny_mce/plugins/autolink/editor_plugin.js
+++ b/program/js/tiny_mce/plugins/autolink/editor_plugin.js
@@ -1 +1 @@
-(function(){tinymce.create("tinymce.plugins.AutolinkPlugin",{init:function(a,b){var c=this;a.onKeyDown.addToTop(function(d,f){if(f.keyCode==13){return c.handleEnter(d)}});if(tinyMCE.isIE){return}a.onKeyPress.add(function(d,f){if(f.which==41){return c.handleEclipse(d)}});a.onKeyUp.add(function(d,f){if(f.keyCode==32){return c.handleSpacebar(d)}})},handleEclipse:function(a){this.parseCurrentLine(a,-1,"(",true)},handleSpacebar:function(a){this.parseCurrentLine(a,0,"",true)},handleEnter:function(a){this.parseCurrentLine(a,-1,"",false)},parseCurrentLine:function(i,d,b,g){var a,f,c,n,k,m,h,e,j;a=i.selection.getRng(true).cloneRange();if(a.startOffset<5){e=a.endContainer.previousSibling;if(e==null){if(a.endContainer.firstChild==null||a.endContainer.firstChild.nextSibling==null){return}e=a.endContainer.firstChild.nextSibling}j=e.length;a.setStart(e,j);a.setEnd(e,j);if(a.endOffset<5){return}f=a.endOffset;n=e}else{n=a.endContainer;if(n.nodeType!=3&&n.firstChild){while(n.nodeType!=3&&n.firstChild){n=n.firstChild}if(n.nodeType==3){a.setStart(n,0);a.setEnd(n,n.nodeValue.length)}}if(a.endOffset==1){f=2}else{f=a.endOffset-1-d}}c=f;do{a.setStart(n,f-2);a.setEnd(n,f-1);f-=1}while(a.toString()!=" "&&a.toString()!=""&&a.toString().charCodeAt(0)!=160&&(f-2)>=0&&a.toString()!=b);if(a.toString()==b||a.toString().charCodeAt(0)==160){a.setStart(n,f);a.setEnd(n,c);f+=1}else{if(a.startOffset==0){a.setStart(n,0);a.setEnd(n,c)}else{a.setStart(n,f);a.setEnd(n,c)}}var m=a.toString();if(m.charAt(m.length-1)=="."){a.setEnd(n,c-1)}m=a.toString();h=m.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+-]+@)(.+)$/i);if(h){if(h[1]=="www."){h[1]="http://www."}else{if(/@$/.test(h[1])&&!/^mailto:/.test(h[1])){h[1]="mailto:"+h[1]}}k=i.selection.getBookmark();i.selection.setRng(a);tinyMCE.execCommand("createlink",false,h[1]+h[2]);i.selection.moveToBookmark(k);i.nodeChanged();if(tinyMCE.isWebKit){i.selection.collapse(false);var l=Math.min(n.length,c+1);a.setStart(n,l);a.setEnd(n,l);i.selection.setRng(a)}}},getInfo:function(){return{longname:"Autolink",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autolink",tinymce.plugins.AutolinkPlugin)})(); \ No newline at end of file
+(function(){tinymce.create("tinymce.plugins.AutolinkPlugin",{init:function(a,b){var c=this;a.onKeyDown.addToTop(function(d,f){if(f.keyCode==13){return c.handleEnter(d)}});if(tinyMCE.isIE){return}a.onKeyPress.add(function(d,f){if(f.which==41){return c.handleEclipse(d)}});a.onKeyUp.add(function(d,f){if(f.keyCode==32){return c.handleSpacebar(d)}})},handleEclipse:function(a){this.parseCurrentLine(a,-1,"(",true)},handleSpacebar:function(a){this.parseCurrentLine(a,0,"",true)},handleEnter:function(a){this.parseCurrentLine(a,-1,"",false)},parseCurrentLine:function(i,d,b,g){var a,f,c,n,k,m,h,e,j;a=i.selection.getRng(true).cloneRange();if(a.startOffset<5){e=a.endContainer.previousSibling;if(e==null){if(a.endContainer.firstChild==null||a.endContainer.firstChild.nextSibling==null){return}e=a.endContainer.firstChild.nextSibling}j=e.length;a.setStart(e,j);a.setEnd(e,j);if(a.endOffset<5){return}f=a.endOffset;n=e}else{n=a.endContainer;if(n.nodeType!=3&&n.firstChild){while(n.nodeType!=3&&n.firstChild){n=n.firstChild}if(n.nodeType==3){a.setStart(n,0);a.setEnd(n,n.nodeValue.length)}}if(a.endOffset==1){f=2}else{f=a.endOffset-1-d}}c=f;do{a.setStart(n,f>=2?f-2:0);a.setEnd(n,f>=1?f-1:0);f-=1}while(a.toString()!=" "&&a.toString()!=""&&a.toString().charCodeAt(0)!=160&&(f-2)>=0&&a.toString()!=b);if(a.toString()==b||a.toString().charCodeAt(0)==160){a.setStart(n,f);a.setEnd(n,c);f+=1}else{if(a.startOffset==0){a.setStart(n,0);a.setEnd(n,c)}else{a.setStart(n,f);a.setEnd(n,c)}}var m=a.toString();if(m.charAt(m.length-1)=="."){a.setEnd(n,c-1)}m=a.toString();h=m.match(/^(https?:\/\/|ssh:\/\/|ftp:\/\/|file:\/|www\.|(?:mailto:)?[A-Z0-9._%+-]+@)(.+)$/i);if(h){if(h[1]=="www."){h[1]="http://www."}else{if(/@$/.test(h[1])&&!/^mailto:/.test(h[1])){h[1]="mailto:"+h[1]}}k=i.selection.getBookmark();i.selection.setRng(a);tinyMCE.execCommand("createlink",false,h[1]+h[2]);i.selection.moveToBookmark(k);i.nodeChanged();if(tinyMCE.isWebKit){i.selection.collapse(false);var l=Math.min(n.length,c+1);a.setStart(n,l);a.setEnd(n,l);i.selection.setRng(a)}}},getInfo:function(){return{longname:"Autolink",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/autolink",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("autolink",tinymce.plugins.AutolinkPlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/autolink/editor_plugin_src.js b/program/js/tiny_mce/plugins/autolink/editor_plugin_src.js
index c05fbbc09..5b61f7a20 100644
--- a/program/js/tiny_mce/plugins/autolink/editor_plugin_src.js
+++ b/program/js/tiny_mce/plugins/autolink/editor_plugin_src.js
@@ -107,8 +107,8 @@
do
{
// Move the selection one character backwards.
- r.setStart(endContainer, end - 2);
- r.setEnd(endContainer, end - 1);
+ r.setStart(endContainer, end >= 2 ? end - 2 : 0);
+ r.setEnd(endContainer, end >= 1 ? end - 1 : 0);
end -= 1;
// Loop until one of the following is found: a blank space, &nbsp;, delimeter, (end-2) >= 0
diff --git a/program/js/tiny_mce/plugins/emotions/langs/en_dlg.js b/program/js/tiny_mce/plugins/emotions/langs/en_dlg.js
index f5aafc390..037c4b588 100644
--- a/program/js/tiny_mce/plugins/emotions/langs/en_dlg.js
+++ b/program/js/tiny_mce/plugins/emotions/langs/en_dlg.js
@@ -1 +1 @@
-tinyMCE.addI18n('en.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"Emotions",title:"Insert Emotion",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue Out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money Mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in Mouth",embarassed:"Embarassed",usage:"Use left and right arrows to navigate."}); \ No newline at end of file
+tinyMCE.addI18n('en.emotions_dlg',{cry:"Cry",cool:"Cool",desc:"Emotions",title:"Insert Emotion",usage:"Use left and right arrows to navigate.",yell:"Yell",wink:"Wink",undecided:"Undecided","tongue_out":"Tongue Out",surprised:"Surprised",smile:"Smile",sealed:"Sealed","money_mouth":"Money Mouth",laughing:"Laughing",kiss:"Kiss",innocent:"Innocent",frown:"Frown","foot_in_mouth":"Foot in Mouth",embarassed:"Embarassed"});
diff --git a/program/js/tiny_mce/plugins/example/editor_plugin_src.js b/program/js/tiny_mce/plugins/example/editor_plugin_src.js
index 9a0e7da15..0a259471d 100644
--- a/program/js/tiny_mce/plugins/example/editor_plugin_src.js
+++ b/program/js/tiny_mce/plugins/example/editor_plugin_src.js
@@ -49,7 +49,7 @@
},
/**
- * Creates control instances based in the incomming name. This method is normally not
+ * Creates control instances based in the incoming name. This method is normally not
* needed since the addButton method of the tinymce.Editor class is a more easy way of adding buttons
* but you sometimes need to create more complex controls like listboxes, split buttons etc then this
* method can be used to create those.
diff --git a/program/js/tiny_mce/plugins/fullscreen/editor_plugin.js b/program/js/tiny_mce/plugins/fullscreen/editor_plugin.js
index a2eb03483..1aa8cc443 100644
--- a/program/js/tiny_mce/plugins/fullscreen/editor_plugin.js
+++ b/program/js/tiny_mce/plugins/fullscreen/editor_plugin.js
@@ -1 +1 @@
-(function(){var a=tinymce.DOM;tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(d,e){var f=this,g={},c,b;f.editor=d;d.addCommand("mceFullScreen",function(){var i,j=a.doc.documentElement;if(d.getParam("fullscreen_is_enabled")){if(d.getParam("fullscreen_new_window")){closeFullscreen()}else{a.win.setTimeout(function(){tinymce.dom.Event.remove(a.win,"resize",f.resizeFunc);tinyMCE.get(d.getParam("fullscreen_editor_id")).setContent(d.getContent());tinyMCE.remove(d);a.remove("mce_fullscreen_container");j.style.overflow=d.getParam("fullscreen_html_overflow");a.setStyle(a.doc.body,"overflow",d.getParam("fullscreen_overflow"));a.win.scrollTo(d.getParam("fullscreen_scrollx"),d.getParam("fullscreen_scrolly"));tinyMCE.settings=tinyMCE.oldSettings},10)}return}if(d.getParam("fullscreen_new_window")){i=a.win.open(e+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{i.resizeTo(screen.availWidth,screen.availHeight)}catch(h){}}else{tinyMCE.oldSettings=tinyMCE.settings;g.fullscreen_overflow=a.getStyle(a.doc.body,"overflow",1)||"auto";g.fullscreen_html_overflow=a.getStyle(j,"overflow",1);c=a.getViewPort();g.fullscreen_scrollx=c.x;g.fullscreen_scrolly=c.y;if(tinymce.isOpera&&g.fullscreen_overflow=="visible"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&g.fullscreen_overflow=="scroll"){g.fullscreen_overflow="auto"}if(tinymce.isIE&&(g.fullscreen_html_overflow=="visible"||g.fullscreen_html_overflow=="scroll")){g.fullscreen_html_overflow="auto"}if(g.fullscreen_overflow=="0px"){g.fullscreen_overflow=""}a.setStyle(a.doc.body,"overflow","hidden");j.style.overflow="hidden";c=a.getViewPort();a.win.scrollTo(0,0);if(tinymce.isIE){c.h-=1}if(tinymce.isIE6||document.compatMode=="BackCompat"){b="absolute;top:"+c.y}else{b="fixed;top:0"}n=a.add(a.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+b+";left:0;width:"+c.w+"px;height:"+c.h+"px;z-index:200000;"});a.add(n,"div",{id:"mce_fullscreen"});tinymce.each(d.settings,function(k,l){g[l]=k});g.id="mce_fullscreen";g.width=n.clientWidth;g.height=n.clientHeight-15;g.fullscreen_is_enabled=true;g.fullscreen_editor_id=d.id;g.theme_advanced_resizing=false;g.save_onsavecallback=function(){d.setContent(tinyMCE.get(g.id).getContent());d.execCommand("mceSave")};tinymce.each(d.getParam("fullscreen_settings"),function(m,l){g[l]=m});if(g.theme_advanced_toolbar_location==="external"){g.theme_advanced_toolbar_location="top"}f.fullscreenEditor=new tinymce.Editor("mce_fullscreen",g);f.fullscreenEditor.onInit.add(function(){f.fullscreenEditor.setContent(d.getContent());f.fullscreenEditor.focus()});f.fullscreenEditor.render();f.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");f.fullscreenElement.update();f.resizeFunc=tinymce.dom.Event.add(a.win,"resize",function(){var o=tinymce.DOM.getViewPort(),l=f.fullscreenEditor,k,m;k=l.dom.getSize(l.getContainer().getElementsByTagName("table")[0]);m=l.dom.getSize(l.getContainer().getElementsByTagName("iframe")[0]);l.theme.resizeTo(o.w-k.w+m.w,o.h-k.h+m.h)})}});d.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});d.onNodeChange.add(function(i,h){h.setActive("fullscreen",i.getParam("fullscreen_is_enabled"))})},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})(); \ No newline at end of file
+(function(){var b=tinymce.DOM;var a=function(d,f,e){var c=function(g){var i=d.controlManager.get(g);var h=f.controlManager.get(g);if(i&&h){h.displayColor(i.value)}};c("forecolor");c("backcolor");f.setContent(d.getContent({format:"raw"}),{format:"raw"});f.selection.moveToBookmark(e);if(d.plugins.spellchecker&&f.plugins.spellchecker){f.plugins.spellchecker.setLanguage(d.plugins.spellchecker.selectedLang)}};tinymce.create("tinymce.plugins.FullScreenPlugin",{init:function(i,c){var l=this,m={},k=b.doc.documentElement,d,o,h,g,f,e,j;i.addCommand("mceFullScreen",function(){var q,r;if(i.getParam("fullscreen_is_enabled")){if(i.getParam("fullscreen_new_window")){closeFullscreen()}else{b.win.setTimeout(function(){var t=i;var s=tinyMCE.get(t.getParam("fullscreen_editor_id"));s.plugins.fullscreen.saveState(t);tinyMCE.remove(t)},10)}return}if(i.getParam("fullscreen_new_window")){l.fullscreenSettings={bookmark:i.selection.getBookmark()};q=b.win.open(c+"/fullscreen.htm","mceFullScreenPopup","fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width="+screen.availWidth+",height="+screen.availHeight);try{q.resizeTo(screen.availWidth,screen.availHeight)}catch(p){}}else{o=b.getStyle(b.doc.body,"overflow",1)||"auto";h=b.getStyle(k,"overflow",1);d=b.getViewPort();g=d.x;f=d.y;if(tinymce.isOpera&&o=="visible"){o="auto"}if(tinymce.isIE&&o=="scroll"){o="auto"}if(tinymce.isIE&&(h=="visible"||h=="scroll")){h="auto"}if(o=="0px"){o=""}b.setStyle(b.doc.body,"overflow","hidden");k.style.overflow="hidden";d=b.getViewPort();b.win.scrollTo(0,0);if(tinymce.isIE){d.h-=1}if(tinymce.isIE6||document.compatMode=="BackCompat"){e="absolute;top:"+d.y}else{e="fixed;top:0"}n=b.add(b.doc.body,"div",{id:"mce_fullscreen_container",style:"position:"+e+";left:0;width:"+d.w+"px;height:"+d.h+"px;z-index:200000;"});b.add(n,"div",{id:"mce_fullscreen"});tinymce.each(i.settings,function(s,t){m[t]=s});m.id="mce_fullscreen";m.width=n.clientWidth;m.height=n.clientHeight-15;m.fullscreen_is_enabled=true;m.fullscreen_editor_id=i.id;m.theme_advanced_resizing=false;m.save_onsavecallback=function(){i.setContent(tinyMCE.get(m.id).getContent());i.execCommand("mceSave")};tinymce.each(i.getParam("fullscreen_settings"),function(t,s){m[s]=t});l.fullscreenSettings={bookmark:i.selection.getBookmark(),fullscreen_overflow:o,fullscreen_html_overflow:h,fullscreen_scrollx:g,fullscreen_scrolly:f};if(m.theme_advanced_toolbar_location==="external"){m.theme_advanced_toolbar_location="top"}tinyMCE.oldSettings=tinyMCE.settings;l.fullscreenEditor=new tinymce.Editor("mce_fullscreen",m);l.fullscreenEditor.onInit.add(function(){l.loadState(l.fullscreenEditor)});l.fullscreenEditor.render();l.fullscreenElement=new tinymce.dom.Element("mce_fullscreen_container");l.fullscreenElement.update();l.resizeFunc=tinymce.dom.Event.add(b.win,"resize",function(){var v=tinymce.DOM.getViewPort(),t=l.fullscreenEditor,s,u;s=t.dom.getSize(t.getContainer().getElementsByTagName("table")[0]);u=t.dom.getSize(t.getContainer().getElementsByTagName("iframe")[0]);t.theme.resizeTo(v.w-s.w+u.w,v.h-s.h+u.h)})}});i.addButton("fullscreen",{title:"fullscreen.desc",cmd:"mceFullScreen"});i.onNodeChange.add(function(q,p){p.setActive("fullscreen",q.getParam("fullscreen_is_enabled"))});l.loadState=function(p){if(!(p&&l.fullscreenSettings)){throw"No fullscreen editor to load to"}a(i,p,l.fullscreenSettings.bookmark);p.focus()};l.saveState=function(q){if(!(q&&l.fullscreenSettings)){throw"No fullscreen editor to restore from"}var p=l.fullscreenSettings;a(q,i,q.selection.getBookmark());if(!i.getParam("fullscreen_new_window")){tinymce.dom.Event.remove(b.win,"resize",l.resizeFunc);delete l.resizeFunc;b.remove("mce_fullscreen_container");b.doc.documentElement.style.overflow=p.fullscreen_html_overflow;b.setStyle(b.doc.body,"overflow",p.fullscreen_overflow);b.win.scrollTo(p.fullscreen_scrollx,p.fullscreen_scrolly)}tinyMCE.settings=tinyMCE.oldSettings;delete tinyMCE.oldSettings;delete l.fullscreenEditor;delete l.fullscreenElement;delete l.fullscreenSettings;b.win.setTimeout(function(){i.selection.moveToBookmark(j);i.focus()},10)}},getInfo:function(){return{longname:"Fullscreen",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/fullscreen",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.PluginManager.add("fullscreen",tinymce.plugins.FullScreenPlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/fullscreen/editor_plugin_src.js b/program/js/tiny_mce/plugins/fullscreen/editor_plugin_src.js
index 524b487aa..bec886f74 100644
--- a/program/js/tiny_mce/plugins/fullscreen/editor_plugin_src.js
+++ b/program/js/tiny_mce/plugins/fullscreen/editor_plugin_src.js
@@ -11,29 +11,48 @@
(function() {
var DOM = tinymce.DOM;
+ // State Transfer function
+ var transferState = function(oldEditor, newEditor, bookmark) {
+ var transferColorButtonState = function(swapme) {
+ var c = oldEditor.controlManager.get(swapme);
+ var newC = newEditor.controlManager.get(swapme);
+
+ if (c && newC) {
+ newC.displayColor(c.value);
+ }
+
+ };
+
+ transferColorButtonState('forecolor');
+ transferColorButtonState('backcolor');
+ newEditor.setContent(oldEditor.getContent({format : 'raw'}), {format : 'raw'});
+ newEditor.selection.moveToBookmark(bookmark);
+
+ if (oldEditor.plugins.spellchecker && newEditor.plugins.spellchecker) {
+ newEditor.plugins.spellchecker.setLanguage(oldEditor.plugins.spellchecker.selectedLang);
+ }
+ };
+
tinymce.create('tinymce.plugins.FullScreenPlugin', {
init : function(ed, url) {
- var t = this, s = {}, vp, posCss;
-
- t.editor = ed;
+ var t = this, s = {}, de = DOM.doc.documentElement, vp, fullscreen_overflow, fullscreen_html_overflow, fullscreen_scrollx, fullscreen_scrolly, posCss, bookmark;
// Register commands
ed.addCommand('mceFullScreen', function() {
- var win, de = DOM.doc.documentElement;
+ var win, oed;
if (ed.getParam('fullscreen_is_enabled')) {
if (ed.getParam('fullscreen_new_window'))
- closeFullscreen(); // Call to close in new window
+ closeFullscreen(); // Call to close in fullscreen.htm
else {
DOM.win.setTimeout(function() {
- tinymce.dom.Event.remove(DOM.win, 'resize', t.resizeFunc);
- tinyMCE.get(ed.getParam('fullscreen_editor_id')).setContent(ed.getContent());
- tinyMCE.remove(ed);
- DOM.remove('mce_fullscreen_container');
- de.style.overflow = ed.getParam('fullscreen_html_overflow');
- DOM.setStyle(DOM.doc.body, 'overflow', ed.getParam('fullscreen_overflow'));
- DOM.win.scrollTo(ed.getParam('fullscreen_scrollx'), ed.getParam('fullscreen_scrolly'));
- tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings
+ var fullscreenEditor = ed;
+
+ // find the editor that opened this one, execute restore function there
+ var originalEditor = tinyMCE.get(fullscreenEditor.getParam('fullscreen_editor_id'));
+ originalEditor.plugins.fullscreen.saveState(fullscreenEditor);
+
+ tinyMCE.remove(fullscreenEditor);
}, 10);
}
@@ -41,6 +60,9 @@
}
if (ed.getParam('fullscreen_new_window')) {
+ t.fullscreenSettings = {
+ bookmark: ed.selection.getBookmark()
+ };
win = DOM.win.open(url + "/fullscreen.htm", "mceFullScreenPopup", "fullscreen=yes,menubar=no,toolbar=no,scrollbars=no,resizable=yes,left=0,top=0,width=" + screen.availWidth + ",height=" + screen.availHeight);
try {
win.resizeTo(screen.availWidth, screen.availHeight);
@@ -48,27 +70,26 @@
// Ignore
}
} else {
- tinyMCE.oldSettings = tinyMCE.settings; // Store old settings
- s.fullscreen_overflow = DOM.getStyle(DOM.doc.body, 'overflow', 1) || 'auto';
- s.fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1);
+ fullscreen_overflow = DOM.getStyle(DOM.doc.body, 'overflow', 1) || 'auto';
+ fullscreen_html_overflow = DOM.getStyle(de, 'overflow', 1);
vp = DOM.getViewPort();
- s.fullscreen_scrollx = vp.x;
- s.fullscreen_scrolly = vp.y;
+ fullscreen_scrollx = vp.x;
+ fullscreen_scrolly = vp.y;
// Fixes an Opera bug where the scrollbars doesn't reappear
- if (tinymce.isOpera && s.fullscreen_overflow == 'visible')
- s.fullscreen_overflow = 'auto';
+ if (tinymce.isOpera && fullscreen_overflow == 'visible')
+ fullscreen_overflow = 'auto';
// Fixes an IE bug where horizontal scrollbars would appear
- if (tinymce.isIE && s.fullscreen_overflow == 'scroll')
- s.fullscreen_overflow = 'auto';
+ if (tinymce.isIE && fullscreen_overflow == 'scroll')
+ fullscreen_overflow = 'auto';
// Fixes an IE bug where the scrollbars doesn't reappear
- if (tinymce.isIE && (s.fullscreen_html_overflow == 'visible' || s.fullscreen_html_overflow == 'scroll'))
- s.fullscreen_html_overflow = 'auto';
+ if (tinymce.isIE && (fullscreen_html_overflow == 'visible' || fullscreen_html_overflow == 'scroll'))
+ fullscreen_html_overflow = 'auto';
- if (s.fullscreen_overflow == '0px')
- s.fullscreen_overflow = '';
+ if (fullscreen_overflow == '0px')
+ fullscreen_overflow = '';
DOM.setStyle(DOM.doc.body, 'overflow', 'hidden');
de.style.overflow = 'hidden'; //Fix for IE6/7
@@ -108,13 +129,21 @@
s[k] = v;
});
+ t.fullscreenSettings = {
+ bookmark: ed.selection.getBookmark(),
+ fullscreen_overflow: fullscreen_overflow,
+ fullscreen_html_overflow: fullscreen_html_overflow,
+ fullscreen_scrollx: fullscreen_scrollx,
+ fullscreen_scrolly: fullscreen_scrolly
+ };
+
if (s.theme_advanced_toolbar_location === 'external')
s.theme_advanced_toolbar_location = 'top';
+ tinyMCE.oldSettings = tinyMCE.settings; // Store old settings, the Editor constructor overwrites them
t.fullscreenEditor = new tinymce.Editor('mce_fullscreen', s);
t.fullscreenEditor.onInit.add(function() {
- t.fullscreenEditor.setContent(ed.getContent());
- t.fullscreenEditor.focus();
+ t.loadState(t.fullscreenEditor);
});
t.fullscreenEditor.render();
@@ -141,6 +170,52 @@
ed.onNodeChange.add(function(ed, cm) {
cm.setActive('fullscreen', ed.getParam('fullscreen_is_enabled'));
});
+
+ // fullscreenEditor is a param here because in window mode we don't create it
+ t.loadState = function(fullscreenEditor) {
+ if (!(fullscreenEditor && t.fullscreenSettings)) {
+ throw "No fullscreen editor to load to";
+ }
+
+ transferState(ed, fullscreenEditor, t.fullscreenSettings.bookmark);
+ fullscreenEditor.focus();
+
+ };
+
+ // fullscreenEditor is a param here because in window mode we don't create it
+ t.saveState = function(fullscreenEditor) {
+ if (!(fullscreenEditor && t.fullscreenSettings)) {
+ throw "No fullscreen editor to restore from";
+ }
+ var settings = t.fullscreenSettings;
+
+ transferState(fullscreenEditor, ed, fullscreenEditor.selection.getBookmark());
+
+ // cleanup only required if window mode isn't used
+ if (!ed.getParam('fullscreen_new_window')) {
+ tinymce.dom.Event.remove(DOM.win, 'resize', t.resizeFunc);
+ delete t.resizeFunc;
+
+ DOM.remove('mce_fullscreen_container');
+
+ DOM.doc.documentElement.style.overflow = settings.fullscreen_html_overflow;
+ DOM.setStyle(DOM.doc.body, 'overflow', settings.fullscreen_overflow);
+ DOM.win.scrollTo(settings.fullscreen_scrollx, settings.fullscreen_scrolly);
+ }
+ tinyMCE.settings = tinyMCE.oldSettings; // Restore old settings
+
+ // clear variables
+ delete tinyMCE.oldSettings;
+ delete t.fullscreenEditor;
+ delete t.fullscreenElement;
+ delete t.fullscreenSettings;
+
+ // allow the fullscreen editor to be removed before restoring focus and selection
+ DOM.win.setTimeout(function() {
+ ed.selection.moveToBookmark(bookmark);
+ ed.focus();
+ }, 10);
+ };
},
getInfo : function() {
diff --git a/program/js/tiny_mce/plugins/fullscreen/fullscreen.htm b/program/js/tiny_mce/plugins/fullscreen/fullscreen.htm
index ffe528e41..baf028b79 100644
--- a/program/js/tiny_mce/plugins/fullscreen/fullscreen.htm
+++ b/program/js/tiny_mce/plugins/fullscreen/fullscreen.htm
@@ -46,7 +46,7 @@
settings['strict_loading_mode'] = true;
settings.save_onsavecallback = function() {
- window.opener.tinyMCE.get(oeID).setContent(tinyMCE.get('fullscreenarea').getContent({format : 'raw'}), {format : 'raw'});
+ moveContent();
window.opener.tinyMCE.get(oeID).execCommand('mceSave');
window.close();
};
@@ -56,11 +56,15 @@
}
function moveContent() {
- window.opener.tinyMCE.get(oeID).setContent(tinyMCE.activeEditor.getContent());
+ // find the original editor, execute restore state in it's plugin instance
+ window.opener.tinyMCE.get(oeID).plugins.fullscreen.saveState(tinyMCE.activeEditor);
+
+ // prevent moveContent from being called twice - e.g. if the unloadHandler runs after moveContent()
+ tinymce.dom.Event.remove(window, "beforeunload", unloadHandler);
}
function closeFullscreen() {
- moveContent();
+ // moveContent() will be called by the unload handler
window.close();
}
@@ -78,17 +82,20 @@
function render() {
var e = document.getElementById('fullscreenarea'), vp, ed, ow, oh, dom = tinymce.DOM;
- e.value = window.opener.tinyMCE.get(oeID).getContent();
-
vp = dom.getViewPort();
settings.width = vp.w;
settings.height = vp.h - 15;
- tinymce.dom.Event.add(window, 'resize', function() {
- var vp = dom.getViewPort();
+ settings.oninit = function() {
+ var ed = tinyMCE.activeEditor;
+ window.opener.tinyMCE.get(oeID).plugins.fullscreen.loadState(ed);
+
+ tinymce.dom.Event.add(window, 'resize', function() {
+ var vp = dom.getViewPort();
- tinyMCE.activeEditor.theme.resizeTo(vp.w, vp.h);
- });
+ tinyMCE.activeEditor.theme.resizeTo(vp.w, vp.h);
+ });
+ }
tinyMCE.init(settings);
}
diff --git a/program/js/tiny_mce/plugins/inlinepopups/editor_plugin.js b/program/js/tiny_mce/plugins/inlinepopups/editor_plugin.js
index 8bb96f9cb..2d71a2e17 100644
--- a/program/js/tiny_mce/plugins/inlinepopups/editor_plugin.js
+++ b/program/js/tiny_mce/plugins/inlinepopups/editor_plugin.js
@@ -1 +1 @@
-(function(){var d=tinymce.DOM,b=tinymce.dom.Element,a=tinymce.dom.Event,e=tinymce.each,c=tinymce.is;tinymce.create("tinymce.plugins.InlinePopups",{init:function(f,g){f.onBeforeRenderUI.add(function(){f.windowManager=new tinymce.InlineWindowManager(f);d.loadCSS(g+"/skins/"+(f.settings.inlinepopups_skin||"clearlooks2")+"/window.css")})},getInfo:function(){return{longname:"InlinePopups",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.create("tinymce.InlineWindowManager:tinymce.WindowManager",{InlineWindowManager:function(f){var g=this;g.parent(f);g.zIndex=300000;g.count=0;g.windows={}},open:function(s,j){var z=this,i,k="",r=z.editor,g=0,v=0,h,m,o,q,l,x,y,n;s=s||{};j=j||{};if(!s.inline){return z.parent(s,j)}n=z._frontWindow();if(n&&d.get(n.id+"_ifr")){n.focussedElement=d.get(n.id+"_ifr").contentWindow.document.activeElement}if(!s.type){z.bookmark=r.selection.getBookmark(1)}i=d.uniqueId();h=d.getViewPort();s.width=parseInt(s.width||320);s.height=parseInt(s.height||240)+(tinymce.isIE?8:0);s.min_width=parseInt(s.min_width||150);s.min_height=parseInt(s.min_height||100);s.max_width=parseInt(s.max_width||2000);s.max_height=parseInt(s.max_height||2000);s.left=s.left||Math.round(Math.max(h.x,h.x+(h.w/2)-(s.width/2)));s.top=s.top||Math.round(Math.max(h.y,h.y+(h.h/2)-(s.height/2)));s.movable=s.resizable=true;j.mce_width=s.width;j.mce_height=s.height;j.mce_inline=true;j.mce_window_id=i;j.mce_auto_focus=s.auto_focus;z.features=s;z.params=j;z.onOpen.dispatch(z,s,j);if(s.type){k+=" mceModal";if(s.type){k+=" mce"+s.type.substring(0,1).toUpperCase()+s.type.substring(1)}s.resizable=false}if(s.statusbar){k+=" mceStatusbar"}if(s.resizable){k+=" mceResizable"}if(s.minimizable){k+=" mceMinimizable"}if(s.maximizable){k+=" mceMaximizable"}if(s.movable){k+=" mceMovable"}z._addAll(d.doc.body,["div",{id:i,role:"dialog","aria-labelledby":s.type?i+"_content":i+"_title","class":(r.settings.inlinepopups_skin||"clearlooks2")+(tinymce.isIE&&window.getSelection?" ie9":""),style:"width:100px;height:100px"},["div",{id:i+"_wrapper","class":"mceWrapper"+k},["div",{id:i+"_top","class":"mceTop"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_title"},s.title||""]],["div",{id:i+"_middle","class":"mceMiddle"},["div",{id:i+"_left","class":"mceLeft",tabindex:"0"}],["span",{id:i+"_content"}],["div",{id:i+"_right","class":"mceRight",tabindex:"0"}]],["div",{id:i+"_bottom","class":"mceBottom"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_status"},"Content"]],["a",{"class":"mceMove",tabindex:"-1",href:"javascript:;"}],["a",{"class":"mceMin",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMax",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMed",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceClose",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{id:i+"_resize_n","class":"mceResize mceResizeN",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_s","class":"mceResize mceResizeS",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_w","class":"mceResize mceResizeW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_e","class":"mceResize mceResizeE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_nw","class":"mceResize mceResizeNW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_ne","class":"mceResize mceResizeNE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_sw","class":"mceResize mceResizeSW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_se","class":"mceResize mceResizeSE",tabindex:"-1",href:"javascript:;"}]]]);d.setStyles(i,{top:-10000,left:-10000});if(tinymce.isGecko){d.setStyle(i,"overflow","auto")}if(!s.type){g+=d.get(i+"_left").clientWidth;g+=d.get(i+"_right").clientWidth;v+=d.get(i+"_top").clientHeight;v+=d.get(i+"_bottom").clientHeight}d.setStyles(i,{top:s.top,left:s.left,width:s.width+g,height:s.height+v});y=s.url||s.file;if(y){if(tinymce.relaxedDomain){y+=(y.indexOf("?")==-1?"?":"&")+"mce_rdomain="+tinymce.relaxedDomain}y=tinymce._addVer(y)}if(!s.type){d.add(i+"_content","iframe",{id:i+"_ifr",src:'javascript:""',frameBorder:0,style:"border:0;width:10px;height:10px"});d.setStyles(i+"_ifr",{width:s.width,height:s.height});d.setAttrib(i+"_ifr","src",y)}else{d.add(i+"_wrapper","a",{id:i+"_ok","class":"mceButton mceOk",href:"javascript:;",onmousedown:"return false;"},"Ok");if(s.type=="confirm"){d.add(i+"_wrapper","a",{"class":"mceButton mceCancel",href:"javascript:;",onmousedown:"return false;"},"Cancel")}d.add(i+"_middle","div",{"class":"mceIcon"});d.setHTML(i+"_content",s.content.replace("\n","<br />"));a.add(i,"keyup",function(f){var p=27;if(f.keyCode===p){s.button_func(false);return a.cancel(f)}});a.add(i,"keydown",function(f){var t,p=9;if(f.keyCode===p){t=d.select("a.mceCancel",i+"_wrapper")[0];if(t&&t!==f.target){t.focus()}else{d.get(i+"_ok").focus()}return a.cancel(f)}})}o=a.add(i,"mousedown",function(t){var u=t.target,f,p;f=z.windows[i];z.focus(i);if(u.nodeName=="A"||u.nodeName=="a"){if(u.className=="mceClose"){z.close(null,i);return a.cancel(t)}else{if(u.className=="mceMax"){f.oldPos=f.element.getXY();f.oldSize=f.element.getSize();p=d.getViewPort();p.w-=2;p.h-=2;f.element.moveTo(p.x,p.y);f.element.resizeTo(p.w,p.h);d.setStyles(i+"_ifr",{width:p.w-f.deltaWidth,height:p.h-f.deltaHeight});d.addClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMed"){f.element.moveTo(f.oldPos.x,f.oldPos.y);f.element.resizeTo(f.oldSize.w,f.oldSize.h);f.iframeElement.resizeTo(f.oldSize.w-f.deltaWidth,f.oldSize.h-f.deltaHeight);d.removeClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMove"){return z._startDrag(i,t,u.className)}else{if(d.hasClass(u,"mceResize")){return z._startDrag(i,t,u.className.substring(13))}}}}}}});q=a.add(i,"click",function(f){var p=f.target;z.focus(i);if(p.nodeName=="A"||p.nodeName=="a"){switch(p.className){case"mceClose":z.close(null,i);return a.cancel(f);case"mceButton mceOk":case"mceButton mceCancel":s.button_func(p.className=="mceButton mceOk");return a.cancel(f)}}});a.add([i+"_left",i+"_right"],"focus",function(p){var t=d.get(i+"_ifr");if(t){var f=t.contentWindow.document.body;var u=d.select(":input:enabled,*[tabindex=0]",f);if(p.target.id===(i+"_left")){u[u.length-1].focus()}else{u[0].focus()}}else{d.get(i+"_ok").focus()}});x=z.windows[i]={id:i,mousedown_func:o,click_func:q,element:new b(i,{blocker:1,container:r.getContainer()}),iframeElement:new b(i+"_ifr"),features:s,deltaWidth:g,deltaHeight:v};x.iframeElement.on("focus",function(){z.focus(i)});if(z.count==0&&z.editor.getParam("dialog_type","modal")=="modal"){d.add(d.doc.body,"div",{id:"mceModalBlocker","class":(z.editor.settings.inlinepopups_skin||"clearlooks2")+"_modalBlocker",style:{zIndex:z.zIndex-1}});d.show("mceModalBlocker");d.setAttrib(d.doc.body,"aria-hidden","true")}else{d.setStyle("mceModalBlocker","z-index",z.zIndex-1)}if(tinymce.isIE6||/Firefox\/2\./.test(navigator.userAgent)||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceModalBlocker",{position:"absolute",left:h.x,top:h.y,width:h.w-2,height:h.h-2})}d.setAttrib(i,"aria-hidden","false");z.focus(i);z._fixIELayout(i,1);if(d.get(i+"_ok")){d.get(i+"_ok").focus()}z.count++;return x},focus:function(h){var g=this,f;if(f=g.windows[h]){f.zIndex=this.zIndex++;f.element.setStyle("zIndex",f.zIndex);f.element.update();h=h+"_wrapper";d.removeClass(g.lastId,"mceFocus");d.addClass(h,"mceFocus");g.lastId=h;if(f.focussedElement){f.focussedElement.focus()}else{if(d.get(h+"_ok")){d.get(f.id+"_ok").focus()}else{if(d.get(f.id+"_ifr")){d.get(f.id+"_ifr").focus()}}}}},_addAll:function(k,h){var g,l,f=this,j=tinymce.DOM;if(c(h,"string")){k.appendChild(j.doc.createTextNode(h))}else{if(h.length){k=k.appendChild(j.create(h[0],h[1]));for(g=2;g<h.length;g++){f._addAll(k,h[g])}}}},_startDrag:function(v,G,E){var o=this,u,z,C=d.doc,f,l=o.windows[v],h=l.element,y=h.getXY(),x,q,F,g,A,s,r,j,i,m,k,n,B;g={x:0,y:0};A=d.getViewPort();A.w-=2;A.h-=2;j=G.screenX;i=G.screenY;m=k=n=B=0;u=a.add(C,"mouseup",function(p){a.remove(C,"mouseup",u);a.remove(C,"mousemove",z);if(f){f.remove()}h.moveBy(m,k);h.resizeBy(n,B);q=h.getSize();d.setStyles(v+"_ifr",{width:q.w-l.deltaWidth,height:q.h-l.deltaHeight});o._fixIELayout(v,1);return a.cancel(p)});if(E!="Move"){D()}function D(){if(f){return}o._fixIELayout(v,0);d.add(C.body,"div",{id:"mceEventBlocker","class":"mceEventBlocker "+(o.editor.settings.inlinepopups_skin||"clearlooks2"),style:{zIndex:o.zIndex+1}});if(tinymce.isIE6||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceEventBlocker",{position:"absolute",left:A.x,top:A.y,width:A.w-2,height:A.h-2})}f=new b("mceEventBlocker");f.update();x=h.getXY();q=h.getSize();s=g.x+x.x-A.x;r=g.y+x.y-A.y;d.add(f.get(),"div",{id:"mcePlaceHolder","class":"mcePlaceHolder",style:{left:s,top:r,width:q.w,height:q.h}});F=new b("mcePlaceHolder")}z=a.add(C,"mousemove",function(w){var p,H,t;D();p=w.screenX-j;H=w.screenY-i;switch(E){case"ResizeW":m=p;n=0-p;break;case"ResizeE":n=p;break;case"ResizeN":case"ResizeNW":case"ResizeNE":if(E=="ResizeNW"){m=p;n=0-p}else{if(E=="ResizeNE"){n=p}}k=H;B=0-H;break;case"ResizeS":case"ResizeSW":case"ResizeSE":if(E=="ResizeSW"){m=p;n=0-p}else{if(E=="ResizeSE"){n=p}}B=H;break;case"mceMove":m=p;k=H;break}if(n<(t=l.features.min_width-q.w)){if(m!==0){m+=n-t}n=t}if(B<(t=l.features.min_height-q.h)){if(k!==0){k+=B-t}B=t}n=Math.min(n,l.features.max_width-q.w);B=Math.min(B,l.features.max_height-q.h);m=Math.max(m,A.x-(s+A.x));k=Math.max(k,A.y-(r+A.y));m=Math.min(m,(A.w+A.x)-(s+q.w+A.x));k=Math.min(k,(A.h+A.y)-(r+q.h+A.y));if(m+k!==0){if(s+m<0){m=0}if(r+k<0){k=0}F.moveTo(s+m,r+k)}if(n+B!==0){F.resizeTo(q.w+n,q.h+B)}return a.cancel(w)});return a.cancel(G)},resizeBy:function(g,h,i){var f=this.windows[i];if(f){f.element.resizeBy(g,h);f.iframeElement.resizeBy(g,h)}},close:function(i,k){var g=this,f,j=d.doc,h,k;k=g._findId(k||i);if(!g.windows[k]){g.parent(i);return}g.count--;if(g.count==0){d.remove("mceModalBlocker");d.setAttrib(d.doc.body,"aria-hidden","false");g.editor.focus()}if(f=g.windows[k]){g.onClose.dispatch(g);a.remove(j,"mousedown",f.mousedownFunc);a.remove(j,"click",f.clickFunc);a.clear(k);a.clear(k+"_ifr");d.setAttrib(k+"_ifr","src",'javascript:""');f.element.remove();delete g.windows[k];h=g._frontWindow();if(h){g.focus(h.id)}}},_frontWindow:function(){var g,f=0;e(this.windows,function(h){if(h.zIndex>f){g=h;f=h.zIndex}});return g},setTitle:function(f,g){var h;f=this._findId(f);if(h=d.get(f+"_title")){h.innerHTML=d.encode(g)}},alert:function(g,f,j){var i=this,h;h=i.open({title:i,type:"alert",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},confirm:function(g,f,j){var i=this,h;h=i.open({title:i,type:"confirm",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},_findId:function(f){var g=this;if(typeof(f)=="string"){return f}e(g.windows,function(h){var i=d.get(h.id+"_ifr");if(i&&f==i.contentWindow){f=h.id;return false}});return f},_fixIELayout:function(i,h){var f,g;if(!tinymce.isIE6){return}e(["n","s","w","e","nw","ne","sw","se"],function(j){var k=d.get(i+"_resize_"+j);d.setStyles(k,{width:h?k.clientWidth:"",height:h?k.clientHeight:"",cursor:d.getStyle(k,"cursor",1)});d.setStyle(i+"_bottom","bottom","-1px");k=0});if(f=this.windows[i]){f.element.hide();f.element.show();e(d.select("div,a",i),function(k,j){if(k.currentStyle.backgroundImage!="none"){g=new Image();g.src=k.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,"$1")}});d.get(i).style.filter=""}}});tinymce.PluginManager.add("inlinepopups",tinymce.plugins.InlinePopups)})(); \ No newline at end of file
+(function(){var d=tinymce.DOM,b=tinymce.dom.Element,a=tinymce.dom.Event,e=tinymce.each,c=tinymce.is;tinymce.create("tinymce.plugins.InlinePopups",{init:function(f,g){f.onBeforeRenderUI.add(function(){f.windowManager=new tinymce.InlineWindowManager(f);d.loadCSS(g+"/skins/"+(f.settings.inlinepopups_skin||"clearlooks2")+"/window.css")})},getInfo:function(){return{longname:"InlinePopups",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/inlinepopups",version:tinymce.majorVersion+"."+tinymce.minorVersion}}});tinymce.create("tinymce.InlineWindowManager:tinymce.WindowManager",{InlineWindowManager:function(f){var g=this;g.parent(f);g.zIndex=300000;g.count=0;g.windows={}},open:function(s,j){var z=this,i,k="",r=z.editor,g=0,v=0,h,m,o,q,l,x,y,n;s=s||{};j=j||{};if(!s.inline){return z.parent(s,j)}n=z._frontWindow();if(n&&d.get(n.id+"_ifr")){n.focussedElement=d.get(n.id+"_ifr").contentWindow.document.activeElement}if(!s.type){z.bookmark=r.selection.getBookmark(1)}i=d.uniqueId("mce_inlinepopups_");h=d.getViewPort();s.width=parseInt(s.width||320);s.height=parseInt(s.height||240)+(tinymce.isIE?8:0);s.min_width=parseInt(s.min_width||150);s.min_height=parseInt(s.min_height||100);s.max_width=parseInt(s.max_width||2000);s.max_height=parseInt(s.max_height||2000);s.left=s.left||Math.round(Math.max(h.x,h.x+(h.w/2)-(s.width/2)));s.top=s.top||Math.round(Math.max(h.y,h.y+(h.h/2)-(s.height/2)));s.movable=s.resizable=true;j.mce_width=s.width;j.mce_height=s.height;j.mce_inline=true;j.mce_window_id=i;j.mce_auto_focus=s.auto_focus;z.features=s;z.params=j;z.onOpen.dispatch(z,s,j);if(s.type){k+=" mceModal";if(s.type){k+=" mce"+s.type.substring(0,1).toUpperCase()+s.type.substring(1)}s.resizable=false}if(s.statusbar){k+=" mceStatusbar"}if(s.resizable){k+=" mceResizable"}if(s.minimizable){k+=" mceMinimizable"}if(s.maximizable){k+=" mceMaximizable"}if(s.movable){k+=" mceMovable"}z._addAll(d.doc.body,["div",{id:i,role:"dialog","aria-labelledby":s.type?i+"_content":i+"_title","class":(r.settings.inlinepopups_skin||"clearlooks2")+(tinymce.isIE&&window.getSelection?" ie9":""),style:"width:100px;height:100px"},["div",{id:i+"_wrapper","class":"mceWrapper"+k},["div",{id:i+"_top","class":"mceTop"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_title"},s.title||""]],["div",{id:i+"_middle","class":"mceMiddle"},["div",{id:i+"_left","class":"mceLeft",tabindex:"0"}],["span",{id:i+"_content"}],["div",{id:i+"_right","class":"mceRight",tabindex:"0"}]],["div",{id:i+"_bottom","class":"mceBottom"},["div",{"class":"mceLeft"}],["div",{"class":"mceCenter"}],["div",{"class":"mceRight"}],["span",{id:i+"_status"},"Content"]],["a",{"class":"mceMove",tabindex:"-1",href:"javascript:;"}],["a",{"class":"mceMin",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMax",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceMed",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{"class":"mceClose",tabindex:"-1",href:"javascript:;",onmousedown:"return false;"}],["a",{id:i+"_resize_n","class":"mceResize mceResizeN",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_s","class":"mceResize mceResizeS",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_w","class":"mceResize mceResizeW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_e","class":"mceResize mceResizeE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_nw","class":"mceResize mceResizeNW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_ne","class":"mceResize mceResizeNE",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_sw","class":"mceResize mceResizeSW",tabindex:"-1",href:"javascript:;"}],["a",{id:i+"_resize_se","class":"mceResize mceResizeSE",tabindex:"-1",href:"javascript:;"}]]]);d.setStyles(i,{top:-10000,left:-10000});if(tinymce.isGecko){d.setStyle(i,"overflow","auto")}if(!s.type){g+=d.get(i+"_left").clientWidth;g+=d.get(i+"_right").clientWidth;v+=d.get(i+"_top").clientHeight;v+=d.get(i+"_bottom").clientHeight}d.setStyles(i,{top:s.top,left:s.left,width:s.width+g,height:s.height+v});y=s.url||s.file;if(y){if(tinymce.relaxedDomain){y+=(y.indexOf("?")==-1?"?":"&")+"mce_rdomain="+tinymce.relaxedDomain}y=tinymce._addVer(y)}if(!s.type){d.add(i+"_content","iframe",{id:i+"_ifr",src:'javascript:""',frameBorder:0,style:"border:0;width:10px;height:10px"});d.setStyles(i+"_ifr",{width:s.width,height:s.height});d.setAttrib(i+"_ifr","src",y)}else{d.add(i+"_wrapper","a",{id:i+"_ok","class":"mceButton mceOk",href:"javascript:;",onmousedown:"return false;"},"Ok");if(s.type=="confirm"){d.add(i+"_wrapper","a",{"class":"mceButton mceCancel",href:"javascript:;",onmousedown:"return false;"},"Cancel")}d.add(i+"_middle","div",{"class":"mceIcon"});d.setHTML(i+"_content",s.content.replace("\n","<br />"));a.add(i,"keyup",function(f){var p=27;if(f.keyCode===p){s.button_func(false);return a.cancel(f)}});a.add(i,"keydown",function(f){var t,p=9;if(f.keyCode===p){t=d.select("a.mceCancel",i+"_wrapper")[0];if(t&&t!==f.target){t.focus()}else{d.get(i+"_ok").focus()}return a.cancel(f)}})}o=a.add(i,"mousedown",function(t){var u=t.target,f,p;f=z.windows[i];z.focus(i);if(u.nodeName=="A"||u.nodeName=="a"){if(u.className=="mceClose"){z.close(null,i);return a.cancel(t)}else{if(u.className=="mceMax"){f.oldPos=f.element.getXY();f.oldSize=f.element.getSize();p=d.getViewPort();p.w-=2;p.h-=2;f.element.moveTo(p.x,p.y);f.element.resizeTo(p.w,p.h);d.setStyles(i+"_ifr",{width:p.w-f.deltaWidth,height:p.h-f.deltaHeight});d.addClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMed"){f.element.moveTo(f.oldPos.x,f.oldPos.y);f.element.resizeTo(f.oldSize.w,f.oldSize.h);f.iframeElement.resizeTo(f.oldSize.w-f.deltaWidth,f.oldSize.h-f.deltaHeight);d.removeClass(i+"_wrapper","mceMaximized")}else{if(u.className=="mceMove"){return z._startDrag(i,t,u.className)}else{if(d.hasClass(u,"mceResize")){return z._startDrag(i,t,u.className.substring(13))}}}}}}});q=a.add(i,"click",function(f){var p=f.target;z.focus(i);if(p.nodeName=="A"||p.nodeName=="a"){switch(p.className){case"mceClose":z.close(null,i);return a.cancel(f);case"mceButton mceOk":case"mceButton mceCancel":s.button_func(p.className=="mceButton mceOk");return a.cancel(f)}}});a.add([i+"_left",i+"_right"],"focus",function(p){var t=d.get(i+"_ifr");if(t){var f=t.contentWindow.document.body;var u=d.select(":input:enabled,*[tabindex=0]",f);if(p.target.id===(i+"_left")){u[u.length-1].focus()}else{u[0].focus()}}else{d.get(i+"_ok").focus()}});x=z.windows[i]={id:i,mousedown_func:o,click_func:q,element:new b(i,{blocker:1,container:r.getContainer()}),iframeElement:new b(i+"_ifr"),features:s,deltaWidth:g,deltaHeight:v};x.iframeElement.on("focus",function(){z.focus(i)});if(z.count==0&&z.editor.getParam("dialog_type","modal")=="modal"){d.add(d.doc.body,"div",{id:"mceModalBlocker","class":(z.editor.settings.inlinepopups_skin||"clearlooks2")+"_modalBlocker",style:{zIndex:z.zIndex-1}});d.show("mceModalBlocker");d.setAttrib(d.doc.body,"aria-hidden","true")}else{d.setStyle("mceModalBlocker","z-index",z.zIndex-1)}if(tinymce.isIE6||/Firefox\/2\./.test(navigator.userAgent)||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceModalBlocker",{position:"absolute",left:h.x,top:h.y,width:h.w-2,height:h.h-2})}d.setAttrib(i,"aria-hidden","false");z.focus(i);z._fixIELayout(i,1);if(d.get(i+"_ok")){d.get(i+"_ok").focus()}z.count++;return x},focus:function(h){var g=this,f;if(f=g.windows[h]){f.zIndex=this.zIndex++;f.element.setStyle("zIndex",f.zIndex);f.element.update();h=h+"_wrapper";d.removeClass(g.lastId,"mceFocus");d.addClass(h,"mceFocus");g.lastId=h;if(f.focussedElement){f.focussedElement.focus()}else{if(d.get(h+"_ok")){d.get(f.id+"_ok").focus()}else{if(d.get(f.id+"_ifr")){d.get(f.id+"_ifr").focus()}}}}},_addAll:function(k,h){var g,l,f=this,j=tinymce.DOM;if(c(h,"string")){k.appendChild(j.doc.createTextNode(h))}else{if(h.length){k=k.appendChild(j.create(h[0],h[1]));for(g=2;g<h.length;g++){f._addAll(k,h[g])}}}},_startDrag:function(v,G,E){var o=this,u,z,C=d.doc,f,l=o.windows[v],h=l.element,y=h.getXY(),x,q,F,g,A,s,r,j,i,m,k,n,B;g={x:0,y:0};A=d.getViewPort();A.w-=2;A.h-=2;j=G.screenX;i=G.screenY;m=k=n=B=0;u=a.add(C,"mouseup",function(p){a.remove(C,"mouseup",u);a.remove(C,"mousemove",z);if(f){f.remove()}h.moveBy(m,k);h.resizeBy(n,B);q=h.getSize();d.setStyles(v+"_ifr",{width:q.w-l.deltaWidth,height:q.h-l.deltaHeight});o._fixIELayout(v,1);return a.cancel(p)});if(E!="Move"){D()}function D(){if(f){return}o._fixIELayout(v,0);d.add(C.body,"div",{id:"mceEventBlocker","class":"mceEventBlocker "+(o.editor.settings.inlinepopups_skin||"clearlooks2"),style:{zIndex:o.zIndex+1}});if(tinymce.isIE6||(tinymce.isIE&&!d.boxModel)){d.setStyles("mceEventBlocker",{position:"absolute",left:A.x,top:A.y,width:A.w-2,height:A.h-2})}f=new b("mceEventBlocker");f.update();x=h.getXY();q=h.getSize();s=g.x+x.x-A.x;r=g.y+x.y-A.y;d.add(f.get(),"div",{id:"mcePlaceHolder","class":"mcePlaceHolder",style:{left:s,top:r,width:q.w,height:q.h}});F=new b("mcePlaceHolder")}z=a.add(C,"mousemove",function(w){var p,H,t;D();p=w.screenX-j;H=w.screenY-i;switch(E){case"ResizeW":m=p;n=0-p;break;case"ResizeE":n=p;break;case"ResizeN":case"ResizeNW":case"ResizeNE":if(E=="ResizeNW"){m=p;n=0-p}else{if(E=="ResizeNE"){n=p}}k=H;B=0-H;break;case"ResizeS":case"ResizeSW":case"ResizeSE":if(E=="ResizeSW"){m=p;n=0-p}else{if(E=="ResizeSE"){n=p}}B=H;break;case"mceMove":m=p;k=H;break}if(n<(t=l.features.min_width-q.w)){if(m!==0){m+=n-t}n=t}if(B<(t=l.features.min_height-q.h)){if(k!==0){k+=B-t}B=t}n=Math.min(n,l.features.max_width-q.w);B=Math.min(B,l.features.max_height-q.h);m=Math.max(m,A.x-(s+A.x));k=Math.max(k,A.y-(r+A.y));m=Math.min(m,(A.w+A.x)-(s+q.w+A.x));k=Math.min(k,(A.h+A.y)-(r+q.h+A.y));if(m+k!==0){if(s+m<0){m=0}if(r+k<0){k=0}F.moveTo(s+m,r+k)}if(n+B!==0){F.resizeTo(q.w+n,q.h+B)}return a.cancel(w)});return a.cancel(G)},resizeBy:function(g,h,i){var f=this.windows[i];if(f){f.element.resizeBy(g,h);f.iframeElement.resizeBy(g,h)}},close:function(i,k){var g=this,f,j=d.doc,h,k;k=g._findId(k||i);if(!g.windows[k]){g.parent(i);return}g.count--;if(g.count==0){d.remove("mceModalBlocker");d.setAttrib(d.doc.body,"aria-hidden","false");g.editor.focus()}if(f=g.windows[k]){g.onClose.dispatch(g);a.remove(j,"mousedown",f.mousedownFunc);a.remove(j,"click",f.clickFunc);a.clear(k);a.clear(k+"_ifr");d.setAttrib(k+"_ifr","src",'javascript:""');f.element.remove();delete g.windows[k];h=g._frontWindow();if(h){g.focus(h.id)}}},_frontWindow:function(){var g,f=0;e(this.windows,function(h){if(h.zIndex>f){g=h;f=h.zIndex}});return g},setTitle:function(f,g){var h;f=this._findId(f);if(h=d.get(f+"_title")){h.innerHTML=d.encode(g)}},alert:function(g,f,j){var i=this,h;h=i.open({title:i,type:"alert",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},confirm:function(g,f,j){var i=this,h;h=i.open({title:i,type:"confirm",button_func:function(k){if(f){f.call(k||i,k)}i.close(null,h.id)},content:d.encode(i.editor.getLang(g,g)),inline:1,width:400,height:130})},_findId:function(f){var g=this;if(typeof(f)=="string"){return f}e(g.windows,function(h){var i=d.get(h.id+"_ifr");if(i&&f==i.contentWindow){f=h.id;return false}});return f},_fixIELayout:function(i,h){var f,g;if(!tinymce.isIE6){return}e(["n","s","w","e","nw","ne","sw","se"],function(j){var k=d.get(i+"_resize_"+j);d.setStyles(k,{width:h?k.clientWidth:"",height:h?k.clientHeight:"",cursor:d.getStyle(k,"cursor",1)});d.setStyle(i+"_bottom","bottom","-1px");k=0});if(f=this.windows[i]){f.element.hide();f.element.show();e(d.select("div,a",i),function(k,j){if(k.currentStyle.backgroundImage!="none"){g=new Image();g.src=k.currentStyle.backgroundImage.replace(/url\(\"(.+)\"\)/,"$1")}});d.get(i).style.filter=""}}});tinymce.PluginManager.add("inlinepopups",tinymce.plugins.InlinePopups)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js b/program/js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
index 67123ca31..da6ee2493 100644
--- a/program/js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
+++ b/program/js/tiny_mce/plugins/inlinepopups/editor_plugin_src.js
@@ -55,12 +55,12 @@
if (parentWindow && DOM.get(parentWindow.id + '_ifr')) {
parentWindow.focussedElement = DOM.get(parentWindow.id + '_ifr').contentWindow.document.activeElement;
}
-
+
// Only store selection if the type is a normal window
if (!f.type)
t.bookmark = ed.selection.getBookmark(1);
- id = DOM.uniqueId();
+ id = DOM.uniqueId("mce_inlinepopups_"); // Use a prefix so this can't conflict with other ids
vp = DOM.getViewPort();
f.width = parseInt(f.width || 320);
f.height = parseInt(f.height || 240) + (tinymce.isIE ? 8 : 0);
@@ -111,17 +111,17 @@
opt += ' mceMovable';
// Create DOM objects
- t._addAll(DOM.doc.body,
- ['div', {id : id, role : 'dialog', 'aria-labelledby': f.type ? id + '_content' : id + '_title', 'class' : (ed.settings.inlinepopups_skin || 'clearlooks2') + (tinymce.isIE && window.getSelection ? ' ie9' : ''), style : 'width:100px;height:100px'},
+ t._addAll(DOM.doc.body,
+ ['div', {id : id, role : 'dialog', 'aria-labelledby': f.type ? id + '_content' : id + '_title', 'class' : (ed.settings.inlinepopups_skin || 'clearlooks2') + (tinymce.isIE && window.getSelection ? ' ie9' : ''), style : 'width:100px;height:100px'},
['div', {id : id + '_wrapper', 'class' : 'mceWrapper' + opt},
- ['div', {id : id + '_top', 'class' : 'mceTop'},
+ ['div', {id : id + '_top', 'class' : 'mceTop'},
['div', {'class' : 'mceLeft'}],
['div', {'class' : 'mceCenter'}],
['div', {'class' : 'mceRight'}],
['span', {id : id + '_title'}, f.title || '']
],
- ['div', {id : id + '_middle', 'class' : 'mceMiddle'},
+ ['div', {id : id + '_middle', 'class' : 'mceMiddle'},
['div', {id : id + '_left', 'class' : 'mceLeft', tabindex : '0'}],
['span', {id : id + '_content'}],
['div', {id : id + '_right', 'class' : 'mceRight', tabindex : '0'}]
@@ -188,7 +188,7 @@
DOM.add(id + '_middle', 'div', {'class' : 'mceIcon'});
DOM.setHTML(id + '_content', f.content.replace('\n', '<br />'));
-
+
Event.add(id, 'keyup', function(evt) {
var VK_ESCAPE = 27;
if (evt.keyCode === VK_ESCAPE) {
@@ -268,7 +268,7 @@
}
}
});
-
+
// Make sure the tab order loops within the dialog.
Event.add([id + '_left', id + '_right'], 'focus', function(evt) {
var iframe = DOM.get(id + '_ifr');
@@ -284,7 +284,7 @@
DOM.get(id + '_ok').focus();
}
});
-
+
// Add window
w = t.windows[id] = {
id : id,
@@ -341,7 +341,7 @@
DOM.removeClass(t.lastId, 'mceFocus');
DOM.addClass(id, 'mceFocus');
t.lastId = id;
-
+
if (w.focussedElement) {
w.focussedElement.focus();
} else if (DOM.get(id + '_ok')) {
@@ -486,7 +486,7 @@
dw = v;
}
-
+
if (dh < (v = w.features.min_height - sz.h)) {
if (dy !== 0)
dy += dh - v;
@@ -505,7 +505,7 @@
if (dx + dy !== 0) {
if (sx + dx < 0)
dx = 0;
-
+
if (sy + dy < 0)
dy = 0;
@@ -567,7 +567,7 @@
t.focus(fw.id);
}
},
-
+
// Find front most window
_frontWindow : function() {
var fw, ix = 0;
diff --git a/program/js/tiny_mce/plugins/media/js/media.js b/program/js/tiny_mce/plugins/media/js/media.js
index f6a081a63..89cea2a41 100644
--- a/program/js/tiny_mce/plugins/media/js/media.js
+++ b/program/js/tiny_mce/plugins/media/js/media.js
@@ -295,30 +295,40 @@
} else {
src = getVal("src");
- // YouTube *NEW*
- if (src.match(/youtu.be\/[a-z1-9.-_]+/)) {
+ // YouTube Embed
+ if (src.match(/youtube\.com\/embed\/\w+/)) {
data.width = 425;
data.height = 350;
data.params.frameborder = '0';
data.type = 'iframe';
- src = 'http://www.youtube.com/embed/' + src.match(/youtu.be\/([a-z1-9.-_]+)/)[1];
setVal('src', src);
setVal('media_type', data.type);
- }
+ } else {
+ // YouTube *NEW*
+ if (src.match(/youtu\.be\/[a-z1-9.-_]+/)) {
+ data.width = 425;
+ data.height = 350;
+ data.params.frameborder = '0';
+ data.type = 'iframe';
+ src = 'http://www.youtube.com/embed/' + src.match(/youtu.be\/([a-z1-9.-_]+)/)[1];
+ setVal('src', src);
+ setVal('media_type', data.type);
+ }
- // YouTube
- if (src.match(/youtube.com(.+)v=([^&]+)/)) {
- data.width = 425;
- data.height = 350;
- data.params.frameborder = '0';
- data.type = 'iframe';
- src = 'http://www.youtube.com/embed/' + src.match(/v=([^&]+)/)[1];
- setVal('src', src);
- setVal('media_type', data.type);
+ // YouTube
+ if (src.match(/youtube\.com(.+)v=([^&]+)/)) {
+ data.width = 425;
+ data.height = 350;
+ data.params.frameborder = '0';
+ data.type = 'iframe';
+ src = 'http://www.youtube.com/embed/' + src.match(/v=([^&]+)/)[1];
+ setVal('src', src);
+ setVal('media_type', data.type);
+ }
}
// Google video
- if (src.match(/video.google.com(.+)docid=([^&]+)/)) {
+ if (src.match(/video\.google\.com(.+)docid=([^&]+)/)) {
data.width = 425;
data.height = 326;
data.type = 'flash';
@@ -328,7 +338,7 @@
}
// Vimeo
- if (src.match(/vimeo.com\/([0-9]+)/)) {
+ if (src.match(/vimeo\.com\/([0-9]+)/)) {
data.width = 425;
data.height = 350;
data.params.frameborder = '0';
@@ -339,7 +349,7 @@
}
// stream.cz
- if (src.match(/stream.cz\/((?!object).)*\/([0-9]+)/)) {
+ if (src.match(/stream\.cz\/((?!object).)*\/([0-9]+)/)) {
data.width = 425;
data.height = 350;
data.params.frameborder = '0';
@@ -350,7 +360,7 @@
}
// Google maps
- if (src.match(/maps.google.([a-z]{2,3})\/maps\/(.+)msid=(.+)/)) {
+ if (src.match(/maps\.google\.([a-z]{2,3})\/maps\/(.+)msid=(.+)/)) {
data.width = 425;
data.height = 350;
data.params.frameborder = '0';
diff --git a/program/js/tiny_mce/plugins/media/langs/en_dlg.js b/program/js/tiny_mce/plugins/media/langs/en_dlg.js
index b247f85cd..ecef3a801 100644
--- a/program/js/tiny_mce/plugins/media/langs/en_dlg.js
+++ b/program/js/tiny_mce/plugins/media/langs/en_dlg.js
@@ -1 +1 @@
-tinyMCE.addI18n('en.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert/Edit Embedded Media","align_top_left":"Top Left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed RTSP resources should be added to the QT Source field under the Advanced tab.\nYou should also add a non-streamed version to the Source field.",qtsrc:"QT Source",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch Style",scriptcallbacks:"Script Callbacks","align_top_right":"Top Right",uimode:"UI Mode",rate:"Rate",playcount:"Play Count",defaultframe:"Default Frame",currentposition:"Current Position",currentmarker:"Current Marker",captioningid:"Captioning ID",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless Video",stretchtofit:"Stretch to Fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Full Screen",enabled:"Enabled",autostart:"Auto Start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke Speed",href:"HREF",endtime:"End Time",starttime:"Start Time",enablejavascript:"Enable JavaScript",correction:"No Correction",targetcache:"Target Cache",playeveryframe:"Play Every Frame",kioskmode:"Kiosk Mode",controller:"Controller",menu:"Show Menu",loop:"Loop",play:"Auto Play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"ID",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain Proportions",controls:"Controls",numloop:"Num Loops",console:"Console",cache:"Cache",autohref:"Auto HREF",liveconnect:"SWLiveConnect",flashvars:"Flash Vars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No Java",maintainaspect:"Maintain Aspect",imagestatus:"Image Status",center:"Center",autogotourl:"Auto Goto URL","shockwave_options":"Shockwave Options","rmp_options":"Real Media Player Options","wmp_options":"Windows Media Player Options","qt_options":"QuickTime Options","flash_options":"Flash Options",hidden:"Hidden","align_bottom_left":"Bottom Left","align_bottom_right":"Bottom Right",flash:"",quicktime:"","embedded_audio_options":"Embedded Audio Options",windowsmedia:"",realmedia:"",shockwave:"",audio:"",video:"","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide",iframe:"",embeddedaudio:""}); \ No newline at end of file
+tinyMCE.addI18n('en.media_dlg',{list:"List",file:"File/URL",advanced:"Advanced",general:"General",title:"Insert/Edit Embedded Media","align_top_left":"Top Left","align_center":"Center","align_left":"Left","align_bottom":"Bottom","align_right":"Right","align_top":"Top","qt_stream_warn":"Streamed RTSP resources should be added to the QT Source field under the Advanced tab.\nYou should also add a non-streamed version to the Source field.",qtsrc:"QT Source",progress:"Progress",sound:"Sound",swstretchvalign:"Stretch V-Align",swstretchhalign:"Stretch H-Align",swstretchstyle:"Stretch Style",scriptcallbacks:"Script Callbacks","align_top_right":"Top Right",uimode:"UI Mode",rate:"Rate",playcount:"Play Count",defaultframe:"Default Frame",currentposition:"Current Position",currentmarker:"Current Marker",captioningid:"Captioning ID",baseurl:"Base URL",balance:"Balance",windowlessvideo:"Windowless Video",stretchtofit:"Stretch to Fit",mute:"Mute",invokeurls:"Invoke URLs",fullscreen:"Full Screen",enabled:"Enabled",autostart:"Auto Start",volume:"Volume",target:"Target",qtsrcchokespeed:"Choke Speed",href:"HREF",endtime:"End Time",starttime:"Start Time",enablejavascript:"Enable JavaScript",correction:"No Correction",targetcache:"Target Cache",playeveryframe:"Play Every Frame",kioskmode:"Kiosk Mode",controller:"Controller",menu:"Show Menu",loop:"Loop",play:"Auto Play",hspace:"H-Space",vspace:"V-Space","class_name":"Class",name:"Name",id:"ID",type:"Type",size:"Dimensions",preview:"Preview","constrain_proportions":"Constrain Proportions",controls:"Controls",numloop:"Num Loops",console:"Console",cache:"Cache",autohref:"Auto HREF",liveconnect:"SWLiveConnect",flashvars:"Flash Vars",base:"Base",bgcolor:"Background",wmode:"WMode",salign:"SAlign",align:"Align",scale:"Scale",quality:"Quality",shuffle:"Shuffle",prefetch:"Prefetch",nojava:"No Java",maintainaspect:"Maintain Aspect",imagestatus:"Image Status",center:"Center",autogotourl:"Auto Goto URL","shockwave_options":"Shockwave Options","rmp_options":"Real Media Player Options","wmp_options":"Windows Media Player Options","qt_options":"QuickTime Options","flash_options":"Flash Options",hidden:"Hidden","align_bottom_left":"Bottom Left","align_bottom_right":"Bottom Right","html5_video_options":"HTML5 Video Options",altsource1:"Alternative source 1",altsource2:"Alternative source 2",preload:"Preload",poster:"Poster",source:"Source","html5_audio_options":"Audio Options","preload_none":"Don\'t Preload","preload_metadata":"Preload video metadata","preload_auto":"Let user\'s browser decide", "embedded_audio_options":"Embedded Audio Options", video:"HTML5 Video", audio:"HTML5 Audio", flash:"Flash", quicktime:"QuickTime", shockwave:"Shockwave", windowsmedia:"Windows Media", realmedia:"Real Media", iframe:"Iframe", embeddedaudio:"Embedded Audio" });
diff --git a/program/js/tiny_mce/plugins/paste/editor_plugin.js b/program/js/tiny_mce/plugins/paste/editor_plugin.js
index be7eee8f1..f69f263f9 100644
--- a/program/js/tiny_mce/plugins/paste/editor_plugin.js
+++ b/program/js/tiny_mce/plugins/paste/editor_plugin.js
@@ -1 +1 @@
-(function(){var c=tinymce.each,a={paste_auto_cleanup_on_paste:true,paste_enable_default_filters:true,paste_block_drop:false,paste_retain_style_properties:"none",paste_strip_class_attributes:"mso",paste_remove_spans:false,paste_remove_styles:false,paste_remove_styles_if_webkit:true,paste_convert_middot_lists:true,paste_convert_headers_to_strong:false,paste_dialog_width:"450",paste_dialog_height:"400",paste_text_use_dialog:false,paste_text_sticky:false,paste_text_sticky_default:false,paste_text_notifyalways:false,paste_text_linebreaktype:"combined",paste_text_replacements:[[/\u2026/g,"..."],[/[\x93\x94\u201c\u201d]/g,'"'],[/[\x60\x91\x92\u2018\u2019]/g,"'"]]};function b(d,e){return d.getParam(e,a[e])}tinymce.create("tinymce.plugins.PastePlugin",{init:function(d,e){var f=this;f.editor=d;f.url=e;f.onPreProcess=new tinymce.util.Dispatcher(f);f.onPostProcess=new tinymce.util.Dispatcher(f);f.onPreProcess.add(f._preProcess);f.onPostProcess.add(f._postProcess);f.onPreProcess.add(function(i,j){d.execCallback("paste_preprocess",i,j)});f.onPostProcess.add(function(i,j){d.execCallback("paste_postprocess",i,j)});d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){return false}});d.pasteAsPlainText=b(d,"paste_text_sticky_default");function h(l,j){var k=d.dom,i;f.onPreProcess.dispatch(f,l);l.node=k.create("div",0,l.content);if(tinymce.isGecko){i=d.selection.getRng(true);if(i.startContainer==i.endContainer&&i.startContainer.nodeType==3){if(l.node.childNodes.length===1&&/^(p|h[1-6]|pre)$/i.test(l.node.firstChild.nodeName)&&l.content.indexOf("__MCE_ITEM__")===-1){k.remove(l.node.firstChild,true)}}}f.onPostProcess.dispatch(f,l);l.content=d.serializer.serialize(l.node,{getInner:1,forced_root_block:""});if((!j)&&(d.pasteAsPlainText)){f._insertPlainText(l.content);if(!b(d,"paste_text_sticky")){d.pasteAsPlainText=false;d.controlManager.setActive("pastetext",false)}}else{f._insert(l.content)}}d.addCommand("mceInsertClipboardContent",function(i,j){h(j,true)});if(!b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(j,i){var k=tinymce.util.Cookie;d.pasteAsPlainText=!d.pasteAsPlainText;d.controlManager.setActive("pastetext",d.pasteAsPlainText);if((d.pasteAsPlainText)&&(!k.get("tinymcePasteText"))){if(b(d,"paste_text_sticky")){d.windowManager.alert(d.translate("paste.plaintext_mode_sticky"))}else{d.windowManager.alert(d.translate("paste.plaintext_mode"))}if(!b(d,"paste_text_notifyalways")){k.set("tinymcePasteText","1",new Date(new Date().getFullYear()+1,12,31))}}})}d.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});d.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"});function g(s){var l,p,j,t,k=d.selection,o=d.dom,q=d.getBody(),i,r;if(s.clipboardData||o.doc.dataTransfer){r=(s.clipboardData||o.doc.dataTransfer).getData("Text");if(d.pasteAsPlainText){s.preventDefault();h({content:o.encode(r).replace(/\r?\n/g,"<br />")});return}}if(o.get("_mcePaste")){return}l=o.add(q,"div",{id:"_mcePaste","class":"mcePaste","data-mce-bogus":"1"},"\uFEFF\uFEFF");if(q!=d.getDoc().body){i=o.getPos(d.selection.getStart(),q).y}else{i=q.scrollTop+o.getViewPort(d.getWin()).y}o.setStyles(l,{position:"absolute",left:tinymce.isGecko?-40:0,top:i-25,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){t=k.getRng();j=o.doc.body.createTextRange();j.moveToElementText(l);j.execCommand("Paste");o.remove(l);if(l.innerHTML==="\uFEFF\uFEFF"){d.execCommand("mcePasteWord");s.preventDefault();return}k.setRng(t);k.setContent("");setTimeout(function(){h({content:l.innerHTML})},0);return tinymce.dom.Event.cancel(s)}else{function m(n){n.preventDefault()}o.bind(d.getDoc(),"mousedown",m);o.bind(d.getDoc(),"keydown",m);p=d.selection.getRng();l=l.firstChild;j=d.getDoc().createRange();j.setStart(l,0);j.setEnd(l,2);k.setRng(j);window.setTimeout(function(){var u="",n;if(!o.select("div.mcePaste > div.mcePaste").length){n=o.select("div.mcePaste");c(n,function(w){var v=w.firstChild;if(v&&v.nodeName=="DIV"&&v.style.marginTop&&v.style.backgroundColor){o.remove(v,1)}c(o.select("span.Apple-style-span",w),function(x){o.remove(x,1)});c(o.select("br[data-mce-bogus]",w),function(x){o.remove(x)});if(w.parentNode.className!="mcePaste"){u+=w.innerHTML}})}else{u="<p>"+o.encode(r).replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br />")+"</p>"}c(o.select("div.mcePaste"),function(v){o.remove(v)});if(p){k.setRng(p)}h({content:u});o.unbind(d.getDoc(),"mousedown",m);o.unbind(d.getDoc(),"keydown",m)},0)}}if(b(d,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){g(j)}})}else{d.onPaste.addToTop(function(i,j){return g(j)})}}d.onInit.add(function(){d.controlManager.setActive("pastetext",d.pasteAsPlainText);if(b(d,"paste_block_drop")){d.dom.bind(d.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(i){i.preventDefault();i.stopPropagation();return false})}});f._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(g,e){var k=this.editor,j=e.content,p=tinymce.grep,n=tinymce.explode,f=tinymce.trim,l,i;function d(h){c(h,function(o){if(o.constructor==RegExp){j=j.replace(o,"")}else{j=j.replace(o[0],o[1])}})}if(k.settings.paste_enable_default_filters==false){return}if(tinymce.isIE&&document.documentMode>=9&&/<(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)/.test(e.content)){d([[/(?:<br>&nbsp;[\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br>&nbsp;[\s\r\n]+|<br>)*/g,"$1"]]);d([[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(j)||e.wordContent){e.wordContent=true;d([/^\s*(&nbsp;)+/gi,/(&nbsp;|<br[^>]*>)+\s*$/gi]);if(b(k,"paste_convert_headers_to_strong")){j=j.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"<p><strong>$1</strong></p>")}if(b(k,"paste_convert_middot_lists")){d([[/<!--\[if !supportLists\]-->/gi,"$&__MCE_ITEM__"],[/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"],[/(<p[^>]+(?:MsoListParagraph)[^>]+>)/gi,"$1__MCE_ITEM__"]])}d([/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\u00a0"]]);do{l=j.length;j=j.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(l!=j.length);if(b(k,"paste_retain_style_properties").replace(/^none$/i,"").length==0){j=j.replace(/<\/?span[^>]*>/gi,"")}else{d([[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(t,h,r){var u=[],o=0,q=n(f(r).replace(/&quot;/gi,"'"),";");c(q,function(s){var w,y,z=n(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":u[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":u[o++]="text-align:"+y;return;case"vert-align":u[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":u[o++]="color:"+y;return;case"mso-background":case"mso-highlight":u[o++]="background:"+y;return;case"mso-default-height":u[o++]="min-height:"+x(y);return;case"mso-default-width":u[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":u[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){u[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){u[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}u[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+u.join(";")+'"'}else{return h}}]])}}if(b(k,"paste_convert_headers_to_strong")){d([[/<h[1-6][^>]*>/gi,"<p><strong>"],[/<\/h[1-6][^>]*>/gi,"</strong></p>"]])}d([[/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi,""]]);i=b(k,"paste_strip_class_attributes");if(i!=="none"){function m(q,o){if(i==="all"){return""}var h=p(n(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(r){return(/^(?!mso)/i.test(r))});return h.length?' class="'+h.join(" ")+'"':""}j=j.replace(/ class="([^"]+)"/gi,m);j=j.replace(/ class=([\-\w]+)/gi,m)}if(b(k,"paste_remove_spans")){j=j.replace(/<\/?span[^>]*>/gi,"")}e.content=j},_postProcess:function(g,i){var f=this,e=f.editor,h=e.dom,d;if(e.settings.paste_enable_default_filters==false){return}if(i.wordContent){c(h.select("a",i.node),function(j){if(!j.href||j.href.indexOf("#_Toc")!=-1){h.remove(j,1)}});if(b(e,"paste_convert_middot_lists")){f._convertLists(g,i)}d=b(e,"paste_retain_style_properties");if((tinymce.is(d,"string"))&&(d!=="all")&&(d!=="*")){d=tinymce.explode(d.replace(/^none$/i,""));c(h.select("*",i.node),function(m){var n={},k=0,l,o,j;if(d){for(l=0;l<d.length;l++){o=d[l];j=h.getStyle(m,o);if(j){n[o]=j;k++}}}h.setAttrib(m,"style","");if(d&&k>0){h.setStyles(m,n)}else{if(m.nodeName=="SPAN"&&!m.className){h.remove(m,true)}}})}}if(b(e,"paste_remove_styles")||(b(e,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(h.select("*[style]",i.node),function(j){j.removeAttribute("style");j.removeAttribute("data-mce-style")})}else{if(tinymce.isWebKit){c(h.select("*",i.node),function(j){j.removeAttribute("data-mce-style")})}}},_convertLists:function(g,e){var i=g.editor.dom,h,l,d=-1,f,m=[],k,j;c(i.select("p",e.node),function(t){var q,u="",s,r,n,o;for(q=t.firstChild;q&&q.nodeType==3;q=q.nextSibling){u+=q.nodeValue}u=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/&nbsp;/g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(u)){s="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(u)){s="ol"}if(s){f=parseFloat(t.style.marginLeft||0);if(f>d){m.push(f)}if(!h||s!=k){h=i.create(s);i.insertAfter(h,t)}else{if(f>d){h=l.appendChild(i.create(s))}else{if(f<d){n=tinymce.inArray(m,f);o=i.getParents(h.parentNode,s);h=o[o.length-1-n]||h}}}c(i.select("span",t),function(v){var p=v.innerHTML.replace(/<\/?\w+[^>]*>/gi,"");if(s=="ul"&&/^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(p)){i.remove(v)}else{if(/^__MCE_ITEM__[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(p)){i.remove(v)}}});r=t.innerHTML;if(s=="ul"){r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*(&nbsp;|\u00a0)+\s*/,"")}else{r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/,"")}l=h.appendChild(i.create("li",0,r));i.remove(t);d=f;k=s}else{h=d=0}});j=e.node.innerHTML;if(j.indexOf("__MCE_ITEM__")!=-1){e.node.innerHTML=j.replace(/__MCE_ITEM__/g,"")}},_insert:function(f,d){var e=this.editor,g=e.selection.getRng();if(!e.selection.isCollapsed()&&g.startContainer!=g.endContainer){e.getDoc().execCommand("Delete",false,null)}e.execCommand("mceInsertContent",false,f,{skip_undo:d})},_insertPlainText:function(g){var d=this.editor,e=b(d,"paste_text_linebreaktype"),i=b(d,"paste_text_replacements"),f=tinymce.is;function h(j){c(j,function(k){if(k.constructor==RegExp){g=g.replace(k,"")}else{g=g.replace(k[0],k[1])}})}if((typeof(g)==="string")&&(g.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(g)){h([/[\n\r]+/g])}else{h([/\r+/g])}h([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/<br[^>]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*<t[dh][^>]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/&nbsp;/gi," "],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"],[/\n{3,}/g,"\n\n"]]);g=d.dom.decode(tinymce.html.Entities.encodeRaw(g));if(f(i,"array")){h(i)}else{if(f(i,"string")){h(new RegExp(i,"gi"))}}if(e=="none"){h([[/\n+/g," "]])}else{if(e=="br"){h([[/\n/g,"<br />"]])}else{if(e=="p"){h([[/\n+/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"]])}else{h([[/\n\n/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"],[/\n/g,"<br />"]])}}}d.execCommand("mceInsertContent",false,g)}},_legacySupport:function(){var e=this,d=e.editor;d.addCommand("mcePasteWord",function(){d.windowManager.open({file:e.url+"/pasteword.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})});if(b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(){d.windowManager.open({file:e.url+"/pastetext.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})})}d.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})(); \ No newline at end of file
+(function(){var c=tinymce.each,a={paste_auto_cleanup_on_paste:true,paste_enable_default_filters:true,paste_block_drop:false,paste_retain_style_properties:"none",paste_strip_class_attributes:"mso",paste_remove_spans:false,paste_remove_styles:false,paste_remove_styles_if_webkit:true,paste_convert_middot_lists:true,paste_convert_headers_to_strong:false,paste_dialog_width:"450",paste_dialog_height:"400",paste_max_consecutive_linebreaks:2,paste_text_use_dialog:false,paste_text_sticky:false,paste_text_sticky_default:false,paste_text_notifyalways:false,paste_text_linebreaktype:"combined",paste_text_replacements:[[/\u2026/g,"..."],[/[\x93\x94\u201c\u201d]/g,'"'],[/[\x60\x91\x92\u2018\u2019]/g,"'"]]};function b(d,e){return d.getParam(e,a[e])}tinymce.create("tinymce.plugins.PastePlugin",{init:function(d,e){var f=this;f.editor=d;f.url=e;f.onPreProcess=new tinymce.util.Dispatcher(f);f.onPostProcess=new tinymce.util.Dispatcher(f);f.onPreProcess.add(f._preProcess);f.onPostProcess.add(f._postProcess);f.onPreProcess.add(function(i,j){d.execCallback("paste_preprocess",i,j)});f.onPostProcess.add(function(i,j){d.execCallback("paste_postprocess",i,j)});d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){return false}});d.pasteAsPlainText=b(d,"paste_text_sticky_default");function h(l,j){var k=d.dom,i;f.onPreProcess.dispatch(f,l);l.node=k.create("div",0,l.content);if(tinymce.isGecko){i=d.selection.getRng(true);if(i.startContainer==i.endContainer&&i.startContainer.nodeType==3){if(l.node.childNodes.length===1&&/^(p|h[1-6]|pre)$/i.test(l.node.firstChild.nodeName)&&l.content.indexOf("__MCE_ITEM__")===-1){k.remove(l.node.firstChild,true)}}}f.onPostProcess.dispatch(f,l);l.content=d.serializer.serialize(l.node,{getInner:1,forced_root_block:""});if((!j)&&(d.pasteAsPlainText)){f._insertPlainText(l.content);if(!b(d,"paste_text_sticky")){d.pasteAsPlainText=false;d.controlManager.setActive("pastetext",false)}}else{f._insert(l.content)}}d.addCommand("mceInsertClipboardContent",function(i,j){h(j,true)});if(!b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(j,i){var k=tinymce.util.Cookie;d.pasteAsPlainText=!d.pasteAsPlainText;d.controlManager.setActive("pastetext",d.pasteAsPlainText);if((d.pasteAsPlainText)&&(!k.get("tinymcePasteText"))){if(b(d,"paste_text_sticky")){d.windowManager.alert(d.translate("paste.plaintext_mode_sticky"))}else{d.windowManager.alert(d.translate("paste.plaintext_mode"))}if(!b(d,"paste_text_notifyalways")){k.set("tinymcePasteText","1",new Date(new Date().getFullYear()+1,12,31))}}})}d.addButton("pastetext",{title:"paste.paste_text_desc",cmd:"mcePasteText"});d.addButton("selectall",{title:"paste.selectall_desc",cmd:"selectall"});function g(s){var l,p,j,t,k=d.selection,o=d.dom,q=d.getBody(),i,r;if(s.clipboardData||o.doc.dataTransfer){r=(s.clipboardData||o.doc.dataTransfer).getData("Text");if(d.pasteAsPlainText){s.preventDefault();h({content:o.encode(r).replace(/\r?\n/g,"<br />")});return}}if(o.get("_mcePaste")){return}l=o.add(q,"div",{id:"_mcePaste","class":"mcePaste","data-mce-bogus":"1"},"\uFEFF\uFEFF");if(q!=d.getDoc().body){i=o.getPos(d.selection.getStart(),q).y}else{i=q.scrollTop+o.getViewPort(d.getWin()).y}o.setStyles(l,{position:"absolute",left:tinymce.isGecko?-40:0,top:i-25,width:1,height:1,overflow:"hidden"});if(tinymce.isIE){t=k.getRng();j=o.doc.body.createTextRange();j.moveToElementText(l);j.execCommand("Paste");o.remove(l);if(l.innerHTML==="\uFEFF\uFEFF"){d.execCommand("mcePasteWord");s.preventDefault();return}k.setRng(t);k.setContent("");setTimeout(function(){h({content:l.innerHTML})},0);return tinymce.dom.Event.cancel(s)}else{function m(n){n.preventDefault()}o.bind(d.getDoc(),"mousedown",m);o.bind(d.getDoc(),"keydown",m);p=d.selection.getRng();l=l.firstChild;j=d.getDoc().createRange();j.setStart(l,0);j.setEnd(l,2);k.setRng(j);window.setTimeout(function(){var u="",n;if(!o.select("div.mcePaste > div.mcePaste").length){n=o.select("div.mcePaste");c(n,function(w){var v=w.firstChild;if(v&&v.nodeName=="DIV"&&v.style.marginTop&&v.style.backgroundColor){o.remove(v,1)}c(o.select("span.Apple-style-span",w),function(x){o.remove(x,1)});c(o.select("br[data-mce-bogus]",w),function(x){o.remove(x)});if(w.parentNode.className!="mcePaste"){u+=w.innerHTML}})}else{u="<p>"+o.encode(r).replace(/\r?\n\r?\n/g,"</p><p>").replace(/\r?\n/g,"<br />")+"</p>"}c(o.select("div.mcePaste"),function(v){o.remove(v)});if(p){k.setRng(p)}h({content:u});o.unbind(d.getDoc(),"mousedown",m);o.unbind(d.getDoc(),"keydown",m)},0)}}if(b(d,"paste_auto_cleanup_on_paste")){if(tinymce.isOpera||/Firefox\/2/.test(navigator.userAgent)){d.onKeyDown.addToTop(function(i,j){if(((tinymce.isMac?j.metaKey:j.ctrlKey)&&j.keyCode==86)||(j.shiftKey&&j.keyCode==45)){g(j)}})}else{d.onPaste.addToTop(function(i,j){return g(j)})}}d.onInit.add(function(){d.controlManager.setActive("pastetext",d.pasteAsPlainText);if(b(d,"paste_block_drop")){d.dom.bind(d.getBody(),["dragend","dragover","draggesture","dragdrop","drop","drag"],function(i){i.preventDefault();i.stopPropagation();return false})}});f._legacySupport()},getInfo:function(){return{longname:"Paste text/word",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/paste",version:tinymce.majorVersion+"."+tinymce.minorVersion}},_preProcess:function(g,e){var k=this.editor,j=e.content,p=tinymce.grep,n=tinymce.explode,f=tinymce.trim,l,i;function d(h){c(h,function(o){if(o.constructor==RegExp){j=j.replace(o,"")}else{j=j.replace(o[0],o[1])}})}if(k.settings.paste_enable_default_filters==false){return}if(tinymce.isIE&&document.documentMode>=9&&/<(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)/.test(e.content)){d([[/(?:<br>&nbsp;[\s\r\n]+|<br>)*(<\/?(h[1-6r]|p|div|address|pre|form|table|tbody|thead|tfoot|th|tr|td|li|ol|ul|caption|blockquote|center|dl|dt|dd|dir|fieldset)[^>]*>)(?:<br>&nbsp;[\s\r\n]+|<br>)*/g,"$1"]]);d([[/<br><br>/g,"<BR><BR>"],[/<br>/g," "],[/<BR><BR>/g,"<br>"]])}if(/class="?Mso|style="[^"]*\bmso-|w:WordDocument/i.test(j)||e.wordContent){e.wordContent=true;d([/^\s*(&nbsp;)+/gi,/(&nbsp;|<br[^>]*>)+\s*$/gi]);if(b(k,"paste_convert_headers_to_strong")){j=j.replace(/<p [^>]*class="?MsoHeading"?[^>]*>(.*?)<\/p>/gi,"<p><strong>$1</strong></p>")}if(b(k,"paste_convert_middot_lists")){d([[/<!--\[if !supportLists\]-->/gi,"$&__MCE_ITEM__"],[/(<span[^>]+(?:mso-list:|:\s*symbol)[^>]+>)/gi,"$1__MCE_ITEM__"],[/(<p[^>]+(?:MsoListParagraph)[^>]+>)/gi,"$1__MCE_ITEM__"]])}d([/<!--[\s\S]+?-->/gi,/<(!|script[^>]*>.*?<\/script(?=[>\s])|\/?(\?xml(:\w+)?|img|meta|link|style|\w:\w+)(?=[\s\/>]))[^>]*>/gi,[/<(\/?)s>/gi,"<$1strike>"],[/&nbsp;/gi,"\u00a0"]]);do{l=j.length;j=j.replace(/(<?!(ol|ul)[^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1");j=j.replace(/(<(ol|ul)[^>]*\s)(?:id|name|language|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi,"$1")}while(l!=j.length);if(b(k,"paste_retain_style_properties").replace(/^none$/i,"").length==0){j=j.replace(/<\/?span[^>]*>/gi,"")}else{d([[/<span\s+style\s*=\s*"\s*mso-spacerun\s*:\s*yes\s*;?\s*"\s*>([\s\u00a0]*)<\/span>/gi,function(o,h){return(h.length>0)?h.replace(/./," ").slice(Math.floor(h.length/2)).split("").join("\u00a0"):""}],[/(<[a-z][^>]*)\sstyle="([^"]*)"/gi,function(t,h,r){var u=[],o=0,q=n(f(r).replace(/&quot;/gi,"'"),";");c(q,function(s){var w,y,z=n(s,":");function x(A){return A+((A!=="0")&&(/\d$/.test(A)))?"px":""}if(z.length==2){w=z[0].toLowerCase();y=z[1].toLowerCase();switch(w){case"mso-padding-alt":case"mso-padding-top-alt":case"mso-padding-right-alt":case"mso-padding-bottom-alt":case"mso-padding-left-alt":case"mso-margin-alt":case"mso-margin-top-alt":case"mso-margin-right-alt":case"mso-margin-bottom-alt":case"mso-margin-left-alt":case"mso-table-layout-alt":case"mso-height":case"mso-width":case"mso-vertical-align-alt":u[o++]=w.replace(/^mso-|-alt$/g,"")+":"+x(y);return;case"horiz-align":u[o++]="text-align:"+y;return;case"vert-align":u[o++]="vertical-align:"+y;return;case"font-color":case"mso-foreground":u[o++]="color:"+y;return;case"mso-background":case"mso-highlight":u[o++]="background:"+y;return;case"mso-default-height":u[o++]="min-height:"+x(y);return;case"mso-default-width":u[o++]="min-width:"+x(y);return;case"mso-padding-between-alt":u[o++]="border-collapse:separate;border-spacing:"+x(y);return;case"text-line-through":if((y=="single")||(y=="double")){u[o++]="text-decoration:line-through"}return;case"mso-zero-height":if(y=="yes"){u[o++]="display:none"}return}if(/^(mso|column|font-emph|lang|layout|line-break|list-image|nav|panose|punct|row|ruby|sep|size|src|tab-|table-border|text-(?!align|decor|indent|trans)|top-bar|version|vnd|word-break)/.test(w)){return}u[o++]=w+":"+z[1]}});if(o>0){return h+' style="'+u.join(";")+'"'}else{return h}}]])}}if(b(k,"paste_convert_headers_to_strong")){d([[/<h[1-6][^>]*>/gi,"<p><strong>"],[/<\/h[1-6][^>]*>/gi,"</strong></p>"]])}d([[/Version:[\d.]+\nStartHTML:\d+\nEndHTML:\d+\nStartFragment:\d+\nEndFragment:\d+/gi,""]]);i=b(k,"paste_strip_class_attributes");if(i!=="none"){function m(q,o){if(i==="all"){return""}var h=p(n(o.replace(/^(["'])(.*)\1$/,"$2")," "),function(r){return(/^(?!mso)/i.test(r))});return h.length?' class="'+h.join(" ")+'"':""}j=j.replace(/ class="([^"]+)"/gi,m);j=j.replace(/ class=([\-\w]+)/gi,m)}if(b(k,"paste_remove_spans")){j=j.replace(/<\/?span[^>]*>/gi,"")}e.content=j},_postProcess:function(g,i){var f=this,e=f.editor,h=e.dom,d;if(e.settings.paste_enable_default_filters==false){return}if(i.wordContent){c(h.select("a",i.node),function(j){if(!j.href||j.href.indexOf("#_Toc")!=-1){h.remove(j,1)}});if(b(e,"paste_convert_middot_lists")){f._convertLists(g,i)}d=b(e,"paste_retain_style_properties");if((tinymce.is(d,"string"))&&(d!=="all")&&(d!=="*")){d=tinymce.explode(d.replace(/^none$/i,""));c(h.select("*",i.node),function(m){var n={},k=0,l,o,j;if(d){for(l=0;l<d.length;l++){o=d[l];j=h.getStyle(m,o);if(j){n[o]=j;k++}}}h.setAttrib(m,"style","");if(d&&k>0){h.setStyles(m,n)}else{if(m.nodeName=="SPAN"&&!m.className){h.remove(m,true)}}})}}if(b(e,"paste_remove_styles")||(b(e,"paste_remove_styles_if_webkit")&&tinymce.isWebKit)){c(h.select("*[style]",i.node),function(j){j.removeAttribute("style");j.removeAttribute("data-mce-style")})}else{if(tinymce.isWebKit){c(h.select("*",i.node),function(j){j.removeAttribute("data-mce-style")})}}},_convertLists:function(g,e){var i=g.editor.dom,h,l,d=-1,f,m=[],k,j;c(i.select("p",e.node),function(t){var q,u="",s,r,n,o;for(q=t.firstChild;q&&q.nodeType==3;q=q.nextSibling){u+=q.nodeValue}u=t.innerHTML.replace(/<\/?\w+[^>]*>/gi,"").replace(/&nbsp;/g,"\u00a0");if(/^(__MCE_ITEM__)+[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*\u00a0*/.test(u)){s="ul"}if(/^__MCE_ITEM__\s*\w+\.\s*\u00a0+/.test(u)){s="ol"}if(s){f=parseFloat(t.style.marginLeft||0);if(f>d){m.push(f)}if(!h||s!=k){h=i.create(s);i.insertAfter(h,t)}else{if(f>d){h=l.appendChild(i.create(s))}else{if(f<d){n=tinymce.inArray(m,f);o=i.getParents(h.parentNode,s);h=o[o.length-1-n]||h}}}c(i.select("span",t),function(v){var p=v.innerHTML.replace(/<\/?\w+[^>]*>/gi,"");if(s=="ul"&&/^__MCE_ITEM__[\u2022\u00b7\u00a7\u00d8o\u25CF]/.test(p)){i.remove(v)}else{if(/^__MCE_ITEM__[\s\S]*\w+\.(&nbsp;|\u00a0)*\s*/.test(p)){i.remove(v)}}});r=t.innerHTML;if(s=="ul"){r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^[\u2022\u00b7\u00a7\u00d8o\u25CF]\s*(&nbsp;|\u00a0)+\s*/,"")}else{r=t.innerHTML.replace(/__MCE_ITEM__/g,"").replace(/^\s*\w+\.(&nbsp;|\u00a0)+\s*/,"")}l=h.appendChild(i.create("li",0,r));i.remove(t);d=f;k=s}else{h=d=0}});j=e.node.innerHTML;if(j.indexOf("__MCE_ITEM__")!=-1){e.node.innerHTML=j.replace(/__MCE_ITEM__/g,"")}},_insert:function(f,d){var e=this.editor,g=e.selection.getRng();if(!e.selection.isCollapsed()&&g.startContainer!=g.endContainer){e.getDoc().execCommand("Delete",false,null)}e.execCommand("mceInsertContent",false,f,{skip_undo:d})},_insertPlainText:function(j){var h=this.editor,f=b(h,"paste_text_linebreaktype"),k=b(h,"paste_text_replacements"),g=tinymce.is;function e(m){c(m,function(n){if(n.constructor==RegExp){j=j.replace(n,"")}else{j=j.replace(n[0],n[1])}})}if((typeof(j)==="string")&&(j.length>0)){if(/<(?:p|br|h[1-6]|ul|ol|dl|table|t[rdh]|div|blockquote|fieldset|pre|address|center)[^>]*>/i.test(j)){e([/[\n\r]+/g])}else{e([/\r+/g])}e([[/<\/(?:p|h[1-6]|ul|ol|dl|table|div|blockquote|fieldset|pre|address|center)>/gi,"\n\n"],[/<br[^>]*>|<\/tr>/gi,"\n"],[/<\/t[dh]>\s*<t[dh][^>]*>/gi,"\t"],/<[a-z!\/?][^>]*>/gi,[/&nbsp;/gi," "],[/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi,"$1"]]);var d=Number(b(h,"paste_max_consecutive_linebreaks"));if(d>-1){var l=new RegExp("\n{"+(d+1)+",}","g");var i="";while(i.length<d){i+="\n"}e([[l,i]])}j=h.dom.decode(tinymce.html.Entities.encodeRaw(j));if(g(k,"array")){e(k)}else{if(g(k,"string")){e(new RegExp(k,"gi"))}}if(f=="none"){e([[/\n+/g," "]])}else{if(f=="br"){e([[/\n/g,"<br />"]])}else{if(f=="p"){e([[/\n+/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"]])}else{e([[/\n\n/g,"</p><p>"],[/^(.*<\/p>)(<p>)$/,"<p>$1"],[/\n/g,"<br />"]])}}}h.execCommand("mceInsertContent",false,j)}},_legacySupport:function(){var e=this,d=e.editor;d.addCommand("mcePasteWord",function(){d.windowManager.open({file:e.url+"/pasteword.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})});if(b(d,"paste_text_use_dialog")){d.addCommand("mcePasteText",function(){d.windowManager.open({file:e.url+"/pastetext.htm",width:parseInt(b(d,"paste_dialog_width")),height:parseInt(b(d,"paste_dialog_height")),inline:1})})}d.addButton("pasteword",{title:"paste.paste_word_desc",cmd:"mcePasteWord"})}});tinymce.PluginManager.add("paste",tinymce.plugins.PastePlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/paste/editor_plugin_src.js b/program/js/tiny_mce/plugins/paste/editor_plugin_src.js
index 9f1c35476..6f1734299 100644
--- a/program/js/tiny_mce/plugins/paste/editor_plugin_src.js
+++ b/program/js/tiny_mce/plugins/paste/editor_plugin_src.js
@@ -23,6 +23,7 @@
paste_convert_headers_to_strong : false,
paste_dialog_width : "450",
paste_dialog_height : "400",
+ paste_max_consecutive_linebreaks: 2,
paste_text_use_dialog : false,
paste_text_sticky : false,
paste_text_sticky_default : false,
@@ -290,7 +291,7 @@
}
}
- // Check if we should use the new auto process method
+ // Check if we should use the new auto process method
if (getParam(ed, "paste_auto_cleanup_on_paste")) {
// Is it's Opera or older FF use key handler
if (tinymce.isOpera || /Firefox\/2/.test(navigator.userAgent)) {
@@ -353,7 +354,7 @@
h = h.replace(v[0], v[1]);
});
}
-
+
if (ed.settings.paste_enable_default_filters == false) {
return;
}
@@ -412,7 +413,9 @@
// If JavaScript had a RegExp look-behind, we could have integrated this with the last process() array and got rid of the loop. But alas, it does not, so we cannot.
do {
len = h.length;
- h = h.replace(/(<[a-z][^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi, "$1");
+ // Don't remove the type attribute for lists so that non-default list types display correctly.
+ h = h.replace(/(<?!(ol|ul)[^>]*\s)(?:id|name|language|type|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi, "$1");
+ h = h.replace(/(<(ol|ul)[^>]*\s)(?:id|name|language|on\w+|\w+:\w+)=(?:"[^"]*"|\w+)\s?/gi, "$1");
} while (len != h.length);
// Remove all spans if no styles is to be retained
@@ -588,7 +591,7 @@
if (ed.settings.paste_enable_default_filters == false) {
return;
}
-
+
if (o.wordContent) {
// Remove named anchors or TOC links
each(dom.select('a', o.node), function(a) {
@@ -790,10 +793,23 @@
[/<\/t[dh]>\s*<t[dh][^>]*>/gi, "\t"], // Table cells get tabs betweem them
/<[a-z!\/?][^>]*>/gi, // Delete all remaining tags
[/&nbsp;/gi, " "], // Convert non-break spaces to regular spaces (remember, *plain text*)
- [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"],// Cool little RegExp deletes whitespace around linebreak chars.
- [/\n{3,}/g, "\n\n"] // Max. 2 consecutive linebreaks
+ [/(?:(?!\n)\s)*(\n+)(?:(?!\n)\s)*/gi, "$1"] // Cool little RegExp deletes whitespace around linebreak chars.
]);
+ var maxLinebreaks = Number(getParam(ed, "paste_max_consecutive_linebreaks"));
+ if (maxLinebreaks > -1) {
+ var maxLinebreaksRegex = new RegExp("\n{" + (maxLinebreaks + 1) + ",}", "g");
+ var linebreakReplacement = "";
+
+ while (linebreakReplacement.length < maxLinebreaks) {
+ linebreakReplacement += "\n";
+ }
+
+ process([
+ [maxLinebreaksRegex, linebreakReplacement] // Limit max consecutive linebreaks
+ ]);
+ }
+
content = ed.dom.decode(tinymce.html.Entities.encodeRaw(content));
// Perform default or custom replacements
diff --git a/program/js/tiny_mce/plugins/searchreplace/js/searchreplace.js b/program/js/tiny_mce/plugins/searchreplace/js/searchreplace.js
index 80284b9f3..eb9b6eea8 100644
--- a/program/js/tiny_mce/plugins/searchreplace/js/searchreplace.js
+++ b/program/js/tiny_mce/plugins/searchreplace/js/searchreplace.js
@@ -14,6 +14,7 @@ var SearchReplaceDialog = {
mcTabs.onChange.add(function(tab_id, panel_id) {
t.switchMode(tab_id.substring(0, tab_id.indexOf('_')));
});
+
},
switchMode : function(m) {
@@ -39,6 +40,11 @@ var SearchReplaceDialog = {
searchNext : function(a) {
var ed = tinyMCEPopup.editor, se = ed.selection, r = se.getRng(), f, m = this.lastMode, s, b, fl = 0, w = ed.getWin(), wm = ed.windowManager, fo = 0;
+ if (tinymce.isIE11 && !window.find) {
+ ed.windowManager.alert("This feature is not available in IE 11+. Upgrade TinyMCE to 4.x to get this functionallity back.");
+ return;
+ }
+
// Get input
f = document.forms[0];
s = f[m + '_panel_searchstring'].value;
diff --git a/program/js/tiny_mce/plugins/spellchecker/editor_plugin.js b/program/js/tiny_mce/plugins/spellchecker/editor_plugin.js
index 48549c923..6b57241a9 100644
--- a/program/js/tiny_mce/plugins/spellchecker/editor_plugin.js
+++ b/program/js/tiny_mce/plugins/spellchecker/editor_plugin.js
@@ -1 +1 @@
-(function(){var a=tinymce.util.JSONRequest,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.SpellcheckerPlugin",{getInfo:function(){return{longname:"Spellchecker",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker",version:tinymce.majorVersion+"."+tinymce.minorVersion}},init:function(e,f){var g=this,d;g.url=f;g.editor=e;g.rpcUrl=e.getParam("spellchecker_rpc_url","{backend}");if(g.rpcUrl=="{backend}"){if(tinymce.isIE){return}g.hasSupport=true;e.onContextMenu.addToTop(function(h,i){if(g.active){return false}})}e.addCommand("mceSpellCheck",function(){if(g.rpcUrl=="{backend}"){g.editor.getBody().spellcheck=g.active=!g.active;return}if(!g.active){e.setProgressState(1);g._sendRPC("checkWords",[g.selectedLang,g._getWords()],function(h){if(h.length>0){g.active=1;g._markWords(h);e.setProgressState(0);e.nodeChanged()}else{e.setProgressState(0);if(e.getParam("spellchecker_report_no_misspellings",true)){e.windowManager.alert("spellchecker.no_mpell")}}})}else{g._done()}});if(e.settings.content_css!==false){e.contentCSS.push(f+"/css/content.css")}e.onClick.add(g._showMenu,g);e.onContextMenu.add(g._showMenu,g);e.onBeforeGetContent.add(function(){if(g.active){g._removeWords()}});e.onNodeChange.add(function(i,h){h.setActive("spellchecker",g.active)});e.onSetContent.add(function(){g._done()});e.onBeforeGetContent.add(function(){g._done()});e.onBeforeExecCommand.add(function(h,i){if(i=="mceFullScreen"){g._done()}});g.languages={};c(e.getParam("spellchecker_languages","+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv","hash"),function(i,h){if(h.indexOf("+")===0){h=h.substring(1);g.selectedLang=i}g.languages[h]=i})},createControl:function(h,d){var f=this,g,e=f.editor;if(h=="spellchecker"){if(f.rpcUrl=="{backend}"){if(f.hasSupport){g=d.createButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f})}return g}g=d.createSplitButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f});g.onRenderMenu.add(function(j,i){i.add({title:"spellchecker.langs","class":"mceMenuItemTitle"}).setDisabled(1);c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){if(n==f.selectedLang){return}l.setSelected(1);f.selectedItem.setSelected(0);f.selectedItem=l;f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);if(n==f.selectedLang){f.selectedItem=l}})});return g}},_walk:function(i,g){var h=this.editor.getDoc(),e;if(h.createTreeWalker){e=h.createTreeWalker(i,NodeFilter.SHOW_TEXT,null,false);while((i=e.nextNode())!=null){g.call(this,i)}}else{tinymce.walk(i,g,"childNodes")}},_getSeparators:function(){var e="",d,f=this.editor.getParam("spellchecker_word_separator_chars",'\\s!"#$%&()*+,-./:;<=>?@[]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');for(d=0;d<f.length;d++){e+="\\"+f.charAt(d)}return e},_getWords:function(){var e=this.editor,g=[],d="",f={},h=[];this._walk(e.getBody(),function(i){if(i.nodeType==3){d+=i.nodeValue+" "}});if(e.getParam("spellchecker_word_pattern")){h=d.match("("+e.getParam("spellchecker_word_pattern")+")","gi")}else{d=d.replace(new RegExp("([0-9]|["+this._getSeparators()+"])","g")," ");d=tinymce.trim(d.replace(/(\s+)/g," "));h=d.split(" ")}c(h,function(i){if(!f[i]){g.push(i);f[i]=1}});return g},_removeWords:function(d){var e=this.editor,h=e.dom,g=e.selection,f=g.getRng(true);c(h.select("span").reverse(),function(i){if(i&&(h.hasClass(i,"mceItemHiddenSpellWord")||h.hasClass(i,"mceItemHidden"))){if(!d||h.decode(i.innerHTML)==d){h.remove(i,1)}}});g.setRng(f)},_markWords:function(l){var h=this.editor,g=h.dom,j=h.getDoc(),i=h.selection,d=i.getRng(true),e=[],k=l.join("|"),m=this._getSeparators(),f=new RegExp("(^|["+m+"])("+k+")(?=["+m+"]|$)","g");this._walk(h.getBody(),function(o){if(o.nodeType==3){e.push(o)}});c(e,function(t){var r,q,o,s,p=t.nodeValue;if(f.test(p)){p=g.encode(p);q=g.create("span",{"class":"mceItemHidden"});if(tinymce.isIE){p=p.replace(f,"$1<mcespell>$2</mcespell>");while((s=p.indexOf("<mcespell>"))!=-1){o=p.substring(0,s);if(o.length){r=j.createTextNode(g.decode(o));q.appendChild(r)}p=p.substring(s+10);s=p.indexOf("</mcespell>");o=p.substring(0,s);p=p.substring(s+11);q.appendChild(g.create("span",{"class":"mceItemHiddenSpellWord"},o))}if(p.length){r=j.createTextNode(g.decode(p));q.appendChild(r)}}else{q.innerHTML=p.replace(f,'$1<span class="mceItemHiddenSpellWord">$2</span>')}g.replace(q,t)}});i.setRng(d)},_showMenu:function(h,j){var i=this,h=i.editor,d=i._menu,l,k=h.dom,g=k.getViewPort(h.getWin()),f=j.target;j=0;if(!d){d=h.controlManager.createDropMenu("spellcheckermenu",{"class":"mceNoIcons"});i._menu=d}if(k.hasClass(f,"mceItemHiddenSpellWord")){d.removeAll();d.add({title:"spellchecker.wait","class":"mceMenuItemTitle"}).setDisabled(1);i._sendRPC("getSuggestions",[i.selectedLang,k.decode(f.innerHTML)],function(m){var e;d.removeAll();if(m.length>0){d.add({title:"spellchecker.sug","class":"mceMenuItemTitle"}).setDisabled(1);c(m,function(n){d.add({title:n,onclick:function(){k.replace(h.getDoc().createTextNode(n),f);i._checkDone()}})});d.addSeparator()}else{d.add({title:"spellchecker.no_sug","class":"mceMenuItemTitle"}).setDisabled(1)}if(h.getParam("show_ignore_words",true)){e=i.editor.getParam("spellchecker_enable_ignore_rpc","");d.add({title:"spellchecker.ignore_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}}});d.add({title:"spellchecker.ignore_words",onclick:function(){var n=f.innerHTML;i._removeWords(k.decode(n));i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWords",[i.selectedLang,n],function(o){h.setProgressState(0)})}}})}if(i.editor.getParam("spellchecker_enable_learn_rpc")){d.add({title:"spellchecker.learn_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();h.setProgressState(1);i._sendRPC("learnWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}})}d.update()});l=b.getPos(h.getContentAreaContainer());d.settings.offset_x=l.x;d.settings.offset_y=l.y;h.selection.select(f);l=k.getPos(f);d.showMenu(l.x,l.y+f.offsetHeight-g.y);return tinymce.dom.Event.cancel(j)}else{d.hideMenu()}},_checkDone:function(){var e=this,d=e.editor,g=d.dom,f;c(g.select("span"),function(h){if(h&&g.hasClass(h,"mceItemHiddenSpellWord")){f=true;return false}});if(!f){e._done()}},_done:function(){var d=this,e=d.active;if(d.active){d.active=0;d._removeWords();if(d._menu){d._menu.hideMenu()}if(e){d.editor.nodeChanged()}}},_sendRPC:function(e,g,d){var f=this;a.sendRPC({url:f.rpcUrl,method:e,params:g,success:d,error:function(i,h){f.editor.setProgressState(0);f.editor.windowManager.alert(i.errstr||("Error response: "+h.responseText))}})}});tinymce.PluginManager.add("spellchecker",tinymce.plugins.SpellcheckerPlugin)})(); \ No newline at end of file
+(function(){var a=tinymce.util.JSONRequest,c=tinymce.each,b=tinymce.DOM;tinymce.create("tinymce.plugins.SpellcheckerPlugin",{getInfo:function(){return{longname:"Spellchecker",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",infourl:"http://wiki.moxiecode.com/index.php/TinyMCE:Plugins/spellchecker",version:tinymce.majorVersion+"."+tinymce.minorVersion}},init:function(e,f){var g=this,d;g.url=f;g.editor=e;g.rpcUrl=e.getParam("spellchecker_rpc_url","{backend}");if(g.rpcUrl=="{backend}"){if(tinymce.isIE){return}g.hasSupport=true;e.onContextMenu.addToTop(function(h,i){if(g.active){return false}})}e.addCommand("mceSpellCheck",function(){if(g.rpcUrl=="{backend}"){g.editor.getBody().spellcheck=g.active=!g.active;return}if(!g.active){e.setProgressState(1);g._sendRPC("checkWords",[g.selectedLang,g._getWords()],function(h){if(h.length>0){g.active=1;g._markWords(h);e.setProgressState(0);e.nodeChanged()}else{e.setProgressState(0);if(e.getParam("spellchecker_report_no_misspellings",true)){e.windowManager.alert("spellchecker.no_mpell")}}})}else{g._done()}});if(e.settings.content_css!==false){e.contentCSS.push(f+"/css/content.css")}e.onClick.add(g._showMenu,g);e.onContextMenu.add(g._showMenu,g);e.onBeforeGetContent.add(function(){if(g.active){g._removeWords()}});e.onNodeChange.add(function(i,h){h.setActive("spellchecker",g.active)});e.onSetContent.add(function(){g._done()});e.onBeforeGetContent.add(function(){g._done()});e.onBeforeExecCommand.add(function(h,i){if(i=="mceFullScreen"){g._done()}});g.languages={};c(e.getParam("spellchecker_languages","+English=en,Danish=da,Dutch=nl,Finnish=fi,French=fr,German=de,Italian=it,Polish=pl,Portuguese=pt,Spanish=es,Swedish=sv","hash"),function(i,h){if(h.indexOf("+")===0){h=h.substring(1);g.selectedLang=i}g.languages[h]=i})},createControl:function(h,d){var f=this,g,e=f.editor;if(h=="spellchecker"){if(f.rpcUrl=="{backend}"){if(f.hasSupport){g=d.createButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f})}return g}g=d.createSplitButton(h,{title:"spellchecker.desc",cmd:"mceSpellCheck",scope:f});g.onRenderMenu.add(function(j,i){i.add({title:"spellchecker.langs","class":"mceMenuItemTitle"}).setDisabled(1);f.menuItems={};c(f.languages,function(n,m){var p={icon:1},l;p.onclick=function(){if(n==f.selectedLang){return}f._updateMenu(l);f.selectedLang=n};p.title=m;l=i.add(p);l.setSelected(n==f.selectedLang);f.menuItems[n]=l;if(n==f.selectedLang){f.selectedItem=l}})});return g}},setLanguage:function(e){var d=this;if(e==d.selectedLang){return}if(tinymce.grep(d.languages,function(f){return f===e}).length===0){throw"Unknown language: "+e}d.selectedLang=e;if(d.menuItems){d._updateMenu(d.menuItems[e])}if(d.active){d._done()}},_updateMenu:function(d){d.setSelected(1);this.selectedItem.setSelected(0);this.selectedItem=d},_walk:function(i,g){var h=this.editor.getDoc(),e;if(h.createTreeWalker){e=h.createTreeWalker(i,NodeFilter.SHOW_TEXT,null,false);while((i=e.nextNode())!=null){g.call(this,i)}}else{tinymce.walk(i,g,"childNodes")}},_getSeparators:function(){var e="",d,f=this.editor.getParam("spellchecker_word_separator_chars",'\\s!"#$%&()*+,-./:;<=>?@[]^_{|}§©«®±¶·¸»¼½¾¿×÷¤\u201d\u201c');for(d=0;d<f.length;d++){e+="\\"+f.charAt(d)}return e},_getWords:function(){var e=this.editor,g=[],d="",f={},h=[];this._walk(e.getBody(),function(i){if(i.nodeType==3){d+=i.nodeValue+" "}});if(e.getParam("spellchecker_word_pattern")){h=d.match("("+e.getParam("spellchecker_word_pattern")+")","gi")}else{d=d.replace(new RegExp("([0-9]|["+this._getSeparators()+"])","g")," ");d=tinymce.trim(d.replace(/(\s+)/g," "));h=d.split(" ")}c(h,function(i){if(!f[i]){g.push(i);f[i]=1}});return g},_removeWords:function(d){var e=this.editor,h=e.dom,g=e.selection,f=g.getRng(true);c(h.select("span").reverse(),function(i){if(i&&(h.hasClass(i,"mceItemHiddenSpellWord")||h.hasClass(i,"mceItemHidden"))){if(!d||h.decode(i.innerHTML)==d){h.remove(i,1)}}});g.setRng(f)},_markWords:function(l){var h=this.editor,g=h.dom,j=h.getDoc(),i=h.selection,d=i.getRng(true),e=[],k=l.join("|"),m=this._getSeparators(),f=new RegExp("(^|["+m+"])("+k+")(?=["+m+"]|$)","g");this._walk(h.getBody(),function(o){if(o.nodeType==3){e.push(o)}});c(e,function(t){var r,q,o,s,p=t.nodeValue;f.lastIndex=0;if(f.test(p)){p=g.encode(p);q=g.create("span",{"class":"mceItemHidden"});if(tinymce.isIE){p=p.replace(f,"$1<mcespell>$2</mcespell>");while((s=p.indexOf("<mcespell>"))!=-1){o=p.substring(0,s);if(o.length){r=j.createTextNode(g.decode(o));q.appendChild(r)}p=p.substring(s+10);s=p.indexOf("</mcespell>");o=p.substring(0,s);p=p.substring(s+11);q.appendChild(g.create("span",{"class":"mceItemHiddenSpellWord"},o))}if(p.length){r=j.createTextNode(g.decode(p));q.appendChild(r)}}else{q.innerHTML=p.replace(f,'$1<span class="mceItemHiddenSpellWord">$2</span>')}g.replace(q,t)}});i.setRng(d)},_showMenu:function(h,j){var i=this,h=i.editor,d=i._menu,l,k=h.dom,g=k.getViewPort(h.getWin()),f=j.target;j=0;if(!d){d=h.controlManager.createDropMenu("spellcheckermenu",{"class":"mceNoIcons"});i._menu=d}if(k.hasClass(f,"mceItemHiddenSpellWord")){d.removeAll();d.add({title:"spellchecker.wait","class":"mceMenuItemTitle"}).setDisabled(1);i._sendRPC("getSuggestions",[i.selectedLang,k.decode(f.innerHTML)],function(m){var e;d.removeAll();if(m.length>0){d.add({title:"spellchecker.sug","class":"mceMenuItemTitle"}).setDisabled(1);c(m,function(n){d.add({title:n,onclick:function(){k.replace(h.getDoc().createTextNode(n),f);i._checkDone()}})});d.addSeparator()}else{d.add({title:"spellchecker.no_sug","class":"mceMenuItemTitle"}).setDisabled(1)}if(h.getParam("show_ignore_words",true)){e=i.editor.getParam("spellchecker_enable_ignore_rpc","");d.add({title:"spellchecker.ignore_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}}});d.add({title:"spellchecker.ignore_words",onclick:function(){var n=f.innerHTML;i._removeWords(k.decode(n));i._checkDone();if(e){h.setProgressState(1);i._sendRPC("ignoreWords",[i.selectedLang,n],function(o){h.setProgressState(0)})}}})}if(i.editor.getParam("spellchecker_enable_learn_rpc")){d.add({title:"spellchecker.learn_word",onclick:function(){var n=f.innerHTML;k.remove(f,1);i._checkDone();h.setProgressState(1);i._sendRPC("learnWord",[i.selectedLang,n],function(o){h.setProgressState(0)})}})}d.update()});l=b.getPos(h.getContentAreaContainer());d.settings.offset_x=l.x;d.settings.offset_y=l.y;h.selection.select(f);l=k.getPos(f);d.showMenu(l.x,l.y+f.offsetHeight-g.y);return tinymce.dom.Event.cancel(j)}else{d.hideMenu()}},_checkDone:function(){var e=this,d=e.editor,g=d.dom,f;c(g.select("span"),function(h){if(h&&g.hasClass(h,"mceItemHiddenSpellWord")){f=true;return false}});if(!f){e._done()}},_done:function(){var d=this,e=d.active;if(d.active){d.active=0;d._removeWords();if(d._menu){d._menu.hideMenu()}if(e){d.editor.nodeChanged()}}},_sendRPC:function(e,g,d){var f=this;a.sendRPC({url:f.rpcUrl,method:e,params:g,success:d,error:function(i,h){f.editor.setProgressState(0);f.editor.windowManager.alert(i.errstr||("Error response: "+h.responseText))}})}});tinymce.PluginManager.add("spellchecker",tinymce.plugins.SpellcheckerPlugin)})(); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/spellchecker/editor_plugin_src.js b/program/js/tiny_mce/plugins/spellchecker/editor_plugin_src.js
index 86fdfceb4..5751b0e52 100644
--- a/program/js/tiny_mce/plugins/spellchecker/editor_plugin_src.js
+++ b/program/js/tiny_mce/plugins/spellchecker/editor_plugin_src.js
@@ -126,6 +126,7 @@
c.onRenderMenu.add(function(c, m) {
m.add({title : 'spellchecker.langs', 'class' : 'mceMenuItemTitle'}).setDisabled(1);
+ t.menuItems = {};
each(t.languages, function(v, k) {
var o = {icon : 1}, mi;
@@ -133,27 +134,60 @@
if (v == t.selectedLang) {
return;
}
- mi.setSelected(1);
- t.selectedItem.setSelected(0);
- t.selectedItem = mi;
+ t._updateMenu(mi);
t.selectedLang = v;
};
o.title = k;
mi = m.add(o);
mi.setSelected(v == t.selectedLang);
-
+ t.menuItems[v] = mi;
if (v == t.selectedLang)
t.selectedItem = mi;
- })
+ });
});
+
+
return c;
}
},
+ setLanguage: function(lang) {
+ var t = this;
+
+ if (lang == t.selectedLang) {
+ // allowed
+ return;
+ }
+
+ if (tinymce.grep(t.languages, function(v) { return v === lang; }).length === 0) {
+ throw "Unknown language: " + lang;
+ }
+
+ t.selectedLang = lang;
+
+ // if the menu has been shown, update it as well
+ if (t.menuItems) {
+ t._updateMenu(t.menuItems[lang]);
+ }
+
+ if (t.active) {
+ // clear error in the old language.
+ t._done();
+
+ // Don't immediately block the UI to check spelling in the new language, this is an API not a user action.
+ }
+ },
+
// Internal functions
+ _updateMenu: function(mi) {
+ mi.setSelected(1);
+ this.selectedItem.setSelected(0);
+ this.selectedItem = mi;
+ },
+
_walk : function(n, f) {
var d = this.editor.getDoc(), w;
@@ -235,6 +269,7 @@
each(nl, function(n) {
var node, elem, txt, pos, v = n.nodeValue;
+ rx.lastIndex = 0;
if (rx.test(v)) {
// Encode the content
v = dom.encode(v);
diff --git a/program/js/tiny_mce/plugins/style/langs/en_dlg.js b/program/js/tiny_mce/plugins/style/langs/en_dlg.js
index 9a1d4a223..35881b3ac 100644
--- a/program/js/tiny_mce/plugins/style/langs/en_dlg.js
+++ b/program/js/tiny_mce/plugins/style/langs/en_dlg.js
@@ -1 +1 @@
-tinyMCE.addI18n('en.style_dlg',{"text_lineheight":"Line Height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet Image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for All",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text Indent","block_text_align":"Text Align","block_vertical_alignment":"Vertical Alignment","block_letterspacing":"Letter Spacing","block_wordspacing":"Word Spacing","background_vpos":"Vertical Position","background_hpos":"Horizontal Position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background Image","background_color":"Background Color","text_none":"None","text_blink":"Blink","text_case":"Case","text_striketrough":"Strikethrough","text_underline":"Underline","text_overline":"Overline","text_decoration":"Decoration","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"}); \ No newline at end of file
+tinyMCE.addI18n('en.style_dlg',{"text_lineheight":"Line Height","text_variant":"Variant","text_style":"Style","text_weight":"Weight","text_size":"Size","text_font":"Font","text_props":"Text","positioning_tab":"Positioning","list_tab":"List","border_tab":"Border","box_tab":"Box","block_tab":"Block","background_tab":"Background","text_tab":"Text",apply:"Apply",toggle_insert_span:"Insert span at selection",title:"Edit CSS Style",clip:"Clip",placement:"Placement",overflow:"Overflow",zindex:"Z-index",visibility:"Visibility","positioning_type":"Type",position:"Position","bullet_image":"Bullet Image","list_type":"Type",color:"Color",height:"Height",width:"Width",style:"Style",margin:"Margin",left:"Left",bottom:"Bottom",right:"Right",top:"Top",same:"Same for All",padding:"Padding","box_clear":"Clear","box_float":"Float","box_height":"Height","box_width":"Width","block_display":"Display","block_whitespace":"Whitespace","block_text_indent":"Text Indent","block_text_align":"Text Align","block_vertical_alignment":"Vertical Alignment","block_letterspacing":"Letter Spacing","block_wordspacing":"Word Spacing","background_vpos":"Vertical Position","background_hpos":"Horizontal Position","background_attachment":"Attachment","background_repeat":"Repeat","background_image":"Background Image","background_color":"Background Color","text_none":"None","text_blink":"Blink","text_case":"Case","text_striketrough":"Strikethrough","text_underline":"Underline","text_overline":"Overline","text_decoration":"Decoration","text_color":"Color",text:"Text",background:"Background",block:"Block",box:"Box",border:"Border",list:"List"});
diff --git a/program/js/tiny_mce/plugins/table/editor_plugin.js b/program/js/tiny_mce/plugins/table/editor_plugin.js
index 23c1a83f3..4a92e1b36 100644
--- a/program/js/tiny_mce/plugins/table/editor_plugin.js
+++ b/program/js/tiny_mce/plugins/table/editor_plugin.js
@@ -1 +1 @@
-(function(d){var e=d.each;function c(g,h){var j=h.ownerDocument,f=j.createRange(),k;f.setStartBefore(h);f.setEnd(g.endContainer,g.endOffset);k=j.createElement("body");k.appendChild(f.cloneContents());return k.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length==0}function a(g,f){return parseInt(g.getAttribute(f)||1)}function b(H,G,K){var g,L,D,o;t();o=G.getParent(K.getStart(),"th,td");if(o){L=F(o);D=I();o=z(L.x,L.y)}function A(N,M){N=N.cloneNode(M);N.removeAttribute("id");return N}function t(){var M=0;g=[];e(["thead","tbody","tfoot"],function(N){var O=G.select("> "+N+" tr",H);e(O,function(P,Q){Q+=M;e(G.select("> td, > th",P),function(W,R){var S,T,U,V;if(g[Q]){while(g[Q][R]){R++}}U=a(W,"rowspan");V=a(W,"colspan");for(T=Q;T<Q+U;T++){if(!g[T]){g[T]=[]}for(S=R;S<R+V;S++){g[T][S]={part:N,real:T==Q&&S==R,elm:W,rowspan:U,colspan:V}}}})});M+=O.length})}function z(M,O){var N;N=g[O];if(N){return N[M]}}function s(O,M,N){if(O){N=parseInt(N);if(N===1){O.removeAttribute(M,1)}else{O.setAttribute(M,N,1)}}}function j(M){return M&&(G.hasClass(M.elm,"mceSelected")||M==o)}function k(){var M=[];e(H.rows,function(N){e(N.cells,function(O){if(G.hasClass(O,"mceSelected")||O==o.elm){M.push(N);return false}})});return M}function r(){var M=G.createRng();M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H)}function f(M){var N;d.walk(M,function(P){var O;if(P.nodeType==3){e(G.getParents(P.parentNode,null,M).reverse(),function(Q){Q=A(Q,false);if(!N){N=O=Q}else{if(O){O.appendChild(Q)}}O=Q});if(O){O.innerHTML=d.isIE?"&nbsp;":'<br data-mce-bogus="1" />'}return false}},"childNodes");M=A(M,false);s(M,"rowSpan",1);s(M,"colSpan",1);if(N){M.appendChild(N)}else{if(!d.isIE){M.innerHTML='<br data-mce-bogus="1" />'}}return M}function q(){var M=G.createRng();e(G.select("tr",H),function(N){if(N.cells.length==0){G.remove(N)}});if(G.select("tr",H).length==0){M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H);return}e(G.select("thead,tbody,tfoot",H),function(N){if(N.rows.length==0){G.remove(N)}});t();row=g[Math.min(g.length-1,L.y)];if(row){K.select(row[Math.min(row.length-1,L.x)].elm,true);K.collapse(true)}}function u(S,Q,U,R){var P,N,M,O,T;P=g[Q][S].elm.parentNode;for(M=1;M<=U;M++){P=G.getNext(P,"tr");if(P){for(N=S;N>=0;N--){T=g[Q+M][N].elm;if(T.parentNode==P){for(O=1;O<=R;O++){G.insertAfter(f(T),T)}break}}if(N==-1){for(O=1;O<=R;O++){P.insertBefore(f(P.cells[0]),P.cells[0])}}}}}function C(){e(g,function(M,N){e(M,function(P,O){var S,R,T,Q;if(j(P)){P=P.elm;S=a(P,"colspan");R=a(P,"rowspan");if(S>1||R>1){s(P,"rowSpan",1);s(P,"colSpan",1);for(Q=0;Q<S-1;Q++){G.insertAfter(f(P),P)}u(O,N,R-1,S)}}})})}function p(V,S,Y){var P,O,X,W,U,R,T,M,V,N,Q;if(V){pos=F(V);P=pos.x;O=pos.y;X=P+(S-1);W=O+(Y-1)}else{L=D=null;e(g,function(Z,aa){e(Z,function(ac,ab){if(j(ac)){if(!L){L={x:ab,y:aa}}D={x:ab,y:aa}}})});P=L.x;O=L.y;X=D.x;W=D.y}T=z(P,O);M=z(X,W);if(T&&M&&T.part==M.part){C();t();T=z(P,O).elm;s(T,"colSpan",(X-P)+1);s(T,"rowSpan",(W-O)+1);for(R=O;R<=W;R++){for(U=P;U<=X;U++){if(!g[R]||!g[R][U]){continue}V=g[R][U].elm;if(V!=T){N=d.grep(V.childNodes);e(N,function(Z){T.appendChild(Z)});if(N.length){N=d.grep(T.childNodes);Q=0;e(N,function(Z){if(Z.nodeName=="BR"&&G.getAttrib(Z,"data-mce-bogus")&&Q++<N.length-1){T.removeChild(Z)}})}G.remove(V)}}}q()}}function l(Q){var M,S,P,R,T,U,N,V,O;e(g,function(W,X){e(W,function(Z,Y){if(j(Z)){Z=Z.elm;T=Z.parentNode;U=A(T,false);M=X;if(Q){return false}}});if(Q){return !M}});for(R=0;R<g[0].length;R++){if(!g[M][R]){continue}S=g[M][R].elm;if(S!=P){if(!Q){O=a(S,"rowspan");if(O>1){s(S,"rowSpan",O+1);continue}}else{if(M>0&&g[M-1][R]){V=g[M-1][R].elm;O=a(V,"rowSpan");if(O>1){s(V,"rowSpan",O+1);continue}}}N=f(S);s(N,"colSpan",S.colSpan);U.appendChild(N);P=S}}if(U.hasChildNodes()){if(!Q){G.insertAfter(U,T)}else{T.parentNode.insertBefore(U,T)}}}function h(N){var O,M;e(g,function(P,Q){e(P,function(S,R){if(j(S)){O=R;if(N){return false}}});if(N){return !O}});e(g,function(S,T){var P,Q,R;if(!S[O]){return}P=S[O].elm;if(P!=M){R=a(P,"colspan");Q=a(P,"rowspan");if(R==1){if(!N){G.insertAfter(f(P),P);u(O,T,Q-1,R)}else{P.parentNode.insertBefore(f(P),P);u(O,T,Q-1,R)}}else{s(P,"colSpan",P.colSpan+1)}M=P}})}function n(){var M=[];e(g,function(N,O){e(N,function(Q,P){if(j(Q)&&d.inArray(M,P)===-1){e(g,function(T){var R=T[P].elm,S;S=a(R,"colSpan");if(S>1){s(R,"colSpan",S-1)}else{G.remove(R)}});M.push(P)}})});q()}function m(){var N;function M(Q){var P,R,O;P=G.getNext(Q,"tr");e(Q.cells,function(S){var T=a(S,"rowSpan");if(T>1){s(S,"rowSpan",T-1);R=F(S);u(R.x,R.y,1,1)}});R=F(Q.cells[0]);e(g[R.y],function(S){var T;S=S.elm;if(S!=O){T=a(S,"rowSpan");if(T<=1){G.remove(S)}else{s(S,"rowSpan",T-1)}O=S}})}N=k();e(N.reverse(),function(O){M(O)});q()}function E(){var M=k();G.remove(M);q();return M}function J(){var M=k();e(M,function(O,N){M[N]=A(O,true)});return M}function B(O,N){var P=k(),M=P[N?0:P.length-1],Q=M.cells.length;e(g,function(S){var R;Q=0;e(S,function(U,T){if(U.real){Q+=U.colspan}if(U.elm.parentNode==M){R=1}});if(R){return false}});if(!N){O.reverse()}e(O,function(T){var S=T.cells.length,R;for(i=0;i<S;i++){R=T.cells[i];s(R,"colSpan",1);s(R,"rowSpan",1)}for(i=S;i<Q;i++){T.appendChild(f(T.cells[S-1]))}for(i=Q;i<S;i++){G.remove(T.cells[i])}if(N){M.parentNode.insertBefore(T,M)}else{G.insertAfter(T,M)}});G.removeClass(G.select("td.mceSelected,th.mceSelected"),"mceSelected")}function F(M){var N;e(g,function(O,P){e(O,function(R,Q){if(R.elm==M){N={x:Q,y:P};return false}});return !N});return N}function w(M){L=F(M)}function I(){var O,N,M;N=M=0;e(g,function(P,Q){e(P,function(S,R){var U,T;if(j(S)){S=g[Q][R];if(R>N){N=R}if(Q>M){M=Q}if(S.real){U=S.colspan-1;T=S.rowspan-1;if(U){if(R+U>N){N=R+U}}if(T){if(Q+T>M){M=Q+T}}}}})});return{x:N,y:M}}function v(S){var P,O,U,T,N,M,Q,R;D=F(S);if(L&&D){P=Math.min(L.x,D.x);O=Math.min(L.y,D.y);U=Math.max(L.x,D.x);T=Math.max(L.y,D.y);N=U;M=T;for(y=O;y<=M;y++){S=g[y][P];if(!S.real){if(P-(S.colspan-1)<P){P-=S.colspan-1}}}for(x=P;x<=N;x++){S=g[O][x];if(!S.real){if(O-(S.rowspan-1)<O){O-=S.rowspan-1}}}for(y=O;y<=T;y++){for(x=P;x<=U;x++){S=g[y][x];if(S.real){Q=S.colspan-1;R=S.rowspan-1;if(Q){if(x+Q>N){N=x+Q}}if(R){if(y+R>M){M=y+R}}}}}G.removeClass(G.select("td.mceSelected,th.mceSelected"),"mceSelected");for(y=O;y<=M;y++){for(x=P;x<=N;x++){if(g[y][x]){G.addClass(g[y][x].elm,"mceSelected")}}}}}d.extend(this,{deleteTable:r,split:C,merge:p,insertRow:l,insertCol:h,deleteCols:n,deleteRows:m,cutRows:E,copyRows:J,pasteRows:B,getPos:F,setStartCell:w,setEndCell:v})}d.create("tinymce.plugins.TablePlugin",{init:function(g,h){var f,m,j=true;function l(p){var o=g.selection,n=g.dom.getParent(p||o.getNode(),"table");if(n){return new b(n,g.dom,o)}}function k(){g.getBody().style.webkitUserSelect="";if(j){g.dom.removeClass(g.dom.select("td.mceSelected,th.mceSelected"),"mceSelected");j=false}}e([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(n){g.addButton(n[0],{title:n[1],cmd:n[2],ui:n[3]})});if(!d.isIE){g.onClick.add(function(n,o){o=o.target;if(o.nodeName==="TABLE"){n.selection.select(o);n.nodeChanged()}})}g.onPreProcess.add(function(o,p){var n,q,r,t=o.dom,s;n=t.select("table",p.node);q=n.length;while(q--){r=n[q];t.setAttrib(r,"data-mce-style","");if((s=t.getAttrib(r,"width"))){t.setStyle(r,"width",s);t.setAttrib(r,"width","")}if((s=t.getAttrib(r,"height"))){t.setStyle(r,"height",s);t.setAttrib(r,"height","")}}});g.onNodeChange.add(function(q,o,s){var r;s=q.selection.getStart();r=q.dom.getParent(s,"td,th,caption");o.setActive("table",s.nodeName==="TABLE"||!!r);if(r&&r.nodeName==="CAPTION"){r=0}o.setDisabled("delete_table",!r);o.setDisabled("delete_col",!r);o.setDisabled("delete_table",!r);o.setDisabled("delete_row",!r);o.setDisabled("col_after",!r);o.setDisabled("col_before",!r);o.setDisabled("row_after",!r);o.setDisabled("row_before",!r);o.setDisabled("row_props",!r);o.setDisabled("cell_props",!r);o.setDisabled("split_cells",!r);o.setDisabled("merge_cells",!r)});g.onInit.add(function(r){var p,t,q=r.dom,u;f=r.windowManager;r.onMouseDown.add(function(w,z){if(z.button!=2){k();t=q.getParent(z.target,"td,th");p=q.getParent(t,"table")}});q.bind(r.getDoc(),"mouseover",function(C){var A,z,B=C.target;if(t&&(u||B!=t)&&(B.nodeName=="TD"||B.nodeName=="TH")){z=q.getParent(B,"table");if(z==p){if(!u){u=l(z);u.setStartCell(t);r.getBody().style.webkitUserSelect="none"}u.setEndCell(B);j=true}A=r.selection.getSel();try{if(A.removeAllRanges){A.removeAllRanges()}else{A.empty()}}catch(w){}C.preventDefault()}});r.onMouseUp.add(function(F,G){var z,B=F.selection,H,I=B.getSel(),w,C,A,E;if(t){if(u){F.getBody().style.webkitUserSelect=""}function D(J,L){var K=new d.dom.TreeWalker(J,J);do{if(J.nodeType==3&&d.trim(J.nodeValue).length!=0){if(L){z.setStart(J,0)}else{z.setEnd(J,J.nodeValue.length)}return}if(J.nodeName=="BR"){if(L){z.setStartBefore(J)}else{z.setEndBefore(J)}return}}while(J=(L?K.next():K.prev()))}H=q.select("td.mceSelected,th.mceSelected");if(H.length>0){z=q.createRng();C=H[0];E=H[H.length-1];z.setStartBefore(C);z.setEndAfter(C);D(C,1);w=new d.dom.TreeWalker(C,q.getParent(H[0],"table"));do{if(C.nodeName=="TD"||C.nodeName=="TH"){if(!q.hasClass(C,"mceSelected")){break}A=C}}while(C=w.next());D(A);B.setRng(z)}F.nodeChanged();t=u=p=null}});r.onKeyUp.add(function(w,z){k()});r.onKeyDown.add(function(w,z){n(w)});r.onMouseDown.add(function(w,z){if(z.button!=2){n(w)}});function o(D,z,A,F){var B=3,G=D.dom.getParent(z.startContainer,"TABLE"),C,w,E;if(G){C=G.parentNode}w=z.startContainer.nodeType==B&&z.startOffset==0&&z.endOffset==0&&F&&(A.nodeName=="TR"||A==C);E=(A.nodeName=="TD"||A.nodeName=="TH")&&!F;return w||E}function n(A){if(!d.isWebKit){return}var z=A.selection.getRng();var C=A.selection.getNode();var B=A.dom.getParent(z.startContainer,"TD,TH");if(!o(A,z,C,B)){return}if(!B){B=C}var w=B.lastChild;while(w.lastChild){w=w.lastChild}z.setEnd(w,w.nodeValue.length);A.selection.setRng(z)}r.plugins.table.fixTableCellSelection=n;if(r&&r.plugins.contextmenu){r.plugins.contextmenu.onContextMenu.add(function(A,w,C){var D,B=r.selection,z=B.getNode()||r.getBody();if(r.dom.getParent(C,"td")||r.dom.getParent(C,"th")||r.dom.select("td.mceSelected,th.mceSelected").length){w.removeAll();if(z.nodeName=="A"&&!r.dom.getAttrib(z,"name")){w.add({title:"advanced.link_desc",icon:"link",cmd:r.plugins.advlink?"mceAdvLink":"mceLink",ui:true});w.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});w.addSeparator()}if(z.nodeName=="IMG"&&z.className.indexOf("mceItem")==-1){w.add({title:"advanced.image_desc",icon:"image",cmd:r.plugins.advimage?"mceAdvImage":"mceImage",ui:true});w.addSeparator()}w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",value:{action:"insert"}});w.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable"});w.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete"});w.addSeparator();D=w.addMenu({title:"table.cell"});D.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps"});D.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells"});D.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells"});D=w.addMenu({title:"table.row"});D.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps"});D.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});D.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});D.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});D.addSeparator();D.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});D.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});D.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"}).setDisabled(!m);D.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"}).setDisabled(!m);D=w.addMenu({title:"table.col"});D.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});D.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});D.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable"})}})}if(d.isWebKit){function v(C,N){var L=d.VK;var Q=N.keyCode;function O(Y,U,S){var T=Y?"previousSibling":"nextSibling";var Z=C.dom.getParent(U,"tr");var X=Z[T];if(X){z(C,U,X,Y);d.dom.Event.cancel(S);return true}else{var aa=C.dom.getParent(Z,"table");var W=Z.parentNode;var R=W.nodeName.toLowerCase();if(R==="tbody"||R===(Y?"tfoot":"thead")){var V=w(Y,aa,W,"tbody");if(V!==null){return K(Y,V,U,S)}}return M(Y,Z,T,aa,S)}}function w(V,T,U,X){var S=C.dom.select(">"+X,T);var R=S.indexOf(U);if(V&&R===0||!V&&R===S.length-1){return B(V,T)}else{if(R===-1){var W=U.tagName.toLowerCase()==="thead"?0:S.length-1;return S[W]}else{return S[R+(V?-1:1)]}}}function B(U,T){var S=U?"thead":"tfoot";var R=C.dom.select(">"+S,T);return R.length!==0?R[0]:null}function K(V,T,S,U){var R=J(T,V);R&&z(C,S,R,V);d.dom.Event.cancel(U);return true}function M(Y,U,R,X,W){var S=X[R];if(S){F(S);return true}else{var V=C.dom.getParent(X,"td,th");if(V){return O(Y,V,W)}else{var T=J(U,!Y);F(T);return d.dom.Event.cancel(W)}}}function J(S,R){var T=S&&S[R?"lastChild":"firstChild"];return T&&T.nodeName==="BR"?C.dom.getParent(T,"td,th"):T}function F(R){C.selection.setCursorLocation(R,0)}function A(){return Q==L.UP||Q==L.DOWN}function D(R){var T=R.selection.getNode();var S=R.dom.getParent(T,"tr");return S!==null}function P(S){var R=0;var T=S;while(T.previousSibling){T=T.previousSibling;R=R+a(T,"colspan")}return R}function E(T,R){var U=0;var S=0;e(T.children,function(V,W){U=U+a(V,"colspan");S=W;if(U>R){return false}});return S}function z(T,W,Y,V){var X=P(T.dom.getParent(W,"td,th"));var S=E(Y,X);var R=Y.childNodes[S];var U=J(R,V);F(U||R)}function H(R){var T=C.selection.getNode();var U=C.dom.getParent(T,"td,th");var S=C.dom.getParent(R,"td,th");return U&&U!==S&&I(U,S)}function I(S,R){return C.dom.getParent(S,"TABLE")===C.dom.getParent(R,"TABLE")}if(A()&&D(C)){var G=C.selection.getNode();setTimeout(function(){if(H(G)){O(!N.shiftKey&&Q===L.UP,G,N)}},0)}}r.onKeyDown.add(v)}function s(){var w;for(w=r.getBody().lastChild;w&&w.nodeType==3&&!w.nodeValue.length;w=w.previousSibling){}if(w&&w.nodeName=="TABLE"){if(r.settings.forced_root_block){r.dom.add(r.getBody(),r.settings.forced_root_block,null,d.isIE?"&nbsp;":'<br data-mce-bogus="1" />')}else{r.dom.add(r.getBody(),"br",{"data-mce-bogus":"1"})}}}if(d.isGecko){r.onKeyDown.add(function(z,B){var w,A,C=z.dom;if(B.keyCode==37||B.keyCode==38){w=z.selection.getRng();A=C.getParent(w.startContainer,"table");if(A&&z.getBody().firstChild==A){if(c(w,A)){w=C.createRng();w.setStartBefore(A);w.setEndBefore(A);z.selection.setRng(w);B.preventDefault()}}}})}r.onKeyUp.add(s);r.onSetContent.add(s);r.onVisualAid.add(s);r.onPreProcess.add(function(w,A){var z=A.node.lastChild;if(z&&(z.nodeName=="BR"||(z.childNodes.length==1&&(z.firstChild.nodeName=="BR"||z.firstChild.nodeValue=="\u00a0")))&&z.previousSibling&&z.previousSibling.nodeName=="TABLE"){w.dom.remove(z)}});if(d.isGecko){r.onKeyDown.add(function(z,B){if(B.keyCode===d.VK.ENTER&&B.shiftKey){var A=z.selection.getRng().startContainer;var C=q.getParent(A,"td,th");if(C){var w=z.getDoc().createTextNode("\uFEFF");q.insertAfter(w,A)}}})}s();r.startContent=r.getContent({format:"raw"})});e({mceTableSplitCells:function(n){n.split()},mceTableMergeCells:function(o){var p,q,n;n=g.dom.getParent(g.selection.getNode(),"th,td");if(n){p=n.rowSpan;q=n.colSpan}if(!g.dom.select("td.mceSelected,th.mceSelected").length){f.open({url:h+"/merge_cells.htm",width:240+parseInt(g.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(g.getLang("table.merge_cells_delta_height",0)),inline:1},{rows:p,cols:q,onaction:function(r){o.merge(n,r.cols,r.rows)},plugin_url:h})}else{o.merge()}},mceTableInsertRowBefore:function(n){n.insertRow(true)},mceTableInsertRowAfter:function(n){n.insertRow()},mceTableInsertColBefore:function(n){n.insertCol(true)},mceTableInsertColAfter:function(n){n.insertCol()},mceTableDeleteCol:function(n){n.deleteCols()},mceTableDeleteRow:function(n){n.deleteRows()},mceTableCutRow:function(n){m=n.cutRows()},mceTableCopyRow:function(n){m=n.copyRows()},mceTablePasteRowBefore:function(n){n.pasteRows(m,true)},mceTablePasteRowAfter:function(n){n.pasteRows(m)},mceTableDelete:function(n){n.deleteTable()}},function(o,n){g.addCommand(n,function(){var p=l();if(p){o(p);g.execCommand("mceRepaint");k()}})});e({mceInsertTable:function(n){f.open({url:h+"/table.htm",width:400+parseInt(g.getLang("table.table_delta_width",0)),height:320+parseInt(g.getLang("table.table_delta_height",0)),inline:1},{plugin_url:h,action:n?n.action:0})},mceTableRowProps:function(){f.open({url:h+"/row.htm",width:400+parseInt(g.getLang("table.rowprops_delta_width",0)),height:295+parseInt(g.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:h})},mceTableCellProps:function(){f.open({url:h+"/cell.htm",width:400+parseInt(g.getLang("table.cellprops_delta_width",0)),height:295+parseInt(g.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:h})}},function(o,n){g.addCommand(n,function(p,q){o(q)})})}});d.PluginManager.add("table",d.plugins.TablePlugin)})(tinymce); \ No newline at end of file
+(function(d){var e=d.each;function c(g,h){var j=h.ownerDocument,f=j.createRange(),k;f.setStartBefore(h);f.setEnd(g.endContainer,g.endOffset);k=j.createElement("body");k.appendChild(f.cloneContents());return k.innerHTML.replace(/<(br|img|object|embed|input|textarea)[^>]*>/gi,"-").replace(/<[^>]+>/g,"").length==0}function a(g,f){return parseInt(g.getAttribute(f)||1)}function b(H,G,K){var g,L,D,o;t();o=G.getParent(K.getStart(),"th,td");if(o){L=F(o);D=I();o=z(L.x,L.y)}function A(N,M){N=N.cloneNode(M);N.removeAttribute("id");return N}function t(){var M=0;g=[];e(["thead","tbody","tfoot"],function(N){var O=G.select("> "+N+" tr",H);e(O,function(P,Q){Q+=M;e(G.select("> td, > th",P),function(W,R){var S,T,U,V;if(g[Q]){while(g[Q][R]){R++}}U=a(W,"rowspan");V=a(W,"colspan");for(T=Q;T<Q+U;T++){if(!g[T]){g[T]=[]}for(S=R;S<R+V;S++){g[T][S]={part:N,real:T==Q&&S==R,elm:W,rowspan:U,colspan:V}}}})});M+=O.length})}function z(M,O){var N;N=g[O];if(N){return N[M]}}function s(O,M,N){if(O){N=parseInt(N);if(N===1){O.removeAttribute(M,1)}else{O.setAttribute(M,N,1)}}}function j(M){return M&&(G.hasClass(M.elm,"mceSelected")||M==o)}function k(){var M=[];e(H.rows,function(N){e(N.cells,function(O){if(G.hasClass(O,"mceSelected")||O==o.elm){M.push(N);return false}})});return M}function r(){var M=G.createRng();M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H)}function f(M){var N;d.walk(M,function(P){var O;if(P.nodeType==3){e(G.getParents(P.parentNode,null,M).reverse(),function(Q){Q=A(Q,false);if(!N){N=O=Q}else{if(O){O.appendChild(Q)}}O=Q});if(O){O.innerHTML=d.isIE&&!d.isIE11?"&nbsp;":'<br data-mce-bogus="1" />'}return false}},"childNodes");M=A(M,false);s(M,"rowSpan",1);s(M,"colSpan",1);if(N){M.appendChild(N)}else{if(!d.isIE||d.isIE11){M.innerHTML='<br data-mce-bogus="1" />'}}return M}function q(){var M=G.createRng();e(G.select("tr",H),function(N){if(N.cells.length==0){G.remove(N)}});if(G.select("tr",H).length==0){M.setStartAfter(H);M.setEndAfter(H);K.setRng(M);G.remove(H);return}e(G.select("thead,tbody,tfoot",H),function(N){if(N.rows.length==0){G.remove(N)}});t();row=g[Math.min(g.length-1,L.y)];if(row){K.select(row[Math.min(row.length-1,L.x)].elm,true);K.collapse(true)}}function u(S,Q,U,R){var P,N,M,O,T;P=g[Q][S].elm.parentNode;for(M=1;M<=U;M++){P=G.getNext(P,"tr");if(P){for(N=S;N>=0;N--){T=g[Q+M][N].elm;if(T.parentNode==P){for(O=1;O<=R;O++){G.insertAfter(f(T),T)}break}}if(N==-1){for(O=1;O<=R;O++){P.insertBefore(f(P.cells[0]),P.cells[0])}}}}}function C(){e(g,function(M,N){e(M,function(P,O){var S,R,T,Q;if(j(P)){P=P.elm;S=a(P,"colspan");R=a(P,"rowspan");if(S>1||R>1){s(P,"rowSpan",1);s(P,"colSpan",1);for(Q=0;Q<S-1;Q++){G.insertAfter(f(P),P)}u(O,N,R-1,S)}}})})}function p(V,S,Y){var P,O,X,W,U,R,T,M,V,N,Q;if(V){pos=F(V);P=pos.x;O=pos.y;X=P+(S-1);W=O+(Y-1)}else{L=D=null;e(g,function(Z,aa){e(Z,function(ac,ab){if(j(ac)){if(!L){L={x:ab,y:aa}}D={x:ab,y:aa}}})});P=L.x;O=L.y;X=D.x;W=D.y}T=z(P,O);M=z(X,W);if(T&&M&&T.part==M.part){C();t();T=z(P,O).elm;s(T,"colSpan",(X-P)+1);s(T,"rowSpan",(W-O)+1);for(R=O;R<=W;R++){for(U=P;U<=X;U++){if(!g[R]||!g[R][U]){continue}V=g[R][U].elm;if(V!=T){N=d.grep(V.childNodes);e(N,function(Z){T.appendChild(Z)});if(N.length){N=d.grep(T.childNodes);Q=0;e(N,function(Z){if(Z.nodeName=="BR"&&G.getAttrib(Z,"data-mce-bogus")&&Q++<N.length-1){T.removeChild(Z)}})}G.remove(V)}}}q()}}function l(Q){var M,S,P,R,T,U,N,V,O;e(g,function(W,X){e(W,function(Z,Y){if(j(Z)){Z=Z.elm;T=Z.parentNode;U=A(T,false);M=X;if(Q){return false}}});if(Q){return !M}});for(R=0;R<g[0].length;R++){if(!g[M][R]){continue}S=g[M][R].elm;if(S!=P){if(!Q){O=a(S,"rowspan");if(O>1){s(S,"rowSpan",O+1);continue}}else{if(M>0&&g[M-1][R]){V=g[M-1][R].elm;O=a(V,"rowSpan");if(O>1){s(V,"rowSpan",O+1);continue}}}N=f(S);s(N,"colSpan",S.colSpan);U.appendChild(N);P=S}}if(U.hasChildNodes()){if(!Q){G.insertAfter(U,T)}else{T.parentNode.insertBefore(U,T)}}}function h(N){var O,M;e(g,function(P,Q){e(P,function(S,R){if(j(S)){O=R;if(N){return false}}});if(N){return !O}});e(g,function(S,T){var P,Q,R;if(!S[O]){return}P=S[O].elm;if(P!=M){R=a(P,"colspan");Q=a(P,"rowspan");if(R==1){if(!N){G.insertAfter(f(P),P);u(O,T,Q-1,R)}else{P.parentNode.insertBefore(f(P),P);u(O,T,Q-1,R)}}else{s(P,"colSpan",P.colSpan+1)}M=P}})}function n(){var M=[];e(g,function(N,O){e(N,function(Q,P){if(j(Q)&&d.inArray(M,P)===-1){e(g,function(T){var R=T[P].elm,S;S=a(R,"colSpan");if(S>1){s(R,"colSpan",S-1)}else{G.remove(R)}});M.push(P)}})});q()}function m(){var N;function M(Q){var P,R,O;P=G.getNext(Q,"tr");e(Q.cells,function(S){var T=a(S,"rowSpan");if(T>1){s(S,"rowSpan",T-1);R=F(S);u(R.x,R.y,1,1)}});R=F(Q.cells[0]);e(g[R.y],function(S){var T;S=S.elm;if(S!=O){T=a(S,"rowSpan");if(T<=1){G.remove(S)}else{s(S,"rowSpan",T-1)}O=S}})}N=k();e(N.reverse(),function(O){M(O)});q()}function E(){var M=k();G.remove(M);q();return M}function J(){var M=k();e(M,function(O,N){M[N]=A(O,true)});return M}function B(O,N){if(!O){return}var P=k(),M=P[N?0:P.length-1],Q=M.cells.length;e(g,function(S){var R;Q=0;e(S,function(U,T){if(U.real){Q+=U.colspan}if(U.elm.parentNode==M){R=1}});if(R){return false}});if(!N){O.reverse()}e(O,function(T){var S=T.cells.length,R;for(i=0;i<S;i++){R=T.cells[i];s(R,"colSpan",1);s(R,"rowSpan",1)}for(i=S;i<Q;i++){T.appendChild(f(T.cells[S-1]))}for(i=Q;i<S;i++){G.remove(T.cells[i])}if(N){M.parentNode.insertBefore(T,M)}else{G.insertAfter(T,M)}});G.removeClass(G.select("td.mceSelected,th.mceSelected"),"mceSelected")}function F(M){var N;e(g,function(O,P){e(O,function(R,Q){if(R.elm==M){N={x:Q,y:P};return false}});return !N});return N}function w(M){L=F(M)}function I(){var O,N,M;N=M=0;e(g,function(P,Q){e(P,function(S,R){var U,T;if(j(S)){S=g[Q][R];if(R>N){N=R}if(Q>M){M=Q}if(S.real){U=S.colspan-1;T=S.rowspan-1;if(U){if(R+U>N){N=R+U}}if(T){if(Q+T>M){M=Q+T}}}}})});return{x:N,y:M}}function v(S){var P,O,U,T,N,M,Q,R;D=F(S);if(L&&D){P=Math.min(L.x,D.x);O=Math.min(L.y,D.y);U=Math.max(L.x,D.x);T=Math.max(L.y,D.y);N=U;M=T;for(y=O;y<=M;y++){S=g[y][P];if(!S.real){if(P-(S.colspan-1)<P){P-=S.colspan-1}}}for(x=P;x<=N;x++){S=g[O][x];if(!S.real){if(O-(S.rowspan-1)<O){O-=S.rowspan-1}}}for(y=O;y<=T;y++){for(x=P;x<=U;x++){S=g[y][x];if(S.real){Q=S.colspan-1;R=S.rowspan-1;if(Q){if(x+Q>N){N=x+Q}}if(R){if(y+R>M){M=y+R}}}}}G.removeClass(G.select("td.mceSelected,th.mceSelected"),"mceSelected");for(y=O;y<=M;y++){for(x=P;x<=N;x++){if(g[y][x]){G.addClass(g[y][x].elm,"mceSelected")}}}}}d.extend(this,{deleteTable:r,split:C,merge:p,insertRow:l,insertCol:h,deleteCols:n,deleteRows:m,cutRows:E,copyRows:J,pasteRows:B,getPos:F,setStartCell:w,setEndCell:v})}d.create("tinymce.plugins.TablePlugin",{init:function(g,h){var f,m,j=true;function l(p){var o=g.selection,n=g.dom.getParent(p||o.getNode(),"table");if(n){return new b(n,g.dom,o)}}function k(){g.getBody().style.webkitUserSelect="";if(j){g.dom.removeClass(g.dom.select("td.mceSelected,th.mceSelected"),"mceSelected");j=false}}e([["table","table.desc","mceInsertTable",true],["delete_table","table.del","mceTableDelete"],["delete_col","table.delete_col_desc","mceTableDeleteCol"],["delete_row","table.delete_row_desc","mceTableDeleteRow"],["col_after","table.col_after_desc","mceTableInsertColAfter"],["col_before","table.col_before_desc","mceTableInsertColBefore"],["row_after","table.row_after_desc","mceTableInsertRowAfter"],["row_before","table.row_before_desc","mceTableInsertRowBefore"],["row_props","table.row_desc","mceTableRowProps",true],["cell_props","table.cell_desc","mceTableCellProps",true],["split_cells","table.split_cells_desc","mceTableSplitCells",true],["merge_cells","table.merge_cells_desc","mceTableMergeCells",true]],function(n){g.addButton(n[0],{title:n[1],cmd:n[2],ui:n[3]})});if(!d.isIE){g.onClick.add(function(n,o){o=o.target;if(o.nodeName==="TABLE"){n.selection.select(o);n.nodeChanged()}})}g.onPreProcess.add(function(o,p){var n,q,r,t=o.dom,s;n=t.select("table",p.node);q=n.length;while(q--){r=n[q];t.setAttrib(r,"data-mce-style","");if((s=t.getAttrib(r,"width"))){t.setStyle(r,"width",s);t.setAttrib(r,"width","")}if((s=t.getAttrib(r,"height"))){t.setStyle(r,"height",s);t.setAttrib(r,"height","")}}});g.onNodeChange.add(function(q,o,s){var r;s=q.selection.getStart();r=q.dom.getParent(s,"td,th,caption");o.setActive("table",s.nodeName==="TABLE"||!!r);if(r&&r.nodeName==="CAPTION"){r=0}o.setDisabled("delete_table",!r);o.setDisabled("delete_col",!r);o.setDisabled("delete_table",!r);o.setDisabled("delete_row",!r);o.setDisabled("col_after",!r);o.setDisabled("col_before",!r);o.setDisabled("row_after",!r);o.setDisabled("row_before",!r);o.setDisabled("row_props",!r);o.setDisabled("cell_props",!r);o.setDisabled("split_cells",!r);o.setDisabled("merge_cells",!r)});g.onInit.add(function(r){var p,t,q=r.dom,u;f=r.windowManager;r.onMouseDown.add(function(w,z){if(z.button!=2){k();t=q.getParent(z.target,"td,th");p=q.getParent(t,"table")}});q.bind(r.getDoc(),"mouseover",function(C){var A,z,B=C.target;if(t&&(u||B!=t)&&(B.nodeName=="TD"||B.nodeName=="TH")){z=q.getParent(B,"table");if(z==p){if(!u){u=l(z);u.setStartCell(t);r.getBody().style.webkitUserSelect="none"}u.setEndCell(B);j=true}A=r.selection.getSel();try{if(A.removeAllRanges){A.removeAllRanges()}else{A.empty()}}catch(w){}C.preventDefault()}});r.onMouseUp.add(function(F,G){var z,B=F.selection,H,I=B.getSel(),w,C,A,E;if(t){if(u){F.getBody().style.webkitUserSelect=""}function D(J,L){var K=new d.dom.TreeWalker(J,J);do{if(J.nodeType==3&&d.trim(J.nodeValue).length!=0){if(L){z.setStart(J,0)}else{z.setEnd(J,J.nodeValue.length)}return}if(J.nodeName=="BR"){if(L){z.setStartBefore(J)}else{z.setEndBefore(J)}return}}while(J=(L?K.next():K.prev()))}H=q.select("td.mceSelected,th.mceSelected");if(H.length>0){z=q.createRng();C=H[0];E=H[H.length-1];z.setStartBefore(C);z.setEndAfter(C);D(C,1);w=new d.dom.TreeWalker(C,q.getParent(H[0],"table"));do{if(C.nodeName=="TD"||C.nodeName=="TH"){if(!q.hasClass(C,"mceSelected")){break}A=C}}while(C=w.next());D(A);B.setRng(z)}F.nodeChanged();t=u=p=null}});r.onKeyUp.add(function(w,z){k()});r.onKeyDown.add(function(w,z){n(w)});r.onMouseDown.add(function(w,z){if(z.button!=2){n(w)}});function o(D,z,A,F){var B=3,G=D.dom.getParent(z.startContainer,"TABLE"),C,w,E;if(G){C=G.parentNode}w=z.startContainer.nodeType==B&&z.startOffset==0&&z.endOffset==0&&F&&(A.nodeName=="TR"||A==C);E=(A.nodeName=="TD"||A.nodeName=="TH")&&!F;return w||E}function n(A){if(!d.isWebKit){return}var z=A.selection.getRng();var C=A.selection.getNode();var B=A.dom.getParent(z.startContainer,"TD,TH");if(!o(A,z,C,B)){return}if(!B){B=C}var w=B.lastChild;while(w.lastChild){w=w.lastChild}z.setEnd(w,w.nodeValue.length);A.selection.setRng(z)}r.plugins.table.fixTableCellSelection=n;if(r&&r.plugins.contextmenu){r.plugins.contextmenu.onContextMenu.add(function(A,w,C){var D,B=r.selection,z=B.getNode()||r.getBody();if(r.dom.getParent(C,"td")||r.dom.getParent(C,"th")||r.dom.select("td.mceSelected,th.mceSelected").length){w.removeAll();if(z.nodeName=="A"&&!r.dom.getAttrib(z,"name")){w.add({title:"advanced.link_desc",icon:"link",cmd:r.plugins.advlink?"mceAdvLink":"mceLink",ui:true});w.add({title:"advanced.unlink_desc",icon:"unlink",cmd:"UnLink"});w.addSeparator()}if(z.nodeName=="IMG"&&z.className.indexOf("mceItem")==-1){w.add({title:"advanced.image_desc",icon:"image",cmd:r.plugins.advimage?"mceAdvImage":"mceImage",ui:true});w.addSeparator()}w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable",value:{action:"insert"}});w.add({title:"table.props_desc",icon:"table_props",cmd:"mceInsertTable"});w.add({title:"table.del",icon:"delete_table",cmd:"mceTableDelete"});w.addSeparator();D=w.addMenu({title:"table.cell"});D.add({title:"table.cell_desc",icon:"cell_props",cmd:"mceTableCellProps"});D.add({title:"table.split_cells_desc",icon:"split_cells",cmd:"mceTableSplitCells"});D.add({title:"table.merge_cells_desc",icon:"merge_cells",cmd:"mceTableMergeCells"});D=w.addMenu({title:"table.row"});D.add({title:"table.row_desc",icon:"row_props",cmd:"mceTableRowProps"});D.add({title:"table.row_before_desc",icon:"row_before",cmd:"mceTableInsertRowBefore"});D.add({title:"table.row_after_desc",icon:"row_after",cmd:"mceTableInsertRowAfter"});D.add({title:"table.delete_row_desc",icon:"delete_row",cmd:"mceTableDeleteRow"});D.addSeparator();D.add({title:"table.cut_row_desc",icon:"cut",cmd:"mceTableCutRow"});D.add({title:"table.copy_row_desc",icon:"copy",cmd:"mceTableCopyRow"});D.add({title:"table.paste_row_before_desc",icon:"paste",cmd:"mceTablePasteRowBefore"}).setDisabled(!m);D.add({title:"table.paste_row_after_desc",icon:"paste",cmd:"mceTablePasteRowAfter"}).setDisabled(!m);D=w.addMenu({title:"table.col"});D.add({title:"table.col_before_desc",icon:"col_before",cmd:"mceTableInsertColBefore"});D.add({title:"table.col_after_desc",icon:"col_after",cmd:"mceTableInsertColAfter"});D.add({title:"table.delete_col_desc",icon:"delete_col",cmd:"mceTableDeleteCol"})}else{w.add({title:"table.desc",icon:"table",cmd:"mceInsertTable"})}})}if(d.isWebKit){function v(C,N){var L=d.VK;var Q=N.keyCode;function O(Y,U,S){var T=Y?"previousSibling":"nextSibling";var Z=C.dom.getParent(U,"tr");var X=Z[T];if(X){z(C,U,X,Y);d.dom.Event.cancel(S);return true}else{var aa=C.dom.getParent(Z,"table");var W=Z.parentNode;var R=W.nodeName.toLowerCase();if(R==="tbody"||R===(Y?"tfoot":"thead")){var V=w(Y,aa,W,"tbody");if(V!==null){return K(Y,V,U,S)}}return M(Y,Z,T,aa,S)}}function w(V,T,U,X){var S=C.dom.select(">"+X,T);var R=S.indexOf(U);if(V&&R===0||!V&&R===S.length-1){return B(V,T)}else{if(R===-1){var W=U.tagName.toLowerCase()==="thead"?0:S.length-1;return S[W]}else{return S[R+(V?-1:1)]}}}function B(U,T){var S=U?"thead":"tfoot";var R=C.dom.select(">"+S,T);return R.length!==0?R[0]:null}function K(V,T,S,U){var R=J(T,V);R&&z(C,S,R,V);d.dom.Event.cancel(U);return true}function M(Y,U,R,X,W){var S=X[R];if(S){F(S);return true}else{var V=C.dom.getParent(X,"td,th");if(V){return O(Y,V,W)}else{var T=J(U,!Y);F(T);return d.dom.Event.cancel(W)}}}function J(S,R){var T=S&&S[R?"lastChild":"firstChild"];return T&&T.nodeName==="BR"?C.dom.getParent(T,"td,th"):T}function F(R){C.selection.setCursorLocation(R,0)}function A(){return Q==L.UP||Q==L.DOWN}function D(R){var T=R.selection.getNode();var S=R.dom.getParent(T,"tr");return S!==null}function P(S){var R=0;var T=S;while(T.previousSibling){T=T.previousSibling;R=R+a(T,"colspan")}return R}function E(T,R){var U=0;var S=0;e(T.children,function(V,W){U=U+a(V,"colspan");S=W;if(U>R){return false}});return S}function z(T,W,Y,V){var X=P(T.dom.getParent(W,"td,th"));var S=E(Y,X);var R=Y.childNodes[S];var U=J(R,V);F(U||R)}function H(R){var T=C.selection.getNode();var U=C.dom.getParent(T,"td,th");var S=C.dom.getParent(R,"td,th");return U&&U!==S&&I(U,S)}function I(S,R){return C.dom.getParent(S,"TABLE")===C.dom.getParent(R,"TABLE")}if(A()&&D(C)){var G=C.selection.getNode();setTimeout(function(){if(H(G)){O(!N.shiftKey&&Q===L.UP,G,N)}},0)}}r.onKeyDown.add(v)}function s(){var w;for(w=r.getBody().lastChild;w&&w.nodeType==3&&!w.nodeValue.length;w=w.previousSibling){}if(w&&w.nodeName=="TABLE"){if(r.settings.forced_root_block){r.dom.add(r.getBody(),r.settings.forced_root_block,null,d.isIE&&!d.isIE11?"&nbsp;":'<br data-mce-bogus="1" />')}else{r.dom.add(r.getBody(),"br",{"data-mce-bogus":"1"})}}}if(d.isGecko){r.onKeyDown.add(function(z,B){var w,A,C=z.dom;if(B.keyCode==37||B.keyCode==38){w=z.selection.getRng();A=C.getParent(w.startContainer,"table");if(A&&z.getBody().firstChild==A){if(c(w,A)){w=C.createRng();w.setStartBefore(A);w.setEndBefore(A);z.selection.setRng(w);B.preventDefault()}}}})}r.onKeyUp.add(s);r.onSetContent.add(s);r.onVisualAid.add(s);r.onPreProcess.add(function(w,A){var z=A.node.lastChild;if(z&&(z.nodeName=="BR"||(z.childNodes.length==1&&(z.firstChild.nodeName=="BR"||z.firstChild.nodeValue=="\u00a0")))&&z.previousSibling&&z.previousSibling.nodeName=="TABLE"){w.dom.remove(z)}});s();r.startContent=r.getContent({format:"raw"})});e({mceTableSplitCells:function(n){n.split()},mceTableMergeCells:function(o){var p,q,n;n=g.dom.getParent(g.selection.getNode(),"th,td");if(n){p=n.rowSpan;q=n.colSpan}if(!g.dom.select("td.mceSelected,th.mceSelected").length){f.open({url:h+"/merge_cells.htm",width:240+parseInt(g.getLang("table.merge_cells_delta_width",0)),height:110+parseInt(g.getLang("table.merge_cells_delta_height",0)),inline:1},{rows:p,cols:q,onaction:function(r){o.merge(n,r.cols,r.rows)},plugin_url:h})}else{o.merge()}},mceTableInsertRowBefore:function(n){n.insertRow(true)},mceTableInsertRowAfter:function(n){n.insertRow()},mceTableInsertColBefore:function(n){n.insertCol(true)},mceTableInsertColAfter:function(n){n.insertCol()},mceTableDeleteCol:function(n){n.deleteCols()},mceTableDeleteRow:function(n){n.deleteRows()},mceTableCutRow:function(n){m=n.cutRows()},mceTableCopyRow:function(n){m=n.copyRows()},mceTablePasteRowBefore:function(n){n.pasteRows(m,true)},mceTablePasteRowAfter:function(n){n.pasteRows(m)},mceTableDelete:function(n){n.deleteTable()}},function(o,n){g.addCommand(n,function(){var p=l();if(p){o(p);g.execCommand("mceRepaint");k()}})});e({mceInsertTable:function(n){f.open({url:h+"/table.htm",width:400+parseInt(g.getLang("table.table_delta_width",0)),height:320+parseInt(g.getLang("table.table_delta_height",0)),inline:1},{plugin_url:h,action:n?n.action:0})},mceTableRowProps:function(){f.open({url:h+"/row.htm",width:400+parseInt(g.getLang("table.rowprops_delta_width",0)),height:295+parseInt(g.getLang("table.rowprops_delta_height",0)),inline:1},{plugin_url:h})},mceTableCellProps:function(){f.open({url:h+"/cell.htm",width:400+parseInt(g.getLang("table.cellprops_delta_width",0)),height:295+parseInt(g.getLang("table.cellprops_delta_height",0)),inline:1},{plugin_url:h})}},function(o,n){g.addCommand(n,function(p,q){o(q)})})}});d.PluginManager.add("table",d.plugins.TablePlugin)})(tinymce); \ No newline at end of file
diff --git a/program/js/tiny_mce/plugins/table/editor_plugin_src.js b/program/js/tiny_mce/plugins/table/editor_plugin_src.js
index 54bab56c3..045648376 100644
--- a/program/js/tiny_mce/plugins/table/editor_plugin_src.js
+++ b/program/js/tiny_mce/plugins/table/editor_plugin_src.js
@@ -166,7 +166,7 @@
// Add something to the inner node
if (curNode)
- curNode.innerHTML = tinymce.isIE ? '&nbsp;' : '<br data-mce-bogus="1" />';
+ curNode.innerHTML = tinymce.isIE && !tinymce.isIE11 ? '&nbsp;' : '<br data-mce-bogus="1" />';
return false;
}
@@ -179,7 +179,7 @@
if (formatNode) {
cell.appendChild(formatNode);
} else {
- if (!tinymce.isIE)
+ if (!tinymce.isIE || tinymce.isIE11)
cell.innerHTML = '<br data-mce-bogus="1" />';
}
@@ -566,6 +566,10 @@
};
function pasteRows(rows, before) {
+ // If we don't have any rows in the clipboard, return immediately
+ if(!rows)
+ return;
+
var selectedRows = getSelectedRows(),
targetRow = selectedRows[before ? 0 : selectedRows.length - 1],
targetCellCount = targetRow.cells.length;
@@ -1245,7 +1249,7 @@
if (last && last.nodeName == 'TABLE') {
if (ed.settings.forced_root_block)
- ed.dom.add(ed.getBody(), ed.settings.forced_root_block, null, tinymce.isIE ? '&nbsp;' : '<br data-mce-bogus="1" />');
+ ed.dom.add(ed.getBody(), ed.settings.forced_root_block, null, tinymce.isIE && !tinymce.isIE11 ? '&nbsp;' : '<br data-mce-bogus="1" />');
else
ed.dom.add(ed.getBody(), 'br', {'data-mce-bogus': '1'});
}
@@ -1294,7 +1298,10 @@
/**
* Fixes bug in Gecko where shift-enter in table cell does not place caret on new line
+ *
+ * Removed: Since the new enter logic seems to fix this one.
*/
+ /*
if (tinymce.isGecko) {
ed.onKeyDown.add(function(ed, e) {
if (e.keyCode === tinymce.VK.ENTER && e.shiftKey) {
@@ -1307,7 +1314,7 @@
}
});
}
-
+ */
fixTableCaretPos();
ed.startContent = ed.getContent({format : 'raw'});
diff --git a/program/js/tiny_mce/plugins/table/js/row.js b/program/js/tiny_mce/plugins/table/js/row.js
index a13d69592..0c678de46 100644
--- a/program/js/tiny_mce/plugins/table/js/row.js
+++ b/program/js/tiny_mce/plugins/table/js/row.js
@@ -25,6 +25,7 @@ function init() {
var dir = dom.getAttrib(trElm, 'dir');
selectByValue(formObj, 'rowtype', rowtype);
+ setActionforRowType(formObj, rowtype);
// Any cells selected
if (dom.select('td.mceSelected,th.mceSelected', trElm).length == 0) {
@@ -234,4 +235,20 @@ function changedColor() {
formObj.style.value = dom.serializeStyle(st);
}
+function changedRowType() {
+ var formObj = document.forms[0];
+ var rowtype = getSelectValue(formObj, 'rowtype');
+
+ setActionforRowType(formObj, rowtype);
+
+}
+
+function setActionforRowType(formObj, rowtype) {
+ if (rowtype === "tbody") {
+ formObj.action.disabled = false;
+ } else {
+ selectByValue(formObj, 'action', "row");
+ formObj.action.disabled = true;
+ }
+}
tinyMCEPopup.onInit.add(init);
diff --git a/program/js/tiny_mce/plugins/table/js/table.js b/program/js/tiny_mce/plugins/table/js/table.js
index 1db243b63..f427f5f87 100644
--- a/program/js/tiny_mce/plugins/table/js/table.js
+++ b/program/js/tiny_mce/plugins/table/js/table.js
@@ -91,7 +91,7 @@ function insertTable() {
if (!capEl && caption) {
capEl = elm.ownerDocument.createElement('caption');
- if (!tinymce.isIE)
+ if (!tinymce.isIE || tinymce.isIE11)
capEl.innerHTML = '<br data-mce-bogus="1"/>';
elm.insertBefore(capEl, elm.firstChild);
@@ -199,7 +199,7 @@ function insertTable() {
html += '>';
if (caption) {
- if (!tinymce.isIE)
+ if (!tinymce.isIE || tinymce.isIE11)
html += '<caption><br data-mce-bogus="1"/></caption>';
else
html += '<caption></caption>';
@@ -209,7 +209,7 @@ function insertTable() {
html += "<tr>";
for (var x=0; x<cols; x++) {
- if (!tinymce.isIE)
+ if (!tinymce.isIE || tinymce.isIE11)
html += '<td><br data-mce-bogus="1"/></td>';
else
html += '<td></td>';
@@ -242,16 +242,16 @@ function insertTable() {
} else
inst.execCommand('mceInsertContent', false, html);
- tinymce.each(dom.select('table[data-mce-new]'), function(node) {
+ tinymce.each(dom.select('table[data-mce-new]'), function(node) {
var tdorth = dom.select('td,th', node);
-
+
// Fixes a bug in IE where the caret cannot be placed after the table if the table is at the end of the document
- if (tinymce.isIE && node.nextSibling == null) {
+ if (tinymce.isIE && !tinymce.isIE11 && node.nextSibling == null) {
if (inst.settings.forced_root_block)
dom.insertAfter(dom.create(inst.settings.forced_root_block), node);
else
dom.insertAfter(dom.create('br', {'data-mce-bogus': '1'}), node);
- }
+ }
try {
// IE9 might fail to do this selection
diff --git a/program/js/tiny_mce/plugins/table/row.htm b/program/js/tiny_mce/plugins/table/row.htm
index 1885401f6..6ebef2842 100644
--- a/program/js/tiny_mce/plugins/table/row.htm
+++ b/program/js/tiny_mce/plugins/table/row.htm
@@ -28,7 +28,7 @@
<tr>
<td><label for="rowtype">{#table_dlg.rowtype}</label></td>
<td class="col2">
- <select id="rowtype" name="rowtype" class="mceFocus">
+ <select id="rowtype" name="rowtype" class="mceFocus" onChange="changedRowType();">
<option value="thead">{#table_dlg.thead}</option>
<option value="tbody">{#table_dlg.tbody}</option>
<option value="tfoot">{#table_dlg.tfoot}</option>
@@ -83,8 +83,8 @@
<table role="presentation" border="0" cellpadding="0" cellspacing="4">
<tr>
- <td class="column1"><label for="id">{#table_dlg.id}</label></td>
- <td><input id="id" name="id" type="text" value="" style="width: 200px" /></td>
+ <td class="column1"><label for="id">{#table_dlg.id}</label></td>
+ <td><input id="id" name="id" type="text" value="" style="width: 200px" /></td>
</tr>
<tr>
@@ -93,25 +93,25 @@
</tr>
<tr>
- <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td>
+ <td class="column1"><label for="dir">{#table_dlg.langdir}</label></td>
<td>
- <select id="dir" name="dir" style="width: 200px">
- <option value="">{#not_set}</option>
- <option value="ltr">{#table_dlg.ltr}</option>
- <option value="rtl">{#table_dlg.rtl}</option>
+ <select id="dir" name="dir" style="width: 200px">
+ <option value="">{#not_set}</option>
+ <option value="ltr">{#table_dlg.ltr}</option>
+ <option value="rtl">{#table_dlg.rtl}</option>
</select>
- </td>
+ </td>
</tr>
<tr>
- <td class="column1"><label for="lang">{#table_dlg.langcode}</label></td>
+ <td class="column1"><label for="lang">{#table_dlg.langcode}</label></td>
<td>
<input id="lang" name="lang" type="text" value="" style="width: 200px" />
- </td>
+ </td>
</tr>
<tr>
- <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td>
+ <td class="column1"><label for="backgroundimage">{#table_dlg.bgimage}</label></td>
<td>
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
<tr>
@@ -119,11 +119,11 @@
<td id="backgroundimagebrowsercontainer">&nbsp;</td>
</tr>
</table>
- </td>
+ </td>
</tr>
<tr>
- <td class="column1"><label for="bgcolor" id="bgcolor_label">{#table_dlg.bgcolor}</label></td>
+ <td class="column1"><label for="bgcolor" id="bgcolor_label">{#table_dlg.bgcolor}</label></td>
<td>
<span role="group" aria-labelledby="bgcolor_label">
<table role="presentation" border="0" cellpadding="0" cellspacing="0">
@@ -133,7 +133,7 @@
</tr>
</table>
</span>
- </td>
+ </td>
</tr>
</table>
</fieldset>
diff --git a/program/js/tiny_mce/themes/advanced/editor_template.js b/program/js/tiny_mce/themes/advanced/editor_template.js
index 9ab712cb5..4b8d56375 100644
--- a/program/js/tiny_mce/themes/advanced/editor_template.js
+++ b/program/js/tiny_mce/themes/advanced/editor_template.js
@@ -1 +1 @@
-(function(h){var i=h.DOM,g=h.dom.Event,c=h.extend,f=h.each,a=h.util.Cookie,e,d=h.explode;function b(p,m){var k,l,o=p.dom,j="",n,r;previewStyles=p.settings.preview_styles;if(previewStyles===false){return""}if(!previewStyles){previewStyles="font-family font-size font-weight text-decoration text-transform color background-color"}function q(s){return s.replace(/%(\w+)/g,"")}k=m.block||m.inline||"span";l=o.create(k);f(m.styles,function(t,s){t=q(t);if(t){o.setStyle(l,s,t)}});f(m.attributes,function(t,s){t=q(t);if(t){o.setAttrib(l,s,t)}});f(m.classes,function(s){s=q(s);if(!o.hasClass(l,s)){o.addClass(l,s)}});o.setStyles(l,{position:"absolute",left:-65535});p.getBody().appendChild(l);n=o.getStyle(p.getBody(),"fontSize",true);n=/px$/.test(n)?parseInt(n,10):0;f(previewStyles.split(" "),function(s){var t=o.getStyle(l,s,true);if(s=="background-color"&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)){t=o.getStyle(p.getBody(),s,true);if(o.toHex(t).toLowerCase()=="#ffffff"){return}}if(s=="font-size"){if(/em|%$/.test(t)){if(n===0){return}t=parseFloat(t,10)/(/%$/.test(t)?100:1);t=(t*n)+"px"}}j+=s+":"+t+";"});o.remove(l);return j}h.ThemeManager.requireLangPack("advanced");h.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(k,l){var m=this,n,j,p;m.editor=k;m.url=l;m.onResolveName=new h.util.Dispatcher(this);n=k.settings;k.forcedHighContrastMode=k.settings.detect_highcontrast&&m._isHighContrast();k.settings.skin=k.forcedHighContrastMode?"highcontrast":k.settings.skin;if(!n.theme_advanced_buttons1){n=c({theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap"},n)}m.settings=n=c({theme_advanced_path:true,theme_advanced_toolbar_location:"top",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"left",theme_advanced_statusbar_location:"bottom",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_font_selector:"span",theme_advanced_show_current_color:0,readonly:k.settings.readonly},n);if(!n.font_size_style_values){n.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(h.is(n.theme_advanced_font_sizes,"string")){n.font_size_style_values=h.explode(n.font_size_style_values);n.font_size_classes=h.explode(n.font_size_classes||"");p={};k.settings.theme_advanced_font_sizes=n.theme_advanced_font_sizes;f(k.getParam("theme_advanced_font_sizes","","hash"),function(r,q){var o;if(q==r&&r>=1&&r<=7){q=r+" ("+m.sizes[r-1]+"pt)";o=n.font_size_classes[r-1];r=n.font_size_style_values[r-1]||(m.sizes[r-1]+"pt")}if(/^\s*\./.test(r)){o=r.replace(/\./g,"")}p[q]=o?{"class":o}:{fontSize:r}});n.theme_advanced_font_sizes=p}if((j=n.theme_advanced_path_location)&&j!="none"){n.theme_advanced_statusbar_location=n.theme_advanced_path_location}if(n.theme_advanced_statusbar_location=="none"){n.theme_advanced_statusbar_location=0}if(k.settings.content_css!==false){k.contentCSS.push(k.baseURI.toAbsolute(l+"/skins/"+k.settings.skin+"/content.css"))}k.onInit.add(function(){if(!k.settings.readonly){k.onNodeChange.add(m._nodeChanged,m);k.onKeyUp.add(m._updateUndoStatus,m);k.onMouseUp.add(m._updateUndoStatus,m);k.dom.bind(k.dom.getRoot(),"dragend",function(){m._updateUndoStatus(k)})}});k.onSetProgressState.add(function(r,o,s){var t,u=r.id,q;if(o){m.progressTimer=setTimeout(function(){t=r.getContainer();t=t.insertBefore(i.create("DIV",{style:"position:relative"}),t.firstChild);q=i.get(r.id+"_tbl");i.add(t,"div",{id:u+"_blocker","class":"mceBlocker",style:{width:q.clientWidth+2,height:q.clientHeight+2}});i.add(t,"div",{id:u+"_progress","class":"mceProgress",style:{left:q.clientWidth/2,top:q.clientHeight/2}})},s||0)}else{i.remove(u+"_blocker");i.remove(u+"_progress");clearTimeout(m.progressTimer)}});i.loadCSS(n.editor_css?k.documentBaseURI.toAbsolute(n.editor_css):l+"/skins/"+k.settings.skin+"/ui.css");if(n.skin_variant){i.loadCSS(l+"/skins/"+k.settings.skin+"/ui_"+n.skin_variant+".css")}},_isHighContrast:function(){var j,k=i.add(i.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});j=(i.getStyle(k,"background-color",true)+"").toLowerCase().replace(/ /g,"");i.remove(k);return j!="rgb(171,239,86)"&&j!="#abef56"},createControl:function(m,j){var k,l;if(l=j.createControl(m)){return l}switch(m){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((k=this.controls[m])){return j.createButton(m,{title:"advanced."+k[0],cmd:k[1],ui:k[2],value:k[3]})}},execCommand:function(l,k,m){var j=this["_"+l];if(j){j.call(this,k,m);return true}return false},_importClasses:function(l){var j=this.editor,k=j.controlManager.get("styleselect");if(k.getLength()==0){f(j.dom.getClasses(),function(q,m){var p="style_"+m,n;n={inline:"span",attributes:{"class":q["class"]},selector:"*"};j.formatter.register(p,n);k.add(q["class"],p,{style:function(){return b(j,n)}})})}},_createStyleSelect:function(o){var l=this,j=l.editor,k=j.controlManager,m;m=k.createListBox("styleselect",{title:"advanced.style_select",onselect:function(q){var r,n=[],p;f(m.items,function(s){n.push(s.value)});j.focus();j.undoManager.add();r=j.formatter.matchAll(n);h.each(r,function(s){if(!q||s==q){if(s){j.formatter.remove(s)}p=true}});if(!p){j.formatter.apply(q)}j.undoManager.add();j.nodeChanged();return false}});j.onPreInit.add(function(){var p=0,n=j.getParam("style_formats");if(n){f(n,function(q){var r,s=0;f(q,function(){s++});if(s>1){r=q.name=q.name||"style_"+(p++);j.formatter.register(r,q);m.add(q.title,r,{style:function(){return b(j,q)}})}else{m.add(q.title)}})}else{f(j.getParam("theme_advanced_styles","","hash"),function(t,s){var r,q;if(t){r="style_"+(p++);q={inline:"span",classes:t,selector:"*"};j.formatter.register(r,q);m.add(l.editor.translate(s),r,{style:function(){return b(j,q)}})}})}});if(m.getLength()==0){m.onPostRender.add(function(p,q){if(!m.NativeListBox){g.add(q.id+"_text","focus",l._importClasses,l);g.add(q.id+"_text","mousedown",l._importClasses,l);g.add(q.id+"_open","focus",l._importClasses,l);g.add(q.id+"_open","mousedown",l._importClasses,l)}else{g.add(q.id,"focus",l._importClasses,l)}})}return m},_createFontSelect:function(){var l,k=this,j=k.editor;l=j.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(m){var n=l.items[l.selectedIndex];if(!m&&n){j.execCommand("FontName",false,n.value);return}j.execCommand("FontName",false,m);l.select(function(o){return m==o});if(n&&n.value==m){l.select(null)}return false}});if(l){f(j.getParam("theme_advanced_fonts",k.settings.theme_advanced_fonts,"hash"),function(n,m){l.add(j.translate(m),n,{style:n.indexOf("dings")==-1?"font-family:"+n:""})})}return l},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(o){var p=n.items[n.selectedIndex];if(!o&&p){p=p.value;if(p["class"]){k.formatter.toggle("fontsize_class",{value:p["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,p.fontSize)}return}if(o["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}n.select(function(q){return o==q});if(p&&(p.value.fontSize==o.fontSize||p.value["class"]&&p.value["class"]==o["class"])){n.select(null)}return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(p,o){var q=p.fontSize;if(q>=1&&q<=7){q=m.sizes[parseInt(q)-1]+"pt"}n.add(o,p,{style:"font-size:"+q,"class":"mceFontSize"+(l++)+(" "+(p["class"]||""))})})}return n},_createBlockFormats:function(){var l,j={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},k=this;l=k.editor.controlManager.createListBox("formatselect",{title:"advanced.block",onselect:function(m){k.editor.execCommand("FormatBlock",false,m);return false}});if(l){f(k.editor.getParam("theme_advanced_blockformats",k.settings.theme_advanced_blockformats,"hash"),function(n,m){l.add(k.editor.translate(m!=n?m:j[n]),n,{"class":"mce_formatPreview mce_"+n,style:function(){return b(k.editor,{block:n})}})})}return l},_createForeColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_text_colors){m.colors=j}if(l.theme_advanced_default_foreground_color){m.default_color=l.theme_advanced_default_foreground_color}m.title="advanced.forecolor_desc";m.cmd="ForeColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("forecolor",m);return n},_createBackColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_background_colors){m.colors=j}if(l.theme_advanced_default_background_color){m.default_color=l.theme_advanced_default_background_color}m.title="advanced.backcolor_desc";m.cmd="HiliteColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("backcolor",m);return n},renderUI:function(l){var q,m,r,w=this,u=w.editor,x=w.settings,v,k,j;if(u.settings){u.settings.aria_label=x.aria_label+u.getLang("advanced.help_shortcut")}q=k=i.create("span",{role:"application","aria-labelledby":u.id+"_voice",id:u.id+"_parent","class":"mceEditor "+u.settings.skin+"Skin"+(x.skin_variant?" "+u.settings.skin+"Skin"+w._ufirst(x.skin_variant):"")+(u.settings.directionality=="rtl"?" mceRtl":"")});i.add(q,"span",{"class":"mceVoiceLabel",style:"display:none;",id:u.id+"_voice"},x.aria_label);if(!i.boxModel){q=i.add(q,"div",{"class":"mceOldBoxModel"})}q=v=i.add(q,"table",{role:"presentation",id:u.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});q=r=i.add(q,"tbody");switch((x.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":m=w._rowLayout(x,r,l);break;case"customlayout":m=u.execCallback("theme_advanced_custom_layout",x,r,l,k);break;default:m=w._simpleLayout(x,r,l,k)}q=l.targetNode;j=v.rows;i.addClass(j[0],"mceFirst");i.addClass(j[j.length-1],"mceLast");f(i.select("tr",r),function(o){i.addClass(o.firstChild,"mceFirst");i.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(i.get(x.theme_advanced_toolbar_container)){i.get(x.theme_advanced_toolbar_container).appendChild(k)}else{i.insertAfter(k,q)}g.add(u.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){w._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return false}});if(!u.getParam("accessibility_focus")){g.add(i.add(k,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(u.id).focus()})}if(x.theme_advanced_toolbar_location=="external"){l.deltaHeight=0}w.deltaHeight=l.deltaHeight;l.targetNode=null;u.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){if(h.isWebKit){window.focus()}w.toolbarGroup.focus();return g.cancel(n)}else{if(n.keyCode===o){i.get(p.id+"_path_row").focus();return g.cancel(n)}}}});u.addShortcut("alt+0","","mceShortcuts",w);return{iframeContainer:m,editorContainer:u.id+"_parent",sizeContainer:v,deltaHeight:l.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:h.majorVersion+"."+h.minorVersion}},resizeBy:function(j,k){var l=i.get(this.editor.id+"_ifr");this.resizeTo(l.clientWidth+j,l.clientHeight+k)},resizeTo:function(j,n,l){var k=this.editor,m=this.settings,o=i.get(k.id+"_tbl"),p=i.get(k.id+"_ifr");j=Math.max(m.theme_advanced_resizing_min_width||100,j);n=Math.max(m.theme_advanced_resizing_min_height||100,n);j=Math.min(m.theme_advanced_resizing_max_width||65535,j);n=Math.min(m.theme_advanced_resizing_max_height||65535,n);i.setStyle(o,"height","");i.setStyle(p,"height",n);if(m.theme_advanced_resize_horizontal){i.setStyle(o,"width","");i.setStyle(p,"width",j);if(j<o.clientWidth){j=o.clientWidth;i.setStyle(p,"width",o.clientWidth)}}if(l&&m.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+k.id+"_size",{cw:j,ch:n})}},destroy:function(){var j=this.editor.id;g.clear(j+"_resize");g.clear(j+"_path_row");g.clear(j+"_external_close")},_simpleLayout:function(z,u,l,j){var y=this,v=y.editor,w=z.theme_advanced_toolbar_location,q=z.theme_advanced_statusbar_location,m,k,r,x;if(z.readonly){m=i.add(u,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"});return k}if(w=="top"){y._addToolbars(u,l)}if(w=="external"){m=x=i.create("div",{style:"position:relative"});m=i.add(m,"div",{id:v.id+"_external","class":"mceExternalToolbar"});i.add(m,"a",{id:v.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});m=i.add(m,"table",{id:v.id+"_tblext",cellSpacing:0,cellPadding:0});r=i.add(m,"tbody");if(j.firstChild.className=="mceOldBoxModel"){j.firstChild.appendChild(x)}else{j.insertBefore(x,j.firstChild)}y._addToolbars(r,l);v.onMouseUp.add(function(){var o=i.get(v.id+"_external");i.show(o);i.hide(e);var n=g.add(v.id+"_external_close","click",function(){i.hide(v.id+"_external");g.remove(v.id+"_external_close","click",n);return false});i.show(o);i.setStyle(o,"top",0-i.getRect(v.id+"_tblext").h-1);i.hide(o);i.show(o);o.style.filter="";e=v.id+"_external";o=null})}if(q=="top"){y._addStatusBar(u,l)}if(!z.theme_advanced_toolbar_container){m=i.add(u,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"})}if(w=="bottom"){y._addToolbars(u,l)}if(q=="bottom"){y._addStatusBar(u,l)}return k},_rowLayout:function(x,p,l){var w=this,q=w.editor,v,y,j=q.controlManager,m,k,u,r;v=x.theme_advanced_containers_default_class||"";y=x.theme_advanced_containers_default_align||"center";f(d(x.theme_advanced_containers||""),function(s,o){var n=x["theme_advanced_container_"+s]||"";switch(s.toLowerCase()){case"mceeditor":m=i.add(p,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":w._addStatusBar(p,l);break;default:r=(x["theme_advanced_container_"+s+"_align"]||y).toLowerCase();r="mce"+w._ufirst(r);m=i.add(i.add(p,"tr"),"td",{"class":"mceToolbar "+(x["theme_advanced_container_"+s+"_class"]||v)+" "+r||y});u=j.createToolbar("toolbar"+o);w._addControls(n,u);i.setHTML(m,u.renderHTML());l.deltaHeight-=x.theme_advanced_row_height}});return k},_addControls:function(k,j){var l=this,m=l.settings,n,o=l.editor.controlManager;if(m.theme_advanced_disable&&!l._disabled){n={};f(d(m.theme_advanced_disable),function(p){n[p]=1});l._disabled=n}else{n=l._disabled}f(d(k),function(q){var p;if(n&&n[q]){return}if(q=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(r){r=l.createControl(r,o);if(r){j.add(r)}});return}p=l.createControl(q,o);if(p){j.add(p)}})},_addToolbars:function(y,k){var B=this,q,p,u=B.editor,C=B.settings,A,j=u.controlManager,w,l,r=[],z,x,m=false;x=j.createToolbarGroup("toolbargroup",{name:u.getLang("advanced.toolbar"),tab_focus_toolbar:u.getParam("theme_advanced_tab_focus_toolbar")});B.toolbarGroup=x;z=C.theme_advanced_toolbar_align.toLowerCase();z="mce"+B._ufirst(z);l=i.add(i.add(y,"tr",{role:"presentation"}),"td",{"class":"mceToolbar "+z,role:"presentation"});for(q=1;(A=C["theme_advanced_buttons"+q]);q++){m=true;p=j.createToolbar("toolbar"+q,{"class":"mceToolbarRow"+q});if(C["theme_advanced_buttons"+q+"_add"]){A+=","+C["theme_advanced_buttons"+q+"_add"]}if(C["theme_advanced_buttons"+q+"_add_before"]){A=C["theme_advanced_buttons"+q+"_add_before"]+","+A}B._addControls(A,p);x.add(p);k.deltaHeight-=C.theme_advanced_row_height}if(!m){k.deltaHeight-=C.theme_advanced_row_height}r.push(x.renderHTML());r.push(i.createHTML("a",{href:"#",accesskey:"z",title:u.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+u.id+"').focus();"},"<!-- IE -->"));i.setHTML(l,r.join(""))},_addStatusBar:function(p,k){var l,w=this,q=w.editor,x=w.settings,j,u,v,m;l=i.add(p,"tr");l=m=i.add(l,"td",{"class":"mceStatusbar"});l=i.add(l,"div",{id:q.id+"_path_row",role:"group","aria-labelledby":q.id+"_path_voice"});if(x.theme_advanced_path){i.add(l,"span",{id:q.id+"_path_voice"},q.translate("advanced.path"));i.add(l,"span",{},": ")}else{i.add(l,"span",{},"&#160;")}if(x.theme_advanced_resizing){i.add(m,"a",{id:q.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize",tabIndex:"-1"});if(x.theme_advanced_resizing_use_cookie){q.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+q.id+"_size"),r=i.get(q.id+"_tbl");if(!n){return}w.resizeTo(n.cw,n.ch)})}q.onPostRender.add(function(){g.add(q.id+"_resize","click",function(n){n.preventDefault()});g.add(q.id+"_resize","mousedown",function(E){var t,r,s,o,D,A,B,G,n,F,y;function z(H){H.preventDefault();n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F)}function C(H){g.remove(i.doc,"mousemove",t);g.remove(q.getDoc(),"mousemove",r);g.remove(i.doc,"mouseup",s);g.remove(q.getDoc(),"mouseup",o);n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F,true);q.nodeChanged()}E.preventDefault();D=E.screenX;A=E.screenY;y=i.get(w.editor.id+"_ifr");B=n=y.clientWidth;G=F=y.clientHeight;t=g.add(i.doc,"mousemove",z);r=g.add(q.getDoc(),"mousemove",z);s=g.add(i.doc,"mouseup",C);o=g.add(q.getDoc(),"mouseup",C)})})}k.deltaHeight-=21;l=p=null},_updateUndoStatus:function(k){var j=k.controlManager,l=k.undoManager;j.setDisabled("undo",!l.hasUndo()&&!l.typing);j.setDisabled("redo",!l.hasRedo())},_nodeChanged:function(o,u,E,r,F){var z=this,D,G=0,y,H,A=z.settings,x,l,w,C,m,k,j;h.each(z.stateControls,function(n){u.setActive(n,o.queryCommandState(z.controls[n][1]))});function q(p){var s,n=F.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s<n.length;s++){if(t(n[s])){return n[s]}}}u.setActive("visualaid",o.hasVisual);z._updateUndoStatus(o);u.setDisabled("outdent",!o.queryCommandState("Outdent"));D=q("A");if(H=u.get("link")){H.setDisabled((!D&&r)||(D&&!D.href));H.setActive(!!D&&(!D.name&&!D.id))}if(H=u.get("unlink")){H.setDisabled(!D&&r);H.setActive(!!D&&!D.name&&!D.id)}if(H=u.get("anchor")){H.setActive(!r&&!!D&&(D.name||(D.id&&!D.href)))}D=q("IMG");if(H=u.get("image")){H.setActive(!r&&!!D&&E.className.indexOf("mceItem")==-1)}if(H=u.get("styleselect")){z._importClasses();k=[];f(H.items,function(n){k.push(n.value)});j=o.formatter.matchAll(k);H.select(j[0]);h.each(j,function(p,n){if(n>0){H.mark(p)}})}if(H=u.get("formatselect")){D=q(o.dom.isBlock);if(D){H.select(D.nodeName.toLowerCase())}}q(function(p){if(p.nodeName==="SPAN"){if(!x&&p.className){x=p.className}}if(o.dom.is(p,A.theme_advanced_font_selector)){if(!l&&p.style.fontSize){l=p.style.fontSize}if(!w&&p.style.fontFamily){w=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}if(!C&&p.style.color){C=p.style.color}if(!m&&p.style.backgroundColor){m=p.style.backgroundColor}}return false});if(H=u.get("fontselect")){H.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==w})}if(H=u.get("fontsizeselect")){if(A.theme_advanced_runtime_fontsize&&!l&&!x){l=o.dom.getStyle(E,"fontSize",true)}H.select(function(n){if(n.fontSize&&n.fontSize===l){return true}if(n["class"]&&n["class"]===x){return true}})}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_path&&A.theme_advanced_statusbar_location){D=i.get(o.id+"_path")||i.add(o.id+"_path_row","span",{id:o.id+"_path"});if(z.statusKeyboardNavigation){z.statusKeyboardNavigation.destroy();z.statusKeyboardNavigation=null}i.setHTML(D,"");q(function(I){var p=I.nodeName.toLowerCase(),s,v,t="";if(I.nodeType!=1||p==="br"||I.getAttribute("data-mce-bogus")||i.hasClass(I,"mceItemHidden")||i.hasClass(I,"mceItemRemoved")){return}if(h.isIE&&I.scopeName!=="HTML"&&I.scopeName){p=I.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(y=i.getAttrib(I,"src")){t+="src: "+y+" "}break;case"a":if(y=i.getAttrib(I,"name")){t+="name: "+y+" ";p+="#"+y}if(y=i.getAttrib(I,"href")){t+="href: "+y+" "}break;case"font":if(y=i.getAttrib(I,"face")){t+="font: "+y+" "}if(y=i.getAttrib(I,"size")){t+="size: "+y+" "}if(y=i.getAttrib(I,"color")){t+="color: "+y+" "}break;case"span":if(y=i.getAttrib(I,"style")){t+="style: "+y+" "}break}if(y=i.getAttrib(I,"id")){t+="id: "+y+" "}if(y=I.className){y=y.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g,"");if(y){t+="class: "+y+" ";if(o.dom.isBlock(I)||p=="img"||p=="span"){p+="."+y}}}p=p.replace(/(html:)/g,"");p={name:p,node:I,title:t};z.onResolveName.dispatch(z,p);t=p.title;p=p.name;v=i.create("a",{href:"javascript:;",role:"button",onmousedown:"return false;",title:t,"class":"mcePath_"+(G++)},p);if(D.hasChildNodes()){D.insertBefore(i.create("span",{"aria-hidden":"true"},"\u00a0\u00bb "),D.firstChild);D.insertBefore(v,D.firstChild)}else{D.appendChild(v)}},o.getBody());if(i.select("a",D).length>0){z.statusKeyboardNavigation=new h.ui.KeyboardNavigation({root:o.id+"_path_row",items:i.select("a",D),excludeFromTabOrder:true,onCancel:function(){o.focus()}},i)}}},_sel:function(j){this.editor.execCommand("mceSelectNodeDepth",false,j)},_mceInsertAnchor:function(l,k){var j=this.editor;j.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(j.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(j.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var j=this.editor;j.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(j.getLang("advanced.charmap_delta_width",0)),height:265+parseInt(j.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var j=this.editor;j.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var j=this.editor;j.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(l,k){var j=this.editor;k=k||{};j.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(j.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(j.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:k.color,func:k.func,theme_url:this.url})},_mceCodeEditor:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(j.getParam("theme_advanced_source_editor_width",720)),height:parseInt(j.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(k,l){var j=this.editor;if(j.dom.getAttrib(j.selection.getNode(),"class","").indexOf("mceItem")!=-1){return}j.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(j.getLang("advanced.image_delta_width",0)),height:275+parseInt(j.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(j.getLang("advanced.link_delta_width",0)),height:200+parseInt(j.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var j=this.editor;j.windowManager.confirm("advanced.newdocument",function(k){if(k){j.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var j=this;this._mceColorPicker(0,{color:j.fgColor,func:function(k){j.fgColor=k;j.editor.execCommand("ForeColor",false,k)}})},_mceBackColor:function(){var j=this;this._mceColorPicker(0,{color:j.bgColor,func:function(k){j.bgColor=k;j.editor.execCommand("HiliteColor",false,k)}})},_ufirst:function(j){return j.substring(0,1).toUpperCase()+j.substring(1)}});h.ThemeManager.add("advanced",h.themes.AdvancedTheme)}(tinymce)); \ No newline at end of file
+(function(h){var i=h.DOM,g=h.dom.Event,c=h.extend,f=h.each,a=h.util.Cookie,e,d=h.explode;function b(p,m){var k,l,o=p.dom,j="",n,r;previewStyles=p.settings.preview_styles;if(previewStyles===false){return""}if(!previewStyles){previewStyles="font-family font-size font-weight text-decoration text-transform color background-color"}function q(s){return s.replace(/%(\w+)/g,"")}k=m.block||m.inline||"span";l=o.create(k);f(m.styles,function(t,s){t=q(t);if(t){o.setStyle(l,s,t)}});f(m.attributes,function(t,s){t=q(t);if(t){o.setAttrib(l,s,t)}});f(m.classes,function(s){s=q(s);if(!o.hasClass(l,s)){o.addClass(l,s)}});o.setStyles(l,{position:"absolute",left:-65535});p.getBody().appendChild(l);n=o.getStyle(p.getBody(),"fontSize",true);n=/px$/.test(n)?parseInt(n,10):0;f(previewStyles.split(" "),function(s){var t=o.getStyle(l,s,true);if(s=="background-color"&&/transparent|rgba\s*\([^)]+,\s*0\)/.test(t)){t=o.getStyle(p.getBody(),s,true);if(o.toHex(t).toLowerCase()=="#ffffff"){return}}if(s=="font-size"){if(/em|%$/.test(t)){if(n===0){return}t=parseFloat(t,10)/(/%$/.test(t)?100:1);t=(t*n)+"px"}}j+=s+":"+t+";"});o.remove(l);return j}h.ThemeManager.requireLangPack("advanced");h.create("tinymce.themes.AdvancedTheme",{sizes:[8,10,12,14,18,24,36],controls:{bold:["bold_desc","Bold"],italic:["italic_desc","Italic"],underline:["underline_desc","Underline"],strikethrough:["striketrough_desc","Strikethrough"],justifyleft:["justifyleft_desc","JustifyLeft"],justifycenter:["justifycenter_desc","JustifyCenter"],justifyright:["justifyright_desc","JustifyRight"],justifyfull:["justifyfull_desc","JustifyFull"],bullist:["bullist_desc","InsertUnorderedList"],numlist:["numlist_desc","InsertOrderedList"],outdent:["outdent_desc","Outdent"],indent:["indent_desc","Indent"],cut:["cut_desc","Cut"],copy:["copy_desc","Copy"],paste:["paste_desc","Paste"],undo:["undo_desc","Undo"],redo:["redo_desc","Redo"],link:["link_desc","mceLink"],unlink:["unlink_desc","unlink"],image:["image_desc","mceImage"],cleanup:["cleanup_desc","mceCleanup"],help:["help_desc","mceHelp"],code:["code_desc","mceCodeEditor"],hr:["hr_desc","InsertHorizontalRule"],removeformat:["removeformat_desc","RemoveFormat"],sub:["sub_desc","subscript"],sup:["sup_desc","superscript"],forecolor:["forecolor_desc","ForeColor"],forecolorpicker:["forecolor_desc","mceForeColor"],backcolor:["backcolor_desc","HiliteColor"],backcolorpicker:["backcolor_desc","mceBackColor"],charmap:["charmap_desc","mceCharMap"],visualaid:["visualaid_desc","mceToggleVisualAid"],anchor:["anchor_desc","mceInsertAnchor"],newdocument:["newdocument_desc","mceNewDocument"],blockquote:["blockquote_desc","mceBlockQuote"]},stateControls:["bold","italic","underline","strikethrough","bullist","numlist","justifyleft","justifycenter","justifyright","justifyfull","sub","sup","blockquote"],init:function(k,l){var m=this,n,j,p;m.editor=k;m.url=l;m.onResolveName=new h.util.Dispatcher(this);n=k.settings;k.forcedHighContrastMode=k.settings.detect_highcontrast&&m._isHighContrast();k.settings.skin=k.forcedHighContrastMode?"highcontrast":k.settings.skin;if(!n.theme_advanced_buttons1){n=c({theme_advanced_buttons1:"bold,italic,underline,strikethrough,|,justifyleft,justifycenter,justifyright,justifyfull,|,styleselect,formatselect",theme_advanced_buttons2:"bullist,numlist,|,outdent,indent,|,undo,redo,|,link,unlink,anchor,image,cleanup,help,code",theme_advanced_buttons3:"hr,removeformat,visualaid,|,sub,sup,|,charmap"},n)}m.settings=n=c({theme_advanced_path:true,theme_advanced_toolbar_location:"top",theme_advanced_blockformats:"p,address,pre,h1,h2,h3,h4,h5,h6",theme_advanced_toolbar_align:"left",theme_advanced_statusbar_location:"bottom",theme_advanced_fonts:"Andale Mono=andale mono,times;Arial=arial,helvetica,sans-serif;Arial Black=arial black,avant garde;Book Antiqua=book antiqua,palatino;Comic Sans MS=comic sans ms,sans-serif;Courier New=courier new,courier;Georgia=georgia,palatino;Helvetica=helvetica;Impact=impact,chicago;Symbol=symbol;Tahoma=tahoma,arial,helvetica,sans-serif;Terminal=terminal,monaco;Times New Roman=times new roman,times;Trebuchet MS=trebuchet ms,geneva;Verdana=verdana,geneva;Webdings=webdings;Wingdings=wingdings,zapf dingbats",theme_advanced_more_colors:1,theme_advanced_row_height:23,theme_advanced_resize_horizontal:1,theme_advanced_resizing_use_cookie:1,theme_advanced_font_sizes:"1,2,3,4,5,6,7",theme_advanced_font_selector:"span",theme_advanced_show_current_color:0,readonly:k.settings.readonly},n);if(!n.font_size_style_values){n.font_size_style_values="8pt,10pt,12pt,14pt,18pt,24pt,36pt"}if(h.is(n.theme_advanced_font_sizes,"string")){n.font_size_style_values=h.explode(n.font_size_style_values);n.font_size_classes=h.explode(n.font_size_classes||"");p={};k.settings.theme_advanced_font_sizes=n.theme_advanced_font_sizes;f(k.getParam("theme_advanced_font_sizes","","hash"),function(r,q){var o;if(q==r&&r>=1&&r<=7){q=r+" ("+m.sizes[r-1]+"pt)";o=n.font_size_classes[r-1];r=n.font_size_style_values[r-1]||(m.sizes[r-1]+"pt")}if(/^\s*\./.test(r)){o=r.replace(/\./g,"")}p[q]=o?{"class":o}:{fontSize:r}});n.theme_advanced_font_sizes=p}if((j=n.theme_advanced_path_location)&&j!="none"){n.theme_advanced_statusbar_location=n.theme_advanced_path_location}if(n.theme_advanced_statusbar_location=="none"){n.theme_advanced_statusbar_location=0}if(k.settings.content_css!==false){k.contentCSS.push(k.baseURI.toAbsolute(l+"/skins/"+k.settings.skin+"/content.css"))}k.onInit.add(function(){if(!k.settings.readonly){k.onNodeChange.add(m._nodeChanged,m);k.onKeyUp.add(m._updateUndoStatus,m);k.onMouseUp.add(m._updateUndoStatus,m);k.dom.bind(k.dom.getRoot(),"dragend",function(){m._updateUndoStatus(k)})}});k.onSetProgressState.add(function(r,o,s){var t,u=r.id,q;if(o){m.progressTimer=setTimeout(function(){t=r.getContainer();t=t.insertBefore(i.create("DIV",{style:"position:relative"}),t.firstChild);q=i.get(r.id+"_tbl");i.add(t,"div",{id:u+"_blocker","class":"mceBlocker",style:{width:q.clientWidth+2,height:q.clientHeight+2}});i.add(t,"div",{id:u+"_progress","class":"mceProgress",style:{left:q.clientWidth/2,top:q.clientHeight/2}})},s||0)}else{i.remove(u+"_blocker");i.remove(u+"_progress");clearTimeout(m.progressTimer)}});i.loadCSS(n.editor_css?k.documentBaseURI.toAbsolute(n.editor_css):l+"/skins/"+k.settings.skin+"/ui.css");if(n.skin_variant){i.loadCSS(l+"/skins/"+k.settings.skin+"/ui_"+n.skin_variant+".css")}},_isHighContrast:function(){var j,k=i.add(i.getRoot(),"div",{style:"background-color: rgb(171,239,86);"});j=(i.getStyle(k,"background-color",true)+"").toLowerCase().replace(/ /g,"");i.remove(k);return j!="rgb(171,239,86)"&&j!="#abef56"},createControl:function(m,j){var k,l;if(l=j.createControl(m)){return l}switch(m){case"styleselect":return this._createStyleSelect();case"formatselect":return this._createBlockFormats();case"fontselect":return this._createFontSelect();case"fontsizeselect":return this._createFontSizeSelect();case"forecolor":return this._createForeColorMenu();case"backcolor":return this._createBackColorMenu()}if((k=this.controls[m])){return j.createButton(m,{title:"advanced."+k[0],cmd:k[1],ui:k[2],value:k[3]})}},execCommand:function(l,k,m){var j=this["_"+l];if(j){j.call(this,k,m);return true}return false},_importClasses:function(l){var j=this.editor,k=j.controlManager.get("styleselect");if(k.getLength()==0){f(j.dom.getClasses(),function(q,m){var p="style_"+m,n;n={inline:"span",attributes:{"class":q["class"]},selector:"*"};j.formatter.register(p,n);k.add(q["class"],p,{style:function(){return b(j,n)}})})}},_createStyleSelect:function(o){var l=this,j=l.editor,k=j.controlManager,m;m=k.createListBox("styleselect",{title:"advanced.style_select",onselect:function(q){var r,n=[],p;f(m.items,function(s){n.push(s.value)});j.focus();j.undoManager.add();r=j.formatter.matchAll(n);h.each(r,function(s){if(!q||s==q){if(s){j.formatter.remove(s)}p=true}});if(!p){j.formatter.apply(q)}j.undoManager.add();j.nodeChanged();return false}});j.onPreInit.add(function(){var p=0,n=j.getParam("style_formats");if(n){f(n,function(q){var r,s=0;f(q,function(){s++});if(s>1){r=q.name=q.name||"style_"+(p++);j.formatter.register(r,q);m.add(q.title,r,{style:function(){return b(j,q)}})}else{m.add(q.title)}})}else{f(j.getParam("theme_advanced_styles","","hash"),function(t,s){var r,q;if(t){r="style_"+(p++);q={inline:"span",classes:t,selector:"*"};j.formatter.register(r,q);m.add(l.editor.translate(s),r,{style:function(){return b(j,q)}})}})}});if(m.getLength()==0){m.onPostRender.add(function(p,q){if(!m.NativeListBox){g.add(q.id+"_text","focus",l._importClasses,l);g.add(q.id+"_text","mousedown",l._importClasses,l);g.add(q.id+"_open","focus",l._importClasses,l);g.add(q.id+"_open","mousedown",l._importClasses,l)}else{g.add(q.id,"focus",l._importClasses,l)}})}return m},_createFontSelect:function(){var l,k=this,j=k.editor;l=j.controlManager.createListBox("fontselect",{title:"advanced.fontdefault",onselect:function(m){var n=l.items[l.selectedIndex];if(!m&&n){j.execCommand("FontName",false,n.value);return}j.execCommand("FontName",false,m);l.select(function(o){return m==o});if(n&&n.value==m){l.select(null)}return false}});if(l){f(j.getParam("theme_advanced_fonts",k.settings.theme_advanced_fonts,"hash"),function(n,m){l.add(j.translate(m),n,{style:n.indexOf("dings")==-1?"font-family:"+n:""})})}return l},_createFontSizeSelect:function(){var m=this,k=m.editor,n,l=0,j=[];n=k.controlManager.createListBox("fontsizeselect",{title:"advanced.font_size",onselect:function(o){var p=n.items[n.selectedIndex];if(!o&&p){p=p.value;if(p["class"]){k.formatter.toggle("fontsize_class",{value:p["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,p.fontSize)}return}if(o["class"]){k.focus();k.undoManager.add();k.formatter.toggle("fontsize_class",{value:o["class"]});k.undoManager.add();k.nodeChanged()}else{k.execCommand("FontSize",false,o.fontSize)}n.select(function(q){return o==q});if(p&&(p.value.fontSize==o.fontSize||p.value["class"]&&p.value["class"]==o["class"])){n.select(null)}return false}});if(n){f(m.settings.theme_advanced_font_sizes,function(p,o){var q=p.fontSize;if(q>=1&&q<=7){q=m.sizes[parseInt(q)-1]+"pt"}n.add(o,p,{style:"font-size:"+q,"class":"mceFontSize"+(l++)+(" "+(p["class"]||""))})})}return n},_createBlockFormats:function(){var l,j={p:"advanced.paragraph",address:"advanced.address",pre:"advanced.pre",h1:"advanced.h1",h2:"advanced.h2",h3:"advanced.h3",h4:"advanced.h4",h5:"advanced.h5",h6:"advanced.h6",div:"advanced.div",blockquote:"advanced.blockquote",code:"advanced.code",dt:"advanced.dt",dd:"advanced.dd",samp:"advanced.samp"},k=this;l=k.editor.controlManager.createListBox("formatselect",{title:"advanced.block",onselect:function(m){k.editor.execCommand("FormatBlock",false,m);return false}});if(l){f(k.editor.getParam("theme_advanced_blockformats",k.settings.theme_advanced_blockformats,"hash"),function(n,m){l.add(k.editor.translate(m!=n?m:j[n]),n,{"class":"mce_formatPreview mce_"+n,style:function(){return b(k.editor,{block:n})}})})}return l},_createForeColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_text_colors){m.colors=j}if(l.theme_advanced_default_foreground_color){m.default_color=l.theme_advanced_default_foreground_color}m.title="advanced.forecolor_desc";m.cmd="ForeColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("forecolor",m);return n},_createBackColorMenu:function(){var n,k=this,l=k.settings,m={},j;if(l.theme_advanced_more_colors){m.more_colors_func=function(){k._mceColorPicker(0,{color:n.value,func:function(o){n.setColor(o)}})}}if(j=l.theme_advanced_background_colors){m.colors=j}if(l.theme_advanced_default_background_color){m.default_color=l.theme_advanced_default_background_color}m.title="advanced.backcolor_desc";m.cmd="HiliteColor";m.scope=this;n=k.editor.controlManager.createColorSplitButton("backcolor",m);return n},renderUI:function(l){var q,m,r,w=this,u=w.editor,x=w.settings,v,k,j;if(u.settings){u.settings.aria_label=x.aria_label+u.getLang("advanced.help_shortcut")}q=k=i.create("span",{role:"application","aria-labelledby":u.id+"_voice",id:u.id+"_parent","class":"mceEditor "+u.settings.skin+"Skin"+(x.skin_variant?" "+u.settings.skin+"Skin"+w._ufirst(x.skin_variant):"")+(u.settings.directionality=="rtl"?" mceRtl":"")});i.add(q,"span",{"class":"mceVoiceLabel",style:"display:none;",id:u.id+"_voice"},x.aria_label);if(!i.boxModel){q=i.add(q,"div",{"class":"mceOldBoxModel"})}q=v=i.add(q,"table",{role:"presentation",id:u.id+"_tbl","class":"mceLayout",cellSpacing:0,cellPadding:0});q=r=i.add(q,"tbody");switch((x.theme_advanced_layout_manager||"").toLowerCase()){case"rowlayout":m=w._rowLayout(x,r,l);break;case"customlayout":m=u.execCallback("theme_advanced_custom_layout",x,r,l,k);break;default:m=w._simpleLayout(x,r,l,k)}q=l.targetNode;j=v.rows;i.addClass(j[0],"mceFirst");i.addClass(j[j.length-1],"mceLast");f(i.select("tr",r),function(o){i.addClass(o.firstChild,"mceFirst");i.addClass(o.childNodes[o.childNodes.length-1],"mceLast")});if(i.get(x.theme_advanced_toolbar_container)){i.get(x.theme_advanced_toolbar_container).appendChild(k)}else{i.insertAfter(k,q)}g.add(u.id+"_path_row","click",function(n){n=n.target;if(n.nodeName=="A"){w._sel(n.className.replace(/^.*mcePath_([0-9]+).*$/,"$1"));return false}});if(!u.getParam("accessibility_focus")){g.add(i.add(k,"a",{href:"#"},"<!-- IE -->"),"focus",function(){tinyMCE.get(u.id).focus()})}if(x.theme_advanced_toolbar_location=="external"){l.deltaHeight=0}w.deltaHeight=l.deltaHeight;l.targetNode=null;u.onKeyDown.add(function(p,n){var s=121,o=122;if(n.altKey){if(n.keyCode===s){if(h.isWebKit){window.focus()}w.toolbarGroup.focus();return g.cancel(n)}else{if(n.keyCode===o){i.get(p.id+"_path_row").focus();return g.cancel(n)}}}});u.addShortcut("alt+0","","mceShortcuts",w);return{iframeContainer:m,editorContainer:u.id+"_parent",sizeContainer:v,deltaHeight:l.deltaHeight}},getInfo:function(){return{longname:"Advanced theme",author:"Moxiecode Systems AB",authorurl:"http://tinymce.moxiecode.com",version:h.majorVersion+"."+h.minorVersion}},resizeBy:function(j,k){var l=i.get(this.editor.id+"_ifr");this.resizeTo(l.clientWidth+j,l.clientHeight+k)},resizeTo:function(j,n,l){var k=this.editor,m=this.settings,o=i.get(k.id+"_tbl"),p=i.get(k.id+"_ifr");j=Math.max(m.theme_advanced_resizing_min_width||100,j);n=Math.max(m.theme_advanced_resizing_min_height||100,n);j=Math.min(m.theme_advanced_resizing_max_width||65535,j);n=Math.min(m.theme_advanced_resizing_max_height||65535,n);i.setStyle(o,"height","");i.setStyle(p,"height",n);if(m.theme_advanced_resize_horizontal){i.setStyle(o,"width","");i.setStyle(p,"width",j);if(j<o.clientWidth){j=o.clientWidth;i.setStyle(p,"width",o.clientWidth)}}if(l&&m.theme_advanced_resizing_use_cookie){a.setHash("TinyMCE_"+k.id+"_size",{cw:j,ch:n})}},destroy:function(){var j=this.editor.id;g.clear(j+"_resize");g.clear(j+"_path_row");g.clear(j+"_external_close")},_simpleLayout:function(z,u,l,j){var y=this,v=y.editor,w=z.theme_advanced_toolbar_location,q=z.theme_advanced_statusbar_location,m,k,r,x;if(z.readonly){m=i.add(u,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"});return k}if(w=="top"){y._addToolbars(u,l)}if(w=="external"){m=x=i.create("div",{style:"position:relative"});m=i.add(m,"div",{id:v.id+"_external","class":"mceExternalToolbar"});i.add(m,"a",{id:v.id+"_external_close",href:"javascript:;","class":"mceExternalClose"});m=i.add(m,"table",{id:v.id+"_tblext",cellSpacing:0,cellPadding:0});r=i.add(m,"tbody");if(j.firstChild.className=="mceOldBoxModel"){j.firstChild.appendChild(x)}else{j.insertBefore(x,j.firstChild)}y._addToolbars(r,l);v.onMouseUp.add(function(){var o=i.get(v.id+"_external");i.show(o);i.hide(e);var n=g.add(v.id+"_external_close","click",function(){i.hide(v.id+"_external");g.remove(v.id+"_external_close","click",n);return false});i.show(o);i.setStyle(o,"top",0-i.getRect(v.id+"_tblext").h-1);i.hide(o);i.show(o);o.style.filter="";e=v.id+"_external";o=null})}if(q=="top"){y._addStatusBar(u,l)}if(!z.theme_advanced_toolbar_container){m=i.add(u,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"})}if(w=="bottom"){y._addToolbars(u,l)}if(q=="bottom"){y._addStatusBar(u,l)}return k},_rowLayout:function(x,p,l){var w=this,q=w.editor,v,y,j=q.controlManager,m,k,u,r;v=x.theme_advanced_containers_default_class||"";y=x.theme_advanced_containers_default_align||"center";f(d(x.theme_advanced_containers||""),function(s,o){var n=x["theme_advanced_container_"+s]||"";switch(s.toLowerCase()){case"mceeditor":m=i.add(p,"tr");m=k=i.add(m,"td",{"class":"mceIframeContainer"});break;case"mceelementpath":w._addStatusBar(p,l);break;default:r=(x["theme_advanced_container_"+s+"_align"]||y).toLowerCase();r="mce"+w._ufirst(r);m=i.add(i.add(p,"tr"),"td",{"class":"mceToolbar "+(x["theme_advanced_container_"+s+"_class"]||v)+" "+r||y});u=j.createToolbar("toolbar"+o);w._addControls(n,u);i.setHTML(m,u.renderHTML());l.deltaHeight-=x.theme_advanced_row_height}});return k},_addControls:function(k,j){var l=this,m=l.settings,n,o=l.editor.controlManager;if(m.theme_advanced_disable&&!l._disabled){n={};f(d(m.theme_advanced_disable),function(p){n[p]=1});l._disabled=n}else{n=l._disabled}f(d(k),function(q){var p;if(n&&n[q]){return}if(q=="tablecontrols"){f(["table","|","row_props","cell_props","|","row_before","row_after","delete_row","|","col_before","col_after","delete_col","|","split_cells","merge_cells"],function(r){r=l.createControl(r,o);if(r){j.add(r)}});return}p=l.createControl(q,o);if(p){j.add(p)}})},_addToolbars:function(y,k){var B=this,q,p,u=B.editor,C=B.settings,A,j=u.controlManager,w,l,r=[],z,x,m=false;x=j.createToolbarGroup("toolbargroup",{name:u.getLang("advanced.toolbar"),tab_focus_toolbar:u.getParam("theme_advanced_tab_focus_toolbar")});B.toolbarGroup=x;z=C.theme_advanced_toolbar_align.toLowerCase();z="mce"+B._ufirst(z);l=i.add(i.add(y,"tr",{role:"presentation"}),"td",{"class":"mceToolbar "+z,role:"toolbar"});for(q=1;(A=C["theme_advanced_buttons"+q]);q++){m=true;p=j.createToolbar("toolbar"+q,{"class":"mceToolbarRow"+q});if(C["theme_advanced_buttons"+q+"_add"]){A+=","+C["theme_advanced_buttons"+q+"_add"]}if(C["theme_advanced_buttons"+q+"_add_before"]){A=C["theme_advanced_buttons"+q+"_add_before"]+","+A}B._addControls(A,p);x.add(p);k.deltaHeight-=C.theme_advanced_row_height}if(!m){k.deltaHeight-=C.theme_advanced_row_height}r.push(x.renderHTML());r.push(i.createHTML("a",{href:"#",accesskey:"z",title:u.getLang("advanced.toolbar_focus"),onfocus:"tinyMCE.getInstanceById('"+u.id+"').focus();"},"<!-- IE -->"));i.setHTML(l,r.join(""))},_addStatusBar:function(p,k){var l,w=this,q=w.editor,x=w.settings,j,u,v,m;l=i.add(p,"tr");l=m=i.add(l,"td",{"class":"mceStatusbar"});l=i.add(l,"div",{id:q.id+"_path_row",role:"group","aria-labelledby":q.id+"_path_voice"});if(x.theme_advanced_path){i.add(l,"span",{id:q.id+"_path_voice"},q.translate("advanced.path"));i.add(l,"span",{},": ")}else{i.add(l,"span",{},"&#160;")}if(x.theme_advanced_resizing){i.add(m,"a",{id:q.id+"_resize",href:"javascript:;",onclick:"return false;","class":"mceResize",tabIndex:"-1"});if(x.theme_advanced_resizing_use_cookie){q.onPostRender.add(function(){var n=a.getHash("TinyMCE_"+q.id+"_size"),r=i.get(q.id+"_tbl");if(!n){return}w.resizeTo(n.cw,n.ch)})}q.onPostRender.add(function(){g.add(q.id+"_resize","click",function(n){n.preventDefault()});g.add(q.id+"_resize","mousedown",function(E){var t,r,s,o,D,A,B,G,n,F,y;function z(H){H.preventDefault();n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F)}function C(H){g.remove(i.doc,"mousemove",t);g.remove(q.getDoc(),"mousemove",r);g.remove(i.doc,"mouseup",s);g.remove(q.getDoc(),"mouseup",o);n=B+(H.screenX-D);F=G+(H.screenY-A);w.resizeTo(n,F,true);q.nodeChanged()}E.preventDefault();D=E.screenX;A=E.screenY;y=i.get(w.editor.id+"_ifr");B=n=y.clientWidth;G=F=y.clientHeight;t=g.add(i.doc,"mousemove",z);r=g.add(q.getDoc(),"mousemove",z);s=g.add(i.doc,"mouseup",C);o=g.add(q.getDoc(),"mouseup",C)})})}k.deltaHeight-=21;l=p=null},_updateUndoStatus:function(k){var j=k.controlManager,l=k.undoManager;j.setDisabled("undo",!l.hasUndo()&&!l.typing);j.setDisabled("redo",!l.hasRedo())},_nodeChanged:function(o,u,E,r,F){var z=this,D,G=0,y,H,A=z.settings,x,l,w,C,m,k,j;h.each(z.stateControls,function(n){u.setActive(n,o.queryCommandState(z.controls[n][1]))});function q(p){var s,n=F.parents,t=p;if(typeof(p)=="string"){t=function(v){return v.nodeName==p}}for(s=0;s<n.length;s++){if(t(n[s])){return n[s]}}}u.setActive("visualaid",o.hasVisual);z._updateUndoStatus(o);u.setDisabled("outdent",!o.queryCommandState("Outdent"));D=q("A");if(H=u.get("link")){H.setDisabled((!D&&r)||(D&&!D.href));H.setActive(!!D&&(!D.name&&!D.id))}if(H=u.get("unlink")){H.setDisabled(!D&&r);H.setActive(!!D&&!D.name&&!D.id)}if(H=u.get("anchor")){H.setActive(!r&&!!D&&(D.name||(D.id&&!D.href)))}D=q("IMG");if(H=u.get("image")){H.setActive(!r&&!!D&&E.className.indexOf("mceItem")==-1)}if(H=u.get("styleselect")){z._importClasses();k=[];f(H.items,function(n){k.push(n.value)});j=o.formatter.matchAll(k);H.select(j[0]);h.each(j,function(p,n){if(n>0){H.mark(p)}})}if(H=u.get("formatselect")){D=q(o.dom.isBlock);if(D){H.select(D.nodeName.toLowerCase())}}q(function(p){if(p.nodeName==="SPAN"){if(!x&&p.className){x=p.className}}if(o.dom.is(p,A.theme_advanced_font_selector)){if(!l&&p.style.fontSize){l=p.style.fontSize}if(!w&&p.style.fontFamily){w=p.style.fontFamily.replace(/[\"\']+/g,"").replace(/^([^,]+).*/,"$1").toLowerCase()}if(!C&&p.style.color){C=p.style.color}if(!m&&p.style.backgroundColor){m=p.style.backgroundColor}}return false});if(H=u.get("fontselect")){H.select(function(n){return n.replace(/^([^,]+).*/,"$1").toLowerCase()==w})}if(H=u.get("fontsizeselect")){if(A.theme_advanced_runtime_fontsize&&!l&&!x){l=o.dom.getStyle(E,"fontSize",true)}H.select(function(n){if(n.fontSize&&n.fontSize===l){return true}if(n["class"]&&n["class"]===x){return true}})}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_show_current_color){function B(p,n){if(H=u.get(p)){if(!n){n=H.settings.default_color}if(n!==H.value){H.displayColor(n)}}}B("forecolor",C);B("backcolor",m)}if(A.theme_advanced_path&&A.theme_advanced_statusbar_location){D=i.get(o.id+"_path")||i.add(o.id+"_path_row","span",{id:o.id+"_path"});if(z.statusKeyboardNavigation){z.statusKeyboardNavigation.destroy();z.statusKeyboardNavigation=null}i.setHTML(D,"");q(function(I){var p=I.nodeName.toLowerCase(),s,v,t="";if(I.nodeType!=1||p==="br"||I.getAttribute("data-mce-bogus")||i.hasClass(I,"mceItemHidden")||i.hasClass(I,"mceItemRemoved")){return}if(h.isIE&&I.scopeName!=="HTML"&&I.scopeName){p=I.scopeName+":"+p}p=p.replace(/mce\:/g,"");switch(p){case"b":p="strong";break;case"i":p="em";break;case"img":if(y=i.getAttrib(I,"src")){t+="src: "+y+" "}break;case"a":if(y=i.getAttrib(I,"name")){t+="name: "+y+" ";p+="#"+y}if(y=i.getAttrib(I,"href")){t+="href: "+y+" "}break;case"font":if(y=i.getAttrib(I,"face")){t+="font: "+y+" "}if(y=i.getAttrib(I,"size")){t+="size: "+y+" "}if(y=i.getAttrib(I,"color")){t+="color: "+y+" "}break;case"span":if(y=i.getAttrib(I,"style")){t+="style: "+y+" "}break}if(y=i.getAttrib(I,"id")){t+="id: "+y+" "}if(y=I.className){y=y.replace(/\b\s*(webkit|mce|Apple-)\w+\s*\b/g,"");if(y){t+="class: "+y+" ";if(o.dom.isBlock(I)||p=="img"||p=="span"){p+="."+y}}}p=p.replace(/(html:)/g,"");p={name:p,node:I,title:t};z.onResolveName.dispatch(z,p);t=p.title;p=p.name;v=i.create("a",{href:"javascript:;",role:"button",onmousedown:"return false;",title:t,"class":"mcePath_"+(G++)},p);if(D.hasChildNodes()){D.insertBefore(i.create("span",{"aria-hidden":"true"},"\u00a0\u00bb "),D.firstChild);D.insertBefore(v,D.firstChild)}else{D.appendChild(v)}},o.getBody());if(i.select("a",D).length>0){z.statusKeyboardNavigation=new h.ui.KeyboardNavigation({root:o.id+"_path_row",items:i.select("a",D),excludeFromTabOrder:true,onCancel:function(){o.focus()}},i)}}},_sel:function(j){this.editor.execCommand("mceSelectNodeDepth",false,j)},_mceInsertAnchor:function(l,k){var j=this.editor;j.windowManager.open({url:this.url+"/anchor.htm",width:320+parseInt(j.getLang("advanced.anchor_delta_width",0)),height:90+parseInt(j.getLang("advanced.anchor_delta_height",0)),inline:true},{theme_url:this.url})},_mceCharMap:function(){var j=this.editor;j.windowManager.open({url:this.url+"/charmap.htm",width:550+parseInt(j.getLang("advanced.charmap_delta_width",0)),height:265+parseInt(j.getLang("advanced.charmap_delta_height",0)),inline:true},{theme_url:this.url})},_mceHelp:function(){var j=this.editor;j.windowManager.open({url:this.url+"/about.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceShortcuts:function(){var j=this.editor;j.windowManager.open({url:this.url+"/shortcuts.htm",width:480,height:380,inline:true},{theme_url:this.url})},_mceColorPicker:function(l,k){var j=this.editor;k=k||{};j.windowManager.open({url:this.url+"/color_picker.htm",width:375+parseInt(j.getLang("advanced.colorpicker_delta_width",0)),height:250+parseInt(j.getLang("advanced.colorpicker_delta_height",0)),close_previous:false,inline:true},{input_color:k.color,func:k.func,theme_url:this.url})},_mceCodeEditor:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/source_editor.htm",width:parseInt(j.getParam("theme_advanced_source_editor_width",720)),height:parseInt(j.getParam("theme_advanced_source_editor_height",580)),inline:true,resizable:true,maximizable:true},{theme_url:this.url})},_mceImage:function(k,l){var j=this.editor;if(j.dom.getAttrib(j.selection.getNode(),"class","").indexOf("mceItem")!=-1){return}j.windowManager.open({url:this.url+"/image.htm",width:355+parseInt(j.getLang("advanced.image_delta_width",0)),height:275+parseInt(j.getLang("advanced.image_delta_height",0)),inline:true},{theme_url:this.url})},_mceLink:function(k,l){var j=this.editor;j.windowManager.open({url:this.url+"/link.htm",width:310+parseInt(j.getLang("advanced.link_delta_width",0)),height:200+parseInt(j.getLang("advanced.link_delta_height",0)),inline:true},{theme_url:this.url})},_mceNewDocument:function(){var j=this.editor;j.windowManager.confirm("advanced.newdocument",function(k){if(k){j.execCommand("mceSetContent",false,"")}})},_mceForeColor:function(){var j=this;this._mceColorPicker(0,{color:j.fgColor,func:function(k){j.fgColor=k;j.editor.execCommand("ForeColor",false,k)}})},_mceBackColor:function(){var j=this;this._mceColorPicker(0,{color:j.bgColor,func:function(k){j.bgColor=k;j.editor.execCommand("HiliteColor",false,k)}})},_ufirst:function(j){return j.substring(0,1).toUpperCase()+j.substring(1)}});h.ThemeManager.add("advanced",h.themes.AdvancedTheme)}(tinymce)); \ No newline at end of file
diff --git a/program/js/tiny_mce/themes/advanced/editor_template_src.js b/program/js/tiny_mce/themes/advanced/editor_template_src.js
index afd722d13..82166dcb6 100644
--- a/program/js/tiny_mce/themes/advanced/editor_template_src.js
+++ b/program/js/tiny_mce/themes/advanced/editor_template_src.js
@@ -150,7 +150,7 @@
init : function(ed, url) {
var t = this, s, v, o;
-
+
t.editor = ed;
t.url = url;
t.onResolveName = new tinymce.util.Dispatcher(this);
@@ -167,7 +167,7 @@
theme_advanced_buttons3 : "hr,removeformat,visualaid,|,sub,sup,|,charmap"
}, s);
}
-
+
// Default settings
t.settings = s = extend({
theme_advanced_path : true,
@@ -678,7 +678,7 @@
if (DOM.get(ed.id + '_path_row')) {
Event.add(ed.id + '_tbl', 'mouseover', function(e) {
var re;
-
+
e = e.target;
if (e.nodeName == 'SPAN' && DOM.hasClass(e.parentNode, 'mceButton')) {
@@ -956,7 +956,7 @@
a = s.theme_advanced_toolbar_align.toLowerCase();
a = 'mce' + t._ufirst(a);
- n = DOM.add(DOM.add(c, 'tr', {role: 'presentation'}), 'td', {'class' : 'mceToolbar ' + a, "role":"presentation"});
+ n = DOM.add(DOM.add(c, 'tr', {role: 'presentation'}), 'td', {'class' : 'mceToolbar ' + a, "role":"toolbar"});
// Create toolbar and add the controls
for (i=1; (v = s['theme_advanced_buttons' + i]); i++) {
@@ -986,7 +986,7 @@
var n, t = this, ed = t.editor, s = t.settings, r, mf, me, td;
n = DOM.add(tb, 'tr');
- n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'});
+ n = td = DOM.add(n, 'td', {'class' : 'mceStatusbar'});
n = DOM.add(n, 'div', {id : ed.id + '_path_row', 'role': 'group', 'aria-labelledby': ed.id + '_path_voice'});
if (s.theme_advanced_path) {
DOM.add(n, 'span', {id: ed.id + '_path_voice'}, ed.translate('advanced.path'));
@@ -994,7 +994,7 @@
} else {
DOM.add(n, 'span', {}, '&#160;');
}
-
+
if (s.theme_advanced_resizing) {
DOM.add(td, 'a', {id : ed.id + '_resize', href : 'javascript:;', onclick : "return false;", 'class' : 'mceResize', tabIndex:"-1"});
@@ -1154,7 +1154,7 @@
if (!fn && n.style.fontFamily)
fn = n.style.fontFamily.replace(/[\"\']+/g, '').replace(/^([^,]+).*/, '$1').toLowerCase();
-
+
if (!fc && n.style.color)
fc = n.style.color;
@@ -1185,7 +1185,7 @@
return true;
});
}
-
+
if (s.theme_advanced_show_current_color) {
function updateColor(controlId, color) {
if (c = cm.get(controlId)) {
diff --git a/program/js/tiny_mce/themes/advanced/langs/en_dlg.js b/program/js/tiny_mce/themes/advanced/langs/en_dlg.js
index e451f3774..50cd87e3d 100644
--- a/program/js/tiny_mce/themes/advanced/langs/en_dlg.js
+++ b/program/js/tiny_mce/themes/advanced/langs/en_dlg.js
@@ -1 +1 @@
-tinyMCE.addI18n('en.advanced_dlg',{"link_list":"Link List","link_is_external":"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?","link_is_email":"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?","link_titlefield":"Title","link_target_blank":"Open Link in a New Window","link_target_same":"Open Link in the Same Window","link_target":"Target","link_url":"Link URL","link_title":"Insert/Edit Link","image_align_right":"Right","image_align_left":"Left","image_align_textbottom":"Text Bottom","image_align_texttop":"Text Top","image_align_bottom":"Bottom","image_align_middle":"Middle","image_align_top":"Top","image_align_baseline":"Baseline","image_align":"Alignment","image_hspace":"Horizontal Space","image_vspace":"Vertical Space","image_dimensions":"Dimensions","image_alt":"Image Description","image_list":"Image List","image_border":"Border","image_src":"Image URL","image_title":"Insert/Edit Image","charmap_title":"Select Special Character","colorpicker_name":"Name:","colorpicker_color":"Color:","colorpicker_named_title":"Named Colors","colorpicker_named_tab":"Named","colorpicker_palette_title":"Palette Colors","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Color Picker","colorpicker_picker_tab":"Picker","colorpicker_title":"Select a Color","code_wordwrap":"Word Wrap","code_title":"HTML Source Editor","anchor_name":"Anchor Name","anchor_title":"Insert/Edit Anchor","about_loaded":"Loaded Plugins","about_version":"Version","about_author":"Author","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"License","about_help":"Help","about_general":"About","about_title":"About TinyMCE","charmap_usage":"Use left and right arrows to navigate.","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage","invalid_color_value":"Invalid color value"}); \ No newline at end of file
+tinyMCE.addI18n('en.advanced_dlg', {"link_list":"Link List","link_is_external":"The URL you entered seems to be an external link. Do you want to add the required http:// prefix?","link_is_email":"The URL you entered seems to be an email address. Do you want to add the required mailto: prefix?","link_titlefield":"Title","link_target_blank":"Open Link in a New Window","link_target_same":"Open Link in the Same Window","link_target":"Target","link_url":"Link URL","link_title":"Insert/Edit Link","image_align_right":"Right","image_align_left":"Left","image_align_textbottom":"Text Bottom","image_align_texttop":"Text Top","image_align_bottom":"Bottom","image_align_middle":"Middle","image_align_top":"Top","image_align_baseline":"Baseline","image_align":"Alignment","image_hspace":"Horizontal Space","image_vspace":"Vertical Space","image_dimensions":"Dimensions","image_alt":"Image Description","image_list":"Image List","image_border":"Border","image_src":"Image URL","image_title":"Insert/Edit Image","charmap_title":"Select Special Character", "charmap_usage":"Use left and right arrows to navigate.","colorpicker_name":"Name:","colorpicker_color":"Color:","colorpicker_named_title":"Named Colors","colorpicker_named_tab":"Named","colorpicker_palette_title":"Palette Colors","colorpicker_palette_tab":"Palette","colorpicker_picker_title":"Color Picker","colorpicker_picker_tab":"Picker","colorpicker_title":"Select a Color","code_wordwrap":"Word Wrap","code_title":"HTML Source Editor","anchor_name":"Anchor Name","anchor_title":"Insert/Edit Anchor","about_loaded":"Loaded Plugins","about_version":"Version","about_author":"Author","about_plugin":"Plugin","about_plugins":"Plugins","about_license":"License","about_help":"Help","about_general":"About","about_title":"About TinyMCE","anchor_invalid":"Please specify a valid anchor name.","accessibility_help":"Accessibility Help","accessibility_usage_title":"General Usage","invalid_color_value":"Invalid color value","":""});
diff --git a/program/js/tiny_mce/tiny_mce.js b/program/js/tiny_mce/tiny_mce.js
index af5a80293..208dfcc07 100644
--- a/program/js/tiny_mce/tiny_mce.js
+++ b/program/js/tiny_mce/tiny_mce.js
@@ -1 +1 @@
-(function(e){var a=/^\s*|\s*$/g,b,d="B".replace(/A(.)|B/,"$1")==="$1";var c={majorVersion:"3",minorVersion:"5.6",releaseDate:"2012-07-26",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;s.isOpera=e.opera&&opera.buildNumber;s.isWebKit=/WebKit/.test(g);s.isIE=!s.isWebKit&&!s.isOpera&&(/MSIE/gi).test(g)&&(/Explorer/gi).test(o.appName);s.isIE6=s.isIE&&/MSIE [56]/.test(g);s.isIE7=s.isIE&&/MSIE [7]/.test(g);s.isIE8=s.isIE&&/MSIE [8]/.test(g);s.isIE9=s.isIE&&/MSIE [9]/.test(g);s.isGecko=!s.isWebKit&&/Gecko/.test(g);s.isMac=g.indexOf("Mac")!=-1;s.isAir=/adobeair/i.test(g);s.isIDevice=/(iPad|iPhone)/.test(g);s.isIOS5=s.isIDevice&&g.match(/AppleWebKit\/(\d*)/)[1]>=534;if(e.tinyMCEPreInit){s.suffix=tinyMCEPreInit.suffix;s.baseURL=tinyMCEPreInit.base;s.query=tinyMCEPreInit.query;return}s.suffix="";f=q.getElementsByTagName("base");for(m=0;m<f.length;m++){r=f[m].href;if(r){if(/^https?:\/\/[^\/]+$/.test(r)){r+="/"}k=r?r.match(/.*\//)[0]:""}}function h(i){if(i.src&&/tiny_mce(|_gzip|_jquery|_prototype|_full)(_dev|_src)?.js/.test(i.src)){if(/_(src|dev)\.js/g.test(i.src)){s.suffix="_src"}if((j=i.src.indexOf("?"))!=-1){s.query=i.src.substring(j+1)}s.baseURL=i.src.substring(0,i.src.lastIndexOf("/"));if(k&&s.baseURL.indexOf("://")==-1&&s.baseURL.indexOf("/")!==0){s.baseURL=k+s.baseURL}return s.baseURL}return null}f=q.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}l=q.getElementsByTagName("head")[0];if(l){f=l.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}}return},is:function(g,f){if(!f){return g!==b}if(f=="array"&&(g.hasOwnProperty&&g instanceof Array)){return true}return typeof(g)==f},makeMap:function(f,j,h){var g;f=f||[];j=j||",";if(typeof(f)=="string"){f=f.split(j)}h=h||{};g=f.length;while(g--){h[f[g]]={}}return h},each:function(i,f,h){var j,g;if(!i){return 0}h=h||i;if(i.length!==b){for(j=0,g=i.length;j<g;j++){if(f.call(h,i[j],j,i)===false){return 0}}}else{for(j in i){if(i.hasOwnProperty(j)){if(f.call(h,i[j],j,i)===false){return 0}}}}return 1},map:function(g,h){var i=[];c.each(g,function(f){i.push(h(f))});return i},grep:function(g,h){var i=[];c.each(g,function(f){if(!h||h(f)){i.push(f)}});return i},inArray:function(g,h){var j,f;if(g){for(j=0,f=g.length;j<f;j++){if(g[j]===h){return j}}}return -1},extend:function(n,k){var j,f,h,g=arguments,m;for(j=1,f=g.length;j<f;j++){k=g[j];for(h in k){if(k.hasOwnProperty(h)){m=k[h];if(m!==b){n[h]=m}}}}return n},trim:function(f){return(f?""+f:"").replace(a,"")},create:function(o,f,j){var n=this,g,i,k,l,h,m=0;o=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(o);k=o[3].match(/(^|\.)(\w+)$/i)[2];i=n.createNS(o[3].replace(/\.\w+$/,""),j);if(i[k]){return}if(o[2]=="static"){i[k]=f;if(this.onCreate){this.onCreate(o[2],o[3],i[k])}return}if(!f[k]){f[k]=function(){};m=1}i[k]=f[k];n.extend(i[k].prototype,f);if(o[5]){g=n.resolve(o[5]).prototype;l=o[5].match(/\.(\w+)$/i)[1];h=i[k];if(m){i[k]=function(){return g[l].apply(this,arguments)}}else{i[k]=function(){this.parent=g[l];return h.apply(this,arguments)}}i[k].prototype[k]=i[k];n.each(g,function(p,q){i[k].prototype[q]=g[q]});n.each(f,function(p,q){if(g[q]){i[k].prototype[q]=function(){this.parent=g[q];return p.apply(this,arguments)}}else{if(q!=k){i[k].prototype[q]=p}}})}n.each(f["static"],function(p,q){i[k][q]=p});if(this.onCreate){this.onCreate(o[2],o[3],i[k].prototype)}},walk:function(i,h,j,g){g=g||this;if(i){if(j){i=i[j]}c.each(i,function(k,f){if(h.call(g,k,f,j)===false){return false}c.walk(k,h,j,g)})}},createNS:function(j,h){var g,f;h=h||e;j=j.split(".");for(g=0;g<j.length;g++){f=j[g];if(!h[f]){h[f]={}}h=h[f]}return h},resolve:function(j,h){var g,f;h=h||e;j=j.split(".");for(g=0,f=j.length;g<f;g++){h=h[j[g]];if(!h){break}}return h},addUnload:function(j,i){var h=this,g;g=function(){var f=h.unloads,l,m;if(f){for(m in f){l=f[m];if(l&&l.func){l.func.call(l.scope,1)}}if(e.detachEvent){e.detachEvent("onbeforeunload",k);e.detachEvent("onunload",g)}else{if(e.removeEventListener){e.removeEventListener("unload",g,false)}}h.unloads=l=f=w=g=0;if(e.CollectGarbage){CollectGarbage()}}};function k(){var l=document;function f(){l.detachEvent("onstop",f);if(g){g()}l=0}if(l.readyState=="interactive"){if(l){l.attachEvent("onstop",f)}e.setTimeout(function(){if(l){l.detachEvent("onstop",f)}},0)}}j={func:j,scope:i||this};if(!h.unloads){if(e.attachEvent){e.attachEvent("onunload",g);e.attachEvent("onbeforeunload",k)}else{if(e.addEventListener){e.addEventListener("unload",g,false)}}h.unloads=[j]}else{h.unloads.push(j)}return j},removeUnload:function(i){var g=this.unloads,h=null;c.each(g,function(j,f){if(j&&j.func==i){g.splice(f,1);h=i;return false}});return h},explode:function(f,g){if(!f||c.is(f,"array")){return f}return c.map(f.split(g||","),c.trim)},_addVer:function(g){var f;if(!this.query){return g}f=(g.indexOf("?")==-1?"?":"&")+this.query;if(g.indexOf("#")==-1){return g+f}return g.replace("#",f+"#")},_replace:function(h,f,g){if(d){return g.replace(h,function(){var l=f,j=arguments,k;for(k=0;k<j.length-2;k++){if(j[k]===b){l=l.replace(new RegExp("\\$"+k,"g"),"")}else{l=l.replace(new RegExp("\\$"+k,"g"),j[k])}}return l})}return g.replace(h,f)}};c._init();e.tinymce=e.tinyMCE=c})(window);tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,inDispatch:false,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(b,a){this.listeners.push({cb:b,scope:a||this.scope});return b},addToTop:function(d,b){var a=this,c={cb:d,scope:b||a.scope};if(a.inDispatch){a.listeners=[c].concat(a.listeners)}else{a.listeners.unshift(c)}return d},remove:function(c){var b=this.listeners,a=null;tinymce.each(b,function(e,d){if(c==e.cb){a=e;b.splice(d,1);return false}});return a},dispatch:function(){var a=this,e,b=arguments,c,d=a.listeners,f;a.inDispatch=true;for(c=0;c<d.length;c++){f=d[c];e=f.cb.apply(f.scope,b.length>0?b:[f.scope]);if(e===false){break}}a.inDispatch=false;return e}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,i,d,c,h;e=tinymce.trim(e);g=f.settings=g||{};if(/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(!/^[\w\-]*:?\/\//.test(e)){h=g.base_uri?g.base_uri.path:new tinymce.util.URI(location.href).directory;e=((g.base_uri&&g.base_uri.protocol)||"http")+"://mce_host"+f.toAbsPath(h,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});c=g.base_uri;if(c){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host==="mce_host"){f.port=c.port}if(!f.host||f.host==="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var d=this,f;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:d});if((b.host!="mce_host"&&d.host!=b.host&&b.host)||d.port!=b.port||d.protocol!=b.protocol){return b.getURI()}var c=d.getURI(),e=b.getURI();if(c==e||(c.charAt(c.length-1)=="/"&&c.substr(0,c.length-1)==e)){return c}f=d.toRelPath(d.path,b.path);if(b.query){f+="?"+b.query}if(b.anchor){f+="#"+b.anchor}return f},toAbsolute:function(b,c){b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host&&this.protocol==b.protocol?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f===1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,h=[],d,g;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(i){if(i){h.push(i)}});e=h;for(c=f.length-1,h=[];c>=0;c--){if(f[c].length===0||f[c]==="."){continue}if(f[c]===".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!==0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(c,e,d){var b=new Date();b.setTime(b.getTime()-1000);this.set(c,"",b,e,d)}})})();(function(){function serialize(o,quote){var i,v,t,name;quote=quote||'"';if(o==null){return"null"}t=typeof o;if(t=="string"){v="\bb\tt\nn\ff\rr\"\"''\\\\";return quote+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(a,b){if(quote==='"'&&a==="'"){return a}i=v.indexOf(b);if(i+1){return"\\"+v.charAt(i+1)}a=b.charCodeAt().toString(16);return"\\u"+"0000".substring(a.length)+a})+quote}if(t=="object"){if(o.hasOwnProperty&&o instanceof Array){for(i=0,v="[";i<o.length;i++){v+=(i>0?",":"")+serialize(o[i],quote)}return v+"]"}v="{";for(name in o){if(o.hasOwnProperty(name)){v+=typeof o[name]!="function"?(v.length>1?","+quote:quote)+name+quote+":"+serialize(o[name],quote):""}}return v+"}"}return""+o}tinymce.util.JSON={serialize:serialize,parse:function(s){try{return eval("("+s+")")}catch(ex){}}}})();tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){if(e){e.call(f.error_scope||f.scope,h,g)}};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(a){a.VK={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(b){return b.shiftKey||b.ctrlKey||b.altKey},metaKeyPressed:function(b){return a.isMac?b.metaKey:b.ctrlKey&&!b.altKey}}})(tinymce);tinymce.util.Quirks=function(d){var m=tinymce.VK,t=m.BACKSPACE,u=m.DELETE,p=d.dom,E=d.selection,s=d.settings;function c(I,H){try{d.getDoc().execCommand(I,false,H)}catch(G){}}function z(){var G=d.getDoc().documentMode;return G?G:6}function j(){function G(J){var H,L,I,K;H=E.getRng();L=p.getParent(H.startContainer,p.isBlock);if(J){L=p.getNext(L,p.isBlock)}if(L){I=L.firstChild;while(I&&I.nodeType==3&&I.nodeValue.length===0){I=I.nextSibling}if(I&&I.nodeName==="SPAN"){K=I.cloneNode(false)}}d.getDoc().execCommand(J?"ForwardDelete":"Delete",false,null);L=p.getParent(H.startContainer,p.isBlock);tinymce.each(p.select("span.Apple-style-span,font.Apple-style-span",L),function(M){var N=E.getBookmark();if(K){p.replace(K.cloneNode(false),M,true)}else{p.remove(M,true)}E.moveToBookmark(N)})}d.onKeyDown.add(function(H,J){var I;I=J.keyCode==u;if(!J.isDefaultPrevented()&&(I||J.keyCode==t)&&!m.modifierPressed(J)){J.preventDefault();G(I)}});d.addCommand("Delete",function(){G()})}function F(){function G(J){var I=p.create("body");var K=J.cloneContents();I.appendChild(K);return E.serializer.serialize(I,{format:"html"})}function H(I){var K=G(I);var L=p.createRng();L.selectNode(d.getBody());var J=G(L);return K===J}d.onKeyDown.add(function(J,L){var K=L.keyCode,I;if(!L.isDefaultPrevented()&&(K==u||K==t)){I=J.selection.isCollapsed();if(I&&!p.isEmpty(J.getBody())){return}if(tinymce.isIE&&!I){return}if(!I&&!H(J.selection.getRng())){return}J.setContent("");J.selection.setCursorLocation(J.getBody(),0);J.nodeChanged()}})}function x(){d.onKeyDown.add(function(G,H){if(H.keyCode==65&&m.metaKeyPressed(H)){H.preventDefault();G.execCommand("SelectAll")}})}function y(){if(!d.settings.content_editable){p.bind(d.getDoc(),"focusin",function(G){E.setRng(E.getRng())});p.bind(d.getDoc(),"mousedown",function(G){if(G.target==d.getDoc().documentElement){d.getWin().focus();E.setRng(E.getRng())}})}}function n(){d.onKeyDown.add(function(G,J){if(!J.isDefaultPrevented()&&J.keyCode===t){if(E.isCollapsed()&&E.getRng(true).startOffset===0){var I=E.getNode();var H=I.previousSibling;if(H&&H.nodeName&&H.nodeName.toLowerCase()==="hr"){p.remove(H);tinymce.dom.Event.cancel(J)}}}})}function b(){if(!Range.prototype.getClientRects){d.onMouseDown.add(function(H,I){if(I.target.nodeName==="HTML"){var G=H.getBody();G.blur();setTimeout(function(){G.focus()},0)}})}}function B(){d.onClick.add(function(G,H){H=H.target;if(/^(IMG|HR)$/.test(H.nodeName)){E.getSel().setBaseAndExtent(H,0,H,1)}if(H.nodeName=="A"&&p.hasClass(H,"mceItemAnchor")){E.select(H)}G.nodeChanged()})}function C(){function H(){var J=p.getAttribs(E.getStart().cloneNode(false));return function(){var K=E.getStart();if(K!==d.getBody()){p.setAttrib(K,"style",null);tinymce.each(J,function(L){K.setAttributeNode(L.cloneNode(true))})}}}function G(){return !E.isCollapsed()&&p.getParent(E.getStart(),p.isBlock)!=p.getParent(E.getEnd(),p.isBlock)}function I(J,K){K.preventDefault();return false}d.onKeyPress.add(function(J,L){var K;if((L.keyCode==8||L.keyCode==46)&&G()){K=H();J.getDoc().execCommand("delete",false,null);K();L.preventDefault();return false}});p.bind(d.getDoc(),"cut",function(K){var J;if(G()){J=H();d.onKeyUp.addToTop(I);setTimeout(function(){J();d.onKeyUp.remove(I)},0)}})}function k(){var H,G;p.bind(d.getDoc(),"selectionchange",function(){if(G){clearTimeout(G);G=0}G=window.setTimeout(function(){var I=E.getRng();if(!H||!tinymce.dom.RangeUtils.compareRanges(I,H)){d.nodeChanged();H=I}},50)})}function D(){document.body.setAttribute("role","application")}function A(){d.onKeyDown.add(function(G,I){if(!I.isDefaultPrevented()&&I.keyCode===t){if(E.isCollapsed()&&E.getRng(true).startOffset===0){var H=E.getNode().previousSibling;if(H&&H.nodeName&&H.nodeName.toLowerCase()==="table"){return tinymce.dom.Event.cancel(I)}}}})}function h(){if(z()>7){return}c("RespectVisibilityInDesign",true);d.contentStyles.push(".mceHideBrInPre pre br {display: none}");p.addClass(d.getBody(),"mceHideBrInPre");d.parser.addNodeFilter("pre",function(G,I){var J=G.length,L,H,M,K;while(J--){L=G[J].getAll("br");H=L.length;while(H--){M=L[H];K=M.prev;if(K&&K.type===3&&K.value.charAt(K.value-1)!="\n"){K.value+="\n"}else{M.parent.insert(new tinymce.html.Node("#text",3),M,true).value="\n"}}}});d.serializer.addNodeFilter("pre",function(G,I){var J=G.length,L,H,M,K;while(J--){L=G[J].getAll("br");H=L.length;while(H--){M=L[H];K=M.prev;if(K&&K.type==3){K.value=K.value.replace(/\r?\n$/,"")}}}})}function f(){p.bind(d.getBody(),"mouseup",function(I){var H,G=E.getNode();if(G.nodeName=="IMG"){if(H=p.getStyle(G,"width")){p.setAttrib(G,"width",H.replace(/[^0-9%]+/g,""));p.setStyle(G,"width","")}if(H=p.getStyle(G,"height")){p.setAttrib(G,"height",H.replace(/[^0-9%]+/g,""));p.setStyle(G,"height","")}}})}function r(){d.onKeyDown.add(function(M,N){var L,G,H,J,K,O,I;L=N.keyCode==u;if(!N.isDefaultPrevented()&&(L||N.keyCode==t)&&!m.modifierPressed(N)){G=E.getRng();H=G.startContainer;J=G.startOffset;I=G.collapsed;if(H.nodeType==3&&H.nodeValue.length>0&&((J===0&&!I)||(I&&J===(L?0:1)))){nonEmptyElements=M.schema.getNonEmptyElements();N.preventDefault();K=p.create("br",{id:"__tmp"});H.parentNode.insertBefore(K,H);M.getDoc().execCommand(L?"ForwardDelete":"Delete",false,null);H=E.getRng().startContainer;O=H.previousSibling;if(O&&O.nodeType==1&&!p.isBlock(O)&&p.isEmpty(O)&&!nonEmptyElements[O.nodeName.toLowerCase()]){p.remove(O)}p.remove("__tmp")}}})}function e(){d.onKeyDown.add(function(K,L){var I,H,M,G,J;if(L.isDefaultPrevented()||L.keyCode!=m.BACKSPACE){return}I=E.getRng();H=I.startContainer;M=I.startOffset;G=p.getRoot();J=H;if(!I.collapsed||M!==0){return}while(J&&J.parentNode&&J.parentNode.firstChild==J&&J.parentNode!=G){J=J.parentNode}if(J.tagName==="BLOCKQUOTE"){K.formatter.toggle("blockquote",null,J);I.setStart(H,0);I.setEnd(H,0);E.setRng(I);E.collapse(false)}})}function l(){function G(){d._refreshContentEditable();c("StyleWithCSS",false);c("enableInlineTableEditing",false);if(!s.object_resizing){c("enableObjectResizing",false)}}if(!s.readonly){d.onBeforeExecCommand.add(G);d.onMouseDown.add(G)}}function o(){function G(H,I){tinymce.each(p.select("a"),function(L){var J=L.parentNode,K=p.getRoot();if(J.lastChild===L){while(J&&!p.isBlock(J)){if(J.parentNode.lastChild!==J||J===K){return}J=J.parentNode}p.add(J,"br",{"data-mce-bogus":1})}})}d.onExecCommand.add(function(H,I){if(I==="CreateLink"){G(H)}});d.onSetContent.add(E.onSetContent.add(G))}function v(){if(s.forced_root_block){d.onInit.add(function(){c("DefaultParagraphSeparator",s.forced_root_block)})}}function a(){function G(I,H){if(!I||!H.initial){d.execCommand("mceRepaint")}}d.onUndo.add(G);d.onRedo.add(G);d.onSetContent.add(G)}function q(){d.onKeyDown.add(function(H,I){var G;if(!I.isDefaultPrevented()&&I.keyCode==t){G=H.getDoc().selection.createRange();if(G&&G.item){I.preventDefault();H.undoManager.beforeChange();p.remove(G.item(0));H.undoManager.add()}}})}function i(){var G;if(z()>=10){G="";tinymce.each("p div h1 h2 h3 h4 h5 h6".split(" "),function(H,I){G+=(I>0?",":"")+H+":empty"});d.contentStyles.push(G+"{padding-right: 1px !important}")}}function g(){var I,H,Y,G,T,W,U,X,J,K,V,R,Q,S=document,O=d.getDoc();if(!s.object_resizing||s.webkit_fake_resize===false){return}c("enableObjectResizing",false);V={n:[0.5,0,0,-1],e:[1,0.5,1,0],s:[0.5,1,0,1],w:[0,0.5,-1,0],nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};function M(ac){var ab,aa;ab=ac.screenX-W;aa=ac.screenY-U;R=ab*T[2]+X;Q=aa*T[3]+J;R=R<5?5:R;Q=Q<5?5:Q;if(m.modifierPressed(ac)||(Y.nodeName=="IMG"&&T[2]*T[3]!==0)){R=Math.round(Q/K);Q=Math.round(R*K)}p.setStyles(G,{width:R,height:Q});if(T[2]<0&&G.clientWidth<=R){p.setStyle(G,"left",I+(X-R))}if(T[3]<0&&G.clientHeight<=Q){p.setStyle(G,"top",H+(J-Q))}}function Z(){function aa(ab,ac){if(ac){if(Y.style[ab]||!d.schema.isValid(Y.nodeName.toLowerCase(),ab)){p.setStyle(Y,ab,ac)}else{p.setAttrib(Y,ab,ac)}}}aa("width",R);aa("height",Q);p.unbind(O,"mousemove",M);p.unbind(O,"mouseup",Z);if(S!=O){p.unbind(S,"mousemove",M);p.unbind(S,"mouseup",Z)}p.remove(G);L(Y)}function L(ad){var ab,ac,aa;N();ab=p.getPos(ad);I=ab.x;H=ab.y;ac=ad.offsetWidth;aa=ad.offsetHeight;if(Y!=ad){Y=ad;R=Q=0}tinymce.each(V,function(ag,ae){var af;af=p.get("mceResizeHandle"+ae);if(!af){af=p.add(O.documentElement,"div",{id:"mceResizeHandle"+ae,"class":"mceResizeHandle",style:"cursor:"+ae+"-resize; margin:0; padding:0"});p.bind(af,"mousedown",function(ah){ah.preventDefault();Z();W=ah.screenX;U=ah.screenY;X=Y.clientWidth;J=Y.clientHeight;K=J/X;T=ag;G=Y.cloneNode(true);p.addClass(G,"mceClonedResizable");p.setStyles(G,{left:I,top:H,margin:0});O.documentElement.appendChild(G);p.bind(O,"mousemove",M);p.bind(O,"mouseup",Z);if(S!=O){p.bind(S,"mousemove",M);p.bind(S,"mouseup",Z)}})}else{p.show(af)}p.setStyles(af,{left:(ac*ag[0]+I)-(af.offsetWidth/2),top:(aa*ag[1]+H)-(af.offsetHeight/2)})});if(!tinymce.isOpera&&Y.nodeName=="IMG"){Y.setAttribute("data-mce-selected","1")}}function N(){if(Y){Y.removeAttribute("data-mce-selected")}for(var aa in V){p.hide("mceResizeHandle"+aa)}}d.contentStyles.push(".mceResizeHandle {position: absolute;border: 1px solid black;background: #FFF;width: 5px;height: 5px;z-index: 10000}.mceResizeHandle:hover {background: #000}img[data-mce-selected] {outline: 1px solid black}img.mceClonedResizable, table.mceClonedResizable {position: absolute;outline: 1px dashed black;opacity: .5;z-index: 10000}");function P(){var aa=p.getParent(E.getNode(),"table,img");tinymce.each(p.select("img[data-mce-selected]"),function(ab){ab.removeAttribute("data-mce-selected")});if(aa){L(aa)}else{N()}}d.onNodeChange.add(P);p.bind(O,"selectionchange",P);d.serializer.addAttributeFilter("data-mce-selected",function(aa,ab){var ac=aa.length;while(ac--){aa[ac].attr(ab,null)}})}A();e();F();if(tinymce.isWebKit){r();j();y();B();v();if(tinymce.isIDevice){k()}else{g();x()}}if(tinymce.isIE){n();D();h();f();q();i()}if(tinymce.isGecko){n();b();C();l();o();a()}if(tinymce.isOpera){g()}};(function(j){var a,g,d,k=/[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=/[<>&\"\']/g,c=/&(#x|#)?([\w]+);/g,i={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"};g={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;"};d={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};function h(l){var m;m=document.createElement("div");m.innerHTML=l;return m.textContent||m.innerText||l}function e(m,p){var n,o,l,q={};if(m){m=m.split(",");p=p||10;for(n=0;n<m.length;n+=2){o=String.fromCharCode(parseInt(m[n],p));if(!g[o]){l="&"+m[n+1]+";";q[o]=l;q[l]=o}}return q}}a=e("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);j.html=j.html||{};j.html.Entities={encodeRaw:function(m,l){return m.replace(l?k:b,function(n){return g[n]||n})},encodeAllRaw:function(l){return(""+l).replace(f,function(m){return g[m]||m})},encodeNumeric:function(m,l){return m.replace(l?k:b,function(n){if(n.length>1){return"&#"+(((n.charCodeAt(0)-55296)*1024)+(n.charCodeAt(1)-56320)+65536)+";"}return g[n]||"&#"+n.charCodeAt(0)+";"})},encodeNamed:function(n,l,m){m=m||a;return n.replace(l?k:b,function(o){return g[o]||m[o]||o})},getEncodeFunc:function(l,o){var p=j.html.Entities;o=e(o)||a;function m(r,q){return r.replace(q?k:b,function(s){return g[s]||o[s]||"&#"+s.charCodeAt(0)+";"||s})}function n(r,q){return p.encodeNamed(r,q,o)}l=j.makeMap(l.replace(/\+/g,","));if(l.named&&l.numeric){return m}if(l.named){if(o){return n}return p.encodeNamed}if(l.numeric){return p.encodeNumeric}return p.encodeRaw},decode:function(l){return l.replace(c,function(n,m,o){if(m){o=parseInt(o,m.length===2?16:10);if(o>65535){o-=65536;return String.fromCharCode(55296+(o>>10),56320+(o&1023))}else{return i[o]||String.fromCharCode(o)}}return d[n]||a[n]||h(n)})}}})(tinymce);tinymce.html.Styles=function(d,f){var k=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,h=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,b=/\s*([^:]+):\s*([^;]+);?/g,l=/\s+$/,m=/rgb/,e,g,a={},j;d=d||{};j="\\\" \\' \\; \\: ; : \uFEFF".split(" ");for(g=0;g<j.length;g++){a[j[g]]="\uFEFF"+g;a["\uFEFF"+g]=j[g]}function c(n,q,p,i){function o(r){r=parseInt(r).toString(16);return r.length>1?r:"0"+r}return"#"+o(q)+o(p)+o(i)}return{toHex:function(i){return i.replace(k,c)},parse:function(s){var z={},q,n,x,r,v=d.url_converter,y=d.url_converter_scope||this;function p(D,G){var F,C,B,E;F=z[D+"-top"+G];if(!F){return}C=z[D+"-right"+G];if(F!=C){return}B=z[D+"-bottom"+G];if(C!=B){return}E=z[D+"-left"+G];if(B!=E){return}z[D+G]=E;delete z[D+"-top"+G];delete z[D+"-right"+G];delete z[D+"-bottom"+G];delete z[D+"-left"+G]}function u(C){var D=z[C],B;if(!D||D.indexOf(" ")<0){return}D=D.split(" ");B=D.length;while(B--){if(D[B]!==D[0]){return false}}z[C]=D[0];return true}function A(D,C,B,E){if(!u(C)){return}if(!u(B)){return}if(!u(E)){return}z[D]=z[C]+" "+z[B]+" "+z[E];delete z[C];delete z[B];delete z[E]}function t(B){r=true;return a[B]}function i(C,B){if(r){C=C.replace(/\uFEFF[0-9]/g,function(D){return a[D]})}if(!B){C=C.replace(/\\([\'\";:])/g,"$1")}return C}function o(C,B,F,E,G,D){G=G||D;if(G){G=i(G);return"'"+G.replace(/\'/g,"\\'")+"'"}B=i(B||F||E);if(v){B=v.call(y,B,"style")}return"url('"+B.replace(/\'/g,"\\'")+"')"}if(s){s=s.replace(/\\[\"\';:\uFEFF]/g,t).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(B){return B.replace(/[;:]/g,t)});while(q=b.exec(s)){n=q[1].replace(l,"").toLowerCase();x=q[2].replace(l,"");if(n&&x.length>0){if(n==="font-weight"&&x==="700"){x="bold"}else{if(n==="color"||n==="background-color"){x=x.toLowerCase()}}x=x.replace(k,c);x=x.replace(h,o);z[n]=r?i(x,true):x}b.lastIndex=q.index+q[0].length}p("border","");p("border","-width");p("border","-color");p("border","-style");p("padding","");p("margin","");A("border","border-width","border-style","border-color");if(z.border==="medium none"){delete z.border}}return z},serialize:function(p,r){var o="",n,q;function i(t){var x,u,s,v;x=f.styles[t];if(x){for(u=0,s=x.length;u<s;u++){t=x[u];v=p[t];if(v!==e&&v.length>0){o+=(o.length>0?" ":"")+t+": "+v+";"}}}}if(r&&f&&f.styles){i("*");i(r)}else{for(n in p){q=p[n];if(q!==e&&q.length>0){o+=(o.length>0?" ":"")+n+": "+q+";"}}}return o}}};(function(f){var a={},e=f.makeMap,g=f.each;function d(j,i){return j.split(i||",")}function h(m,l){var j,k={};function i(n){return n.replace(/[A-Z]+/g,function(o){return i(m[o])})}for(j in m){if(m.hasOwnProperty(j)){m[j]=i(m[j])}}i(l).replace(/#/g,"#text").replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g,function(q,o,n,p){n=d(n,"|");k[o]={attributes:e(n),attributesOrder:n,children:e(p,"|",{"#comment":{}})}});return k}function b(){var i=a.html5;if(!i){i=a.html5=h({A:"id|accesskey|class|dir|draggable|item|hidden|itemprop|role|spellcheck|style|subject|title|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"#|a|abbr|area|audio|b|bdo|br|button|canvas|cite|code|command|datalist|del|dfn|em|embed|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|meta|meter|noscript|object|output|progress|q|ruby|samp|script|select|small|span|strong|sub|sup|svg|textarea|time|var|video|wbr",C:"#|a|abbr|area|address|article|aside|audio|b|bdo|blockquote|br|button|canvas|cite|code|command|datalist|del|details|dfn|dialog|div|dl|em|embed|fieldset|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|menu|meta|meter|nav|noscript|ol|object|output|p|pre|progress|q|ruby|samp|script|section|select|small|span|strong|style|sub|sup|svg|table|textarea|time|ul|var|video"},"html[A|manifest][body|head]head[A][base|command|link|meta|noscript|script|style|title]title[A][#]base[A|href|target][]link[A|href|rel|media|type|sizes][]meta[A|http-equiv|name|content|charset][]style[A|type|media|scoped][#]script[A|charset|type|src|defer|async][#]noscript[A][C]body[A][C]section[A][C]nav[A][C]article[A][C]aside[A][C]h1[A][B]h2[A][B]h3[A][B]h4[A][B]h5[A][B]h6[A][B]hgroup[A][h1|h2|h3|h4|h5|h6]header[A][C]footer[A][C]address[A][C]p[A][B]br[A][]pre[A][B]dialog[A][dd|dt]blockquote[A|cite][C]ol[A|start|reversed][li]ul[A][li]li[A|value][C]dl[A][dd|dt]dt[A][B]dd[A][C]a[A|href|target|ping|rel|media|type][B]em[A][B]strong[A][B]small[A][B]cite[A][B]q[A|cite][B]dfn[A][B]abbr[A][B]code[A][B]var[A][B]samp[A][B]kbd[A][B]sub[A][B]sup[A][B]i[A][B]b[A][B]mark[A][B]progress[A|value|max][B]meter[A|value|min|max|low|high|optimum][B]time[A|datetime][B]ruby[A][B|rt|rp]rt[A][B]rp[A][B]bdo[A][B]span[A][B]ins[A|cite|datetime][B]del[A|cite|datetime][B]figure[A][C|legend|figcaption]figcaption[A][C]img[A|alt|src|height|width|usemap|ismap][]iframe[A|name|src|height|width|sandbox|seamless][]embed[A|src|height|width|type][]object[A|data|type|height|width|usemap|name|form|classid][param]param[A|name|value][]details[A|open][C|legend]command[A|type|label|icon|disabled|checked|radiogroup][]menu[A|type|label][C|li]legend[A][C|B]div[A][C]source[A|src|type|media][]audio[A|src|autobuffer|autoplay|loop|controls][source]video[A|src|autobuffer|autoplay|loop|controls|width|height|poster][source]hr[A][]form[A|accept-charset|action|autocomplete|enctype|method|name|novalidate|target][C]fieldset[A|disabled|form|name][C|legend]label[A|form|for][B]input[A|type|accept|alt|autocomplete|checked|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|height|list|max|maxlength|min|multiple|pattern|placeholder|readonly|required|size|src|step|width|files|value|name][]button[A|autofocus|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|name|value|type][B]select[A|autofocus|disabled|form|multiple|name|size][option|optgroup]datalist[A][B|option]optgroup[A|disabled|label][option]option[A|disabled|selected|label|value][]textarea[A|autofocus|disabled|form|maxlength|name|placeholder|readonly|required|rows|cols|wrap][]keygen[A|autofocus|challenge|disabled|form|keytype|name][]output[A|for|form|name][B]canvas[A|width|height][]map[A|name][B|C]area[A|shape|coords|href|alt|target|media|rel|ping|type][]mathml[A][]svg[A][]table[A|border][caption|colgroup|thead|tfoot|tbody|tr]caption[A][C]colgroup[A|span][col]col[A|span][]thead[A][tr]tfoot[A][tr]tbody[A][tr]tr[A][th|td]th[A|headers|rowspan|colspan|scope][B]td[A|headers|rowspan|colspan][C]wbr[A][]")}return i}function c(){var i=a.html4;if(!i){i=a.html4=h({Z:"H|K|N|O|P",Y:"X|form|R|Q",ZG:"E|span|width|align|char|charoff|valign",X:"p|T|div|U|W|isindex|fieldset|table",ZF:"E|align|char|charoff|valign",W:"pre|hr|blockquote|address|center|noframes",ZE:"abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height",ZD:"[E][S]",U:"ul|ol|dl|menu|dir",ZC:"p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q",T:"h1|h2|h3|h4|h5|h6",ZB:"X|S|Q",S:"R|P",ZA:"a|G|J|M|O|P",R:"a|H|K|N|O",Q:"noscript|P",P:"ins|del|script",O:"input|select|textarea|label|button",N:"M|L",M:"em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym",L:"sub|sup",K:"J|I",J:"tt|i|b|u|s|strike",I:"big|small|font|basefont",H:"G|F",G:"br|span|bdo",F:"object|applet|img|map|iframe",E:"A|B|C",D:"accesskey|tabindex|onfocus|onblur",C:"onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"lang|xml:lang|dir",A:"id|class|style|title"},"script[id|charset|type|language|src|defer|xml:space][]style[B|id|type|media|title|xml:space][]object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]param[id|name|value|valuetype|type][]p[E|align][#|S]a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]br[A|clear][]span[E][#|S]bdo[A|C|B][#|S]applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]h1[E|align][#|S]img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]map[B|C|A|name][X|form|Q|area]h2[E|align][#|S]iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]h3[E|align][#|S]tt[E][#|S]i[E][#|S]b[E][#|S]u[E][#|S]s[E][#|S]strike[E][#|S]big[E][#|S]small[E][#|S]font[A|B|size|color|face][#|S]basefont[id|size|color|face][]em[E][#|S]strong[E][#|S]dfn[E][#|S]code[E][#|S]q[E|cite][#|S]samp[E][#|S]kbd[E][#|S]var[E][#|S]cite[E][#|S]abbr[E][#|S]acronym[E][#|S]sub[E][#|S]sup[E][#|S]input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]optgroup[E|disabled|label][option]option[E|selected|disabled|label|value][]textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]label[E|for|accesskey|onfocus|onblur][#|S]button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]h4[E|align][#|S]ins[E|cite|datetime][#|Y]h5[E|align][#|S]del[E|cite|datetime][#|Y]h6[E|align][#|S]div[E|align][#|Y]ul[E|type|compact][li]li[E|type|value][#|Y]ol[E|type|compact|start][li]dl[E|compact][dt|dd]dt[E][#|S]dd[E][#|Y]menu[E|compact][li]dir[E|compact][li]pre[E|width|xml:space][#|ZA]hr[E|align|noshade|size|width][]blockquote[E|cite][#|Y]address[E][#|S|p]center[E][#|Y]noframes[E][#|Y]isindex[A|B|prompt][]fieldset[E][#|legend|Y]legend[E|accesskey|align][#|S]table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]caption[E|align][#|S]col[ZG][]colgroup[ZG][col]thead[ZF][tr]tr[ZF|bgcolor][th|td]th[E|ZE][#|Y]form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]noscript[E][#|Y]td[E|ZE][#|Y]tfoot[ZF][tr]tbody[ZF][tr]area[E|D|shape|coords|href|nohref|alt|target][]base[id|href|target][]body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]")}return i}f.html.Schema=function(A){var u=this,s={},k={},j=[],D,y;var o,q,z,r,v,n,p={};function m(F,E,H){var G=A[F];if(!G){G=a[F];if(!G){G=e(E," ",e(E.toUpperCase()," "));G=f.extend(G,H);a[F]=G}}else{G=e(G,",",e(G.toUpperCase()," "))}return G}A=A||{};y=A.schema=="html5"?b():c();if(A.verify_html===false){A.valid_elements="*[*]"}if(A.valid_styles){D={};g(A.valid_styles,function(F,E){D[E]=f.explode(F)})}o=m("whitespace_elements","pre script style textarea");q=m("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr");z=m("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr");r=m("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls");n=m("non_empty_elements","td th iframe video audio object",z);v=m("block_elements","h1 h2 h3 h4 h5 h6 hr p div address pre form table tbody thead tfoot th tr td li ol ul caption blockquote center dl dt dd dir fieldset noscript menu isindex samp header footer article section hgroup aside nav figure option datalist select optgroup");function i(E){return new RegExp("^"+E.replace(/([?+*])/g,".$1")+"$")}function C(L){var K,G,Z,V,aa,F,I,U,X,Q,Y,ac,O,J,W,E,S,H,ab,ad,P,T,N=/^([#+\-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,R=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,M=/[*?+]/;if(L){L=d(L);if(s["@"]){S=s["@"].attributes;H=s["@"].attributesOrder}for(K=0,G=L.length;K<G;K++){F=N.exec(L[K]);if(F){W=F[1];Q=F[2];E=F[3];X=F[4];O={};J=[];I={attributes:O,attributesOrder:J};if(W==="#"){I.paddEmpty=true}if(W==="-"){I.removeEmpty=true}if(S){for(ad in S){O[ad]=S[ad]}J.push.apply(J,H)}if(X){X=d(X,"|");for(Z=0,V=X.length;Z<V;Z++){F=R.exec(X[Z]);if(F){U={};ac=F[1];Y=F[2].replace(/::/g,":");W=F[3];T=F[4];if(ac==="!"){I.attributesRequired=I.attributesRequired||[];I.attributesRequired.push(Y);U.required=true}if(ac==="-"){delete O[Y];J.splice(f.inArray(J,Y),1);continue}if(W){if(W==="="){I.attributesDefault=I.attributesDefault||[];I.attributesDefault.push({name:Y,value:T});U.defaultValue=T}if(W===":"){I.attributesForced=I.attributesForced||[];I.attributesForced.push({name:Y,value:T});U.forcedValue=T}if(W==="<"){U.validValues=e(T,"?")}}if(M.test(Y)){I.attributePatterns=I.attributePatterns||[];U.pattern=i(Y);I.attributePatterns.push(U)}else{if(!O[Y]){J.push(Y)}O[Y]=U}}}}if(!S&&Q=="@"){S=O;H=J}if(E){I.outputName=Q;s[E]=I}if(M.test(Q)){I.pattern=i(Q);j.push(I)}else{s[Q]=I}}}}}function t(E){s={};j=[];C(E);g(y,function(G,F){k[F]=G.children})}function l(F){var E=/^(~)?(.+)$/;if(F){g(d(F),function(J){var H=E.exec(J),I=H[1]==="~",K=I?"span":"div",G=H[2];k[G]=k[K];p[G]=K;if(!I){v[G]={}}g(k,function(L,M){if(L[K]){L[G]=L[K]}})})}}function x(F){var E=/^([+\-]?)(\w+)\[([^\]]+)\]$/;if(F){g(d(F),function(J){var I=E.exec(J),G,H;if(I){H=I[1];if(H){G=k[I[2]]}else{G=k[I[2]]={"#comment":{}}}G=k[I[2]];g(d(I[3],"|"),function(K){if(H==="-"){delete G[K]}else{G[K]={}}})}})}}function B(E){var G=s[E],F;if(G){return G}F=j.length;while(F--){G=j[F];if(G.pattern.test(E)){return G}}}if(!A.valid_elements){g(y,function(F,E){s[E]={attributes:F.attributes,attributesOrder:F.attributesOrder};k[E]=F.children});if(A.schema!="html5"){g(d("strong/b,em/i"),function(E){E=d(E,"/");s[E[1]].outputName=E[0]})}s.img.attributesDefault=[{name:"alt",value:""}];g(d("ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr,strong,em,b,i"),function(E){if(s[E]){s[E].removeEmpty=true}});g(d("p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption"),function(E){s[E].paddEmpty=true})}else{t(A.valid_elements)}l(A.custom_elements);x(A.valid_children);C(A.extended_valid_elements);x("+ol[ul|ol],+ul[ul|ol]");if(A.invalid_elements){f.each(f.explode(A.invalid_elements),function(E){if(s[E]){delete s[E]}})}if(!B("span")){C("span[!data-mce-type|*]")}u.children=k;u.styles=D;u.getBoolAttrs=function(){return r};u.getBlockElements=function(){return v};u.getShortEndedElements=function(){return z};u.getSelfClosingElements=function(){return q};u.getNonEmptyElements=function(){return n};u.getWhiteSpaceElements=function(){return o};u.isValidChild=function(E,G){var F=k[E];return !!(F&&F[G])};u.isValid=function(F,E){var H,G,I=B(F);if(I){if(E){if(I.attributes[E]){return true}H=I.attributePatterns;if(H){G=H.length;while(G--){if(H[G].pattern.test(F)){return true}}}}else{return true}}return false};u.getElementRule=B;u.getCustomElements=function(){return p};u.addValidElements=C;u.setValidElements=t;u.addCustomElements=l;u.addValidChildren=x}})(tinymce);(function(a){a.html.SaxParser=function(c,e){var b=this,d=function(){};c=c||{};b.schema=e=e||new a.html.Schema();if(c.fix_self_closing!==false){c.fix_self_closing=true}a.each("comment cdata text start end pi doctype".split(" "),function(f){if(f){b[f]=c[f]||d}});b.parse=function(E){var n=this,g,G=0,I,B,A=[],N,Q,C,r,z,s,M,H,O,v,m,k,t,R,o,P,F,S,L,f,J,l,D,K,h,x=0,j=a.html.Entities.decode,y,q;function u(T){var V,U;V=A.length;while(V--){if(A[V].name===T){break}}if(V>=0){for(U=A.length-1;U>=V;U--){T=A[U];if(T.valid){n.end(T.name)}}A.length=V}}function p(U,T,Y,X,W){var Z,V;T=T.toLowerCase();Y=T in H?T:j(Y||X||W||"");if(v&&!z&&T.indexOf("data-")!==0){Z=P[T];if(!Z&&F){V=F.length;while(V--){Z=F[V];if(Z.pattern.test(T)){break}}if(V===-1){Z=null}}if(!Z){return}if(Z.validValues&&!(Y in Z.validValues)){return}}N.map[T]=Y;N.push({name:T,value:Y})}l=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-\\:]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g");D=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:\\.|[^\"])*)\")|(?:\'((?:\\.|[^\'])*)\')|([^>\s]+)))?/g;K={script:/<\/script[^>]*>/gi,style:/<\/style[^>]*>/gi,noscript:/<\/noscript[^>]*>/gi};M=e.getShortEndedElements();J=c.self_closing_elements||e.getSelfClosingElements();H=e.getBoolAttrs();v=c.validate;s=c.remove_internals;y=c.fix_self_closing;q=a.isIE;o=/^:/;while(g=l.exec(E)){if(G<g.index){n.text(j(E.substr(G,g.index-G)))}if(I=g[6]){I=I.toLowerCase();if(q&&o.test(I)){I=I.substr(1)}u(I)}else{if(I=g[7]){I=I.toLowerCase();if(q&&o.test(I)){I=I.substr(1)}O=I in M;if(y&&J[I]&&A.length>0&&A[A.length-1].name===I){u(I)}if(!v||(m=e.getElementRule(I))){k=true;if(v){P=m.attributes;F=m.attributePatterns}if(R=g[8]){z=R.indexOf("data-mce-type")!==-1;if(z&&s){k=false}N=[];N.map={};R.replace(D,p)}else{N=[];N.map={}}if(v&&!z){S=m.attributesRequired;L=m.attributesDefault;f=m.attributesForced;if(f){Q=f.length;while(Q--){t=f[Q];r=t.name;h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}if(L){Q=L.length;while(Q--){t=L[Q];r=t.name;if(!(r in N.map)){h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}}if(S){Q=S.length;while(Q--){if(S[Q] in N.map){break}}if(Q===-1){k=false}}if(N.map["data-mce-bogus"]){k=false}}if(k){n.start(I,N,O)}}else{k=false}if(B=K[I]){B.lastIndex=G=g.index+g[0].length;if(g=B.exec(E)){if(k){C=E.substr(G,g.index-G)}G=g.index+g[0].length}else{C=E.substr(G);G=E.length}if(k&&C.length>0){n.text(C,true)}if(k){n.end(I)}l.lastIndex=G;continue}if(!O){if(!R||R.indexOf("/")!=R.length-1){A.push({name:I,valid:k})}else{if(k){n.end(I)}}}}else{if(I=g[1]){n.comment(I)}else{if(I=g[2]){n.cdata(I)}else{if(I=g[3]){n.doctype(I)}else{if(I=g[4]){n.pi(I,g[5])}}}}}}G=g.index+g[0].length}if(G<E.length){n.text(j(E.substr(G)))}for(Q=A.length-1;Q>=0;Q--){I=A[Q];if(I.valid){n.end(I.name)}}}}})(tinymce);(function(d){var c=/^[ \t\r\n]*$/,e={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};function a(k,l,j){var i,h,f=j?"lastChild":"firstChild",g=j?"prev":"next";if(k[f]){return k[f]}if(k!==l){i=k[g];if(i){return i}for(h=k.parent;h&&h!==l;h=h.parent){i=h[g];if(i){return i}}}}function b(f,g){this.name=f;this.type=g;if(g===1){this.attributes=[];this.attributes.map={}}}d.extend(b.prototype,{replace:function(g){var f=this;if(g.parent){g.remove()}f.insert(g,f);f.remove();return f},attr:function(h,l){var f=this,g,j,k;if(typeof h!=="string"){for(j in h){f.attr(j,h[j])}return f}if(g=f.attributes){if(l!==k){if(l===null){if(h in g.map){delete g.map[h];j=g.length;while(j--){if(g[j].name===h){g=g.splice(j,1);return f}}}return f}if(h in g.map){j=g.length;while(j--){if(g[j].name===h){g[j].value=l;break}}}else{g.push({name:h,value:l})}g.map[h]=l;return f}else{return g.map[h]}}},clone:function(){var g=this,n=new b(g.name,g.type),h,f,m,j,k;if(m=g.attributes){k=[];k.map={};for(h=0,f=m.length;h<f;h++){j=m[h];if(j.name!=="id"){k[k.length]={name:j.name,value:j.value};k.map[j.name]=j.value}}n.attributes=k}n.value=g.value;n.shortEnded=g.shortEnded;return n},wrap:function(g){var f=this;f.parent.insert(g,f);g.append(f);return f},unwrap:function(){var f=this,h,g;for(h=f.firstChild;h;){g=h.next;f.insert(h,f,true);h=g}f.remove()},remove:function(){var f=this,h=f.parent,g=f.next,i=f.prev;if(h){if(h.firstChild===f){h.firstChild=g;if(g){g.prev=null}}else{i.next=g}if(h.lastChild===f){h.lastChild=i;if(i){i.next=null}}else{g.prev=i}f.parent=f.next=f.prev=null}return f},append:function(h){var f=this,g;if(h.parent){h.remove()}g=f.lastChild;if(g){g.next=h;h.prev=g;f.lastChild=h}else{f.lastChild=f.firstChild=h}h.parent=f;return h},insert:function(h,f,i){var g;if(h.parent){h.remove()}g=f.parent||this;if(i){if(f===g.firstChild){g.firstChild=h}else{f.prev.next=h}h.prev=f.prev;h.next=f;f.prev=h}else{if(f===g.lastChild){g.lastChild=h}else{f.next.prev=h}h.next=f.next;h.prev=f;f.next=h}h.parent=g;return h},getAll:function(g){var f=this,h,i=[];for(h=f.firstChild;h;h=a(h,f)){if(h.name===g){i.push(h)}}return i},empty:function(){var g=this,f,h,j;if(g.firstChild){f=[];for(j=g.firstChild;j;j=a(j,g)){f.push(j)}h=f.length;while(h--){j=f[h];j.parent=j.firstChild=j.lastChild=j.next=j.prev=null}}g.firstChild=g.lastChild=null;return g},isEmpty:function(k){var f=this,j=f.firstChild,h,g;if(j){do{if(j.type===1){if(j.attributes.map["data-mce-bogus"]){continue}if(k[j.name]){return false}h=j.attributes.length;while(h--){g=j.attributes[h].name;if(g==="name"||g.indexOf("data-")===0){return false}}}if(j.type===8){return false}if((j.type===3&&!c.test(j.value))){return false}}while(j=a(j,f))}return true},walk:function(f){return a(this,null,f)}});d.extend(b,{create:function(g,f){var i,h;i=new b(g,e[g]||1);if(f){for(h in f){i.attr(h,f[h])}}return i}});d.html.Node=b})(tinymce);(function(b){var a=b.html.Node;b.html.DomParser=function(g,h){var f=this,e={},d=[],i={},c={};g=g||{};g.validate="validate" in g?g.validate:true;g.root_name=g.root_name||"body";f.schema=h=h||new b.html.Schema();function j(m){var o,p,x,v,z,n,q,l,t,u,k,s,y,r;s=b.makeMap("tr,td,th,tbody,thead,tfoot,table");k=h.getNonEmptyElements();for(o=0;o<m.length;o++){p=m[o];if(!p.parent){continue}v=[p];for(x=p.parent;x&&!h.isValidChild(x.name,p.name)&&!s[x.name];x=x.parent){v.push(x)}if(x&&v.length>1){v.reverse();z=n=f.filterNode(v[0].clone());for(t=0;t<v.length-1;t++){if(h.isValidChild(n.name,v[t].name)){q=f.filterNode(v[t].clone());n.append(q)}else{q=n}for(l=v[t].firstChild;l&&l!=v[t+1];){r=l.next;q.append(l);l=r}n=q}if(!z.isEmpty(k)){x.insert(z,v[0],true);x.insert(p,z)}else{x.insert(p,v[0],true)}x=v[0];if(x.isEmpty(k)||x.firstChild===x.lastChild&&x.firstChild.name==="br"){x.empty().remove()}}else{if(p.parent){if(p.name==="li"){y=p.prev;if(y&&(y.name==="ul"||y.name==="ul")){y.append(p);continue}y=p.next;if(y&&(y.name==="ul"||y.name==="ul")){y.insert(p,y.firstChild,true);continue}p.wrap(f.filterNode(new a("ul",1)));continue}if(h.isValidChild(p.parent.name,"div")&&h.isValidChild("div",p.name)){p.wrap(f.filterNode(new a("div",1)))}else{if(p.name==="style"||p.name==="script"){p.empty().remove()}else{p.unwrap()}}}}}}f.filterNode=function(m){var l,k,n;if(k in e){n=i[k];if(n){n.push(m)}else{i[k]=[m]}}l=d.length;while(l--){k=d[l].name;if(k in m.attributes.map){n=c[k];if(n){n.push(m)}else{c[k]=[m]}}}return m};f.addNodeFilter=function(k,l){b.each(b.explode(k),function(m){var n=e[m];if(!n){e[m]=n=[]}n.push(l)})};f.addAttributeFilter=function(k,l){b.each(b.explode(k),function(m){var n;for(n=0;n<d.length;n++){if(d[n].name===m){d[n].callbacks.push(l);return}}d.push({name:m,callbacks:[l]})})};f.parse=function(v,m){var n,J,B,A,D,C,x,r,F,N,z,o,E,M=[],L,t,k,y,s,p,u,q;m=m||{};i={};c={};o=b.extend(b.makeMap("script,style,head,html,body,title,meta,param"),h.getBlockElements());u=h.getNonEmptyElements();p=h.children;z=g.validate;q="forced_root_block" in m?m.forced_root_block:g.forced_root_block;s=h.getWhiteSpaceElements();E=/^[ \t\r\n]+/;t=/[ \t\r\n]+$/;k=/[ \t\r\n]+/g;y=/^[ \t\r\n]+$/;function G(){var O=J.firstChild,l,P;while(O){l=O.next;if(O.type==3||(O.type==1&&O.name!=="p"&&!o[O.name]&&!O.attr("data-mce-type"))){if(!P){P=K(q,1);J.insert(P,O);P.append(O)}else{P.append(O)}}else{P=null}O=l}}function K(l,O){var P=new a(l,O),Q;if(l in e){Q=i[l];if(Q){Q.push(P)}else{i[l]=[P]}}return P}function I(P){var Q,l,O;for(Q=P.prev;Q&&Q.type===3;){l=Q.value.replace(t,"");if(l.length>0){Q.value=l;Q=Q.prev}else{O=Q.prev;Q.remove();Q=O}}}function H(O){var P,l={};for(P in O){if(P!=="li"&&P!="p"){l[P]=O[P]}}return l}n=new b.html.SaxParser({validate:z,self_closing_elements:H(h.getSelfClosingElements()),cdata:function(l){B.append(K("#cdata",4)).value=l},text:function(P,l){var O;if(!L){P=P.replace(k," ");if(B.lastChild&&o[B.lastChild.name]){P=P.replace(E,"")}}if(P.length!==0){O=K("#text",3);O.raw=!!l;B.append(O).value=P}},comment:function(l){B.append(K("#comment",8)).value=l},pi:function(l,O){B.append(K(l,7)).value=O;I(B)},doctype:function(O){var l;l=B.append(K("#doctype",10));l.value=O;I(B)},start:function(l,W,P){var U,R,Q,O,S,X,V,T;Q=z?h.getElementRule(l):{};if(Q){U=K(Q.outputName||l,1);U.attributes=W;U.shortEnded=P;B.append(U);T=p[B.name];if(T&&p[U.name]&&!T[U.name]){M.push(U)}R=d.length;while(R--){S=d[R].name;if(S in W.map){F=c[S];if(F){F.push(U)}else{c[S]=[U]}}}if(o[l]){I(U)}if(!P){B=U}if(!L&&s[l]){L=true}}},end:function(l){var S,P,R,O,Q;P=z?h.getElementRule(l):{};if(P){if(o[l]){if(!L){S=B.firstChild;if(S&&S.type===3){R=S.value.replace(E,"");if(R.length>0){S.value=R;S=S.next}else{O=S.next;S.remove();S=O}while(S&&S.type===3){R=S.value;O=S.next;if(R.length===0||y.test(R)){S.remove();S=O}S=O}}S=B.lastChild;if(S&&S.type===3){R=S.value.replace(t,"");if(R.length>0){S.value=R;S=S.prev}else{O=S.prev;S.remove();S=O}while(S&&S.type===3){R=S.value;O=S.prev;if(R.length===0||y.test(R)){S.remove();S=O}S=O}}}S=B.prev;if(S&&S.type===3){R=S.value.replace(E,"");if(R.length>0){S.value=R}else{S.remove()}}}if(L&&s[l]){L=false}if(P.removeEmpty||P.paddEmpty){if(B.isEmpty(u)){if(P.paddEmpty){B.empty().append(new a("#text","3")).value="\u00a0"}else{if(!B.attributes.map.name&&!B.attributes.map.id){Q=B.parent;B.empty().remove();B=Q;return}}}}B=B.parent}}},h);J=B=new a(m.context||g.root_name,11);n.parse(v);if(z&&M.length){if(!m.context){j(M)}else{m.invalid=true}}if(q&&J.name=="body"){G()}if(!m.invalid){for(N in i){F=e[N];A=i[N];x=A.length;while(x--){if(!A[x].parent){A.splice(x,1)}}for(D=0,C=F.length;D<C;D++){F[D](A,N,m)}}for(D=0,C=d.length;D<C;D++){F=d[D];if(F.name in c){A=c[F.name];x=A.length;while(x--){if(!A[x].parent){A.splice(x,1)}}for(x=0,r=F.callbacks.length;x<r;x++){F.callbacks[x](A,F.name,m)}}}}return J};if(g.remove_trailing_brs){f.addNodeFilter("br",function(n,m){var r,q=n.length,o,v=b.extend({},h.getBlockElements()),k=h.getNonEmptyElements(),t,s,p,u;v.body=1;for(r=0;r<q;r++){o=n[r];t=o.parent;if(v[o.parent.name]&&o===t.lastChild){p=o.prev;while(p){u=p.name;if(u!=="span"||p.attr("data-mce-type")!=="bookmark"){if(u!=="br"){break}if(u==="br"){o=null;break}}p=p.prev}if(o){o.remove();if(t.isEmpty(k)){elementRule=h.getElementRule(t.name);if(elementRule){if(elementRule.removeEmpty){t.remove()}else{if(elementRule.paddEmpty){t.empty().append(new b.html.Node("#text",3)).value="\u00a0"}}}}}}else{s=o;while(t.firstChild===s&&t.lastChild===s){s=t;if(v[t.name]){break}t=t.parent}if(s===t){textNode=new b.html.Node("#text",3);textNode.value="\u00a0";o.replace(textNode)}}}})}if(!g.allow_html_in_named_anchor){f.addAttributeFilter("id,name",function(k,l){var n=k.length,p,m,o,q;while(n--){q=k[n];if(q.name==="a"&&q.firstChild&&!q.attr("href")){o=q.parent;p=q.lastChild;do{m=p.prev;o.insert(p,q);p=m}while(p)}}})}}})(tinymce);tinymce.html.Writer=function(e){var c=[],a,b,d,f,g;e=e||{};a=e.indent;b=tinymce.makeMap(e.indent_before||"");d=tinymce.makeMap(e.indent_after||"");f=tinymce.html.Entities.getEncodeFunc(e.entity_encoding||"raw",e.entities);g=e.element_format=="html";return{start:function(m,k,p){var n,j,h,o;if(a&&b[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}c.push("<",m);if(k){for(n=0,j=k.length;n<j;n++){h=k[n];c.push(" ",h.name,'="',f(h.value,true),'"')}}if(!p||g){c[c.length]=">"}else{c[c.length]=" />"}if(p&&a&&d[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}},end:function(h){var i;c.push("</",h,">");if(a&&d[h]&&c.length>0){i=c[c.length-1];if(i.length>0&&i!=="\n"){c.push("\n")}}},text:function(i,h){if(i.length>0){c[c.length]=h?i:f(i)}},cdata:function(h){c.push("<![CDATA[",h,"]]>")},comment:function(h){c.push("<!--",h,"-->")},pi:function(h,i){if(i){c.push("<?",h," ",i,"?>")}else{c.push("<?",h,"?>")}if(a){c.push("\n")}},doctype:function(h){c.push("<!DOCTYPE",h,">",a?"\n":"")},reset:function(){c.length=0},getContent:function(){return c.join("").replace(/\n$/,"")}}};(function(a){a.html.Serializer=function(c,d){var b=this,e=new a.html.Writer(c);c=c||{};c.validate="validate" in c?c.validate:true;b.schema=d=d||new a.html.Schema();b.writer=e;b.serialize=function(h){var g,i;i=c.validate;g={3:function(k,j){e.text(k.value,k.raw)},8:function(j){e.comment(j.value)},7:function(j){e.pi(j.name,j.value)},10:function(j){e.doctype(j.value)},4:function(j){e.cdata(j.value)},11:function(j){if((j=j.firstChild)){do{f(j)}while(j=j.next)}}};e.reset();function f(k){var t=g[k.type],j,o,s,r,p,u,n,m,q;if(!t){j=k.name;o=k.shortEnded;s=k.attributes;if(i&&s&&s.length>1){u=[];u.map={};q=d.getElementRule(k.name);for(n=0,m=q.attributesOrder.length;n<m;n++){r=q.attributesOrder[n];if(r in s.map){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}for(n=0,m=s.length;n<m;n++){r=s[n].name;if(!(r in u.map)){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}s=u}e.start(k.name,s,o);if(!o){if((k=k.firstChild)){do{f(k)}while(k=k.next)}e.end(j)}}else{t(k)}}if(h.type==1&&!c.inner){f(h)}else{g[11](h)}return e.getContent()}}})(tinymce);tinymce.dom={};(function(b,h){var g=!!document.addEventListener;function c(k,j,l,i){if(k.addEventListener){k.addEventListener(j,l,i||false)}else{if(k.attachEvent){k.attachEvent("on"+j,l)}}}function e(k,j,l,i){if(k.removeEventListener){k.removeEventListener(j,l,i||false)}else{if(k.detachEvent){k.detachEvent("on"+j,l)}}}function a(n,l){var i,k=l||{};function j(){return false}function m(){return true}for(i in n){if(i!=="layerX"&&i!=="layerY"){k[i]=n[i]}}if(!k.target){k.target=k.srcElement||document}k.preventDefault=function(){k.isDefaultPrevented=m;if(n){if(n.preventDefault){n.preventDefault()}else{n.returnValue=false}}};k.stopPropagation=function(){k.isPropagationStopped=m;if(n){if(n.stopPropagation){n.stopPropagation()}else{n.cancelBubble=true}}};k.stopImmediatePropagation=function(){k.isImmediatePropagationStopped=m;k.stopPropagation()};if(!k.isDefaultPrevented){k.isDefaultPrevented=j;k.isPropagationStopped=j;k.isImmediatePropagationStopped=j}return k}function d(m,n,l){var k=m.document,j={type:"ready"};function i(){if(!l.domLoaded){l.domLoaded=true;n(j)}}if(g){c(m,"DOMContentLoaded",i)}else{c(k,"readystatechange",function(){if(k.readyState==="complete"){e(k,"readystatechange",arguments.callee);i()}});if(k.documentElement.doScroll&&m===m.top){(function(){try{k.documentElement.doScroll("left")}catch(o){setTimeout(arguments.callee,0);return}i()})()}}c(m,"load",i)}function f(k){var q=this,p={},i,o,n,m,l;m="onmouseenter" in document.documentElement;n="onfocusin" in document.documentElement;l={mouseenter:"mouseover",mouseleave:"mouseout"};i=1;q.domLoaded=false;q.events=p;function j(t,x){var s,u,r,v;s=p[x][t.type];if(s){for(u=0,r=s.length;u<r;u++){v=s[u];if(v&&v.func.call(v.scope,t)===false){t.preventDefault()}if(t.isImmediatePropagationStopped()){return}}}}q.bind=function(x,A,D,E){var s,t,u,r,B,z,C,v=window;function y(F){j(a(F||v.event),s)}if(!x||x.nodeType===3||x.nodeType===8){return}if(!x[h]){s=i++;x[h]=s;p[s]={}}else{s=x[h];if(!p[s]){p[s]={}}}E=E||x;A=A.split(" ");u=A.length;while(u--){r=A[u];z=y;B=C=false;if(r==="DOMContentLoaded"){r="ready"}if((q.domLoaded||x.readyState=="complete")&&r==="ready"){q.domLoaded=true;D.call(E,a({type:r}));continue}if(!m){B=l[r];if(B){z=function(F){var H,G;H=F.currentTarget;G=F.relatedTarget;if(G&&H.contains){G=H.contains(G)}else{while(G&&G!==H){G=G.parentNode}}if(!G){F=a(F||v.event);F.type=F.type==="mouseout"?"mouseleave":"mouseenter";F.target=H;j(F,s)}}}}if(!n&&(r==="focusin"||r==="focusout")){C=true;B=r==="focusin"?"focus":"blur";z=function(F){F=a(F||v.event);F.type=F.type==="focus"?"focusin":"focusout";j(F,s)}}t=p[s][r];if(!t){p[s][r]=t=[{func:D,scope:E}];t.fakeName=B;t.capture=C;t.nativeHandler=z;if(!g){t.proxyHandler=k(s)}if(r==="ready"){d(x,z,q)}else{c(x,B||r,g?z:t.proxyHandler,C)}}else{t.push({func:D,scope:E})}}x=t=0;return D};q.unbind=function(x,z,A){var s,u,v,B,r,t;if(!x||x.nodeType===3||x.nodeType===8){return q}s=x[h];if(s){t=p[s];if(z){z=z.split(" ");v=z.length;while(v--){r=z[v];u=t[r];if(u){if(A){B=u.length;while(B--){if(u[B].func===A){u.splice(B,1)}}}if(!A||u.length===0){delete t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}}}}else{for(r in t){u=t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}t={}}for(r in t){return q}delete p[s];try{delete x[h]}catch(y){x[h]=null}}return q};q.fire=function(u,s,r){var v,t;if(!u||u.nodeType===3||u.nodeType===8){return q}t=a(null,r);t.type=s;do{v=u[h];if(v){j(t,v)}u=u.parentNode||u.ownerDocument||u.defaultView||u.parentWindow}while(u&&!t.isPropagationStopped());return q};q.clean=function(u){var s,r,t=q.unbind;if(!u||u.nodeType===3||u.nodeType===8){return q}if(u[h]){t(u)}if(!u.getElementsByTagName){u=u.document}if(u&&u.getElementsByTagName){t(u);r=u.getElementsByTagName("*");s=r.length;while(s--){u=r[s];if(u[h]){t(u)}}}return q};q.callNativeHandler=function(s,r){if(p){p[s][r.type].nativeHandler(r)}};q.destory=function(){p={}};q.add=function(v,s,u,t){if(typeof(v)==="string"){v=document.getElementById(v)}if(v&&v instanceof Array){var r=v.length;while(r--){q.add(v[r],s,u,t)}return}if(s==="init"){s="ready"}return q.bind(v,s instanceof Array?s.join(" "):s,u,t)};q.remove=function(v,s,u,t){if(!v){return q}if(typeof(v)==="string"){v=document.getElementById(v)}if(v instanceof Array){var r=v.length;while(r--){q.remove(v[r],s,u,t)}return q}return q.unbind(v,s instanceof Array?s.join(" "):s,u)};q.clear=function(r){if(typeof(r)==="string"){r=document.getElementById(r)}return q.clean(r)};q.cancel=function(r){if(r){q.prevent(r);q.stop(r)}return false};q.prevent=function(r){if(!r.preventDefault){r=a(r)}r.preventDefault();return false};q.stop=function(r){if(!r.stopPropagation){r=a(r)}r.stopPropagation();return false}}b.EventUtils=f;b.Event=new f(function(i){return function(j){tinymce.dom.Event.callNativeHandler(i,j)}});b.Event.bind(window,"ready",function(){});b=0})(tinymce.dom,"data-mce-expando");tinymce.dom.TreeWalker=function(a,c){var b=a;function d(i,f,e,j){var h,g;if(i){if(!j&&i[f]){return i[f]}if(i!=c){h=i[e];if(h){return h}for(g=i.parentNode;g&&g!=c;g=g.parentNode){h=g[e];if(h){return h}}}}}this.current=function(){return b};this.next=function(e){return(b=d(b,"firstChild","nextSibling",e))};this.prev=function(e){return(b=d(b,"lastChild","previousSibling",e))}};(function(e){var g=e.each,d=e.is,f=e.isWebKit,b=e.isIE,h=e.html.Entities,c=/^([a-z0-9],?)+$/i,a=/^[ \t\r\n]*$/;e.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(o,l){var k=this,i,j,n;k.doc=o;k.win=window;k.files={};k.cssFlicker=false;k.counter=0;k.stdMode=!e.isIE||o.documentMode>=8;k.boxModel=!e.isIE||o.compatMode=="CSS1Compat"||k.stdMode;k.hasOuterHTML="outerHTML" in o.createElement("a");k.settings=l=e.extend({keep_values:false,hex_colors:1},l);k.schema=l.schema;k.styles=new e.html.Styles({url_converter:l.url_converter,url_converter_scope:l.url_converter_scope},l.schema);if(e.isIE6){try{o.execCommand("BackgroundImageCache",false,true)}catch(m){k.cssFlicker=true}}k.fixDoc(o);k.events=l.ownEvents?new e.dom.EventUtils(l.proxy):e.dom.Event;e.addUnload(k.destroy,k);n=l.schema?l.schema.getBlockElements():{};k.isBlock=function(q){var p=q.nodeType;if(p){return !!(p===1&&n[q.nodeName])}return !!n[q]}},fixDoc:function(k){var j=this.settings,i;if(b&&j.schema){("abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video").replace(/\w+/g,function(l){k.createElement(l)});for(i in j.schema.getCustomElements()){k.createElement(i)}}},clone:function(k,i){var j=this,m,l;if(!b||k.nodeType!==1||i){return k.cloneNode(i)}l=j.doc;if(!i){m=l.createElement(k.nodeName);g(j.getAttribs(k),function(n){j.setAttrib(m,n.nodeName,j.getAttrib(k,n.nodeName))});return m}return m.firstChild},getRoot:function(){var i=this,j=i.settings;return(j&&i.get(j.root_element))||i.doc.body},getViewPort:function(j){var k,i;j=!j?this.win:j;k=j.document;i=this.boxModel?k.documentElement:k.body;return{x:j.pageXOffset||i.scrollLeft,y:j.pageYOffset||i.scrollTop,w:j.innerWidth||i.clientWidth,h:j.innerHeight||i.clientHeight}},getRect:function(l){var k,i=this,j;l=i.get(l);k=i.getPos(l);j=i.getSize(l);return{x:k.x,y:k.y,w:j.w,h:j.h}},getSize:function(l){var j=this,i,k;l=j.get(l);i=j.getStyle(l,"width");k=j.getStyle(l,"height");if(i.indexOf("px")===-1){i=0}if(k.indexOf("px")===-1){k=0}return{w:parseInt(i,10)||l.offsetWidth||l.clientWidth,h:parseInt(k,10)||l.offsetHeight||l.clientHeight}},getParent:function(k,j,i){return this.getParents(k,j,i,false)},getParents:function(s,m,k,q){var j=this,i,l=j.settings,p=[];s=j.get(s);q=q===undefined;if(l.strict_root){k=k||j.getRoot()}if(d(m,"string")){i=m;if(m==="*"){m=function(o){return o.nodeType==1}}else{m=function(o){return j.is(o,i)}}}while(s){if(s==k||!s.nodeType||s.nodeType===9){break}if(!m||m(s)){if(q){p.push(s)}else{return s}}s=s.parentNode}return q?p:null},get:function(i){var j;if(i&&this.doc&&typeof(i)=="string"){j=i;i=this.doc.getElementById(i);if(i&&i.id!==j){return this.doc.getElementsByName(j)[1]}}return i},getNext:function(j,i){return this._findSib(j,i,"nextSibling")},getPrev:function(j,i){return this._findSib(j,i,"previousSibling")},select:function(k,j){var i=this;return e.dom.Sizzle(k,i.get(j)||i.get(i.settings.root_element)||i.doc,[])},is:function(l,j){var k;if(l.length===undefined){if(j==="*"){return l.nodeType==1}if(c.test(j)){j=j.toLowerCase().split(/,/);l=l.nodeName.toLowerCase();for(k=j.length-1;k>=0;k--){if(j[k]==l){return true}}return false}}return e.dom.Sizzle.matches(j,l.nodeType?[l]:l).length>0},add:function(l,o,i,k,m){var j=this;return this.run(l,function(r){var q,n;q=d(o,"string")?j.doc.createElement(o):o;j.setAttribs(q,i);if(k){if(k.nodeType){q.appendChild(k)}else{j.setHTML(q,k)}}return !m?r.appendChild(q):q})},create:function(k,i,j){return this.add(this.doc.createElement(k),k,i,j,1)},createHTML:function(q,i,m){var p="",l=this,j;p+="<"+q;for(j in i){if(i.hasOwnProperty(j)){p+=" "+j+'="'+l.encode(i[j])+'"'}}if(typeof(m)!="undefined"){return p+">"+m+"</"+q+">"}return p+" />"},remove:function(i,j){return this.run(i,function(l){var m,k=l.parentNode;if(!k){return null}if(j){while(m=l.firstChild){if(!e.isIE||m.nodeType!==3||m.nodeValue){k.insertBefore(m,l)}else{l.removeChild(m)}}}return k.removeChild(l)})},setStyle:function(l,i,j){var k=this;return k.run(l,function(o){var n,m;n=o.style;i=i.replace(/-(\D)/g,function(q,p){return p.toUpperCase()});if(k.pixelStyles.test(i)&&(e.is(j,"number")||/^[\-0-9\.]+$/.test(j))){j+="px"}switch(i){case"opacity":if(b){n.filter=j===""?"":"alpha(opacity="+(j*100)+")";if(!l.currentStyle||!l.currentStyle.hasLayout){n.display="inline-block"}}n[i]=n["-moz-opacity"]=n["-khtml-opacity"]=j||"";break;case"float":b?n.styleFloat=j:n.cssFloat=j;break;default:n[i]=j||""}if(k.settings.update_styles){k.setAttrib(o,"data-mce-style")}})},getStyle:function(l,i,k){l=this.get(l);if(!l){return}if(this.doc.defaultView&&k){i=i.replace(/[A-Z]/g,function(m){return"-"+m});try{return this.doc.defaultView.getComputedStyle(l,null).getPropertyValue(i)}catch(j){return null}}i=i.replace(/-(\D)/g,function(n,m){return m.toUpperCase()});if(i=="float"){i=b?"styleFloat":"cssFloat"}if(l.currentStyle&&k){return l.currentStyle[i]}return l.style?l.style[i]:undefined},setStyles:function(l,m){var j=this,k=j.settings,i;i=k.update_styles;k.update_styles=0;g(m,function(o,p){j.setStyle(l,p,o)});k.update_styles=i;if(k.update_styles){j.setAttrib(l,k.cssText)}},removeAllAttribs:function(i){return this.run(i,function(l){var k,j=l.attributes;for(k=j.length-1;k>=0;k--){l.removeAttributeNode(j.item(k))}})},setAttrib:function(k,l,i){var j=this;if(!k||!l){return}if(j.settings.strict){l=l.toLowerCase()}return this.run(k,function(p){var o=j.settings;var m=p.getAttribute(l);if(i!==null){switch(l){case"style":if(!d(i,"string")){g(i,function(q,r){j.setStyle(p,r,q)});return}if(o.keep_values){if(i&&!j._isRes(i)){p.setAttribute("data-mce-style",i,2)}else{p.removeAttribute("data-mce-style",2)}}p.style.cssText=i;break;case"class":p.className=i||"";break;case"src":case"href":if(o.keep_values){if(o.url_converter){i=o.url_converter.call(o.url_converter_scope||j,i,l,p)}j.setAttrib(p,"data-mce-"+l,i,2)}break;case"shape":p.setAttribute("data-mce-style",i);break}}if(d(i)&&i!==null&&i.length!==0){p.setAttribute(l,""+i,2)}else{p.removeAttribute(l,2)}if(tinyMCE.activeEditor&&m!=i){var n=tinyMCE.activeEditor;n.onSetAttrib.dispatch(n,p,l,i)}})},setAttribs:function(j,k){var i=this;return this.run(j,function(l){g(k,function(m,o){i.setAttrib(l,o,m)})})},getAttrib:function(m,o,k){var i,j=this,l;m=j.get(m);if(!m||m.nodeType!==1){return k===l?false:k}if(!d(k)){k=""}if(/^(src|href|style|coords|shape)$/.test(o)){i=m.getAttribute("data-mce-"+o);if(i){return i}}if(b&&j.props[o]){i=m[j.props[o]];i=i&&i.nodeValue?i.nodeValue:i}if(!i){i=m.getAttribute(o,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(o)){if(m[j.props[o]]===true&&i===""){return o}return i?o:""}if(m.nodeName==="FORM"&&m.getAttributeNode(o)){return m.getAttributeNode(o).nodeValue}if(o==="style"){i=i||m.style.cssText;if(i){i=j.serializeStyle(j.parseStyle(i),m.nodeName);if(j.settings.keep_values&&!j._isRes(i)){m.setAttribute("data-mce-style",i)}}}if(f&&o==="class"&&i){i=i.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(b){switch(o){case"rowspan":case"colspan":if(i===1){i=""}break;case"size":if(i==="+0"||i===20||i===0){i=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(i===0){i=""}break;case"hspace":if(i===-1){i=""}break;case"maxlength":case"tabindex":if(i===32768||i===2147483647||i==="32768"){i=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(i===65535){return o}return k;case"shape":i=i.toLowerCase();break;default:if(o.indexOf("on")===0&&i){i=e._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1",""+i)}}}return(i!==l&&i!==null&&i!=="")?""+i:k},getPos:function(q,l){var j=this,i=0,p=0,m,o=j.doc,k;q=j.get(q);l=l||o.body;if(q){if(q.getBoundingClientRect){q=q.getBoundingClientRect();m=j.boxModel?o.documentElement:o.body;i=q.left+(o.documentElement.scrollLeft||o.body.scrollLeft)-m.clientTop;p=q.top+(o.documentElement.scrollTop||o.body.scrollTop)-m.clientLeft;return{x:i,y:p}}k=q;while(k&&k!=l&&k.nodeType){i+=k.offsetLeft||0;p+=k.offsetTop||0;k=k.offsetParent}k=q.parentNode;while(k&&k!=l&&k.nodeType){i-=k.scrollLeft||0;p-=k.scrollTop||0;k=k.parentNode}}return{x:i,y:p}},parseStyle:function(i){return this.styles.parse(i)},serializeStyle:function(j,i){return this.styles.serialize(j,i)},addStyle:function(j){var k=this.doc,i;styleElm=k.getElementById("mceDefaultStyles");if(!styleElm){styleElm=k.createElement("style"),styleElm.id="mceDefaultStyles";styleElm.type="text/css";i=k.getElementsByTagName("head")[0];if(i.firstChild){i.insertBefore(styleElm,i.firstChild)}else{i.appendChild(styleElm)}}if(styleElm.styleSheet){styleElm.styleSheet.cssText+=j}else{styleElm.appendChild(k.createTextNode(j))}},loadCSS:function(i){var k=this,l=k.doc,j;if(!i){i=""}j=l.getElementsByTagName("head")[0];g(i.split(","),function(m){var n;if(k.files[m]){return}k.files[m]=true;n=k.create("link",{rel:"stylesheet",href:e._addVer(m)});if(b&&l.documentMode&&l.recalc){n.onload=function(){if(l.recalc){l.recalc()}n.onload=null}}j.appendChild(n)})},addClass:function(i,j){return this.run(i,function(k){var l;if(!j){return 0}if(this.hasClass(k,j)){return k.className}l=this.removeClass(k,j);return k.className=(l!=""?(l+" "):"")+j})},removeClass:function(k,l){var i=this,j;return i.run(k,function(n){var m;if(i.hasClass(n,l)){if(!j){j=new RegExp("(^|\\s+)"+l+"(\\s+|$)","g")}m=n.className.replace(j," ");m=e.trim(m!=" "?m:"");n.className=m;if(!m){n.removeAttribute("class");n.removeAttribute("className")}return m}return n.className})},hasClass:function(j,i){j=this.get(j);if(!j||!i){return false}return(" "+j.className+" ").indexOf(" "+i+" ")!==-1},show:function(i){return this.setStyle(i,"display","block")},hide:function(i){return this.setStyle(i,"display","none")},isHidden:function(i){i=this.get(i);return !i||i.style.display=="none"||this.getStyle(i,"display")=="none"},uniqueId:function(i){return(!i?"mce_":i)+(this.counter++)},setHTML:function(k,j){var i=this;return i.run(k,function(m){if(b){while(m.firstChild){m.removeChild(m.firstChild)}try{m.innerHTML="<br />"+j;m.removeChild(m.firstChild)}catch(l){var n=i.create("div");n.innerHTML="<br />"+j;g(e.grep(n.childNodes),function(p,o){if(o&&m.canHaveHTML){m.appendChild(p)}})}}else{m.innerHTML=j}return j})},getOuterHTML:function(k){var j,i=this;k=i.get(k);if(!k){return null}if(k.nodeType===1&&i.hasOuterHTML){return k.outerHTML}j=(k.ownerDocument||i.doc).createElement("body");j.appendChild(k.cloneNode(true));return j.innerHTML},setOuterHTML:function(l,j,m){var i=this;function k(p,o,r){var s,q;q=r.createElement("body");q.innerHTML=o;s=q.lastChild;while(s){i.insertAfter(s.cloneNode(true),p);s=s.previousSibling}i.remove(p)}return this.run(l,function(o){o=i.get(o);if(o.nodeType==1){m=m||o.ownerDocument||i.doc;if(b){try{if(b&&o.nodeType==1){o.outerHTML=j}else{k(o,j,m)}}catch(n){k(o,j,m)}}else{k(o,j,m)}}})},decode:h.decode,encode:h.encodeAllRaw,insertAfter:function(i,j){j=this.get(j);return this.run(i,function(l){var k,m;k=j.parentNode;m=j.nextSibling;if(m){k.insertBefore(l,m)}else{k.appendChild(l)}return l})},replace:function(m,l,i){var j=this;if(d(l,"array")){m=m.cloneNode(true)}return j.run(l,function(k){if(i){g(e.grep(k.childNodes),function(n){m.appendChild(n)})}return k.parentNode.replaceChild(m,k)})},rename:function(l,i){var k=this,j;if(l.nodeName!=i.toUpperCase()){j=k.create(i);g(k.getAttribs(l),function(m){k.setAttrib(j,m.nodeName,k.getAttrib(l,m.nodeName))});k.replace(j,l,1)}return j||l},findCommonAncestor:function(k,i){var l=k,j;while(l){j=i;while(j&&l!=j){j=j.parentNode}if(l==j){break}l=l.parentNode}if(!l&&k.ownerDocument){return k.ownerDocument.documentElement}return l},toHex:function(i){var k=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(i);function j(l){l=parseInt(l,10).toString(16);return l.length>1?l:"0"+l}if(k){i="#"+j(k[1])+j(k[2])+j(k[3]);return i}return i},getClasses:function(){var n=this,j=[],m,o={},p=n.settings.class_filter,l;if(n.classes){return n.classes}function q(i){g(i.imports,function(s){q(s)});g(i.cssRules||i.rules,function(s){switch(s.type||1){case 1:if(s.selectorText){g(s.selectorText.split(","),function(r){r=r.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(r)||!/\.[\w\-]+$/.test(r)){return}l=r;r=e._replace(/.*\.([a-z0-9_\-]+).*/i,"$1",r);if(p&&!(r=p(r,l))){return}if(!o[r]){j.push({"class":r});o[r]=1}})}break;case 3:q(s.styleSheet);break}})}try{g(n.doc.styleSheets,q)}catch(k){}if(j.length>0){n.classes=j}return j},run:function(l,k,j){var i=this,m;if(i.doc&&typeof(l)==="string"){l=i.get(l)}if(!l){return false}j=j||this;if(!l.nodeType&&(l.length||l.length===0)){m=[];g(l,function(o,n){if(o){if(typeof(o)=="string"){o=i.doc.getElementById(o)}m.push(k.call(j,o,n))}});return m}return k.call(j,l)},getAttribs:function(j){var i;j=this.get(j);if(!j){return[]}if(b){i=[];if(j.nodeName=="OBJECT"){return j.attributes}if(j.nodeName==="OPTION"&&this.getAttrib(j,"selected")){i.push({specified:1,nodeName:"selected"})}j.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(k){i.push({specified:1,nodeName:k})});return i}return j.attributes},isEmpty:function(m,k){var r=this,o,n,q,j,l,p=0;m=m.firstChild;if(m){j=new e.dom.TreeWalker(m,m.parentNode);k=k||r.schema?r.schema.getNonEmptyElements():null;do{q=m.nodeType;if(q===1){if(m.getAttribute("data-mce-bogus")){continue}l=m.nodeName.toLowerCase();if(k&&k[l]){if(l==="br"){p++;continue}return false}n=r.getAttribs(m);o=m.attributes.length;while(o--){l=m.attributes[o].nodeName;if(l==="name"||l==="data-mce-bookmark"){return false}}}if(q==8){return false}if((q===3&&!a.test(m.nodeValue))){return false}}while(m=j.next())}return p<=1},destroy:function(j){var i=this;i.win=i.doc=i.root=i.events=i.frag=null;if(!j){e.removeUnload(i.destroy)}},createRng:function(){var i=this.doc;return i.createRange?i.createRange():new e.dom.Range(this)},nodeIndex:function(m,n){var i=0,k,l,j;if(m){for(k=m.nodeType,m=m.previousSibling,l=m;m;m=m.previousSibling){j=m.nodeType;if(n&&j==3){if(j==k||!m.nodeValue.length){continue}}i++;k=j}}return i},split:function(m,l,p){var q=this,i=q.createRng(),n,k,o;function j(v){var t,s=v.childNodes,u=v.nodeType;function x(A){var z=A.previousSibling&&A.previousSibling.nodeName=="SPAN";var y=A.nextSibling&&A.nextSibling.nodeName=="SPAN";return z&&y}if(u==1&&v.getAttribute("data-mce-type")=="bookmark"){return}for(t=s.length-1;t>=0;t--){j(s[t])}if(u!=9){if(u==3&&v.nodeValue.length>0){var r=e.trim(v.nodeValue).length;if(!q.isBlock(v.parentNode)||r>0||r===0&&x(v)){return}}else{if(u==1){s=v.childNodes;if(s.length==1&&s[0]&&s[0].nodeType==1&&s[0].getAttribute("data-mce-type")=="bookmark"){v.parentNode.insertBefore(s[0],v)}if(s.length||/^(br|hr|input|img)$/i.test(v.nodeName)){return}}}q.remove(v)}return v}if(m&&l){i.setStart(m.parentNode,q.nodeIndex(m));i.setEnd(l.parentNode,q.nodeIndex(l));n=i.extractContents();i=q.createRng();i.setStart(l.parentNode,q.nodeIndex(l)+1);i.setEnd(m.parentNode,q.nodeIndex(m)+1);k=i.extractContents();o=m.parentNode;o.insertBefore(j(n),m);if(p){o.replaceChild(p,l)}else{o.insertBefore(l,m)}o.insertBefore(j(k),m);q.remove(m);return p||l}},bind:function(l,i,k,j){return this.events.add(l,i,k,j||this)},unbind:function(k,i,j){return this.events.remove(k,i,j)},fire:function(k,j,i){return this.events.fire(k,j,i)},getContentEditable:function(j){var i;if(j.nodeType!=1){return null}i=j.getAttribute("data-mce-contenteditable");if(i&&i!=="inherit"){return i}return j.contentEditable!=="inherit"?j.contentEditable:null},_findSib:function(l,i,j){var k=this,m=i;if(l){if(d(m,"string")){m=function(n){return k.is(n,i)}}for(l=l[j];l;l=l[j]){if(m(l)){return l}}}return null},_isRes:function(i){return/^(top|left|bottom|right|width|height)/i.test(i)||/;\s*(top|left|bottom|right|width|height)/i.test(i)}});e.DOM=new e.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var O=this,e=c.doc,U=0,F=1,j=2,E=true,S=false,W="startOffset",h="startContainer",Q="endContainer",A="endOffset",k=tinymce.extend,n=c.nodeIndex;k(O,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:E,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:J,setEndBefore:K,setEndAfter:u,collapse:B,selectNode:y,selectNodeContents:G,compareBoundaryPoints:v,deleteContents:p,extractContents:I,cloneContents:d,insertNode:D,surroundContents:N,cloneRange:L,toStringIE:T});function x(){return e.createDocumentFragment()}function q(X,t){C(E,X,t)}function s(X,t){C(S,X,t)}function g(t){q(t.parentNode,n(t))}function J(t){q(t.parentNode,n(t)+1)}function K(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function B(t){if(t){O[Q]=O[h];O[A]=O[W]}else{O[h]=O[Q];O[W]=O[A]}O.collapsed=E}function y(t){g(t);u(t)}function G(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(aa,t){var ad=O[h],Y=O[W],ac=O[Q],X=O[A],ab=t.startContainer,af=t.startOffset,Z=t.endContainer,ae=t.endOffset;if(aa===0){return H(ad,Y,ab,af)}if(aa===1){return H(ac,X,ab,af)}if(aa===2){return H(ac,X,Z,ae)}if(aa===3){return H(ad,Y,Z,ae)}}function p(){l(j)}function I(){return l(U)}function d(){return l(F)}function D(aa){var X=this[h],t=this[W],Z,Y;if((X.nodeType===3||X.nodeType===4)&&X.nodeValue){if(!t){X.parentNode.insertBefore(aa,X)}else{if(t>=X.nodeValue.length){c.insertAfter(aa,X)}else{Z=X.splitText(t);X.parentNode.insertBefore(aa,Z)}}}else{if(X.childNodes.length>0){Y=X.childNodes[t]}if(Y){X.insertBefore(aa,Y)}else{X.appendChild(aa)}}}function N(X){var t=O.extractContents();O.insertNode(X);X.appendChild(t);O.selectNode(X)}function L(){return k(new b(c),{startContainer:O[h],startOffset:O[W],endContainer:O[Q],endOffset:O[A],collapsed:O.collapsed,commonAncestorContainer:O.commonAncestorContainer})}function P(t,X){var Y;if(t.nodeType==3){return t}if(X<0){return t}Y=t.firstChild;while(Y&&X>0){--X;Y=Y.nextSibling}if(Y){return Y}return t}function m(){return(O[h]==O[Q]&&O[W]==O[A])}function H(Z,ab,X,aa){var ac,Y,t,ad,af,ae;if(Z==X){if(ab==aa){return 0}if(ab<aa){return -1}return 1}ac=X;while(ac&&ac.parentNode!=Z){ac=ac.parentNode}if(ac){Y=0;t=Z.firstChild;while(t!=ac&&Y<ab){Y++;t=t.nextSibling}if(ab<=Y){return -1}return 1}ac=Z;while(ac&&ac.parentNode!=X){ac=ac.parentNode}if(ac){Y=0;t=X.firstChild;while(t!=ac&&Y<aa){Y++;t=t.nextSibling}if(Y<aa){return -1}return 1}ad=c.findCommonAncestor(Z,X);af=Z;while(af&&af.parentNode!=ad){af=af.parentNode}if(!af){af=ad}ae=X;while(ae&&ae.parentNode!=ad){ae=ae.parentNode}if(!ae){ae=ad}if(af==ae){return 0}t=ad.firstChild;while(t){if(t==af){return -1}if(t==ae){return 1}t=t.nextSibling}}function C(X,aa,Z){var t,Y;if(X){O[h]=aa;O[W]=Z}else{O[Q]=aa;O[A]=Z}t=O[Q];while(t.parentNode){t=t.parentNode}Y=O[h];while(Y.parentNode){Y=Y.parentNode}if(Y==t){if(H(O[h],O[W],O[Q],O[A])>0){O.collapse(X)}}else{O.collapse(X)}O.collapsed=m();O.commonAncestorContainer=c.findCommonAncestor(O[h],O[Q])}function l(ad){var ac,Z=0,af=0,X,ab,Y,aa,t,ae;if(O[h]==O[Q]){return f(ad)}for(ac=O[Q],X=ac.parentNode;X;ac=X,X=X.parentNode){if(X==O[h]){return r(ac,ad)}++Z}for(ac=O[h],X=ac.parentNode;X;ac=X,X=X.parentNode){if(X==O[Q]){return V(ac,ad)}++af}ab=af-Z;Y=O[h];while(ab>0){Y=Y.parentNode;ab--}aa=O[Q];while(ab<0){aa=aa.parentNode;ab++}for(t=Y.parentNode,ae=aa.parentNode;t!=ae;t=t.parentNode,ae=ae.parentNode){Y=t;aa=ae}return o(Y,aa,ad)}function f(ac){var ae,af,t,Y,Z,ad,aa,X,ab;if(ac!=j){ae=x()}if(O[W]==O[A]){return ae}if(O[h].nodeType==3){af=O[h].nodeValue;t=af.substring(O[W],O[A]);if(ac!=F){Y=O[h];X=O[W];ab=O[A]-O[W];if(X===0&&ab>=Y.nodeValue.length-1){Y.parentNode.removeChild(Y)}else{Y.deleteData(X,ab)}O.collapse(E)}if(ac==j){return}if(t.length>0){ae.appendChild(e.createTextNode(t))}return ae}Y=P(O[h],O[W]);Z=O[A]-O[W];while(Y&&Z>0){ad=Y.nextSibling;aa=z(Y,ac);if(ae){ae.appendChild(aa)}--Z;Y=ad}if(ac!=F){O.collapse(E)}return ae}function r(ad,aa){var ac,ab,X,t,Z,Y;if(aa!=j){ac=x()}ab=i(ad,aa);if(ac){ac.appendChild(ab)}X=n(ad);t=X-O[W];if(t<=0){if(aa!=F){O.setEndBefore(ad);O.collapse(S)}return ac}ab=ad.previousSibling;while(t>0){Z=ab.previousSibling;Y=z(ab,aa);if(ac){ac.insertBefore(Y,ac.firstChild)}--t;ab=Z}if(aa!=F){O.setEndBefore(ad);O.collapse(S)}return ac}function V(ab,aa){var ad,X,ac,t,Z,Y;if(aa!=j){ad=x()}ac=R(ab,aa);if(ad){ad.appendChild(ac)}X=n(ab);++X;t=O[A]-X;ac=ab.nextSibling;while(ac&&t>0){Z=ac.nextSibling;Y=z(ac,aa);if(ad){ad.appendChild(Y)}--t;ac=Z}if(aa!=F){O.setStartAfter(ab);O.collapse(E)}return ad}function o(ab,t,ae){var Y,ag,aa,ac,ad,X,af,Z;if(ae!=j){ag=x()}Y=R(ab,ae);if(ag){ag.appendChild(Y)}aa=ab.parentNode;ac=n(ab);ad=n(t);++ac;X=ad-ac;af=ab.nextSibling;while(X>0){Z=af.nextSibling;Y=z(af,ae);if(ag){ag.appendChild(Y)}af=Z;--X}Y=i(t,ae);if(ag){ag.appendChild(Y)}if(ae!=F){O.setStartAfter(ab);O.collapse(E)}return ag}function i(ac,ad){var Y=P(O[Q],O[A]-1),ae,ab,aa,t,X,Z=Y!=O[Q];if(Y==ac){return M(Y,Z,S,ad)}ae=Y.parentNode;ab=M(ae,S,S,ad);while(ae){while(Y){aa=Y.previousSibling;t=M(Y,Z,S,ad);if(ad!=j){ab.insertBefore(t,ab.firstChild)}Z=E;Y=aa}if(ae==ac){return ab}Y=ae.previousSibling;ae=ae.parentNode;X=M(ae,S,S,ad);if(ad!=j){X.appendChild(ab)}ab=X}}function R(ac,ad){var Z=P(O[h],O[W]),aa=Z!=O[h],ae,ab,Y,t,X;if(Z==ac){return M(Z,aa,E,ad)}ae=Z.parentNode;ab=M(ae,S,E,ad);while(ae){while(Z){Y=Z.nextSibling;t=M(Z,aa,E,ad);if(ad!=j){ab.appendChild(t)}aa=E;Z=Y}if(ae==ac){return ab}Z=ae.nextSibling;ae=ae.parentNode;X=M(ae,S,E,ad);if(ad!=j){X.appendChild(ab)}ab=X}}function M(t,aa,ad,ae){var Z,Y,ab,X,ac;if(aa){return z(t,ae)}if(t.nodeType==3){Z=t.nodeValue;if(ad){X=O[W];Y=Z.substring(X);ab=Z.substring(0,X)}else{X=O[A];Y=Z.substring(0,X);ab=Z.substring(X)}if(ae!=F){t.nodeValue=ab}if(ae==j){return}ac=c.clone(t,S);ac.nodeValue=Y;return ac}if(ae==j){return}return c.clone(t,S)}function z(X,t){if(t!=j){return t==F?c.clone(X,E):X}X.parentNode.removeChild(X)}function T(){return c.create("body",null,d()).outerText}return O}a.Range=b;b.prototype.toString=function(){return this.toStringIE()}})(tinymce.dom);(function(){function a(d){var b=this,h=d.dom,c=true,f=false;function e(i,j){var k,t=0,q,n,m,l,o,r,p=-1,s;k=i.duplicate();k.collapse(j);s=k.parentElement();if(s.ownerDocument!==d.dom.doc){return}while(s.contentEditable==="false"){s=s.parentNode}if(!s.hasChildNodes()){return{node:s,inside:1}}m=s.children;q=m.length-1;while(t<=q){r=Math.floor((t+q)/2);l=m[r];k.moveToElementText(l);p=k.compareEndPoints(j?"StartToStart":"EndToEnd",i);if(p>0){q=r-1}else{if(p<0){t=r+1}else{return{node:l}}}}if(p<0){if(!l){k.moveToElementText(s);k.collapse(true);l=s;n=true}else{k.collapse(false)}o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",1)===0||s!=k.parentElement()){break}o++}}else{k.collapse(true);o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",-1)===0||s!=k.parentElement()){break}o++}}return{node:l,position:p,offset:o,inside:n}}function g(){var i=d.getRng(),r=h.createRng(),l,k,p,q,m,j;l=i.item?i.item(0):i.parentElement();if(l.ownerDocument!=h.doc){return r}k=d.isCollapsed();if(i.item){r.setStart(l.parentNode,h.nodeIndex(l));r.setEnd(r.startContainer,r.startOffset+1);return r}function o(A){var u=e(i,A),s,y,z=0,x,v,t;s=u.node;y=u.offset;if(u.inside&&!s.hasChildNodes()){r[A?"setStart":"setEnd"](s,0);return}if(y===v){r[A?"setStartBefore":"setEndAfter"](s);return}if(u.position<0){x=u.inside?s.firstChild:s.nextSibling;if(!x){r[A?"setStartAfter":"setEndAfter"](s);return}if(!y){if(x.nodeType==3){r[A?"setStart":"setEnd"](x,0)}else{r[A?"setStartBefore":"setEndBefore"](x)}return}while(x){t=x.nodeValue;z+=t.length;if(z>=y){s=x;z-=y;z=t.length-z;break}x=x.nextSibling}}else{x=s.previousSibling;if(!x){return r[A?"setStartBefore":"setEndBefore"](s)}if(!y){if(s.nodeType==3){r[A?"setStart":"setEnd"](x,s.nodeValue.length)}else{r[A?"setStartAfter":"setEndAfter"](x)}return}while(x){z+=x.nodeValue.length;if(z>=y){s=x;z-=y;break}x=x.previousSibling}}r[A?"setStart":"setEnd"](s,z)}try{o(true);if(!k){o()}}catch(n){if(n.number==-2147024809){m=b.getBookmark(2);p=i.duplicate();p.collapse(true);l=p.parentElement();if(!k){p=i.duplicate();p.collapse(false);q=p.parentElement();q.innerHTML=q.innerHTML}l.innerHTML=l.innerHTML;b.moveToBookmark(m);i=d.getRng();o(true);if(!k){o()}}else{throw n}}return r}this.getBookmark=function(m){var j=d.getRng(),o,i,l={};function n(u){var t,p,s,r,q=[];t=u.parentNode;p=h.getRoot().parentNode;while(t!=p&&t.nodeType!==9){s=t.children;r=s.length;while(r--){if(u===s[r]){q.push(r);break}}u=t;t=t.parentNode}return q}function k(q){var p;p=e(j,q);if(p){return{position:p.position,offset:p.offset,indexes:n(p.node),inside:p.inside}}}if(m===2){if(!j.item){l.start=k(true);if(!d.isCollapsed()){l.end=k()}}else{l.start={ctrl:true,indexes:n(j.item(0))}}}return l};this.moveToBookmark=function(k){var j,i=h.doc.body;function m(o){var r,q,n,p;r=h.getRoot();for(q=o.length-1;q>=0;q--){p=r.children;n=o[q];if(n<=p.length-1){r=p[n]}}return r}function l(r){var n=k[r?"start":"end"],q,p,o;if(n){q=n.position>0;p=i.createTextRange();p.moveToElementText(m(n.indexes));offset=n.offset;if(offset!==o){p.collapse(n.inside||q);p.moveStart("character",q?-offset:offset)}else{p.collapse(r)}j.setEndPoint(r?"StartToStart":"EndToStart",p);if(r){j.collapse(true)}}}if(k.start){if(k.start.ctrl){j=i.createControlRange();j.addElement(m(k.start.indexes));j.select()}else{j=i.createTextRange();l(true);l();j.select()}}};this.addRange=function(i){var n,l,k,p,v,q,t,s=d.dom.doc,m=s.body,r,u;function j(C){var y,B,x,A,z;x=h.create("a");y=C?k:v;B=C?p:q;A=n.duplicate();if(y==s||y==s.documentElement){y=m;B=0}if(y.nodeType==3){y.parentNode.insertBefore(x,y);A.moveToElementText(x);A.moveStart("character",B);h.remove(x);n.setEndPoint(C?"StartToStart":"EndToEnd",A)}else{z=y.childNodes;if(z.length){if(B>=z.length){h.insertAfter(x,z[z.length-1])}else{y.insertBefore(x,z[B])}A.moveToElementText(x)}else{if(y.canHaveHTML){y.innerHTML="<span>\uFEFF</span>";x=y.firstChild;A.moveToElementText(x);A.collapse(f)}}n.setEndPoint(C?"StartToStart":"EndToEnd",A);h.remove(x)}}k=i.startContainer;p=i.startOffset;v=i.endContainer;q=i.endOffset;n=m.createTextRange();if(k==v&&k.nodeType==1){if(p==q&&!k.hasChildNodes()){if(k.canHaveHTML){t=k.previousSibling;if(t&&!t.hasChildNodes()&&h.isBlock(t)){t.innerHTML="\uFEFF"}else{t=null}k.innerHTML="<span>\uFEFF</span><span>\uFEFF</span>";n.moveToElementText(k.lastChild);n.select();h.doc.selection.clear();k.innerHTML="";if(t){t.innerHTML=""}return}else{p=h.nodeIndex(k);k=k.parentNode}}if(p==q-1){try{u=k.childNodes[p];l=m.createControlRange();l.addElement(u);l.select();r=d.getRng();if(r.item&&u===r.item(0)){return}}catch(o){}}}j(true);j();n.select()};this.getRangeAt=g}tinymce.dom.TridentSelection=a})();(function(){var n=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i="sizcache",o=0,r=Object.prototype.toString,h=false,g=true,q=/\\/g,u=/\r\n/g,x=/\W/;[0,0].sort(function(){g=false;return 0});var d=function(C,e,F,G){F=F||[];e=e||document;var I=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!C||typeof C!=="string"){return F}var z,K,N,y,J,M,L,E,B=true,A=d.isXML(e),D=[],H=C;do{n.exec("");z=n.exec(H);if(z){H=z[3];D.push(z[1]);if(z[2]){y=z[3];break}}}while(z);if(D.length>1&&j.exec(C)){if(D.length===2&&k.relative[D[0]]){K=s(D[0]+D[1],e,G)}else{K=k.relative[D[0]]?[e]:d(D.shift(),e);while(D.length){C=D.shift();if(k.relative[C]){C+=D.shift()}K=s(C,K,G)}}}else{if(!G&&D.length>1&&e.nodeType===9&&!A&&k.match.ID.test(D[0])&&!k.match.ID.test(D[D.length-1])){J=d.find(D.shift(),e,A);e=J.expr?d.filter(J.expr,J.set)[0]:J.set[0]}if(e){J=G?{expr:D.pop(),set:l(G)}:d.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&e.parentNode?e.parentNode:e,A);K=J.expr?d.filter(J.expr,J.set):J.set;if(D.length>0){N=l(K)}else{B=false}while(D.length){M=D.pop();L=M;if(!k.relative[M]){M=""}else{L=D.pop()}if(L==null){L=e}k.relative[M](N,L,A)}}else{N=D=[]}}if(!N){N=K}if(!N){d.error(M||C)}if(r.call(N)==="[object Array]"){if(!B){F.push.apply(F,N)}else{if(e&&e.nodeType===1){for(E=0;N[E]!=null;E++){if(N[E]&&(N[E]===true||N[E].nodeType===1&&d.contains(e,N[E]))){F.push(K[E])}}}else{for(E=0;N[E]!=null;E++){if(N[E]&&N[E].nodeType===1){F.push(K[E])}}}}}else{l(N,F)}if(y){d(y,I,F,G);d.uniqueSort(F)}return F};d.uniqueSort=function(y){if(p){h=g;y.sort(p);if(h){for(var e=1;e<y.length;e++){if(y[e]===y[e-1]){y.splice(e--,1)}}}}return y};d.matches=function(e,y){return d(e,null,null,y)};d.matchesSelector=function(e,y){return d(y,null,null,[e]).length>0};d.find=function(E,e,F){var D,z,B,A,C,y;if(!E){return[]}for(z=0,B=k.order.length;z<B;z++){C=k.order[z];if((A=k.leftMatch[C].exec(E))){y=A[1];A.splice(1,1);if(y.substr(y.length-1)!=="\\"){A[1]=(A[1]||"").replace(q,"");D=k.find[C](A,e,F);if(D!=null){E=E.replace(k.match[C],"");break}}}}if(!D){D=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:D,expr:E}};d.filter=function(I,H,L,B){var D,e,G,N,K,y,A,C,J,z=I,M=[],F=H,E=H&&H[0]&&d.isXML(H[0]);while(I&&H.length){for(G in k.filter){if((D=k.leftMatch[G].exec(I))!=null&&D[2]){y=k.filter[G];A=D[1];e=false;D.splice(1,1);if(A.substr(A.length-1)==="\\"){continue}if(F===M){M=[]}if(k.preFilter[G]){D=k.preFilter[G](D,F,L,M,B,E);if(!D){e=N=true}else{if(D===true){continue}}}if(D){for(C=0;(K=F[C])!=null;C++){if(K){N=y(K,D,C,F);J=B^N;if(L&&N!=null){if(J){e=true}else{F[C]=false}}else{if(J){M.push(K);e=true}}}}}if(N!==undefined){if(!L){F=M}I=I.replace(k.match[G],"");if(!e){return[]}break}}}if(I===z){if(e==null){d.error(I)}else{break}}z=I}return F};d.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var b=d.getText=function(B){var z,A,e=B.nodeType,y="";if(e){if(e===1||e===9||e===11){if(typeof B.textContent==="string"){return B.textContent}else{if(typeof B.innerText==="string"){return B.innerText.replace(u,"")}else{for(B=B.firstChild;B;B=B.nextSibling){y+=b(B)}}}}else{if(e===3||e===4){return B.nodeValue}}}else{for(z=0;(A=B[z]);z++){if(A.nodeType!==8){y+=b(A)}}}return y};var k=d.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(D,y){var A=typeof y==="string",C=A&&!x.test(y),E=A&&!C;if(C){y=y.toLowerCase()}for(var z=0,e=D.length,B;z<e;z++){if((B=D[z])){while((B=B.previousSibling)&&B.nodeType!==1){}D[z]=E||B&&B.nodeName.toLowerCase()===y?B||false:B===y}}if(E){d.filter(y,D,true)}},">":function(D,y){var C,B=typeof y==="string",z=0,e=D.length;if(B&&!x.test(y)){y=y.toLowerCase();for(;z<e;z++){C=D[z];if(C){var A=C.parentNode;D[z]=A.nodeName.toLowerCase()===y?A:false}}}else{for(;z<e;z++){C=D[z];if(C){D[z]=B?C.parentNode:C.parentNode===y}}if(B){d.filter(y,D,true)}}},"":function(A,y,C){var B,z=o++,e=t;if(typeof y==="string"&&!x.test(y)){y=y.toLowerCase();B=y;e=a}e("parentNode",y,z,A,B,C)},"~":function(A,y,C){var B,z=o++,e=t;if(typeof y==="string"&&!x.test(y)){y=y.toLowerCase();B=y;e=a}e("previousSibling",y,z,A,B,C)}},find:{ID:function(y,z,A){if(typeof z.getElementById!=="undefined"&&!A){var e=z.getElementById(y[1]);return e&&e.parentNode?[e]:[]}},NAME:function(z,C){if(typeof C.getElementsByName!=="undefined"){var y=[],B=C.getElementsByName(z[1]);for(var A=0,e=B.length;A<e;A++){if(B[A].getAttribute("name")===z[1]){y.push(B[A])}}return y.length===0?null:y}},TAG:function(e,y){if(typeof y.getElementsByTagName!=="undefined"){return y.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(A,y,z,e,D,E){A=" "+A[1].replace(q,"")+" ";if(E){return A}for(var B=0,C;(C=y[B])!=null;B++){if(C){if(D^(C.className&&(" "+C.className+" ").replace(/[\t\n\r]/g," ").indexOf(A)>=0)){if(!z){e.push(C)}}else{if(z){y[B]=false}}}}return false},ID:function(e){return e[1].replace(q,"")},TAG:function(y,e){return y[1].replace(q,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){d.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var y=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(y[1]+(y[2]||1))-0;e[3]=y[3]-0}else{if(e[2]){d.error(e[0])}}e[0]=o++;return e},ATTR:function(B,y,z,e,C,D){var A=B[1]=B[1].replace(q,"");if(!D&&k.attrMap[A]){B[1]=k.attrMap[A]}B[4]=(B[4]||B[5]||"").replace(q,"");if(B[2]==="~="){B[4]=" "+B[4]+" "}return B},PSEUDO:function(B,y,z,e,C){if(B[1]==="not"){if((n.exec(B[3])||"").length>1||/^\w/.test(B[3])){B[3]=d(B[3],null,null,y)}else{var A=d.filter(B[3],y,z,true^C);if(!z){e.push.apply(e,A)}return false}}else{if(k.match.POS.test(B[0])||k.match.CHILD.test(B[0])){return true}}return B},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(z,y,e){return !!d(e[3],z).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(z){var e=z.getAttribute("type"),y=z.type;return z.nodeName.toLowerCase()==="input"&&"text"===y&&(e===y||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(y){var e=y.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===y.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(y){var e=y.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===y.type},button:function(y){var e=y.nodeName.toLowerCase();return e==="input"&&"button"===y.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(y,e){return e===0},last:function(z,y,e,A){return y===A.length-1},even:function(y,e){return e%2===0},odd:function(y,e){return e%2===1},lt:function(z,y,e){return y<e[3]-0},gt:function(z,y,e){return y>e[3]-0},nth:function(z,y,e){return e[3]-0===y},eq:function(z,y,e){return e[3]-0===y}},filter:{PSEUDO:function(z,E,D,F){var e=E[1],y=k.filters[e];if(y){return y(z,D,E,F)}else{if(e==="contains"){return(z.textContent||z.innerText||b([z])||"").indexOf(E[3])>=0}else{if(e==="not"){var A=E[3];for(var C=0,B=A.length;C<B;C++){if(A[C]===z){return false}}return true}else{d.error(e)}}}},CHILD:function(z,B){var A,H,D,G,e,C,F,E=B[1],y=z;switch(E){case"only":case"first":while((y=y.previousSibling)){if(y.nodeType===1){return false}}if(E==="first"){return true}y=z;case"last":while((y=y.nextSibling)){if(y.nodeType===1){return false}}return true;case"nth":A=B[2];H=B[3];if(A===1&&H===0){return true}D=B[0];G=z.parentNode;if(G&&(G[i]!==D||!z.nodeIndex)){C=0;for(y=G.firstChild;y;y=y.nextSibling){if(y.nodeType===1){y.nodeIndex=++C}}G[i]=D}F=z.nodeIndex-H;if(A===0){return F===0}else{return(F%A===0&&F/A>=0)}}},ID:function(y,e){return y.nodeType===1&&y.getAttribute("id")===e},TAG:function(y,e){return(e==="*"&&y.nodeType===1)||!!y.nodeName&&y.nodeName.toLowerCase()===e},CLASS:function(y,e){return(" "+(y.className||y.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(C,A){var z=A[1],e=d.attr?d.attr(C,z):k.attrHandle[z]?k.attrHandle[z](C):C[z]!=null?C[z]:C.getAttribute(z),D=e+"",B=A[2],y=A[4];return e==null?B==="!=":!B&&d.attr?e!=null:B==="="?D===y:B==="*="?D.indexOf(y)>=0:B==="~="?(" "+D+" ").indexOf(y)>=0:!y?D&&e!==false:B==="!="?D!==y:B==="^="?D.indexOf(y)===0:B==="$="?D.substr(D.length-y.length)===y:B==="|="?D===y||D.substr(0,y.length+1)===y+"-":false},POS:function(B,y,z,C){var e=y[2],A=k.setFilters[e];if(A){return A(B,z,y,C)}}}};var j=k.match.POS,c=function(y,e){return"\\"+(e-0+1)};for(var f in k.match){k.match[f]=new RegExp(k.match[f].source+(/(?![^\[]*\])(?![^\(]*\))/.source));k.leftMatch[f]=new RegExp(/(^(?:.|\r|\n)*?)/.source+k.match[f].source.replace(/\\(\d+)/g,c))}k.match.globalPOS=j;var l=function(y,e){y=Array.prototype.slice.call(y,0);if(e){e.push.apply(e,y);return e}return y};try{Array.prototype.slice.call(document.documentElement.childNodes,0)[0].nodeType}catch(v){l=function(B,A){var z=0,y=A||[];if(r.call(B)==="[object Array]"){Array.prototype.push.apply(y,B)}else{if(typeof B.length==="number"){for(var e=B.length;z<e;z++){y.push(B[z])}}else{for(;B[z];z++){y.push(B[z])}}}return y}}var p,m;if(document.documentElement.compareDocumentPosition){p=function(y,e){if(y===e){h=true;return 0}if(!y.compareDocumentPosition||!e.compareDocumentPosition){return y.compareDocumentPosition?-1:1}return y.compareDocumentPosition(e)&4?-1:1}}else{p=function(F,E){if(F===E){h=true;return 0}else{if(F.sourceIndex&&E.sourceIndex){return F.sourceIndex-E.sourceIndex}}var C,y,z=[],e=[],B=F.parentNode,D=E.parentNode,G=B;if(B===D){return m(F,E)}else{if(!B){return -1}else{if(!D){return 1}}}while(G){z.unshift(G);G=G.parentNode}G=D;while(G){e.unshift(G);G=G.parentNode}C=z.length;y=e.length;for(var A=0;A<C&&A<y;A++){if(z[A]!==e[A]){return m(z[A],e[A])}}return A===C?m(F,e[A],-1):m(z[A],E,1)};m=function(y,e,z){if(y===e){return z}var A=y.nextSibling;while(A){if(A===e){return -1}A=A.nextSibling}return 1}}(function(){var y=document.createElement("div"),z="script"+(new Date()).getTime(),e=document.documentElement;y.innerHTML="<a name='"+z+"'/>";e.insertBefore(y,e.firstChild);if(document.getElementById(z)){k.find.ID=function(B,C,D){if(typeof C.getElementById!=="undefined"&&!D){var A=C.getElementById(B[1]);return A?A.id===B[1]||typeof A.getAttributeNode!=="undefined"&&A.getAttributeNode("id").nodeValue===B[1]?[A]:undefined:[]}};k.filter.ID=function(C,A){var B=typeof C.getAttributeNode!=="undefined"&&C.getAttributeNode("id");return C.nodeType===1&&B&&B.nodeValue===A}}e.removeChild(y);e=y=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){k.find.TAG=function(y,C){var B=C.getElementsByTagName(y[1]);if(y[1]==="*"){var A=[];for(var z=0;B[z];z++){if(B[z].nodeType===1){A.push(B[z])}}B=A}return B}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){k.attrHandle.href=function(y){return y.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=d,A=document.createElement("div"),z="__sizzle__";A.innerHTML="<p class='TEST'></p>";if(A.querySelectorAll&&A.querySelectorAll(".TEST").length===0){return}d=function(L,C,G,K){C=C||document;if(!K&&!d.isXML(C)){var J=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(L);if(J&&(C.nodeType===1||C.nodeType===9)){if(J[1]){return l(C.getElementsByTagName(L),G)}else{if(J[2]&&k.find.CLASS&&C.getElementsByClassName){return l(C.getElementsByClassName(J[2]),G)}}}if(C.nodeType===9){if(L==="body"&&C.body){return l([C.body],G)}else{if(J&&J[3]){var F=C.getElementById(J[3]);if(F&&F.parentNode){if(F.id===J[3]){return l([F],G)}}else{return l([],G)}}}try{return l(C.querySelectorAll(L),G)}catch(H){}}else{if(C.nodeType===1&&C.nodeName.toLowerCase()!=="object"){var D=C,E=C.getAttribute("id"),B=E||z,N=C.parentNode,M=/^\s*[+~]/.test(L);if(!E){C.setAttribute("id",B)}else{B=B.replace(/'/g,"\\$&")}if(M&&N){C=C.parentNode}try{if(!M||N){return l(C.querySelectorAll("[id='"+B+"'] "+L),G)}}catch(I){}finally{if(!E){D.removeAttribute("id")}}}}}return e(L,C,G,K)};for(var y in e){d[y]=e[y]}A=null})()}(function(){var e=document.documentElement,z=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(z){var B=!z.call(document.createElement("div"),"div"),y=false;try{z.call(document.documentElement,"[test!='']:sizzle")}catch(A){y=true}d.matchesSelector=function(D,F){F=F.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!d.isXML(D)){try{if(y||!k.match.PSEUDO.test(F)&&!/!=/.test(F)){var C=z.call(D,F);if(C||!B||D.document&&D.document.nodeType!==11){return C}}}catch(E){}}return d(F,null,null,[D]).length>0}}})();(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}k.order.splice(1,0,"CLASS");k.find.CLASS=function(y,z,A){if(typeof z.getElementsByClassName!=="undefined"&&!A){return z.getElementsByClassName(y[1])}};e=null})();function a(y,D,C,G,E,F){for(var A=0,z=G.length;A<z;A++){var e=G[A];if(e){var B=false;e=e[y];while(e){if(e[i]===C){B=G[e.sizset];break}if(e.nodeType===1&&!F){e[i]=C;e.sizset=A}if(e.nodeName.toLowerCase()===D){B=e;break}e=e[y]}G[A]=B}}}function t(y,D,C,G,E,F){for(var A=0,z=G.length;A<z;A++){var e=G[A];if(e){var B=false;e=e[y];while(e){if(e[i]===C){B=G[e.sizset];break}if(e.nodeType===1){if(!F){e[i]=C;e.sizset=A}if(typeof D!=="string"){if(e===D){B=true;break}}else{if(d.filter(D,[e]).length>0){B=e;break}}}e=e[y]}G[A]=B}}}if(document.documentElement.contains){d.contains=function(y,e){return y!==e&&(y.contains?y.contains(e):true)}}else{if(document.documentElement.compareDocumentPosition){d.contains=function(y,e){return !!(y.compareDocumentPosition(e)&16)}}else{d.contains=function(){return false}}}d.isXML=function(e){var y=(e?e.ownerDocument||e:0).documentElement;return y?y.nodeName!=="HTML":false};var s=function(z,e,D){var C,E=[],B="",F=e.nodeType?[e]:e;while((C=k.match.PSEUDO.exec(z))){B+=C[0];z=z.replace(k.match.PSEUDO,"")}z=k.relative[z]?z+"*":z;for(var A=0,y=F.length;A<y;A++){d(z,F[A],E,D)}return d.filter(B,E)};window.tinymce.dom.Sizzle=d})();(function(a){a.dom.Element=function(f,d){var b=this,e,c;b.settings=d=d||{};b.id=f;b.dom=e=d.dom||a.DOM;if(!a.isIE){c=e.get(b.id)}a.each(("getPos,getRect,getParent,add,setStyle,getStyle,setStyles,setAttrib,setAttribs,getAttrib,addClass,removeClass,hasClass,getOuterHTML,setOuterHTML,remove,show,hide,isHidden,setHTML,get").split(/,/),function(g){b[g]=function(){var h=[f],j;for(j=0;j<arguments.length;j++){h.push(arguments[j])}h=e[g].apply(e,h);b.update(g);return h}});a.extend(b,{on:function(i,h,g){return a.dom.Event.add(b.id,i,h,g)},getXY:function(){return{x:parseInt(b.getStyle("left")),y:parseInt(b.getStyle("top"))}},getSize:function(){var g=e.get(b.id);return{w:parseInt(b.getStyle("width")||g.clientWidth),h:parseInt(b.getStyle("height")||g.clientHeight)}},moveTo:function(g,h){b.setStyles({left:g,top:h})},moveBy:function(g,i){var h=b.getXY();b.moveTo(h.x+g,h.y+i)},resizeTo:function(g,i){b.setStyles({width:g,height:i})},resizeBy:function(g,j){var i=b.getSize();b.resizeTo(i.w+g,i.h+j)},update:function(h){var g;if(a.isIE6&&d.blocker){h=h||"";if(h.indexOf("get")===0||h.indexOf("has")===0||h.indexOf("is")===0){return}if(h=="remove"){e.remove(b.blocker);return}if(!b.blocker){b.blocker=e.uniqueId();g=e.add(d.container||e.getRoot(),"iframe",{id:b.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});e.setStyle(g,"opacity",0)}else{g=e.get(b.blocker)}e.setStyles(g,{left:b.getStyle("left",1),top:b.getStyle("top",1),width:b.getStyle("width",1),height:b.getStyle("height",1),display:b.getStyle("display",1),zIndex:parseInt(b.getStyle("zIndex",1)||0)-1})}}})}})(tinymce);(function(d){function f(g){return g.replace(/[\n\r]+/g,"")}var c=d.is,b=d.isIE,e=d.each,a=d.dom.TreeWalker;d.create("tinymce.dom.Selection",{Selection:function(k,j,i,h){var g=this;g.dom=k;g.win=j;g.serializer=i;g.editor=h;e(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(l){g[l]=new d.util.Dispatcher(g)});if(!g.win.getSelection){g.tridentSel=new d.dom.TridentSelection(g)}if(d.isIE&&k.boxModel){this._fixIESelection()}d.addUnload(g.destroy,g)},setCursorLocation:function(i,j){var g=this;var h=g.dom.createRng();h.setStart(i,j);h.setEnd(i,j);g.setRng(h);g.collapse(false)},getContent:function(h){var g=this,i=g.getRng(),m=g.dom.create("body"),k=g.getSel(),j,l,o;h=h||{};j=l="";h.get=true;h.format=h.format||"html";h.forced_root_block="";g.onBeforeGetContent.dispatch(g,h);if(h.format=="text"){return g.isCollapsed()?"":(i.text||(k.toString?k.toString():""))}if(i.cloneContents){o=i.cloneContents();if(o){m.appendChild(o)}}else{if(c(i.item)||c(i.htmlText)){m.innerHTML="<br>"+(i.item?i.item(0).outerHTML:i.htmlText);m.removeChild(m.firstChild)}else{m.innerHTML=i.toString()}}if(/^\s/.test(m.innerHTML)){j=" "}if(/\s+$/.test(m.innerHTML)){l=" "}h.getInner=true;h.content=g.isCollapsed()?"":j+g.serializer.serialize(m,h)+l;g.onGetContent.dispatch(g,h);return h.content},setContent:function(h,j){var o=this,g=o.getRng(),k,l=o.win.document,n,m;j=j||{format:"html"};j.set=true;h=j.content=h;if(!j.no_events){o.onBeforeSetContent.dispatch(o,j)}h=j.content;if(g.insertNode){h+='<span id="__caret">_</span>';if(g.startContainer==l&&g.endContainer==l){l.body.innerHTML=h}else{g.deleteContents();if(l.body.childNodes.length===0){l.body.innerHTML=h}else{if(g.createContextualFragment){g.insertNode(g.createContextualFragment(h))}else{n=l.createDocumentFragment();m=l.createElement("div");n.appendChild(m);m.outerHTML=h;g.insertNode(n)}}}k=o.dom.get("__caret");g=l.createRange();g.setStartBefore(k);g.setEndBefore(k);o.setRng(g);o.dom.remove("__caret");try{o.setRng(g)}catch(i){}}else{if(g.item){l.execCommand("Delete",false,null);g=o.getRng()}if(/^\s+/.test(h)){g.pasteHTML('<span id="__mce_tmp">_</span>'+h);o.dom.remove("__mce_tmp")}else{g.pasteHTML(h)}}if(!j.no_events){o.onSetContent.dispatch(o,j)}},getStart:function(){var i=this,h=i.getRng(),j,g,l,k;if(h.duplicate||h.item){if(h.item){return h.item(0)}l=h.duplicate();l.collapse(1);j=l.parentElement();if(j.ownerDocument!==i.dom.doc){j=i.dom.getRoot()}g=k=h.parentElement();while(k=k.parentNode){if(k==j){j=g;break}}return j}else{j=h.startContainer;if(j.nodeType==1&&j.hasChildNodes()){j=j.childNodes[Math.min(j.childNodes.length-1,h.startOffset)]}if(j&&j.nodeType==3){return j.parentNode}return j}},getEnd:function(){var h=this,g=h.getRng(),j,i;if(g.duplicate||g.item){if(g.item){return g.item(0)}g=g.duplicate();g.collapse(0);j=g.parentElement();if(j.ownerDocument!==h.dom.doc){j=h.dom.getRoot()}if(j&&j.nodeName=="BODY"){return j.lastChild||j}return j}else{j=g.endContainer;i=g.endOffset;if(j.nodeType==1&&j.hasChildNodes()){j=j.childNodes[i>0?i-1:i]}if(j&&j.nodeType==3){return j.parentNode}return j}},getBookmark:function(s,v){var y=this,n=y.dom,h,k,j,o,i,p,q,m="\uFEFF",x;function g(z,A){var t=0;e(n.select(z),function(C,B){if(C==A){t=B}});return t}function u(t){function z(E){var A,D,C,B=E?"start":"end";A=t[B+"Container"];D=t[B+"Offset"];if(A.nodeType==1&&A.nodeName=="TR"){C=A.childNodes;A=C[Math.min(E?D:D-1,C.length-1)];if(A){D=E?0:A.childNodes.length;t["set"+(E?"Start":"End")](A,D)}}}z(true);z();return t}function l(){var z=y.getRng(true),t=n.getRoot(),A={};function B(E,J){var D=E[J?"startContainer":"endContainer"],I=E[J?"startOffset":"endOffset"],C=[],F,H,G=0;if(D.nodeType==3){if(v){for(F=D.previousSibling;F&&F.nodeType==3;F=F.previousSibling){I+=F.nodeValue.length}}C.push(I)}else{H=D.childNodes;if(I>=H.length&&H.length){G=1;I=Math.max(0,H.length-1)}C.push(y.dom.nodeIndex(H[I],v)+G)}for(;D&&D!=t;D=D.parentNode){C.push(y.dom.nodeIndex(D,v))}return C}A.start=B(z,true);if(!y.isCollapsed()){A.end=B(z)}return A}if(s==2){if(y.tridentSel){return y.tridentSel.getBookmark(s)}return l()}if(s){return{rng:y.getRng()}}h=y.getRng();j=n.uniqueId();o=tinyMCE.activeEditor.selection.isCollapsed();x="overflow:hidden;line-height:0px";if(h.duplicate||h.item){if(!h.item){k=h.duplicate();try{h.collapse();h.pasteHTML('<span data-mce-type="bookmark" id="'+j+'_start" style="'+x+'">'+m+"</span>");if(!o){k.collapse(false);h.moveToElementText(k.parentElement());if(h.compareEndPoints("StartToEnd",k)===0){k.move("character",-1)}k.pasteHTML('<span data-mce-type="bookmark" id="'+j+'_end" style="'+x+'">'+m+"</span>")}}catch(r){return null}}else{p=h.item(0);i=p.nodeName;return{name:i,index:g(i,p)}}}else{p=y.getNode();i=p.nodeName;if(i=="IMG"){return{name:i,index:g(i,p)}}k=u(h.cloneRange());if(!o){k.collapse(false);k.insertNode(n.create("span",{"data-mce-type":"bookmark",id:j+"_end",style:x},m))}h=u(h);h.collapse(true);h.insertNode(n.create("span",{"data-mce-type":"bookmark",id:j+"_start",style:x},m))}y.moveToBookmark({id:j,keep:1});return{id:j}},moveToBookmark:function(o){var s=this,m=s.dom,j,i,g,r,k,u,p,q;function h(A){var t=o[A?"start":"end"],x,y,z,v;if(t){z=t[0];for(y=r,x=t.length-1;x>=1;x--){v=y.childNodes;if(t[x]>v.length-1){return}y=v[t[x]]}if(y.nodeType===3){z=Math.min(t[0],y.nodeValue.length)}if(y.nodeType===1){z=Math.min(t[0],y.childNodes.length)}if(A){g.setStart(y,z)}else{g.setEnd(y,z)}}return true}function l(B){var v=m.get(o.id+"_"+B),A,t,y,z,x=o.keep;if(v){A=v.parentNode;if(B=="start"){if(!x){t=m.nodeIndex(v)}else{A=v.firstChild;t=1}k=u=A;p=q=t}else{if(!x){t=m.nodeIndex(v)}else{A=v.firstChild;t=1}u=A;q=t}if(!x){z=v.previousSibling;y=v.nextSibling;e(d.grep(v.childNodes),function(C){if(C.nodeType==3){C.nodeValue=C.nodeValue.replace(/\uFEFF/g,"")}});while(v=m.get(o.id+"_"+B)){m.remove(v,1)}if(z&&y&&z.nodeType==y.nodeType&&z.nodeType==3&&!d.isOpera){t=z.nodeValue.length;z.appendData(y.nodeValue);m.remove(y);if(B=="start"){k=u=z;p=q=t}else{u=z;q=t}}}}}function n(t){if(m.isBlock(t)&&!t.innerHTML&&!b){t.innerHTML='<br data-mce-bogus="1" />'}return t}if(o){if(o.start){g=m.createRng();r=m.getRoot();if(s.tridentSel){return s.tridentSel.moveToBookmark(o)}if(h(true)&&h()){s.setRng(g)}}else{if(o.id){l("start");l("end");if(k){g=m.createRng();g.setStart(n(k),p);g.setEnd(n(u),q);s.setRng(g)}}else{if(o.name){s.select(m.select(o.name)[o.index])}else{if(o.rng){s.setRng(o.rng)}}}}}},select:function(l,k){var j=this,m=j.dom,h=m.createRng(),g;function i(n,p){var o=new a(n,n);do{if(n.nodeType==3&&d.trim(n.nodeValue).length!==0){if(p){h.setStart(n,0)}else{h.setEnd(n,n.nodeValue.length)}return}if(n.nodeName=="BR"){if(p){h.setStartBefore(n)}else{h.setEndBefore(n)}return}}while(n=(p?o.next():o.prev()))}if(l){g=m.nodeIndex(l);h.setStart(l.parentNode,g);h.setEnd(l.parentNode,g+1);if(k){i(l,1);i(l)}j.setRng(h)}return l},isCollapsed:function(){var g=this,i=g.getRng(),h=g.getSel();if(!i||i.item){return false}if(i.compareEndPoints){return i.compareEndPoints("StartToEnd",i)===0}return !h||i.collapsed},collapse:function(g){var i=this,h=i.getRng(),j;if(h.item){j=h.item(0);h=i.win.document.body.createTextRange();h.moveToElementText(j)}h.collapse(!!g);i.setRng(h)},getSel:function(){var h=this,g=this.win;return g.getSelection?g.getSelection():g.document.selection},getRng:function(m){var h=this,j,g,l,k=h.win.document;if(m&&h.tridentSel){return h.tridentSel.getRangeAt(0)}try{if(j=h.getSel()){g=j.rangeCount>0?j.getRangeAt(0):(j.createRange?j.createRange():k.createRange())}}catch(i){}if(d.isIE&&g&&g.setStart&&k.selection.createRange().item){l=k.selection.createRange().item(0);g=k.createRange();g.setStartBefore(l);g.setEndAfter(l)}if(!g){g=k.createRange?k.createRange():k.body.createTextRange()}if(g.setStart&&g.startContainer.nodeType===9&&g.collapsed){l=h.dom.getRoot();g.setStart(l,0);g.setEnd(l,0)}if(h.selectedRange&&h.explicitRange){if(g.compareBoundaryPoints(g.START_TO_START,h.selectedRange)===0&&g.compareBoundaryPoints(g.END_TO_END,h.selectedRange)===0){g=h.explicitRange}else{h.selectedRange=null;h.explicitRange=null}}return g},setRng:function(k,g){var j,i=this;if(!i.tridentSel){j=i.getSel();if(j){i.explicitRange=k;try{j.removeAllRanges()}catch(h){}j.addRange(k);if(g===false&&j.extend){j.collapse(k.endContainer,k.endOffset);j.extend(k.startContainer,k.startOffset)}i.selectedRange=j.rangeCount>0?j.getRangeAt(0):null}}else{if(k.cloneRange){try{i.tridentSel.addRange(k);return}catch(h){}}try{k.select()}catch(h){}}},setNode:function(h){var g=this;g.setContent(g.dom.getOuterHTML(h));return h},getNode:function(){var i=this,h=i.getRng(),j=i.getSel(),m,l=h.startContainer,g=h.endContainer;function k(q,o){var p=q;while(q&&q.nodeType===3&&q.length===0){q=o?q.nextSibling:q.previousSibling}return q||p}if(!h){return i.dom.getRoot()}if(h.setStart){m=h.commonAncestorContainer;if(!h.collapsed){if(h.startContainer==h.endContainer){if(h.endOffset-h.startOffset<2){if(h.startContainer.hasChildNodes()){m=h.startContainer.childNodes[h.startOffset]}}}if(l.nodeType===3&&g.nodeType===3){if(l.length===h.startOffset){l=k(l.nextSibling,true)}else{l=l.parentNode}if(h.endOffset===0){g=k(g.previousSibling,false)}else{g=g.parentNode}if(l&&l===g){return l}}}if(m&&m.nodeType==3){return m.parentNode}return m}return h.item?h.item(0):h.parentElement()},getSelectedBlocks:function(p,h){var o=this,k=o.dom,m,l,i,j=[];m=k.getParent(p||o.getStart(),k.isBlock);l=k.getParent(h||o.getEnd(),k.isBlock);if(m){j.push(m)}if(m&&l&&m!=l){i=m;var g=new a(m,k.getRoot());while((i=g.next())&&i!=l){if(k.isBlock(i)){j.push(i)}}}if(l&&m!=l){j.push(l)}return j},isForward:function(){var i=this.dom,g=this.getSel(),j,h;if(!g||g.anchorNode==null||g.focusNode==null){return true}j=i.createRng();j.setStart(g.anchorNode,g.anchorOffset);j.collapse(true);h=i.createRng();h.setStart(g.focusNode,g.focusOffset);h.collapse(true);return j.compareBoundaryPoints(j.START_TO_START,h)<=0},normalize:function(){var h=this,g,m,l,j,i;function k(p){var o,r,n,s=h.dom,u=s.getRoot(),q,t,v;function y(z,A){var B=new a(z,s.getParent(z.parentNode,s.isBlock)||u);while(z=B[A?"prev":"next"]()){if(z.nodeName==="BR"){return true}}}function x(B,z){var C,A;z=z||o;C=new a(z,s.getParent(z.parentNode,s.isBlock)||u);while(q=C[B?"prev":"next"]()){if(q.nodeType===3&&q.nodeValue.length>0){o=q;r=B?q.nodeValue.length:0;m=true;return}if(s.isBlock(q)||t[q.nodeName.toLowerCase()]){return}A=q}if(l&&A){o=A;m=true;r=0}}o=g[(p?"start":"end")+"Container"];r=g[(p?"start":"end")+"Offset"];t=s.schema.getNonEmptyElements();if(o.nodeType===9){o=s.getRoot();r=0}if(o===u){if(p){q=o.childNodes[r>0?r-1:0];if(q){v=q.nodeName.toLowerCase();if(t[q.nodeName]||q.nodeName=="TABLE"){return}}}if(o.hasChildNodes()){o=o.childNodes[Math.min(!p&&r>0?r-1:r,o.childNodes.length-1)];r=0;if(o.hasChildNodes()&&!/TABLE/.test(o.nodeName)){q=o;n=new a(o,u);do{if(q.nodeType===3&&q.nodeValue.length>0){r=p?0:q.nodeValue.length;o=q;m=true;break}if(t[q.nodeName.toLowerCase()]){r=s.nodeIndex(q);o=q.parentNode;if(q.nodeName=="IMG"&&!p){r++}m=true;break}}while(q=(p?n.next():n.prev()))}}}if(l){if(o.nodeType===3&&r===0){x(true)}if(o.nodeType===1){q=o.childNodes[r];if(q&&q.nodeName==="BR"&&!y(q)&&!y(q,true)){x(true,o.childNodes[r])}}}if(p&&!l&&o.nodeType===3&&r===o.nodeValue.length){x(false)}if(m){g["set"+(p?"Start":"End")](o,r)}}if(d.isIE){return}g=h.getRng();l=g.collapsed;k(true);if(!l){k()}if(m){if(l){g.collapse(true)}h.setRng(g,h.isForward())}},selectorChanged:function(g,j){var h=this,i;if(!h.selectorChangedData){h.selectorChangedData={};i={};h.editor.onNodeChange.addToTop(function(l,k,o){var p=h.dom,m=p.getParents(o,null,p.getRoot()),n={};e(h.selectorChangedData,function(r,q){e(m,function(s){if(p.is(s,q)){if(!i[q]){e(r,function(t){t(true,{node:s,selector:q,parents:m})});i[q]=r}n[q]=r;return false}})});e(i,function(r,q){if(!n[q]){delete i[q];e(r,function(s){s(false,{node:o,selector:q,parents:m})})}})})}if(!h.selectorChangedData[g]){h.selectorChangedData[g]=[]}h.selectorChangedData[g].push(j);return h},destroy:function(h){var g=this;g.win=null;if(!h){d.removeUnload(g.destroy)}},_fixIESelection:function(){var h=this.dom,n=h.doc,i=n.body,k,o,g;function j(p,s){var q=i.createTextRange();try{q.moveToPoint(p,s)}catch(r){q=null}return q}function m(q){var p;if(q.button){p=j(q.x,q.y);if(p){if(p.compareEndPoints("StartToStart",o)>0){p.setEndPoint("StartToStart",o)}else{p.setEndPoint("EndToEnd",o)}p.select()}}else{l()}}function l(){var p=n.selection.createRange();if(o&&!p.item&&p.compareEndPoints("StartToEnd",p)===0){o.select()}h.unbind(n,"mouseup",l);h.unbind(n,"mousemove",m);o=k=0}n.documentElement.unselectable=true;h.bind(n,["mousedown","contextmenu"],function(p){if(p.target.nodeName==="HTML"){if(k){l()}g=n.documentElement;if(g.scrollHeight>g.clientHeight){return}k=1;o=j(p.x,p.y);if(o){h.bind(n,"mouseup",l);h.bind(n,"mousemove",m);h.win.focus();o.select()}}})}})})(tinymce);(function(a){a.dom.Serializer=function(e,i,f){var h,b,d=a.isIE,g=a.each,c;if(!e.apply_source_formatting){e.indent=false}i=i||a.DOM;f=f||new a.html.Schema(e);e.entity_encoding=e.entity_encoding||"named";e.remove_trailing_brs="remove_trailing_brs" in e?e.remove_trailing_brs:true;h=new a.util.Dispatcher(self);b=new a.util.Dispatcher(self);c=new a.html.DomParser(e,f);c.addAttributeFilter("src,href,style",function(k,j){var o=k.length,l,q,n="data-mce-"+j,p=e.url_converter,r=e.url_converter_scope,m;while(o--){l=k[o];q=l.attributes.map[n];if(q!==m){l.attr(j,q.length>0?q:null);l.attr(n,null)}else{q=l.attributes.map[j];if(j==="style"){q=i.serializeStyle(i.parseStyle(q),l.name)}else{if(p){q=p.call(r,q,j,l.name)}}l.attr(j,q.length>0?q:null)}}});c.addAttributeFilter("class",function(j,k){var l=j.length,m,n;while(l--){m=j[l];n=m.attr("class").replace(/(?:^|\s)mce(Item\w+|Selected)(?!\S)/g,"");m.attr("class",n.length>0?n:null)}});c.addAttributeFilter("data-mce-type",function(j,l,k){var m=j.length,n;while(m--){n=j[m];if(n.attributes.map["data-mce-type"]==="bookmark"&&!k.cleanup){n.remove()}}});c.addAttributeFilter("data-mce-expando",function(j,l,k){var m=j.length;while(m--){j[m].attr(l,null)}});c.addNodeFilter("script,style",function(k,l){var m=k.length,n,o;function j(p){return p.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}while(m--){n=k[m];o=n.firstChild?n.firstChild.value:"";if(l==="script"){n.attr("type",(n.attr("type")||"text/javascript").replace(/^mce\-/,""));if(o.length>0){n.firstChild.value="// <![CDATA[\n"+j(o)+"\n// ]]>"}}else{if(o.length>0){n.firstChild.value="<!--\n"+j(o)+"\n-->"}}}});c.addNodeFilter("#comment",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.value.indexOf("[CDATA[")===0){m.name="#cdata";m.type=4;m.value=m.value.replace(/^\[CDATA\[|\]\]$/g,"")}else{if(m.value.indexOf("mce:protected ")===0){m.name="#text";m.type=3;m.raw=true;m.value=unescape(m.value).substr(14)}}}});c.addNodeFilter("xml:namespace,input",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.type===7){m.remove()}else{if(m.type===1){if(k==="input"&&!("type" in m.attributes.map)){m.attr("type","text")}}}}});if(e.fix_list_elements){c.addNodeFilter("ul,ol",function(k,l){var m=k.length,n,j;while(m--){n=k[m];j=n.parent;if(j.name==="ul"||j.name==="ol"){if(n.prev&&n.prev.name==="li"){n.prev.append(n)}}}})}c.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style",function(j,k){var l=j.length;while(l--){j[l].attr(k,null)}});return{schema:f,addNodeFilter:c.addNodeFilter,addAttributeFilter:c.addAttributeFilter,onPreProcess:h,onPostProcess:b,serialize:function(o,m){var l,p,k,j,n;if(d&&i.select("script,style,select,map").length>0){n=o.innerHTML;o=o.cloneNode(false);i.setHTML(o,n)}else{o=o.cloneNode(true)}l=o.ownerDocument.implementation;if(l.createHTMLDocument){p=l.createHTMLDocument("");g(o.nodeName=="BODY"?o.childNodes:[o],function(q){p.body.appendChild(p.importNode(q,true))});if(o.nodeName!="BODY"){o=p.body.firstChild}else{o=p.body}k=i.doc;i.doc=p}m=m||{};m.format=m.format||"html";if(!m.no_events){m.node=o;h.dispatch(self,m)}j=new a.html.Serializer(e,f);m.content=j.serialize(c.parse(a.trim(m.getInner?o.innerHTML:i.getOuterHTML(o)),m));if(!m.cleanup){m.content=m.content.replace(/\uFEFF/g,"")}if(!m.no_events){b.dispatch(self,m)}if(k){i.doc=k}m.node=null;return m.content},addRules:function(j){f.addValidElements(j)},setRules:function(j){f.setValidElements(j)}}}})(tinymce);(function(a){a.dom.ScriptLoader=function(h){var c=0,k=1,i=2,l={},j=[],e={},d=[],g=0,f;function b(m,v){var x=this,q=a.DOM,s,o,r,n;function p(){q.remove(n);if(s){s.onreadystatechange=s.onload=s=null}v()}function u(){if(typeof(console)!=="undefined"&&console.log){console.log("Failed to load: "+m)}}n=q.uniqueId();if(a.isIE6){o=new a.util.URI(m);r=location;if(o.host==r.hostname&&o.port==r.port&&(o.protocol+":")==r.protocol&&o.protocol.toLowerCase()!="file"){a.util.XHR.send({url:a._addVer(o.getURI()),success:function(y){var t=q.create("script",{type:"text/javascript"});t.text=y;document.getElementsByTagName("head")[0].appendChild(t);q.remove(t);p()},error:u});return}}s=document.createElement("script");s.id=n;s.type="text/javascript";s.src=a._addVer(m);if(!a.isIE){s.onload=p}s.onerror=u;if(!a.isOpera){s.onreadystatechange=function(){var t=s.readyState;if(t=="complete"||t=="loaded"){p()}}}(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}this.isDone=function(m){return l[m]==i};this.markDone=function(m){l[m]=i};this.add=this.load=function(m,q,n){var o,p=l[m];if(p==f){j.push(m);l[m]=c}if(q){if(!e[m]){e[m]=[]}e[m].push({func:q,scope:n||this})}};this.loadQueue=function(n,m){this.loadScripts(j,n,m)};this.loadScripts=function(m,q,p){var o;function n(r){a.each(e[r],function(s){s.func.call(s.scope)});e[r]=f}d.push({func:q,scope:p||this});o=function(){var r=a.grep(m);m.length=0;a.each(r,function(s){if(l[s]==i){n(s);return}if(l[s]!=k){l[s]=k;g++;b(s,function(){l[s]=i;g--;n(s);o()})}});if(!g){a.each(d,function(s){s.func.call(s.scope)});d.length=0}};o()}};a.ScriptLoader=new a.dom.ScriptLoader()})(tinymce);(function(a){a.dom.RangeUtils=function(c){var b="\uFEFF";this.walk=function(d,s){var i=d.startContainer,l=d.startOffset,t=d.endContainer,m=d.endOffset,j,g,o,h,r,q,e;e=c.select("td.mceSelected,th.mceSelected");if(e.length>0){a.each(e,function(u){s([u])});return}function f(u){var v;v=u[0];if(v.nodeType===3&&v===i&&l>=v.nodeValue.length){u.splice(0,1)}v=u[u.length-1];if(m===0&&u.length>0&&v===t&&v.nodeType===3){u.splice(u.length-1,1)}return u}function p(x,v,u){var y=[];for(;x&&x!=u;x=x[v]){y.push(x)}return y}function n(v,u){do{if(v.parentNode==u){return v}v=v.parentNode}while(v)}function k(x,v,y){var u=y?"nextSibling":"previousSibling";for(h=x,r=h.parentNode;h&&h!=v;h=r){r=h.parentNode;q=p(h==x?h:h[u],u);if(q.length){if(!y){q.reverse()}s(f(q))}}}if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[l]}if(t.nodeType==1&&t.hasChildNodes()){t=t.childNodes[Math.min(m-1,t.childNodes.length-1)]}if(i==t){return s(f([i]))}j=c.findCommonAncestor(i,t);for(h=i;h;h=h.parentNode){if(h===t){return k(i,j,true)}if(h===j){break}}for(h=t;h;h=h.parentNode){if(h===i){return k(t,j)}if(h===j){break}}g=n(i,j)||i;o=n(t,j)||t;k(i,g,true);q=p(g==i?g:g.nextSibling,"nextSibling",o==t?o.nextSibling:o);if(q.length){s(f(q))}k(t,o)};this.split=function(e){var h=e.startContainer,d=e.startOffset,i=e.endContainer,g=e.endOffset;function f(j,k){return j.splitText(k)}if(h==i&&h.nodeType==3){if(d>0&&d<h.nodeValue.length){i=f(h,d);h=i.previousSibling;if(g>d){g=g-d;h=i=f(i,g).previousSibling;g=i.nodeValue.length;d=0}else{g=0}}}else{if(h.nodeType==3&&d>0&&d<h.nodeValue.length){h=f(h,d);d=0}if(i.nodeType==3&&g>0&&g<i.nodeValue.length){i=f(i,g).previousSibling;g=i.nodeValue.length}}return{startContainer:h,startOffset:d,endContainer:i,endOffset:g}}};a.dom.RangeUtils.compareRanges=function(c,b){if(c&&b){if(c.item||c.duplicate){if(c.item&&b.item&&c.item(0)===b.item(0)){return true}if(c.isEqual&&b.isEqual&&b.isEqual(c)){return true}}else{return c.startContainer==b.startContainer&&c.startOffset==b.startOffset}}return false}})(tinymce);(function(b){var a=b.dom.Event,c=b.each;b.create("tinymce.ui.KeyboardNavigation",{KeyboardNavigation:function(e,f){var q=this,n=e.root,m=e.items,o=e.enableUpDown,i=e.enableLeftRight||!e.enableUpDown,l=e.excludeFromTabOrder,k,h,p,d,g;f=f||b.DOM;k=function(r){g=r.target.id};h=function(r){f.setAttrib(r.target.id,"tabindex","-1")};d=function(r){var s=f.get(g);f.setAttrib(s,"tabindex","0");s.focus()};q.focus=function(){f.get(g).focus()};q.destroy=function(){c(m,function(s){var t=f.get(s.id);f.unbind(t,"focus",k);f.unbind(t,"blur",h)});var r=f.get(n);f.unbind(r,"focus",d);f.unbind(r,"keydown",p);m=f=n=q.focus=k=h=p=d=null;q.destroy=function(){}};q.moveFocus=function(v,s){var r=-1,u=q.controls,t;if(!g){return}c(m,function(y,x){if(y.id===g){r=x;return false}});r+=v;if(r<0){r=m.length-1}else{if(r>=m.length){r=0}}t=m[r];f.setAttrib(g,"tabindex","-1");f.setAttrib(t.id,"tabindex","0");f.get(t.id).focus();if(e.actOnFocus){e.onAction(t.id)}if(s){a.cancel(s)}};p=function(z){var v=37,u=39,y=38,A=40,r=27,t=14,s=13,x=32;switch(z.keyCode){case v:if(i){q.moveFocus(-1)}break;case u:if(i){q.moveFocus(1)}break;case y:if(o){q.moveFocus(-1)}break;case A:if(o){q.moveFocus(1)}break;case r:if(e.onCancel){e.onCancel();a.cancel(z)}break;case t:case s:case x:if(e.onAction){e.onAction(g);a.cancel(z)}break}};c(m,function(t,r){var s,u;if(!t.id){t.id=f.uniqueId("_mce_item_")}u=f.get(t.id);if(l){f.bind(u,"blur",h);s="-1"}else{s=(r===0?"0":"-1")}u.setAttribute("tabindex",s);f.bind(u,"focus",k)});if(m[0]){g=m[0].id}f.setAttrib(n,"tabindex","-1");var j=f.get(n);f.bind(j,"focus",d);f.bind(j,"keydown",p)}})})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(f,e,d){this.id=f;this.settings=e=e||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=e.scope||this;this.disabled=0;this.active=0;this.editor=d},setAriaProperty:function(f,e){var d=b.get(this.id+"_aria")||b.get(this.id);if(d){b.setAttrib(d,"aria-"+f,!!e)}},focus:function(){b.get(this.id).focus()},setDisabled:function(d){if(d!=this.disabled){this.setAriaProperty("disabled",d);this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d;this.setAriaProperty("pressed",d)}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(c,b,a){this.parent(c,b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator";this.setDisabled(true)},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix,role:"separator","aria-orientation":"vertical",tabindex:"-1"})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.setAriaProperty("checked",!!f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;j.keyboard_focus=i.keyboard_focus;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},focus:function(){var g=this;if(g.keyboardNav){g.keyboardNav.focus()}},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.offsetWidth,j.max_width):g.offsetWidth;k=j.max_height?Math.min(g.offsetHeight,j.max_height):g.offsetHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_height){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var z=this,A=z.settings,o,g=c.getViewPort(),u,l,v,q,i=2,k,j,m=z.classPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=c.add(z.settings.container,z.renderNode());f(z.items,function(h){h.postRender()});z.element=new b("menu_"+z.id,{blocker:1,container:A.container})}else{o=c.get("menu_"+z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.update();p+=A.offset_x||0;n+=A.offset_y||0;g.w-=4;g.h-=4;if(A.constrain){u=o.clientWidth-i;l=o.clientHeight-i;v=g.x+g.w;q=g.y+g.h;if((p+A.vp_offset_x+u)>v){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return false}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(x){var h,t,s;x=x.target;if(x&&(x=c.getParent(x,"tr"))){h=z.items[x.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(x&&c.hasClass(x,m+"ItemSub")){t=c.getRect(x);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}a.add(o,"keydown",z._keyHandler,z);z.onShowMenu.dispatch(z);if(A.keyboard_focus){z._setupKeyboardNav()}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(h,"mouseover",g.mouseOverFunc);a.remove(c.select("a",h),"focus",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);a.remove(h,"keydown",g._keyHandler);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{role:"listbox",id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000;outline:0"});if(i.settings.parent){c.setAttrib(g,"aria-parent","menu_"+i.settings.parent.id)}k=c.add(g,"div",{role:"presentation",id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{role:"presentation",id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_setupKeyboardNav:function(){var i,h,g=this;i=c.get("menu_"+g.id);h=c.select("a[role=option]","menu_"+g.id);h.splice(0,0,i);g.keyboardNav=new e.ui.KeyboardNavigation({root:"menu_"+g.id,items:h,onCancel:function(){g.hideMenu()},enableUpDown:true});i.focus()},_keyHandler:function(g){var h=this,i;switch(g.keyCode){case 37:if(h.settings.parent){h.hideMenu();h.settings.parent.focus();a.cancel(g)}break;case 39:if(h.mouseOverFunc){h.mouseOverFunc(g)}break}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,q.titleItem?"th":"td");i=p=c.add(i,"a",{id:h.id+"_aria",role:q.titleItem?"presentation":"option",href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});if(q.parent){c.setAttrib(p,"aria-haspopup","true");c.setAttrib(p,"aria-owns","menu_"+h.id)}c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){if(typeof h.settings.style=="function"){h.settings.style=h.settings.style()}c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(e,d,c){this.parent(e,d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='<a role="button" id="'+this.id+'" href="javascript:;" class="'+f+" "+f+"Enabled "+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" aria-labelledby="'+this.id+'_voice" title="'+a.encode(e.title)+'">';if(e.image&&!(this.editor&&this.editor.forcedHighContrastMode)){d+='<span class="mceIcon '+e["class"]+'"><img class="mceIcon" src="'+e.image+'" alt="'+a.encode(e.title)+'" /></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")}else{d+='<span class="mceIcon '+e["class"]+'"></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")}d+='<span class="mceVoiceLabel mceIconOnly" style="display: none;" id="'+this.id+'_voice">'+e.title+"</span>";d+="</a>";return d},postRender:function(){var d=this,e=d.settings,c;if(b.isIE&&d.editor){b.dom.Event.add(d.id,"mousedown",function(f){var g=d.editor.selection.getNode().nodeName;c=g==="IMG"?d.editor.selection.getBookmark():null})}b.dom.Event.add(d.id,"click",function(f){if(!d.isDisabled()){if(b.isIE&&d.editor&&c!==null){d.editor.selection.moveToBookmark(c)}return e.onclick.call(e.scope,f)}});b.dom.Event.add(d.id,"keyup",function(f){if(!d.isDisabled()&&f.keyCode==b.VK.SPACEBAR){return e.onclick.call(e.scope,f)}})}})})(tinymce);(function(e){var d=e.DOM,b=e.dom.Event,f=e.each,a=e.util.Dispatcher,c;e.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(j,i,g){var h=this;h.parent(j,i,g);h.items=[];h.onChange=new a(h);h.onPostRender=new a(h);h.onAdd=new a(h);h.onRenderMenu=new e.util.Dispatcher(this);h.classPrefix="mceListBox";h.marked={}},select:function(h){var g=this,j,i;g.marked={};if(h==c){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(k){return k==h}}if(h!=g.selectedValue){f(g.items,function(l,k){if(i(l.value)){j=1;g.selectByIndex(k);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(g){var i=this,j,k,h;i.marked={};if(g!=i.selectedIndex){j=d.get(i.id+"_text");h=d.get(i.id+"_voiceDesc");k=i.items[g];if(k){i.selectedValue=k.value;i.selectedIndex=g;d.setHTML(j,d.encode(k.title));d.setHTML(h,i.settings.title+" - "+k.title);d.removeClass(j,"mceTitle");d.setAttrib(i.id,"aria-valuenow",k.title)}else{d.setHTML(j,d.encode(i.settings.title));d.setHTML(h,d.encode(i.settings.title));d.addClass(j,"mceTitle");i.selectedValue=i.selectedIndex=null;d.setAttrib(i.id,"aria-valuenow",i.settings.title)}j=0}},mark:function(g){this.marked[g]=true},add:function(j,g,i){var h=this;i=i||{};i=e.extend(i,{title:j,value:g});h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return this.items.length},renderHTML:function(){var j="",g=this,i=g.settings,k=g.classPrefix;j='<span role="listbox" aria-haspopup="true" aria-labelledby="'+g.id+'_voiceDesc" aria-describedby="'+g.id+'_voiceDesc"><table role="presentation" tabindex="0" id="'+g.id+'" cellpadding="0" cellspacing="0" class="'+k+" "+k+"Enabled"+(i["class"]?(" "+i["class"]):"")+'"><tbody><tr>';j+="<td>"+d.createHTML("span",{id:g.id+"_voiceDesc","class":"voiceLabel",style:"display:none;"},g.settings.title);j+=d.createHTML("a",{id:g.id+"_text",tabindex:-1,href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},d.encode(g.settings.title))+"</td>";j+="<td>"+d.createHTML("a",{id:g.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},'<span><span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span></span>')+"</td>";j+="</tr></tbody></table></span>";return j},showMenu:function(){var h=this,j,i=d.get(this.id),g;if(h.isDisabled()||h.items.length===0){return}if(h.menu&&h.menu.isMenuVisible){return h.hideMenu()}if(!h.isMenuRendered){h.renderMenu();h.isMenuRendered=true}j=d.getPos(i);g=h.menu;g.settings.offset_x=j.x;g.settings.offset_y=j.y;g.settings.keyboard_focus=!e.isOpera;f(h.items,function(k){if(g.items[k.id]){g.items[k.id].setSelected(0)}});f(h.items,function(k){if(g.items[k.id]&&h.marked[k.value]){g.items[k.id].setSelected(1)}if(k.value===h.selectedValue){g.items[k.id].setSelected(1)}});g.showMenu(0,i.clientHeight);b.add(d.doc,"mousedown",h.hideMenu,h);d.addClass(h.id,h.classPrefix+"Selected")},hideMenu:function(h){var g=this;if(g.menu&&g.menu.isMenuVisible){d.removeClass(g.id,g.classPrefix+"Selected");if(h&&h.type=="mousedown"&&(h.target.id==g.id+"_text"||h.target.id==g.id+"_open")){return}if(!h||!d.getParent(h.target,".mceMenu")){d.removeClass(g.id,g.classPrefix+"Selected");b.remove(d.doc,"mousedown",g.hideMenu,g);g.menu.hideMenu()}}},renderMenu:function(){var h=this,g;g=h.settings.control_manager.createDropMenu(h.id+"_menu",{menu_line:1,"class":h.classPrefix+"Menu mceNoIcons",max_width:250,max_height:150});g.onHideMenu.add(function(){h.hideMenu();h.focus()});g.add({title:h.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(h.settings.onselect("")!==false){h.select("")}}});f(h.items,function(i){if(i.value===c){g.add({title:i.title,role:"option","class":"mceMenuItemTitle",onclick:function(){if(h.settings.onselect("")!==false){h.select("")}}})}else{i.id=d.uniqueId();i.role="option";i.onclick=function(){if(h.settings.onselect(i.value)!==false){h.select(i.value)}};g.add(i)}});h.onRenderMenu.dispatch(h,g);h.menu=g},postRender:function(){var g=this,h=g.classPrefix;b.add(g.id,"click",g.showMenu,g);b.add(g.id,"keydown",function(i){if(i.keyCode==32){g.showMenu(i);b.cancel(i)}});b.add(g.id,"focus",function(){if(!g._focused){g.keyDownHandler=b.add(g.id,"keydown",function(i){if(i.keyCode==40){g.showMenu();b.cancel(i)}});g.keyPressHandler=b.add(g.id,"keypress",function(j){var i;if(j.keyCode==13){i=g.selectedValue;g.selectedValue=null;b.cancel(j);g.settings.onselect(i)}})}g._focused=1});b.add(g.id,"blur",function(){b.remove(g.id,"keydown",g.keyDownHandler);b.remove(g.id,"keypress",g.keyPressHandler);g._focused=0});if(e.isIE6||!d.boxModel){b.add(g.id,"mouseover",function(){if(!d.hasClass(g.id,h+"Disabled")){d.addClass(g.id,h+"Hover")}});b.add(g.id,"mouseout",function(){if(!d.hasClass(g.id,h+"Disabled")){d.removeClass(g.id,h+"Hover")}})}g.onPostRender.dispatch(g,d.get(g.id))},destroy:function(){this.parent();b.clear(this.id+"_text");b.clear(this.id+"_open")}})})(tinymce);(function(e){var d=e.DOM,b=e.dom.Event,f=e.each,a=e.util.Dispatcher,c;e.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(h,g){this.parent(h,g);this.classPrefix="mceNativeListBox"},setDisabled:function(g){d.get(this.id).disabled=g;this.setAriaProperty("disabled",g)},isDisabled:function(){return d.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==c){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(k){return k==h}}if(h!=g.selectedValue){f(g.items,function(l,k){if(i(l.value)){j=1;g.selectByIndex(k);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(g){d.get(this.id).selectedIndex=g+1;this.selectedValue=this.items[g]?this.items[g].value:null},add:function(k,h,g){var j,i=this;g=g||{};g.value=h;if(i.isRendered()){d.add(d.get(this.id),"option",g,k)}j={title:k,value:h,attribs:g};i.items.push(j);i.onAdd.dispatch(i,j)},getLength:function(){return this.items.length},renderHTML:function(){var i,g=this;i=d.createHTML("option",{value:""},"-- "+g.settings.title+" --");f(g.items,function(h){i+=d.createHTML("option",{value:h.value},h.title)});i=d.createHTML("select",{id:g.id,"class":"mceNativeListBox","aria-labelledby":g.id+"_aria"},i);i+=d.createHTML("span",{id:g.id+"_aria",style:"display: none"},g.settings.title);return i},postRender:function(){var h=this,i,j=true;h.rendered=true;function g(l){var k=h.items[l.target.selectedIndex-1];if(k&&(k=k.value)){h.onChange.dispatch(h,k);if(h.settings.onselect){h.settings.onselect(k)}}}b.add(h.id,"change",g);b.add(h.id,"keydown",function(l){var k;b.remove(h.id,"change",i);j=false;k=b.add(h.id,"blur",function(){if(j){return}j=true;b.add(h.id,"change",g);b.remove(h.id,"blur",k)});if(e.isWebKit&&(l.keyCode==37||l.keyCode==39)){return b.prevent(l)}if(l.keyCode==13||l.keyCode==32){g(l);return b.cancel(l)}});h.onPostRender.dispatch(h,d.get(h.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(g,f,e){this.parent(g,f,e);this.onRenderMenu=new c.util.Dispatcher(this);f.menu_container=f.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.firstChild.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(function(){f.hideMenu();f.focus()});f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(g,f,e){this.parent(g,f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="<tbody><tr>";if(g.image){e=b.createHTML("img ",{src:g.image,role:"presentation","class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}e+=b.createHTML("span",{"class":"mceVoiceLabel mceIconOnly",id:f.id+"_voice",style:"display:none;"},g.title);i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_action",tabindex:"-1",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";e=b.createHTML("span",{"class":"mceOpen "+g["class"]},'<span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span>');i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_open",tabindex:"-1",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";i+="</tr></tbody>";i=b.createHTML("table",{role:"presentation","class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",title:g.title},i);return b.createHTML("div",{id:f.id,role:"button",tabindex:"0","aria-labelledby":f.id+"_voice","aria-haspopup":"true"},i)},postRender:function(){var e=this,g=e.settings,f;if(g.onclick){f=function(h){if(!e.isDisabled()){g.onclick(e.value);a.cancel(h)}};a.add(e.id+"_action","click",f);a.add(e.id,["click","keydown"],function(h){var k=32,m=14,i=13,j=38,l=40;if((h.keyCode===32||h.keyCode===13||h.keyCode===14)&&!h.altKey&&!h.ctrlKey&&!h.metaKey){f();a.cancel(h)}else{if(h.type==="click"||h.keyCode===l){e.showMenu();a.cancel(h)}}})}a.add(e.id+"_open","click",function(h){e.showMenu();a.cancel(h)});a.add([e.id,e.id+"_open"],"focus",function(){e._focused=1});a.add([e.id,e.id+"_open"],"blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open");a.clear(this.id)}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(i,h,f){var g=this;g.parent(i,h,f);g.settings=h=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},g.settings);g.onShowMenu=new d.util.Dispatcher(g);g.onHideMenu=new d.util.Dispatcher(g);g.value=h.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.firstChild.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.keyboardNav=new d.ui.KeyboardNavigation({root:f.id+"_menu",items:c.select("a",f.id+"_menu"),onCancel:function(){f.hideMenu();f.focus()}});f.keyboardNav.focus();f.isMenuVisible=1},hideMenu:function(g){var f=this;if(f.isMenuVisible){if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.isMenuVisible=0;f.onHideMenu.dispatch();f.keyboardNav.destroy()}},renderMenu:function(){var p=this,h,k=0,q=p.settings,g,j,l,o,f;o=c.add(q.menu_container,"div",{role:"listbox",id:p.id+"_menu","class":q.menu_class+" "+q["class"],style:"position:absolute;left:0;top:-1000px;"});h=c.add(o,"div",{"class":q["class"]+" mceSplitButtonMenu"});c.add(h,"span",{"class":"mceMenuLine"});g=c.add(h,"table",{role:"presentation","class":"mceColorSplitMenu"});j=c.add(g,"tbody");k=0;e(b(q.colors,"array")?q.colors:q.colors.split(","),function(m){m=m.replace(/^#/,"");if(!k--){l=c.add(j,"tr");k=q.grid_width-1}g=c.add(l,"td");var i={href:"javascript:;",style:{backgroundColor:"#"+m},title:p.editor.getLang("colors."+m,m),"data-mce-color":"#"+m};if(!d.isIE){i.role="option"}g=c.add(g,"a",i);if(p.editor.forcedHighContrastMode){g=c.add(g,"canvas",{width:16,height:16,"aria-hidden":"true"});if(g.getContext&&(f=g.getContext("2d"))){f.fillStyle="#"+m;f.fillRect(0,0,16,16)}else{c.remove(g)}}});if(q.more_colors_func){g=c.add(j,"tr");g=c.add(g,"td",{colspan:q.grid_width,"class":"mceMoreColors"});g=c.add(g,"a",{role:"option",id:p.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},q.more_colors_title);a.add(g,"click",function(i){q.more_colors_func.call(q.more_colors_scope||this);return a.cancel(i)})}c.addClass(h,"mceColorSplitMenu");a.add(p.id+"_menu","mousedown",function(i){return a.cancel(i)});a.add(p.id+"_menu","click",function(i){var m;i=c.getParent(i.target,"a",j);if(i&&i.nodeName.toLowerCase()=="a"&&(m=i.getAttribute("data-mce-color"))){p.setColor(m)}return false});return o},setColor:function(f){this.displayColor(f);this.hideMenu();this.settings.onselect(f)},displayColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){var f=this;f.parent();a.clear(f.id+"_menu");a.clear(f.id+"_more");c.remove(f.id+"_menu");if(f.keyboardNav){f.keyboardNav.destroy()}}})})(tinymce);(function(b){var d=b.DOM,c=b.each,a=b.dom.Event;b.create("tinymce.ui.ToolbarGroup:tinymce.ui.Container",{renderHTML:function(){var f=this,i=[],e=f.controls,j=b.each,g=f.settings;i.push('<div id="'+f.id+'" role="group" aria-labelledby="'+f.id+'_voice">');i.push("<span role='application'>");i.push('<span id="'+f.id+'_voice" class="mceVoiceLabel" style="display:none;">'+d.encode(g.name)+"</span>");j(e,function(h){i.push(h.renderHTML())});i.push("</span>");i.push("</div>");return i.join("")},focus:function(){var e=this;d.get(e.id).focus()},postRender:function(){var f=this,e=[];c(f.controls,function(g){c(g.controls,function(h){if(h.id){e.push(h)}})});f.keyNav=new b.ui.KeyboardNavigation({root:f.id,items:e,onCancel:function(){if(b.isWebKit){d.get(f.editor.id+"_ifr").focus()}f.editor.focus()},excludeFromTabOrder:!f.settings.tab_focus_toolbar})},destroy:function(){var e=this;e.parent();e.keyNav.destroy();a.clear(e.id)}})})(tinymce);(function(a){var c=a.DOM,b=a.each;a.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var m=this,f="",j,k,n=m.settings,e,d,g,l;l=m.controls;for(e=0;e<l.length;e++){k=l[e];d=l[e-1];g=l[e+1];if(e===0){j="mceToolbarStart";if(k.Button){j+=" mceToolbarStartButton"}else{if(k.SplitButton){j+=" mceToolbarStartSplitButton"}else{if(k.ListBox){j+=" mceToolbarStartListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"))}if(d&&k.ListBox){if(d.Button||d.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarEnd"},c.createHTML("span",null,"<!-- IE -->"))}}if(c.stdMode){f+='<td style="position: relative">'+k.renderHTML()+"</td>"}else{f+="<td>"+k.renderHTML()+"</td>"}if(g&&k.ListBox){if(g.Button||g.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarStart"},c.createHTML("span",null,"<!-- IE -->"))}}}j="mceToolbarEnd";if(k.Button){j+=" mceToolbarEndButton"}else{if(k.SplitButton){j+=" mceToolbarEndSplitButton"}else{if(k.ListBox){j+=" mceToolbarEndListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"));return c.createHTML("table",{id:m.id,"class":"mceToolbar"+(n["class"]?" "+n["class"]:""),cellpadding:"0",cellspacing:"0",align:m.settings.align||"",role:"presentation",tabindex:"-1"},"<tbody><tr>"+f+"</tr></tbody>")}})})(tinymce);(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{AddOnManager:function(){var d=this;d.items=[];d.urls={};d.lookup={};d.onAdd=new a(d)},get:function(d){if(this.lookup[d]){return this.lookup[d].instance}else{return undefined}},dependencies:function(e){var d;if(this.lookup[e]){d=this.lookup[e].dependencies}return d||[]},requireLangPack:function(e){var d=b.settings;if(d&&d.language&&d.language_load!==false){b.ScriptLoader.add(this.urls[e]+"/langs/"+d.language+".js")}},add:function(f,e,d){this.items.push(e);this.lookup[f]={instance:e,dependencies:d};this.onAdd.dispatch(this,f,e);return e},createUrl:function(d,e){if(typeof e==="object"){return e}else{return{prefix:d.prefix,resource:e,suffix:d.suffix}}},addComponents:function(f,d){var e=this.urls[f];b.each(d,function(g){b.ScriptLoader.add(e+"/"+g)})},load:function(j,f,d,h){var g=this,e=f;function i(){var k=g.dependencies(j);b.each(k,function(m){var l=g.createUrl(f,m);g.load(l.resource,l,undefined,undefined)});if(d){if(h){d.call(h)}else{d.call(b.ScriptLoader)}}}if(g.urls[j]){return}if(typeof f==="object"){e=f.prefix+f.resource+f.suffix}if(e.indexOf("/")!==0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}g.urls[j]=e.substring(0,e.lastIndexOf("/"));if(g.lookup[j]){i()}else{b.ScriptLoader.add(e,i,h)}}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(j){var g=j.each,d=j.extend,k=j.DOM,i=j.dom.Event,f=j.ThemeManager,b=j.PluginManager,e=j.explode,h=j.util.Dispatcher,a,c=0;j.documentBaseURL=window.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(j.documentBaseURL)){j.documentBaseURL+="/"}j.baseURL=new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL);j.baseURI=new j.util.URI(j.baseURL);j.onBeforeUnload=new h(j);i.add(window,"beforeunload",function(l){j.onBeforeUnload.dispatch(j,l)});j.onAddEditor=new h(j);j.onRemoveEditor=new h(j);j.EditorManager=d(j,{editors:[],i18n:{},activeEditor:null,init:function(x){var v=this,o,n=j.ScriptLoader,u,l=[],r;function q(t){var s=t.id;if(!s){s=t.name;if(s&&!k.get(s)){s=t.name}else{s=k.uniqueId()}t.setAttribute("id",s)}return s}function m(z,A,t){var y=z[A];if(!y){return}if(j.is(y,"string")){t=y.replace(/\.\w+$/,"");t=t?j.resolve(t):0;y=j.resolve(y)}return y.apply(t||this,Array.prototype.slice.call(arguments,2))}function p(t,s){return s.constructor===RegExp?s.test(t.className):k.hasClass(t,s)}v.settings=x;i.bind(window,"ready",function(){var s,t;m(x,"onpageload");switch(x.mode){case"exact":s=x.elements||"";if(s.length>0){g(e(s),function(y){if(k.get(y)){r=new j.Editor(y,x);l.push(r);r.render(1)}else{g(document.forms,function(z){g(z.elements,function(A){if(A.name===y){y="mce_editor_"+c++;k.setAttrib(A,"id",y);r=new j.Editor(y,x);l.push(r);r.render(1)}})})}})}break;case"textareas":case"specific_textareas":g(k.select("textarea"),function(y){if(x.editor_deselector&&p(y,x.editor_deselector)){return}if(!x.editor_selector||p(y,x.editor_selector)){r=new j.Editor(q(y),x);l.push(r);r.render(1)}});break;default:if(x.types){g(x.types,function(y){g(k.select(y.selector),function(A){var z=new j.Editor(q(A),j.extend({},x,y));l.push(z);z.render(1)})})}else{if(x.selector){g(k.select(x.selector),function(z){var y=new j.Editor(q(z),x);l.push(y);y.render(1)})}}}if(x.oninit){s=t=0;g(l,function(y){t++;if(!y.initialized){y.onInit.add(function(){s++;if(s==t){m(x,"oninit")}})}else{s++}if(s==t){m(x,"oninit")}})}})},get:function(l){if(l===a){return this.editors}return this.editors[l]},getInstanceById:function(l){return this.get(l)},add:function(m){var l=this,n=l.editors;n[m.id]=m;n.push(m);l._setActive(m);l.onAddEditor.dispatch(l,m);return m},remove:function(n){var m=this,l,o=m.editors;if(!o[n.id]){return null}delete o[n.id];for(l=0;l<o.length;l++){if(o[l]==n){o.splice(l,1);break}}if(m.activeEditor==n){m._setActive(o[0])}n.destroy();m.onRemoveEditor.dispatch(m,n);return n},execCommand:function(r,p,o){var q=this,n=q.get(o),l;function m(){n.destroy();l.detachEvent("onunload",m);l=l.tinyMCE=l.tinymce=null}switch(r){case"mceFocus":n.focus();return true;case"mceAddEditor":case"mceAddControl":if(!q.get(o)){new j.Editor(o,q.settings).render()}return true;case"mceAddFrameControl":l=o.window;l.tinyMCE=tinyMCE;l.tinymce=j;j.DOM.doc=l.document;j.DOM.win=l;n=new j.Editor(o.element_id,o);n.render();if(j.isIE){l.attachEvent("onunload",m)}o.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(n){n.remove()}return true;case"mceToggleEditor":if(!n){q.execCommand("mceAddControl",0,o);return true}if(n.isHidden()){n.show()}else{n.hide()}return true}if(q.activeEditor){return q.activeEditor.execCommand(r,p,o)}return false},execInstanceCommand:function(p,o,n,m){var l=this.get(p);if(l){return l.execCommand(o,n,m)}return false},triggerSave:function(){g(this.editors,function(l){l.save()})},addI18n:function(n,q){var l,m=this.i18n;if(!j.is(n,"string")){g(n,function(r,p){g(r,function(t,s){g(t,function(v,u){if(s==="common"){m[p+"."+u]=v}else{m[p+"."+s+"."+u]=v}})})})}else{g(q,function(r,p){m[n+"."+p]=r})}},_setActive:function(l){this.selectedInstance=this.activeEditor=l}})})(tinymce);(function(k){var l=k.DOM,j=k.dom.Event,f=k.extend,i=k.each,a=k.isGecko,b=k.isIE,e=k.isWebKit,d=k.is,h=k.ThemeManager,c=k.PluginManager,g=k.explode;k.create("tinymce.Editor",{Editor:function(p,o){var m=this,n=true;m.settings=o=f({id:p,language:"en",theme:"advanced",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:k.documentBaseURL,add_form_submit_trigger:n,submit_patch:n,add_unload_trigger:n,convert_urls:n,relative_urls:n,remove_script_host:n,table_inline_editing:false,object_resizing:n,accessibility_focus:n,doctype:k.isIE6?'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">':"<!DOCTYPE>",visual:n,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",apply_source_formatting:n,directionality:"ltr",forced_root_block:"p",hidden_input:n,padd_empty_editor:n,render_ui:n,indentation:"30px",fix_table_elements:n,inline_styles:n,convert_fonts_to_spans:n,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",validate:n,entity_encoding:"named",url_converter:m.convertURL,url_converter_scope:m,ie7_compat:n},o);m.id=m.editorId=p;m.isNotDirty=false;m.plugins={};m.documentBaseURI=new k.util.URI(o.document_base_url||k.documentBaseURL,{base_uri:tinyMCE.baseURI});m.baseURI=k.baseURI;m.contentCSS=[];m.contentStyles=[];m.setupEvents();m.execCommands={};m.queryStateCommands={};m.queryValueCommands={};m.execCallback("setup",m)},render:function(o){var p=this,q=p.settings,r=p.id,m=k.ScriptLoader;if(!j.domLoaded){j.add(window,"ready",function(){p.render()});return}tinyMCE.settings=q;if(!p.getElement()){return}if(k.isIDevice&&!k.isIOS5){return}if(!/TEXTAREA|INPUT/i.test(p.getElement().nodeName)&&q.hidden_input&&l.getParent(r,"form")){l.insertAfter(l.create("input",{type:"hidden",name:r}),r)}if(!q.content_editable){p.orgVisibility=p.getElement().style.visibility;p.getElement().style.visibility="hidden"}if(k.WindowManager){p.windowManager=new k.WindowManager(p)}if(q.encoding=="xml"){p.onGetContent.add(function(s,t){if(t.save){t.content=l.encode(t.content)}})}if(q.add_form_submit_trigger){p.onSubmit.addToTop(function(){if(p.initialized){p.save();p.isNotDirty=1}})}if(q.add_unload_trigger){p._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(p.initialized&&!p.destroyed&&!p.isHidden()){p.save({format:"raw",no_events:true})}})}k.addUnload(p.destroy,p);if(q.submit_patch){p.onBeforeRenderUI.add(function(){var s=p.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){p.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){k.triggerSave();p.isNotDirty=1;return p.formElement._mceOldSubmit(p.formElement)}}s=null})}function n(){if(q.language&&q.language_load!==false){m.add(k.baseURL+"/langs/"+q.language+".js")}if(q.theme&&typeof q.theme!="function"&&q.theme.charAt(0)!="-"&&!h.urls[q.theme]){h.load(q.theme,"themes/"+q.theme+"/editor_template"+k.suffix+".js")}i(g(q.plugins),function(t){if(t&&!c.urls[t]){if(t.charAt(0)=="-"){t=t.substr(1,t.length);var s=c.dependencies(t);i(s,function(v){var u={prefix:"plugins/",resource:v,suffix:"/editor_plugin"+k.suffix+".js"};v=c.createUrl(u,v);c.load(v.resource,v)})}else{if(t=="safari"){return}c.load(t,{prefix:"plugins/",resource:t,suffix:"/editor_plugin"+k.suffix+".js"})}}});m.loadQueue(function(){if(!p.removed){p.init()}})}n()},init:function(){var q,G=this,H=G.settings,D,y,z,C=G.getElement(),p,m,E,v,B,F,x,r=[];k.add(G);H.aria_label=H.aria_label||l.getAttrib(C,"aria-label",G.getLang("aria.rich_text_area"));if(H.theme){if(typeof H.theme!="function"){H.theme=H.theme.replace(/-/,"");p=h.get(H.theme);G.theme=new p();if(G.theme.init){G.theme.init(G,h.urls[H.theme]||k.documentBaseURL.replace(/\/$/,""))}}else{G.theme=H.theme}}function A(s){var t=c.get(s),o=c.urls[s]||k.documentBaseURL.replace(/\/$/,""),n;if(t&&k.inArray(r,s)===-1){i(c.dependencies(s),function(u){A(u)});n=new t(G,o);G.plugins[s]=n;if(n.init){n.init(G,o);r.push(s)}}}i(g(H.plugins.replace(/\-/g,"")),A);if(H.popup_css!==false){if(H.popup_css){H.popup_css=G.documentBaseURI.toAbsolute(H.popup_css)}else{H.popup_css=G.baseURI.toAbsolute("themes/"+H.theme+"/skins/"+H.skin+"/dialog.css")}}if(H.popup_css_add){H.popup_css+=","+G.documentBaseURI.toAbsolute(H.popup_css_add)}G.controlManager=new k.ControlManager(G);G.onBeforeRenderUI.dispatch(G,G.controlManager);if(H.render_ui&&G.theme){G.orgDisplay=C.style.display;if(typeof H.theme!="function"){D=H.width||C.style.width||C.offsetWidth;y=H.height||C.style.height||C.offsetHeight;z=H.min_height||100;F=/^[0-9\.]+(|px)$/i;if(F.test(""+D)){D=Math.max(parseInt(D,10)+(p.deltaWidth||0),100)}if(F.test(""+y)){y=Math.max(parseInt(y,10)+(p.deltaHeight||0),z)}p=G.theme.renderUI({targetNode:C,width:D,height:y,deltaWidth:H.delta_width,deltaHeight:H.delta_height});l.setStyles(p.sizeContainer||p.editorContainer,{width:D,height:y});y=(p.iframeHeight||y)+(typeof(y)=="number"?(p.deltaHeight||0):"");if(y<z){y=z}}else{p=H.theme(G,C);if(p.editorContainer.nodeType){p.editorContainer=p.editorContainer.id=p.editorContainer.id||G.id+"_parent"}if(p.iframeContainer.nodeType){p.iframeContainer=p.iframeContainer.id=p.iframeContainer.id||G.id+"_iframecontainer"}y=p.iframeHeight||C.offsetHeight;if(b){G.onInit.add(function(n){n.dom.bind(n.getBody(),"beforedeactivate keydown",function(){n.lastIERng=n.selection.getRng()})})}}G.editorContainer=p.editorContainer}if(H.content_css){i(g(H.content_css),function(n){G.contentCSS.push(G.documentBaseURI.toAbsolute(n))})}if(H.content_style){G.contentStyles.push(H.content_style)}if(H.content_editable){C=q=p=null;return G.initContentBody()}if(document.domain&&location.hostname!=document.domain){k.relaxedDomain=document.domain}G.iframeHTML=H.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml">';if(H.document_base_url!=k.documentBaseURL){G.iframeHTML+='<base href="'+G.documentBaseURI.getURI()+'" />'}if(H.ie7_compat){G.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'}else{G.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=edge" />'}G.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(x=0;x<G.contentCSS.length;x++){G.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+G.contentCSS[x]+'" />'}G.contentCSS=[];v=H.body_id||"tinymce";if(v.indexOf("=")!=-1){v=G.getParam("body_id","","hash");v=v[G.id]||v}B=H.body_class||"";if(B.indexOf("=")!=-1){B=G.getParam("body_class","","hash");B=B[G.id]||""}G.iframeHTML+='</head><body id="'+v+'" class="mceContentBody '+B+'" onload="window.parent.tinyMCE.get(\''+G.id+"').onLoad.dispatch();\"><br></body></html>";if(k.relaxedDomain&&(b||(k.isOpera&&parseFloat(opera.version())<11))){E='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+G.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody();})()'}q=l.add(p.iframeContainer,"iframe",{id:G.id+"_ifr",src:E||'javascript:""',frameBorder:"0",allowTransparency:"true",title:H.aria_label,style:{width:"100%",height:y,display:"block"}});G.contentAreaContainer=p.iframeContainer;if(p.editorContainer){l.get(p.editorContainer).style.display=G.orgDisplay}C.style.visibility=G.orgVisibility;l.get(G.id).style.display="none";l.setAttrib(G.id,"aria-hidden",true);if(!k.relaxedDomain||!E){G.initContentBody()}C=q=p=null},initContentBody:function(){var n=this,p=n.settings,q=l.get(n.id),r=n.getDoc(),o,m,s;if((!b||!k.relaxedDomain)&&!p.content_editable){r.open();r.write(n.iframeHTML);r.close();if(k.relaxedDomain){r.domain=k.relaxedDomain}}if(p.content_editable){l.addClass(q,"mceContentBody");n.contentDocument=r=p.content_document||document;n.contentWindow=p.content_window||window;n.bodyElement=q;p.content_document=p.content_window=null}m=n.getBody();m.disabled=true;if(!p.readonly){m.contentEditable=n.getParam("content_editable_state",true)}m.disabled=false;n.schema=new k.html.Schema(p);n.dom=new k.dom.DOMUtils(r,{keep_values:true,url_converter:n.convertURL,url_converter_scope:n,hex_colors:p.force_hex_style_colors,class_filter:p.class_filter,update_styles:true,root_element:p.content_editable?n.id:null,schema:n.schema});n.parser=new k.html.DomParser(p,n.schema);n.parser.addAttributeFilter("src,href,style",function(t,u){var v=t.length,y,A=n.dom,z,x;while(v--){y=t[v];z=y.attr(u);x="data-mce-"+u;if(!y.attributes.map[x]){if(u==="style"){y.attr(x,A.serializeStyle(A.parseStyle(z),y.name))}else{y.attr(x,n.convertURL(z,u,y.name))}}}});n.parser.addNodeFilter("script",function(t,u){var v=t.length,x;while(v--){x=t[v];x.attr("type","mce-"+(x.attr("type")||"text/javascript"))}});n.parser.addNodeFilter("#cdata",function(t,u){var v=t.length,x;while(v--){x=t[v];x.type=8;x.name="#comment";x.value="[CDATA["+x.value+"]]"}});n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(u,v){var x=u.length,y,t=n.schema.getNonEmptyElements();while(x--){y=u[x];if(y.isEmpty(t)){y.empty().append(new k.html.Node("br",1)).shortEnded=true}}});n.serializer=new k.dom.Serializer(p,n.dom,n.schema);n.selection=new k.dom.Selection(n.dom,n.getWin(),n.serializer,n);n.formatter=new k.Formatter(n);n.undoManager=new k.UndoManager(n);n.forceBlocks=new k.ForceBlocks(n);n.enterKey=new k.EnterKey(n);n.editorCommands=new k.EditorCommands(n);n.onExecCommand.add(function(t,u){if(!/^(FontName|FontSize)$/.test(u)){n.nodeChanged()}});n.serializer.onPreProcess.add(function(t,u){return n.onPreProcess.dispatch(n,u,t)});n.serializer.onPostProcess.add(function(t,u){return n.onPostProcess.dispatch(n,u,t)});n.onPreInit.dispatch(n);if(!p.browser_spellcheck&&!p.gecko_spellcheck){r.body.spellcheck=false}if(!p.readonly){n.bindNativeEvents()}n.controlManager.onPostRender.dispatch(n,n.controlManager);n.onPostRender.dispatch(n);n.quirks=k.util.Quirks(n);if(p.directionality){m.dir=p.directionality}if(p.nowrap){m.style.whiteSpace="nowrap"}if(p.protect){n.onBeforeSetContent.add(function(t,u){i(p.protect,function(v){u.content=u.content.replace(v,function(x){return"<!--mce:protected "+escape(x)+"-->"})})})}n.onSetContent.add(function(){n.addVisual(n.getBody())});if(p.padd_empty_editor){n.onPostProcess.add(function(t,u){u.content=u.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}n.load({initial:true,format:"html"});n.startContent=n.getContent({format:"raw"});n.initialized=true;n.onInit.dispatch(n);n.execCallback("setupcontent_callback",n.id,m,r);n.execCallback("init_instance_callback",n);n.focus(true);n.nodeChanged({initial:true});if(n.contentStyles.length>0){s="";i(n.contentStyles,function(t){s+=t+"\r\n"});n.dom.addStyle(s)}i(n.contentCSS,function(t){n.dom.loadCSS(t)});if(p.auto_focus){setTimeout(function(){var t=k.get(p.auto_focus);t.selection.select(t.getBody(),1);t.selection.collapse(1);t.getBody().focus();t.getWin().focus()},100)}q=r=m=null},focus:function(p){var o,u=this,t=u.selection,q=u.settings.content_editable,n,r,s=u.getDoc(),m;if(!p){if(u.lastIERng){t.setRng(u.lastIERng)}n=t.getRng();if(n.item){r=n.item(0)}u._refreshContentEditable();if(!q){u.getWin().focus()}if(k.isGecko||q){m=u.getBody();if(m.setActive){m.setActive()}else{m.focus()}if(q){t.normalize()}}if(r&&r.ownerDocument==s){n=s.body.createControlRange();n.addElement(r);n.select()}}if(k.activeEditor!=u){if((o=k.activeEditor)!=null){o.onDeactivate.dispatch(o,u)}u.onActivate.dispatch(u,o)}k._setActive(u)},execCallback:function(q){var m=this,p=m.settings[q],o;if(!p){return}if(m.callbackLookup&&(o=m.callbackLookup[q])){p=o.func;o=o.scope}if(d(p,"string")){o=p.replace(/\.\w+$/,"");o=o?k.resolve(o):0;p=k.resolve(p);m.callbackLookup=m.callbackLookup||{};m.callbackLookup[q]={func:p,scope:o}}return p.apply(o||m,Array.prototype.slice.call(arguments,1))},translate:function(m){var o=this.settings.language||"en",n=k.i18n;if(!m){return""}return n[o+"."+m]||m.replace(/\{\#([^\}]+)\}/g,function(q,p){return n[o+"."+p]||"{#"+p+"}"})},getLang:function(o,m){return k.i18n[(this.settings.language||"en")+"."+o]||(d(m)?m:"{#"+o+"}")},getParam:function(t,q,m){var r=k.trim,p=d(this.settings[t])?this.settings[t]:q,s;if(m==="hash"){s={};if(d(p,"string")){i(p.indexOf("=")>0?p.split(/[;,](?![^=;,]*(?:[;,]|$))/):p.split(","),function(n){n=n.split("=");if(n.length>1){s[r(n[0])]=r(n[1])}else{s[r(n[0])]=r(n)}})}else{s=p}return s}return p},nodeChanged:function(q){var m=this,n=m.selection,p;if(m.initialized){q=q||{};p=n.getStart()||m.getBody();p=b&&p.ownerDocument!=m.getDoc()?m.getBody():p;q.parents=[];m.dom.getParent(p,function(o){if(o.nodeName=="BODY"){return true}q.parents.push(o)});m.onNodeChange.dispatch(m,q?q.controlManager||m.controlManager:m.controlManager,p,n.isCollapsed(),q)}},addButton:function(n,o){var m=this;m.buttons=m.buttons||{};m.buttons[n]=o},addCommand:function(m,o,n){this.execCommands[m]={func:o,scope:n||this}},addQueryStateHandler:function(m,o,n){this.queryStateCommands[m]={func:o,scope:n||this}},addQueryValueHandler:function(m,o,n){this.queryValueCommands[m]={func:o,scope:n||this}},addShortcut:function(o,q,m,p){var n=this,r;if(n.settings.custom_shortcuts===false){return false}n.shortcuts=n.shortcuts||{};if(d(m,"string")){r=m;m=function(){n.execCommand(r,false,null)}}if(d(m,"object")){r=m;m=function(){n.execCommand(r[0],r[1],r[2])}}i(g(o),function(s){var t={func:m,scope:p||this,desc:n.translate(q),alt:false,ctrl:false,shift:false};i(g(s,"+"),function(u){switch(u){case"alt":case"ctrl":case"shift":t[u]=true;break;default:t.charCode=u.charCodeAt(0);t.keyCode=u.toUpperCase().charCodeAt(0)}});n.shortcuts[(t.ctrl?"ctrl":"")+","+(t.alt?"alt":"")+","+(t.shift?"shift":"")+","+t.keyCode]=t});return true},execCommand:function(u,r,x,m){var p=this,q=0,v,n;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(u)&&(!m||!m.skip_focus)){p.focus()}m=f({},m);p.onBeforeExecCommand.dispatch(p,u,r,x,m);if(m.terminate){return false}if(p.execCallback("execcommand_callback",p.id,p.selection.getNode(),u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}if(v=p.execCommands[u]){n=v.func.call(v.scope,r,x);if(n!==true){p.onExecCommand.dispatch(p,u,r,x,m);return n}}i(p.plugins,function(o){if(o.execCommand&&o.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);q=1;return false}});if(q){return true}if(p.theme&&p.theme.execCommand&&p.theme.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}if(p.editorCommands.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}p.getDoc().execCommand(u,r,x);p.onExecCommand.dispatch(p,u,r,x,m)},queryCommandState:function(q){var n=this,r,p;if(n._isHidden()){return}if(r=n.queryStateCommands[q]){p=r.func.call(r.scope);if(p!==true){return p}}r=n.editorCommands.queryCommandState(q);if(r!==-1){return r}try{return this.getDoc().queryCommandState(q)}catch(m){}},queryCommandValue:function(r){var n=this,q,p;if(n._isHidden()){return}if(q=n.queryValueCommands[r]){p=q.func.call(q.scope);if(p!==true){return p}}q=n.editorCommands.queryCommandValue(r);if(d(q)){return q}try{return this.getDoc().queryCommandValue(r)}catch(m){}},show:function(){var m=this;l.show(m.getContainer());l.hide(m.id);m.load()},hide:function(){var m=this,n=m.getDoc();if(b&&n){n.execCommand("SelectAll")}m.save();l.hide(m.getContainer());l.setStyle(m.id,"display",m.orgDisplay)},isHidden:function(){return !l.isHidden(this.id)},setProgressState:function(m,n,p){this.onSetProgressState.dispatch(this,m,n,p);return m},load:function(q){var m=this,p=m.getElement(),n;if(p){q=q||{};q.load=true;n=m.setContent(d(p.value)?p.value:p.innerHTML,q);q.element=p;if(!q.no_events){m.onLoadContent.dispatch(m,q)}q.element=p=null;return n}},save:function(r){var m=this,q=m.getElement(),n,p;if(!q||!m.initialized){return}r=r||{};r.save=true;r.element=q;n=r.content=m.getContent(r);if(!r.no_events){m.onSaveContent.dispatch(m,r)}n=r.content;if(!/TEXTAREA|INPUT/i.test(q.nodeName)){q.innerHTML=n;if(p=l.getParent(m.id,"form")){i(p.elements,function(o){if(o.name==m.id){o.value=n;return false}})}}else{q.value=n}r.element=q=null;return n},setContent:function(r,p){var o=this,n,m=o.getBody(),q;p=p||{};p.format=p.format||"html";p.set=true;p.content=r;if(!p.no_events){o.onBeforeSetContent.dispatch(o,p)}r=p.content;if(!k.isIE&&(r.length===0||/^\s+$/.test(r))){q=o.settings.forced_root_block;if(q){r="<"+q+'><br data-mce-bogus="1"></'+q+">"}else{r='<br data-mce-bogus="1">'}m.innerHTML=r;o.selection.select(m,true);o.selection.collapse(true);return}if(p.format!=="raw"){r=new k.html.Serializer({},o.schema).serialize(o.parser.parse(r))}p.content=k.trim(r);o.dom.setHTML(m,p.content);if(!p.no_events){o.onSetContent.dispatch(o,p)}if(!o.settings.content_editable||document.activeElement===o.getBody()){o.selection.normalize()}return p.content},getContent:function(o){var n=this,p,m=n.getBody();o=o||{};o.format=o.format||"html";o.get=true;o.getInner=true;if(!o.no_events){n.onBeforeGetContent.dispatch(n,o)}if(o.format=="raw"){p=m.innerHTML}else{if(o.format=="text"){p=m.innerText||m.textContent}else{p=n.serializer.serialize(m,o)}}if(o.format!="text"){o.content=k.trim(p)}else{o.content=p}if(!o.no_events){n.onGetContent.dispatch(n,o)}return o.content},isDirty:function(){var m=this;return k.trim(m.startContent)!=k.trim(m.getContent({format:"raw",no_events:1}))&&!m.isNotDirty},getContainer:function(){var m=this;if(!m.container){m.container=l.get(m.editorContainer||m.id+"_parent")}return m.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return l.get(this.settings.content_element||this.id)},getWin:function(){var m=this,n;if(!m.contentWindow){n=l.get(m.id+"_ifr");if(n){m.contentWindow=n.contentWindow}}return m.contentWindow},getDoc:function(){var m=this,n;if(!m.contentDocument){n=m.getWin();if(n){m.contentDocument=n.document}}return m.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(o,n,q){var m=this,p=m.settings;if(p.urlconverter_callback){return m.execCallback("urlconverter_callback",o,q,true,n)}if(!p.convert_urls||(q&&q.nodeName=="LINK")||o.indexOf("file:")===0){return o}if(p.relative_urls){return m.documentBaseURI.toRelative(o)}o=m.documentBaseURI.toAbsolute(o,p.remove_script_host);return o},addVisual:function(q){var n=this,o=n.settings,p=n.dom,m;q=q||n.getBody();if(!d(n.hasVisual)){n.hasVisual=o.visual}i(p.select("table,a",q),function(s){var r;switch(s.nodeName){case"TABLE":m=o.visual_table_class||"mceItemTable";r=p.getAttrib(s,"border");if(!r||r=="0"){if(n.hasVisual){p.addClass(s,m)}else{p.removeClass(s,m)}}return;case"A":if(!p.getAttrib(s,"href",false)){r=p.getAttrib(s,"name")||s.id;m="mceItemAnchor";if(r){if(n.hasVisual){p.addClass(s,m)}else{p.removeClass(s,m)}}}return}});n.onVisualAid.dispatch(n,q,n.hasVisual)},remove:function(){var m=this,n=m.getContainer();if(!m.removed){m.removed=1;m.hide();if(!m.settings.content_editable){j.unbind(m.getWin());j.unbind(m.getDoc())}j.unbind(m.getBody());j.clear(n);m.execCallback("remove_instance_callback",m);m.onRemove.dispatch(m);m.onExecCommand.listeners=[];k.remove(m);l.remove(n)}},destroy:function(n){var m=this;if(m.destroyed){return}if(a){j.unbind(m.getDoc());j.unbind(m.getWin());j.unbind(m.getBody())}if(!n){k.removeUnload(m.destroy);tinyMCE.onBeforeUnload.remove(m._beforeUnload);if(m.theme&&m.theme.destroy){m.theme.destroy()}m.controlManager.destroy();m.selection.destroy();m.dom.destroy()}if(m.formElement){m.formElement.submit=m.formElement._mceOldSubmit;m.formElement._mceOldSubmit=null}m.contentAreaContainer=m.formElement=m.container=m.settings.content_element=m.bodyElement=m.contentDocument=m.contentWindow=null;if(m.selection){m.selection=m.selection.win=m.selection.dom=m.selection.dom.doc=null}m.destroyed=1},_refreshContentEditable:function(){var n=this,m,o;if(n._isHidden()){m=n.getBody();o=m.parentNode;o.removeChild(m);o.appendChild(m);m.focus()}},_isHidden:function(){var m;if(!a){return 0}m=this.selection.getSel();return(!m||!m.rangeCount||m.rangeCount===0)}})})(tinymce);(function(a){var b=a.each;a.Editor.prototype.setupEvents=function(){var c=this,d=c.settings;b(["onPreInit","onBeforeRenderUI","onPostRender","onLoad","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState","onSetAttrib"],function(e){c[e]=new a.util.Dispatcher(c)});if(d.cleanup_callback){c.onBeforeSetContent.add(function(e,f){f.content=e.execCallback("cleanup_callback","insert_to_editor",f.content,f)});c.onPreProcess.add(function(e,f){if(f.set){e.execCallback("cleanup_callback","insert_to_editor_dom",f.node,f)}if(f.get){e.execCallback("cleanup_callback","get_from_editor_dom",f.node,f)}});c.onPostProcess.add(function(e,f){if(f.set){f.content=e.execCallback("cleanup_callback","insert_to_editor",f.content,f)}if(f.get){f.content=e.execCallback("cleanup_callback","get_from_editor",f.content,f)}})}if(d.save_callback){c.onGetContent.add(function(e,f){if(f.save){f.content=e.execCallback("save_callback",e.id,f.content,e.getBody())}})}if(d.handle_event_callback){c.onEvent.add(function(f,g,h){if(c.execCallback("handle_event_callback",g,f,h)===false){g.preventDefault();g.stopPropagation()}})}if(d.handle_node_change_callback){c.onNodeChange.add(function(f,e,g){f.execCallback("handle_node_change_callback",f.id,g,-1,-1,true,f.selection.isCollapsed())})}if(d.save_callback){c.onSaveContent.add(function(e,g){var f=e.execCallback("save_callback",e.id,g.content,e.getBody());if(f){g.content=f}})}if(d.onchange_callback){c.onChange.add(function(f,e){f.execCallback("onchange_callback",f,e)})}};a.Editor.prototype.bindNativeEvents=function(){var l=this,f,d=l.settings,e=l.dom,h;h={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function c(i,m){var n=i.type;if(l.removed){return}if(l.onEvent.dispatch(l,i,m)!==false){l[h[i.fakeType||i.type]].dispatch(l,i,m)}}function j(i){l.focus(true)}function k(i,m){if(m.keyCode!=65||!a.VK.metaKeyPressed(m)){l.selection.normalize()}l.nodeChanged()}b(h,function(m,n){var i=d.content_editable?l.getBody():l.getDoc();switch(n){case"contextmenu":e.bind(i,n,c);break;case"paste":e.bind(l.getBody(),n,c);break;case"submit":case"reset":e.bind(l.getElement().form||a.DOM.getParent(l.id,"form"),n,c);break;default:e.bind(i,n,c)}});e.bind(d.content_editable?l.getBody():(a.isGecko?l.getDoc():l.getWin()),"focus",function(i){l.focus(true)});if(d.content_editable&&a.isOpera){e.bind(l.getBody(),"click",j);e.bind(l.getBody(),"keydown",j)}l.onMouseUp.add(k);l.onKeyUp.add(function(i,n){var m=n.keyCode;if((m>=33&&m<=36)||(m>=37&&m<=40)||m==13||m==45||m==46||m==8||(a.isMac&&(m==91||m==93))||n.ctrlKey){k(i,n)}});l.onReset.add(function(){l.setContent(l.startContent,{format:"raw"})});function g(m,i){if(m.altKey||m.ctrlKey||m.metaKey){b(l.shortcuts,function(n){var o=a.isMac?m.metaKey:m.ctrlKey;if(n.ctrl!=o||n.alt!=m.altKey||n.shift!=m.shiftKey){return}if(m.keyCode==n.keyCode||(m.charCode&&m.charCode==n.charCode)){m.preventDefault();if(i){n.func.call(n.scope)}return true}})}}l.onKeyUp.add(function(i,m){g(m)});l.onKeyPress.add(function(i,m){g(m)});l.onKeyDown.add(function(i,m){g(m,true)});if(a.isOpera){l.onClick.add(function(i,m){m.preventDefault()})}}})(tinymce);(function(d){var e=d.each,b,a=true,c=false;d.EditorCommands=function(n){var m=n.dom,p=n.selection,j={state:{},exec:{},value:{}},k=n.settings,q=n.formatter,o;function r(z,y,x){var v;z=z.toLowerCase();if(v=j.exec[z]){v(z,y,x);return a}return c}function l(x){var v;x=x.toLowerCase();if(v=j.state[x]){return v(x)}return -1}function h(x){var v;x=x.toLowerCase();if(v=j.value[x]){return v(x)}return c}function u(v,x){x=x||"exec";e(v,function(z,y){e(y.toLowerCase().split(","),function(A){j[x][A]=z})})}d.extend(this,{execCommand:r,queryCommandState:l,queryCommandValue:h,addCommands:u});function f(y,x,v){if(x===b){x=c}if(v===b){v=null}return n.getDoc().execCommand(y,x,v)}function t(v){return q.match(v)}function s(v,x){q.toggle(v,x?{value:x}:b)}function i(v){o=p.getBookmark(v)}function g(){p.moveToBookmark(o)}u({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(z){var y=n.getDoc(),v;try{f(z)}catch(x){v=a}if(v||!y.queryCommandSupported(z)){if(d.isGecko){n.windowManager.confirm(n.getLang("clipboard_msg"),function(A){if(A){open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","_blank")}})}else{n.windowManager.alert(n.getLang("clipboard_no_support"))}}},unlink:function(v){if(p.isCollapsed()){p.select(p.getNode())}f(v);p.collapse(c)},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(v){var x=v.substring(7);e("left,center,right,full".split(","),function(y){if(x!=y){q.remove("align"+y)}});s("align"+x);r("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(y){var v,x;f(y);v=m.getParent(p.getNode(),"ol,ul");if(v){x=v.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(x.nodeName)){i();m.split(x,v);g()}}},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){s(v)},"ForeColor,HiliteColor,FontName":function(y,x,v){s(y,v)},FontSize:function(z,y,x){var v,A;if(x>=1&&x<=7){A=d.explode(k.font_size_style_values);v=d.explode(k.font_size_classes);if(v){x=v[x-1]||x}else{x=A[x-1]||x}}s(z,x)},RemoveFormat:function(v){q.remove(v)},mceBlockQuote:function(v){s("blockquote")},FormatBlock:function(y,x,v){return s(v||"p")},mceCleanup:function(){var v=p.getBookmark();n.setContent(n.getContent({cleanup:a}),{cleanup:a});p.moveToBookmark(v)},mceRemoveNode:function(z,y,x){var v=x||p.getNode();if(v!=n.getBody()){i();n.dom.remove(v,a);g()}},mceSelectNodeDepth:function(z,y,x){var v=0;m.getParent(p.getNode(),function(A){if(A.nodeType==1&&v++==x){p.select(A);return c}},n.getBody())},mceSelectNode:function(y,x,v){p.select(v)},mceInsertContent:function(B,I,K){var y,J,E,z,F,G,D,C,L,x,A,M,v,H;y=n.parser;J=new d.html.Serializer({},n.schema);v='<span id="mce_marker" data-mce-type="bookmark">\uFEFF</span>';G={content:K,format:"html"};p.onBeforeSetContent.dispatch(p,G);K=G.content;if(K.indexOf("{$caret}")==-1){K+="{$caret}"}K=K.replace(/\{\$caret\}/,v);if(!p.isCollapsed()){n.getDoc().execCommand("Delete",false,null)}E=p.getNode();G={context:E.nodeName.toLowerCase()};F=y.parse(K,G);A=F.lastChild;if(A.attr("id")=="mce_marker"){D=A;for(A=A.prev;A;A=A.walk(true)){if(A.type==3||!m.isBlock(A.name)){A.parent.insert(D,A,A.name==="br");break}}}if(!G.invalid){K=J.serialize(F);A=E.firstChild;M=E.lastChild;if(!A||(A===M&&A.nodeName==="BR")){m.setHTML(E,K)}else{p.setContent(K)}}else{p.setContent(v);E=p.getNode();z=n.getBody();if(E.nodeType==9){E=A=z}else{A=E}while(A!==z){E=A;A=A.parentNode}K=E==z?z.innerHTML:m.getOuterHTML(E);K=J.serialize(y.parse(K.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return J.serialize(F)})));if(E==z){m.setHTML(z,K)}else{m.setOuterHTML(E,K)}}D=m.get("mce_marker");C=m.getRect(D);L=m.getViewPort(n.getWin());if((C.y+C.h>L.y+L.h||C.y<L.y)||(C.x>L.x+L.w||C.x<L.x)){H=d.isIE?n.getDoc().documentElement:n.getBody();H.scrollLeft=C.x;H.scrollTop=C.y-L.h+25}x=m.createRng();A=D.previousSibling;if(A&&A.nodeType==3){x.setStart(A,A.nodeValue.length)}else{x.setStartBefore(D);x.setEndBefore(D)}m.remove(D);p.setRng(x);p.onSetContent.dispatch(p,G);n.addVisual()},mceInsertRawHTML:function(y,x,v){p.setContent("tiny_mce_marker");n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return v}))},mceToggleFormat:function(y,x,v){s(v)},mceSetContent:function(y,x,v){n.setContent(v)},"Indent,Outdent":function(z){var x,v,y;x=k.indentation;v=/[a-z%]+$/i.exec(x);x=parseInt(x);if(!l("InsertUnorderedList")&&!l("InsertOrderedList")){if(!k.forced_root_block&&!m.getParent(p.getNode(),m.isBlock)){q.apply("div")}e(p.getSelectedBlocks(),function(A){if(z=="outdent"){y=Math.max(0,parseInt(A.style.paddingLeft||0)-x);m.setStyle(A,"paddingLeft",y?y+v:"")}else{m.setStyle(A,"paddingLeft",(parseInt(A.style.paddingLeft||0)+x)+v)}})}else{f(z)}},mceRepaint:function(){var x;if(d.isGecko){try{i(a);if(p.getSel()){p.getSel().selectAllChildren(n.getBody())}p.collapse(a);g()}catch(v){}}},mceToggleFormat:function(y,x,v){q.toggle(v)},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",false,"<hr />")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual;n.addVisual()},mceReplaceContent:function(y,x,v){n.execCommand("mceInsertContent",false,v.replace(/\{\$selection\}/g,p.getContent({format:"text"})))},mceInsertLink:function(z,y,x){var v;if(typeof(x)=="string"){x={href:x}}v=m.getParent(p.getNode(),"a");x.href=x.href.replace(" ","%20");if(!v||!x.href){q.remove("link")}if(x.href){q.apply("link",x,v)}},selectAll:function(){var x=m.getRoot(),v=m.createRng();if(p.getRng().setStart){v.setStart(x,0);v.setEnd(x,x.childNodes.length);p.setRng(v)}else{f("SelectAll")}}});u({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(z){var x="align"+z.substring(7);var v=p.isCollapsed()?[m.getParent(p.getNode(),m.isBlock)]:p.getSelectedBlocks();var y=d.map(v,function(A){return !!q.matchNode(A,x)});return d.inArray(y,a)!==-1},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){return t(v)},mceBlockQuote:function(){return t("blockquote")},Outdent:function(){var v;if(k.inline_styles){if((v=m.getParent(p.getStart(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}if((v=m.getParent(p.getEnd(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}}return l("InsertUnorderedList")||l("InsertOrderedList")||(!k.inline_styles&&!!m.getParent(p.getNode(),"BLOCKQUOTE"))},"InsertUnorderedList,InsertOrderedList":function(x){var v=m.getParent(p.getNode(),"ul,ol");return v&&(x==="insertunorderedlist"&&v.tagName==="UL"||x==="insertorderedlist"&&v.tagName==="OL")}},"state");u({"FontSize,FontName":function(y){var x=0,v;if(v=m.getParent(p.getNode(),"span")){if(y=="fontsize"){x=v.style.fontSize}else{x=v.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return x}},"value");u({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}})(tinymce);(function(b){var a=b.util.Dispatcher;b.UndoManager=function(h){var l,i=0,e=[],g,k,j,f;function c(){return b.trim(h.getContent({format:"raw",no_events:1}).replace(/<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\/span>/g,""))}function d(){l.typing=false;l.add()}onBeforeAdd=new a(l);k=new a(l);j=new a(l);f=new a(l);k.add(function(m,n){if(m.hasUndo()){return h.onChange.dispatch(h,n,m)}});j.add(function(m,n){return h.onUndo.dispatch(h,n,m)});f.add(function(m,n){return h.onRedo.dispatch(h,n,m)});h.onInit.add(function(){l.add()});h.onBeforeExecCommand.add(function(m,p,o,q,n){if(p!="Undo"&&p!="Redo"&&p!="mceRepaint"&&(!n||!n.skip_undo)){l.beforeChange()}});h.onExecCommand.add(function(m,p,o,q,n){if(p!="Undo"&&p!="Redo"&&p!="mceRepaint"&&(!n||!n.skip_undo)){l.add()}});h.onSaveContent.add(d);h.dom.bind(h.dom.getRoot(),"dragend",d);h.dom.bind(h.getDoc(),b.isGecko?"blur":"focusout",function(m){if(!h.removed&&l.typing){d()}});h.onKeyUp.add(function(m,o){var n=o.keyCode;if((n>=33&&n<=36)||(n>=37&&n<=40)||n==45||n==13||o.ctrlKey){d()}});h.onKeyDown.add(function(m,o){var n=o.keyCode;if((n>=33&&n<=36)||(n>=37&&n<=40)||n==45){if(l.typing){d()}return}if((n<16||n>20)&&n!=224&&n!=91&&!l.typing){l.beforeChange();l.typing=true;l.add()}});h.onMouseDown.add(function(m,n){if(l.typing){d()}});h.addShortcut("ctrl+z","undo_desc","Undo");h.addShortcut("ctrl+y","redo_desc","Redo");l={data:e,typing:false,onBeforeAdd:onBeforeAdd,onAdd:k,onUndo:j,onRedo:f,beforeChange:function(){g=h.selection.getBookmark(2,true)},add:function(p){var m,n=h.settings,o;p=p||{};p.content=c();l.onBeforeAdd.dispatch(l,p);o=e[i];if(o&&o.content==p.content){return null}if(e[i]){e[i].beforeBookmark=g}if(n.custom_undo_redo_levels){if(e.length>n.custom_undo_redo_levels){for(m=0;m<e.length-1;m++){e[m]=e[m+1]}e.length--;i=e.length}}p.bookmark=h.selection.getBookmark(2,true);if(i<e.length-1){e.length=i+1}e.push(p);i=e.length-1;l.onAdd.dispatch(l,p);h.isNotDirty=0;return p},undo:function(){var n,m;if(l.typing){l.add();l.typing=false}if(i>0){n=e[--i];h.setContent(n.content,{format:"raw"});h.selection.moveToBookmark(n.beforeBookmark);l.onUndo.dispatch(l,n)}return n},redo:function(){var m;if(i<e.length-1){m=e[++i];h.setContent(m.content,{format:"raw"});h.selection.moveToBookmark(m.bookmark);l.onRedo.dispatch(l,m)}return m},clear:function(){e=[];i=0;l.typing=false},hasUndo:function(){return i>0||this.typing},hasRedo:function(){return i<e.length-1&&!this.typing}};return l}})(tinymce);tinymce.ForceBlocks=function(c){var b=c.settings,e=c.dom,a=c.selection,d=c.schema.getBlockElements();function f(){var j=a.getStart(),h=c.getBody(),g,k,o,s,q,i,l,m=-16777215,p,r;if(!j||j.nodeType!==1||!b.forced_root_block){return}while(j&&j!=h){if(d[j.nodeName]){return}j=j.parentNode}g=a.getRng();if(g.setStart){k=g.startContainer;o=g.startOffset;s=g.endContainer;q=g.endOffset}else{if(g.item){j=g.item(0);g=c.getDoc().body.createTextRange();g.moveToElementText(j)}r=g.parentElement().ownerDocument===c.getDoc();tmpRng=g.duplicate();tmpRng.collapse(true);o=tmpRng.move("character",m)*-1;if(!tmpRng.collapsed){tmpRng=g.duplicate();tmpRng.collapse(false);q=(tmpRng.move("character",m)*-1)-o}}j=h.firstChild;while(j){if(j.nodeType===3||(j.nodeType==1&&!d[j.nodeName])){if(j.nodeType===3&&j.nodeValue.length==0){l=j;j=j.nextSibling;e.remove(l);continue}if(!i){i=e.create(b.forced_root_block);j.parentNode.insertBefore(i,j);p=true}l=j;j=j.nextSibling;i.appendChild(l)}else{i=null;j=j.nextSibling}}if(p){if(g.setStart){g.setStart(k,o);g.setEnd(s,q);a.setRng(g)}else{if(r){try{g=c.getDoc().body.createTextRange();g.moveToElementText(h);g.collapse(true);g.moveStart("character",o);if(q>0){g.moveEnd("character",q)}g.select()}catch(n){}}}c.nodeChanged()}}if(b.forced_root_block){c.onKeyUp.add(f);c.onNodeChange.add(f)}};(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(j){var o,k,g,h=this,m=h.editor,n,f;if(!h.controlFactories){h.controlFactories=[];d(m.plugins,function(i){if(i.createControl){h.controlFactories.push(i)}})}n=h.controlFactories;for(k=0,g=n.length;k<g;k++){o=n[k].createControl(j,h);if(o){return h.add(o)}}if(j==="|"||j==="separator"){return h.createSeparator()}if(m.buttons&&(o=m.buttons[j])){return h.createButton(j,o)}return h.add(o)},createDropMenu:function(f,n,h){var m=this,i=m.editor,j,g,k,l;n=e({"class":"mceDropDown",constrain:i.settings.constrain_menus},n);n["class"]=n["class"]+" "+i.getParam("skin")+"Skin";if(k=i.getParam("skin_variant")){n["class"]+=" "+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)}n["class"]+=i.settings.directionality=="rtl"?" mceRtl":"";f=m.prefix+f;l=h||m._cls.dropmenu||c.ui.DropMenu;j=m.controls[f]=new l(f,n);j.onAddItem.add(function(r,q){var p=q.settings;p.title=i.getLang(p.title,p.title);if(!p.onclick){p.onclick=function(o){if(p.cmd){i.execCommand(p.cmd,p.ui||false,p.value)}}}});i.onRemove.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.focus();g=i.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){i.selection.moveToBookmark(g);g=0}})}return m.add(j)},createListBox:function(f,n,h){var l=this,j=l.editor,i,k,m;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,scope:n.scope,control_manager:l},n);f=l.prefix+f;function g(o){return o.settings.use_accessible_selects&&!c.isGecko}if(j.settings.use_native_selects||g(j)){k=new c.ui.NativeListBox(f,n)}else{m=h||l._cls.listbox||c.ui.ListBox;k=new m(f,n,j)}l.controls[f]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){j.bookmark=j.selection.getBookmark(1)});a.add(o,"focus",function(){j.selection.moveToBookmark(j.bookmark);j.bookmark=null})})}if(k.hideMenu){j.onMouseDown.add(k.hideMenu,k)}return l.add(k)},createButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.label=g.translate(i.label);i.scope=i.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=function(){g.execCommand(i.cmd,i.ui||false,i.value)}}i=e({title:i.title,"class":"mce_"+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_manager:h},i);m=h.prefix+m;if(i.menu_button){f=l||h._cls.menubutton||c.ui.MenuButton;k=new f(m,i,g);g.onMouseDown.add(k.hideMenu,k)}else{f=h._cls.button||c.ui.Button;k=new f(m,i,g)}return h.add(k)},createMenuButton:function(h,f,g){f=f||{};f.menu_button=1;return this.createButton(h,f,g)},createSplitButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onclick){i.onclick=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;f=l||h._cls.splitbutton||c.ui.SplitButton;k=h.add(new f(m,i,g));g.onMouseDown.add(k.hideMenu,k);return k},createColorSplitButton:function(f,n,h){var l=this,j=l.editor,i,k,m,g;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onclick){n.onclick=function(o){if(c.isIE){g=j.selection.getBookmark(1)}j.execCommand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_colors_title:j.getLang("more_colors")},n);f=l.prefix+f;m=h||l._cls.colorsplitbutton||c.ui.ColorSplitButton;k=new m(f,n,j);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destroy()});if(c.isIE){k.onShowMenu.add(function(){j.focus();g=j.selection.getBookmark(1)});k.onHideMenu.add(function(){if(g){j.selection.moveToBookmark(g);g=0}})}return l.add(k)},createToolbar:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||g._cls.toolbar||c.ui.Toolbar;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createToolbarGroup:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||this._cls.toolbarGroup||c.ui.ToolbarGroup;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createSeparator:function(g){var f=g||this._cls.separator||c.ui.Separator;return new f()},setControlType:function(g,f){return this._cls[g.toLowerCase()]=f},destroy:function(){d(this.controls,function(f){f.destroy()});this.controls=null}})})(tinymce);(function(d){var a=d.util.Dispatcher,e=d.each,c=d.isIE,b=d.isOpera;d.create("tinymce.WindowManager",{WindowManager:function(f){var g=this;g.editor=f;g.onOpen=new a(g);g.onClose=new a(g);g.params={};g.features={}},open:function(z,h){var v=this,k="",n,m,i=v.editor.settings.dialog_type=="modal",q,o,j,g=d.DOM.getViewPort(),r;z=z||{};h=h||{};o=b?g.w:screen.width;j=b?g.h:screen.height;z.name=z.name||"mc_"+new Date().getTime();z.width=parseInt(z.width||320);z.height=parseInt(z.height||240);z.resizable=true;z.left=z.left||parseInt(o/2)-(z.width/2);z.top=z.top||parseInt(j/2)-(z.height/2);h.inline=false;h.mce_width=z.width;h.mce_height=z.height;h.mce_auto_focus=z.auto_focus;if(i){if(c){z.center=true;z.help=false;z.dialogWidth=z.width+"px";z.dialogHeight=z.height+"px";z.scroll=z.scrollbars||false}}e(z,function(p,f){if(d.is(p,"boolean")){p=p?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i){k+=(k?";":"")+f+":"+p}else{k+=(k?",":"")+f+"="+p}}});v.features=z;v.params=h;v.onOpen.dispatch(v,z,h);r=z.url||z.file;r=d._addVer(r);try{if(c&&i){q=1;window.showModalDialog(r,window,k)}else{q=window.open(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked"))}},close:function(f){f.close();this.onClose.dispatch(this)},createInstance:function(i,h,g,m,l,k){var j=d.resolve(i);return new j(h,g,m,l,k)},confirm:function(h,f,i,g){g=g||window;f.call(i||this,g.confirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){var i=this;g=g||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.call(j||i)}},resizeBy:function(f,g,h){h.resizeBy(f,g)},_decode:function(f){return d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){a.Formatter=function(aa){var Q={},T=a.each,c=aa.dom,r=aa.selection,t=a.dom.TreeWalker,N=new a.dom.RangeUtils(c),d=aa.schema.isValidChild,H=c.isBlock,m=aa.settings.forced_root_block,s=c.nodeIndex,G="\uFEFF",e=/^(src|href|style)$/,X=false,C=true,P,D,x=c.getContentEditable;function A(ab){return ab instanceof Array}function n(ac,ab){return c.getParents(ac,ab,c.getRoot())}function b(ab){return ab.nodeType===1&&ab.id==="_mce_caret"}function j(){l({alignleft:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"left"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"center"},defaultBlock:"div"},{selector:"img",collapsed:false,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:false,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"right"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"right"}}],alignfull:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"justify"},defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:true},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:true},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},wrap_links:false},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},wrap_links:false},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},link:{inline:"a",selector:"a",remove:"all",split:true,deep:true,onmatch:function(ab){return true},onformat:function(ad,ab,ac){T(ac,function(af,ae){c.setAttrib(ad,ae,af)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike",remove:"all",split:true,expand:false,block_expand:true,deep:true},{selector:"span",attributes:["style","class"],remove:"empty",split:true,expand:false,deep:true},{selector:"*",attributes:["style","class"],split:false,expand:false,deep:true}]});T("p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp".split(/\s/),function(ab){l(ab,{block:ab,remove:"all"})});l(aa.settings.formats)}function W(){aa.addShortcut("ctrl+b","bold_desc","Bold");aa.addShortcut("ctrl+i","italic_desc","Italic");aa.addShortcut("ctrl+u","underline_desc","Underline");for(var ab=1;ab<=6;ab++){aa.addShortcut("ctrl+"+ab,"",["FormatBlock",false,"h"+ab])}aa.addShortcut("ctrl+7","",["FormatBlock",false,"p"]);aa.addShortcut("ctrl+8","",["FormatBlock",false,"div"]);aa.addShortcut("ctrl+9","",["FormatBlock",false,"address"])}function V(ab){return ab?Q[ab]:Q}function l(ab,ac){if(ab){if(typeof(ab)!=="string"){T(ab,function(ae,ad){l(ad,ae)})}else{ac=ac.length?ac:[ac];T(ac,function(ad){if(ad.deep===D){ad.deep=!ad.selector}if(ad.split===D){ad.split=!ad.selector||ad.inline}if(ad.remove===D&&ad.selector&&!ad.inline){ad.remove="none"}if(ad.selector&&ad.inline){ad.mixed=true;ad.block_expand=true}if(typeof(ad.classes)==="string"){ad.classes=ad.classes.split(/\s+/)}});Q[ab]=ac}}}var i=function(ac){var ab;aa.dom.getParent(ac,function(ad){ab=aa.dom.getStyle(ad,"text-decoration");return ab&&ab!=="none"});return ab};var L=function(ab){var ac;if(ab.nodeType===1&&ab.parentNode&&ab.parentNode.nodeType===1){ac=i(ab.parentNode);if(aa.dom.getStyle(ab,"color")&&ac){aa.dom.setStyle(ab,"text-decoration",ac)}else{if(aa.dom.getStyle(ab,"textdecoration")===ac){aa.dom.setStyle(ab,"text-decoration",null)}}}};function Y(ae,al,ag){var ah=V(ae),am=ah[0],ak,ac,aj,ai=r.isCollapsed();function ab(aq,ap){ap=ap||am;if(aq){if(ap.onformat){ap.onformat(aq,ap,al,ag)}T(ap.styles,function(at,ar){c.setStyle(aq,ar,q(at,al))});T(ap.attributes,function(at,ar){c.setAttrib(aq,ar,q(at,al))});T(ap.classes,function(ar){ar=q(ar,al);if(!c.hasClass(aq,ar)){c.addClass(aq,ar)}})}}function af(){function ar(ay,aw){var ax=new t(aw);for(ag=ax.current();ag;ag=ax.prev()){if(ag.childNodes.length>1||ag==ay||ag.tagName=="BR"){return ag}}}var aq=aa.selection.getRng();var av=aq.startContainer;var ap=aq.endContainer;if(av!=ap&&aq.endOffset===0){var au=ar(av,ap);var at=au.nodeType==3?au.length:au.childNodes.length;aq.setEnd(au,at)}return aq}function ad(at,ay,aw,av,aq){var ap=[],ar=-1,ax,aA=-1,au=-1,az;T(at.childNodes,function(aC,aB){if(aC.nodeName==="UL"||aC.nodeName==="OL"){ar=aB;ax=aC;return false}});T(at.childNodes,function(aC,aB){if(aC.nodeName==="SPAN"&&c.getAttrib(aC,"data-mce-type")=="bookmark"){if(aC.id==ay.id+"_start"){aA=aB}else{if(aC.id==ay.id+"_end"){au=aB}}}});if(ar<=0||(aA<ar&&au>ar)){T(a.grep(at.childNodes),aq);return 0}else{az=c.clone(aw,X);T(a.grep(at.childNodes),function(aC,aB){if((aA<ar&&aB<ar)||(aA>ar&&aB>ar)){ap.push(aC);aC.parentNode.removeChild(aC)}});if(aA<ar){at.insertBefore(az,ax)}else{if(aA>ar){at.insertBefore(az,ax.nextSibling)}}av.push(az);T(ap,function(aB){az.appendChild(aB)});return az}}function an(aq,at,aw){var ap=[],av,ar,au=true;av=am.inline||am.block;ar=c.create(av);ab(ar);N.walk(aq,function(ax){var ay;function az(aA){var aF,aD,aB,aC,aE;aE=au;aF=aA.nodeName.toLowerCase();aD=aA.parentNode.nodeName.toLowerCase();if(aA.nodeType===1&&x(aA)){aE=au;au=x(aA)==="true";aC=true}if(g(aF,"br")){ay=0;if(am.block){c.remove(aA)}return}if(am.wrapper&&y(aA,ae,al)){ay=0;return}if(au&&!aC&&am.block&&!am.wrapper&&I(aF)){aA=c.rename(aA,av);ab(aA);ap.push(aA);ay=0;return}if(am.selector){T(ah,function(aG){if("collapsed" in aG&&aG.collapsed!==ai){return}if(c.is(aA,aG.selector)&&!b(aA)){ab(aA,aG);aB=true}});if(!am.inline||aB){ay=0;return}}if(au&&!aC&&d(av,aF)&&d(aD,av)&&!(!aw&&aA.nodeType===3&&aA.nodeValue.length===1&&aA.nodeValue.charCodeAt(0)===65279)&&!b(aA)){if(!ay){ay=c.clone(ar,X);aA.parentNode.insertBefore(ay,aA);ap.push(ay)}ay.appendChild(aA)}else{if(aF=="li"&&at){ay=ad(aA,at,ar,ap,az)}else{ay=0;T(a.grep(aA.childNodes),az);if(aC){au=aE}ay=0}}}T(ax,az)});if(am.wrap_links===false){T(ap,function(ax){function ay(aC){var aB,aA,az;if(aC.nodeName==="A"){aA=c.clone(ar,X);ap.push(aA);az=a.grep(aC.childNodes);for(aB=0;aB<az.length;aB++){aA.appendChild(az[aB])}aC.appendChild(aA)}T(a.grep(aC.childNodes),ay)}ay(ax)})}T(ap,function(az){var ax;function aA(aC){var aB=0;T(aC.childNodes,function(aD){if(!f(aD)&&!K(aD)){aB++}});return aB}function ay(aB){var aD,aC;T(aB.childNodes,function(aE){if(aE.nodeType==1&&!K(aE)&&!b(aE)){aD=aE;return X}});if(aD&&h(aD,am)){aC=c.clone(aD,X);ab(aC);c.replace(aC,aB,C);c.remove(aD,1)}return aC||aB}ax=aA(az);if((ap.length>1||!H(az))&&ax===0){c.remove(az,1);return}if(am.inline||am.wrapper){if(!am.exact&&ax===1){az=ay(az)}T(ah,function(aB){T(c.select(aB.inline,az),function(aD){var aC;if(aB.wrap_links===false){aC=aD.parentNode;do{if(aC.nodeName==="A"){return}}while(aC=aC.parentNode)}Z(aB,al,aD,aB.exact?aD:null)})});if(y(az.parentNode,ae,al)){c.remove(az,1);az=0;return C}if(am.merge_with_parents){c.getParent(az.parentNode,function(aB){if(y(aB,ae,al)){c.remove(az,1);az=0;return C}})}if(az&&am.merge_siblings!==false){az=u(E(az),az);az=u(az,E(az,C))}}})}if(am){if(ag){if(ag.nodeType){ac=c.createRng();ac.setStartBefore(ag);ac.setEndAfter(ag);an(p(ac,ah),null,true)}else{an(ag,null,true)}}else{if(!ai||!am.inline||c.select("td.mceSelected,th.mceSelected").length){var ao=aa.selection.getNode();if(!m&&ah[0].defaultBlock&&!c.getParent(ao,c.isBlock)){Y(ah[0].defaultBlock)}aa.selection.setRng(af());ak=r.getBookmark();an(p(r.getRng(C),ah),ak);if(am.styles&&(am.styles.color||am.styles.textDecoration)){a.walk(ao,L,"childNodes");L(ao)}r.moveToBookmark(ak);R(r.getRng(C));aa.nodeChanged()}else{U("apply",ae,al)}}}}function B(ad,am,af){var ag=V(ad),ao=ag[0],ak,aj,ac,al=true;function ae(av){var au,at,ar,aq,ax,aw;if(av.nodeType===1&&x(av)){ax=al;al=x(av)==="true";aw=true}au=a.grep(av.childNodes);if(al&&!aw){for(at=0,ar=ag.length;at<ar;at++){if(Z(ag[at],am,av,av)){break}}}if(ao.deep){if(au.length){for(at=0,ar=au.length;at<ar;at++){ae(au[at])}if(aw){al=ax}}}}function ah(aq){var ar;T(n(aq.parentNode).reverse(),function(at){var au;if(!ar&&at.id!="_start"&&at.id!="_end"){au=y(at,ad,am);if(au&&au.split!==false){ar=at}}});return ar}function ab(au,aq,aw,az){var aA,ay,ax,at,av,ar;if(au){ar=au.parentNode;for(aA=aq.parentNode;aA&&aA!=ar;aA=aA.parentNode){ay=c.clone(aA,X);for(av=0;av<ag.length;av++){if(Z(ag[av],am,ay,ay)){ay=0;break}}if(ay){if(ax){ay.appendChild(ax)}if(!at){at=ay}ax=ay}}if(az&&(!ao.mixed||!H(au))){aq=c.split(au,aq)}if(ax){aw.parentNode.insertBefore(ax,aw);at.appendChild(aw)}}return aq}function an(aq){return ab(ah(aq),aq,aq,true)}function ai(at){var ar=c.get(at?"_start":"_end"),aq=ar[at?"firstChild":"lastChild"];if(K(aq)){aq=aq[at?"firstChild":"lastChild"]}c.remove(ar,true);return aq}function ap(aq){var at,au,ar;aq=p(aq,ag,C);if(ao.split){at=M(aq,C);au=M(aq);if(at!=au){if(/^(TR|TD)$/.test(at.nodeName)&&at.firstChild){at=(at.nodeName=="TD"?at.firstChild:at.firstChild.firstChild)||at}at=S(at,"span",{id:"_start","data-mce-type":"bookmark"});au=S(au,"span",{id:"_end","data-mce-type":"bookmark"});an(at);an(au);at=ai(C);au=ai()}else{at=au=an(at)}aq.startContainer=at.parentNode;aq.startOffset=s(at);aq.endContainer=au.parentNode;aq.endOffset=s(au)+1}N.walk(aq,function(av){T(av,function(aw){ae(aw);if(aw.nodeType===1&&aa.dom.getStyle(aw,"text-decoration")==="underline"&&aw.parentNode&&i(aw.parentNode)==="underline"){Z({deep:false,exact:true,inline:"span",styles:{textDecoration:"underline"}},null,aw)}})})}if(af){if(af.nodeType){ac=c.createRng();ac.setStartBefore(af);ac.setEndAfter(af);ap(ac)}else{ap(af)}return}if(!r.isCollapsed()||!ao.inline||c.select("td.mceSelected,th.mceSelected").length){ak=r.getBookmark();ap(r.getRng(C));r.moveToBookmark(ak);if(ao.inline&&k(ad,am,r.getStart())){R(r.getRng(true))}aa.nodeChanged()}else{U("remove",ad,am)}}function F(ac,ae,ad){var ab=V(ac);if(k(ac,ae,ad)&&(!("toggle" in ab[0])||ab[0].toggle)){B(ac,ae,ad)}else{Y(ac,ae,ad)}}function y(ac,ab,ah,af){var ad=V(ab),ai,ag,ae;function aj(an,ap,aq){var am,ao,ak=ap[aq],al;if(ap.onmatch){return ap.onmatch(an,ap,aq)}if(ak){if(ak.length===D){for(am in ak){if(ak.hasOwnProperty(am)){if(aq==="attributes"){ao=c.getAttrib(an,am)}else{ao=O(an,am)}if(af&&!ao&&!ap.exact){return}if((!af||ap.exact)&&!g(ao,q(ak[am],ah))){return}}}}else{for(al=0;al<ak.length;al++){if(aq==="attributes"?c.getAttrib(an,ak[al]):O(an,ak[al])){return ap}}}}return ap}if(ad&&ac){for(ag=0;ag<ad.length;ag++){ai=ad[ag];if(h(ac,ai)&&aj(ac,ai,"attributes")&&aj(ac,ai,"styles")){if(ae=ai.classes){for(ag=0;ag<ae.length;ag++){if(!c.hasClass(ac,ae[ag])){return}}}return ai}}}}function k(ad,af,ae){var ac;function ab(ag){ag=c.getParent(ag,function(ah){return !!y(ah,ad,af,true)});return y(ag,ad,af)}if(ae){return ab(ae)}ae=r.getNode();if(ab(ae)){return C}ac=r.getStart();if(ac!=ae){if(ab(ac)){return C}}return X}function v(ai,ah){var af,ag=[],ae={},ad,ac,ab;af=r.getStart();c.getParent(af,function(al){var ak,aj;for(ak=0;ak<ai.length;ak++){aj=ai[ak];if(!ae[aj]&&y(al,aj,ah)){ae[aj]=true;ag.push(aj)}}},c.getRoot());return ag}function z(af){var ah=V(af),ae,ad,ag,ac,ab;if(ah){ae=r.getStart();ad=n(ae);for(ac=ah.length-1;ac>=0;ac--){ab=ah[ac].selector;if(!ab){return C}for(ag=ad.length-1;ag>=0;ag--){if(c.is(ad[ag],ab)){return C}}}}return X}function J(ab,ae,ac){var ad;if(!P){P={};ad={};aa.onNodeChange.addToTop(function(ag,af,ai){var ah=n(ai),aj={};T(P,function(ak,al){T(ah,function(am){if(y(am,al,{},ak.similar)){if(!ad[al]){T(ak,function(an){an(true,{node:am,format:al,parents:ah})});ad[al]=ak}aj[al]=ak;return false}})});T(ad,function(ak,al){if(!aj[al]){delete ad[al];T(ak,function(am){am(false,{node:ai,format:al,parents:ah})})}})})}T(ab.split(","),function(af){if(!P[af]){P[af]=[];P[af].similar=ac}P[af].push(ae)});return this}a.extend(this,{get:V,register:l,apply:Y,remove:B,toggle:F,match:k,matchAll:v,matchNode:y,canApply:z,formatChanged:J});j();W();function h(ab,ac){if(g(ab,ac.inline)){return C}if(g(ab,ac.block)){return C}if(ac.selector){return c.is(ab,ac.selector)}}function g(ac,ab){ac=ac||"";ab=ab||"";ac=""+(ac.nodeName||ac);ab=""+(ab.nodeName||ab);return ac.toLowerCase()==ab.toLowerCase()}function O(ac,ab){var ad=c.getStyle(ac,ab);if(ab=="color"||ab=="backgroundColor"){ad=c.toHex(ad)}if(ab=="fontWeight"&&ad==700){ad="bold"}return""+ad}function q(ab,ac){if(typeof(ab)!="string"){ab=ab(ac)}else{if(ac){ab=ab.replace(/%(\w+)/g,function(ae,ad){return ac[ad]||ae})}}return ab}function f(ab){return ab&&ab.nodeType===3&&/^([\t \r\n]+|)$/.test(ab.nodeValue)}function S(ad,ac,ab){var ae=c.create(ac,ab);ad.parentNode.insertBefore(ae,ad);ae.appendChild(ad);return ae}function p(ab,am,ae){var ap,an,ah,al,ad=ab.startContainer,ai=ab.startOffset,ar=ab.endContainer,ak=ab.endOffset;function ao(az){var au,ax,ay,aw,av,at;au=ax=az?ad:ar;av=az?"previousSibling":"nextSibling";at=c.getRoot();if(au.nodeType==3&&!f(au)){if(az?ai>0:ak<au.nodeValue.length){return au}}for(;;){if(!am[0].block_expand&&H(ax)){return ax}for(aw=ax[av];aw;aw=aw[av]){if(!K(aw)&&!f(aw)){return ax}}if(ax.parentNode==at){au=ax;break}ax=ax.parentNode}return au}function ag(at,au){if(au===D){au=at.nodeType===3?at.length:at.childNodes.length}while(at&&at.hasChildNodes()){at=at.childNodes[au];if(at){au=at.nodeType===3?at.length:at.childNodes.length}}return{node:at,offset:au}}if(ad.nodeType==1&&ad.hasChildNodes()){an=ad.childNodes.length-1;ad=ad.childNodes[ai>an?an:ai];if(ad.nodeType==3){ai=0}}if(ar.nodeType==1&&ar.hasChildNodes()){an=ar.childNodes.length-1;ar=ar.childNodes[ak>an?an:ak-1];if(ar.nodeType==3){ak=ar.nodeValue.length}}function aq(au){var at=au;while(at){if(at.nodeType===1&&x(at)){return x(at)==="false"?at:au}at=at.parentNode}return au}function aj(au,ay,aA){var ax,av,az,at;function aw(aC,aE){var aF,aB,aD=aC.nodeValue;if(typeof(aE)=="undefined"){aE=aA?aD.length:0}if(aA){aF=aD.lastIndexOf(" ",aE);aB=aD.lastIndexOf("\u00a0",aE);aF=aF>aB?aF:aB;if(aF!==-1&&!ae){aF++}}else{aF=aD.indexOf(" ",aE);aB=aD.indexOf("\u00a0",aE);aF=aF!==-1&&(aB===-1||aF<aB)?aF:aB}return aF}if(au.nodeType===3){az=aw(au,ay);if(az!==-1){return{container:au,offset:az}}at=au}ax=new t(au,c.getParent(au,H)||aa.getBody());while(av=ax[aA?"prev":"next"]()){if(av.nodeType===3){at=av;az=aw(av);if(az!==-1){return{container:av,offset:az}}}else{if(H(av)){break}}}if(at){if(aA){ay=0}else{ay=at.length}return{container:at,offset:ay}}}function af(au,at){var av,aw,ay,ax;if(au.nodeType==3&&au.nodeValue.length===0&&au[at]){au=au[at]}av=n(au);for(aw=0;aw<av.length;aw++){for(ay=0;ay<am.length;ay++){ax=am[ay];if("collapsed" in ax&&ax.collapsed!==ab.collapsed){continue}if(c.is(av[aw],ax.selector)){return av[aw]}}}return au}function ac(au,at,aw){var av;if(!am[0].wrapper){av=c.getParent(au,am[0].block)}if(!av){av=c.getParent(au.nodeType==3?au.parentNode:au,H)}if(av&&am[0].wrapper){av=n(av,"ul,ol").reverse()[0]||av}if(!av){av=au;while(av[at]&&!H(av[at])){av=av[at];if(g(av,"br")){break}}}return av||au}ad=aq(ad);ar=aq(ar);if(K(ad.parentNode)||K(ad)){ad=K(ad)?ad:ad.parentNode;ad=ad.nextSibling||ad;if(ad.nodeType==3){ai=0}}if(K(ar.parentNode)||K(ar)){ar=K(ar)?ar:ar.parentNode;ar=ar.previousSibling||ar;if(ar.nodeType==3){ak=ar.length}}if(am[0].inline){if(ab.collapsed){al=aj(ad,ai,true);if(al){ad=al.container;ai=al.offset}al=aj(ar,ak);if(al){ar=al.container;ak=al.offset}}ah=ag(ar,ak);if(ah.node){while(ah.node&&ah.offset===0&&ah.node.previousSibling){ah=ag(ah.node.previousSibling)}if(ah.node&&ah.offset>0&&ah.node.nodeType===3&&ah.node.nodeValue.charAt(ah.offset-1)===" "){if(ah.offset>1){ar=ah.node;ar.splitText(ah.offset-1)}}}}if(am[0].inline||am[0].block_expand){if(!am[0].inline||(ad.nodeType!=3||ai===0)){ad=ao(true)}if(!am[0].inline||(ar.nodeType!=3||ak===ar.nodeValue.length)){ar=ao()}}if(am[0].selector&&am[0].expand!==X&&!am[0].inline){ad=af(ad,"previousSibling");ar=af(ar,"nextSibling")}if(am[0].block||am[0].selector){ad=ac(ad,"previousSibling");ar=ac(ar,"nextSibling");if(am[0].block){if(!H(ad)){ad=ao(true)}if(!H(ar)){ar=ao()}}}if(ad.nodeType==1){ai=s(ad);ad=ad.parentNode}if(ar.nodeType==1){ak=s(ar)+1;ar=ar.parentNode}return{startContainer:ad,startOffset:ai,endContainer:ar,endOffset:ak}}function Z(ah,ag,ae,ab){var ad,ac,af;if(!h(ae,ah)){return X}if(ah.remove!="all"){T(ah.styles,function(aj,ai){aj=q(aj,ag);if(typeof(ai)==="number"){ai=aj;ab=0}if(!ab||g(O(ab,ai),aj)){c.setStyle(ae,ai,"")}af=1});if(af&&c.getAttrib(ae,"style")==""){ae.removeAttribute("style");ae.removeAttribute("data-mce-style")}T(ah.attributes,function(ak,ai){var aj;ak=q(ak,ag);if(typeof(ai)==="number"){ai=ak;ab=0}if(!ab||g(c.getAttrib(ab,ai),ak)){if(ai=="class"){ak=c.getAttrib(ae,ai);if(ak){aj="";T(ak.split(/\s+/),function(al){if(/mce\w+/.test(al)){aj+=(aj?" ":"")+al}});if(aj){c.setAttrib(ae,ai,aj);return}}}if(ai=="class"){ae.removeAttribute("className")}if(e.test(ai)){ae.removeAttribute("data-mce-"+ai)}ae.removeAttribute(ai)}});T(ah.classes,function(ai){ai=q(ai,ag);if(!ab||c.hasClass(ab,ai)){c.removeClass(ae,ai)}});ac=c.getAttribs(ae);for(ad=0;ad<ac.length;ad++){if(ac[ad].nodeName.indexOf("_")!==0){return X}}}if(ah.remove!="none"){o(ae,ah);return C}}function o(ad,ae){var ab=ad.parentNode,ac;function af(ah,ag,ai){ah=E(ah,ag,ai);return !ah||(ah.nodeName=="BR"||H(ah))}if(ae.block){if(!m){if(H(ad)&&!H(ab)){if(!af(ad,X)&&!af(ad.firstChild,C,1)){ad.insertBefore(c.create("br"),ad.firstChild)}if(!af(ad,C)&&!af(ad.lastChild,X,1)){ad.appendChild(c.create("br"))}}}else{if(ab==c.getRoot()){if(!ae.list_block||!g(ad,ae.list_block)){T(a.grep(ad.childNodes),function(ag){if(d(m,ag.nodeName.toLowerCase())){if(!ac){ac=S(ag,m)}else{ac.appendChild(ag)}}else{ac=0}})}}}}if(ae.selector&&ae.inline&&!g(ae.inline,ad)){return}c.remove(ad,1)}function E(ac,ab,ad){if(ac){ab=ab?"nextSibling":"previousSibling";for(ac=ad?ac:ac[ab];ac;ac=ac[ab]){if(ac.nodeType==1||!f(ac)){return ac}}}}function K(ab){return ab&&ab.nodeType==1&&ab.getAttribute("data-mce-type")=="bookmark"}function u(af,ae){var ab,ad,ac;function ah(ak,aj){if(ak.nodeName!=aj.nodeName){return X}function ai(am){var an={};T(c.getAttribs(am),function(ao){var ap=ao.nodeName.toLowerCase();if(ap.indexOf("_")!==0&&ap!=="style"){an[ap]=c.getAttrib(am,ap)}});return an}function al(ap,ao){var an,am;for(am in ap){if(ap.hasOwnProperty(am)){an=ao[am];if(an===D){return X}if(ap[am]!=an){return X}delete ao[am]}}for(am in ao){if(ao.hasOwnProperty(am)){return X}}return C}if(!al(ai(ak),ai(aj))){return X}if(!al(c.parseStyle(c.getAttrib(ak,"style")),c.parseStyle(c.getAttrib(aj,"style")))){return X}return C}function ag(aj,ai){for(ad=aj;ad;ad=ad[ai]){if(ad.nodeType==3&&ad.nodeValue.length!==0){return aj}if(ad.nodeType==1&&!K(ad)){return ad}}return aj}if(af&&ae){af=ag(af,"previousSibling");ae=ag(ae,"nextSibling");if(ah(af,ae)){for(ad=af.nextSibling;ad&&ad!=ae;){ac=ad;ad=ad.nextSibling;af.appendChild(ac)}c.remove(ae);T(a.grep(ae.childNodes),function(ai){af.appendChild(ai)});return af}}return ae}function I(ab){return/^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(ab)}function M(ac,ag){var ab,af,ad,ae;ab=ac[ag?"startContainer":"endContainer"];af=ac[ag?"startOffset":"endOffset"];if(ab.nodeType==1){ad=ab.childNodes.length-1;if(!ag&&af){af--}ab=ab.childNodes[af>ad?ad:af]}if(ab.nodeType===3&&ag&&af>=ab.nodeValue.length){ab=new t(ab,aa.getBody()).next()||ab}if(ab.nodeType===3&&!ag&&af===0){ab=new t(ab,aa.getBody()).prev()||ab}return ab}function U(ak,ab,ai){var al="_mce_caret",ac=aa.settings.caret_debug;function ad(ap){var ao=c.create("span",{id:al,"data-mce-bogus":true,style:ac?"color:red":""});if(ap){ao.appendChild(aa.getDoc().createTextNode(G))}return ao}function aj(ap,ao){while(ap){if((ap.nodeType===3&&ap.nodeValue!==G)||ap.childNodes.length>1){return false}if(ao&&ap.nodeType===1){ao.push(ap)}ap=ap.firstChild}return true}function ag(ao){while(ao){if(ao.id===al){return ao}ao=ao.parentNode}}function af(ao){var ap;if(ao){ap=new t(ao,ao);for(ao=ap.current();ao;ao=ap.next()){if(ao.nodeType===3){return ao}}}}function ae(aq,ap){var ar,ao;if(!aq){aq=ag(r.getStart());if(!aq){while(aq=c.get(al)){ae(aq,false)}}}else{ao=r.getRng(true);if(aj(aq)){if(ap!==false){ao.setStartBefore(aq);ao.setEndBefore(aq)}c.remove(aq)}else{ar=af(aq);if(ar.nodeValue.charAt(0)===G){ar=ar.deleteData(0,1)}c.remove(aq,1)}r.setRng(ao)}}function ah(){var aq,ao,av,au,ar,ap,at;aq=r.getRng(true);au=aq.startOffset;ap=aq.startContainer;at=ap.nodeValue;ao=ag(r.getStart());if(ao){av=af(ao)}if(at&&au>0&&au<at.length&&/\w/.test(at.charAt(au))&&/\w/.test(at.charAt(au-1))){ar=r.getBookmark();aq.collapse(true);aq=p(aq,V(ab));aq=N.split(aq);Y(ab,ai,aq);r.moveToBookmark(ar)}else{if(!ao||av.nodeValue!==G){ao=ad(true);av=ao.firstChild;aq.insertNode(ao);au=1;Y(ab,ai,ao)}else{Y(ab,ai,ao)}r.setCursorLocation(av,au)}}function am(){var ao=r.getRng(true),ap,ar,av,au,aq,ay,ax=[],at,aw;ap=ao.startContainer;ar=ao.startOffset;aq=ap;if(ap.nodeType==3){if(ar!=ap.nodeValue.length||ap.nodeValue===G){au=true}aq=aq.parentNode}while(aq){if(y(aq,ab,ai)){ay=aq;break}if(aq.nextSibling){au=true}ax.push(aq);aq=aq.parentNode}if(!ay){return}if(au){av=r.getBookmark();ao.collapse(true);ao=p(ao,V(ab),true);ao=N.split(ao);B(ab,ai,ao);r.moveToBookmark(av)}else{aw=ad();aq=aw;for(at=ax.length-1;at>=0;at--){aq.appendChild(c.clone(ax[at],false));aq=aq.firstChild}aq.appendChild(c.doc.createTextNode(G));aq=aq.firstChild;c.insertAfter(aw,ay);r.setCursorLocation(aq,1)}}function an(){var ap,ao,aq;ao=ag(r.getStart());if(ao&&!c.isEmpty(ao)){a.walk(ao,function(ar){if(ar.nodeType==1&&ar.id!==al&&!c.isEmpty(ar)){c.setAttrib(ar,"data-mce-bogus",null)}},"childNodes")}}if(!self._hasCaretEvents){aa.onBeforeGetContent.addToTop(function(){var ao=[],ap;if(aj(ag(r.getStart()),ao)){ap=ao.length;while(ap--){c.setAttrib(ao[ap],"data-mce-bogus","1")}}});a.each("onMouseUp onKeyUp".split(" "),function(ao){aa[ao].addToTop(function(){ae();an()})});aa.onKeyDown.addToTop(function(ao,aq){var ap=aq.keyCode;if(ap==8||ap==37||ap==39){ae(ag(r.getStart()))}an()});r.onSetContent.add(an);self._hasCaretEvents=true}if(ak=="apply"){ah()}else{am()}}function R(ac){var ab=ac.startContainer,ai=ac.startOffset,ae,ah,ag,ad,af;if(ab.nodeType==3&&ai>=ab.nodeValue.length){ai=s(ab);ab=ab.parentNode;ae=true}if(ab.nodeType==1){ad=ab.childNodes;ab=ad[Math.min(ai,ad.length-1)];ah=new t(ab,c.getParent(ab,c.isBlock));if(ai>ad.length-1||ae){ah.next()}for(ag=ah.current();ag;ag=ah.next()){if(ag.nodeType==3&&!f(ag)){af=c.create("a",null,G);ag.parentNode.insertBefore(af,ag);ac.setStart(ag,0);r.setRng(ac);c.remove(af);return}}}}}})(tinymce);tinymce.onAddEditor.add(function(e,a){var d,h,g,c=a.settings;function b(j,i){e.each(i,function(l,k){if(l){g.setStyle(j,k,l)}});g.rename(j,"span")}function f(i,j){g=i.dom;if(c.convert_fonts_to_spans){e.each(g.select("font,u,strike",j.node),function(k){d[k.nodeName.toLowerCase()](a.dom,k)})}}if(c.inline_styles){h=e.explode(c.font_size_legacy_values);d={font:function(j,i){b(i,{backgroundColor:i.style.backgroundColor,color:i.color,fontFamily:i.face,fontSize:h[parseInt(i.size,10)-1]})},u:function(j,i){b(i,{textDecoration:"underline"})},strike:function(j,i){b(i,{textDecoration:"line-through"})}};a.onPreProcess.add(f);a.onSetContent.add(f);a.onInit.add(function(){a.selection.onSetContent.add(f)})}});(function(b){var a=b.dom.TreeWalker;b.EnterKey=function(f){var i=f.dom,e=f.selection,d=f.settings,h=f.undoManager,c=f.schema.getNonEmptyElements();function g(A){var v=e.getRng(true),G,j,z,u,p,M,B,o,k,n,t,J,x,C;function E(N){return N&&i.isBlock(N)&&!/^(TD|TH|CAPTION|FORM)$/.test(N.nodeName)&&!/^(fixed|absolute)/i.test(N.style.position)&&i.getContentEditable(N)!=="true"}function F(O){var N;if(b.isIE&&i.isBlock(O)){N=e.getRng();O.appendChild(i.create("span",null,"\u00a0"));e.select(O);O.lastChild.outerHTML="";e.setRng(N)}}function y(P){var O=P,Q=[],N;while(O=O.firstChild){if(i.isBlock(O)){return}if(O.nodeType==1&&!c[O.nodeName.toLowerCase()]){Q.push(O)}}N=Q.length;while(N--){O=Q[N];if(!O.hasChildNodes()||(O.firstChild==O.lastChild&&O.firstChild.nodeValue==="")){i.remove(O)}else{if(O.nodeName=="A"&&(O.innerText||O.textContent)===" "){i.remove(O)}}}}function m(O){var T,R,N,U,S,Q=O,P;N=i.createRng();if(O.hasChildNodes()){T=new a(O,O);while(R=T.current()){if(R.nodeType==3){N.setStart(R,0);N.setEnd(R,0);break}if(c[R.nodeName.toLowerCase()]){N.setStartBefore(R);N.setEndBefore(R);break}Q=R;R=T.next()}if(!R){N.setStart(Q,0);N.setEnd(Q,0)}}else{if(O.nodeName=="BR"){if(O.nextSibling&&i.isBlock(O.nextSibling)){if(!M||M<9){P=i.create("br");O.parentNode.insertBefore(P,O)}N.setStartBefore(O);N.setEndBefore(O)}else{N.setStartAfter(O);N.setEndAfter(O)}}else{N.setStart(O,0);N.setEnd(O,0)}}e.setRng(N);i.remove(P);S=i.getViewPort(f.getWin());U=i.getPos(O).y;if(U<S.y||U+25>S.y+S.h){f.getWin().scrollTo(0,U<S.y?U:U-S.h+25)}}function r(O){var P=z,R,Q,N;R=O||t=="TABLE"?i.create(O||x):p.cloneNode(false);N=R;if(d.keep_styles!==false){do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(P.nodeName)){Q=P.cloneNode(false);i.setAttrib(Q,"id","");if(R.hasChildNodes()){Q.appendChild(R.firstChild);R.appendChild(Q)}else{N=Q;R.appendChild(Q)}}}while(P=P.parentNode)}if(!b.isIE){N.innerHTML="<br>"}return R}function q(Q){var P,O,N;if(z.nodeType==3&&(Q?u>0:u<z.nodeValue.length)){return false}if(z.parentNode==p&&C&&!Q){return true}if(Q&&z.nodeType==1&&z==p.firstChild){return true}if(z.nodeName==="TABLE"||(z.previousSibling&&z.previousSibling.nodeName=="TABLE")){return(C&&!Q)||(!C&&Q)}P=new a(z,p);if(z.nodeType==3){if(Q&&u==0){P.prev()}else{if(!Q&&u==z.nodeValue.length){P.next()}}}while(O=P.current()){if(O.nodeType===1){if(!O.getAttribute("data-mce-bogus")){N=O.nodeName.toLowerCase();if(c[N]&&N!=="br"){return false}}}else{if(O.nodeType===3&&!/^[ \t\r\n]*$/.test(O.nodeValue)){return false}}if(Q){P.prev()}else{P.next()}}return true}function l(N,T){var U,S,P,R,Q,O=x||"P";S=i.getParent(N,i.isBlock);if(!S||!E(S)){S=S||j;if(!S.hasChildNodes()){U=i.create(O);S.appendChild(U);v.setStart(U,0);v.setEnd(U,0);return U}R=N;while(R.parentNode!=S){R=R.parentNode}while(R&&!i.isBlock(R)){P=R;R=R.previousSibling}if(P){U=i.create(O);P.parentNode.insertBefore(U,P);R=P;while(R&&!i.isBlock(R)){Q=R.nextSibling;U.appendChild(R);R=Q}v.setStart(N,T);v.setEnd(N,T)}}return N}function H(){function N(P){var O=n[P?"firstChild":"lastChild"];while(O){if(O.nodeType==1){break}O=O[P?"nextSibling":"previousSibling"]}return O===p}o=x?r(x):i.create("BR");if(N(true)&&N()){i.replace(o,n)}else{if(N(true)){n.parentNode.insertBefore(o,n)}else{if(N()){i.insertAfter(o,n);F(o)}else{G=v.cloneRange();G.setStartAfter(p);G.setEndAfter(n);k=G.extractContents();i.insertAfter(k,n);i.insertAfter(o,n)}}}i.remove(p);m(o);h.add()}function D(){var O=new a(z,p),N;while(N=O.current()){if(N.nodeName=="BR"){return true}N=O.next()}}function L(){var O,N;if(z&&z.nodeType==3&&u>=z.nodeValue.length){if(!b.isIE&&!D()){O=i.create("br");v.insertNode(O);v.setStartAfter(O);v.setEndAfter(O);N=true}}O=i.create("br");v.insertNode(O);if(b.isIE&&t=="PRE"&&(!M||M<8)){O.parentNode.insertBefore(i.doc.createTextNode("\r"),O)}if(!N){v.setStartAfter(O);v.setEndAfter(O)}else{v.setStartBefore(O);v.setEndBefore(O)}e.setRng(v);h.add()}function s(N){do{if(N.nodeType===3){N.nodeValue=N.nodeValue.replace(/^[\r\n]+/,"")}N=N.firstChild}while(N)}function K(P){var N=i.getRoot(),O,Q;O=P;while(O!==N&&i.getContentEditable(O)!=="false"){if(i.getContentEditable(O)==="true"){Q=O}O=O.parentNode}return O!==N?Q:N}function I(O){var N;if(!b.isIE){O.normalize();N=O.lastChild;if(!N||(/^(left|right)$/gi.test(i.getStyle(N,"float",true)))){i.add(O,"br")}}}if(!v.collapsed){f.execCommand("Delete");return}if(A.isDefaultPrevented()){return}z=v.startContainer;u=v.startOffset;x=(d.force_p_newlines?"p":"")||d.forced_root_block;x=x?x.toUpperCase():"";M=i.doc.documentMode;B=A.shiftKey;if(z.nodeType==1&&z.hasChildNodes()){C=u>z.childNodes.length-1;z=z.childNodes[Math.min(u,z.childNodes.length-1)]||z;if(C&&z.nodeType==3){u=z.nodeValue.length}else{u=0}}j=K(z);if(!j){return}h.beforeChange();if(!i.isBlock(j)&&j!=i.getRoot()){if(!x||B){L()}return}if((x&&!B)||(!x&&B)){z=l(z,u)}p=i.getParent(z,i.isBlock);n=p?i.getParent(p.parentNode,i.isBlock):null;t=p?p.nodeName.toUpperCase():"";J=n?n.nodeName.toUpperCase():"";if(t=="LI"){if(!x&&B){L();return}if(i.isEmpty(p)){if(/^(UL|OL|LI)$/.test(n.parentNode.nodeName)){return false}H();return}}if(t=="PRE"&&d.br_in_pre!==false){if(!B){L();return}}else{if((!x&&!B&&t!="LI")||(x&&B)){L();return}}x=x||"P";if(q()){if(/^(H[1-6]|PRE)$/.test(t)&&J!="HGROUP"){o=r(x)}else{o=r()}if(d.end_container_on_empty_block&&E(n)&&i.isEmpty(p)){o=i.split(n,p)}else{i.insertAfter(o,p)}m(o)}else{if(q(true)){o=p.parentNode.insertBefore(r(),p);F(o)}else{G=v.cloneRange();G.setEndAfter(p);k=G.extractContents();s(k);o=k.firstChild;i.insertAfter(k,p);y(o);I(p);m(o)}}i.setAttrib(o,"id","");h.add()}f.onKeyDown.add(function(k,j){if(j.keyCode==13){if(g(j)!==false){j.preventDefault()}}})}})(tinymce); \ No newline at end of file
+(function(e){var a=/^\s*|\s*$/g,b,d="B".replace(/A(.)|B/,"$1")==="$1";var c={majorVersion:"3",minorVersion:"5.10",releaseDate:"2013-10-24",_init:function(){var s=this,q=document,o=navigator,g=o.userAgent,m,f,l,k,j,r;s.isIE11=g.indexOf("Trident/")!=-1&&(g.indexOf("rv:")!=-1||o.appName.indexOf("Netscape")!=-1);s.isOpera=e.opera&&opera.buildNumber;s.isWebKit=/WebKit/.test(g);s.isIE=!s.isWebKit&&!s.isOpera&&(/MSIE/gi).test(g)&&(/Explorer/gi).test(o.appName)||s.isIE11;s.isIE6=s.isIE&&/MSIE [56]/.test(g);s.isIE7=s.isIE&&/MSIE [7]/.test(g);s.isIE8=s.isIE&&/MSIE [8]/.test(g);s.isIE9=s.isIE&&/MSIE [9]/.test(g);s.isGecko=!s.isWebKit&&!s.isIE11&&/Gecko/.test(g);s.isMac=g.indexOf("Mac")!=-1;s.isAir=/adobeair/i.test(g);s.isIDevice=/(iPad|iPhone)/.test(g);s.isIOS5=s.isIDevice&&g.match(/AppleWebKit\/(\d*)/)[1]>=534;if(e.tinyMCEPreInit){s.suffix=tinyMCEPreInit.suffix;s.baseURL=tinyMCEPreInit.base;s.query=tinyMCEPreInit.query;return}s.suffix="";f=q.getElementsByTagName("base");for(m=0;m<f.length;m++){r=f[m].href;if(r){if(/^https?:\/\/[^\/]+$/.test(r)){r+="/"}k=r?r.match(/.*\//)[0]:""}}function h(i){if(i.src&&/tiny_mce(|_gzip|_jquery|_prototype|_full)(_dev|_src)?.js/.test(i.src)){if(/_(src|dev)\.js/g.test(i.src)){s.suffix="_src"}if((j=i.src.indexOf("?"))!=-1){s.query=i.src.substring(j+1)}s.baseURL=i.src.substring(0,i.src.lastIndexOf("/"));if(k&&s.baseURL.indexOf("://")==-1&&s.baseURL.indexOf("/")!==0){s.baseURL=k+s.baseURL}return s.baseURL}return null}f=q.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}l=q.getElementsByTagName("head")[0];if(l){f=l.getElementsByTagName("script");for(m=0;m<f.length;m++){if(h(f[m])){return}}}return},is:function(g,f){if(!f){return g!==b}if(f=="array"&&c.isArray(g)){return true}return typeof(g)==f},isArray:Array.isArray||function(f){return Object.prototype.toString.call(f)==="[object Array]"},makeMap:function(f,j,h){var g;f=f||[];j=j||",";if(typeof(f)=="string"){f=f.split(j)}h=h||{};g=f.length;while(g--){h[f[g]]={}}return h},each:function(i,f,h){var j,g;if(!i){return 0}h=h||i;if(i.length!==b){for(j=0,g=i.length;j<g;j++){if(f.call(h,i[j],j,i)===false){return 0}}}else{for(j in i){if(i.hasOwnProperty(j)){if(f.call(h,i[j],j,i)===false){return 0}}}}return 1},map:function(g,h){var i=[];c.each(g,function(f){i.push(h(f))});return i},grep:function(g,h){var i=[];c.each(g,function(f){if(!h||h(f)){i.push(f)}});return i},inArray:function(g,h){var j,f;if(g){for(j=0,f=g.length;j<f;j++){if(g[j]===h){return j}}}return -1},extend:function(n,k){var j,f,h,g=arguments,m;for(j=1,f=g.length;j<f;j++){k=g[j];for(h in k){if(k.hasOwnProperty(h)){m=k[h];if(m!==b){n[h]=m}}}}return n},trim:function(f){return(f?""+f:"").replace(a,"")},create:function(o,f,j){var n=this,g,i,k,l,h,m=0;o=/^((static) )?([\w.]+)(:([\w.]+))?/.exec(o);k=o[3].match(/(^|\.)(\w+)$/i)[2];i=n.createNS(o[3].replace(/\.\w+$/,""),j);if(i[k]){return}if(o[2]=="static"){i[k]=f;if(this.onCreate){this.onCreate(o[2],o[3],i[k])}return}if(!f[k]){f[k]=function(){};m=1}i[k]=f[k];n.extend(i[k].prototype,f);if(o[5]){g=n.resolve(o[5]).prototype;l=o[5].match(/\.(\w+)$/i)[1];h=i[k];if(m){i[k]=function(){return g[l].apply(this,arguments)}}else{i[k]=function(){this.parent=g[l];return h.apply(this,arguments)}}i[k].prototype[k]=i[k];n.each(g,function(p,q){i[k].prototype[q]=g[q]});n.each(f,function(p,q){if(g[q]){i[k].prototype[q]=function(){this.parent=g[q];return p.apply(this,arguments)}}else{if(q!=k){i[k].prototype[q]=p}}})}n.each(f["static"],function(p,q){i[k][q]=p});if(this.onCreate){this.onCreate(o[2],o[3],i[k].prototype)}},walk:function(i,h,j,g){g=g||this;if(i){if(j){i=i[j]}c.each(i,function(k,f){if(h.call(g,k,f,j)===false){return false}c.walk(k,h,j,g)})}},createNS:function(j,h){var g,f;h=h||e;j=j.split(".");for(g=0;g<j.length;g++){f=j[g];if(!h[f]){h[f]={}}h=h[f]}return h},resolve:function(j,h){var g,f;h=h||e;j=j.split(".");for(g=0,f=j.length;g<f;g++){h=h[j[g]];if(!h){break}}return h},addUnload:function(j,i){var h=this,g;g=function(){var f=h.unloads,l,m;if(f){for(m in f){l=f[m];if(l&&l.func){l.func.call(l.scope,1)}}if(e.detachEvent){e.detachEvent("onbeforeunload",k);e.detachEvent("onunload",g)}else{if(e.removeEventListener){e.removeEventListener("unload",g,false)}}h.unloads=l=f=w=g=0;if(e.CollectGarbage){CollectGarbage()}}};function k(){var l=document;function f(){l.detachEvent("onstop",f);if(g){g()}l=0}if(l.readyState=="interactive"){if(l){l.attachEvent("onstop",f)}e.setTimeout(function(){if(l){l.detachEvent("onstop",f)}},0)}}j={func:j,scope:i||this};if(!h.unloads){if(e.attachEvent){e.attachEvent("onunload",g);e.attachEvent("onbeforeunload",k)}else{if(e.addEventListener){e.addEventListener("unload",g,false)}}h.unloads=[j]}else{h.unloads.push(j)}return j},removeUnload:function(i){var g=this.unloads,h=null;c.each(g,function(j,f){if(j&&j.func==i){g.splice(f,1);h=i;return false}});return h},explode:function(f,g){if(!f||c.is(f,"array")){return f}return c.map(f.split(g||","),c.trim)},_addVer:function(g){var f;if(!this.query){return g}f=(g.indexOf("?")==-1?"?":"&")+this.query;if(g.indexOf("#")==-1){return g+f}return g.replace("#",f+"#")},_replace:function(h,f,g){if(d){return g.replace(h,function(){var l=f,j=arguments,k;for(k=0;k<j.length-2;k++){if(j[k]===b){l=l.replace(new RegExp("\\$"+k,"g"),"")}else{l=l.replace(new RegExp("\\$"+k,"g"),j[k])}}return l})}return g.replace(h,f)}};c._init();e.tinymce=e.tinyMCE=c})(window);tinymce.create("tinymce.util.Dispatcher",{scope:null,listeners:null,inDispatch:false,Dispatcher:function(a){this.scope=a||this;this.listeners=[]},add:function(b,a){this.listeners.push({cb:b,scope:a||this.scope});return b},addToTop:function(d,b){var a=this,c={cb:d,scope:b||a.scope};if(a.inDispatch){a.listeners=[c].concat(a.listeners)}else{a.listeners.unshift(c)}return d},remove:function(c){var b=this.listeners,a=null;tinymce.each(b,function(e,d){if(c==e.cb){a=e;b.splice(d,1);return false}});return a},dispatch:function(){var a=this,e,b=arguments,c,d=a.listeners,f;a.inDispatch=true;for(c=0;c<d.length;c++){f=d[c];e=f.cb.apply(f.scope,b.length>0?b:[f.scope]);if(e===false){break}}a.inDispatch=false;return e}});(function(){var a=tinymce.each;tinymce.create("tinymce.util.URI",{URI:function(e,g){var f=this,i,d,c,h;e=tinymce.trim(e);g=f.settings=g||{};if(/^([\w\-]+):([^\/]{2})/i.test(e)||/^\s*#/.test(e)){f.source=e;return}if(e.indexOf("/")===0&&e.indexOf("//")!==0){e=(g.base_uri?g.base_uri.protocol||"http":"http")+"://mce_host"+e}if(!/^[\w\-]*:?\/\//.test(e)){h=g.base_uri?g.base_uri.path:new tinymce.util.URI(location.href).directory;e=((g.base_uri&&g.base_uri.protocol)||"http")+"://mce_host"+f.toAbsPath(h,e)}e=e.replace(/@@/g,"(mce_at)");e=/^(?:(?![^:@]+:[^:@\/]*@)([^:\/?#.]+):)?(?:\/\/)?((?:(([^:@\/]*):?([^:@\/]*))?@)?([^:\/?#]*)(?::(\d*))?)(((\/(?:[^?#](?![^?#\/]*\.[^?#\/.]+(?:[?#]|$)))*\/?)?([^?#\/]*))(?:\?([^#]*))?(?:#(.*))?)/.exec(e);a(["source","protocol","authority","userInfo","user","password","host","port","relative","path","directory","file","query","anchor"],function(b,j){var k=e[j];if(k){k=k.replace(/\(mce_at\)/g,"@@")}f[b]=k});c=g.base_uri;if(c){if(!f.protocol){f.protocol=c.protocol}if(!f.userInfo){f.userInfo=c.userInfo}if(!f.port&&f.host==="mce_host"){f.port=c.port}if(!f.host||f.host==="mce_host"){f.host=c.host}f.source=""}},setPath:function(c){var b=this;c=/^(.*?)\/?(\w+)?$/.exec(c);b.path=c[0];b.directory=c[1];b.file=c[2];b.source="";b.getURI()},toRelative:function(b){var d=this,f;if(b==="./"){return b}b=new tinymce.util.URI(b,{base_uri:d});if((b.host!="mce_host"&&d.host!=b.host&&b.host)||d.port!=b.port||d.protocol!=b.protocol){return b.getURI()}var c=d.getURI(),e=b.getURI();if(c==e||(c.charAt(c.length-1)=="/"&&c.substr(0,c.length-1)==e)){return c}f=d.toRelPath(d.path,b.path);if(b.query){f+="?"+b.query}if(b.anchor){f+="#"+b.anchor}return f},toAbsolute:function(b,c){b=new tinymce.util.URI(b,{base_uri:this});return b.getURI(this.host==b.host&&this.protocol==b.protocol?c:0)},toRelPath:function(g,h){var c,f=0,d="",e,b;g=g.substring(0,g.lastIndexOf("/"));g=g.split("/");c=h.split("/");if(g.length>=c.length){for(e=0,b=g.length;e<b;e++){if(e>=c.length||g[e]!=c[e]){f=e+1;break}}}if(g.length<c.length){for(e=0,b=c.length;e<b;e++){if(e>=g.length||g[e]!=c[e]){f=e+1;break}}}if(f===1){return h}for(e=0,b=g.length-(f-1);e<b;e++){d+="../"}for(e=f-1,b=c.length;e<b;e++){if(e!=f-1){d+="/"+c[e]}else{d+=c[e]}}return d},toAbsPath:function(e,f){var c,b=0,h=[],d,g;d=/\/$/.test(f)?"/":"";e=e.split("/");f=f.split("/");a(e,function(i){if(i){h.push(i)}});e=h;for(c=f.length-1,h=[];c>=0;c--){if(f[c].length===0||f[c]==="."){continue}if(f[c]===".."){b++;continue}if(b>0){b--;continue}h.push(f[c])}c=e.length-b;if(c<=0){g=h.reverse().join("/")}else{g=e.slice(0,c).join("/")+"/"+h.reverse().join("/")}if(g.indexOf("/")!==0){g="/"+g}if(d&&g.lastIndexOf("/")!==g.length-1){g+=d}return g},getURI:function(d){var c,b=this;if(!b.source||d){c="";if(!d){if(b.protocol){c+=b.protocol+"://"}if(b.userInfo){c+=b.userInfo+"@"}if(b.host){c+=b.host}if(b.port){c+=":"+b.port}}if(b.path){c+=b.path}if(b.query){c+="?"+b.query}if(b.anchor){c+="#"+b.anchor}b.source=c}return b.source}})})();(function(){var a=tinymce.each;tinymce.create("static tinymce.util.Cookie",{getHash:function(d){var b=this.get(d),c;if(b){a(b.split("&"),function(e){e=e.split("=");c=c||{};c[unescape(e[0])]=unescape(e[1])})}return c},setHash:function(j,b,g,f,i,c){var h="";a(b,function(e,d){h+=(!h?"":"&")+escape(d)+"="+escape(e)});this.set(j,h,g,f,i,c)},get:function(i){var h=document.cookie,g,f=i+"=",d;if(!h){return}d=h.indexOf("; "+f);if(d==-1){d=h.indexOf(f);if(d!==0){return null}}else{d+=2}g=h.indexOf(";",d);if(g==-1){g=h.length}return unescape(h.substring(d+f.length,g))},set:function(i,b,g,f,h,c){document.cookie=i+"="+escape(b)+((g)?"; expires="+g.toGMTString():"")+((f)?"; path="+escape(f):"")+((h)?"; domain="+h:"")+((c)?"; secure":"")},remove:function(c,e,d){var b=new Date();b.setTime(b.getTime()-1000);this.set(c,"",b,e,d)}})})();(function(){function serialize(o,quote){var i,v,t,name;quote=quote||'"';if(o==null){return"null"}t=typeof o;if(t=="string"){v="\bb\tt\nn\ff\rr\"\"''\\\\";return quote+o.replace(/([\u0080-\uFFFF\x00-\x1f\"\'\\])/g,function(a,b){if(quote==='"'&&a==="'"){return a}i=v.indexOf(b);if(i+1){return"\\"+v.charAt(i+1)}a=b.charCodeAt().toString(16);return"\\u"+"0000".substring(a.length)+a})+quote}if(t=="object"){if(o.hasOwnProperty&&Object.prototype.toString.call(o)==="[object Array]"){for(i=0,v="[";i<o.length;i++){v+=(i>0?",":"")+serialize(o[i],quote)}return v+"]"}v="{";for(name in o){if(o.hasOwnProperty(name)){v+=typeof o[name]!="function"?(v.length>1?","+quote:quote)+name+quote+":"+serialize(o[name],quote):""}}return v+"}"}return""+o}tinymce.util.JSON={serialize:serialize,parse:function(s){try{return eval("("+s+")")}catch(ex){}}}})();tinymce.create("static tinymce.util.XHR",{send:function(g){var a,e,b=window,h=0;function f(){if(!g.async||a.readyState==4||h++>10000){if(g.success&&h<10000&&a.status==200){g.success.call(g.success_scope,""+a.responseText,a,g)}else{if(g.error){g.error.call(g.error_scope,h>10000?"TIMED_OUT":"GENERAL",a,g)}}a=null}else{b.setTimeout(f,10)}}g.scope=g.scope||this;g.success_scope=g.success_scope||g.scope;g.error_scope=g.error_scope||g.scope;g.async=g.async===false?false:true;g.data=g.data||"";function d(i){a=0;try{a=new ActiveXObject(i)}catch(c){}return a}a=b.XMLHttpRequest?new XMLHttpRequest():d("Microsoft.XMLHTTP")||d("Msxml2.XMLHTTP");if(a){if(a.overrideMimeType){a.overrideMimeType(g.content_type)}a.open(g.type||(g.data?"POST":"GET"),g.url,g.async);if(g.content_type){a.setRequestHeader("Content-Type",g.content_type)}a.setRequestHeader("X-Requested-With","XMLHttpRequest");a.send(g.data);if(!g.async){return f()}e=b.setTimeout(f,10)}}});(function(){var c=tinymce.extend,b=tinymce.util.JSON,a=tinymce.util.XHR;tinymce.create("tinymce.util.JSONRequest",{JSONRequest:function(d){this.settings=c({},d);this.count=0},send:function(f){var e=f.error,d=f.success;f=c(this.settings,f);f.success=function(h,g){h=b.parse(h);if(typeof(h)=="undefined"){h={error:"JSON Parse error."}}if(h.error){e.call(f.error_scope||f.scope,h.error,g)}else{d.call(f.success_scope||f.scope,h.result)}};f.error=function(h,g){if(e){e.call(f.error_scope||f.scope,h,g)}};f.data=b.serialize({id:f.id||"c"+(this.count++),method:f.method,params:f.params});f.content_type="application/json";a.send(f)},"static":{sendRPC:function(d){return new tinymce.util.JSONRequest().send(d)}}})}());(function(a){a.VK={BACKSPACE:8,DELETE:46,DOWN:40,ENTER:13,LEFT:37,RIGHT:39,SPACEBAR:32,TAB:9,UP:38,modifierPressed:function(b){return b.shiftKey||b.ctrlKey||b.altKey},metaKeyPressed:function(b){return a.isMac?b.metaKey:b.ctrlKey&&!b.altKey}}})(tinymce);tinymce.util.Quirks=function(a){var j=tinymce.VK,f=j.BACKSPACE,k=j.DELETE,e=a.dom,m=a.selection,I=a.settings,x=a.parser,p=a.serializer,F=tinymce.each;function B(O,N){try{a.getDoc().execCommand(O,false,N)}catch(M){}}function o(){var M=a.getDoc().documentMode;return M?M:6}function A(M){return M.isDefaultPrevented()}function K(){function M(S){var O,Q,N,T,P,R,U;function V(){if(P.nodeType==3){if(S&&R==P.length){return true}if(!S&&R===0){return true}}}O=m.getRng();var W=[O.startContainer,O.startOffset,O.endContainer,O.endOffset];if(!O.collapsed){S=true}P=O[(S?"start":"end")+"Container"];R=O[(S?"start":"end")+"Offset"];if(P.nodeType==3){Q=e.getParent(O.startContainer,e.isBlock);if(S){Q=e.getNext(Q,e.isBlock)}if(Q&&(V()||!O.collapsed)){N=e.create("em",{id:"__mceDel"});F(tinymce.grep(Q.childNodes),function(X){N.appendChild(X)});Q.appendChild(N)}}O=e.createRng();O.setStart(W[0],W[1]);O.setEnd(W[2],W[3]);m.setRng(O);a.getDoc().execCommand(S?"ForwardDelete":"Delete",false,null);if(N){T=m.getBookmark();while(U=e.get("__mceDel")){e.remove(U,true)}m.moveToBookmark(T)}}a.onKeyDown.add(function(N,P){var O;O=P.keyCode==k;if(!A(P)&&(O||P.keyCode==f)&&!j.modifierPressed(P)){P.preventDefault();M(O)}});a.addCommand("Delete",function(){M()})}function r(){function M(P){var O=e.create("body");var Q=P.cloneContents();O.appendChild(Q);return m.serializer.serialize(O,{format:"html"})}function N(O){var Q=M(O);var R=e.createRng();R.selectNode(a.getBody());var P=M(R);return Q===P}a.onKeyDown.add(function(P,R){var Q=R.keyCode,O;if(!A(R)&&(Q==k||Q==f)){O=P.selection.isCollapsed();if(O&&!e.isEmpty(P.getBody())){return}if(tinymce.isIE&&!O){return}if(!O&&!N(P.selection.getRng())){return}P.setContent("");P.selection.setCursorLocation(P.getBody(),0);P.nodeChanged()}})}function J(){a.onKeyDown.add(function(M,N){if(!A(N)&&N.keyCode==65&&j.metaKeyPressed(N)){N.preventDefault();M.execCommand("SelectAll")}})}function L(){if(!a.settings.content_editable){e.bind(a.getDoc(),"focusin",function(M){m.setRng(m.getRng())});e.bind(a.getDoc(),"mousedown",function(M){if(M.target==a.getDoc().documentElement){a.getWin().focus();m.setRng(m.getRng())}})}}function C(){a.onKeyDown.add(function(M,P){if(!A(P)&&P.keyCode===f){if(m.isCollapsed()&&m.getRng(true).startOffset===0){var O=m.getNode();var N=O.previousSibling;if(N&&N.nodeName&&N.nodeName.toLowerCase()==="hr"){e.remove(N);tinymce.dom.Event.cancel(P)}}}})}function z(){if(!Range.prototype.getClientRects){a.onMouseDown.add(function(N,O){if(!A(O)&&O.target.nodeName==="HTML"){var M=N.getBody();M.blur();setTimeout(function(){M.focus()},0)}})}}function h(){a.onClick.add(function(M,N){N=N.target;if(/^(IMG|HR)$/.test(N.nodeName)){m.getSel().setBaseAndExtent(N,0,N,1)}if(N.nodeName=="A"&&e.hasClass(N,"mceItemAnchor")){m.select(N)}M.nodeChanged()})}function c(){function N(){var P=e.getAttribs(m.getStart().cloneNode(false));return function(){var Q=m.getStart();if(Q!==a.getBody()){e.setAttrib(Q,"style",null);F(P,function(R){Q.setAttributeNode(R.cloneNode(true))})}}}function M(){return !m.isCollapsed()&&e.getParent(m.getStart(),e.isBlock)!=e.getParent(m.getEnd(),e.isBlock)}function O(P,Q){Q.preventDefault();return false}a.onKeyPress.add(function(P,R){var Q;if(!A(R)&&(R.keyCode==8||R.keyCode==46)&&M()){Q=N();P.getDoc().execCommand("delete",false,null);Q();R.preventDefault();return false}});e.bind(a.getDoc(),"cut",function(Q){var P;if(!A(Q)&&M()){P=N();a.onKeyUp.addToTop(O);setTimeout(function(){P();a.onKeyUp.remove(O)},0)}})}function b(){var N,M;e.bind(a.getDoc(),"selectionchange",function(){if(M){clearTimeout(M);M=0}M=window.setTimeout(function(){var O=m.getRng();if(!N||!tinymce.dom.RangeUtils.compareRanges(O,N)){a.nodeChanged();N=O}},50)})}function y(){document.body.setAttribute("role","application")}function u(){a.onKeyDown.add(function(M,O){if(!A(O)&&O.keyCode===f){if(m.isCollapsed()&&m.getRng(true).startOffset===0){var N=m.getNode().previousSibling;if(N&&N.nodeName&&N.nodeName.toLowerCase()==="table"){return tinymce.dom.Event.cancel(O)}}}})}function D(){if(o()>7){return}B("RespectVisibilityInDesign",true);a.contentStyles.push(".mceHideBrInPre pre br {display: none}");e.addClass(a.getBody(),"mceHideBrInPre");x.addNodeFilter("pre",function(M,O){var P=M.length,R,N,S,Q;while(P--){R=M[P].getAll("br");N=R.length;while(N--){S=R[N];Q=S.prev;if(Q&&Q.type===3&&Q.value.charAt(Q.value-1)!="\n"){Q.value+="\n"}else{S.parent.insert(new tinymce.html.Node("#text",3),S,true).value="\n"}}}});p.addNodeFilter("pre",function(M,O){var P=M.length,R,N,S,Q;while(P--){R=M[P].getAll("br");N=R.length;while(N--){S=R[N];Q=S.prev;if(Q&&Q.type==3){Q.value=Q.value.replace(/\r?\n$/,"")}}}})}function g(){e.bind(a.getBody(),"mouseup",function(O){var N,M=m.getNode();if(M.nodeName=="IMG"){if(N=e.getStyle(M,"width")){e.setAttrib(M,"width",N.replace(/[^0-9%]+/g,""));e.setStyle(M,"width","")}if(N=e.getStyle(M,"height")){e.setAttrib(M,"height",N.replace(/[^0-9%]+/g,""));e.setStyle(M,"height","")}}})}function d(){a.onKeyDown.add(function(S,T){var R,M,N,P,Q,U,O;R=T.keyCode==k;if(!A(T)&&(R||T.keyCode==f)&&!j.modifierPressed(T)){M=m.getRng();N=M.startContainer;P=M.startOffset;O=M.collapsed;if(N.nodeType==3&&N.nodeValue.length>0&&((P===0&&!O)||(O&&P===(R?0:1)))){U=N.previousSibling;if(U&&U.nodeName=="IMG"){return}nonEmptyElements=S.schema.getNonEmptyElements();T.preventDefault();Q=e.create("br",{id:"__tmp"});N.parentNode.insertBefore(Q,N);S.getDoc().execCommand(R?"ForwardDelete":"Delete",false,null);N=m.getRng().startContainer;U=N.previousSibling;if(U&&U.nodeType==1&&!e.isBlock(U)&&e.isEmpty(U)&&!nonEmptyElements[U.nodeName.toLowerCase()]){e.remove(U)}e.remove("__tmp")}}})}function H(){a.onKeyDown.add(function(Q,R){var O,N,S,M,P;if(A(R)||R.keyCode!=j.BACKSPACE){return}O=m.getRng();N=O.startContainer;S=O.startOffset;M=e.getRoot();P=N;if(!O.collapsed||S!==0){return}while(P&&P.parentNode&&P.parentNode.firstChild==P&&P.parentNode!=M){P=P.parentNode}if(P.tagName==="BLOCKQUOTE"){Q.formatter.toggle("blockquote",null,P);O=e.createRng();O.setStart(N,0);O.setEnd(N,0);m.setRng(O)}})}function G(){function M(){a._refreshContentEditable();B("StyleWithCSS",false);B("enableInlineTableEditing",false);if(!I.object_resizing){B("enableObjectResizing",false)}}if(!I.readonly){a.onBeforeExecCommand.add(M);a.onMouseDown.add(M)}}function t(){function M(N,O){F(e.select("a"),function(R){var P=R.parentNode,Q=e.getRoot();if(P.lastChild===R){while(P&&!e.isBlock(P)){if(P.parentNode.lastChild!==P||P===Q){return}P=P.parentNode}e.add(P,"br",{"data-mce-bogus":1})}})}a.onExecCommand.add(function(N,O){if(O==="CreateLink"){M(N)}});a.onSetContent.add(m.onSetContent.add(M))}function n(){if(I.forced_root_block){a.onInit.add(function(){B("DefaultParagraphSeparator",I.forced_root_block)})}}function q(){function M(O,N){if(!O||!N.initial){a.execCommand("mceRepaint")}}a.onUndo.add(M);a.onRedo.add(M);a.onSetContent.add(M)}function i(){a.onKeyDown.add(function(N,O){var M;if(!A(O)&&O.keyCode==f){M=N.getDoc().selection.createRange();if(M&&M.item){O.preventDefault();N.undoManager.beforeChange();e.remove(M.item(0));N.undoManager.add()}}})}function s(){var M;if(o()>=10){M="";F("p div h1 h2 h3 h4 h5 h6".split(" "),function(N,O){M+=(O>0?",":"")+N+":empty"});a.contentStyles.push(M+"{padding-right: 1px !important}")}}function v(){var O,N,ae,M,Z,ac,aa,ad,P,Q,ab,X,W,Y=document,U=a.getDoc();if(!I.object_resizing||I.webkit_fake_resize===false){return}B("enableObjectResizing",false);ab={n:[0.5,0,0,-1],e:[1,0.5,1,0],s:[0.5,1,0,1],w:[0,0.5,-1,0],nw:[0,0,-1,-1],ne:[1,0,1,-1],se:[1,1,1,1],sw:[0,1,-1,1]};function S(ai){var ah,ag;ah=ai.screenX-ac;ag=ai.screenY-aa;X=ah*Z[2]+ad;W=ag*Z[3]+P;X=X<5?5:X;W=W<5?5:W;if(j.modifierPressed(ai)||(ae.nodeName=="IMG"&&Z[2]*Z[3]!==0)){X=Math.round(W/Q);W=Math.round(X*Q)}e.setStyles(M,{width:X,height:W});if(Z[2]<0&&M.clientWidth<=X){e.setStyle(M,"left",O+(ad-X))}if(Z[3]<0&&M.clientHeight<=W){e.setStyle(M,"top",N+(P-W))}}function af(){function ag(ah,ai){if(ai){if(ae.style[ah]||!a.schema.isValid(ae.nodeName.toLowerCase(),ah)){e.setStyle(ae,ah,ai)}else{e.setAttrib(ae,ah,ai)}}}ag("width",X);ag("height",W);e.unbind(U,"mousemove",S);e.unbind(U,"mouseup",af);if(Y!=U){e.unbind(Y,"mousemove",S);e.unbind(Y,"mouseup",af)}e.remove(M);R(ae)}function R(aj){var ah,ai,ag;T();ah=e.getPos(aj);O=ah.x;N=ah.y;ai=aj.offsetWidth;ag=aj.offsetHeight;if(ae!=aj){ae=aj;X=W=0}F(ab,function(am,ak){var al;al=e.get("mceResizeHandle"+ak);if(!al){al=e.add(U.documentElement,"div",{id:"mceResizeHandle"+ak,"class":"mceResizeHandle",style:"cursor:"+ak+"-resize; margin:0; padding:0"});e.bind(al,"mousedown",function(an){an.preventDefault();af();ac=an.screenX;aa=an.screenY;ad=ae.clientWidth;P=ae.clientHeight;Q=P/ad;Z=am;M=ae.cloneNode(true);e.addClass(M,"mceClonedResizable");e.setStyles(M,{left:O,top:N,margin:0});U.documentElement.appendChild(M);e.bind(U,"mousemove",S);e.bind(U,"mouseup",af);if(Y!=U){e.bind(Y,"mousemove",S);e.bind(Y,"mouseup",af)}})}else{e.show(al)}e.setStyles(al,{left:(ai*am[0]+O)-(al.offsetWidth/2),top:(ag*am[1]+N)-(al.offsetHeight/2)})});if(!tinymce.isOpera&&ae.nodeName=="IMG"){ae.setAttribute("data-mce-selected","1")}}function T(){if(ae){ae.removeAttribute("data-mce-selected")}for(var ag in ab){e.hide("mceResizeHandle"+ag)}}a.contentStyles.push(".mceResizeHandle {position: absolute;border: 1px solid black;background: #FFF;width: 5px;height: 5px;z-index: 10000}.mceResizeHandle:hover {background: #000}img[data-mce-selected] {outline: 1px solid black}img.mceClonedResizable, table.mceClonedResizable {position: absolute;outline: 1px dashed black;opacity: .5;z-index: 10000}");function V(){var ag=e.getParent(m.getNode(),"table,img");F(e.select("img[data-mce-selected]"),function(ah){ah.removeAttribute("data-mce-selected")});if(ag){R(ag)}else{T()}}a.onNodeChange.add(V);e.bind(U,"selectionchange",V);a.serializer.addAttributeFilter("data-mce-selected",function(ag,ah){var ai=ag.length;while(ai--){ag[ai].attr(ah,null)}})}function E(){if(o()<9){x.addNodeFilter("noscript",function(M){var N=M.length,O,P;while(N--){O=M[N];P=O.firstChild;if(P){O.attr("data-mce-innertext",P.value)}}});p.addNodeFilter("noscript",function(M){var N=M.length,O,Q,P;while(N--){O=M[N];Q=M[N].firstChild;if(Q){Q.value=tinymce.html.Entities.decode(Q.value)}else{P=O.attributes.map["data-mce-innertext"];if(P){O.attr("data-mce-innertext",null);Q=new tinymce.html.Node("#text",3);Q.value=P;Q.raw=true;O.append(Q)}}}})}}function l(){a.contentStyles.push("body {min-height: 100px}");a.onClick.add(function(M,N){if(N.target.nodeName=="HTML"){a.execCommand("SelectAll");a.selection.collapse(true);a.nodeChanged()}})}u();H();r();if(tinymce.isWebKit){d();K();L();h();n();if(tinymce.isIDevice){b()}else{v();J()}}if(tinymce.isIE&&!tinymce.isIE11){C();y();D();g();i();s();E()}if(tinymce.isIE11){l()}if(tinymce.isGecko&&!tinymce.isIE11){C();z();c();G();t();q()}if(tinymce.isOpera){v()}};(function(j){var a,g,d,k=/[&<>\"\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,b=/[<>&\u007E-\uD7FF\uE000-\uFFEF]|[\uD800-\uDBFF][\uDC00-\uDFFF]/g,f=/[<>&\"\']/g,c=/&(#x|#)?([\w]+);/g,i={128:"\u20AC",130:"\u201A",131:"\u0192",132:"\u201E",133:"\u2026",134:"\u2020",135:"\u2021",136:"\u02C6",137:"\u2030",138:"\u0160",139:"\u2039",140:"\u0152",142:"\u017D",145:"\u2018",146:"\u2019",147:"\u201C",148:"\u201D",149:"\u2022",150:"\u2013",151:"\u2014",152:"\u02DC",153:"\u2122",154:"\u0161",155:"\u203A",156:"\u0153",158:"\u017E",159:"\u0178"};g={'"':"&quot;","'":"&#39;","<":"&lt;",">":"&gt;","&":"&amp;"};d={"&lt;":"<","&gt;":">","&amp;":"&","&quot;":'"',"&apos;":"'"};function h(l){var m;m=document.createElement("div");m.innerHTML=l;return m.textContent||m.innerText||l}function e(m,p){var n,o,l,q={};if(m){m=m.split(",");p=p||10;for(n=0;n<m.length;n+=2){o=String.fromCharCode(parseInt(m[n],p));if(!g[o]){l="&"+m[n+1]+";";q[o]=l;q[l]=o}}return q}}a=e("50,nbsp,51,iexcl,52,cent,53,pound,54,curren,55,yen,56,brvbar,57,sect,58,uml,59,copy,5a,ordf,5b,laquo,5c,not,5d,shy,5e,reg,5f,macr,5g,deg,5h,plusmn,5i,sup2,5j,sup3,5k,acute,5l,micro,5m,para,5n,middot,5o,cedil,5p,sup1,5q,ordm,5r,raquo,5s,frac14,5t,frac12,5u,frac34,5v,iquest,60,Agrave,61,Aacute,62,Acirc,63,Atilde,64,Auml,65,Aring,66,AElig,67,Ccedil,68,Egrave,69,Eacute,6a,Ecirc,6b,Euml,6c,Igrave,6d,Iacute,6e,Icirc,6f,Iuml,6g,ETH,6h,Ntilde,6i,Ograve,6j,Oacute,6k,Ocirc,6l,Otilde,6m,Ouml,6n,times,6o,Oslash,6p,Ugrave,6q,Uacute,6r,Ucirc,6s,Uuml,6t,Yacute,6u,THORN,6v,szlig,70,agrave,71,aacute,72,acirc,73,atilde,74,auml,75,aring,76,aelig,77,ccedil,78,egrave,79,eacute,7a,ecirc,7b,euml,7c,igrave,7d,iacute,7e,icirc,7f,iuml,7g,eth,7h,ntilde,7i,ograve,7j,oacute,7k,ocirc,7l,otilde,7m,ouml,7n,divide,7o,oslash,7p,ugrave,7q,uacute,7r,ucirc,7s,uuml,7t,yacute,7u,thorn,7v,yuml,ci,fnof,sh,Alpha,si,Beta,sj,Gamma,sk,Delta,sl,Epsilon,sm,Zeta,sn,Eta,so,Theta,sp,Iota,sq,Kappa,sr,Lambda,ss,Mu,st,Nu,su,Xi,sv,Omicron,t0,Pi,t1,Rho,t3,Sigma,t4,Tau,t5,Upsilon,t6,Phi,t7,Chi,t8,Psi,t9,Omega,th,alpha,ti,beta,tj,gamma,tk,delta,tl,epsilon,tm,zeta,tn,eta,to,theta,tp,iota,tq,kappa,tr,lambda,ts,mu,tt,nu,tu,xi,tv,omicron,u0,pi,u1,rho,u2,sigmaf,u3,sigma,u4,tau,u5,upsilon,u6,phi,u7,chi,u8,psi,u9,omega,uh,thetasym,ui,upsih,um,piv,812,bull,816,hellip,81i,prime,81j,Prime,81u,oline,824,frasl,88o,weierp,88h,image,88s,real,892,trade,89l,alefsym,8cg,larr,8ch,uarr,8ci,rarr,8cj,darr,8ck,harr,8dl,crarr,8eg,lArr,8eh,uArr,8ei,rArr,8ej,dArr,8ek,hArr,8g0,forall,8g2,part,8g3,exist,8g5,empty,8g7,nabla,8g8,isin,8g9,notin,8gb,ni,8gf,prod,8gh,sum,8gi,minus,8gn,lowast,8gq,radic,8gt,prop,8gu,infin,8h0,ang,8h7,and,8h8,or,8h9,cap,8ha,cup,8hb,int,8hk,there4,8hs,sim,8i5,cong,8i8,asymp,8j0,ne,8j1,equiv,8j4,le,8j5,ge,8k2,sub,8k3,sup,8k4,nsub,8k6,sube,8k7,supe,8kl,oplus,8kn,otimes,8l5,perp,8m5,sdot,8o8,lceil,8o9,rceil,8oa,lfloor,8ob,rfloor,8p9,lang,8pa,rang,9ea,loz,9j0,spades,9j3,clubs,9j5,hearts,9j6,diams,ai,OElig,aj,oelig,b0,Scaron,b1,scaron,bo,Yuml,m6,circ,ms,tilde,802,ensp,803,emsp,809,thinsp,80c,zwnj,80d,zwj,80e,lrm,80f,rlm,80j,ndash,80k,mdash,80o,lsquo,80p,rsquo,80q,sbquo,80s,ldquo,80t,rdquo,80u,bdquo,810,dagger,811,Dagger,81g,permil,81p,lsaquo,81q,rsaquo,85c,euro",32);j.html=j.html||{};j.html.Entities={encodeRaw:function(m,l){return m.replace(l?k:b,function(n){return g[n]||n})},encodeAllRaw:function(l){return(""+l).replace(f,function(m){return g[m]||m})},encodeNumeric:function(m,l){return m.replace(l?k:b,function(n){if(n.length>1){return"&#"+(((n.charCodeAt(0)-55296)*1024)+(n.charCodeAt(1)-56320)+65536)+";"}return g[n]||"&#"+n.charCodeAt(0)+";"})},encodeNamed:function(n,l,m){m=m||a;return n.replace(l?k:b,function(o){return g[o]||m[o]||o})},getEncodeFunc:function(l,o){var p=j.html.Entities;o=e(o)||a;function m(r,q){return r.replace(q?k:b,function(s){return g[s]||o[s]||"&#"+s.charCodeAt(0)+";"||s})}function n(r,q){return p.encodeNamed(r,q,o)}l=j.makeMap(l.replace(/\+/g,","));if(l.named&&l.numeric){return m}if(l.named){if(o){return n}return p.encodeNamed}if(l.numeric){return p.encodeNumeric}return p.encodeRaw},decode:function(l){return l.replace(c,function(n,m,o){if(m){o=parseInt(o,m.length===2?16:10);if(o>65535){o-=65536;return String.fromCharCode(55296+(o>>10),56320+(o&1023))}else{return i[o]||String.fromCharCode(o)}}return d[n]||a[n]||h(n)})}}})(tinymce);tinymce.html.Styles=function(d,f){var k=/rgb\s*\(\s*([0-9]+)\s*,\s*([0-9]+)\s*,\s*([0-9]+)\s*\)/gi,h=/(?:url(?:(?:\(\s*\"([^\"]+)\"\s*\))|(?:\(\s*\'([^\']+)\'\s*\))|(?:\(\s*([^)\s]+)\s*\))))|(?:\'([^\']+)\')|(?:\"([^\"]+)\")/gi,b=/\s*([^:]+):\s*([^;]+);?/g,l=/\s+$/,m=/rgb/,e,g,a={},j;d=d||{};j="\\\" \\' \\; \\: ; : \uFEFF".split(" ");for(g=0;g<j.length;g++){a[j[g]]="\uFEFF"+g;a["\uFEFF"+g]=j[g]}function c(n,q,p,i){function o(r){r=parseInt(r).toString(16);return r.length>1?r:"0"+r}return"#"+o(q)+o(p)+o(i)}return{toHex:function(i){return i.replace(k,c)},parse:function(s){var z={},q,n,x,r,v=d.url_converter,y=d.url_converter_scope||this;function p(D,G){var F,C,B,E;if(z["border-image"]==="none"){delete z["border-image"]}F=z[D+"-top"+G];if(!F){return}C=z[D+"-right"+G];if(F!=C){return}B=z[D+"-bottom"+G];if(C!=B){return}E=z[D+"-left"+G];if(B!=E){return}z[D+G]=E;delete z[D+"-top"+G];delete z[D+"-right"+G];delete z[D+"-bottom"+G];delete z[D+"-left"+G]}function u(C){var D=z[C],B;if(!D||D.indexOf(" ")<0){return}D=D.split(" ");B=D.length;while(B--){if(D[B]!==D[0]){return false}}z[C]=D[0];return true}function A(D,C,B,E){if(!u(C)){return}if(!u(B)){return}if(!u(E)){return}z[D]=z[C]+" "+z[B]+" "+z[E];delete z[C];delete z[B];delete z[E]}function t(B){r=true;return a[B]}function i(C,B){if(r){C=C.replace(/\uFEFF[0-9]/g,function(D){return a[D]})}if(!B){C=C.replace(/\\([\'\";:])/g,"$1")}return C}function o(C,B,F,E,G,D){G=G||D;if(G){G=i(G);return"'"+G.replace(/\'/g,"\\'")+"'"}B=i(B||F||E);if(v){B=v.call(y,B,"style")}return"url('"+B.replace(/\'/g,"\\'")+"')"}if(s){s=s.replace(/\\[\"\';:\uFEFF]/g,t).replace(/\"[^\"]+\"|\'[^\']+\'/g,function(B){return B.replace(/[;:]/g,t)});while(q=b.exec(s)){n=q[1].replace(l,"").toLowerCase();x=q[2].replace(l,"");if(n&&x.length>0){if(n==="font-weight"&&x==="700"){x="bold"}else{if(n==="color"||n==="background-color"){x=x.toLowerCase()}}x=x.replace(k,c);x=x.replace(h,o);z[n]=r?i(x,true):x}b.lastIndex=q.index+q[0].length}p("border","");p("border","-width");p("border","-color");p("border","-style");p("padding","");p("margin","");A("border","border-width","border-style","border-color");if(z.border==="medium none"){delete z.border}}return z},serialize:function(p,r){var o="",n,q;function i(t){var x,u,s,v;x=f.styles[t];if(x){for(u=0,s=x.length;u<s;u++){t=x[u];v=p[t];if(v!==e&&v.length>0){o+=(o.length>0?" ":"")+t+": "+v+";"}}}}if(r&&f&&f.styles){i("*");i(r)}else{for(n in p){q=p[n];if(q!==e&&q.length>0){o+=(o.length>0?" ":"")+n+": "+q+";"}}}return o}}};(function(f){var a={},e=f.makeMap,g=f.each;function d(j,i){return j.split(i||",")}function h(m,l){var j,k={};function i(n){return n.replace(/[A-Z]+/g,function(o){return i(m[o])})}for(j in m){if(m.hasOwnProperty(j)){m[j]=i(m[j])}}i(l).replace(/#/g,"#text").replace(/(\w+)\[([^\]]+)\]\[([^\]]*)\]/g,function(q,o,n,p){n=d(n,"|");k[o]={attributes:e(n),attributesOrder:n,children:e(p,"|",{"#comment":{}})}});return k}function b(){var i=a.html5;if(!i){i=a.html5=h({A:"id|accesskey|class|dir|draggable|item|hidden|itemprop|role|spellcheck|style|subject|title|onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"#|a|abbr|area|audio|b|bdo|br|button|canvas|cite|code|command|datalist|del|dfn|em|embed|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|meta|meter|noscript|object|output|progress|q|ruby|samp|script|select|small|span|strong|sub|sup|svg|textarea|time|var|video|wbr",C:"#|a|abbr|area|address|article|aside|audio|b|bdo|blockquote|br|button|canvas|cite|code|command|datalist|del|details|dfn|dialog|div|dl|em|embed|fieldset|figure|footer|form|h1|h2|h3|h4|h5|h6|header|hgroup|hr|i|iframe|img|input|ins|kbd|keygen|label|link|map|mark|menu|meta|meter|nav|noscript|ol|object|output|p|pre|progress|q|ruby|samp|script|section|select|small|span|strong|style|sub|sup|svg|table|textarea|time|ul|var|video"},"html[A|manifest][body|head]head[A][base|command|link|meta|noscript|script|style|title]title[A][#]base[A|href|target][]link[A|href|rel|media|type|sizes][]meta[A|http-equiv|name|content|charset][]style[A|type|media|scoped][#]script[A|charset|type|src|defer|async][#]noscript[A][C]body[A][C]section[A][C]nav[A][C]article[A][C]aside[A][C]h1[A][B]h2[A][B]h3[A][B]h4[A][B]h5[A][B]h6[A][B]hgroup[A][h1|h2|h3|h4|h5|h6]header[A][C]footer[A][C]address[A][C]p[A][B]br[A][]pre[A][B]dialog[A][dd|dt]blockquote[A|cite][C]ol[A|start|reversed][li]ul[A][li]li[A|value][C]dl[A][dd|dt]dt[A][B]dd[A][C]a[A|href|target|ping|rel|media|type][B]em[A][B]strong[A][B]small[A][B]cite[A][B]q[A|cite][B]dfn[A][B]abbr[A][B]code[A][B]var[A][B]samp[A][B]kbd[A][B]sub[A][B]sup[A][B]i[A][B]b[A][B]mark[A][B]progress[A|value|max][B]meter[A|value|min|max|low|high|optimum][B]time[A|datetime][B]ruby[A][B|rt|rp]rt[A][B]rp[A][B]bdo[A][B]span[A][B]ins[A|cite|datetime][B]del[A|cite|datetime][B]figure[A][C|legend|figcaption]figcaption[A][C]img[A|alt|src|height|width|usemap|ismap][]iframe[A|name|src|height|width|sandbox|seamless][]embed[A|src|height|width|type][]object[A|data|type|height|width|usemap|name|form|classid][param]param[A|name|value][]details[A|open][C|legend]command[A|type|label|icon|disabled|checked|radiogroup][]menu[A|type|label][C|li]legend[A][C|B]div[A][C]source[A|src|type|media][]audio[A|src|autobuffer|autoplay|loop|controls][source]video[A|src|autobuffer|autoplay|loop|controls|width|height|poster][source]hr[A][]form[A|accept-charset|action|autocomplete|enctype|method|name|novalidate|target][C]fieldset[A|disabled|form|name][C|legend]label[A|form|for][B]input[A|type|accept|alt|autocomplete|autofocus|checked|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|height|list|max|maxlength|min|multiple|pattern|placeholder|readonly|required|size|src|step|width|files|value|name][]button[A|autofocus|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|name|value|type][B]select[A|autofocus|disabled|form|multiple|name|size][option|optgroup]datalist[A][B|option]optgroup[A|disabled|label][option]option[A|disabled|selected|label|value][]textarea[A|autofocus|disabled|form|maxlength|name|placeholder|readonly|required|rows|cols|wrap][]keygen[A|autofocus|challenge|disabled|form|keytype|name][]output[A|for|form|name][B]canvas[A|width|height][]map[A|name][B|C]area[A|shape|coords|href|alt|target|media|rel|ping|type][]mathml[A][]svg[A][]table[A|border][caption|colgroup|thead|tfoot|tbody|tr]caption[A][C]colgroup[A|span][col]col[A|span][]thead[A][tr]tfoot[A][tr]tbody[A][tr]tr[A][th|td]th[A|headers|rowspan|colspan|scope][B]td[A|headers|rowspan|colspan][C]wbr[A][]")}return i}function c(){var i=a.html4;if(!i){i=a.html4=h({Z:"H|K|N|O|P",Y:"X|form|R|Q",ZG:"E|span|width|align|char|charoff|valign",X:"p|T|div|U|W|isindex|fieldset|table",ZF:"E|align|char|charoff|valign",W:"pre|hr|blockquote|address|center|noframes",ZE:"abbr|axis|headers|scope|rowspan|colspan|align|char|charoff|valign|nowrap|bgcolor|width|height",ZD:"[E][S]",U:"ul|ol|dl|menu|dir",ZC:"p|Y|div|U|W|table|br|span|bdo|object|applet|img|map|K|N|Q",T:"h1|h2|h3|h4|h5|h6",ZB:"X|S|Q",S:"R|P",ZA:"a|G|J|M|O|P",R:"a|H|K|N|O",Q:"noscript|P",P:"ins|del|script",O:"input|select|textarea|label|button",N:"M|L",M:"em|strong|dfn|code|q|samp|kbd|var|cite|abbr|acronym",L:"sub|sup",K:"J|I",J:"tt|i|b|u|s|strike",I:"big|small|font|basefont",H:"G|F",G:"br|span|bdo",F:"object|applet|img|map|iframe",E:"A|B|C",D:"accesskey|tabindex|onfocus|onblur",C:"onclick|ondblclick|onmousedown|onmouseup|onmouseover|onmousemove|onmouseout|onkeypress|onkeydown|onkeyup",B:"lang|xml:lang|dir",A:"id|class|style|title"},"script[id|charset|type|language|src|defer|xml:space][]style[B|id|type|media|title|xml:space][]object[E|declare|classid|codebase|data|type|codetype|archive|standby|width|height|usemap|name|tabindex|align|border|hspace|vspace][#|param|Y]param[id|name|value|valuetype|type][]p[E|align][#|S]a[E|D|charset|type|name|href|hreflang|rel|rev|shape|coords|target][#|Z]br[A|clear][]span[E][#|S]bdo[A|C|B][#|S]applet[A|codebase|archive|code|object|alt|name|width|height|align|hspace|vspace][#|param|Y]h1[E|align][#|S]img[E|src|alt|name|longdesc|width|height|usemap|ismap|align|border|hspace|vspace][]map[B|C|A|name][X|form|Q|area]h2[E|align][#|S]iframe[A|longdesc|name|src|frameborder|marginwidth|marginheight|scrolling|align|width|height][#|Y]h3[E|align][#|S]tt[E][#|S]i[E][#|S]b[E][#|S]u[E][#|S]s[E][#|S]strike[E][#|S]big[E][#|S]small[E][#|S]font[A|B|size|color|face][#|S]basefont[id|size|color|face][]em[E][#|S]strong[E][#|S]dfn[E][#|S]code[E][#|S]q[E|cite][#|S]samp[E][#|S]kbd[E][#|S]var[E][#|S]cite[E][#|S]abbr[E][#|S]acronym[E][#|S]sub[E][#|S]sup[E][#|S]input[E|D|type|name|value|checked|disabled|readonly|size|maxlength|src|alt|usemap|onselect|onchange|accept|align][]select[E|name|size|multiple|disabled|tabindex|onfocus|onblur|onchange][optgroup|option]optgroup[E|disabled|label][option]option[E|selected|disabled|label|value][]textarea[E|D|name|rows|cols|disabled|readonly|onselect|onchange][]label[E|for|accesskey|onfocus|onblur][#|S]button[E|D|name|value|type|disabled][#|p|T|div|U|W|table|G|object|applet|img|map|K|N|Q]h4[E|align][#|S]ins[E|cite|datetime][#|Y]h5[E|align][#|S]del[E|cite|datetime][#|Y]h6[E|align][#|S]div[E|align][#|Y]ul[E|type|compact][li]li[E|type|value][#|Y]ol[E|type|compact|start][li]dl[E|compact][dt|dd]dt[E][#|S]dd[E][#|Y]menu[E|compact][li]dir[E|compact][li]pre[E|width|xml:space][#|ZA]hr[E|align|noshade|size|width][]blockquote[E|cite][#|Y]address[E][#|S|p]center[E][#|Y]noframes[E][#|Y]isindex[A|B|prompt][]fieldset[E][#|legend|Y]legend[E|accesskey|align][#|S]table[E|summary|width|border|frame|rules|cellspacing|cellpadding|align|bgcolor][caption|col|colgroup|thead|tfoot|tbody|tr]caption[E|align][#|S]col[ZG][]colgroup[ZG][col]thead[ZF][tr]tr[ZF|bgcolor][th|td]th[E|ZE][#|Y]form[E|action|method|name|enctype|onsubmit|onreset|accept|accept-charset|target][#|X|R|Q]noscript[E][#|Y]td[E|ZE][#|Y]tfoot[ZF][tr]tbody[ZF][tr]area[E|D|shape|coords|href|nohref|alt|target][]base[id|href|target][]body[E|onload|onunload|background|bgcolor|text|link|vlink|alink][#|Y]")}return i}f.html.Schema=function(A){var u=this,s={},k={},j=[],D,y;var o,q,z,r,v,n,p={};function m(F,E,H){var G=A[F];if(!G){G=a[F];if(!G){G=e(E," ",e(E.toUpperCase()," "));G=f.extend(G,H);a[F]=G}}else{G=e(G,",",e(G.toUpperCase()," "))}return G}A=A||{};y=A.schema=="html5"?b():c();if(A.verify_html===false){A.valid_elements="*[*]"}if(A.valid_styles){D={};g(A.valid_styles,function(F,E){D[E]=f.explode(F)})}o=m("whitespace_elements","pre script noscript style textarea");q=m("self_closing_elements","colgroup dd dt li option p td tfoot th thead tr");z=m("short_ended_elements","area base basefont br col frame hr img input isindex link meta param embed source wbr");r=m("boolean_attributes","checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls");n=m("non_empty_elements","td th iframe video audio object script",z);textBlockElementsMap=m("text_block_elements","h1 h2 h3 h4 h5 h6 p div address pre form blockquote center dir fieldset header footer article section hgroup aside nav figure");v=m("block_elements","hr table tbody thead tfoot th tr td li ol ul caption dl dt dd noscript menu isindex samp option datalist select optgroup",textBlockElementsMap);function i(E){return new RegExp("^"+E.replace(/([?+*])/g,".$1")+"$")}function C(L){var K,G,Z,V,aa,F,I,U,X,Q,Y,ac,O,J,W,E,S,H,ab,ad,P,T,N=/^([#+\-])?([^\[\/]+)(?:\/([^\[]+))?(?:\[([^\]]+)\])?$/,R=/^([!\-])?(\w+::\w+|[^=:<]+)?(?:([=:<])(.*))?$/,M=/[*?+]/;if(L){L=d(L);if(s["@"]){S=s["@"].attributes;H=s["@"].attributesOrder}for(K=0,G=L.length;K<G;K++){F=N.exec(L[K]);if(F){W=F[1];Q=F[2];E=F[3];X=F[4];O={};J=[];I={attributes:O,attributesOrder:J};if(W==="#"){I.paddEmpty=true}if(W==="-"){I.removeEmpty=true}if(S){for(ad in S){O[ad]=S[ad]}J.push.apply(J,H)}if(X){X=d(X,"|");for(Z=0,V=X.length;Z<V;Z++){F=R.exec(X[Z]);if(F){U={};ac=F[1];Y=F[2].replace(/::/g,":");W=F[3];T=F[4];if(ac==="!"){I.attributesRequired=I.attributesRequired||[];I.attributesRequired.push(Y);U.required=true}if(ac==="-"){delete O[Y];J.splice(f.inArray(J,Y),1);continue}if(W){if(W==="="){I.attributesDefault=I.attributesDefault||[];I.attributesDefault.push({name:Y,value:T});U.defaultValue=T}if(W===":"){I.attributesForced=I.attributesForced||[];I.attributesForced.push({name:Y,value:T});U.forcedValue=T}if(W==="<"){U.validValues=e(T,"?")}}if(M.test(Y)){I.attributePatterns=I.attributePatterns||[];U.pattern=i(Y);I.attributePatterns.push(U)}else{if(!O[Y]){J.push(Y)}O[Y]=U}}}}if(!S&&Q=="@"){S=O;H=J}if(E){I.outputName=Q;s[E]=I}if(M.test(Q)){I.pattern=i(Q);j.push(I)}else{s[Q]=I}}}}}function t(E){s={};j=[];C(E);g(y,function(G,F){k[F]=G.children})}function l(F){var E=/^(~)?(.+)$/;if(F){g(d(F),function(J){var H=E.exec(J),I=H[1]==="~",K=I?"span":"div",G=H[2];k[G]=k[K];p[G]=K;if(!I){v[G.toUpperCase()]={};v[G]={}}if(!s[G]){s[G]=s[K]}g(k,function(L,M){if(L[K]){L[G]=L[K]}})})}}function x(F){var E=/^([+\-]?)(\w+)\[([^\]]+)\]$/;if(F){g(d(F),function(J){var I=E.exec(J),G,H;if(I){H=I[1];if(H){G=k[I[2]]}else{G=k[I[2]]={"#comment":{}}}G=k[I[2]];g(d(I[3],"|"),function(K){if(H==="-"){delete G[K]}else{G[K]={}}})}})}}function B(E){var G=s[E],F;if(G){return G}F=j.length;while(F--){G=j[F];if(G.pattern.test(E)){return G}}}if(!A.valid_elements){g(y,function(F,E){s[E]={attributes:F.attributes,attributesOrder:F.attributesOrder};k[E]=F.children});if(A.schema!="html5"){g(d("strong/b,em/i"),function(E){E=d(E,"/");s[E[1]].outputName=E[0]})}s.img.attributesDefault=[{name:"alt",value:""}];g(d("ol,ul,sub,sup,blockquote,span,font,a,table,tbody,tr,strong,em,b,i"),function(E){if(s[E]){s[E].removeEmpty=true}});g(d("p,h1,h2,h3,h4,h5,h6,th,td,pre,div,address,caption"),function(E){s[E].paddEmpty=true})}else{t(A.valid_elements)}l(A.custom_elements);x(A.valid_children);C(A.extended_valid_elements);x("+ol[ul|ol],+ul[ul|ol]");if(A.invalid_elements){f.each(f.explode(A.invalid_elements),function(E){if(s[E]){delete s[E]}})}if(!B("span")){C("span[!data-mce-type|*]")}u.children=k;u.styles=D;u.getBoolAttrs=function(){return r};u.getBlockElements=function(){return v};u.getTextBlockElements=function(){return textBlockElementsMap};u.getShortEndedElements=function(){return z};u.getSelfClosingElements=function(){return q};u.getNonEmptyElements=function(){return n};u.getWhiteSpaceElements=function(){return o};u.isValidChild=function(E,G){var F=k[E];return !!(F&&F[G])};u.isValid=function(F,E){var H,G,I=B(F);if(I){if(E){if(I.attributes[E]){return true}H=I.attributePatterns;if(H){G=H.length;while(G--){if(H[G].pattern.test(F)){return true}}}}else{return true}}return false};u.getElementRule=B;u.getCustomElements=function(){return p};u.addValidElements=C;u.setValidElements=t;u.addCustomElements=l;u.addValidChildren=x;u.elements=s}})(tinymce);(function(a){a.html.SaxParser=function(c,e){var b=this,d=function(){};c=c||{};b.schema=e=e||new a.html.Schema();if(c.fix_self_closing!==false){c.fix_self_closing=true}a.each("comment cdata text start end pi doctype".split(" "),function(f){if(f){b[f]=c[f]||d}});b.parse=function(E){var n=this,g,G=0,I,B,A=[],N,Q,C,r,z,s,M,H,O,v,m,k,t,R,o,P,F,S,L,f,J,l,D,K,h,x=0,j=a.html.Entities.decode,y,q;function u(T){var V,U;V=A.length;while(V--){if(A[V].name===T){break}}if(V>=0){for(U=A.length-1;U>=V;U--){T=A[U];if(T.valid){n.end(T.name)}}A.length=V}}function p(U,T,Y,X,W){var Z,V;T=T.toLowerCase();Y=T in H?T:j(Y||X||W||"");if(v&&!z&&T.indexOf("data-")!==0){Z=P[T];if(!Z&&F){V=F.length;while(V--){Z=F[V];if(Z.pattern.test(T)){break}}if(V===-1){Z=null}}if(!Z){return}if(Z.validValues&&!(Y in Z.validValues)){return}}N.map[T]=Y;N.push({name:T,value:Y})}l=new RegExp("<(?:(?:!--([\\w\\W]*?)-->)|(?:!\\[CDATA\\[([\\w\\W]*?)\\]\\]>)|(?:!DOCTYPE([\\w\\W]*?)>)|(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|(?:\\/([^>]+)>)|(?:([A-Za-z0-9\\-\\:\\.]+)((?:\\s+[^\"'>]+(?:(?:\"[^\"]*\")|(?:'[^']*')|[^>]*))*|\\/|\\s+)>))","g");D=/([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g;K={script:/<\/script[^>]*>/gi,style:/<\/style[^>]*>/gi,noscript:/<\/noscript[^>]*>/gi};M=e.getShortEndedElements();J=c.self_closing_elements||e.getSelfClosingElements();H=e.getBoolAttrs();v=c.validate;s=c.remove_internals;y=c.fix_self_closing;q=a.isIE;o=/^:/;while(g=l.exec(E)){if(G<g.index){n.text(j(E.substr(G,g.index-G)))}if(I=g[6]){I=I.toLowerCase();if(q&&o.test(I)){I=I.substr(1)}u(I)}else{if(I=g[7]){I=I.toLowerCase();if(q&&o.test(I)){I=I.substr(1)}O=I in M;if(y&&J[I]&&A.length>0&&A[A.length-1].name===I){u(I)}if(!v||(m=e.getElementRule(I))){k=true;if(v){P=m.attributes;F=m.attributePatterns}if(R=g[8]){z=R.indexOf("data-mce-type")!==-1;if(z&&s){k=false}N=[];N.map={};R.replace(D,p)}else{N=[];N.map={}}if(v&&!z){S=m.attributesRequired;L=m.attributesDefault;f=m.attributesForced;if(f){Q=f.length;while(Q--){t=f[Q];r=t.name;h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}if(L){Q=L.length;while(Q--){t=L[Q];r=t.name;if(!(r in N.map)){h=t.value;if(h==="{$uid}"){h="mce_"+x++}N.map[r]=h;N.push({name:r,value:h})}}}if(S){Q=S.length;while(Q--){if(S[Q] in N.map){break}}if(Q===-1){k=false}}if(N.map["data-mce-bogus"]){k=false}}if(k){n.start(I,N,O)}}else{k=false}if(B=K[I]){B.lastIndex=G=g.index+g[0].length;if(g=B.exec(E)){if(k){C=E.substr(G,g.index-G)}G=g.index+g[0].length}else{C=E.substr(G);G=E.length}if(k&&C.length>0){n.text(C,true)}if(k){n.end(I)}l.lastIndex=G;continue}if(!O){if(!R||R.indexOf("/")!=R.length-1){A.push({name:I,valid:k})}else{if(k){n.end(I)}}}}else{if(I=g[1]){n.comment(I)}else{if(I=g[2]){n.cdata(I)}else{if(I=g[3]){n.doctype(I)}else{if(I=g[4]){n.pi(I,g[5])}}}}}}G=g.index+g[0].length}if(G<E.length){n.text(j(E.substr(G)))}for(Q=A.length-1;Q>=0;Q--){I=A[Q];if(I.valid){n.end(I.name)}}}}})(tinymce);(function(d){var c=/^[ \t\r\n]*$/,e={"#text":3,"#comment":8,"#cdata":4,"#pi":7,"#doctype":10,"#document-fragment":11};function a(k,l,j){var i,h,f=j?"lastChild":"firstChild",g=j?"prev":"next";if(k[f]){return k[f]}if(k!==l){i=k[g];if(i){return i}for(h=k.parent;h&&h!==l;h=h.parent){i=h[g];if(i){return i}}}}function b(f,g){this.name=f;this.type=g;if(g===1){this.attributes=[];this.attributes.map={}}}d.extend(b.prototype,{replace:function(g){var f=this;if(g.parent){g.remove()}f.insert(g,f);f.remove();return f},attr:function(h,l){var f=this,g,j,k;if(typeof h!=="string"){for(j in h){f.attr(j,h[j])}return f}if(g=f.attributes){if(l!==k){if(l===null){if(h in g.map){delete g.map[h];j=g.length;while(j--){if(g[j].name===h){g=g.splice(j,1);return f}}}return f}if(h in g.map){j=g.length;while(j--){if(g[j].name===h){g[j].value=l;break}}}else{g.push({name:h,value:l})}g.map[h]=l;return f}else{return g.map[h]}}},clone:function(){var g=this,n=new b(g.name,g.type),h,f,m,j,k;if(m=g.attributes){k=[];k.map={};for(h=0,f=m.length;h<f;h++){j=m[h];if(j.name!=="id"){k[k.length]={name:j.name,value:j.value};k.map[j.name]=j.value}}n.attributes=k}n.value=g.value;n.shortEnded=g.shortEnded;return n},wrap:function(g){var f=this;f.parent.insert(g,f);g.append(f);return f},unwrap:function(){var f=this,h,g;for(h=f.firstChild;h;){g=h.next;f.insert(h,f,true);h=g}f.remove()},remove:function(){var f=this,h=f.parent,g=f.next,i=f.prev;if(h){if(h.firstChild===f){h.firstChild=g;if(g){g.prev=null}}else{i.next=g}if(h.lastChild===f){h.lastChild=i;if(i){i.next=null}}else{g.prev=i}f.parent=f.next=f.prev=null}return f},append:function(h){var f=this,g;if(h.parent){h.remove()}g=f.lastChild;if(g){g.next=h;h.prev=g;f.lastChild=h}else{f.lastChild=f.firstChild=h}h.parent=f;return h},insert:function(h,f,i){var g;if(h.parent){h.remove()}g=f.parent||this;if(i){if(f===g.firstChild){g.firstChild=h}else{f.prev.next=h}h.prev=f.prev;h.next=f;f.prev=h}else{if(f===g.lastChild){g.lastChild=h}else{f.next.prev=h}h.next=f.next;h.prev=f;f.next=h}h.parent=g;return h},getAll:function(g){var f=this,h,i=[];for(h=f.firstChild;h;h=a(h,f)){if(h.name===g){i.push(h)}}return i},empty:function(){var g=this,f,h,j;if(g.firstChild){f=[];for(j=g.firstChild;j;j=a(j,g)){f.push(j)}h=f.length;while(h--){j=f[h];j.parent=j.firstChild=j.lastChild=j.next=j.prev=null}}g.firstChild=g.lastChild=null;return g},isEmpty:function(k){var f=this,j=f.firstChild,h,g;if(j){do{if(j.type===1){if(j.attributes.map["data-mce-bogus"]){continue}if(k[j.name]){return false}h=j.attributes.length;while(h--){g=j.attributes[h].name;if(g==="name"||g.indexOf("data-mce-")===0){return false}}}if(j.type===8){return false}if((j.type===3&&!c.test(j.value))){return false}}while(j=a(j,f))}return true},walk:function(f){return a(this,null,f)}});d.extend(b,{create:function(g,f){var i,h;i=new b(g,e[g]||1);if(f){for(h in f){i.attr(h,f[h])}}return i}});d.html.Node=b})(tinymce);(function(b){var a=b.html.Node;b.html.DomParser=function(g,h){var f=this,e={},d=[],i={},c={};g=g||{};g.validate="validate" in g?g.validate:true;g.root_name=g.root_name||"body";f.schema=h=h||new b.html.Schema();function j(n){var p,q,y,x,A,o,r,l,u,v,k,t,m,z,s;t=b.makeMap("tr,td,th,tbody,thead,tfoot,table");k=h.getNonEmptyElements();m=h.getTextBlockElements();for(p=0;p<n.length;p++){q=n[p];if(!q.parent||q.fixed){continue}if(m[q.name]&&q.parent.name=="li"){z=q.next;while(z){if(m[z.name]){z.name="li";z.fixed=true;q.parent.insert(z,q.parent)}else{break}z=z.next}q.unwrap(q);continue}x=[q];for(y=q.parent;y&&!h.isValidChild(y.name,q.name)&&!t[y.name];y=y.parent){x.push(y)}if(y&&x.length>1){x.reverse();A=o=f.filterNode(x[0].clone());for(u=0;u<x.length-1;u++){if(h.isValidChild(o.name,x[u].name)){r=f.filterNode(x[u].clone());o.append(r)}else{r=o}for(l=x[u].firstChild;l&&l!=x[u+1];){s=l.next;r.append(l);l=s}o=r}if(!A.isEmpty(k)){y.insert(A,x[0],true);y.insert(q,A)}else{y.insert(q,x[0],true)}y=x[0];if(y.isEmpty(k)||y.firstChild===y.lastChild&&y.firstChild.name==="br"){y.empty().remove()}}else{if(q.parent){if(q.name==="li"){z=q.prev;if(z&&(z.name==="ul"||z.name==="ul")){z.append(q);continue}z=q.next;if(z&&(z.name==="ul"||z.name==="ul")){z.insert(q,z.firstChild,true);continue}q.wrap(f.filterNode(new a("ul",1)));continue}if(h.isValidChild(q.parent.name,"div")&&h.isValidChild("div",q.name)){q.wrap(f.filterNode(new a("div",1)))}else{if(q.name==="style"||q.name==="script"){q.empty().remove()}else{q.unwrap()}}}}}}f.filterNode=function(m){var l,k,n;if(k in e){n=i[k];if(n){n.push(m)}else{i[k]=[m]}}l=d.length;while(l--){k=d[l].name;if(k in m.attributes.map){n=c[k];if(n){n.push(m)}else{c[k]=[m]}}}return m};f.addNodeFilter=function(k,l){b.each(b.explode(k),function(m){var n=e[m];if(!n){e[m]=n=[]}n.push(l)})};f.addAttributeFilter=function(k,l){b.each(b.explode(k),function(m){var n;for(n=0;n<d.length;n++){if(d[n].name===m){d[n].callbacks.push(l);return}}d.push({name:m,callbacks:[l]})})};f.parse=function(v,m){var n,J,B,A,D,C,x,r,F,N,z,o,E,M=[],L,t,k,y,s,p,u,q;m=m||{};i={};c={};o=b.extend(b.makeMap("script,style,head,html,body,title,meta,param"),h.getBlockElements());u=h.getNonEmptyElements();p=h.children;z=g.validate;q="forced_root_block" in m?m.forced_root_block:g.forced_root_block;s=h.getWhiteSpaceElements();E=/^[ \t\r\n]+/;t=/[ \t\r\n]+$/;k=/[ \t\r\n]+/g;y=/^[ \t\r\n]+$/;function G(){var O=J.firstChild,l,P;while(O){l=O.next;if(O.type==3||(O.type==1&&O.name!=="p"&&!o[O.name]&&!O.attr("data-mce-type"))){if(!P){P=K(q,1);J.insert(P,O);P.append(O)}else{P.append(O)}}else{P=null}O=l}}function K(l,O){var P=new a(l,O),Q;if(l in e){Q=i[l];if(Q){Q.push(P)}else{i[l]=[P]}}return P}function I(P){var Q,l,O;for(Q=P.prev;Q&&Q.type===3;){l=Q.value.replace(t,"");if(l.length>0){Q.value=l;Q=Q.prev}else{O=Q.prev;Q.remove();Q=O}}}function H(O){var P,l={};for(P in O){if(P!=="li"&&P!="p"){l[P]=O[P]}}return l}n=new b.html.SaxParser({validate:z,self_closing_elements:H(h.getSelfClosingElements()),cdata:function(l){B.append(K("#cdata",4)).value=l},text:function(P,l){var O;if(!L){P=P.replace(k," ");if(B.lastChild&&o[B.lastChild.name]){P=P.replace(E,"")}}if(P.length!==0){O=K("#text",3);O.raw=!!l;B.append(O).value=P}},comment:function(l){B.append(K("#comment",8)).value=l},pi:function(l,O){B.append(K(l,7)).value=O;I(B)},doctype:function(O){var l;l=B.append(K("#doctype",10));l.value=O;I(B)},start:function(l,W,P){var U,R,Q,O,S,X,V,T;Q=z?h.getElementRule(l):{};if(Q){U=K(Q.outputName||l,1);U.attributes=W;U.shortEnded=P;B.append(U);T=p[B.name];if(T&&p[U.name]&&!T[U.name]){M.push(U)}R=d.length;while(R--){S=d[R].name;if(S in W.map){F=c[S];if(F){F.push(U)}else{c[S]=[U]}}}if(o[l]){I(U)}if(!P){B=U}if(!L&&s[l]){L=true}}},end:function(l){var S,P,R,O,Q;P=z?h.getElementRule(l):{};if(P){if(o[l]){if(!L){S=B.firstChild;if(S&&S.type===3){R=S.value.replace(E,"");if(R.length>0){S.value=R;S=S.next}else{O=S.next;S.remove();S=O}while(S&&S.type===3){R=S.value;O=S.next;if(R.length===0||y.test(R)){S.remove();S=O}S=O}}S=B.lastChild;if(S&&S.type===3){R=S.value.replace(t,"");if(R.length>0){S.value=R;S=S.prev}else{O=S.prev;S.remove();S=O}while(S&&S.type===3){R=S.value;O=S.prev;if(R.length===0||y.test(R)){S.remove();S=O}S=O}}}}if(L&&s[l]){L=false}if(P.removeEmpty||P.paddEmpty){if(B.isEmpty(u)){if(P.paddEmpty){B.empty().append(new a("#text","3")).value="\u00a0"}else{if(!B.attributes.map.name&&!B.attributes.map.id){Q=B.parent;B.empty().remove();B=Q;return}}}}B=B.parent}}},h);J=B=new a(m.context||g.root_name,11);n.parse(v);if(z&&M.length){if(!m.context){j(M)}else{m.invalid=true}}if(q&&J.name=="body"){G()}if(!m.invalid){for(N in i){F=e[N];A=i[N];x=A.length;while(x--){if(!A[x].parent){A.splice(x,1)}}for(D=0,C=F.length;D<C;D++){F[D](A,N,m)}}for(D=0,C=d.length;D<C;D++){F=d[D];if(F.name in c){A=c[F.name];x=A.length;while(x--){if(!A[x].parent){A.splice(x,1)}}for(x=0,r=F.callbacks.length;x<r;x++){F.callbacks[x](A,F.name,m)}}}}return J};if(g.remove_trailing_brs){f.addNodeFilter("br",function(n,m){var r,q=n.length,o,v=b.extend({},h.getBlockElements()),k=h.getNonEmptyElements(),t,s,p,u;v.body=1;for(r=0;r<q;r++){o=n[r];t=o.parent;if(v[o.parent.name]&&o===t.lastChild){p=o.prev;while(p){u=p.name;if(u!=="span"||p.attr("data-mce-type")!=="bookmark"){if(u!=="br"){break}if(u==="br"){o=null;break}}p=p.prev}if(o){o.remove();if(t.isEmpty(k)){elementRule=h.getElementRule(t.name);if(elementRule){if(elementRule.removeEmpty){t.remove()}else{if(elementRule.paddEmpty){t.empty().append(new b.html.Node("#text",3)).value="\u00a0"}}}}}}else{s=o;while(t.firstChild===s&&t.lastChild===s){s=t;if(v[t.name]){break}t=t.parent}if(s===t){textNode=new b.html.Node("#text",3);textNode.value="\u00a0";o.replace(textNode)}}}})}if(!g.allow_html_in_named_anchor){f.addAttributeFilter("id,name",function(k,l){var n=k.length,p,m,o,q;while(n--){q=k[n];if(q.name==="a"&&q.firstChild&&!q.attr("href")){o=q.parent;p=q.lastChild;do{m=p.prev;o.insert(p,q);p=m}while(p)}}})}}})(tinymce);tinymce.html.Writer=function(e){var c=[],a,b,d,f,g;e=e||{};a=e.indent;b=tinymce.makeMap(e.indent_before||"");d=tinymce.makeMap(e.indent_after||"");f=tinymce.html.Entities.getEncodeFunc(e.entity_encoding||"raw",e.entities);g=e.element_format=="html";return{start:function(m,k,p){var n,j,h,o;if(a&&b[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}c.push("<",m);if(k){for(n=0,j=k.length;n<j;n++){h=k[n];c.push(" ",h.name,'="',f(h.value,true),'"')}}if(!p||g){c[c.length]=">"}else{c[c.length]=" />"}if(p&&a&&d[m]&&c.length>0){o=c[c.length-1];if(o.length>0&&o!=="\n"){c.push("\n")}}},end:function(h){var i;c.push("</",h,">");if(a&&d[h]&&c.length>0){i=c[c.length-1];if(i.length>0&&i!=="\n"){c.push("\n")}}},text:function(i,h){if(i.length>0){c[c.length]=h?i:f(i)}},cdata:function(h){c.push("<![CDATA[",h,"]]>")},comment:function(h){c.push("<!--",h,"-->")},pi:function(h,i){if(i){c.push("<?",h," ",i,"?>")}else{c.push("<?",h,"?>")}if(a){c.push("\n")}},doctype:function(h){c.push("<!DOCTYPE",h,">",a?"\n":"")},reset:function(){c.length=0},getContent:function(){return c.join("").replace(/\n$/,"")}}};(function(a){a.html.Serializer=function(c,d){var b=this,e=new a.html.Writer(c);c=c||{};c.validate="validate" in c?c.validate:true;b.schema=d=d||new a.html.Schema();b.writer=e;b.serialize=function(h){var g,i;i=c.validate;g={3:function(k,j){e.text(k.value,k.raw)},8:function(j){e.comment(j.value)},7:function(j){e.pi(j.name,j.value)},10:function(j){e.doctype(j.value)},4:function(j){e.cdata(j.value)},11:function(j){if((j=j.firstChild)){do{f(j)}while(j=j.next)}}};e.reset();function f(k){var t=g[k.type],j,o,s,r,p,u,n,m,q;if(!t){j=k.name;o=k.shortEnded;s=k.attributes;if(i&&s&&s.length>1){u=[];u.map={};q=d.getElementRule(k.name);for(n=0,m=q.attributesOrder.length;n<m;n++){r=q.attributesOrder[n];if(r in s.map){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}for(n=0,m=s.length;n<m;n++){r=s[n].name;if(!(r in u.map)){p=s.map[r];u.map[r]=p;u.push({name:r,value:p})}}s=u}e.start(k.name,s,o);if(!o){if((k=k.firstChild)){do{f(k)}while(k=k.next)}e.end(j)}}else{t(k)}}if(h.type==1&&!c.inner){f(h)}else{g[11](h)}return e.getContent()}}})(tinymce);tinymce.dom={};(function(b,h){var g=!!document.addEventListener;function c(k,j,l,i){if(k.addEventListener){k.addEventListener(j,l,i||false)}else{if(k.attachEvent){k.attachEvent("on"+j,l)}}}function e(k,j,l,i){if(k.removeEventListener){k.removeEventListener(j,l,i||false)}else{if(k.detachEvent){k.detachEvent("on"+j,l)}}}function a(n,l){var i,k=l||{};function j(){return false}function m(){return true}for(i in n){if(i!=="layerX"&&i!=="layerY"){k[i]=n[i]}}if(!k.target){k.target=k.srcElement||document}k.preventDefault=function(){k.isDefaultPrevented=m;if(n){if(n.preventDefault){n.preventDefault()}else{n.returnValue=false}}};k.stopPropagation=function(){k.isPropagationStopped=m;if(n){if(n.stopPropagation){n.stopPropagation()}else{n.cancelBubble=true}}};k.stopImmediatePropagation=function(){k.isImmediatePropagationStopped=m;k.stopPropagation()};if(!k.isDefaultPrevented){k.isDefaultPrevented=j;k.isPropagationStopped=j;k.isImmediatePropagationStopped=j}return k}function d(m,n,l){var k=m.document,j={type:"ready"};function i(){if(!l.domLoaded){l.domLoaded=true;n(j)}}if(k.readyState=="complete"){i();return}if(g){c(m,"DOMContentLoaded",i)}else{c(k,"readystatechange",function(){if(k.readyState==="complete"){e(k,"readystatechange",arguments.callee);i()}});if(k.documentElement.doScroll&&m===m.top){(function(){try{k.documentElement.doScroll("left")}catch(o){setTimeout(arguments.callee,0);return}i()})()}}c(m,"load",i)}function f(k){var q=this,p={},i,o,n,m,l;m="onmouseenter" in document.documentElement;n="onfocusin" in document.documentElement;l={mouseenter:"mouseover",mouseleave:"mouseout"};i=1;q.domLoaded=false;q.events=p;function j(t,x){var s,u,r,v;s=p[x][t.type];if(s){for(u=0,r=s.length;u<r;u++){v=s[u];if(v&&v.func.call(v.scope,t)===false){t.preventDefault()}if(t.isImmediatePropagationStopped()){return}}}}q.bind=function(x,A,D,E){var s,t,u,r,B,z,C,v=window;function y(F){j(a(F||v.event),s)}if(!x||x.nodeType===3||x.nodeType===8){return}if(!x[h]){s=i++;x[h]=s;p[s]={}}else{s=x[h];if(!p[s]){p[s]={}}}E=E||x;A=A.split(" ");u=A.length;while(u--){r=A[u];z=y;B=C=false;if(r==="DOMContentLoaded"){r="ready"}if((q.domLoaded||x.readyState=="complete")&&r==="ready"){q.domLoaded=true;D.call(E,a({type:r}));continue}if(!m){B=l[r];if(B){z=function(F){var H,G;H=F.currentTarget;G=F.relatedTarget;if(G&&H.contains){G=H.contains(G)}else{while(G&&G!==H){G=G.parentNode}}if(!G){F=a(F||v.event);F.type=F.type==="mouseout"?"mouseleave":"mouseenter";F.target=H;j(F,s)}}}}if(!n&&(r==="focusin"||r==="focusout")){C=true;B=r==="focusin"?"focus":"blur";z=function(F){F=a(F||v.event);F.type=F.type==="focus"?"focusin":"focusout";j(F,s)}}t=p[s][r];if(!t){p[s][r]=t=[{func:D,scope:E}];t.fakeName=B;t.capture=C;t.nativeHandler=z;if(!g){t.proxyHandler=k(s)}if(r==="ready"){d(x,z,q)}else{c(x,B||r,g?z:t.proxyHandler,C)}}else{t.push({func:D,scope:E})}}x=t=0;return D};q.unbind=function(x,z,A){var s,u,v,B,r,t;if(!x||x.nodeType===3||x.nodeType===8){return q}s=x[h];if(s){t=p[s];if(z){z=z.split(" ");v=z.length;while(v--){r=z[v];u=t[r];if(u){if(A){B=u.length;while(B--){if(u[B].func===A){u.splice(B,1)}}}if(!A||u.length===0){delete t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}}}}else{for(r in t){u=t[r];e(x,u.fakeName||r,g?u.nativeHandler:u.proxyHandler,u.capture)}t={}}for(r in t){return q}delete p[s];try{delete x[h]}catch(y){x[h]=null}}return q};q.fire=function(u,s,r){var v,t;if(!u||u.nodeType===3||u.nodeType===8){return q}t=a(null,r);t.type=s;do{v=u[h];if(v){j(t,v)}u=u.parentNode||u.ownerDocument||u.defaultView||u.parentWindow}while(u&&!t.isPropagationStopped());return q};q.clean=function(u){var s,r,t=q.unbind;if(!u||u.nodeType===3||u.nodeType===8){return q}if(u[h]){t(u)}if(!u.getElementsByTagName){u=u.document}if(u&&u.getElementsByTagName){t(u);r=u.getElementsByTagName("*");s=r.length;while(s--){u=r[s];if(u[h]){t(u)}}}return q};q.callNativeHandler=function(s,r){if(p){p[s][r.type].nativeHandler(r)}};q.destory=function(){p={}};q.add=function(v,s,u,t){if(typeof(v)==="string"){v=document.getElementById(v)}if(v&&v instanceof Array){var r=v.length;while(r--){q.add(v[r],s,u,t)}return}if(s==="init"){s="ready"}return q.bind(v,s instanceof Array?s.join(" "):s,u,t)};q.remove=function(v,s,u,t){if(!v){return q}if(typeof(v)==="string"){v=document.getElementById(v)}if(v instanceof Array){var r=v.length;while(r--){q.remove(v[r],s,u,t)}return q}return q.unbind(v,s instanceof Array?s.join(" "):s,u)};q.clear=function(r){if(typeof(r)==="string"){r=document.getElementById(r)}return q.clean(r)};q.cancel=function(r){if(r){q.prevent(r);q.stop(r)}return false};q.prevent=function(r){if(!r.preventDefault){r=a(r)}r.preventDefault();return false};q.stop=function(r){if(!r.stopPropagation){r=a(r)}r.stopPropagation();return false}}b.EventUtils=f;b.Event=new f(function(i){return function(j){tinymce.dom.Event.callNativeHandler(i,j)}});b.Event.bind(window,"ready",function(){});b=0})(tinymce.dom,"data-mce-expando");tinymce.dom.TreeWalker=function(a,c){var b=a;function d(i,f,e,j){var h,g;if(i){if(!j&&i[f]){return i[f]}if(i!=c){h=i[e];if(h){return h}for(g=i.parentNode;g&&g!=c;g=g.parentNode){h=g[e];if(h){return h}}}}}this.current=function(){return b};this.next=function(e){return(b=d(b,"firstChild","nextSibling",e))};this.prev=function(e){return(b=d(b,"lastChild","previousSibling",e))}};(function(e){var g=e.each,d=e.is,f=e.isWebKit,b=e.isIE,h=e.html.Entities,c=/^([a-z0-9],?)+$/i,a=/^[ \t\r\n]*$/;e.create("tinymce.dom.DOMUtils",{doc:null,root:null,files:null,pixelStyles:/^(top|left|bottom|right|width|height|borderWidth)$/,props:{"for":"htmlFor","class":"className",className:"className",checked:"checked",disabled:"disabled",maxlength:"maxLength",readonly:"readOnly",selected:"selected",value:"value",id:"id",name:"name",type:"type"},DOMUtils:function(o,l){var k=this,i,j,n;k.doc=o;k.win=window;k.files={};k.cssFlicker=false;k.counter=0;k.stdMode=!e.isIE||o.documentMode>=8;k.boxModel=!e.isIE||o.compatMode=="CSS1Compat"||k.stdMode;k.hasOuterHTML="outerHTML" in o.createElement("a");k.settings=l=e.extend({keep_values:false,hex_colors:1},l);k.schema=l.schema;k.styles=new e.html.Styles({url_converter:l.url_converter,url_converter_scope:l.url_converter_scope},l.schema);if(e.isIE6){try{o.execCommand("BackgroundImageCache",false,true)}catch(m){k.cssFlicker=true}}k.fixDoc(o);k.events=l.ownEvents?new e.dom.EventUtils(l.proxy):e.dom.Event;e.addUnload(k.destroy,k);n=l.schema?l.schema.getBlockElements():{};k.isBlock=function(q){if(!q){return false}var p=q.nodeType;if(p){return !!(p===1&&n[q.nodeName])}return !!n[q]}},fixDoc:function(k){var j=this.settings,i;if(b&&!e.isIE11&&j.schema){("abbr article aside audio canvas details figcaption figure footer header hgroup mark menu meter nav output progress section summary time video").replace(/\w+/g,function(l){k.createElement(l)});for(i in j.schema.getCustomElements()){k.createElement(i)}}},clone:function(k,i){var j=this,m,l;if(!b||e.isIE11||k.nodeType!==1||i){return k.cloneNode(i)}l=j.doc;if(!i){m=l.createElement(k.nodeName);g(j.getAttribs(k),function(n){j.setAttrib(m,n.nodeName,j.getAttrib(k,n.nodeName))});return m}return m.firstChild},getRoot:function(){var i=this,j=i.settings;return(j&&i.get(j.root_element))||i.doc.body},getViewPort:function(j){var k,i;j=!j?this.win:j;k=j.document;i=this.boxModel?k.documentElement:k.body;return{x:j.pageXOffset||i.scrollLeft,y:j.pageYOffset||i.scrollTop,w:j.innerWidth||i.clientWidth,h:j.innerHeight||i.clientHeight}},getRect:function(l){var k,i=this,j;l=i.get(l);k=i.getPos(l);j=i.getSize(l);return{x:k.x,y:k.y,w:j.w,h:j.h}},getSize:function(l){var j=this,i,k;l=j.get(l);i=j.getStyle(l,"width");k=j.getStyle(l,"height");if(i.indexOf("px")===-1){i=0}if(k.indexOf("px")===-1){k=0}return{w:parseInt(i,10)||l.offsetWidth||l.clientWidth,h:parseInt(k,10)||l.offsetHeight||l.clientHeight}},getParent:function(k,j,i){return this.getParents(k,j,i,false)},getParents:function(s,m,k,q){var j=this,i,l=j.settings,p=[];s=j.get(s);q=q===undefined;if(l.strict_root){k=k||j.getRoot()}if(d(m,"string")){i=m;if(m==="*"){m=function(o){return o.nodeType==1}}else{m=function(o){return j.is(o,i)}}}while(s){if(s==k||!s.nodeType||s.nodeType===9){break}if(!m||m(s)){if(q){p.push(s)}else{return s}}s=s.parentNode}return q?p:null},get:function(i){var j;if(i&&this.doc&&typeof(i)=="string"){j=i;i=this.doc.getElementById(i);if(i&&i.id!==j){return this.doc.getElementsByName(j)[1]}}return i},getNext:function(j,i){return this._findSib(j,i,"nextSibling")},getPrev:function(j,i){return this._findSib(j,i,"previousSibling")},select:function(k,j){var i=this;return e.dom.Sizzle(k,i.get(j)||i.get(i.settings.root_element)||i.doc,[])},is:function(l,j){var k;if(l.length===undefined){if(j==="*"){return l.nodeType==1}if(c.test(j)){j=j.toLowerCase().split(/,/);l=l.nodeName.toLowerCase();for(k=j.length-1;k>=0;k--){if(j[k]==l){return true}}return false}}return e.dom.Sizzle.matches(j,l.nodeType?[l]:l).length>0},add:function(l,o,i,k,m){var j=this;return this.run(l,function(r){var q,n;q=d(o,"string")?j.doc.createElement(o):o;j.setAttribs(q,i);if(k){if(k.nodeType){q.appendChild(k)}else{j.setHTML(q,k)}}return !m?r.appendChild(q):q})},create:function(k,i,j){return this.add(this.doc.createElement(k),k,i,j,1)},createHTML:function(q,i,m){var p="",l=this,j;p+="<"+q;for(j in i){if(i.hasOwnProperty(j)){p+=" "+j+'="'+l.encode(i[j])+'"'}}if(typeof(m)!="undefined"){return p+">"+m+"</"+q+">"}return p+" />"},remove:function(i,j){return this.run(i,function(l){var m,k=l.parentNode;if(!k){return null}if(j){while(m=l.firstChild){if(!e.isIE||m.nodeType!==3||m.nodeValue){k.insertBefore(m,l)}else{l.removeChild(m)}}}return k.removeChild(l)})},setStyle:function(l,i,j){var k=this;return k.run(l,function(o){var n,m;n=o.style;i=i.replace(/-(\D)/g,function(q,p){return p.toUpperCase()});if(k.pixelStyles.test(i)&&(e.is(j,"number")||/^[\-0-9\.]+$/.test(j))){j+="px"}switch(i){case"opacity":if(b&&!e.isIE11){n.filter=j===""?"":"alpha(opacity="+(j*100)+")";if(!l.currentStyle||!l.currentStyle.hasLayout){n.display="inline-block"}}n[i]=n["-moz-opacity"]=n["-khtml-opacity"]=j||"";break;case"float":(b&&!e.isIE11)?n.styleFloat=j:n.cssFloat=j;break;default:n[i]=j||""}if(k.settings.update_styles){k.setAttrib(o,"data-mce-style")}})},getStyle:function(l,i,k){l=this.get(l);if(!l){return}if(this.doc.defaultView&&k){i=i.replace(/[A-Z]/g,function(m){return"-"+m});try{return this.doc.defaultView.getComputedStyle(l,null).getPropertyValue(i)}catch(j){return null}}i=i.replace(/-(\D)/g,function(n,m){return m.toUpperCase()});if(i=="float"){i=b?"styleFloat":"cssFloat"}if(l.currentStyle&&k){return l.currentStyle[i]}return l.style?l.style[i]:undefined},setStyles:function(l,m){var j=this,k=j.settings,i;i=k.update_styles;k.update_styles=0;g(m,function(o,p){j.setStyle(l,p,o)});k.update_styles=i;if(k.update_styles){j.setAttrib(l,k.cssText)}},removeAllAttribs:function(i){return this.run(i,function(l){var k,j=l.attributes;for(k=j.length-1;k>=0;k--){l.removeAttributeNode(j.item(k))}})},setAttrib:function(k,l,i){var j=this;if(!k||!l){return}if(j.settings.strict){l=l.toLowerCase()}return this.run(k,function(p){var o=j.settings;var m=p.getAttribute(l);if(i!==null){switch(l){case"style":if(!d(i,"string")){g(i,function(q,r){j.setStyle(p,r,q)});return}if(o.keep_values){if(i&&!j._isRes(i)){p.setAttribute("data-mce-style",i,2)}else{p.removeAttribute("data-mce-style",2)}}p.style.cssText=i;break;case"class":p.className=i||"";break;case"src":case"href":if(o.keep_values){if(o.url_converter){i=o.url_converter.call(o.url_converter_scope||j,i,l,p)}j.setAttrib(p,"data-mce-"+l,i,2)}break;case"shape":p.setAttribute("data-mce-style",i);break}}if(d(i)&&i!==null&&i.length!==0){p.setAttribute(l,""+i,2)}else{p.removeAttribute(l,2)}if(tinyMCE.activeEditor&&m!=i){var n=tinyMCE.activeEditor;n.onSetAttrib.dispatch(n,p,l,i)}})},setAttribs:function(j,k){var i=this;return this.run(j,function(l){g(k,function(m,o){i.setAttrib(l,o,m)})})},getAttrib:function(m,o,k){var i,j=this,l;m=j.get(m);if(!m||m.nodeType!==1){return k===l?false:k}if(!d(k)){k=""}if(/^(src|href|style|coords|shape)$/.test(o)){i=m.getAttribute("data-mce-"+o);if(i){return i}}if(b&&j.props[o]){i=m[j.props[o]];i=i&&i.nodeValue?i.nodeValue:i}if(!i){i=m.getAttribute(o,2)}if(/^(checked|compact|declare|defer|disabled|ismap|multiple|nohref|noshade|nowrap|readonly|selected)$/.test(o)){if(m[j.props[o]]===true&&i===""){return o}return i?o:""}if(m.nodeName==="FORM"&&m.getAttributeNode(o)){return m.getAttributeNode(o).nodeValue}if(o==="style"){i=i||m.style.cssText;if(i){i=j.serializeStyle(j.parseStyle(i),m.nodeName);if(j.settings.keep_values&&!j._isRes(i)){m.setAttribute("data-mce-style",i)}}}if(f&&o==="class"&&i){i=i.replace(/(apple|webkit)\-[a-z\-]+/gi,"")}if(b){switch(o){case"rowspan":case"colspan":if(i===1){i=""}break;case"size":if(i==="+0"||i===20||i===0){i=""}break;case"width":case"height":case"vspace":case"checked":case"disabled":case"readonly":if(i===0){i=""}break;case"hspace":if(i===-1){i=""}break;case"maxlength":case"tabindex":if(i===32768||i===2147483647||i==="32768"){i=""}break;case"multiple":case"compact":case"noshade":case"nowrap":if(i===65535){return o}return k;case"shape":i=i.toLowerCase();break;default:if(o.indexOf("on")===0&&i){i=e._replace(/^function\s+\w+\(\)\s+\{\s+(.*)\s+\}$/,"$1",""+i)}}}return(i!==l&&i!==null&&i!=="")?""+i:k},getPos:function(q,l){var j=this,i=0,p=0,m,o=j.doc,k;q=j.get(q);l=l||o.body;if(q){if(q.getBoundingClientRect){q=q.getBoundingClientRect();m=j.boxModel?o.documentElement:o.body;i=q.left+(o.documentElement.scrollLeft||o.body.scrollLeft)-m.clientTop;p=q.top+(o.documentElement.scrollTop||o.body.scrollTop)-m.clientLeft;return{x:i,y:p}}k=q;while(k&&k!=l&&k.nodeType){i+=k.offsetLeft||0;p+=k.offsetTop||0;k=k.offsetParent}k=q.parentNode;while(k&&k!=l&&k.nodeType){i-=k.scrollLeft||0;p-=k.scrollTop||0;k=k.parentNode}}return{x:i,y:p}},parseStyle:function(i){return this.styles.parse(i)},serializeStyle:function(j,i){return this.styles.serialize(j,i)},addStyle:function(j){var k=this.doc,i;styleElm=k.getElementById("mceDefaultStyles");if(!styleElm){styleElm=k.createElement("style"),styleElm.id="mceDefaultStyles";styleElm.type="text/css";i=k.getElementsByTagName("head")[0];if(i.firstChild){i.insertBefore(styleElm,i.firstChild)}else{i.appendChild(styleElm)}}if(styleElm.styleSheet){styleElm.styleSheet.cssText+=j}else{styleElm.appendChild(k.createTextNode(j))}},loadCSS:function(i){var k=this,l=k.doc,j;if(!i){i=""}j=l.getElementsByTagName("head")[0];g(i.split(","),function(m){var n;if(k.files[m]){return}k.files[m]=true;n=k.create("link",{rel:"stylesheet",href:e._addVer(m)});if(b&&!e.isIE11&&l.documentMode&&l.recalc){n.onload=function(){if(l.recalc){l.recalc()}n.onload=null}}j.appendChild(n)})},addClass:function(i,j){return this.run(i,function(k){var l;if(!j){return 0}if(this.hasClass(k,j)){return k.className}l=this.removeClass(k,j);return k.className=(l!=""?(l+" "):"")+j})},removeClass:function(k,l){var i=this,j;return i.run(k,function(n){var m;if(i.hasClass(n,l)){if(!j){j=new RegExp("(^|\\s+)"+l+"(\\s+|$)","g")}m=n.className.replace(j," ");m=e.trim(m!=" "?m:"");n.className=m;if(!m){n.removeAttribute("class");n.removeAttribute("className")}return m}return n.className})},hasClass:function(j,i){j=this.get(j);if(!j||!i){return false}return(" "+j.className+" ").indexOf(" "+i+" ")!==-1},show:function(i){return this.setStyle(i,"display","block")},hide:function(i){return this.setStyle(i,"display","none")},isHidden:function(i){i=this.get(i);return !i||i.style.display=="none"||this.getStyle(i,"display")=="none"},uniqueId:function(i){return(!i?"mce_":i)+(this.counter++)},setHTML:function(k,j){var i=this;return i.run(k,function(m){if(b){while(m.firstChild){m.removeChild(m.firstChild)}try{m.innerHTML="<br />"+j;m.removeChild(m.firstChild)}catch(l){var n=i.create("div");n.innerHTML="<br />"+j;g(e.grep(n.childNodes),function(p,o){if(o&&m.canHaveHTML){m.appendChild(p)}})}}else{m.innerHTML=j}return j})},getOuterHTML:function(k){var j,i=this;k=i.get(k);if(!k){return null}if(k.nodeType===1&&i.hasOuterHTML){return k.outerHTML}j=(k.ownerDocument||i.doc).createElement("body");j.appendChild(k.cloneNode(true));return j.innerHTML},setOuterHTML:function(l,j,m){var i=this;function k(p,o,r){var s,q;q=r.createElement("body");q.innerHTML=o;s=q.lastChild;while(s){i.insertAfter(s.cloneNode(true),p);s=s.previousSibling}i.remove(p)}return this.run(l,function(o){o=i.get(o);if(o.nodeType==1){m=m||o.ownerDocument||i.doc;if(b){try{if(b&&o.nodeType==1){o.outerHTML=j}else{k(o,j,m)}}catch(n){k(o,j,m)}}else{k(o,j,m)}}})},decode:h.decode,encode:h.encodeAllRaw,insertAfter:function(i,j){j=this.get(j);return this.run(i,function(l){var k,m;k=j.parentNode;m=j.nextSibling;if(m){k.insertBefore(l,m)}else{k.appendChild(l)}return l})},replace:function(m,l,i){var j=this;if(d(l,"array")){m=m.cloneNode(true)}return j.run(l,function(k){if(i){g(e.grep(k.childNodes),function(n){m.appendChild(n)})}return k.parentNode.replaceChild(m,k)})},rename:function(l,i){var k=this,j;if(l.nodeName!=i.toUpperCase()){j=k.create(i);g(k.getAttribs(l),function(m){k.setAttrib(j,m.nodeName,k.getAttrib(l,m.nodeName))});k.replace(j,l,1)}return j||l},findCommonAncestor:function(k,i){var l=k,j;while(l){j=i;while(j&&l!=j){j=j.parentNode}if(l==j){break}l=l.parentNode}if(!l&&k.ownerDocument){return k.ownerDocument.documentElement}return l},toHex:function(i){var k=/^\s*rgb\s*?\(\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?,\s*?([0-9]+)\s*?\)\s*$/i.exec(i);function j(l){l=parseInt(l,10).toString(16);return l.length>1?l:"0"+l}if(k){i="#"+j(k[1])+j(k[2])+j(k[3]);return i}return i},getClasses:function(){var n=this,j=[],m,o={},p=n.settings.class_filter,l;if(n.classes){return n.classes}function q(i){g(i.imports,function(s){q(s)});g(i.cssRules||i.rules,function(t){switch(t.type||1){case 1:if(t.selectorText){g(t.selectorText.split(","),function(r){r=r.replace(/^\s*|\s*$|^\s\./g,"");if(/\.mce/.test(r)||!/\.[\w\-]+$/.test(r)){return}l=r;r=e._replace(/.*\.([a-z0-9_\-]+).*/i,"$1",r);if(p&&!(r=p(r,l))){return}if(!o[r]){j.push({"class":r});o[r]=1}})}break;case 3:try{q(t.styleSheet)}catch(s){}break}})}try{g(n.doc.styleSheets,q)}catch(k){}if(j.length>0){n.classes=j}return j},run:function(l,k,j){var i=this,m;if(i.doc&&typeof(l)==="string"){l=i.get(l)}if(!l){return false}j=j||this;if(!l.nodeType&&(l.length||l.length===0)){m=[];g(l,function(o,n){if(o){if(typeof(o)=="string"){o=i.doc.getElementById(o)}m.push(k.call(j,o,n))}});return m}return k.call(j,l)},getAttribs:function(j){var i;j=this.get(j);if(!j){return[]}if(b){i=[];if(j.nodeName=="OBJECT"){return j.attributes}if(j.nodeName==="OPTION"&&this.getAttrib(j,"selected")){i.push({specified:1,nodeName:"selected"})}j.cloneNode(false).outerHTML.replace(/<\/?[\w:\-]+ ?|=[\"][^\"]+\"|=\'[^\']+\'|=[\w\-]+|>/gi,"").replace(/[\w:\-]+/gi,function(k){i.push({specified:1,nodeName:k})});return i}return j.attributes},isEmpty:function(m,k){var r=this,o,n,q,j,l,p=0;m=m.firstChild;if(m){j=new e.dom.TreeWalker(m,m.parentNode);k=k||r.schema?r.schema.getNonEmptyElements():null;do{q=m.nodeType;if(q===1){if(m.getAttribute("data-mce-bogus")){continue}l=m.nodeName.toLowerCase();if(k&&k[l]){if(l==="br"){p++;continue}return false}n=r.getAttribs(m);o=m.attributes.length;while(o--){l=m.attributes[o].nodeName;if(l==="name"||l==="data-mce-bookmark"){return false}}}if(q==8){return false}if((q===3&&!a.test(m.nodeValue))){return false}}while(m=j.next())}return p<=1},destroy:function(j){var i=this;i.win=i.doc=i.root=i.events=i.frag=null;if(!j){e.removeUnload(i.destroy)}},createRng:function(){var i=this.doc;return i.createRange?i.createRange():new e.dom.Range(this)},nodeIndex:function(m,n){var i=0,k,l,j;if(m){for(k=m.nodeType,m=m.previousSibling,l=m;m;m=m.previousSibling){j=m.nodeType;if(n&&j==3){if(j==k||!m.nodeValue.length){continue}}i++;k=j}}return i},split:function(m,l,p){var q=this,i=q.createRng(),n,k,o;function j(v){var t,s=v.childNodes,u=v.nodeType;function x(A){var z=A.previousSibling&&A.previousSibling.nodeName=="SPAN";var y=A.nextSibling&&A.nextSibling.nodeName=="SPAN";return z&&y}if(u==1&&v.getAttribute("data-mce-type")=="bookmark"){return}for(t=s.length-1;t>=0;t--){j(s[t])}if(u!=9){if(u==3&&v.nodeValue.length>0){var r=e.trim(v.nodeValue).length;if(!q.isBlock(v.parentNode)||r>0||r===0&&x(v)){return}}else{if(u==1){s=v.childNodes;if(s.length==1&&s[0]&&s[0].nodeType==1&&s[0].getAttribute("data-mce-type")=="bookmark"){v.parentNode.insertBefore(s[0],v)}if(s.length||/^(br|hr|input|img)$/i.test(v.nodeName)){return}}}q.remove(v)}return v}if(m&&l){i.setStart(m.parentNode,q.nodeIndex(m));i.setEnd(l.parentNode,q.nodeIndex(l));n=i.extractContents();i=q.createRng();i.setStart(l.parentNode,q.nodeIndex(l)+1);i.setEnd(m.parentNode,q.nodeIndex(m)+1);k=i.extractContents();o=m.parentNode;o.insertBefore(j(n),m);if(p){o.replaceChild(p,l)}else{o.insertBefore(l,m)}o.insertBefore(j(k),m);q.remove(m);return p||l}},bind:function(l,i,k,j){return this.events.add(l,i,k,j||this)},unbind:function(k,i,j){return this.events.remove(k,i,j)},fire:function(k,j,i){return this.events.fire(k,j,i)},getContentEditable:function(j){var i;if(j.nodeType!=1){return null}i=j.getAttribute("data-mce-contenteditable");if(i&&i!=="inherit"){return i}return j.contentEditable!=="inherit"?j.contentEditable:null},_findSib:function(l,i,j){var k=this,m=i;if(l){if(d(m,"string")){m=function(n){return k.is(n,i)}}for(l=l[j];l;l=l[j]){if(m(l)){return l}}}return null},_isRes:function(i){return/^(top|left|bottom|right|width|height)/i.test(i)||/;\s*(top|left|bottom|right|width|height)/i.test(i)}});e.DOM=new e.dom.DOMUtils(document,{process_html:0})})(tinymce);(function(a){function b(c){var O=this,e=c.doc,U=0,F=1,j=2,E=true,S=false,W="startOffset",h="startContainer",Q="endContainer",A="endOffset",k=tinymce.extend,n=c.nodeIndex;k(O,{startContainer:e,startOffset:0,endContainer:e,endOffset:0,collapsed:E,commonAncestorContainer:e,START_TO_START:0,START_TO_END:1,END_TO_END:2,END_TO_START:3,setStart:q,setEnd:s,setStartBefore:g,setStartAfter:J,setEndBefore:K,setEndAfter:u,collapse:B,selectNode:y,selectNodeContents:G,compareBoundaryPoints:v,deleteContents:p,extractContents:I,cloneContents:d,insertNode:D,surroundContents:N,cloneRange:L,toStringIE:T});function x(){return e.createDocumentFragment()}function q(X,t){C(E,X,t)}function s(X,t){C(S,X,t)}function g(t){q(t.parentNode,n(t))}function J(t){q(t.parentNode,n(t)+1)}function K(t){s(t.parentNode,n(t))}function u(t){s(t.parentNode,n(t)+1)}function B(t){if(t){O[Q]=O[h];O[A]=O[W]}else{O[h]=O[Q];O[W]=O[A]}O.collapsed=E}function y(t){g(t);u(t)}function G(t){q(t,0);s(t,t.nodeType===1?t.childNodes.length:t.nodeValue.length)}function v(aa,t){var ad=O[h],Y=O[W],ac=O[Q],X=O[A],ab=t.startContainer,af=t.startOffset,Z=t.endContainer,ae=t.endOffset;if(aa===0){return H(ad,Y,ab,af)}if(aa===1){return H(ac,X,ab,af)}if(aa===2){return H(ac,X,Z,ae)}if(aa===3){return H(ad,Y,Z,ae)}}function p(){l(j)}function I(){return l(U)}function d(){return l(F)}function D(aa){var X=this[h],t=this[W],Z,Y;if((X.nodeType===3||X.nodeType===4)&&X.nodeValue){if(!t){X.parentNode.insertBefore(aa,X)}else{if(t>=X.nodeValue.length){c.insertAfter(aa,X)}else{Z=X.splitText(t);X.parentNode.insertBefore(aa,Z)}}}else{if(X.childNodes.length>0){Y=X.childNodes[t]}if(Y){X.insertBefore(aa,Y)}else{X.appendChild(aa)}}}function N(X){var t=O.extractContents();O.insertNode(X);X.appendChild(t);O.selectNode(X)}function L(){return k(new b(c),{startContainer:O[h],startOffset:O[W],endContainer:O[Q],endOffset:O[A],collapsed:O.collapsed,commonAncestorContainer:O.commonAncestorContainer})}function P(t,X){var Y;if(t.nodeType==3){return t}if(X<0){return t}Y=t.firstChild;while(Y&&X>0){--X;Y=Y.nextSibling}if(Y){return Y}return t}function m(){return(O[h]==O[Q]&&O[W]==O[A])}function H(Z,ab,X,aa){var ac,Y,t,ad,af,ae;if(Z==X){if(ab==aa){return 0}if(ab<aa){return -1}return 1}ac=X;while(ac&&ac.parentNode!=Z){ac=ac.parentNode}if(ac){Y=0;t=Z.firstChild;while(t!=ac&&Y<ab){Y++;t=t.nextSibling}if(ab<=Y){return -1}return 1}ac=Z;while(ac&&ac.parentNode!=X){ac=ac.parentNode}if(ac){Y=0;t=X.firstChild;while(t!=ac&&Y<aa){Y++;t=t.nextSibling}if(Y<aa){return -1}return 1}ad=c.findCommonAncestor(Z,X);af=Z;while(af&&af.parentNode!=ad){af=af.parentNode}if(!af){af=ad}ae=X;while(ae&&ae.parentNode!=ad){ae=ae.parentNode}if(!ae){ae=ad}if(af==ae){return 0}t=ad.firstChild;while(t){if(t==af){return -1}if(t==ae){return 1}t=t.nextSibling}}function C(X,aa,Z){var t,Y;if(X){O[h]=aa;O[W]=Z}else{O[Q]=aa;O[A]=Z}t=O[Q];while(t.parentNode){t=t.parentNode}Y=O[h];while(Y.parentNode){Y=Y.parentNode}if(Y==t){if(H(O[h],O[W],O[Q],O[A])>0){O.collapse(X)}}else{O.collapse(X)}O.collapsed=m();O.commonAncestorContainer=c.findCommonAncestor(O[h],O[Q])}function l(ad){var ac,Z=0,af=0,X,ab,Y,aa,t,ae;if(O[h]==O[Q]){return f(ad)}for(ac=O[Q],X=ac.parentNode;X;ac=X,X=X.parentNode){if(X==O[h]){return r(ac,ad)}++Z}for(ac=O[h],X=ac.parentNode;X;ac=X,X=X.parentNode){if(X==O[Q]){return V(ac,ad)}++af}ab=af-Z;Y=O[h];while(ab>0){Y=Y.parentNode;ab--}aa=O[Q];while(ab<0){aa=aa.parentNode;ab++}for(t=Y.parentNode,ae=aa.parentNode;t!=ae;t=t.parentNode,ae=ae.parentNode){Y=t;aa=ae}return o(Y,aa,ad)}function f(ac){var ae,af,t,Y,Z,ad,aa,X,ab;if(ac!=j){ae=x()}if(O[W]==O[A]){return ae}if(O[h].nodeType==3){af=O[h].nodeValue;t=af.substring(O[W],O[A]);if(ac!=F){Y=O[h];X=O[W];ab=O[A]-O[W];if(X===0&&ab>=Y.nodeValue.length-1){Y.parentNode.removeChild(Y)}else{Y.deleteData(X,ab)}O.collapse(E)}if(ac==j){return}if(t.length>0){ae.appendChild(e.createTextNode(t))}return ae}Y=P(O[h],O[W]);Z=O[A]-O[W];while(Y&&Z>0){ad=Y.nextSibling;aa=z(Y,ac);if(ae){ae.appendChild(aa)}--Z;Y=ad}if(ac!=F){O.collapse(E)}return ae}function r(ad,aa){var ac,ab,X,t,Z,Y;if(aa!=j){ac=x()}ab=i(ad,aa);if(ac){ac.appendChild(ab)}X=n(ad);t=X-O[W];if(t<=0){if(aa!=F){O.setEndBefore(ad);O.collapse(S)}return ac}ab=ad.previousSibling;while(t>0){Z=ab.previousSibling;Y=z(ab,aa);if(ac){ac.insertBefore(Y,ac.firstChild)}--t;ab=Z}if(aa!=F){O.setEndBefore(ad);O.collapse(S)}return ac}function V(ab,aa){var ad,X,ac,t,Z,Y;if(aa!=j){ad=x()}ac=R(ab,aa);if(ad){ad.appendChild(ac)}X=n(ab);++X;t=O[A]-X;ac=ab.nextSibling;while(ac&&t>0){Z=ac.nextSibling;Y=z(ac,aa);if(ad){ad.appendChild(Y)}--t;ac=Z}if(aa!=F){O.setStartAfter(ab);O.collapse(E)}return ad}function o(ab,t,ae){var Y,ag,aa,ac,ad,X,af,Z;if(ae!=j){ag=x()}Y=R(ab,ae);if(ag){ag.appendChild(Y)}aa=ab.parentNode;ac=n(ab);ad=n(t);++ac;X=ad-ac;af=ab.nextSibling;while(X>0){Z=af.nextSibling;Y=z(af,ae);if(ag){ag.appendChild(Y)}af=Z;--X}Y=i(t,ae);if(ag){ag.appendChild(Y)}if(ae!=F){O.setStartAfter(ab);O.collapse(E)}return ag}function i(ac,ad){var Y=P(O[Q],O[A]-1),ae,ab,aa,t,X,Z=Y!=O[Q];if(Y==ac){return M(Y,Z,S,ad)}ae=Y.parentNode;ab=M(ae,S,S,ad);while(ae){while(Y){aa=Y.previousSibling;t=M(Y,Z,S,ad);if(ad!=j){ab.insertBefore(t,ab.firstChild)}Z=E;Y=aa}if(ae==ac){return ab}Y=ae.previousSibling;ae=ae.parentNode;X=M(ae,S,S,ad);if(ad!=j){X.appendChild(ab)}ab=X}}function R(ac,ad){var Z=P(O[h],O[W]),aa=Z!=O[h],ae,ab,Y,t,X;if(Z==ac){return M(Z,aa,E,ad)}ae=Z.parentNode;ab=M(ae,S,E,ad);while(ae){while(Z){Y=Z.nextSibling;t=M(Z,aa,E,ad);if(ad!=j){ab.appendChild(t)}aa=E;Z=Y}if(ae==ac){return ab}Z=ae.nextSibling;ae=ae.parentNode;X=M(ae,S,E,ad);if(ad!=j){X.appendChild(ab)}ab=X}}function M(t,aa,ad,ae){var Z,Y,ab,X,ac;if(aa){return z(t,ae)}if(t.nodeType==3){Z=t.nodeValue;if(ad){X=O[W];Y=Z.substring(X);ab=Z.substring(0,X)}else{X=O[A];Y=Z.substring(0,X);ab=Z.substring(X)}if(ae!=F){t.nodeValue=ab}if(ae==j){return}ac=c.clone(t,S);ac.nodeValue=Y;return ac}if(ae==j){return}return c.clone(t,S)}function z(X,t){if(t!=j){return t==F?c.clone(X,E):X}X.parentNode.removeChild(X)}function T(){return c.create("body",null,d()).outerText}return O}a.Range=b;b.prototype.toString=function(){return this.toStringIE()}})(tinymce.dom);(function(){function a(d){var b=this,h=d.dom,c=true,f=false;function e(i,j){var k,t=0,q,n,m,l,o,r,p=-1,s;k=i.duplicate();k.collapse(j);s=k.parentElement();if(s.ownerDocument!==d.dom.doc){return}while(s.contentEditable==="false"){s=s.parentNode}if(!s.hasChildNodes()){return{node:s,inside:1}}m=s.children;q=m.length-1;while(t<=q){r=Math.floor((t+q)/2);l=m[r];k.moveToElementText(l);p=k.compareEndPoints(j?"StartToStart":"EndToEnd",i);if(p>0){q=r-1}else{if(p<0){t=r+1}else{return{node:l}}}}if(p<0){if(!l){k.moveToElementText(s);k.collapse(true);l=s;n=true}else{k.collapse(false)}o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",1)===0||s!=k.parentElement()){break}o++}}else{k.collapse(true);o=0;while(k.compareEndPoints(j?"StartToStart":"StartToEnd",i)!==0){if(k.move("character",-1)===0||s!=k.parentElement()){break}o++}}return{node:l,position:p,offset:o,inside:n}}function g(){var i=d.getRng(),r=h.createRng(),l,k,p,q,m,j;l=i.item?i.item(0):i.parentElement();if(l.ownerDocument!=h.doc){return r}k=d.isCollapsed();if(i.item){r.setStart(l.parentNode,h.nodeIndex(l));r.setEnd(r.startContainer,r.startOffset+1);return r}function o(A){var u=e(i,A),s,y,z=0,x,v,t;s=u.node;y=u.offset;if(u.inside&&!s.hasChildNodes()){r[A?"setStart":"setEnd"](s,0);return}if(y===v){r[A?"setStartBefore":"setEndAfter"](s);return}if(u.position<0){x=u.inside?s.firstChild:s.nextSibling;if(!x){r[A?"setStartAfter":"setEndAfter"](s);return}if(!y){if(x.nodeType==3){r[A?"setStart":"setEnd"](x,0)}else{r[A?"setStartBefore":"setEndBefore"](x)}return}while(x){t=x.nodeValue;z+=t.length;if(z>=y){s=x;z-=y;z=t.length-z;break}x=x.nextSibling}}else{x=s.previousSibling;if(!x){return r[A?"setStartBefore":"setEndBefore"](s)}if(!y){if(s.nodeType==3){r[A?"setStart":"setEnd"](x,s.nodeValue.length)}else{r[A?"setStartAfter":"setEndAfter"](x)}return}while(x){z+=x.nodeValue.length;if(z>=y){s=x;z-=y;break}x=x.previousSibling}}r[A?"setStart":"setEnd"](s,z)}try{o(true);if(!k){o()}}catch(n){if(n.number==-2147024809){m=b.getBookmark(2);p=i.duplicate();p.collapse(true);l=p.parentElement();if(!k){p=i.duplicate();p.collapse(false);q=p.parentElement();q.innerHTML=q.innerHTML}l.innerHTML=l.innerHTML;b.moveToBookmark(m);i=d.getRng();o(true);if(!k){o()}}else{throw n}}return r}this.getBookmark=function(m){var j=d.getRng(),o,i,l={};function n(u){var t,p,s,r,q=[];t=u.parentNode;p=h.getRoot().parentNode;while(t!=p&&t.nodeType!==9){s=t.children;r=s.length;while(r--){if(u===s[r]){q.push(r);break}}u=t;t=t.parentNode}return q}function k(q){var p;p=e(j,q);if(p){return{position:p.position,offset:p.offset,indexes:n(p.node),inside:p.inside}}}if(m===2){if(!j.item){l.start=k(true);if(!d.isCollapsed()){l.end=k()}}else{l.start={ctrl:true,indexes:n(j.item(0))}}}return l};this.moveToBookmark=function(k){var j,i=h.doc.body;function m(o){var r,q,n,p;r=h.getRoot();for(q=o.length-1;q>=0;q--){p=r.children;n=o[q];if(n<=p.length-1){r=p[n]}}return r}function l(r){var n=k[r?"start":"end"],q,p,o;if(n){q=n.position>0;p=i.createTextRange();p.moveToElementText(m(n.indexes));offset=n.offset;if(offset!==o){p.collapse(n.inside||q);p.moveStart("character",q?-offset:offset)}else{p.collapse(r)}j.setEndPoint(r?"StartToStart":"EndToStart",p);if(r){j.collapse(true)}}}if(k.start){if(k.start.ctrl){j=i.createControlRange();j.addElement(m(k.start.indexes));j.select()}else{j=i.createTextRange();l(true);l();j.select()}}};this.addRange=function(i){var n,l,k,p,v,q,t,s=d.dom.doc,m=s.body,r,u;function j(C){var y,B,x,A,z;x=h.create("a");y=C?k:v;B=C?p:q;A=n.duplicate();if(y==s||y==s.documentElement){y=m;B=0}if(y.nodeType==3){y.parentNode.insertBefore(x,y);A.moveToElementText(x);A.moveStart("character",B);h.remove(x);n.setEndPoint(C?"StartToStart":"EndToEnd",A)}else{z=y.childNodes;if(z.length){if(B>=z.length){h.insertAfter(x,z[z.length-1])}else{y.insertBefore(x,z[B])}A.moveToElementText(x)}else{if(y.canHaveHTML){y.innerHTML="<span>\uFEFF</span>";x=y.firstChild;A.moveToElementText(x);A.collapse(f)}}n.setEndPoint(C?"StartToStart":"EndToEnd",A);h.remove(x)}}k=i.startContainer;p=i.startOffset;v=i.endContainer;q=i.endOffset;n=m.createTextRange();if(k==v&&k.nodeType==1){if(p==q&&!k.hasChildNodes()){if(k.canHaveHTML){t=k.previousSibling;if(t&&!t.hasChildNodes()&&h.isBlock(t)){t.innerHTML="\uFEFF"}else{t=null}k.innerHTML="<span>\uFEFF</span><span>\uFEFF</span>";n.moveToElementText(k.lastChild);n.select();h.doc.selection.clear();k.innerHTML="";if(t){t.innerHTML=""}return}else{p=h.nodeIndex(k);k=k.parentNode}}if(p==q-1){try{u=k.childNodes[p];l=m.createControlRange();l.addElement(u);l.select();r=d.getRng();if(r.item&&u===r.item(0)){return}}catch(o){}}}j(true);j();n.select()};this.getRangeAt=g}tinymce.dom.TridentSelection=a})();(function(){var n=/((?:\((?:\([^()]+\)|[^()]+)+\)|\[(?:\[[^\[\]]*\]|['"][^'"]*['"]|[^\[\]'"]+)+\]|\\.|[^ >+~,(\[\\]+)+|[>+~])(\s*,\s*)?((?:.|\r|\n)*)/g,i="sizcache",o=0,r=Object.prototype.toString,h=false,g=true,q=/\\/g,u=/\r\n/g,x=/\W/;[0,0].sort(function(){g=false;return 0});var d=function(C,e,F,G){F=F||[];e=e||document;var I=e;if(e.nodeType!==1&&e.nodeType!==9){return[]}if(!C||typeof C!=="string"){return F}var z,K,N,y,J,M,L,E,B=true,A=d.isXML(e),D=[],H=C;do{n.exec("");z=n.exec(H);if(z){H=z[3];D.push(z[1]);if(z[2]){y=z[3];break}}}while(z);if(D.length>1&&j.exec(C)){if(D.length===2&&k.relative[D[0]]){K=s(D[0]+D[1],e,G)}else{K=k.relative[D[0]]?[e]:d(D.shift(),e);while(D.length){C=D.shift();if(k.relative[C]){C+=D.shift()}K=s(C,K,G)}}}else{if(!G&&D.length>1&&e.nodeType===9&&!A&&k.match.ID.test(D[0])&&!k.match.ID.test(D[D.length-1])){J=d.find(D.shift(),e,A);e=J.expr?d.filter(J.expr,J.set)[0]:J.set[0]}if(e){J=G?{expr:D.pop(),set:l(G)}:d.find(D.pop(),D.length===1&&(D[0]==="~"||D[0]==="+")&&e.parentNode?e.parentNode:e,A);K=J.expr?d.filter(J.expr,J.set):J.set;if(D.length>0){N=l(K)}else{B=false}while(D.length){M=D.pop();L=M;if(!k.relative[M]){M=""}else{L=D.pop()}if(L==null){L=e}k.relative[M](N,L,A)}}else{N=D=[]}}if(!N){N=K}if(!N){d.error(M||C)}if(r.call(N)==="[object Array]"){if(!B){F.push.apply(F,N)}else{if(e&&e.nodeType===1){for(E=0;N[E]!=null;E++){if(N[E]&&(N[E]===true||N[E].nodeType===1&&d.contains(e,N[E]))){F.push(K[E])}}}else{for(E=0;N[E]!=null;E++){if(N[E]&&N[E].nodeType===1){F.push(K[E])}}}}}else{l(N,F)}if(y){d(y,I,F,G);d.uniqueSort(F)}return F};d.uniqueSort=function(y){if(p){h=g;y.sort(p);if(h){for(var e=1;e<y.length;e++){if(y[e]===y[e-1]){y.splice(e--,1)}}}}return y};d.matches=function(e,y){return d(e,null,null,y)};d.matchesSelector=function(e,y){return d(y,null,null,[e]).length>0};d.find=function(E,e,F){var D,z,B,A,C,y;if(!E){return[]}for(z=0,B=k.order.length;z<B;z++){C=k.order[z];if((A=k.leftMatch[C].exec(E))){y=A[1];A.splice(1,1);if(y.substr(y.length-1)!=="\\"){A[1]=(A[1]||"").replace(q,"");D=k.find[C](A,e,F);if(D!=null){E=E.replace(k.match[C],"");break}}}}if(!D){D=typeof e.getElementsByTagName!=="undefined"?e.getElementsByTagName("*"):[]}return{set:D,expr:E}};d.filter=function(I,H,L,B){var D,e,G,N,K,y,A,C,J,z=I,M=[],F=H,E=H&&H[0]&&d.isXML(H[0]);while(I&&H.length){for(G in k.filter){if((D=k.leftMatch[G].exec(I))!=null&&D[2]){y=k.filter[G];A=D[1];e=false;D.splice(1,1);if(A.substr(A.length-1)==="\\"){continue}if(F===M){M=[]}if(k.preFilter[G]){D=k.preFilter[G](D,F,L,M,B,E);if(!D){e=N=true}else{if(D===true){continue}}}if(D){for(C=0;(K=F[C])!=null;C++){if(K){N=y(K,D,C,F);J=B^N;if(L&&N!=null){if(J){e=true}else{F[C]=false}}else{if(J){M.push(K);e=true}}}}}if(N!==undefined){if(!L){F=M}I=I.replace(k.match[G],"");if(!e){return[]}break}}}if(I===z){if(e==null){d.error(I)}else{break}}z=I}return F};d.error=function(e){throw new Error("Syntax error, unrecognized expression: "+e)};var b=d.getText=function(B){var z,A,e=B.nodeType,y="";if(e){if(e===1||e===9||e===11){if(typeof B.textContent==="string"){return B.textContent}else{if(typeof B.innerText==="string"){return B.innerText.replace(u,"")}else{for(B=B.firstChild;B;B=B.nextSibling){y+=b(B)}}}}else{if(e===3||e===4){return B.nodeValue}}}else{for(z=0;(A=B[z]);z++){if(A.nodeType!==8){y+=b(A)}}}return y};var k=d.selectors={order:["ID","NAME","TAG"],match:{ID:/#((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,CLASS:/\.((?:[\w\u00c0-\uFFFF\-]|\\.)+)/,NAME:/\[name=['"]*((?:[\w\u00c0-\uFFFF\-]|\\.)+)['"]*\]/,ATTR:/\[\s*((?:[\w\u00c0-\uFFFF\-]|\\.)+)\s*(?:(\S?=)\s*(?:(['"])(.*?)\3|(#?(?:[\w\u00c0-\uFFFF\-]|\\.)*)|)|)\s*\]/,TAG:/^((?:[\w\u00c0-\uFFFF\*\-]|\\.)+)/,CHILD:/:(only|nth|last|first)-child(?:\(\s*(even|odd|(?:[+\-]?\d+|(?:[+\-]?\d*)?n\s*(?:[+\-]\s*\d+)?))\s*\))?/,POS:/:(nth|eq|gt|lt|first|last|even|odd)(?:\((\d*)\))?(?=[^\-]|$)/,PSEUDO:/:((?:[\w\u00c0-\uFFFF\-]|\\.)+)(?:\((['"]?)((?:\([^\)]+\)|[^\(\)]*)+)\2\))?/},leftMatch:{},attrMap:{"class":"className","for":"htmlFor"},attrHandle:{href:function(e){return e.getAttribute("href")},type:function(e){return e.getAttribute("type")}},relative:{"+":function(D,y){var A=typeof y==="string",C=A&&!x.test(y),E=A&&!C;if(C){y=y.toLowerCase()}for(var z=0,e=D.length,B;z<e;z++){if((B=D[z])){while((B=B.previousSibling)&&B.nodeType!==1){}D[z]=E||B&&B.nodeName.toLowerCase()===y?B||false:B===y}}if(E){d.filter(y,D,true)}},">":function(D,y){var C,B=typeof y==="string",z=0,e=D.length;if(B&&!x.test(y)){y=y.toLowerCase();for(;z<e;z++){C=D[z];if(C){var A=C.parentNode;D[z]=A.nodeName.toLowerCase()===y?A:false}}}else{for(;z<e;z++){C=D[z];if(C){D[z]=B?C.parentNode:C.parentNode===y}}if(B){d.filter(y,D,true)}}},"":function(A,y,C){var B,z=o++,e=t;if(typeof y==="string"&&!x.test(y)){y=y.toLowerCase();B=y;e=a}e("parentNode",y,z,A,B,C)},"~":function(A,y,C){var B,z=o++,e=t;if(typeof y==="string"&&!x.test(y)){y=y.toLowerCase();B=y;e=a}e("previousSibling",y,z,A,B,C)}},find:{ID:function(y,z,A){if(typeof z.getElementById!=="undefined"&&!A){var e=z.getElementById(y[1]);return e&&e.parentNode?[e]:[]}},NAME:function(z,C){if(typeof C.getElementsByName!=="undefined"){var y=[],B=C.getElementsByName(z[1]);for(var A=0,e=B.length;A<e;A++){if(B[A].getAttribute("name")===z[1]){y.push(B[A])}}return y.length===0?null:y}},TAG:function(e,y){if(typeof y.getElementsByTagName!=="undefined"){return y.getElementsByTagName(e[1])}}},preFilter:{CLASS:function(A,y,z,e,D,E){A=" "+A[1].replace(q,"")+" ";if(E){return A}for(var B=0,C;(C=y[B])!=null;B++){if(C){if(D^(C.className&&(" "+C.className+" ").replace(/[\t\n\r]/g," ").indexOf(A)>=0)){if(!z){e.push(C)}}else{if(z){y[B]=false}}}}return false},ID:function(e){return e[1].replace(q,"")},TAG:function(y,e){return y[1].replace(q,"").toLowerCase()},CHILD:function(e){if(e[1]==="nth"){if(!e[2]){d.error(e[0])}e[2]=e[2].replace(/^\+|\s*/g,"");var y=/(-?)(\d*)(?:n([+\-]?\d*))?/.exec(e[2]==="even"&&"2n"||e[2]==="odd"&&"2n+1"||!/\D/.test(e[2])&&"0n+"+e[2]||e[2]);e[2]=(y[1]+(y[2]||1))-0;e[3]=y[3]-0}else{if(e[2]){d.error(e[0])}}e[0]=o++;return e},ATTR:function(B,y,z,e,C,D){var A=B[1]=B[1].replace(q,"");if(!D&&k.attrMap[A]){B[1]=k.attrMap[A]}B[4]=(B[4]||B[5]||"").replace(q,"");if(B[2]==="~="){B[4]=" "+B[4]+" "}return B},PSEUDO:function(B,y,z,e,C){if(B[1]==="not"){if((n.exec(B[3])||"").length>1||/^\w/.test(B[3])){B[3]=d(B[3],null,null,y)}else{var A=d.filter(B[3],y,z,true^C);if(!z){e.push.apply(e,A)}return false}}else{if(k.match.POS.test(B[0])||k.match.CHILD.test(B[0])){return true}}return B},POS:function(e){e.unshift(true);return e}},filters:{enabled:function(e){return e.disabled===false&&e.type!=="hidden"},disabled:function(e){return e.disabled===true},checked:function(e){return e.checked===true},selected:function(e){if(e.parentNode){e.parentNode.selectedIndex}return e.selected===true},parent:function(e){return !!e.firstChild},empty:function(e){return !e.firstChild},has:function(z,y,e){return !!d(e[3],z).length},header:function(e){return(/h\d/i).test(e.nodeName)},text:function(z){var e=z.getAttribute("type"),y=z.type;return z.nodeName.toLowerCase()==="input"&&"text"===y&&(e===y||e===null)},radio:function(e){return e.nodeName.toLowerCase()==="input"&&"radio"===e.type},checkbox:function(e){return e.nodeName.toLowerCase()==="input"&&"checkbox"===e.type},file:function(e){return e.nodeName.toLowerCase()==="input"&&"file"===e.type},password:function(e){return e.nodeName.toLowerCase()==="input"&&"password"===e.type},submit:function(y){var e=y.nodeName.toLowerCase();return(e==="input"||e==="button")&&"submit"===y.type},image:function(e){return e.nodeName.toLowerCase()==="input"&&"image"===e.type},reset:function(y){var e=y.nodeName.toLowerCase();return(e==="input"||e==="button")&&"reset"===y.type},button:function(y){var e=y.nodeName.toLowerCase();return e==="input"&&"button"===y.type||e==="button"},input:function(e){return(/input|select|textarea|button/i).test(e.nodeName)},focus:function(e){return e===e.ownerDocument.activeElement}},setFilters:{first:function(y,e){return e===0},last:function(z,y,e,A){return y===A.length-1},even:function(y,e){return e%2===0},odd:function(y,e){return e%2===1},lt:function(z,y,e){return y<e[3]-0},gt:function(z,y,e){return y>e[3]-0},nth:function(z,y,e){return e[3]-0===y},eq:function(z,y,e){return e[3]-0===y}},filter:{PSEUDO:function(z,E,D,F){var e=E[1],y=k.filters[e];if(y){return y(z,D,E,F)}else{if(e==="contains"){return(z.textContent||z.innerText||b([z])||"").indexOf(E[3])>=0}else{if(e==="not"){var A=E[3];for(var C=0,B=A.length;C<B;C++){if(A[C]===z){return false}}return true}else{d.error(e)}}}},CHILD:function(z,B){var A,H,D,G,e,C,F,E=B[1],y=z;switch(E){case"only":case"first":while((y=y.previousSibling)){if(y.nodeType===1){return false}}if(E==="first"){return true}y=z;case"last":while((y=y.nextSibling)){if(y.nodeType===1){return false}}return true;case"nth":A=B[2];H=B[3];if(A===1&&H===0){return true}D=B[0];G=z.parentNode;if(G&&(G[i]!==D||!z.nodeIndex)){C=0;for(y=G.firstChild;y;y=y.nextSibling){if(y.nodeType===1){y.nodeIndex=++C}}G[i]=D}F=z.nodeIndex-H;if(A===0){return F===0}else{return(F%A===0&&F/A>=0)}}},ID:function(y,e){return y.nodeType===1&&y.getAttribute("id")===e},TAG:function(y,e){return(e==="*"&&y.nodeType===1)||!!y.nodeName&&y.nodeName.toLowerCase()===e},CLASS:function(y,e){return(" "+(y.className||y.getAttribute("class"))+" ").indexOf(e)>-1},ATTR:function(C,A){var z=A[1],e=d.attr?d.attr(C,z):k.attrHandle[z]?k.attrHandle[z](C):C[z]!=null?C[z]:C.getAttribute(z),D=e+"",B=A[2],y=A[4];return e==null?B==="!=":!B&&d.attr?e!=null:B==="="?D===y:B==="*="?D.indexOf(y)>=0:B==="~="?(" "+D+" ").indexOf(y)>=0:!y?D&&e!==false:B==="!="?D!==y:B==="^="?D.indexOf(y)===0:B==="$="?D.substr(D.length-y.length)===y:B==="|="?D===y||D.substr(0,y.length+1)===y+"-":false},POS:function(B,y,z,C){var e=y[2],A=k.setFilters[e];if(A){return A(B,z,y,C)}}}};var j=k.match.POS,c=function(y,e){return"\\"+(e-0+1)};for(var f in k.match){k.match[f]=new RegExp(k.match[f].source+(/(?![^\[]*\])(?![^\(]*\))/.source));k.leftMatch[f]=new RegExp(/(^(?:.|\r|\n)*?)/.source+k.match[f].source.replace(/\\(\d+)/g,c))}k.match.globalPOS=j;var l=function(y,e){y=Array.prototype.slice.call(y,0);if(e){e.push.apply(e,y);return e}return y};try{Array.prototype.slice.call(document.documentElement.childNodes,0)[0].nodeType}catch(v){l=function(B,A){var z=0,y=A||[];if(r.call(B)==="[object Array]"){Array.prototype.push.apply(y,B)}else{if(typeof B.length==="number"){for(var e=B.length;z<e;z++){y.push(B[z])}}else{for(;B[z];z++){y.push(B[z])}}}return y}}var p,m;if(document.documentElement.compareDocumentPosition){p=function(y,e){if(y===e){h=true;return 0}if(!y.compareDocumentPosition||!e.compareDocumentPosition){return y.compareDocumentPosition?-1:1}return y.compareDocumentPosition(e)&4?-1:1}}else{p=function(F,E){if(F===E){h=true;return 0}else{if(F.sourceIndex&&E.sourceIndex){return F.sourceIndex-E.sourceIndex}}var C,y,z=[],e=[],B=F.parentNode,D=E.parentNode,G=B;if(B===D){return m(F,E)}else{if(!B){return -1}else{if(!D){return 1}}}while(G){z.unshift(G);G=G.parentNode}G=D;while(G){e.unshift(G);G=G.parentNode}C=z.length;y=e.length;for(var A=0;A<C&&A<y;A++){if(z[A]!==e[A]){return m(z[A],e[A])}}return A===C?m(F,e[A],-1):m(z[A],E,1)};m=function(y,e,z){if(y===e){return z}var A=y.nextSibling;while(A){if(A===e){return -1}A=A.nextSibling}return 1}}(function(){var y=document.createElement("div"),z="script"+(new Date()).getTime(),e=document.documentElement;y.innerHTML="<a name='"+z+"'/>";e.insertBefore(y,e.firstChild);if(document.getElementById(z)){k.find.ID=function(B,C,D){if(typeof C.getElementById!=="undefined"&&!D){var A=C.getElementById(B[1]);return A?A.id===B[1]||typeof A.getAttributeNode!=="undefined"&&A.getAttributeNode("id").nodeValue===B[1]?[A]:undefined:[]}};k.filter.ID=function(C,A){var B=typeof C.getAttributeNode!=="undefined"&&C.getAttributeNode("id");return C.nodeType===1&&B&&B.nodeValue===A}}e.removeChild(y);e=y=null})();(function(){var e=document.createElement("div");e.appendChild(document.createComment(""));if(e.getElementsByTagName("*").length>0){k.find.TAG=function(y,C){var B=C.getElementsByTagName(y[1]);if(y[1]==="*"){var A=[];for(var z=0;B[z];z++){if(B[z].nodeType===1){A.push(B[z])}}B=A}return B}}e.innerHTML="<a href='#'></a>";if(e.firstChild&&typeof e.firstChild.getAttribute!=="undefined"&&e.firstChild.getAttribute("href")!=="#"){k.attrHandle.href=function(y){return y.getAttribute("href",2)}}e=null})();if(document.querySelectorAll){(function(){var e=d,A=document.createElement("div"),z="__sizzle__";A.innerHTML="<p class='TEST'></p>";if(A.querySelectorAll&&A.querySelectorAll(".TEST").length===0){return}d=function(L,C,G,K){C=C||document;if(!K&&!d.isXML(C)){var J=/^(\w+$)|^\.([\w\-]+$)|^#([\w\-]+$)/.exec(L);if(J&&(C.nodeType===1||C.nodeType===9)){if(J[1]){return l(C.getElementsByTagName(L),G)}else{if(J[2]&&k.find.CLASS&&C.getElementsByClassName){return l(C.getElementsByClassName(J[2]),G)}}}if(C.nodeType===9){if(L==="body"&&C.body){return l([C.body],G)}else{if(J&&J[3]){var F=C.getElementById(J[3]);if(F&&F.parentNode){if(F.id===J[3]){return l([F],G)}}else{return l([],G)}}}try{return l(C.querySelectorAll(L),G)}catch(H){}}else{if(C.nodeType===1&&C.nodeName.toLowerCase()!=="object"){var D=C,E=C.getAttribute("id"),B=E||z,N=C.parentNode,M=/^\s*[+~]/.test(L);if(!E){C.setAttribute("id",B)}else{B=B.replace(/'/g,"\\$&")}if(M&&N){C=C.parentNode}try{if(!M||N){return l(C.querySelectorAll("[id='"+B+"'] "+L),G)}}catch(I){}finally{if(!E){D.removeAttribute("id")}}}}}return e(L,C,G,K)};for(var y in e){d[y]=e[y]}A=null})()}(function(){var e=document.documentElement,z=e.matchesSelector||e.mozMatchesSelector||e.webkitMatchesSelector||e.msMatchesSelector;if(z){var B=!z.call(document.createElement("div"),"div"),y=false;try{z.call(document.documentElement,"[test!='']:sizzle")}catch(A){y=true}d.matchesSelector=function(D,F){F=F.replace(/\=\s*([^'"\]]*)\s*\]/g,"='$1']");if(!d.isXML(D)){try{if(y||!k.match.PSEUDO.test(F)&&!/!=/.test(F)){var C=z.call(D,F);if(C||!B||D.document&&D.document.nodeType!==11){return C}}}catch(E){}}return d(F,null,null,[D]).length>0}}})();(function(){var e=document.createElement("div");e.innerHTML="<div class='test e'></div><div class='test'></div>";if(!e.getElementsByClassName||e.getElementsByClassName("e").length===0){return}e.lastChild.className="e";if(e.getElementsByClassName("e").length===1){return}k.order.splice(1,0,"CLASS");k.find.CLASS=function(y,z,A){if(typeof z.getElementsByClassName!=="undefined"&&!A){return z.getElementsByClassName(y[1])}};e=null})();function a(y,D,C,G,E,F){for(var A=0,z=G.length;A<z;A++){var e=G[A];if(e){var B=false;e=e[y];while(e){if(e[i]===C){B=G[e.sizset];break}if(e.nodeType===1&&!F){e[i]=C;e.sizset=A}if(e.nodeName.toLowerCase()===D){B=e;break}e=e[y]}G[A]=B}}}function t(y,D,C,G,E,F){for(var A=0,z=G.length;A<z;A++){var e=G[A];if(e){var B=false;e=e[y];while(e){if(e[i]===C){B=G[e.sizset];break}if(e.nodeType===1){if(!F){e[i]=C;e.sizset=A}if(typeof D!=="string"){if(e===D){B=true;break}}else{if(d.filter(D,[e]).length>0){B=e;break}}}e=e[y]}G[A]=B}}}if(document.documentElement.contains){d.contains=function(y,e){return y!==e&&(y.contains?y.contains(e):true)}}else{if(document.documentElement.compareDocumentPosition){d.contains=function(y,e){return !!(y.compareDocumentPosition(e)&16)}}else{d.contains=function(){return false}}}d.isXML=function(e){var y=(e?e.ownerDocument||e:0).documentElement;return y?y.nodeName!=="HTML":false};var s=function(z,e,D){var C,E=[],B="",F=e.nodeType?[e]:e;while((C=k.match.PSEUDO.exec(z))){B+=C[0];z=z.replace(k.match.PSEUDO,"")}z=k.relative[z]?z+"*":z;for(var A=0,y=F.length;A<y;A++){d(z,F[A],E,D)}return d.filter(B,E)};window.tinymce.dom.Sizzle=d})();(function(a){a.dom.Element=function(f,d){var b=this,e,c;b.settings=d=d||{};b.id=f;b.dom=e=d.dom||a.DOM;if(!a.isIE){c=e.get(b.id)}a.each(("getPos,getRect,getParent,add,setStyle,getStyle,setStyles,setAttrib,setAttribs,getAttrib,addClass,removeClass,hasClass,getOuterHTML,setOuterHTML,remove,show,hide,isHidden,setHTML,get").split(/,/),function(g){b[g]=function(){var h=[f],j;for(j=0;j<arguments.length;j++){h.push(arguments[j])}h=e[g].apply(e,h);b.update(g);return h}});a.extend(b,{on:function(i,h,g){return a.dom.Event.add(b.id,i,h,g)},getXY:function(){return{x:parseInt(b.getStyle("left")),y:parseInt(b.getStyle("top"))}},getSize:function(){var g=e.get(b.id);return{w:parseInt(b.getStyle("width")||g.clientWidth),h:parseInt(b.getStyle("height")||g.clientHeight)}},moveTo:function(g,h){b.setStyles({left:g,top:h})},moveBy:function(g,i){var h=b.getXY();b.moveTo(h.x+g,h.y+i)},resizeTo:function(g,i){b.setStyles({width:g,height:i})},resizeBy:function(g,j){var i=b.getSize();b.resizeTo(i.w+g,i.h+j)},update:function(h){var g;if(a.isIE6&&d.blocker){h=h||"";if(h.indexOf("get")===0||h.indexOf("has")===0||h.indexOf("is")===0){return}if(h=="remove"){e.remove(b.blocker);return}if(!b.blocker){b.blocker=e.uniqueId();g=e.add(d.container||e.getRoot(),"iframe",{id:b.blocker,style:"position:absolute;",frameBorder:0,src:'javascript:""'});e.setStyle(g,"opacity",0)}else{g=e.get(b.blocker)}e.setStyles(g,{left:b.getStyle("left",1),top:b.getStyle("top",1),width:b.getStyle("width",1),height:b.getStyle("height",1),display:b.getStyle("display",1),zIndex:parseInt(b.getStyle("zIndex",1)||0)-1})}}})}})(tinymce);(function(d){function f(g){return g.replace(/[\n\r]+/g,"")}var c=d.is,b=d.isIE,e=d.each,a=d.dom.TreeWalker;d.create("tinymce.dom.Selection",{Selection:function(k,j,i,h){var g=this;g.dom=k;g.win=j;g.serializer=i;g.editor=h;e(["onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent"],function(l){g[l]=new d.util.Dispatcher(g)});if(!g.win.getSelection){g.tridentSel=new d.dom.TridentSelection(g)}if(d.isIE&&!d.isIE11&&k.boxModel){this._fixIESelection()}d.addUnload(g.destroy,g)},setCursorLocation:function(i,j){var g=this;var h=g.dom.createRng();h.setStart(i,j);h.setEnd(i,j);g.setRng(h);g.collapse(false)},getContent:function(h){var g=this,i=g.getRng(),m=g.dom.create("body"),k=g.getSel(),j,l,o;h=h||{};j=l="";h.get=true;h.format=h.format||"html";h.forced_root_block="";g.onBeforeGetContent.dispatch(g,h);if(h.format=="text"){return g.isCollapsed()?"":(i.text||(k.toString?k.toString():""))}if(i.cloneContents){o=i.cloneContents();if(o){m.appendChild(o)}}else{if(c(i.item)||c(i.htmlText)){m.innerHTML="<br>"+(i.item?i.item(0).outerHTML:i.htmlText);m.removeChild(m.firstChild)}else{m.innerHTML=i.toString()}}if(/^\s/.test(m.innerHTML)){j=" "}if(/\s+$/.test(m.innerHTML)){l=" "}h.getInner=true;h.content=g.isCollapsed()?"":j+g.serializer.serialize(m,h)+l;g.onGetContent.dispatch(g,h);return h.content},setContent:function(h,j){var o=this,g=o.getRng(),k,l=o.win.document,n,m;j=j||{format:"html"};j.set=true;h=j.content=h;if(!j.no_events){o.onBeforeSetContent.dispatch(o,j)}h=j.content;if(g.insertNode){h+='<span id="__caret">_</span>';if(g.startContainer==l&&g.endContainer==l){l.body.innerHTML=h}else{g.deleteContents();if(l.body.childNodes.length===0){l.body.innerHTML=h}else{if(g.createContextualFragment){g.insertNode(g.createContextualFragment(h))}else{n=l.createDocumentFragment();m=l.createElement("div");n.appendChild(m);m.outerHTML=h;g.insertNode(n)}}}k=o.dom.get("__caret");g=l.createRange();g.setStartBefore(k);g.setEndBefore(k);o.setRng(g);o.dom.remove("__caret");try{o.setRng(g)}catch(i){}}else{if(g.item){l.execCommand("Delete",false,null);g=o.getRng()}if(/^\s+/.test(h)){g.pasteHTML('<span id="__mce_tmp">_</span>'+h);o.dom.remove("__mce_tmp")}else{g.pasteHTML(h)}}if(!j.no_events){o.onSetContent.dispatch(o,j)}},getStart:function(){var i=this,h=i.getRng(),j,g,l,k;if(h.duplicate||h.item){if(h.item){return h.item(0)}l=h.duplicate();l.collapse(1);j=l.parentElement();if(j.ownerDocument!==i.dom.doc){j=i.dom.getRoot()}g=k=h.parentElement();while(k=k.parentNode){if(k==j){j=g;break}}return j}else{j=h.startContainer;if(j.nodeType==1&&j.hasChildNodes()){j=j.childNodes[Math.min(j.childNodes.length-1,h.startOffset)]}if(j&&j.nodeType==3){return j.parentNode}return j}},getEnd:function(){var h=this,g=h.getRng(),j,i;if(g.duplicate||g.item){if(g.item){return g.item(0)}g=g.duplicate();g.collapse(0);j=g.parentElement();if(j.ownerDocument!==h.dom.doc){j=h.dom.getRoot()}if(j&&j.nodeName=="BODY"){return j.lastChild||j}return j}else{j=g.endContainer;i=g.endOffset;if(j.nodeType==1&&j.hasChildNodes()){j=j.childNodes[i>0?i-1:i]}if(j&&j.nodeType==3){return j.parentNode}return j}},getBookmark:function(s,v){var y=this,n=y.dom,h,k,j,o,i,p,q,m="\uFEFF",x;function g(z,A){var t=0;e(n.select(z),function(C,B){if(C==A){t=B}});return t}function u(t){function z(E){var A,D,C,B=E?"start":"end";A=t[B+"Container"];D=t[B+"Offset"];if(A.nodeType==1&&A.nodeName=="TR"){C=A.childNodes;A=C[Math.min(E?D:D-1,C.length-1)];if(A){D=E?0:A.childNodes.length;t["set"+(E?"Start":"End")](A,D)}}}z(true);z();return t}function l(){var z=y.getRng(true),t=n.getRoot(),A={};function B(E,J){var D=E[J?"startContainer":"endContainer"],I=E[J?"startOffset":"endOffset"],C=[],F,H,G=0;if(D.nodeType==3){if(v){for(F=D.previousSibling;F&&F.nodeType==3;F=F.previousSibling){I+=F.nodeValue.length}}C.push(I)}else{H=D.childNodes;if(I>=H.length&&H.length){G=1;I=Math.max(0,H.length-1)}C.push(y.dom.nodeIndex(H[I],v)+G)}for(;D&&D!=t;D=D.parentNode){C.push(y.dom.nodeIndex(D,v))}return C}A.start=B(z,true);if(!y.isCollapsed()){A.end=B(z)}return A}if(s==2){if(y.tridentSel){return y.tridentSel.getBookmark(s)}return l()}if(s){h=y.getRng();if(h.setStart){h={startContainer:h.startContainer,startOffset:h.startOffset,endContainer:h.endContainer,endOffset:h.endOffset}}return{rng:h}}h=y.getRng();j=n.uniqueId();o=tinyMCE.activeEditor.selection.isCollapsed();x="overflow:hidden;line-height:0px";if(h.duplicate||h.item){if(!h.item){k=h.duplicate();try{h.collapse();h.pasteHTML('<span data-mce-type="bookmark" id="'+j+'_start" style="'+x+'">'+m+"</span>");if(!o){k.collapse(false);h.moveToElementText(k.parentElement());if(h.compareEndPoints("StartToEnd",k)===0){k.move("character",-1)}k.pasteHTML('<span data-mce-type="bookmark" id="'+j+'_end" style="'+x+'">'+m+"</span>")}}catch(r){return null}}else{p=h.item(0);i=p.nodeName;return{name:i,index:g(i,p)}}}else{p=y.getNode();i=p.nodeName;if(i=="IMG"){return{name:i,index:g(i,p)}}k=u(h.cloneRange());if(!o){k.collapse(false);k.insertNode(n.create("span",{"data-mce-type":"bookmark",id:j+"_end",style:x},m))}h=u(h);h.collapse(true);h.insertNode(n.create("span",{"data-mce-type":"bookmark",id:j+"_start",style:x},m))}y.moveToBookmark({id:j,keep:1});return{id:j}},moveToBookmark:function(q){var v=this,n=v.dom,l,j,g,i,u,k,x,r,s;function h(C){var t=q[C?"start":"end"],z,A,B,y;if(t){B=t[0];for(A=u,z=t.length-1;z>=1;z--){y=A.childNodes;if(t[z]>y.length-1){return}A=y[t[z]]}if(A.nodeType===3){B=Math.min(t[0],A.nodeValue.length)}if(A.nodeType===1){B=Math.min(t[0],A.childNodes.length)}if(C){g.setStart(A,B)}else{g.setEnd(A,B)}}return true}function m(D){var y=n.get(q.id+"_"+D),C,t,A,B,z=q.keep;if(y){C=y.parentNode;if(D=="start"){if(!z){t=n.nodeIndex(y)}else{C=y.firstChild;t=1}k=x=C;r=s=t}else{if(!z){t=n.nodeIndex(y)}else{C=y.firstChild;t=1}x=C;s=t}if(!z){B=y.previousSibling;A=y.nextSibling;e(d.grep(y.childNodes),function(E){if(E.nodeType==3){E.nodeValue=E.nodeValue.replace(/\uFEFF/g,"")}});while(y=n.get(q.id+"_"+D)){n.remove(y,1)}if(B&&A&&B.nodeType==A.nodeType&&B.nodeType==3&&!d.isOpera){t=B.nodeValue.length;B.appendData(A.nodeValue);n.remove(A);if(D=="start"){k=x=B;r=s=t}else{x=B;s=t}}}}}function o(t){if(n.isBlock(t)&&!t.innerHTML&&!b){t.innerHTML='<br data-mce-bogus="1" />'}return t}if(q){if(q.start){g=n.createRng();u=n.getRoot();if(v.tridentSel){return v.tridentSel.moveToBookmark(q)}if(h(true)&&h()){v.setRng(g)}}else{if(q.id){m("start");m("end");if(k){g=n.createRng();g.setStart(o(k),r);g.setEnd(o(x),s);v.setRng(g)}}else{if(q.name){v.select(n.select(q.name)[q.index])}else{if(q.rng){g=q.rng;if(g.startContainer){i=v.dom.createRng();try{i.setStart(g.startContainer,g.startOffset);i.setEnd(g.endContainer,g.endOffset)}catch(p){}g=i}v.setRng(g)}}}}}},select:function(l,k){var j=this,m=j.dom,h=m.createRng(),g;function i(n,p){var o=new a(n,n);do{if(n.nodeType==3&&d.trim(n.nodeValue).length!==0){if(p){h.setStart(n,0)}else{h.setEnd(n,n.nodeValue.length)}return}if(n.nodeName=="BR"){if(p){h.setStartBefore(n)}else{h.setEndBefore(n)}return}}while(n=(p?o.next():o.prev()))}if(l){g=m.nodeIndex(l);h.setStart(l.parentNode,g);h.setEnd(l.parentNode,g+1);if(k){i(l,1);i(l)}j.setRng(h)}return l},isCollapsed:function(){var g=this,i=g.getRng(),h=g.getSel();if(!i||i.item){return false}if(i.compareEndPoints){return i.compareEndPoints("StartToEnd",i)===0}return !h||i.collapsed},collapse:function(g){var i=this,h=i.getRng(),j;if(h.item){j=h.item(0);h=i.win.document.body.createTextRange();h.moveToElementText(j)}h.collapse(!!g);i.setRng(h)},getSel:function(){var h=this,g=this.win;return g.getSelection?g.getSelection():g.document.selection},getRng:function(m){var h=this,j,g,l,k=h.win.document;if(m&&h.tridentSel){return h.tridentSel.getRangeAt(0)}try{if(j=h.getSel()){g=j.rangeCount>0?j.getRangeAt(0):(j.createRange?j.createRange():k.createRange())}}catch(i){}if(d.isIE&&!d.isIE11&&g&&g.setStart&&k.selection.createRange().item){l=k.selection.createRange().item(0);g=k.createRange();g.setStartBefore(l);g.setEndAfter(l)}if(!g){g=k.createRange?k.createRange():k.body.createTextRange()}if(g.setStart&&g.startContainer.nodeType===9&&g.collapsed){l=h.dom.getRoot();g.setStart(l,0);g.setEnd(l,0)}if(h.selectedRange&&h.explicitRange){if(g.compareBoundaryPoints(g.START_TO_START,h.selectedRange)===0&&g.compareBoundaryPoints(g.END_TO_END,h.selectedRange)===0){g=h.explicitRange}else{h.selectedRange=null;h.explicitRange=null}}return g},setRng:function(k,g){var j,i=this;if(!i.tridentSel){j=i.getSel();if(j){i.explicitRange=k;try{j.removeAllRanges()}catch(h){}j.addRange(k);if(g===false&&j.extend){j.collapse(k.endContainer,k.endOffset);j.extend(k.startContainer,k.startOffset)}i.selectedRange=j.rangeCount>0?j.getRangeAt(0):null}}else{if(k.cloneRange){try{i.tridentSel.addRange(k);return}catch(h){}}try{k.select()}catch(h){}}},setNode:function(h){var g=this;g.setContent(g.dom.getOuterHTML(h));return h},getNode:function(){var i=this,h=i.getRng(),j=i.getSel(),m,l=h.startContainer,g=h.endContainer;function k(q,o){var p=q;while(q&&q.nodeType===3&&q.length===0){q=o?q.nextSibling:q.previousSibling}return q||p}if(!h){return i.dom.getRoot()}if(h.setStart){m=h.commonAncestorContainer;if(!h.collapsed){if(h.startContainer==h.endContainer){if(h.endOffset-h.startOffset<2){if(h.startContainer.hasChildNodes()){m=h.startContainer.childNodes[h.startOffset]}}}if(l.nodeType===3&&g.nodeType===3){if(l.length===h.startOffset){l=k(l.nextSibling,true)}else{l=l.parentNode}if(h.endOffset===0){g=k(g.previousSibling,false)}else{g=g.parentNode}if(l&&l===g){return l}}}if(m&&m.nodeType==3){return m.parentNode}return m}return h.item?h.item(0):h.parentElement()},getSelectedBlocks:function(p,h){var o=this,k=o.dom,m,l,i,j=[];m=k.getParent(p||o.getStart(),k.isBlock);l=k.getParent(h||o.getEnd(),k.isBlock);if(m){j.push(m)}if(m&&l&&m!=l){i=m;var g=new a(m,k.getRoot());while((i=g.next())&&i!=l){if(k.isBlock(i)){j.push(i)}}}if(l&&m!=l){j.push(l)}return j},isForward:function(){var i=this.dom,g=this.getSel(),j,h;if(!g||g.anchorNode==null||g.focusNode==null){return true}j=i.createRng();j.setStart(g.anchorNode,g.anchorOffset);j.collapse(true);h=i.createRng();h.setStart(g.focusNode,g.focusOffset);h.collapse(true);return j.compareBoundaryPoints(j.START_TO_START,h)<=0},normalize:function(){var h=this,g,m,l,j,i;function k(p){var o,r,n,s=h.dom,u=s.getRoot(),q,t,v;function y(z,A){var B=new a(z,s.getParent(z.parentNode,s.isBlock)||u);while(z=B[A?"prev":"next"]()){if(z.nodeName==="BR"){return true}}}function x(B,z){var C,A;z=z||o;C=new a(z,s.getParent(z.parentNode,s.isBlock)||u);while(q=C[B?"prev":"next"]()){if(q.nodeType===3&&q.nodeValue.length>0){o=q;r=B?q.nodeValue.length:0;m=true;return}if(s.isBlock(q)||t[q.nodeName.toLowerCase()]){return}A=q}if(l&&A){o=A;m=true;r=0}}o=g[(p?"start":"end")+"Container"];r=g[(p?"start":"end")+"Offset"];t=s.schema.getNonEmptyElements();if(o.nodeType===9){o=s.getRoot();r=0}if(o===u){if(p){q=o.childNodes[r>0?r-1:0];if(q){v=q.nodeName.toLowerCase();if(t[q.nodeName]||q.nodeName=="TABLE"){return}}}if(o.hasChildNodes()){o=o.childNodes[Math.min(!p&&r>0?r-1:r,o.childNodes.length-1)];r=0;if(o.hasChildNodes()&&!/TABLE/.test(o.nodeName)){q=o;n=new a(o,u);do{if(q.nodeType===3&&q.nodeValue.length>0){r=p?0:q.nodeValue.length;o=q;m=true;break}if(t[q.nodeName.toLowerCase()]){r=s.nodeIndex(q);o=q.parentNode;if(q.nodeName=="IMG"&&!p){r++}m=true;break}}while(q=(p?n.next():n.prev()))}}}if(l){if(o.nodeType===3&&r===0){x(true)}if(o.nodeType===1){q=o.childNodes[r];if(q&&q.nodeName==="BR"&&!y(q)&&!y(q,true)){x(true,o.childNodes[r])}}}if(p&&!l&&o.nodeType===3&&r===o.nodeValue.length){x(false)}if(m){g["set"+(p?"Start":"End")](o,r)}}if(d.isIE){return}g=h.getRng();l=g.collapsed;k(true);if(!l){k()}if(m){if(l){g.collapse(true)}h.setRng(g,h.isForward())}},selectorChanged:function(g,j){var h=this,i;if(!h.selectorChangedData){h.selectorChangedData={};i={};h.editor.onNodeChange.addToTop(function(l,k,o){var p=h.dom,m=p.getParents(o,null,p.getRoot()),n={};e(h.selectorChangedData,function(r,q){e(m,function(s){if(p.is(s,q)){if(!i[q]){e(r,function(t){t(true,{node:s,selector:q,parents:m})});i[q]=r}n[q]=r;return false}})});e(i,function(r,q){if(!n[q]){delete i[q];e(r,function(s){s(false,{node:o,selector:q,parents:m})})}})})}if(!h.selectorChangedData[g]){h.selectorChangedData[g]=[]}h.selectorChangedData[g].push(j);return h},scrollIntoView:function(k){var j,h,g=this,i=g.dom;h=i.getViewPort(g.editor.getWin());j=i.getPos(k).y;if(j<h.y||j+25>h.y+h.h){g.editor.getWin().scrollTo(0,j<h.y?j:j-h.h+25)}},destroy:function(h){var g=this;g.win=null;if(!h){d.removeUnload(g.destroy)}},_fixIESelection:function(){var h=this.dom,n=h.doc,i=n.body,k,o,g;function j(p,s){var q=i.createTextRange();try{q.moveToPoint(p,s)}catch(r){q=null}return q}function m(q){var p;if(q.button){p=j(q.x,q.y);if(p){if(p.compareEndPoints("StartToStart",o)>0){p.setEndPoint("StartToStart",o)}else{p.setEndPoint("EndToEnd",o)}p.select()}}else{l()}}function l(){var p=n.selection.createRange();if(o&&!p.item&&p.compareEndPoints("StartToEnd",p)===0){o.select()}h.unbind(n,"mouseup",l);h.unbind(n,"mousemove",m);o=k=0}n.documentElement.unselectable=true;h.bind(n,["mousedown","contextmenu"],function(p){if(p.target.nodeName==="HTML"){if(k){l()}g=n.documentElement;if(g.scrollHeight>g.clientHeight){return}k=1;o=j(p.x,p.y);if(o){h.bind(n,"mouseup",l);h.bind(n,"mousemove",m);h.win.focus();o.select()}}})}})})(tinymce);(function(a){a.dom.Serializer=function(e,i,f){var h,b,d=a.isIE,g=a.each,c;if(!e.apply_source_formatting){e.indent=false}i=i||a.DOM;f=f||new a.html.Schema(e);e.entity_encoding=e.entity_encoding||"named";e.remove_trailing_brs="remove_trailing_brs" in e?e.remove_trailing_brs:true;h=new a.util.Dispatcher(self);b=new a.util.Dispatcher(self);c=new a.html.DomParser(e,f);c.addAttributeFilter("src,href,style",function(k,j){var o=k.length,l,q,n="data-mce-"+j,p=e.url_converter,r=e.url_converter_scope,m;while(o--){l=k[o];q=l.attributes.map[n];if(q!==m){l.attr(j,q.length>0?q:null);l.attr(n,null)}else{q=l.attributes.map[j];if(j==="style"){q=i.serializeStyle(i.parseStyle(q),l.name)}else{if(p){q=p.call(r,q,j,l.name)}}l.attr(j,q.length>0?q:null)}}});c.addAttributeFilter("class",function(j,k){var l=j.length,m,n;while(l--){m=j[l];n=m.attr("class").replace(/(?:^|\s)mce(Item\w+|Selected)(?!\S)/g,"");m.attr("class",n.length>0?n:null)}});c.addAttributeFilter("data-mce-type",function(j,l,k){var m=j.length,n;while(m--){n=j[m];if(n.attributes.map["data-mce-type"]==="bookmark"&&!k.cleanup){n.remove()}}});c.addAttributeFilter("data-mce-expando",function(j,l,k){var m=j.length;while(m--){j[m].attr(l,null)}});c.addNodeFilter("noscript",function(j){var k=j.length,l;while(k--){l=j[k].firstChild;if(l){l.value=a.html.Entities.decode(l.value)}}});c.addNodeFilter("script,style",function(k,l){var m=k.length,n,o;function j(p){return p.replace(/(<!--\[CDATA\[|\]\]-->)/g,"\n").replace(/^[\r\n]*|[\r\n]*$/g,"").replace(/^\s*((<!--)?(\s*\/\/)?\s*<!\[CDATA\[|(<!--\s*)?\/\*\s*<!\[CDATA\[\s*\*\/|(\/\/)?\s*<!--|\/\*\s*<!--\s*\*\/)\s*[\r\n]*/gi,"").replace(/\s*(\/\*\s*\]\]>\s*\*\/(-->)?|\s*\/\/\s*\]\]>(-->)?|\/\/\s*(-->)?|\]\]>|\/\*\s*-->\s*\*\/|\s*-->\s*)\s*$/g,"")}while(m--){n=k[m];o=n.firstChild?n.firstChild.value:"";if(l==="script"){n.attr("type",(n.attr("type")||"text/javascript").replace(/^mce\-/,""));if(o.length>0){n.firstChild.value="// <![CDATA[\n"+j(o)+"\n// ]]>"}}else{if(o.length>0){n.firstChild.value="<!--\n"+j(o)+"\n-->"}}}});c.addNodeFilter("#comment",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.value.indexOf("[CDATA[")===0){m.name="#cdata";m.type=4;m.value=m.value.replace(/^\[CDATA\[|\]\]$/g,"")}else{if(m.value.indexOf("mce:protected ")===0){m.name="#text";m.type=3;m.raw=true;m.value=unescape(m.value).substr(14)}}}});c.addNodeFilter("xml:namespace,input",function(j,k){var l=j.length,m;while(l--){m=j[l];if(m.type===7){m.remove()}else{if(m.type===1){if(k==="input"&&!("type" in m.attributes.map)){m.attr("type","text")}}}}});if(e.fix_list_elements){c.addNodeFilter("ul,ol",function(k,l){var m=k.length,n,j;while(m--){n=k[m];j=n.parent;if(j.name==="ul"||j.name==="ol"){if(n.prev&&n.prev.name==="li"){n.prev.append(n)}}}})}c.addAttributeFilter("data-mce-src,data-mce-href,data-mce-style",function(j,k){var l=j.length;while(l--){j[l].attr(k,null)}});return{schema:f,addNodeFilter:c.addNodeFilter,addAttributeFilter:c.addAttributeFilter,onPreProcess:h,onPostProcess:b,serialize:function(o,m){var l,p,k,j,n;if(d&&i.select("script,style,select,map").length>0){n=o.innerHTML;o=o.cloneNode(false);i.setHTML(o,n)}else{o=o.cloneNode(true)}l=o.ownerDocument.implementation;if(l.createHTMLDocument){p=l.createHTMLDocument("");g(o.nodeName=="BODY"?o.childNodes:[o],function(q){p.body.appendChild(p.importNode(q,true))});if(o.nodeName!="BODY"){o=p.body.firstChild}else{o=p.body}k=i.doc;i.doc=p}m=m||{};m.format=m.format||"html";if(!m.no_events){m.node=o;h.dispatch(self,m)}j=new a.html.Serializer(e,f);m.content=j.serialize(c.parse(a.trim(m.getInner?o.innerHTML:i.getOuterHTML(o)),m));if(!m.cleanup){m.content=m.content.replace(/\uFEFF/g,"")}if(!m.no_events){b.dispatch(self,m)}if(k){i.doc=k}m.node=null;return m.content},addRules:function(j){f.addValidElements(j)},setRules:function(j){f.setValidElements(j)}}}})(tinymce);(function(a){a.dom.ScriptLoader=function(h){var c=0,k=1,i=2,l={},j=[],e={},d=[],g=0,f;function b(m,v){var x=this,q=a.DOM,s,o,r,n;function p(){q.remove(n);if(s){s.onreadystatechange=s.onload=s=null}v()}function u(){if(typeof(console)!=="undefined"&&console.log){console.log("Failed to load: "+m)}}n=q.uniqueId();if(a.isIE6){o=new a.util.URI(m);r=location;if(o.host==r.hostname&&o.port==r.port&&(o.protocol+":")==r.protocol&&o.protocol.toLowerCase()!="file"){a.util.XHR.send({url:a._addVer(o.getURI()),success:function(y){var t=q.create("script",{type:"text/javascript"});t.text=y;document.getElementsByTagName("head")[0].appendChild(t);q.remove(t);p()},error:u});return}}s=document.createElement("script");s.id=n;s.type="text/javascript";s.src=a._addVer(m);if(!a.isIE||a.isIE11){s.onload=p}s.onerror=u;if(!a.isOpera){s.onreadystatechange=function(){var t=s.readyState;if(t=="complete"||t=="loaded"){p()}}}(document.getElementsByTagName("head")[0]||document.body).appendChild(s)}this.isDone=function(m){return l[m]==i};this.markDone=function(m){l[m]=i};this.add=this.load=function(m,q,n){var o,p=l[m];if(p==f){j.push(m);l[m]=c}if(q){if(!e[m]){e[m]=[]}e[m].push({func:q,scope:n||this})}};this.loadQueue=function(n,m){this.loadScripts(j,n,m)};this.loadScripts=function(m,q,p){var o;function n(r){a.each(e[r],function(s){s.func.call(s.scope)});e[r]=f}d.push({func:q,scope:p||this});o=function(){var r=a.grep(m);m.length=0;a.each(r,function(s){if(l[s]==i){n(s);return}if(l[s]!=k){l[s]=k;g++;b(s,function(){l[s]=i;g--;n(s);o()})}});if(!g){a.each(d,function(s){s.func.call(s.scope)});d.length=0}};o()}};a.ScriptLoader=new a.dom.ScriptLoader()})(tinymce);(function(a){a.dom.RangeUtils=function(c){var b="\uFEFF";this.walk=function(d,s){var i=d.startContainer,l=d.startOffset,t=d.endContainer,m=d.endOffset,j,g,o,h,r,q,e;e=c.select("td.mceSelected,th.mceSelected");if(e.length>0){a.each(e,function(u){s([u])});return}function f(u){var v;v=u[0];if(v.nodeType===3&&v===i&&l>=v.nodeValue.length){u.splice(0,1)}v=u[u.length-1];if(m===0&&u.length>0&&v===t&&v.nodeType===3){u.splice(u.length-1,1)}return u}function p(x,v,u){var y=[];for(;x&&x!=u;x=x[v]){y.push(x)}return y}function n(v,u){do{if(v.parentNode==u){return v}v=v.parentNode}while(v)}function k(x,v,y){var u=y?"nextSibling":"previousSibling";for(h=x,r=h.parentNode;h&&h!=v;h=r){r=h.parentNode;q=p(h==x?h:h[u],u);if(q.length){if(!y){q.reverse()}s(f(q))}}}if(i.nodeType==1&&i.hasChildNodes()){i=i.childNodes[l]}if(t.nodeType==1&&t.hasChildNodes()){t=t.childNodes[Math.min(m-1,t.childNodes.length-1)]}if(i==t){return s(f([i]))}j=c.findCommonAncestor(i,t);for(h=i;h;h=h.parentNode){if(h===t){return k(i,j,true)}if(h===j){break}}for(h=t;h;h=h.parentNode){if(h===i){return k(t,j)}if(h===j){break}}g=n(i,j)||i;o=n(t,j)||t;k(i,g,true);q=p(g==i?g:g.nextSibling,"nextSibling",o==t?o.nextSibling:o);if(q.length){s(f(q))}k(t,o)};this.split=function(e){var h=e.startContainer,d=e.startOffset,i=e.endContainer,g=e.endOffset;function f(j,k){return j.splitText(k)}if(h==i&&h.nodeType==3){if(d>0&&d<h.nodeValue.length){i=f(h,d);h=i.previousSibling;if(g>d){g=g-d;h=i=f(i,g).previousSibling;g=i.nodeValue.length;d=0}else{g=0}}}else{if(h.nodeType==3&&d>0&&d<h.nodeValue.length){h=f(h,d);d=0}if(i.nodeType==3&&g>0&&g<i.nodeValue.length){i=f(i,g).previousSibling;g=i.nodeValue.length}}return{startContainer:h,startOffset:d,endContainer:i,endOffset:g}}};a.dom.RangeUtils.compareRanges=function(c,b){if(c&&b){if(c.item||c.duplicate){if(c.item&&b.item&&c.item(0)===b.item(0)){return true}if(c.isEqual&&b.isEqual&&b.isEqual(c)){return true}}else{return c.startContainer==b.startContainer&&c.startOffset==b.startOffset}}return false}})(tinymce);(function(b){var a=b.dom.Event,c=b.each;b.create("tinymce.ui.KeyboardNavigation",{KeyboardNavigation:function(e,f){var q=this,n=e.root,m=e.items,o=e.enableUpDown,i=e.enableLeftRight||!e.enableUpDown,l=e.excludeFromTabOrder,k,h,p,d,g;f=f||b.DOM;k=function(r){g=r.target.id};h=function(r){f.setAttrib(r.target.id,"tabindex","-1")};d=function(r){var s=f.get(g);f.setAttrib(s,"tabindex","0");s.focus()};q.focus=function(){f.get(g).focus()};q.destroy=function(){c(m,function(s){var t=f.get(s.id);f.unbind(t,"focus",k);f.unbind(t,"blur",h)});var r=f.get(n);f.unbind(r,"focus",d);f.unbind(r,"keydown",p);m=f=n=q.focus=k=h=p=d=null;q.destroy=function(){}};q.moveFocus=function(v,s){var r=-1,u=q.controls,t;if(!g){return}c(m,function(y,x){if(y.id===g){r=x;return false}});r+=v;if(r<0){r=m.length-1}else{if(r>=m.length){r=0}}t=m[r];f.setAttrib(g,"tabindex","-1");f.setAttrib(t.id,"tabindex","0");f.get(t.id).focus();if(e.actOnFocus){e.onAction(t.id)}if(s){a.cancel(s)}};p=function(z){var v=37,u=39,y=38,A=40,r=27,t=14,s=13,x=32;switch(z.keyCode){case v:if(i){q.moveFocus(-1)}a.cancel(z);break;case u:if(i){q.moveFocus(1)}a.cancel(z);break;case y:if(o){q.moveFocus(-1)}a.cancel(z);break;case A:if(o){q.moveFocus(1)}a.cancel(z);break;case r:if(e.onCancel){e.onCancel();a.cancel(z)}break;case t:case s:case x:if(e.onAction){e.onAction(g);a.cancel(z)}break}};c(m,function(t,r){var s,u;if(!t.id){t.id=f.uniqueId("_mce_item_")}u=f.get(t.id);if(l){f.bind(u,"blur",h);s="-1"}else{s=(r===0?"0":"-1")}u.setAttribute("tabindex",s);f.bind(u,"focus",k)});if(m[0]){g=m[0].id}f.setAttrib(n,"tabindex","-1");var j=f.get(n);f.bind(j,"focus",d);f.bind(j,"keydown",p)}})})(tinymce);(function(c){var b=c.DOM,a=c.is;c.create("tinymce.ui.Control",{Control:function(f,e,d){this.id=f;this.settings=e=e||{};this.rendered=false;this.onRender=new c.util.Dispatcher(this);this.classPrefix="";this.scope=e.scope||this;this.disabled=0;this.active=0;this.editor=d},setAriaProperty:function(f,e){var d=b.get(this.id+"_aria")||b.get(this.id);if(d){b.setAttrib(d,"aria-"+f,!!e)}},focus:function(){b.get(this.id).focus()},setDisabled:function(d){if(d!=this.disabled){this.setAriaProperty("disabled",d);this.setState("Disabled",d);this.setState("Enabled",!d);this.disabled=d}},isDisabled:function(){return this.disabled},setActive:function(d){if(d!=this.active){this.setState("Active",d);this.active=d;this.setAriaProperty("pressed",d)}},isActive:function(){return this.active},setState:function(f,d){var e=b.get(this.id);f=this.classPrefix+f;if(d){b.addClass(e,f)}else{b.removeClass(e,f)}},isRendered:function(){return this.rendered},renderHTML:function(){},renderTo:function(d){b.setHTML(d,this.renderHTML())},postRender:function(){var e=this,d;if(a(e.disabled)){d=e.disabled;e.disabled=-1;e.setDisabled(d)}if(a(e.active)){d=e.active;e.active=-1;e.setActive(d)}},remove:function(){b.remove(this.id);this.destroy()},destroy:function(){c.dom.Event.clear(this.id)}})})(tinymce);tinymce.create("tinymce.ui.Container:tinymce.ui.Control",{Container:function(c,b,a){this.parent(c,b,a);this.controls=[];this.lookup={}},add:function(a){this.lookup[a.id]=a;this.controls.push(a);return a},get:function(a){return this.lookup[a]}});tinymce.create("tinymce.ui.Separator:tinymce.ui.Control",{Separator:function(b,a){this.parent(b,a);this.classPrefix="mceSeparator";this.setDisabled(true)},renderHTML:function(){return tinymce.DOM.createHTML("span",{"class":this.classPrefix,role:"separator","aria-orientation":"vertical",tabindex:"-1"})}});(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.MenuItem:tinymce.ui.Control",{MenuItem:function(g,f){this.parent(g,f);this.classPrefix="mceMenuItem"},setSelected:function(f){this.setState("Selected",f);this.setAriaProperty("checked",!!f);this.selected=f},isSelected:function(){return this.selected},postRender:function(){var f=this;f.parent();if(c(f.selected)){f.setSelected(f.selected)}}})})(tinymce);(function(d){var c=d.is,b=d.DOM,e=d.each,a=d.walk;d.create("tinymce.ui.Menu:tinymce.ui.MenuItem",{Menu:function(h,g){var f=this;f.parent(h,g);f.items={};f.collapsed=false;f.menuCount=0;f.onAddItem=new d.util.Dispatcher(this)},expand:function(g){var f=this;if(g){a(f,function(h){if(h.expand){h.expand()}},"items",f)}f.collapsed=false},collapse:function(g){var f=this;if(g){a(f,function(h){if(h.collapse){h.collapse()}},"items",f)}f.collapsed=true},isCollapsed:function(){return this.collapsed},add:function(f){if(!f.settings){f=new d.ui.MenuItem(f.id||b.uniqueId(),f)}this.onAddItem.dispatch(this,f);return this.items[f.id]=f},addSeparator:function(){return this.add({separator:true})},addMenu:function(f){if(!f.collapse){f=this.createMenu(f)}this.menuCount++;return this.add(f)},hasMenus:function(){return this.menuCount!==0},remove:function(f){delete this.items[f.id]},removeAll:function(){var f=this;a(f,function(g){if(g.removeAll){g.removeAll()}else{g.remove()}g.destroy()},"items",f);f.items={}},createMenu:function(g){var f=new d.ui.Menu(g.id||b.uniqueId(),g);f.onAddItem.add(this.onAddItem.dispatch,this.onAddItem);return f}})})(tinymce);(function(e){var d=e.is,c=e.DOM,f=e.each,a=e.dom.Event,b=e.dom.Element;e.create("tinymce.ui.DropMenu:tinymce.ui.Menu",{DropMenu:function(h,g){g=g||{};g.container=g.container||c.doc.body;g.offset_x=g.offset_x||0;g.offset_y=g.offset_y||0;g.vp_offset_x=g.vp_offset_x||0;g.vp_offset_y=g.vp_offset_y||0;if(d(g.icons)&&!g.icons){g["class"]+=" mceNoIcons"}this.parent(h,g);this.onShowMenu=new e.util.Dispatcher(this);this.onHideMenu=new e.util.Dispatcher(this);this.classPrefix="mceMenu"},createMenu:function(j){var h=this,i=h.settings,g;j.container=j.container||i.container;j.parent=h;j.constrain=j.constrain||i.constrain;j["class"]=j["class"]||i["class"];j.vp_offset_x=j.vp_offset_x||i.vp_offset_x;j.vp_offset_y=j.vp_offset_y||i.vp_offset_y;j.keyboard_focus=i.keyboard_focus;g=new e.ui.DropMenu(j.id||c.uniqueId(),j);g.onAddItem.add(h.onAddItem.dispatch,h.onAddItem);return g},focus:function(){var g=this;if(g.keyboardNav){g.keyboardNav.focus()}},update:function(){var i=this,j=i.settings,g=c.get("menu_"+i.id+"_tbl"),l=c.get("menu_"+i.id+"_co"),h,k;h=j.max_width?Math.min(g.offsetWidth,j.max_width):g.offsetWidth;k=j.max_height?Math.min(g.offsetHeight,j.max_height):g.offsetHeight;if(!c.boxModel){i.element.setStyles({width:h+2,height:k+2})}else{i.element.setStyles({width:h,height:k})}if(j.max_width){c.setStyle(l,"width",h)}if(j.max_height){c.setStyle(l,"height",k);if(g.clientHeight<j.max_height){c.setStyle(l,"overflow","hidden")}}},showMenu:function(p,n,r){var z=this,A=z.settings,o,g=c.getViewPort(),u,l,v,q,i=2,k,j,m=z.classPrefix;z.collapse(1);if(z.isMenuVisible){return}if(!z.rendered){o=c.add(z.settings.container,z.renderNode());f(z.items,function(h){h.postRender()});z.element=new b("menu_"+z.id,{blocker:1,container:A.container})}else{o=c.get("menu_"+z.id)}if(!e.isOpera){c.setStyles(o,{left:-65535,top:-65535})}c.show(o);z.update();p+=A.offset_x||0;n+=A.offset_y||0;g.w-=4;g.h-=4;if(A.constrain){u=o.clientWidth-i;l=o.clientHeight-i;v=g.x+g.w;q=g.y+g.h;if((p+A.vp_offset_x+u)>v){p=r?r-u:Math.max(0,(v-A.vp_offset_x)-u)}if((n+A.vp_offset_y+l)>q){n=Math.max(0,(q-A.vp_offset_y)-l)}}c.setStyles(o,{left:p,top:n});z.element.update();z.isMenuVisible=1;z.mouseClickFunc=a.add(o,"click",function(s){var h;s=s.target;if(s&&(s=c.getParent(s,"tr"))&&!c.hasClass(s,m+"ItemSub")){h=z.items[s.id];if(h.isDisabled()){return}k=z;while(k){if(k.hideMenu){k.hideMenu()}k=k.settings.parent}if(h.settings.onclick){h.settings.onclick(s)}return false}});if(z.hasMenus()){z.mouseOverFunc=a.add(o,"mouseover",function(x){var h,t,s;x=x.target;if(x&&(x=c.getParent(x,"tr"))){h=z.items[x.id];if(z.lastMenu){z.lastMenu.collapse(1)}if(h.isDisabled()){return}if(x&&c.hasClass(x,m+"ItemSub")){t=c.getRect(x);h.showMenu((t.x+t.w-i),t.y-i,t.x);z.lastMenu=h;c.addClass(c.get(h.id).firstChild,m+"ItemActive")}}})}a.add(o,"keydown",z._keyHandler,z);z.onShowMenu.dispatch(z);if(A.keyboard_focus){z._setupKeyboardNav()}},hideMenu:function(j){var g=this,i=c.get("menu_"+g.id),h;if(!g.isMenuVisible){return}if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(i,"mouseover",g.mouseOverFunc);a.remove(i,"click",g.mouseClickFunc);a.remove(i,"keydown",g._keyHandler);c.hide(i);g.isMenuVisible=0;if(!j){g.collapse(1)}if(g.element){g.element.hide()}if(h=c.get(g.id)){c.removeClass(h.firstChild,g.classPrefix+"ItemActive")}g.onHideMenu.dispatch(g)},add:function(i){var g=this,h;i=g.parent(i);if(g.isRendered&&(h=c.get("menu_"+g.id))){g._add(c.select("tbody",h)[0],i)}return i},collapse:function(g){this.parent(g);this.hideMenu(1)},remove:function(g){c.remove(g.id);this.destroy();return this.parent(g)},destroy:function(){var g=this,h=c.get("menu_"+g.id);if(g.keyboardNav){g.keyboardNav.destroy()}a.remove(h,"mouseover",g.mouseOverFunc);a.remove(c.select("a",h),"focus",g.mouseOverFunc);a.remove(h,"click",g.mouseClickFunc);a.remove(h,"keydown",g._keyHandler);if(g.element){g.element.remove()}c.remove(h)},renderNode:function(){var i=this,j=i.settings,l,h,k,g;g=c.create("div",{role:"listbox",id:"menu_"+i.id,"class":j["class"],style:"position:absolute;left:0;top:0;z-index:200000;outline:0"});if(i.settings.parent){c.setAttrib(g,"aria-parent","menu_"+i.settings.parent.id)}k=c.add(g,"div",{role:"presentation",id:"menu_"+i.id+"_co","class":i.classPrefix+(j["class"]?" "+j["class"]:"")});i.element=new b("menu_"+i.id,{blocker:1,container:j.container});if(j.menu_line){c.add(k,"span",{"class":i.classPrefix+"Line"})}l=c.add(k,"table",{role:"presentation",id:"menu_"+i.id+"_tbl",border:0,cellPadding:0,cellSpacing:0});h=c.add(l,"tbody");f(i.items,function(m){i._add(h,m)});i.rendered=true;return g},_setupKeyboardNav:function(){var i,h,g=this;i=c.get("menu_"+g.id);h=c.select("a[role=option]","menu_"+g.id);h.splice(0,0,i);g.keyboardNav=new e.ui.KeyboardNavigation({root:"menu_"+g.id,items:h,onCancel:function(){g.hideMenu()},enableUpDown:true});i.focus()},_keyHandler:function(g){var h=this,i;switch(g.keyCode){case 37:if(h.settings.parent){h.hideMenu();h.settings.parent.focus();a.cancel(g)}break;case 39:if(h.mouseOverFunc){h.mouseOverFunc(g)}break}},_add:function(j,h){var i,q=h.settings,p,l,k,m=this.classPrefix,g;if(q.separator){l=c.add(j,"tr",{id:h.id,"class":m+"ItemSeparator"});c.add(l,"td",{"class":m+"ItemSeparator"});if(i=l.previousSibling){c.addClass(i,"mceLast")}return}i=l=c.add(j,"tr",{id:h.id,"class":m+"Item "+m+"ItemEnabled"});i=k=c.add(i,q.titleItem?"th":"td");i=p=c.add(i,"a",{id:h.id+"_aria",role:q.titleItem?"presentation":"option",href:"javascript:;",onclick:"return false;",onmousedown:"return false;"});if(q.parent){c.setAttrib(p,"aria-haspopup","true");c.setAttrib(p,"aria-owns","menu_"+h.id)}c.addClass(k,q["class"]);g=c.add(i,"span",{"class":"mceIcon"+(q.icon?" mce_"+q.icon:"")});if(q.icon_src){c.add(g,"img",{src:q.icon_src})}i=c.add(i,q.element||"span",{"class":"mceText",title:h.settings.title},h.settings.title);if(h.settings.style){if(typeof h.settings.style=="function"){h.settings.style=h.settings.style()}c.setAttrib(i,"style",h.settings.style)}if(j.childNodes.length==1){c.addClass(l,"mceFirst")}if((i=l.previousSibling)&&c.hasClass(i,m+"ItemSeparator")){c.addClass(l,"mceFirst")}if(h.collapse){c.addClass(l,m+"ItemSub")}if(i=l.previousSibling){c.removeClass(i,"mceLast")}c.addClass(l,"mceLast")}})})(tinymce);(function(b){var a=b.DOM;b.create("tinymce.ui.Button:tinymce.ui.Control",{Button:function(e,d,c){this.parent(e,d,c);this.classPrefix="mceButton"},renderHTML:function(){var f=this.classPrefix,e=this.settings,d,c;c=a.encode(e.label||"");d='<a role="button" id="'+this.id+'" href="javascript:;" class="'+f+" "+f+"Enabled "+e["class"]+(c?" "+f+"Labeled":"")+'" onmousedown="return false;" onclick="return false;" aria-labelledby="'+this.id+'_voice" title="'+a.encode(e.title)+'">';if(e.image&&!(this.editor&&this.editor.forcedHighContrastMode)){d+='<span class="mceIcon '+e["class"]+'"><img class="mceIcon" src="'+e.image+'" alt="'+a.encode(e.title)+'" /></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")}else{d+='<span class="mceIcon '+e["class"]+'"></span>'+(c?'<span class="'+f+'Label">'+c+"</span>":"")}d+='<span class="mceVoiceLabel mceIconOnly" style="display: none;" id="'+this.id+'_voice">'+e.title+"</span>";d+="</a>";return d},postRender:function(){var d=this,e=d.settings,c;if(b.isIE&&d.editor){b.dom.Event.add(d.id,"mousedown",function(f){var g=d.editor.selection.getNode().nodeName;c=g==="IMG"?d.editor.selection.getBookmark():null})}b.dom.Event.add(d.id,"click",function(f){if(!d.isDisabled()){if(b.isIE&&d.editor&&c!==null){d.editor.selection.moveToBookmark(c)}return e.onclick.call(e.scope,f)}});b.dom.Event.add(d.id,"keydown",function(f){if(!d.isDisabled()&&f.keyCode==b.VK.SPACEBAR){b.dom.Event.cancel(f);return e.onclick.call(e.scope,f)}})}})})(tinymce);(function(e){var d=e.DOM,b=e.dom.Event,f=e.each,a=e.util.Dispatcher,c;e.create("tinymce.ui.ListBox:tinymce.ui.Control",{ListBox:function(j,i,g){var h=this;h.parent(j,i,g);h.items=[];h.onChange=new a(h);h.onPostRender=new a(h);h.onAdd=new a(h);h.onRenderMenu=new e.util.Dispatcher(this);h.classPrefix="mceListBox";h.marked={}},select:function(h){var g=this,j,i;g.marked={};if(h==c){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(k){return k==h}}if(h!=g.selectedValue){f(g.items,function(l,k){if(i(l.value)){j=1;g.selectByIndex(k);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(g){var i=this,j,k,h;i.marked={};if(g!=i.selectedIndex){j=d.get(i.id+"_text");h=d.get(i.id+"_voiceDesc");k=i.items[g];if(k){i.selectedValue=k.value;i.selectedIndex=g;d.setHTML(j,d.encode(k.title));d.setHTML(h,i.settings.title+" - "+k.title);d.removeClass(j,"mceTitle");d.setAttrib(i.id,"aria-valuenow",k.title)}else{d.setHTML(j,d.encode(i.settings.title));d.setHTML(h,d.encode(i.settings.title));d.addClass(j,"mceTitle");i.selectedValue=i.selectedIndex=null;d.setAttrib(i.id,"aria-valuenow",i.settings.title)}j=0}},mark:function(g){this.marked[g]=true},add:function(j,g,i){var h=this;i=i||{};i=e.extend(i,{title:j,value:g});h.items.push(i);h.onAdd.dispatch(h,i)},getLength:function(){return this.items.length},renderHTML:function(){var j="",g=this,i=g.settings,k=g.classPrefix;j='<span role="listbox" aria-haspopup="true" aria-labelledby="'+g.id+'_voiceDesc" aria-describedby="'+g.id+'_voiceDesc"><table role="presentation" tabindex="0" id="'+g.id+'" cellpadding="0" cellspacing="0" class="'+k+" "+k+"Enabled"+(i["class"]?(" "+i["class"]):"")+'"><tbody><tr>';j+="<td>"+d.createHTML("span",{id:g.id+"_voiceDesc","class":"voiceLabel",style:"display:none;"},g.settings.title);j+=d.createHTML("a",{id:g.id+"_text",tabindex:-1,href:"javascript:;","class":"mceText",onclick:"return false;",onmousedown:"return false;"},d.encode(g.settings.title))+"</td>";j+="<td>"+d.createHTML("a",{id:g.id+"_open",tabindex:-1,href:"javascript:;","class":"mceOpen",onclick:"return false;",onmousedown:"return false;"},'<span><span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span></span>')+"</td>";j+="</tr></tbody></table></span>";return j},showMenu:function(){var h=this,j,i=d.get(this.id),g;if(h.isDisabled()||h.items.length===0){return}if(h.menu&&h.menu.isMenuVisible){return h.hideMenu()}if(!h.isMenuRendered){h.renderMenu();h.isMenuRendered=true}j=d.getPos(i);g=h.menu;g.settings.offset_x=j.x;g.settings.offset_y=j.y;g.settings.keyboard_focus=!e.isOpera;f(h.items,function(k){if(g.items[k.id]){g.items[k.id].setSelected(0)}});f(h.items,function(k){if(g.items[k.id]&&h.marked[k.value]){g.items[k.id].setSelected(1)}if(k.value===h.selectedValue){g.items[k.id].setSelected(1)}});g.showMenu(0,i.clientHeight);b.add(d.doc,"mousedown",h.hideMenu,h);d.addClass(h.id,h.classPrefix+"Selected")},hideMenu:function(h){var g=this;if(g.menu&&g.menu.isMenuVisible){d.removeClass(g.id,g.classPrefix+"Selected");if(h&&h.type=="mousedown"&&(h.target.id==g.id+"_text"||h.target.id==g.id+"_open")){return}if(!h||!d.getParent(h.target,".mceMenu")){d.removeClass(g.id,g.classPrefix+"Selected");b.remove(d.doc,"mousedown",g.hideMenu,g);g.menu.hideMenu()}}},renderMenu:function(){var h=this,g;g=h.settings.control_manager.createDropMenu(h.id+"_menu",{menu_line:1,"class":h.classPrefix+"Menu mceNoIcons",max_width:250,max_height:150});g.onHideMenu.add(function(){h.hideMenu();h.focus()});g.add({title:h.settings.title,"class":"mceMenuItemTitle",onclick:function(){if(h.settings.onselect("")!==false){h.select("")}}});f(h.items,function(i){if(i.value===c){g.add({title:i.title,role:"option","class":"mceMenuItemTitle",onclick:function(){if(h.settings.onselect("")!==false){h.select("")}}})}else{i.id=d.uniqueId();i.role="option";i.onclick=function(){if(h.settings.onselect(i.value)!==false){h.select(i.value)}};g.add(i)}});h.onRenderMenu.dispatch(h,g);h.menu=g},postRender:function(){var g=this,h=g.classPrefix;b.add(g.id,"click",g.showMenu,g);b.add(g.id,"keydown",function(i){if(i.keyCode==32){g.showMenu(i);b.cancel(i)}});b.add(g.id,"focus",function(){if(!g._focused){g.keyDownHandler=b.add(g.id,"keydown",function(i){if(i.keyCode==40){g.showMenu();b.cancel(i)}});g.keyPressHandler=b.add(g.id,"keypress",function(j){var i;if(j.keyCode==13){i=g.selectedValue;g.selectedValue=null;b.cancel(j);g.settings.onselect(i)}})}g._focused=1});b.add(g.id,"blur",function(){b.remove(g.id,"keydown",g.keyDownHandler);b.remove(g.id,"keypress",g.keyPressHandler);g._focused=0});if(e.isIE6||!d.boxModel){b.add(g.id,"mouseover",function(){if(!d.hasClass(g.id,h+"Disabled")){d.addClass(g.id,h+"Hover")}});b.add(g.id,"mouseout",function(){if(!d.hasClass(g.id,h+"Disabled")){d.removeClass(g.id,h+"Hover")}})}g.onPostRender.dispatch(g,d.get(g.id))},destroy:function(){this.parent();b.clear(this.id+"_text");b.clear(this.id+"_open")}})})(tinymce);(function(e){var d=e.DOM,b=e.dom.Event,f=e.each,a=e.util.Dispatcher,c;e.create("tinymce.ui.NativeListBox:tinymce.ui.ListBox",{NativeListBox:function(h,g){this.parent(h,g);this.classPrefix="mceNativeListBox"},setDisabled:function(g){d.get(this.id).disabled=g;this.setAriaProperty("disabled",g)},isDisabled:function(){return d.get(this.id).disabled},select:function(h){var g=this,j,i;if(h==c){return g.selectByIndex(-1)}if(h&&typeof(h)=="function"){i=h}else{i=function(k){return k==h}}if(h!=g.selectedValue){f(g.items,function(l,k){if(i(l.value)){j=1;g.selectByIndex(k);return false}});if(!j){g.selectByIndex(-1)}}},selectByIndex:function(g){d.get(this.id).selectedIndex=g+1;this.selectedValue=this.items[g]?this.items[g].value:null},add:function(k,h,g){var j,i=this;g=g||{};g.value=h;if(i.isRendered()){d.add(d.get(this.id),"option",g,k)}j={title:k,value:h,attribs:g};i.items.push(j);i.onAdd.dispatch(i,j)},getLength:function(){return this.items.length},renderHTML:function(){var i,g=this;i=d.createHTML("option",{value:""},"-- "+g.settings.title+" --");f(g.items,function(h){i+=d.createHTML("option",{value:h.value},h.title)});i=d.createHTML("select",{id:g.id,"class":"mceNativeListBox","aria-labelledby":g.id+"_aria"},i);i+=d.createHTML("span",{id:g.id+"_aria",style:"display: none"},g.settings.title);return i},postRender:function(){var h=this,i,j=true;h.rendered=true;function g(l){var k=h.items[l.target.selectedIndex-1];if(k&&(k=k.value)){h.onChange.dispatch(h,k);if(h.settings.onselect){h.settings.onselect(k)}}}b.add(h.id,"change",g);b.add(h.id,"keydown",function(q){var n,p=37,m=39,l=38,r=40,k=13,o=32;b.remove(h.id,"change",i);j=false;n=b.add(h.id,"blur",function(){if(j){return}j=true;b.add(h.id,"change",g);b.remove(h.id,"blur",n)});if(q.keyCode==k||q.keyCode==o){g(q);return b.cancel(q)}else{if(q.keyCode==r||q.keyCode==l){q.stopImmediatePropagation()}}});h.onPostRender.dispatch(h,d.get(h.id))}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.MenuButton:tinymce.ui.Button",{MenuButton:function(g,f,e){this.parent(g,f,e);this.onRenderMenu=new c.util.Dispatcher(this);f.menu_container=f.menu_container||b.doc.body},showMenu:function(){var g=this,j,i,h=b.get(g.id),f;if(g.isDisabled()){return}if(!g.isMenuRendered){g.renderMenu();g.isMenuRendered=true}if(g.isMenuVisible){return g.hideMenu()}j=b.getPos(g.settings.menu_container);i=b.getPos(h);f=g.menu;f.settings.offset_x=i.x;f.settings.offset_y=i.y;f.settings.vp_offset_x=i.x;f.settings.vp_offset_y=i.y;f.settings.keyboard_focus=g._focused;f.showMenu(0,h.firstChild.clientHeight);a.add(b.doc,"mousedown",g.hideMenu,g);g.setState("Selected",1);g.isMenuVisible=1},renderMenu:function(){var f=this,e;e=f.settings.control_manager.createDropMenu(f.id+"_menu",{menu_line:1,"class":this.classPrefix+"Menu",icons:f.settings.icons});e.onHideMenu.add(function(){f.hideMenu();f.focus()});f.onRenderMenu.dispatch(f,e);f.menu=e},hideMenu:function(g){var f=this;if(g&&g.type=="mousedown"&&b.getParent(g.target,function(h){return h.id===f.id||h.id===f.id+"_open"})){return}if(!g||!b.getParent(g.target,".mceMenu")){f.setState("Selected",0);a.remove(b.doc,"mousedown",f.hideMenu,f);if(f.menu){f.menu.hideMenu()}}f.isMenuVisible=0},postRender:function(){var e=this,f=e.settings;a.add(e.id,"click",function(){if(!e.isDisabled()){if(f.onclick){f.onclick(e.value)}e.showMenu()}})}})})(tinymce);(function(c){var b=c.DOM,a=c.dom.Event,d=c.each;c.create("tinymce.ui.SplitButton:tinymce.ui.MenuButton",{SplitButton:function(g,f,e){this.parent(g,f,e);this.classPrefix="mceSplitButton"},renderHTML:function(){var i,f=this,g=f.settings,e;i="<tbody><tr>";if(g.image){e=b.createHTML("img ",{src:g.image,role:"presentation","class":"mceAction "+g["class"]})}else{e=b.createHTML("span",{"class":"mceAction "+g["class"]},"")}e+=b.createHTML("span",{"class":"mceVoiceLabel mceIconOnly",id:f.id+"_voice",style:"display:none;"},g.title);i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_action",tabindex:"-1",href:"javascript:;","class":"mceAction "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";e=b.createHTML("span",{"class":"mceOpen "+g["class"]},'<span style="display:none;" class="mceIconOnly" aria-hidden="true">\u25BC</span>');i+="<td >"+b.createHTML("a",{role:"button",id:f.id+"_open",tabindex:"-1",href:"javascript:;","class":"mceOpen "+g["class"],onclick:"return false;",onmousedown:"return false;",title:g.title},e)+"</td>";i+="</tr></tbody>";i=b.createHTML("table",{role:"presentation","class":"mceSplitButton mceSplitButtonEnabled "+g["class"],cellpadding:"0",cellspacing:"0",title:g.title},i);return b.createHTML("div",{id:f.id,role:"button",tabindex:"0","aria-labelledby":f.id+"_voice","aria-haspopup":"true"},i)},postRender:function(){var e=this,g=e.settings,f;if(g.onclick){f=function(h){if(!e.isDisabled()){g.onclick(e.value);a.cancel(h)}};a.add(e.id+"_action","click",f);a.add(e.id,["click","keydown"],function(h){var k=32,m=14,i=13,j=38,l=40;if((h.keyCode===32||h.keyCode===13||h.keyCode===14)&&!h.altKey&&!h.ctrlKey&&!h.metaKey){f();a.cancel(h)}else{if(h.type==="click"||h.keyCode===l){e.showMenu();a.cancel(h)}}})}a.add(e.id+"_open","click",function(h){e.showMenu();a.cancel(h)});a.add([e.id,e.id+"_open"],"focus",function(){e._focused=1});a.add([e.id,e.id+"_open"],"blur",function(){e._focused=0});if(c.isIE6||!b.boxModel){a.add(e.id,"mouseover",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.addClass(e.id,"mceSplitButtonHover")}});a.add(e.id,"mouseout",function(){if(!b.hasClass(e.id,"mceSplitButtonDisabled")){b.removeClass(e.id,"mceSplitButtonHover")}})}},destroy:function(){this.parent();a.clear(this.id+"_action");a.clear(this.id+"_open");a.clear(this.id)}})})(tinymce);(function(d){var c=d.DOM,a=d.dom.Event,b=d.is,e=d.each;d.create("tinymce.ui.ColorSplitButton:tinymce.ui.SplitButton",{ColorSplitButton:function(i,h,f){var g=this;g.parent(i,h,f);g.settings=h=d.extend({colors:"000000,993300,333300,003300,003366,000080,333399,333333,800000,FF6600,808000,008000,008080,0000FF,666699,808080,FF0000,FF9900,99CC00,339966,33CCCC,3366FF,800080,999999,FF00FF,FFCC00,FFFF00,00FF00,00FFFF,00CCFF,993366,C0C0C0,FF99CC,FFCC99,FFFF99,CCFFCC,CCFFFF,99CCFF,CC99FF,FFFFFF",grid_width:8,default_color:"#888888"},g.settings);g.onShowMenu=new d.util.Dispatcher(g);g.onHideMenu=new d.util.Dispatcher(g);g.value=h.default_color},showMenu:function(){var f=this,g,j,i,h;if(f.isDisabled()){return}if(!f.isMenuRendered){f.renderMenu();f.isMenuRendered=true}if(f.isMenuVisible){return f.hideMenu()}i=c.get(f.id);c.show(f.id+"_menu");c.addClass(i,"mceSplitButtonSelected");h=c.getPos(i);c.setStyles(f.id+"_menu",{left:h.x,top:h.y+i.firstChild.clientHeight,zIndex:200000});i=0;a.add(c.doc,"mousedown",f.hideMenu,f);f.onShowMenu.dispatch(f);if(f._focused){f._keyHandler=a.add(f.id+"_menu","keydown",function(k){if(k.keyCode==27){f.hideMenu()}});c.select("a",f.id+"_menu")[0].focus()}f.keyboardNav=new d.ui.KeyboardNavigation({root:f.id+"_menu",items:c.select("a",f.id+"_menu"),onCancel:function(){f.hideMenu();f.focus()}});f.keyboardNav.focus();f.isMenuVisible=1},hideMenu:function(g){var f=this;if(f.isMenuVisible){if(g&&g.type=="mousedown"&&c.getParent(g.target,function(h){return h.id===f.id+"_open"})){return}if(!g||!c.getParent(g.target,".mceSplitButtonMenu")){c.removeClass(f.id,"mceSplitButtonSelected");a.remove(c.doc,"mousedown",f.hideMenu,f);a.remove(f.id+"_menu","keydown",f._keyHandler);c.hide(f.id+"_menu")}f.isMenuVisible=0;f.onHideMenu.dispatch();f.keyboardNav.destroy()}},renderMenu:function(){var p=this,h,k=0,q=p.settings,g,j,l,o,f;o=c.add(q.menu_container,"div",{role:"listbox",id:p.id+"_menu","class":q.menu_class+" "+q["class"],style:"position:absolute;left:0;top:-1000px;"});h=c.add(o,"div",{"class":q["class"]+" mceSplitButtonMenu"});c.add(h,"span",{"class":"mceMenuLine"});g=c.add(h,"table",{role:"presentation","class":"mceColorSplitMenu"});j=c.add(g,"tbody");k=0;e(b(q.colors,"array")?q.colors:q.colors.split(","),function(m){m=m.replace(/^#/,"");if(!k--){l=c.add(j,"tr");k=q.grid_width-1}g=c.add(l,"td");var i={href:"javascript:;",style:{backgroundColor:"#"+m},title:p.editor.getLang("colors."+m,m),"data-mce-color":"#"+m};if(!d.isIE){i.role="option"}g=c.add(g,"a",i);if(p.editor.forcedHighContrastMode){g=c.add(g,"canvas",{width:16,height:16,"aria-hidden":"true"});if(g.getContext&&(f=g.getContext("2d"))){f.fillStyle="#"+m;f.fillRect(0,0,16,16)}else{c.remove(g)}}});if(q.more_colors_func){g=c.add(j,"tr");g=c.add(g,"td",{colspan:q.grid_width,"class":"mceMoreColors"});g=c.add(g,"a",{role:"option",id:p.id+"_more",href:"javascript:;",onclick:"return false;","class":"mceMoreColors"},q.more_colors_title);a.add(g,"click",function(i){q.more_colors_func.call(q.more_colors_scope||this);return a.cancel(i)})}c.addClass(h,"mceColorSplitMenu");a.add(p.id+"_menu","mousedown",function(i){return a.cancel(i)});a.add(p.id+"_menu","click",function(i){var m;i=c.getParent(i.target,"a",j);if(i&&i.nodeName.toLowerCase()=="a"&&(m=i.getAttribute("data-mce-color"))){p.setColor(m)}return false});return o},setColor:function(f){this.displayColor(f);this.hideMenu();this.settings.onselect(f)},displayColor:function(g){var f=this;c.setStyle(f.id+"_preview","backgroundColor",g);f.value=g},postRender:function(){var f=this,g=f.id;f.parent();c.add(g+"_action","div",{id:g+"_preview","class":"mceColorPreview"});c.setStyle(f.id+"_preview","backgroundColor",f.value)},destroy:function(){var f=this;f.parent();a.clear(f.id+"_menu");a.clear(f.id+"_more");c.remove(f.id+"_menu");if(f.keyboardNav){f.keyboardNav.destroy()}}})})(tinymce);(function(b){var d=b.DOM,c=b.each,a=b.dom.Event;b.create("tinymce.ui.ToolbarGroup:tinymce.ui.Container",{renderHTML:function(){var f=this,i=[],e=f.controls,j=b.each,g=f.settings;i.push('<div id="'+f.id+'" role="group" aria-labelledby="'+f.id+'_voice">');i.push("<span role='application'>");i.push('<span id="'+f.id+'_voice" class="mceVoiceLabel" style="display:none;">'+d.encode(g.name)+"</span>");j(e,function(h){i.push(h.renderHTML())});i.push("</span>");i.push("</div>");return i.join("")},focus:function(){var e=this;d.get(e.id).focus()},postRender:function(){var f=this,e=[];c(f.controls,function(g){c(g.controls,function(h){if(h.id){e.push(h)}})});f.keyNav=new b.ui.KeyboardNavigation({root:f.id,items:e,onCancel:function(){if(b.isWebKit){d.get(f.editor.id+"_ifr").focus()}f.editor.focus()},excludeFromTabOrder:!f.settings.tab_focus_toolbar})},destroy:function(){var e=this;e.parent();e.keyNav.destroy();a.clear(e.id)}})})(tinymce);(function(a){var c=a.DOM,b=a.each;a.create("tinymce.ui.Toolbar:tinymce.ui.Container",{renderHTML:function(){var m=this,f="",j,k,n=m.settings,e,d,g,l;l=m.controls;for(e=0;e<l.length;e++){k=l[e];d=l[e-1];g=l[e+1];if(e===0){j="mceToolbarStart";if(k.Button){j+=" mceToolbarStartButton"}else{if(k.SplitButton){j+=" mceToolbarStartSplitButton"}else{if(k.ListBox){j+=" mceToolbarStartListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"))}if(d&&k.ListBox){if(d.Button||d.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarEnd"},c.createHTML("span",null,"<!-- IE -->"))}}if(c.stdMode){f+='<td style="position: relative">'+k.renderHTML()+"</td>"}else{f+="<td>"+k.renderHTML()+"</td>"}if(g&&k.ListBox){if(g.Button||g.SplitButton){f+=c.createHTML("td",{"class":"mceToolbarStart"},c.createHTML("span",null,"<!-- IE -->"))}}}j="mceToolbarEnd";if(k.Button){j+=" mceToolbarEndButton"}else{if(k.SplitButton){j+=" mceToolbarEndSplitButton"}else{if(k.ListBox){j+=" mceToolbarEndListBox"}}}f+=c.createHTML("td",{"class":j},c.createHTML("span",null,"<!-- IE -->"));return c.createHTML("table",{id:m.id,"class":"mceToolbar"+(n["class"]?" "+n["class"]:""),cellpadding:"0",cellspacing:"0",align:m.settings.align||"",role:"presentation",tabindex:"-1"},"<tbody><tr>"+f+"</tr></tbody>")}})})(tinymce);(function(b){var a=b.util.Dispatcher,c=b.each;b.create("tinymce.AddOnManager",{AddOnManager:function(){var d=this;d.items=[];d.urls={};d.lookup={};d.onAdd=new a(d)},get:function(d){if(this.lookup[d]){return this.lookup[d].instance}else{return undefined}},dependencies:function(e){var d;if(this.lookup[e]){d=this.lookup[e].dependencies}return d||[]},requireLangPack:function(e){var d=b.settings;if(d&&d.language&&d.language_load!==false){b.ScriptLoader.add(this.urls[e]+"/langs/"+d.language+".js")}},add:function(f,e,d){this.items.push(e);this.lookup[f]={instance:e,dependencies:d};this.onAdd.dispatch(this,f,e);return e},createUrl:function(d,e){if(typeof e==="object"){return e}else{return{prefix:d.prefix,resource:e,suffix:d.suffix}}},addComponents:function(f,d){var e=this.urls[f];b.each(d,function(g){b.ScriptLoader.add(e+"/"+g)})},load:function(j,f,d,h){var g=this,e=f;function i(){var k=g.dependencies(j);b.each(k,function(m){var l=g.createUrl(f,m);g.load(l.resource,l,undefined,undefined)});if(d){if(h){d.call(h)}else{d.call(b.ScriptLoader)}}}if(g.urls[j]){return}if(typeof f==="object"){e=f.prefix+f.resource+f.suffix}if(e.indexOf("/")!==0&&e.indexOf("://")==-1){e=b.baseURL+"/"+e}g.urls[j]=e.substring(0,e.lastIndexOf("/"));if(g.lookup[j]){i()}else{b.ScriptLoader.add(e,i,h)}}});b.PluginManager=new b.AddOnManager();b.ThemeManager=new b.AddOnManager()}(tinymce));(function(j){var g=j.each,d=j.extend,k=j.DOM,i=j.dom.Event,f=j.ThemeManager,b=j.PluginManager,e=j.explode,h=j.util.Dispatcher,a,c=0;j.documentBaseURL=window.location.href.replace(/[\?#].*$/,"").replace(/[\/\\][^\/]+$/,"");if(!/[\/\\]$/.test(j.documentBaseURL)){j.documentBaseURL+="/"}j.baseURL=new j.util.URI(j.documentBaseURL).toAbsolute(j.baseURL);j.baseURI=new j.util.URI(j.baseURL);j.onBeforeUnload=new h(j);i.add(window,"beforeunload",function(l){j.onBeforeUnload.dispatch(j,l)});j.onAddEditor=new h(j);j.onRemoveEditor=new h(j);j.EditorManager=d(j,{editors:[],i18n:{},activeEditor:null,init:function(x){var v=this,o,n=j.ScriptLoader,u,l=[],r;function q(t){var s=t.id;if(!s){s=t.name;if(s&&!k.get(s)){s=t.name}else{s=k.uniqueId()}t.setAttribute("id",s)}return s}function m(z,A,t){var y=z[A];if(!y){return}if(j.is(y,"string")){t=y.replace(/\.\w+$/,"");t=t?j.resolve(t):0;y=j.resolve(y)}return y.apply(t||this,Array.prototype.slice.call(arguments,2))}function p(t,s){return s.constructor===RegExp?s.test(t.className):k.hasClass(t,s)}v.settings=x;i.bind(window,"ready",function(){var s,t;m(x,"onpageload");switch(x.mode){case"exact":s=x.elements||"";if(s.length>0){g(e(s),function(y){if(k.get(y)){r=new j.Editor(y,x);l.push(r);r.render(1)}else{g(document.forms,function(z){g(z.elements,function(A){if(A.name===y){y="mce_editor_"+c++;k.setAttrib(A,"id",y);r=new j.Editor(y,x);l.push(r);r.render(1)}})})}})}break;case"textareas":case"specific_textareas":g(k.select("textarea"),function(y){if(x.editor_deselector&&p(y,x.editor_deselector)){return}if(!x.editor_selector||p(y,x.editor_selector)){r=new j.Editor(q(y),x);l.push(r);r.render(1)}});break;default:if(x.types){g(x.types,function(y){g(k.select(y.selector),function(A){var z=new j.Editor(q(A),j.extend({},x,y));l.push(z);z.render(1)})})}else{if(x.selector){g(k.select(x.selector),function(z){var y=new j.Editor(q(z),x);l.push(y);y.render(1)})}}}if(x.oninit){s=t=0;g(l,function(y){t++;if(!y.initialized){y.onInit.add(function(){s++;if(s==t){m(x,"oninit")}})}else{s++}if(s==t){m(x,"oninit")}})}})},get:function(l){if(l===a){return this.editors}if(!this.editors.hasOwnProperty(l)){return a}return this.editors[l]},getInstanceById:function(l){return this.get(l)},add:function(m){var l=this,n=l.editors;n[m.id]=m;n.push(m);l._setActive(m);l.onAddEditor.dispatch(l,m);return m},remove:function(n){var m=this,l,o=m.editors;if(!o[n.id]){return null}delete o[n.id];for(l=0;l<o.length;l++){if(o[l]==n){o.splice(l,1);break}}if(m.activeEditor==n){m._setActive(o[0])}n.destroy();m.onRemoveEditor.dispatch(m,n);return n},execCommand:function(r,p,o){var q=this,n=q.get(o),l;function m(){n.destroy();l.detachEvent("onunload",m);l=l.tinyMCE=l.tinymce=null}switch(r){case"mceFocus":n.focus();return true;case"mceAddEditor":case"mceAddControl":if(!q.get(o)){new j.Editor(o,q.settings).render()}return true;case"mceAddFrameControl":l=o.window;l.tinyMCE=tinyMCE;l.tinymce=j;j.DOM.doc=l.document;j.DOM.win=l;n=new j.Editor(o.element_id,o);n.render();if(j.isIE&&!j.isIE11){l.attachEvent("onunload",m)}o.page_window=null;return true;case"mceRemoveEditor":case"mceRemoveControl":if(n){n.remove()}return true;case"mceToggleEditor":if(!n){q.execCommand("mceAddControl",0,o);return true}if(n.isHidden()){n.show()}else{n.hide()}return true}if(q.activeEditor){return q.activeEditor.execCommand(r,p,o)}return false},execInstanceCommand:function(p,o,n,m){var l=this.get(p);if(l){return l.execCommand(o,n,m)}return false},triggerSave:function(){g(this.editors,function(l){l.save()})},addI18n:function(n,q){var l,m=this.i18n;if(!j.is(n,"string")){g(n,function(r,p){g(r,function(t,s){g(t,function(v,u){if(s==="common"){m[p+"."+u]=v}else{m[p+"."+s+"."+u]=v}})})})}else{g(q,function(r,p){m[n+"."+p]=r})}},_setActive:function(l){this.selectedInstance=this.activeEditor=l}})})(tinymce);(function(k){var l=k.DOM,j=k.dom.Event,f=k.extend,i=k.each,a=k.isGecko,b=k.isIE,e=k.isWebKit,d=k.is,h=k.ThemeManager,c=k.PluginManager,g=k.explode;k.create("tinymce.Editor",{Editor:function(p,o){var m=this,n=true;m.settings=o=f({id:p,language:"en",theme:"advanced",skin:"default",delta_width:0,delta_height:0,popup_css:"",plugins:"",document_base_url:k.documentBaseURL,add_form_submit_trigger:n,submit_patch:n,add_unload_trigger:n,convert_urls:n,relative_urls:n,remove_script_host:n,table_inline_editing:false,object_resizing:n,accessibility_focus:n,doctype:k.isIE6?'<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN">':"<!DOCTYPE>",visual:n,font_size_style_values:"xx-small,x-small,small,medium,large,x-large,xx-large",font_size_legacy_values:"xx-small,small,medium,large,x-large,xx-large,300%",apply_source_formatting:n,directionality:"ltr",forced_root_block:"p",hidden_input:n,padd_empty_editor:n,render_ui:n,indentation:"30px",fix_table_elements:n,inline_styles:n,convert_fonts_to_spans:n,indent:"simple",indent_before:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",indent_after:"p,h1,h2,h3,h4,h5,h6,blockquote,div,title,style,pre,script,td,ul,li,area,table,thead,tfoot,tbody,tr,section,article,hgroup,aside,figure,option,optgroup,datalist",validate:n,entity_encoding:"named",url_converter:m.convertURL,url_converter_scope:m,ie7_compat:n},o);m.id=m.editorId=p;m.isNotDirty=false;m.plugins={};m.documentBaseURI=new k.util.URI(o.document_base_url||k.documentBaseURL,{base_uri:tinyMCE.baseURI});m.baseURI=k.baseURI;m.contentCSS=[];m.contentStyles=[];m.setupEvents();m.execCommands={};m.queryStateCommands={};m.queryValueCommands={};m.execCallback("setup",m)},render:function(o){var p=this,q=p.settings,r=p.id,m=k.ScriptLoader;if(!j.domLoaded){j.add(window,"ready",function(){p.render()});return}tinyMCE.settings=q;if(!p.getElement()){return}if(k.isIDevice&&!k.isIOS5){return}if(!/TEXTAREA|INPUT/i.test(p.getElement().nodeName)&&q.hidden_input&&l.getParent(r,"form")){l.insertAfter(l.create("input",{type:"hidden",name:r}),r)}if(!q.content_editable){p.orgVisibility=p.getElement().style.visibility;p.getElement().style.visibility="hidden"}if(k.WindowManager){p.windowManager=new k.WindowManager(p)}if(q.encoding=="xml"){p.onGetContent.add(function(s,t){if(t.save){t.content=l.encode(t.content)}})}if(q.add_form_submit_trigger){p.onSubmit.addToTop(function(){if(p.initialized){p.save();p.isNotDirty=1}})}if(q.add_unload_trigger){p._beforeUnload=tinyMCE.onBeforeUnload.add(function(){if(p.initialized&&!p.destroyed&&!p.isHidden()){p.save({format:"raw",no_events:true})}})}k.addUnload(p.destroy,p);if(q.submit_patch){p.onBeforeRenderUI.add(function(){var s=p.getElement().form;if(!s){return}if(s._mceOldSubmit){return}if(!s.submit.nodeType&&!s.submit.length){p.formElement=s;s._mceOldSubmit=s.submit;s.submit=function(){k.triggerSave();p.isNotDirty=1;return p.formElement._mceOldSubmit(p.formElement)}}s=null})}function n(){if(q.language&&q.language_load!==false){m.add(k.baseURL+"/langs/"+q.language+".js")}if(q.theme&&typeof q.theme!="function"&&q.theme.charAt(0)!="-"&&!h.urls[q.theme]){h.load(q.theme,"themes/"+q.theme+"/editor_template"+k.suffix+".js")}i(g(q.plugins),function(t){if(t&&!c.urls[t]){if(t.charAt(0)=="-"){t=t.substr(1,t.length);var s=c.dependencies(t);i(s,function(v){var u={prefix:"plugins/",resource:v,suffix:"/editor_plugin"+k.suffix+".js"};v=c.createUrl(u,v);c.load(v.resource,v)})}else{if(t=="safari"){return}c.load(t,{prefix:"plugins/",resource:t,suffix:"/editor_plugin"+k.suffix+".js"})}}});m.loadQueue(function(){if(!p.removed){p.init()}})}n()},init:function(){var q,G=this,H=G.settings,D,y,z,C=G.getElement(),p,m,E,v,B,F,x,r=[];k.add(G);H.aria_label=H.aria_label||l.getAttrib(C,"aria-label",G.getLang("aria.rich_text_area"));if(H.theme){if(typeof H.theme!="function"){H.theme=H.theme.replace(/-/,"");p=h.get(H.theme);G.theme=new p();if(G.theme.init){G.theme.init(G,h.urls[H.theme]||k.documentBaseURL.replace(/\/$/,""))}}else{G.theme=H.theme}}function A(s){var t=c.get(s),o=c.urls[s]||k.documentBaseURL.replace(/\/$/,""),n;if(t&&k.inArray(r,s)===-1){i(c.dependencies(s),function(u){A(u)});n=new t(G,o);G.plugins[s]=n;if(n.init){n.init(G,o);r.push(s)}}}i(g(H.plugins.replace(/\-/g,"")),A);if(H.popup_css!==false){if(H.popup_css){H.popup_css=G.documentBaseURI.toAbsolute(H.popup_css)}else{H.popup_css=G.baseURI.toAbsolute("themes/"+H.theme+"/skins/"+H.skin+"/dialog.css")}}if(H.popup_css_add){H.popup_css+=","+G.documentBaseURI.toAbsolute(H.popup_css_add)}G.controlManager=new k.ControlManager(G);G.onBeforeRenderUI.dispatch(G,G.controlManager);if(H.render_ui&&G.theme){G.orgDisplay=C.style.display;if(typeof H.theme!="function"){D=H.width||C.style.width||C.offsetWidth;y=H.height||C.style.height||C.offsetHeight;z=H.min_height||100;F=/^[0-9\.]+(|px)$/i;if(F.test(""+D)){D=Math.max(parseInt(D,10)+(p.deltaWidth||0),100)}if(F.test(""+y)){y=Math.max(parseInt(y,10)+(p.deltaHeight||0),z)}p=G.theme.renderUI({targetNode:C,width:D,height:y,deltaWidth:H.delta_width,deltaHeight:H.delta_height});l.setStyles(p.sizeContainer||p.editorContainer,{width:D,height:y});y=(p.iframeHeight||y)+(typeof(y)=="number"?(p.deltaHeight||0):"");if(y<z){y=z}}else{p=H.theme(G,C);if(p.editorContainer.nodeType){p.editorContainer=p.editorContainer.id=p.editorContainer.id||G.id+"_parent"}if(p.iframeContainer.nodeType){p.iframeContainer=p.iframeContainer.id=p.iframeContainer.id||G.id+"_iframecontainer"}y=p.iframeHeight||C.offsetHeight;if(b){G.onInit.add(function(n){n.dom.bind(n.getBody(),"beforedeactivate keydown keyup",function(){n.bookmark=n.selection.getBookmark(1)})});G.onNodeChange.add(function(n){if(document.activeElement.id==n.id+"_ifr"){n.bookmark=n.selection.getBookmark(1)}})}}G.editorContainer=p.editorContainer}if(H.content_css){i(g(H.content_css),function(n){G.contentCSS.push(G.documentBaseURI.toAbsolute(n))})}if(H.content_style){G.contentStyles.push(H.content_style)}if(H.content_editable){C=q=p=null;return G.initContentBody()}if(document.domain&&location.hostname!=document.domain){k.relaxedDomain=document.domain}G.iframeHTML=H.doctype+'<html><head xmlns="http://www.w3.org/1999/xhtml">';if(H.document_base_url!=k.documentBaseURL){G.iframeHTML+='<base href="'+G.documentBaseURI.getURI()+'" />'}if(k.isIE8){if(H.ie7_compat){G.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=7" />'}else{G.iframeHTML+='<meta http-equiv="X-UA-Compatible" content="IE=edge" />'}}G.iframeHTML+='<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';for(x=0;x<G.contentCSS.length;x++){G.iframeHTML+='<link type="text/css" rel="stylesheet" href="'+G.contentCSS[x]+'" />'}G.contentCSS=[];v=H.body_id||"tinymce";if(v.indexOf("=")!=-1){v=G.getParam("body_id","","hash");v=v[G.id]||v}B=H.body_class||"";if(B.indexOf("=")!=-1){B=G.getParam("body_class","","hash");B=B[G.id]||""}G.iframeHTML+='</head><body id="'+v+'" class="mceContentBody '+B+'" onload="window.parent.tinyMCE.get(\''+G.id+"').onLoad.dispatch();\"><br></body></html>";if(k.relaxedDomain&&(b||(k.isOpera&&parseFloat(opera.version())<11))){E='javascript:(function(){document.open();document.domain="'+document.domain+'";var ed = window.parent.tinyMCE.get("'+G.id+'");document.write(ed.iframeHTML);document.close();ed.initContentBody();})()'}q=l.add(p.iframeContainer,"iframe",{id:G.id+"_ifr",src:E||'javascript:""',frameBorder:"0",allowTransparency:"true",title:H.aria_label,style:{width:"100%",height:y,display:"block"}});G.contentAreaContainer=p.iframeContainer;if(p.editorContainer){l.get(p.editorContainer).style.display=G.orgDisplay}C.style.visibility=G.orgVisibility;l.get(G.id).style.display="none";l.setAttrib(G.id,"aria-hidden",true);if(!k.relaxedDomain||!E){G.initContentBody()}C=q=p=null},initContentBody:function(){var n=this,p=n.settings,q=l.get(n.id),r=n.getDoc(),o,m,s;if((!b||!k.relaxedDomain)&&!p.content_editable){r.open();r.write(n.iframeHTML);r.close();if(k.relaxedDomain){r.domain=k.relaxedDomain}}if(p.content_editable){l.addClass(q,"mceContentBody");n.contentDocument=r=p.content_document||document;n.contentWindow=p.content_window||window;n.bodyElement=q;p.content_document=p.content_window=null}m=n.getBody();m.disabled=true;if(!p.readonly){m.contentEditable=n.getParam("content_editable_state",true)}m.disabled=false;n.schema=new k.html.Schema(p);n.dom=new k.dom.DOMUtils(r,{keep_values:true,url_converter:n.convertURL,url_converter_scope:n,hex_colors:p.force_hex_style_colors,class_filter:p.class_filter,update_styles:true,root_element:p.content_editable?n.id:null,schema:n.schema});n.parser=new k.html.DomParser(p,n.schema);n.parser.addAttributeFilter("src,href,style",function(t,u){var v=t.length,y,A=n.dom,z,x;while(v--){y=t[v];z=y.attr(u);x="data-mce-"+u;if(!y.attributes.map[x]){if(u==="style"){y.attr(x,A.serializeStyle(A.parseStyle(z),y.name))}else{y.attr(x,n.convertURL(z,u,y.name))}}}});n.parser.addNodeFilter("script",function(t,u){var v=t.length,x;while(v--){x=t[v];x.attr("type","mce-"+(x.attr("type")||"text/javascript"))}});n.parser.addNodeFilter("#cdata",function(t,u){var v=t.length,x;while(v--){x=t[v];x.type=8;x.name="#comment";x.value="[CDATA["+x.value+"]]"}});n.parser.addNodeFilter("p,h1,h2,h3,h4,h5,h6,div",function(u,v){var x=u.length,y,t=n.schema.getNonEmptyElements();while(x--){y=u[x];if(y.isEmpty(t)){y.empty().append(new k.html.Node("br",1)).shortEnded=true}}});n.serializer=new k.dom.Serializer(p,n.dom,n.schema);n.selection=new k.dom.Selection(n.dom,n.getWin(),n.serializer,n);n.formatter=new k.Formatter(n);n.undoManager=new k.UndoManager(n);n.forceBlocks=new k.ForceBlocks(n);n.enterKey=new k.EnterKey(n);n.editorCommands=new k.EditorCommands(n);n.onExecCommand.add(function(t,u){if(!/^(FontName|FontSize)$/.test(u)){n.nodeChanged()}});n.serializer.onPreProcess.add(function(t,u){return n.onPreProcess.dispatch(n,u,t)});n.serializer.onPostProcess.add(function(t,u){return n.onPostProcess.dispatch(n,u,t)});n.onPreInit.dispatch(n);if(!p.browser_spellcheck&&!p.gecko_spellcheck){r.body.spellcheck=false}if(!p.readonly){n.bindNativeEvents()}n.controlManager.onPostRender.dispatch(n,n.controlManager);n.onPostRender.dispatch(n);n.quirks=k.util.Quirks(n);if(p.directionality){m.dir=p.directionality}if(p.nowrap){m.style.whiteSpace="nowrap"}if(p.protect){n.onBeforeSetContent.add(function(t,u){i(p.protect,function(v){u.content=u.content.replace(v,function(x){return"<!--mce:protected "+escape(x)+"-->"})})})}n.onSetContent.add(function(){n.addVisual(n.getBody())});if(p.padd_empty_editor){n.onPostProcess.add(function(t,u){u.content=u.content.replace(/^(<p[^>]*>(&nbsp;|&#160;|\s|\u00a0|)<\/p>[\r\n]*|<br \/>[\r\n]*)$/,"")})}n.load({initial:true,format:"html"});n.startContent=n.getContent({format:"raw"});n.initialized=true;n.onInit.dispatch(n);n.execCallback("setupcontent_callback",n.id,m,r);n.execCallback("init_instance_callback",n);n.focus(true);n.nodeChanged({initial:true});if(n.contentStyles.length>0){s="";i(n.contentStyles,function(t){s+=t+"\r\n"});n.dom.addStyle(s)}i(n.contentCSS,function(t){n.dom.loadCSS(t)});if(p.auto_focus){setTimeout(function(){var t=k.get(p.auto_focus);t.selection.select(t.getBody(),1);t.selection.collapse(1);t.getBody().focus();t.getWin().focus()},100)}q=r=m=null},focus:function(p){var o,u=this,t=u.selection,q=u.settings.content_editable,n,r,s=u.getDoc(),m;if(!p){if(u.bookmark){t.moveToBookmark(u.bookmark);u.bookmark=null}n=t.getRng();if(n.item){r=n.item(0)}u._refreshContentEditable();if(!q){u.getWin().focus()}if(k.isGecko||q){m=u.getBody();if(m.setActive&&!k.isIE11){m.setActive()}else{m.focus()}if(q){t.normalize()}}if(r&&r.ownerDocument==s){n=s.body.createControlRange();n.addElement(r);n.select()}}if(k.activeEditor!=u){if((o=k.activeEditor)!=null){o.onDeactivate.dispatch(o,u)}u.onActivate.dispatch(u,o)}k._setActive(u)},execCallback:function(q){var m=this,p=m.settings[q],o;if(!p){return}if(m.callbackLookup&&(o=m.callbackLookup[q])){p=o.func;o=o.scope}if(d(p,"string")){o=p.replace(/\.\w+$/,"");o=o?k.resolve(o):0;p=k.resolve(p);m.callbackLookup=m.callbackLookup||{};m.callbackLookup[q]={func:p,scope:o}}return p.apply(o||m,Array.prototype.slice.call(arguments,1))},translate:function(m){var o=this.settings.language||"en",n=k.i18n;if(!m){return""}return n[o+"."+m]||m.replace(/\{\#([^\}]+)\}/g,function(q,p){return n[o+"."+p]||"{#"+p+"}"})},getLang:function(o,m){return k.i18n[(this.settings.language||"en")+"."+o]||(d(m)?m:"{#"+o+"}")},getParam:function(t,q,m){var r=k.trim,p=d(this.settings[t])?this.settings[t]:q,s;if(m==="hash"){s={};if(d(p,"string")){i(p.indexOf("=")>0?p.split(/[;,](?![^=;,]*(?:[;,]|$))/):p.split(","),function(n){n=n.split("=");if(n.length>1){s[r(n[0])]=r(n[1])}else{s[r(n[0])]=r(n)}})}else{s=p}return s}return p},nodeChanged:function(q){var m=this,n=m.selection,p;if(m.initialized){q=q||{};p=n.getStart()||m.getBody();p=b&&p.ownerDocument!=m.getDoc()?m.getBody():p;q.parents=[];m.dom.getParent(p,function(o){if(o.nodeName=="BODY"){return true}q.parents.push(o)});m.onNodeChange.dispatch(m,q?q.controlManager||m.controlManager:m.controlManager,p,n.isCollapsed(),q)}},addButton:function(n,o){var m=this;m.buttons=m.buttons||{};m.buttons[n]=o},addCommand:function(m,o,n){this.execCommands[m]={func:o,scope:n||this}},addQueryStateHandler:function(m,o,n){this.queryStateCommands[m]={func:o,scope:n||this}},addQueryValueHandler:function(m,o,n){this.queryValueCommands[m]={func:o,scope:n||this}},addShortcut:function(o,q,m,p){var n=this,r;if(n.settings.custom_shortcuts===false){return false}n.shortcuts=n.shortcuts||{};if(d(m,"string")){r=m;m=function(){n.execCommand(r,false,null)}}if(d(m,"object")){r=m;m=function(){n.execCommand(r[0],r[1],r[2])}}i(g(o),function(s){var t={func:m,scope:p||this,desc:n.translate(q),alt:false,ctrl:false,shift:false};i(g(s,"+"),function(u){switch(u){case"alt":case"ctrl":case"shift":t[u]=true;break;default:t.charCode=u.charCodeAt(0);t.keyCode=u.toUpperCase().charCodeAt(0)}});n.shortcuts[(t.ctrl?"ctrl":"")+","+(t.alt?"alt":"")+","+(t.shift?"shift":"")+","+t.keyCode]=t});return true},execCommand:function(u,r,x,m){var p=this,q=0,v,n;if(!/^(mceAddUndoLevel|mceEndUndoLevel|mceBeginUndoLevel|mceRepaint|SelectAll)$/.test(u)&&(!m||!m.skip_focus)){p.focus()}m=f({},m);p.onBeforeExecCommand.dispatch(p,u,r,x,m);if(m.terminate){return false}if(p.execCallback("execcommand_callback",p.id,p.selection.getNode(),u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}if(v=p.execCommands[u]){n=v.func.call(v.scope,r,x);if(n!==true){p.onExecCommand.dispatch(p,u,r,x,m);return n}}i(p.plugins,function(o){if(o.execCommand&&o.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);q=1;return false}});if(q){return true}if(p.theme&&p.theme.execCommand&&p.theme.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}if(p.editorCommands.execCommand(u,r,x)){p.onExecCommand.dispatch(p,u,r,x,m);return true}p.getDoc().execCommand(u,r,x);p.onExecCommand.dispatch(p,u,r,x,m)},queryCommandState:function(q){var n=this,r,p;if(n._isHidden()){return}if(r=n.queryStateCommands[q]){p=r.func.call(r.scope);if(p!==true){return p}}r=n.editorCommands.queryCommandState(q);if(r!==-1){return r}try{return this.getDoc().queryCommandState(q)}catch(m){}},queryCommandValue:function(r){var n=this,q,p;if(n._isHidden()){return}if(q=n.queryValueCommands[r]){p=q.func.call(q.scope);if(p!==true){return p}}q=n.editorCommands.queryCommandValue(r);if(d(q)){return q}try{return this.getDoc().queryCommandValue(r)}catch(m){}},show:function(){var m=this;l.show(m.getContainer());l.hide(m.id);m.load()},hide:function(){var m=this,n=m.getDoc();if(b&&n){n.execCommand("SelectAll")}m.save();l.hide(m.getContainer());l.setStyle(m.id,"display",m.orgDisplay)},isHidden:function(){return !l.isHidden(this.id)},setProgressState:function(m,n,p){this.onSetProgressState.dispatch(this,m,n,p);return m},load:function(q){var m=this,p=m.getElement(),n;if(p){q=q||{};q.load=true;n=m.setContent(d(p.value)?p.value:p.innerHTML,q);q.element=p;if(!q.no_events){m.onLoadContent.dispatch(m,q)}q.element=p=null;return n}},save:function(r){var m=this,q=m.getElement(),n,p;if(!q||!m.initialized){return}r=r||{};r.save=true;r.element=q;n=r.content=m.getContent(r);if(!r.no_events){m.onSaveContent.dispatch(m,r)}n=r.content;if(!/TEXTAREA|INPUT/i.test(q.nodeName)){q.innerHTML=n;if(p=l.getParent(m.id,"form")){i(p.elements,function(o){if(o.name==m.id){o.value=n;return false}})}}else{q.value=n}r.element=q=null;return n},setContent:function(r,p){var o=this,n,m=o.getBody(),q;p=p||{};p.format=p.format||"html";p.set=true;p.content=r;if(!p.no_events){o.onBeforeSetContent.dispatch(o,p)}r=p.content;if(!k.isIE&&(r.length===0||/^\s+$/.test(r))){q=o.settings.forced_root_block;if(q){r="<"+q+'><br data-mce-bogus="1"></'+q+">"}else{r='<br data-mce-bogus="1">'}m.innerHTML=r;o.selection.select(m,true);o.selection.collapse(true);return}if(p.format!=="raw"){r=new k.html.Serializer({},o.schema).serialize(o.parser.parse(r))}p.content=k.trim(r);o.dom.setHTML(m,p.content);if(!p.no_events){o.onSetContent.dispatch(o,p)}if(!o.settings.content_editable||document.activeElement===o.getBody()){o.selection.normalize()}return p.content},getContent:function(o){var n=this,p,m=n.getBody();o=o||{};o.format=o.format||"html";o.get=true;o.getInner=true;if(!o.no_events){n.onBeforeGetContent.dispatch(n,o)}if(o.format=="raw"){p=m.innerHTML}else{if(o.format=="text"){p=m.innerText||m.textContent}else{p=n.serializer.serialize(m,o)}}if(o.format!="text"){o.content=k.trim(p)}else{o.content=p}if(!o.no_events){n.onGetContent.dispatch(n,o)}return o.content},isDirty:function(){var m=this;return k.trim(m.startContent)!=k.trim(m.getContent({format:"raw",no_events:1}))&&!m.isNotDirty},getContainer:function(){var m=this;if(!m.container){m.container=l.get(m.editorContainer||m.id+"_parent")}return m.container},getContentAreaContainer:function(){return this.contentAreaContainer},getElement:function(){return l.get(this.settings.content_element||this.id)},getWin:function(){var m=this,n;if(!m.contentWindow){n=l.get(m.id+"_ifr");if(n){m.contentWindow=n.contentWindow}}return m.contentWindow},getDoc:function(){var m=this,n;if(!m.contentDocument){n=m.getWin();if(n){m.contentDocument=n.document}}return m.contentDocument},getBody:function(){return this.bodyElement||this.getDoc().body},convertURL:function(o,n,q){var m=this,p=m.settings;if(p.urlconverter_callback){return m.execCallback("urlconverter_callback",o,q,true,n)}if(!p.convert_urls||(q&&q.nodeName=="LINK")||o.indexOf("file:")===0){return o}if(p.relative_urls){return m.documentBaseURI.toRelative(o)}o=m.documentBaseURI.toAbsolute(o,p.remove_script_host);return o},addVisual:function(q){var n=this,o=n.settings,p=n.dom,m;q=q||n.getBody();if(!d(n.hasVisual)){n.hasVisual=o.visual}i(p.select("table,a",q),function(s){var r;switch(s.nodeName){case"TABLE":m=o.visual_table_class||"mceItemTable";r=p.getAttrib(s,"border");if(!r||r=="0"){if(n.hasVisual){p.addClass(s,m)}else{p.removeClass(s,m)}}return;case"A":if(!p.getAttrib(s,"href",false)){r=p.getAttrib(s,"name")||s.id;m="mceItemAnchor";if(r){if(n.hasVisual){p.addClass(s,m)}else{p.removeClass(s,m)}}}return}});n.onVisualAid.dispatch(n,q,n.hasVisual)},remove:function(){var m=this,o=m.getContainer(),n=m.getDoc();if(!m.removed){m.removed=1;if(b&&n){n.execCommand("SelectAll")}m.save();l.setStyle(m.id,"display",m.orgDisplay);if(!m.settings.content_editable){j.unbind(m.getWin());j.unbind(m.getDoc())}j.unbind(m.getBody());j.clear(o);m.execCallback("remove_instance_callback",m);m.onRemove.dispatch(m);m.onExecCommand.listeners=[];k.remove(m);l.remove(o)}},destroy:function(n){var m=this;if(m.destroyed){return}if(a){j.unbind(m.getDoc());j.unbind(m.getWin());j.unbind(m.getBody())}if(!n){k.removeUnload(m.destroy);tinyMCE.onBeforeUnload.remove(m._beforeUnload);if(m.theme&&m.theme.destroy){m.theme.destroy()}m.controlManager.destroy();m.selection.destroy();m.dom.destroy()}if(m.formElement){m.formElement.submit=m.formElement._mceOldSubmit;m.formElement._mceOldSubmit=null}m.contentAreaContainer=m.formElement=m.container=m.settings.content_element=m.bodyElement=m.contentDocument=m.contentWindow=null;if(m.selection){m.selection=m.selection.win=m.selection.dom=m.selection.dom.doc=null}m.destroyed=1},_refreshContentEditable:function(){var n=this,m,o;if(n._isHidden()){m=n.getBody();o=m.parentNode;o.removeChild(m);o.appendChild(m);m.focus()}},_isHidden:function(){var m;if(!a){return 0}m=this.selection.getSel();return(!m||!m.rangeCount||m.rangeCount===0)}})})(tinymce);(function(a){var b=a.each;a.Editor.prototype.setupEvents=function(){var c=this,d=c.settings;b(["onPreInit","onBeforeRenderUI","onPostRender","onLoad","onInit","onRemove","onActivate","onDeactivate","onClick","onEvent","onMouseUp","onMouseDown","onDblClick","onKeyDown","onKeyUp","onKeyPress","onContextMenu","onSubmit","onReset","onPaste","onPreProcess","onPostProcess","onBeforeSetContent","onBeforeGetContent","onSetContent","onGetContent","onLoadContent","onSaveContent","onNodeChange","onChange","onBeforeExecCommand","onExecCommand","onUndo","onRedo","onVisualAid","onSetProgressState","onSetAttrib"],function(e){c[e]=new a.util.Dispatcher(c)});if(d.cleanup_callback){c.onBeforeSetContent.add(function(e,f){f.content=e.execCallback("cleanup_callback","insert_to_editor",f.content,f)});c.onPreProcess.add(function(e,f){if(f.set){e.execCallback("cleanup_callback","insert_to_editor_dom",f.node,f)}if(f.get){e.execCallback("cleanup_callback","get_from_editor_dom",f.node,f)}});c.onPostProcess.add(function(e,f){if(f.set){f.content=e.execCallback("cleanup_callback","insert_to_editor",f.content,f)}if(f.get){f.content=e.execCallback("cleanup_callback","get_from_editor",f.content,f)}})}if(d.save_callback){c.onGetContent.add(function(e,f){if(f.save){f.content=e.execCallback("save_callback",e.id,f.content,e.getBody())}})}if(d.handle_event_callback){c.onEvent.add(function(f,g,h){if(c.execCallback("handle_event_callback",g,f,h)===false){g.preventDefault();g.stopPropagation()}})}if(d.handle_node_change_callback){c.onNodeChange.add(function(f,e,g){f.execCallback("handle_node_change_callback",f.id,g,-1,-1,true,f.selection.isCollapsed())})}if(d.save_callback){c.onSaveContent.add(function(e,g){var f=e.execCallback("save_callback",e.id,g.content,e.getBody());if(f){g.content=f}})}if(d.onchange_callback){c.onChange.add(function(f,e){f.execCallback("onchange_callback",f,e)})}};a.Editor.prototype.bindNativeEvents=function(){var l=this,f,d=l.settings,e=l.dom,h;h={mouseup:"onMouseUp",mousedown:"onMouseDown",click:"onClick",keyup:"onKeyUp",keydown:"onKeyDown",keypress:"onKeyPress",submit:"onSubmit",reset:"onReset",contextmenu:"onContextMenu",dblclick:"onDblClick",paste:"onPaste"};function c(i,m){var n=i.type;if(l.removed){return}if(l.onEvent.dispatch(l,i,m)!==false){l[h[i.fakeType||i.type]].dispatch(l,i,m)}}function j(i){l.focus(true)}function k(i,m){if(m.keyCode!=65||!a.VK.metaKeyPressed(m)){l.selection.normalize()}l.nodeChanged()}b(h,function(m,n){var i=d.content_editable?l.getBody():l.getDoc();switch(n){case"contextmenu":e.bind(i,n,c);break;case"paste":e.bind(l.getBody(),n,c);break;case"submit":case"reset":e.bind(l.getElement().form||a.DOM.getParent(l.id,"form"),n,c);break;default:e.bind(i,n,c)}});e.bind(d.content_editable?l.getBody():(a.isGecko?l.getDoc():l.getWin()),"focus",function(i){l.focus(true)});if(d.content_editable&&a.isOpera){e.bind(l.getBody(),"click",j);e.bind(l.getBody(),"keydown",j)}l.onMouseUp.add(k);l.onKeyUp.add(function(i,n){var m=n.keyCode;if((m>=33&&m<=36)||(m>=37&&m<=40)||m==13||m==45||m==46||m==8||(a.isMac&&(m==91||m==93))||n.ctrlKey){k(i,n)}});l.onReset.add(function(){l.setContent(l.startContent,{format:"raw"})});function g(m,i){if(m.altKey||m.ctrlKey||m.metaKey){b(l.shortcuts,function(n){var o=a.isMac?m.metaKey:m.ctrlKey;if(n.ctrl!=o||n.alt!=m.altKey||n.shift!=m.shiftKey){return}if(m.keyCode==n.keyCode||(m.charCode&&m.charCode==n.charCode)){m.preventDefault();if(i){n.func.call(n.scope)}return true}})}}l.onKeyUp.add(function(i,m){g(m)});l.onKeyPress.add(function(i,m){g(m)});l.onKeyDown.add(function(i,m){g(m,true)});if(a.isOpera){l.onClick.add(function(i,m){m.preventDefault()})}}})(tinymce);(function(d){var e=d.each,b,a=true,c=false;d.EditorCommands=function(n){var m=n.dom,p=n.selection,j={state:{},exec:{},value:{}},k=n.settings,q=n.formatter,o;function r(z,y,x){var v;z=z.toLowerCase();if(v=j.exec[z]){v(z,y,x);return a}return c}function l(x){var v;x=x.toLowerCase();if(v=j.state[x]){return v(x)}return -1}function h(x){var v;x=x.toLowerCase();if(v=j.value[x]){return v(x)}return c}function u(v,x){x=x||"exec";e(v,function(z,y){e(y.toLowerCase().split(","),function(A){j[x][A]=z})})}d.extend(this,{execCommand:r,queryCommandState:l,queryCommandValue:h,addCommands:u});function f(y,x,v){if(x===b){x=c}if(v===b){v=null}return n.getDoc().execCommand(y,x,v)}function t(v){return q.match(v)}function s(v,x){q.toggle(v,x?{value:x}:b)}function i(v){o=p.getBookmark(v)}function g(){p.moveToBookmark(o)}u({"mceResetDesignMode,mceBeginUndoLevel":function(){},"mceEndUndoLevel,mceAddUndoLevel":function(){n.undoManager.add()},"Cut,Copy,Paste":function(z){var y=n.getDoc(),v;try{f(z)}catch(x){v=a}if(v||!y.queryCommandSupported(z)){if(d.isGecko){n.windowManager.confirm(n.getLang("clipboard_msg"),function(A){if(A){open("http://www.mozilla.org/editor/midasdemo/securityprefs.html","_blank")}})}else{n.windowManager.alert(n.getLang("clipboard_no_support"))}}},unlink:function(v){if(p.isCollapsed()){p.select(p.getNode())}f(v);p.collapse(c)},"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(v){var x=v.substring(7);e("left,center,right,full".split(","),function(y){if(x!=y){q.remove("align"+y)}});s("align"+x);r("mceRepaint")},"InsertUnorderedList,InsertOrderedList":function(y){var v,x;f(y);v=m.getParent(p.getNode(),"ol,ul");if(v){x=v.parentNode;if(/^(H[1-6]|P|ADDRESS|PRE)$/.test(x.nodeName)){i();m.split(x,v);g()}}},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){s(v)},"ForeColor,HiliteColor,FontName":function(y,x,v){s(y,v)},FontSize:function(z,y,x){var v,A;if(x>=1&&x<=7){A=d.explode(k.font_size_style_values);v=d.explode(k.font_size_classes);if(v){x=v[x-1]||x}else{x=A[x-1]||x}}s(z,x)},RemoveFormat:function(v){q.remove(v)},mceBlockQuote:function(v){s("blockquote")},FormatBlock:function(y,x,v){return s(v||"p")},mceCleanup:function(){var v=p.getBookmark();n.setContent(n.getContent({cleanup:a}),{cleanup:a});p.moveToBookmark(v)},mceRemoveNode:function(z,y,x){var v=x||p.getNode();if(v!=n.getBody()){i();n.dom.remove(v,a);g()}},mceSelectNodeDepth:function(z,y,x){var v=0;m.getParent(p.getNode(),function(A){if(A.nodeType==1&&v++==x){p.select(A);return c}},n.getBody())},mceSelectNode:function(y,x,v){p.select(v)},mceInsertContent:function(B,I,K){var y,J,E,z,F,G,D,C,L,x,A,M,v,H;y=n.parser;J=new d.html.Serializer({},n.schema);v='<span id="mce_marker" data-mce-type="bookmark">\uFEFF</span>';G={content:K,format:"html"};p.onBeforeSetContent.dispatch(p,G);K=G.content;if(K.indexOf("{$caret}")==-1){K+="{$caret}"}K=K.replace(/\{\$caret\}/,v);if(!p.isCollapsed()){n.getDoc().execCommand("Delete",false,null)}E=p.getNode();G={context:E.nodeName.toLowerCase()};F=y.parse(K,G);A=F.lastChild;if(A.attr("id")=="mce_marker"){D=A;for(A=A.prev;A;A=A.walk(true)){if(A.type==3||!m.isBlock(A.name)){A.parent.insert(D,A,A.name==="br");break}}}if(!G.invalid){K=J.serialize(F);A=E.firstChild;M=E.lastChild;if(!A||(A===M&&A.nodeName==="BR")){m.setHTML(E,K)}else{p.setContent(K)}}else{p.setContent(v);E=p.getNode();z=n.getBody();if(E.nodeType==9){E=A=z}else{A=E}while(A!==z){E=A;A=A.parentNode}K=E==z?z.innerHTML:m.getOuterHTML(E);K=J.serialize(y.parse(K.replace(/<span (id="mce_marker"|id=mce_marker).+?<\/span>/i,function(){return J.serialize(F)})));if(E==z){m.setHTML(z,K)}else{m.setOuterHTML(E,K)}}D=m.get("mce_marker");C=m.getRect(D);L=m.getViewPort(n.getWin());if((C.y+C.h>L.y+L.h||C.y<L.y)||(C.x>L.x+L.w||C.x<L.x)){H=d.isIE?n.getDoc().documentElement:n.getBody();H.scrollLeft=C.x;H.scrollTop=C.y-L.h+25}x=m.createRng();A=D.previousSibling;if(A&&A.nodeType==3){x.setStart(A,A.nodeValue.length)}else{x.setStartBefore(D);x.setEndBefore(D)}m.remove(D);p.setRng(x);p.onSetContent.dispatch(p,G);n.addVisual()},mceInsertRawHTML:function(y,x,v){p.setContent("tiny_mce_marker");n.setContent(n.getContent().replace(/tiny_mce_marker/g,function(){return v}))},mceToggleFormat:function(y,x,v){s(v)},mceSetContent:function(y,x,v){n.setContent(v)},"Indent,Outdent":function(z){var x,v,y;x=k.indentation;v=/[a-z%]+$/i.exec(x);x=parseInt(x);if(!l("InsertUnorderedList")&&!l("InsertOrderedList")){if(!k.forced_root_block&&!m.getParent(p.getNode(),m.isBlock)){q.apply("div")}e(p.getSelectedBlocks(),function(A){if(z=="outdent"){y=Math.max(0,parseInt(A.style.paddingLeft||0)-x);m.setStyle(A,"paddingLeft",y?y+v:"")}else{m.setStyle(A,"paddingLeft",(parseInt(A.style.paddingLeft||0)+x)+v)}})}else{f(z)}},mceRepaint:function(){var x;if(d.isGecko){try{i(a);if(p.getSel()){p.getSel().selectAllChildren(n.getBody())}p.collapse(a);g()}catch(v){}}},mceToggleFormat:function(y,x,v){q.toggle(v)},InsertHorizontalRule:function(){n.execCommand("mceInsertContent",false,"<hr />")},mceToggleVisualAid:function(){n.hasVisual=!n.hasVisual;n.addVisual()},mceReplaceContent:function(y,x,v){n.execCommand("mceInsertContent",false,v.replace(/\{\$selection\}/g,p.getContent({format:"text"})))},mceInsertLink:function(z,y,x){var v;if(typeof(x)=="string"){x={href:x}}v=m.getParent(p.getNode(),"a");x.href=x.href.replace(" ","%20");if(!v||!x.href){q.remove("link")}if(x.href){q.apply("link",x,v)}},selectAll:function(){var x=m.getRoot(),v=m.createRng();if(p.getRng().setStart){v.setStart(x,0);v.setEnd(x,x.childNodes.length);p.setRng(v)}else{f("SelectAll")}}});u({"JustifyLeft,JustifyCenter,JustifyRight,JustifyFull":function(z){var x="align"+z.substring(7);var v=p.isCollapsed()?[m.getParent(p.getNode(),m.isBlock)]:p.getSelectedBlocks();var y=d.map(v,function(A){return !!q.matchNode(A,x)});return d.inArray(y,a)!==-1},"Bold,Italic,Underline,Strikethrough,Superscript,Subscript":function(v){return t(v)},mceBlockQuote:function(){return t("blockquote")},Outdent:function(){var v;if(k.inline_styles){if((v=m.getParent(p.getStart(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}if((v=m.getParent(p.getEnd(),m.isBlock))&&parseInt(v.style.paddingLeft)>0){return a}}return l("InsertUnorderedList")||l("InsertOrderedList")||(!k.inline_styles&&!!m.getParent(p.getNode(),"BLOCKQUOTE"))},"InsertUnorderedList,InsertOrderedList":function(x){var v=m.getParent(p.getNode(),"ul,ol");return v&&(x==="insertunorderedlist"&&v.tagName==="UL"||x==="insertorderedlist"&&v.tagName==="OL")}},"state");u({"FontSize,FontName":function(y){var x=0,v;if(v=m.getParent(p.getNode(),"span")){if(y=="fontsize"){x=v.style.fontSize}else{x=v.style.fontFamily.replace(/, /g,",").replace(/[\'\"]/g,"").toLowerCase()}}return x}},"value");u({Undo:function(){n.undoManager.undo()},Redo:function(){n.undoManager.redo()}})}})(tinymce);(function(b){var a=b.util.Dispatcher;b.UndoManager=function(h){var l,i=0,e=[],g,k,j,f;function c(){return b.trim(h.getContent({format:"raw",no_events:1}).replace(/<span[^>]+data-mce-bogus[^>]+>[\u200B\uFEFF]+<\/span>/g,""))}function d(){l.typing=false;l.add()}onBeforeAdd=new a(l);k=new a(l);j=new a(l);f=new a(l);k.add(function(m,n){if(m.hasUndo()){return h.onChange.dispatch(h,n,m)}});j.add(function(m,n){return h.onUndo.dispatch(h,n,m)});f.add(function(m,n){return h.onRedo.dispatch(h,n,m)});h.onInit.add(function(){l.add()});h.onBeforeExecCommand.add(function(m,p,o,q,n){if(p!="Undo"&&p!="Redo"&&p!="mceRepaint"&&(!n||!n.skip_undo)){l.beforeChange()}});h.onExecCommand.add(function(m,p,o,q,n){if(p!="Undo"&&p!="Redo"&&p!="mceRepaint"&&(!n||!n.skip_undo)){l.add()}});h.onSaveContent.add(d);h.dom.bind(h.dom.getRoot(),"dragend",d);h.dom.bind(h.getBody(),"focusout",function(m){if(!h.removed&&l.typing){d()}});h.onKeyUp.add(function(m,o){var n=o.keyCode;if((n>=33&&n<=36)||(n>=37&&n<=40)||n==45||n==13||o.ctrlKey){d()}});h.onKeyDown.add(function(m,o){var n=o.keyCode;if((n>=33&&n<=36)||(n>=37&&n<=40)||n==45){if(l.typing){d()}return}if((n<16||n>20)&&n!=224&&n!=91&&!l.typing){l.beforeChange();l.typing=true;l.add()}});h.onMouseDown.add(function(m,n){if(l.typing){d()}});h.addShortcut("ctrl+z","undo_desc","Undo");h.addShortcut("ctrl+y","redo_desc","Redo");l={data:e,typing:false,onBeforeAdd:onBeforeAdd,onAdd:k,onUndo:j,onRedo:f,beforeChange:function(){g=h.selection.getBookmark(2,true)},add:function(p){var m,n=h.settings,o;p=p||{};p.content=c();l.onBeforeAdd.dispatch(l,p);o=e[i];if(o&&o.content==p.content){return null}if(e[i]){e[i].beforeBookmark=g}if(n.custom_undo_redo_levels){if(e.length>n.custom_undo_redo_levels){for(m=0;m<e.length-1;m++){e[m]=e[m+1]}e.length--;i=e.length}}p.bookmark=h.selection.getBookmark(2,true);if(i<e.length-1){e.length=i+1}e.push(p);i=e.length-1;l.onAdd.dispatch(l,p);h.isNotDirty=0;return p},undo:function(){var n,m;if(l.typing){l.add();l.typing=false}if(i>0){n=e[--i];h.setContent(n.content,{format:"raw"});h.selection.moveToBookmark(n.beforeBookmark);l.onUndo.dispatch(l,n)}return n},redo:function(){var m;if(i<e.length-1){m=e[++i];h.setContent(m.content,{format:"raw"});h.selection.moveToBookmark(m.bookmark);l.onRedo.dispatch(l,m)}return m},clear:function(){e=[];i=0;l.typing=false},hasUndo:function(){return i>0||this.typing},hasRedo:function(){return i<e.length-1&&!this.typing}};return l}})(tinymce);tinymce.ForceBlocks=function(c){var b=c.settings,e=c.dom,a=c.selection,d=c.schema.getBlockElements();function f(){var j=a.getStart(),h=c.getBody(),g,k,o,s,q,i,l,m=-16777215,p,r;if(!j||j.nodeType!==1||!b.forced_root_block){return}while(j&&j!=h){if(d[j.nodeName]){return}j=j.parentNode}g=a.getRng();if(g.setStart){k=g.startContainer;o=g.startOffset;s=g.endContainer;q=g.endOffset}else{if(g.item){j=g.item(0);g=c.getDoc().body.createTextRange();g.moveToElementText(j)}r=g.parentElement().ownerDocument===c.getDoc();tmpRng=g.duplicate();tmpRng.collapse(true);o=tmpRng.move("character",m)*-1;if(!tmpRng.collapsed){tmpRng=g.duplicate();tmpRng.collapse(false);q=(tmpRng.move("character",m)*-1)-o}}j=h.firstChild;while(j){if(j.nodeType===3||(j.nodeType==1&&!d[j.nodeName])){if(j.nodeType===3&&j.nodeValue.length==0){l=j;j=j.nextSibling;e.remove(l);continue}if(!i){i=e.create(b.forced_root_block);j.parentNode.insertBefore(i,j);p=true}l=j;j=j.nextSibling;i.appendChild(l)}else{i=null;j=j.nextSibling}}if(p){if(g.setStart){g.setStart(k,o);g.setEnd(s,q);a.setRng(g)}else{if(r){try{g=c.getDoc().body.createTextRange();g.moveToElementText(h);g.collapse(true);g.moveStart("character",o);if(q>0){g.moveEnd("character",q)}g.select()}catch(n){}}}c.nodeChanged()}}if(b.forced_root_block){c.onKeyUp.add(f);c.onNodeChange.add(f)}};(function(c){var b=c.DOM,a=c.dom.Event,d=c.each,e=c.extend;c.create("tinymce.ControlManager",{ControlManager:function(f,j){var h=this,g;j=j||{};h.editor=f;h.controls={};h.onAdd=new c.util.Dispatcher(h);h.onPostRender=new c.util.Dispatcher(h);h.prefix=j.prefix||f.id+"_";h._cls={};h.onPostRender.add(function(){d(h.controls,function(i){i.postRender()})})},get:function(f){return this.controls[this.prefix+f]||this.controls[f]},setActive:function(h,f){var g=null;if(g=this.get(h)){g.setActive(f)}return g},setDisabled:function(h,f){var g=null;if(g=this.get(h)){g.setDisabled(f)}return g},add:function(g){var f=this;if(g){f.controls[g.id]=g;f.onAdd.dispatch(g,f)}return g},createControl:function(j){var o,k,g,h=this,m=h.editor,n,f;if(!h.controlFactories){h.controlFactories=[];d(m.plugins,function(i){if(i.createControl){h.controlFactories.push(i)}})}n=h.controlFactories;for(k=0,g=n.length;k<g;k++){o=n[k].createControl(j,h);if(o){return h.add(o)}}if(j==="|"||j==="separator"){return h.createSeparator()}if(m.buttons&&(o=m.buttons[j])){return h.createButton(j,o)}return h.add(o)},createDropMenu:function(f,n,h){var m=this,i=m.editor,j,g,k,l;n=e({"class":"mceDropDown",constrain:i.settings.constrain_menus},n);n["class"]=n["class"]+" "+i.getParam("skin")+"Skin";if(k=i.getParam("skin_variant")){n["class"]+=" "+i.getParam("skin")+"Skin"+k.substring(0,1).toUpperCase()+k.substring(1)}n["class"]+=i.settings.directionality=="rtl"?" mceRtl":"";f=m.prefix+f;l=h||m._cls.dropmenu||c.ui.DropMenu;j=m.controls[f]=new l(f,n);j.onAddItem.add(function(r,q){var p=q.settings;p.title=i.getLang(p.title,p.title);if(!p.onclick){p.onclick=function(o){if(p.cmd){i.execCommand(p.cmd,p.ui||false,p.value)}}}});i.onRemove.add(function(){j.destroy()});if(c.isIE){j.onShowMenu.add(function(){i.focus();g=i.selection.getBookmark(1)});j.onHideMenu.add(function(){if(g){i.selection.moveToBookmark(g);g=0}})}return m.add(j)},createListBox:function(f,n,h){var l=this,j=l.editor,i,k,m;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,scope:n.scope,control_manager:l},n);f=l.prefix+f;function g(o){return o.settings.use_accessible_selects&&!c.isGecko}if(j.settings.use_native_selects||g(j)){k=new c.ui.NativeListBox(f,n)}else{m=h||l._cls.listbox||c.ui.ListBox;k=new m(f,n,j)}l.controls[f]=k;if(c.isWebKit){k.onPostRender.add(function(p,o){a.add(o,"mousedown",function(){j.bookmark=j.selection.getBookmark(1)});a.add(o,"focus",function(){j.selection.moveToBookmark(j.bookmark);j.bookmark=null})})}if(k.hideMenu){j.onMouseDown.add(k.hideMenu,k)}return l.add(k)},createButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.label=g.translate(i.label);i.scope=i.scope||g;if(!i.onclick&&!i.menu_button){i.onclick=function(){g.execCommand(i.cmd,i.ui||false,i.value)}}i=e({title:i.title,"class":"mce_"+m,unavailable_prefix:g.getLang("unavailable",""),scope:i.scope,control_manager:h},i);m=h.prefix+m;if(i.menu_button){f=l||h._cls.menubutton||c.ui.MenuButton;k=new f(m,i,g);g.onMouseDown.add(k.hideMenu,k)}else{f=h._cls.button||c.ui.Button;k=new f(m,i,g)}return h.add(k)},createMenuButton:function(h,f,g){f=f||{};f.menu_button=1;return this.createButton(h,f,g)},createSplitButton:function(m,i,l){var h=this,g=h.editor,j,k,f;if(h.get(m)){return null}i.title=g.translate(i.title);i.scope=i.scope||g;if(!i.onclick){i.onclick=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}if(!i.onselect){i.onselect=function(n){g.execCommand(i.cmd,i.ui||false,n||i.value)}}i=e({title:i.title,"class":"mce_"+m,scope:i.scope,control_manager:h},i);m=h.prefix+m;f=l||h._cls.splitbutton||c.ui.SplitButton;k=h.add(new f(m,i,g));g.onMouseDown.add(k.hideMenu,k);return k},createColorSplitButton:function(f,n,h){var l=this,j=l.editor,i,k,m,g;if(l.get(f)){return null}n.title=j.translate(n.title);n.scope=n.scope||j;if(!n.onclick){n.onclick=function(o){if(c.isIE){g=j.selection.getBookmark(1)}j.execCommand(n.cmd,n.ui||false,o||n.value)}}if(!n.onselect){n.onselect=function(o){j.execCommand(n.cmd,n.ui||false,o||n.value)}}n=e({title:n.title,"class":"mce_"+f,menu_class:j.getParam("skin")+"Skin",scope:n.scope,more_colors_title:j.getLang("more_colors")},n);f=l.prefix+f;m=h||l._cls.colorsplitbutton||c.ui.ColorSplitButton;k=new m(f,n,j);j.onMouseDown.add(k.hideMenu,k);j.onRemove.add(function(){k.destroy()});if(c.isIE){k.onShowMenu.add(function(){j.focus();g=j.selection.getBookmark(1)});k.onHideMenu.add(function(){if(g){j.selection.moveToBookmark(g);g=0}})}return l.add(k)},createToolbar:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||g._cls.toolbar||c.ui.Toolbar;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createToolbarGroup:function(k,h,j){var i,g=this,f;k=g.prefix+k;f=j||this._cls.toolbarGroup||c.ui.ToolbarGroup;i=new f(k,h,g.editor);if(g.get(k)){return null}return g.add(i)},createSeparator:function(g){var f=g||this._cls.separator||c.ui.Separator;return new f()},setControlType:function(g,f){return this._cls[g.toLowerCase()]=f},destroy:function(){d(this.controls,function(f){f.destroy()});this.controls=null}})})(tinymce);(function(d){var a=d.util.Dispatcher,e=d.each,c=d.isIE,b=d.isOpera;d.create("tinymce.WindowManager",{WindowManager:function(f){var g=this;g.editor=f;g.onOpen=new a(g);g.onClose=new a(g);g.params={};g.features={}},open:function(z,h){var v=this,k="",n,m,i=v.editor.settings.dialog_type=="modal",q,o,j,g=d.DOM.getViewPort(),r;z=z||{};h=h||{};o=b?g.w:screen.width;j=b?g.h:screen.height;z.name=z.name||"mc_"+new Date().getTime();z.width=parseInt(z.width||320);z.height=parseInt(z.height||240);z.resizable=true;z.left=z.left||parseInt(o/2)-(z.width/2);z.top=z.top||parseInt(j/2)-(z.height/2);h.inline=false;h.mce_width=z.width;h.mce_height=z.height;h.mce_auto_focus=z.auto_focus;if(i){if(c){z.center=true;z.help=false;z.dialogWidth=z.width+"px";z.dialogHeight=z.height+"px";z.scroll=z.scrollbars||false}}e(z,function(p,f){if(d.is(p,"boolean")){p=p?"yes":"no"}if(!/^(name|url)$/.test(f)){if(c&&i){k+=(k?";":"")+f+":"+p}else{k+=(k?",":"")+f+"="+p}}});v.features=z;v.params=h;v.onOpen.dispatch(v,z,h);r=z.url||z.file;r=d._addVer(r);try{if(c&&i){q=1;window.showModalDialog(r,window,k)}else{q=window.open(r,z.name,k)}}catch(l){}if(!q){alert(v.editor.getLang("popup_blocked"))}},close:function(f){f.close();this.onClose.dispatch(this)},createInstance:function(i,h,g,m,l,k){var j=d.resolve(i);return new j(h,g,m,l,k)},confirm:function(h,f,i,g){g=g||window;f.call(i||this,g.confirm(this._decode(this.editor.getLang(h,h))))},alert:function(h,f,j,g){var i=this;g=g||window;g.alert(i._decode(i.editor.getLang(h,h)));if(f){f.call(j||i)}},resizeBy:function(f,g,h){h.resizeBy(f,g)},_decode:function(f){return d.DOM.decode(f).replace(/\\n/g,"\n")}})}(tinymce));(function(a){a.Formatter=function(aa){var Q={},T=a.each,c=aa.dom,r=aa.selection,t=a.dom.TreeWalker,N=new a.dom.RangeUtils(c),d=aa.schema.isValidChild,A=a.isArray,H=c.isBlock,m=aa.settings.forced_root_block,s=c.nodeIndex,G="\uFEFF",e=/^(src|href|style)$/,X=false,C=true,P,D,x=c.getContentEditable;function I(ab){if(ab.nodeType){ab=ab.nodeName}return !!aa.schema.getTextBlockElements()[ab.toLowerCase()]}function n(ac,ab){return c.getParents(ac,ab,c.getRoot())}function b(ab){return ab.nodeType===1&&ab.id==="_mce_caret"}function j(){l({alignleft:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"left"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"left"}}],aligncenter:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"center"},defaultBlock:"div"},{selector:"img",collapsed:false,styles:{display:"block",marginLeft:"auto",marginRight:"auto"}},{selector:"table",collapsed:false,styles:{marginLeft:"auto",marginRight:"auto"}}],alignright:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"right"},defaultBlock:"div"},{selector:"img,table",collapsed:false,styles:{"float":"right"}}],alignfull:[{selector:"figure,p,h1,h2,h3,h4,h5,h6,td,th,div,ul,ol,li",styles:{textAlign:"justify"},defaultBlock:"div"}],bold:[{inline:"strong",remove:"all"},{inline:"span",styles:{fontWeight:"bold"}},{inline:"b",remove:"all"}],italic:[{inline:"em",remove:"all"},{inline:"span",styles:{fontStyle:"italic"}},{inline:"i",remove:"all"}],underline:[{inline:"span",styles:{textDecoration:"underline"},exact:true},{inline:"u",remove:"all"}],strikethrough:[{inline:"span",styles:{textDecoration:"line-through"},exact:true},{inline:"strike",remove:"all"}],forecolor:{inline:"span",styles:{color:"%value"},wrap_links:false},hilitecolor:{inline:"span",styles:{backgroundColor:"%value"},wrap_links:false},fontname:{inline:"span",styles:{fontFamily:"%value"}},fontsize:{inline:"span",styles:{fontSize:"%value"}},fontsize_class:{inline:"span",attributes:{"class":"%value"}},blockquote:{block:"blockquote",wrapper:1,remove:"all"},subscript:{inline:"sub"},superscript:{inline:"sup"},link:{inline:"a",selector:"a",remove:"all",split:true,deep:true,onmatch:function(ab){return true},onformat:function(ad,ab,ac){T(ac,function(af,ae){c.setAttrib(ad,ae,af)})}},removeformat:[{selector:"b,strong,em,i,font,u,strike",remove:"all",split:true,expand:false,block_expand:true,deep:true},{selector:"span",attributes:["style","class"],remove:"empty",split:true,expand:false,deep:true},{selector:"*",attributes:["style","class"],split:false,expand:false,deep:true}]});T("p h1 h2 h3 h4 h5 h6 div address pre div code dt dd samp".split(/\s/),function(ab){l(ab,{block:ab,remove:"all"})});l(aa.settings.formats)}function W(){aa.addShortcut("ctrl+b","bold_desc","Bold");aa.addShortcut("ctrl+i","italic_desc","Italic");aa.addShortcut("ctrl+u","underline_desc","Underline");for(var ab=1;ab<=6;ab++){aa.addShortcut("ctrl+"+ab,"",["FormatBlock",false,"h"+ab])}aa.addShortcut("ctrl+7","",["FormatBlock",false,"p"]);aa.addShortcut("ctrl+8","",["FormatBlock",false,"div"]);aa.addShortcut("ctrl+9","",["FormatBlock",false,"address"])}function V(ab){return ab?Q[ab]:Q}function l(ab,ac){if(ab){if(typeof(ab)!=="string"){T(ab,function(ae,ad){l(ad,ae)})}else{ac=ac.length?ac:[ac];T(ac,function(ad){if(ad.deep===D){ad.deep=!ad.selector}if(ad.split===D){ad.split=!ad.selector||ad.inline}if(ad.remove===D&&ad.selector&&!ad.inline){ad.remove="none"}if(ad.selector&&ad.inline){ad.mixed=true;ad.block_expand=true}if(typeof(ad.classes)==="string"){ad.classes=ad.classes.split(/\s+/)}});Q[ab]=ac}}}var i=function(ac){var ab;aa.dom.getParent(ac,function(ad){ab=aa.dom.getStyle(ad,"text-decoration");return ab&&ab!=="none"});return ab};var L=function(ab){var ac;if(ab.nodeType===1&&ab.parentNode&&ab.parentNode.nodeType===1){ac=i(ab.parentNode);if(aa.dom.getStyle(ab,"color")&&ac){aa.dom.setStyle(ab,"text-decoration",ac)}else{if(aa.dom.getStyle(ab,"textdecoration")===ac){aa.dom.setStyle(ab,"text-decoration",null)}}}};function Y(ae,al,ag){var ah=V(ae),am=ah[0],ak,ac,aj,ai=r.isCollapsed();function ab(aq,ap){ap=ap||am;if(aq){if(ap.onformat){ap.onformat(aq,ap,al,ag)}T(ap.styles,function(at,ar){c.setStyle(aq,ar,q(at,al))});T(ap.attributes,function(at,ar){c.setAttrib(aq,ar,q(at,al))});T(ap.classes,function(ar){ar=q(ar,al);if(!c.hasClass(aq,ar)){c.addClass(aq,ar)}})}}function af(){function ar(ay,aw){var ax=new t(aw);for(ag=ax.current();ag;ag=ax.prev()){if(ag.childNodes.length>1||ag==ay||ag.tagName=="BR"){return ag}}}var aq=aa.selection.getRng();var av=aq.startContainer;var ap=aq.endContainer;if(av!=ap&&aq.endOffset===0){var au=ar(av,ap);var at=au.nodeType==3?au.length:au.childNodes.length;aq.setEnd(au,at)}return aq}function ad(at,ay,aw,av,aq){var ap=[],ar=-1,ax,aA=-1,au=-1,az;T(at.childNodes,function(aC,aB){if(aC.nodeName==="UL"||aC.nodeName==="OL"){ar=aB;ax=aC;return false}});T(at.childNodes,function(aC,aB){if(aC.nodeName==="SPAN"&&c.getAttrib(aC,"data-mce-type")=="bookmark"){if(aC.id==ay.id+"_start"){aA=aB}else{if(aC.id==ay.id+"_end"){au=aB}}}});if(ar<=0||(aA<ar&&au>ar)){T(a.grep(at.childNodes),aq);return 0}else{az=c.clone(aw,X);T(a.grep(at.childNodes),function(aC,aB){if((aA<ar&&aB<ar)||(aA>ar&&aB>ar)){ap.push(aC);aC.parentNode.removeChild(aC)}});if(aA<ar){at.insertBefore(az,ax)}else{if(aA>ar){at.insertBefore(az,ax.nextSibling)}}av.push(az);T(ap,function(aB){az.appendChild(aB)});return az}}function an(aq,at,aw){var ap=[],av,ar,au=true;av=am.inline||am.block;ar=c.create(av);ab(ar);N.walk(aq,function(ax){var ay;function az(aA){var aF,aD,aB,aC,aE;aE=au;aF=aA.nodeName.toLowerCase();aD=aA.parentNode.nodeName.toLowerCase();if(aA.nodeType===1&&x(aA)){aE=au;au=x(aA)==="true";aC=true}if(g(aF,"br")){ay=0;if(am.block){c.remove(aA)}return}if(am.wrapper&&y(aA,ae,al)){ay=0;return}if(au&&!aC&&am.block&&!am.wrapper&&I(aF)){aA=c.rename(aA,av);ab(aA);ap.push(aA);ay=0;return}if(am.selector){T(ah,function(aG){if("collapsed" in aG&&aG.collapsed!==ai){return}if(c.is(aA,aG.selector)&&!b(aA)){ab(aA,aG);aB=true}});if(!am.inline||aB){ay=0;return}}if(au&&!aC&&d(av,aF)&&d(aD,av)&&!(!aw&&aA.nodeType===3&&aA.nodeValue.length===1&&aA.nodeValue.charCodeAt(0)===65279)&&!b(aA)&&(!am.inline||!H(aA))){if(!ay){ay=c.clone(ar,X);aA.parentNode.insertBefore(ay,aA);ap.push(ay)}ay.appendChild(aA)}else{if(aF=="li"&&at){ay=ad(aA,at,ar,ap,az)}else{ay=0;T(a.grep(aA.childNodes),az);if(aC){au=aE}ay=0}}}T(ax,az)});if(am.wrap_links===false){T(ap,function(ax){function ay(aC){var aB,aA,az;if(aC.nodeName==="A"){aA=c.clone(ar,X);ap.push(aA);az=a.grep(aC.childNodes);for(aB=0;aB<az.length;aB++){aA.appendChild(az[aB])}aC.appendChild(aA)}T(a.grep(aC.childNodes),ay)}ay(ax)})}T(ap,function(az){var ax;function aA(aC){var aB=0;T(aC.childNodes,function(aD){if(!f(aD)&&!K(aD)){aB++}});return aB}function ay(aB){var aD,aC;T(aB.childNodes,function(aE){if(aE.nodeType==1&&!K(aE)&&!b(aE)){aD=aE;return X}});if(aD&&h(aD,am)){aC=c.clone(aD,X);ab(aC);c.replace(aC,aB,C);c.remove(aD,1)}return aC||aB}ax=aA(az);if((ap.length>1||!H(az))&&ax===0){c.remove(az,1);return}if(am.inline||am.wrapper){if(!am.exact&&ax===1){az=ay(az)}T(ah,function(aB){T(c.select(aB.inline,az),function(aD){var aC;if(aB.wrap_links===false){aC=aD.parentNode;do{if(aC.nodeName==="A"){return}}while(aC=aC.parentNode)}Z(aB,al,aD,aB.exact?aD:null)})});if(y(az.parentNode,ae,al)){c.remove(az,1);az=0;return C}if(am.merge_with_parents){c.getParent(az.parentNode,function(aB){if(y(aB,ae,al)){c.remove(az,1);az=0;return C}})}if(az&&am.merge_siblings!==false){az=u(E(az),az);az=u(az,E(az,C))}}})}if(am){if(ag){if(ag.nodeType){ac=c.createRng();ac.setStartBefore(ag);ac.setEndAfter(ag);an(p(ac,ah),null,true)}else{an(ag,null,true)}}else{if(!ai||!am.inline||c.select("td.mceSelected,th.mceSelected").length){var ao=aa.selection.getNode();if(!m&&ah[0].defaultBlock&&!c.getParent(ao,c.isBlock)){Y(ah[0].defaultBlock)}aa.selection.setRng(af());ak=r.getBookmark();an(p(r.getRng(C),ah),ak);if(am.styles&&(am.styles.color||am.styles.textDecoration)){a.walk(ao,L,"childNodes");L(ao)}r.moveToBookmark(ak);R(r.getRng(C));aa.nodeChanged()}else{U("apply",ae,al)}}}}function B(ad,am,af){var ag=V(ad),ao=ag[0],ak,aj,ac,al=true;function ae(av){var au,at,ar,aq,ax,aw;if(av.nodeType===3){return}if(av.nodeType===1&&x(av)){ax=al;al=x(av)==="true";aw=true}au=a.grep(av.childNodes);if(al&&!aw){for(at=0,ar=ag.length;at<ar;at++){if(Z(ag[at],am,av,av)){break}}}if(ao.deep){if(au.length){for(at=0,ar=au.length;at<ar;at++){ae(au[at])}if(aw){al=ax}}}}function ah(aq){var ar;T(n(aq.parentNode).reverse(),function(at){var au;if(!ar&&at.id!="_start"&&at.id!="_end"){au=y(at,ad,am);if(au&&au.split!==false){ar=at}}});return ar}function ab(au,aq,aw,az){var aA,ay,ax,at,av,ar;if(au){ar=au.parentNode;for(aA=aq.parentNode;aA&&aA!=ar;aA=aA.parentNode){ay=c.clone(aA,X);for(av=0;av<ag.length;av++){if(Z(ag[av],am,ay,ay)){ay=0;break}}if(ay){if(ax){ay.appendChild(ax)}if(!at){at=ay}ax=ay}}if(az&&(!ao.mixed||!H(au))){aq=c.split(au,aq)}if(ax){aw.parentNode.insertBefore(ax,aw);at.appendChild(aw)}}return aq}function an(aq){return ab(ah(aq),aq,aq,true)}function ai(at){var ar=c.get(at?"_start":"_end"),aq=ar[at?"firstChild":"lastChild"];if(K(aq)){aq=aq[at?"firstChild":"lastChild"]}c.remove(ar,true);return aq}function ap(aq){var at,au,ar;aq=p(aq,ag,C);if(ao.split){at=M(aq,C);au=M(aq);if(at!=au){if(/^(TR|TD)$/.test(at.nodeName)&&at.firstChild){at=(at.nodeName=="TD"?at.firstChild:at.firstChild.firstChild)||at}at=S(at,"span",{id:"_start","data-mce-type":"bookmark"});au=S(au,"span",{id:"_end","data-mce-type":"bookmark"});an(at);an(au);at=ai(C);au=ai()}else{at=au=an(at)}aq.startContainer=at.parentNode;aq.startOffset=s(at);aq.endContainer=au.parentNode;aq.endOffset=s(au)+1}N.walk(aq,function(av){T(av,function(aw){ae(aw);if(aw.nodeType===1&&aa.dom.getStyle(aw,"text-decoration")==="underline"&&aw.parentNode&&i(aw.parentNode)==="underline"){Z({deep:false,exact:true,inline:"span",styles:{textDecoration:"underline"}},null,aw)}})})}if(af){if(af.nodeType){ac=c.createRng();ac.setStartBefore(af);ac.setEndAfter(af);ap(ac)}else{ap(af)}return}if(!r.isCollapsed()||!ao.inline||c.select("td.mceSelected,th.mceSelected").length){ak=r.getBookmark();ap(r.getRng(C));r.moveToBookmark(ak);if(ao.inline&&k(ad,am,r.getStart())){R(r.getRng(true))}aa.nodeChanged()}else{U("remove",ad,am)}}function F(ac,ae,ad){var ab=V(ac);if(k(ac,ae,ad)&&(!("toggle" in ab[0])||ab[0].toggle)){B(ac,ae,ad)}else{Y(ac,ae,ad)}}function y(ac,ab,ah,af){var ad=V(ab),ai,ag,ae;function aj(an,ap,aq){var am,ao,ak=ap[aq],al;if(ap.onmatch){return ap.onmatch(an,ap,aq)}if(ak){if(ak.length===D){for(am in ak){if(ak.hasOwnProperty(am)){if(aq==="attributes"){ao=c.getAttrib(an,am)}else{ao=O(an,am)}if(af&&!ao&&!ap.exact){return}if((!af||ap.exact)&&!g(ao,q(ak[am],ah))){return}}}}else{for(al=0;al<ak.length;al++){if(aq==="attributes"?c.getAttrib(an,ak[al]):O(an,ak[al])){return ap}}}}return ap}if(ad&&ac){for(ag=0;ag<ad.length;ag++){ai=ad[ag];if(h(ac,ai)&&aj(ac,ai,"attributes")&&aj(ac,ai,"styles")){if(ae=ai.classes){for(ag=0;ag<ae.length;ag++){if(!c.hasClass(ac,ae[ag])){return}}}return ai}}}}function k(ad,af,ae){var ac;function ab(ag){ag=c.getParent(ag,function(ah){return !!y(ah,ad,af,true)});return y(ag,ad,af)}if(ae){return ab(ae)}ae=r.getNode();if(ab(ae)){return C}ac=r.getStart();if(ac!=ae){if(ab(ac)){return C}}return X}function v(ai,ah){var af,ag=[],ae={},ad,ac,ab;af=r.getStart();c.getParent(af,function(al){var ak,aj;for(ak=0;ak<ai.length;ak++){aj=ai[ak];if(!ae[aj]&&y(al,aj,ah)){ae[aj]=true;ag.push(aj)}}},c.getRoot());return ag}function z(af){var ah=V(af),ae,ad,ag,ac,ab;if(ah){ae=r.getStart();ad=n(ae);for(ac=ah.length-1;ac>=0;ac--){ab=ah[ac].selector;if(!ab){return C}for(ag=ad.length-1;ag>=0;ag--){if(c.is(ad[ag],ab)){return C}}}}return X}function J(ab,ae,ac){var ad;if(!P){P={};ad={};aa.onNodeChange.addToTop(function(ag,af,ai){var ah=n(ai),aj={};T(P,function(ak,al){T(ah,function(am){if(y(am,al,{},ak.similar)){if(!ad[al]){T(ak,function(an){an(true,{node:am,format:al,parents:ah})});ad[al]=ak}aj[al]=ak;return false}})});T(ad,function(ak,al){if(!aj[al]){delete ad[al];T(ak,function(am){am(false,{node:ai,format:al,parents:ah})})}})})}T(ab.split(","),function(af){if(!P[af]){P[af]=[];P[af].similar=ac}P[af].push(ae)});return this}a.extend(this,{get:V,register:l,apply:Y,remove:B,toggle:F,match:k,matchAll:v,matchNode:y,canApply:z,formatChanged:J});j();W();function h(ab,ac){if(g(ab,ac.inline)){return C}if(g(ab,ac.block)){return C}if(ac.selector){return c.is(ab,ac.selector)}}function g(ac,ab){ac=ac||"";ab=ab||"";ac=""+(ac.nodeName||ac);ab=""+(ab.nodeName||ab);return ac.toLowerCase()==ab.toLowerCase()}function O(ac,ab){var ad=c.getStyle(ac,ab);if(ab=="color"||ab=="backgroundColor"){ad=c.toHex(ad)}if(ab=="fontWeight"&&ad==700){ad="bold"}return""+ad}function q(ab,ac){if(typeof(ab)!="string"){ab=ab(ac)}else{if(ac){ab=ab.replace(/%(\w+)/g,function(ae,ad){return ac[ad]||ae})}}return ab}function f(ab){return ab&&ab.nodeType===3&&/^([\t \r\n]+|)$/.test(ab.nodeValue)}function S(ad,ac,ab){var ae=c.create(ac,ab);ad.parentNode.insertBefore(ae,ad);ae.appendChild(ad);return ae}function p(ab,am,ae){var ap,an,ah,al,ad=ab.startContainer,ai=ab.startOffset,ar=ab.endContainer,ak=ab.endOffset;function ao(aA){var au,ax,az,aw,av,at;au=ax=aA?ad:ar;av=aA?"previousSibling":"nextSibling";at=c.getRoot();function ay(aB){return aB.nodeName=="BR"&&aB.getAttribute("data-mce-bogus")&&!aB.nextSibling}if(au.nodeType==3&&!f(au)){if(aA?ai>0:ak<au.nodeValue.length){return au}}for(;;){if(!am[0].block_expand&&H(ax)){return ax}for(aw=ax[av];aw;aw=aw[av]){if(!K(aw)&&!f(aw)&&!ay(aw)){return ax}}if(ax.parentNode==at){au=ax;break}ax=ax.parentNode}return au}function ag(at,au){if(au===D){au=at.nodeType===3?at.length:at.childNodes.length}while(at&&at.hasChildNodes()){at=at.childNodes[au];if(at){au=at.nodeType===3?at.length:at.childNodes.length}}return{node:at,offset:au}}if(ad.nodeType==1&&ad.hasChildNodes()){an=ad.childNodes.length-1;ad=ad.childNodes[ai>an?an:ai];if(ad.nodeType==3){ai=0}}if(ar.nodeType==1&&ar.hasChildNodes()){an=ar.childNodes.length-1;ar=ar.childNodes[ak>an?an:ak-1];if(ar.nodeType==3){ak=ar.nodeValue.length}}function aq(au){var at=au;while(at){if(at.nodeType===1&&x(at)){return x(at)==="false"?at:au}at=at.parentNode}return au}function aj(au,ay,aA){var ax,av,az,at;function aw(aC,aE){var aF,aB,aD=aC.nodeValue;if(typeof(aE)=="undefined"){aE=aA?aD.length:0}if(aA){aF=aD.lastIndexOf(" ",aE);aB=aD.lastIndexOf("\u00a0",aE);aF=aF>aB?aF:aB;if(aF!==-1&&!ae){aF++}}else{aF=aD.indexOf(" ",aE);aB=aD.indexOf("\u00a0",aE);aF=aF!==-1&&(aB===-1||aF<aB)?aF:aB}return aF}if(au.nodeType===3){az=aw(au,ay);if(az!==-1){return{container:au,offset:az}}at=au}ax=new t(au,c.getParent(au,H)||aa.getBody());while(av=ax[aA?"prev":"next"]()){if(av.nodeType===3){at=av;az=aw(av);if(az!==-1){return{container:av,offset:az}}}else{if(H(av)){break}}}if(at){if(aA){ay=0}else{ay=at.length}return{container:at,offset:ay}}}function af(au,at){var av,aw,ay,ax;if(au.nodeType==3&&au.nodeValue.length===0&&au[at]){au=au[at]}av=n(au);for(aw=0;aw<av.length;aw++){for(ay=0;ay<am.length;ay++){ax=am[ay];if("collapsed" in ax&&ax.collapsed!==ab.collapsed){continue}if(c.is(av[aw],ax.selector)){return av[aw]}}}return au}function ac(au,at,aw){var av;if(!am[0].wrapper){av=c.getParent(au,am[0].block)}if(!av){av=c.getParent(au.nodeType==3?au.parentNode:au,I)}if(av&&am[0].wrapper){av=n(av,"ul,ol").reverse()[0]||av}if(!av){av=au;while(av[at]&&!H(av[at])){av=av[at];if(g(av,"br")){break}}}return av||au}ad=aq(ad);ar=aq(ar);if(K(ad.parentNode)||K(ad)){ad=K(ad)?ad:ad.parentNode;ad=ad.nextSibling||ad;if(ad.nodeType==3){ai=0}}if(K(ar.parentNode)||K(ar)){ar=K(ar)?ar:ar.parentNode;ar=ar.previousSibling||ar;if(ar.nodeType==3){ak=ar.length}}if(am[0].inline){if(ab.collapsed){al=aj(ad,ai,true);if(al){ad=al.container;ai=al.offset}al=aj(ar,ak);if(al){ar=al.container;ak=al.offset}}ah=ag(ar,ak);if(ah.node){while(ah.node&&ah.offset===0&&ah.node.previousSibling){ah=ag(ah.node.previousSibling)}if(ah.node&&ah.offset>0&&ah.node.nodeType===3&&ah.node.nodeValue.charAt(ah.offset-1)===" "){if(ah.offset>1){ar=ah.node;ar.splitText(ah.offset-1)}}}}if(am[0].inline||am[0].block_expand){if(!am[0].inline||(ad.nodeType!=3||ai===0)){ad=ao(true)}if(!am[0].inline||(ar.nodeType!=3||ak===ar.nodeValue.length)){ar=ao()}}if(am[0].selector&&am[0].expand!==X&&!am[0].inline){ad=af(ad,"previousSibling");ar=af(ar,"nextSibling")}if(am[0].block||am[0].selector){ad=ac(ad,"previousSibling");ar=ac(ar,"nextSibling");if(am[0].block){if(!H(ad)){ad=ao(true)}if(!H(ar)){ar=ao()}}}if(ad.nodeType==1){ai=s(ad);ad=ad.parentNode}if(ar.nodeType==1){ak=s(ar)+1;ar=ar.parentNode}return{startContainer:ad,startOffset:ai,endContainer:ar,endOffset:ak}}function Z(ah,ag,ae,ab){var ad,ac,af;if(!h(ae,ah)){return X}if(ah.remove!="all"){T(ah.styles,function(aj,ai){aj=q(aj,ag);if(typeof(ai)==="number"){ai=aj;ab=0}if(!ab||g(O(ab,ai),aj)){c.setStyle(ae,ai,"")}af=1});if(af&&c.getAttrib(ae,"style")==""){ae.removeAttribute("style");ae.removeAttribute("data-mce-style")}T(ah.attributes,function(ak,ai){var aj;ak=q(ak,ag);if(typeof(ai)==="number"){ai=ak;ab=0}if(!ab||g(c.getAttrib(ab,ai),ak)){if(ai=="class"){ak=c.getAttrib(ae,ai);if(ak){aj="";T(ak.split(/\s+/),function(al){if(/mce\w+/.test(al)){aj+=(aj?" ":"")+al}});if(aj){c.setAttrib(ae,ai,aj);return}}}if(ai=="class"){ae.removeAttribute("className")}if(e.test(ai)){ae.removeAttribute("data-mce-"+ai)}ae.removeAttribute(ai)}});T(ah.classes,function(ai){ai=q(ai,ag);if(!ab||c.hasClass(ab,ai)){c.removeClass(ae,ai)}});ac=c.getAttribs(ae);for(ad=0;ad<ac.length;ad++){if(ac[ad].nodeName.indexOf("_")!==0){return X}}}if(ah.remove!="none"){o(ae,ah);return C}}function o(ad,ae){var ab=ad.parentNode,ac;function af(ah,ag,ai){ah=E(ah,ag,ai);return !ah||(ah.nodeName=="BR"||H(ah))}if(ae.block){if(!m){if(H(ad)&&!H(ab)){if(!af(ad,X)&&!af(ad.firstChild,C,1)){ad.insertBefore(c.create("br"),ad.firstChild)}if(!af(ad,C)&&!af(ad.lastChild,X,1)){ad.appendChild(c.create("br"))}}}else{if(ab==c.getRoot()){if(!ae.list_block||!g(ad,ae.list_block)){T(a.grep(ad.childNodes),function(ag){if(d(m,ag.nodeName.toLowerCase())){if(!ac){ac=S(ag,m)}else{ac.appendChild(ag)}}else{ac=0}})}}}}if(ae.selector&&ae.inline&&!g(ae.inline,ad)){return}c.remove(ad,1)}function E(ac,ab,ad){if(ac){ab=ab?"nextSibling":"previousSibling";for(ac=ad?ac:ac[ab];ac;ac=ac[ab]){if(ac.nodeType==1||!f(ac)){return ac}}}}function K(ab){return ab&&ab.nodeType==1&&ab.getAttribute("data-mce-type")=="bookmark"}function u(af,ae){var ab,ad,ac;function ah(ak,aj){if(ak.nodeName!=aj.nodeName){return X}function ai(am){var an={};T(c.getAttribs(am),function(ao){var ap=ao.nodeName.toLowerCase();if(ap.indexOf("_")!==0&&ap!=="style"){an[ap]=c.getAttrib(am,ap)}});return an}function al(ap,ao){var an,am;for(am in ap){if(ap.hasOwnProperty(am)){an=ao[am];if(an===D){return X}if(ap[am]!=an){return X}delete ao[am]}}for(am in ao){if(ao.hasOwnProperty(am)){return X}}return C}if(!al(ai(ak),ai(aj))){return X}if(!al(c.parseStyle(c.getAttrib(ak,"style")),c.parseStyle(c.getAttrib(aj,"style")))){return X}return C}function ag(aj,ai){for(ad=aj;ad;ad=ad[ai]){if(ad.nodeType==3&&ad.nodeValue.length!==0){return aj}if(ad.nodeType==1&&!K(ad)){return ad}}return aj}if(af&&ae){af=ag(af,"previousSibling");ae=ag(ae,"nextSibling");if(ah(af,ae)){for(ad=af.nextSibling;ad&&ad!=ae;){ac=ad;ad=ad.nextSibling;af.appendChild(ac)}c.remove(ae);T(a.grep(ae.childNodes),function(ai){af.appendChild(ai)});return af}}return ae}function M(ac,ag){var ab,af,ad,ae;ab=ac[ag?"startContainer":"endContainer"];af=ac[ag?"startOffset":"endOffset"];if(ab.nodeType==1){ad=ab.childNodes.length-1;if(!ag&&af){af--}ab=ab.childNodes[af>ad?ad:af]}if(ab.nodeType===3&&ag&&af>=ab.nodeValue.length){ab=new t(ab,aa.getBody()).next()||ab}if(ab.nodeType===3&&!ag&&af===0){ab=new t(ab,aa.getBody()).prev()||ab}return ab}function U(ak,ab,ai){var al="_mce_caret",ac=aa.settings.caret_debug;function ad(ap){var ao=c.create("span",{id:al,"data-mce-bogus":true,style:ac?"color:red":""});if(ap){ao.appendChild(aa.getDoc().createTextNode(G))}return ao}function aj(ap,ao){while(ap){if((ap.nodeType===3&&ap.nodeValue!==G)||ap.childNodes.length>1){return false}if(ao&&ap.nodeType===1){ao.push(ap)}ap=ap.firstChild}return true}function ag(ao){while(ao){if(ao.id===al){return ao}ao=ao.parentNode}}function af(ao){var ap;if(ao){ap=new t(ao,ao);for(ao=ap.current();ao;ao=ap.next()){if(ao.nodeType===3){return ao}}}}function ae(aq,ap){var ar,ao;if(!aq){aq=ag(r.getStart());if(!aq){while(aq=c.get(al)){ae(aq,false)}}}else{ao=r.getRng(true);if(aj(aq)){if(ap!==false){ao.setStartBefore(aq);ao.setEndBefore(aq)}c.remove(aq)}else{ar=af(aq);if(ar.nodeValue.charAt(0)===G){ar=ar.deleteData(0,1)}c.remove(aq,1)}r.setRng(ao)}}function ah(){var aq,ao,av,au,ar,ap,at;aq=r.getRng(true);au=aq.startOffset;ap=aq.startContainer;at=ap.nodeValue;ao=ag(r.getStart());if(ao){av=af(ao)}if(at&&au>0&&au<at.length&&/\w/.test(at.charAt(au))&&/\w/.test(at.charAt(au-1))){ar=r.getBookmark();aq.collapse(true);aq=p(aq,V(ab));aq=N.split(aq);Y(ab,ai,aq);r.moveToBookmark(ar)}else{if(!ao||av.nodeValue!==G){ao=ad(true);av=ao.firstChild;aq.insertNode(ao);au=1;Y(ab,ai,ao)}else{Y(ab,ai,ao)}r.setCursorLocation(av,au)}}function am(){var ao=r.getRng(true),ap,at,aw,av,aq,az,ay=[],au,ax;ap=ao.startContainer;at=ao.startOffset;aq=ap;if(ap.nodeType==3){if(at!=ap.nodeValue.length||ap.nodeValue===G){av=true}aq=aq.parentNode}while(aq){if(y(aq,ab,ai)){az=aq;break}if(aq.nextSibling){av=true}ay.push(aq);aq=aq.parentNode}if(!az){return}if(av){aw=r.getBookmark();ao.collapse(true);ao=p(ao,V(ab),true);ao=N.split(ao);B(ab,ai,ao);r.moveToBookmark(aw)}else{ax=ad();aq=ax;for(au=ay.length-1;au>=0;au--){aq.appendChild(c.clone(ay[au],false));aq=aq.firstChild}aq.appendChild(c.doc.createTextNode(G));aq=aq.firstChild;var ar=c.getParent(az,I);if(ar&&c.isEmpty(ar)){az.parentNode.replaceChild(ax,az)}else{c.insertAfter(ax,az)}r.setCursorLocation(aq,1);if(c.isEmpty(az)){c.remove(az)}}}function an(){var ap,ao,aq;ao=ag(r.getStart());if(ao&&!c.isEmpty(ao)){a.walk(ao,function(ar){if(ar.nodeType==1&&ar.id!==al&&!c.isEmpty(ar)){c.setAttrib(ar,"data-mce-bogus",null)}},"childNodes")}}if(!self._hasCaretEvents){aa.onBeforeGetContent.addToTop(function(){var ao=[],ap;if(aj(ag(r.getStart()),ao)){ap=ao.length;while(ap--){c.setAttrib(ao[ap],"data-mce-bogus","1")}}});a.each("onMouseUp onKeyUp".split(" "),function(ao){aa[ao].addToTop(function(){ae();an()})});aa.onKeyDown.addToTop(function(ao,aq){var ap=aq.keyCode;if(ap==8||ap==37||ap==39){ae(ag(r.getStart()))}an()});r.onSetContent.add(an);self._hasCaretEvents=true}if(ak=="apply"){ah()}else{am()}}function R(ac){var ab=ac.startContainer,ai=ac.startOffset,ae,ah,ag,ad,af;if(ab.nodeType==3&&ai>=ab.nodeValue.length){ai=s(ab);ab=ab.parentNode;ae=true}if(ab.nodeType==1){ad=ab.childNodes;ab=ad[Math.min(ai,ad.length-1)];ah=new t(ab,c.getParent(ab,c.isBlock));if(ai>ad.length-1||ae){ah.next()}for(ag=ah.current();ag;ag=ah.next()){if(ag.nodeType==3&&!f(ag)){af=c.create("a",null,G);ag.parentNode.insertBefore(af,ag);ac.setStart(ag,0);r.setRng(ac);c.remove(af);return}}}}}})(tinymce);tinymce.onAddEditor.add(function(e,a){var d,h,g,c=a.settings;function b(j,i){e.each(i,function(l,k){if(l){g.setStyle(j,k,l)}});g.rename(j,"span")}function f(i,j){g=i.dom;if(c.convert_fonts_to_spans){e.each(g.select("font,u,strike",j.node),function(k){d[k.nodeName.toLowerCase()](a.dom,k)})}}if(c.inline_styles){h=e.explode(c.font_size_legacy_values);d={font:function(j,i){b(i,{backgroundColor:i.style.backgroundColor,color:i.color,fontFamily:i.face,fontSize:h[parseInt(i.size,10)-1]})},u:function(j,i){b(i,{textDecoration:"underline"})},strike:function(j,i){b(i,{textDecoration:"line-through"})}};a.onPreProcess.add(f);a.onSetContent.add(f);a.onInit.add(function(){a.selection.onSetContent.add(f)})}});(function(b){var a=b.dom.TreeWalker;b.EnterKey=function(f){var i=f.dom,e=f.selection,d=f.settings,h=f.undoManager,c=f.schema.getNonEmptyElements();function g(B){var v=e.getRng(true),G,j,A,u,p,M,C,o,k,n,t,J,x,D;function E(N){return N&&i.isBlock(N)&&!/^(TD|TH|CAPTION|FORM)$/.test(N.nodeName)&&!/^(fixed|absolute)/i.test(N.style.position)&&i.getContentEditable(N)!=="true"}function F(O){var N;if(b.isIE&&!b.isIE11&&i.isBlock(O)){N=e.getRng();O.appendChild(i.create("span",null,"\u00a0"));e.select(O);O.lastChild.outerHTML="";e.setRng(N)}}function z(P){var O=P,Q=[],N;while(O=O.firstChild){if(i.isBlock(O)){return}if(O.nodeType==1&&!c[O.nodeName.toLowerCase()]){Q.push(O)}}N=Q.length;while(N--){O=Q[N];if(!O.hasChildNodes()||(O.firstChild==O.lastChild&&O.firstChild.nodeValue==="")){i.remove(O)}else{if(O.nodeName=="A"&&(O.innerText||O.textContent)===" "){i.remove(O)}}}}function m(O){var T,R,N,U,S,Q=O,P;N=i.createRng();if(O.hasChildNodes()){T=new a(O,O);while(R=T.current()){if(R.nodeType==3){N.setStart(R,0);N.setEnd(R,0);break}if(c[R.nodeName.toLowerCase()]){N.setStartBefore(R);N.setEndBefore(R);break}Q=R;R=T.next()}if(!R){N.setStart(Q,0);N.setEnd(Q,0)}}else{if(O.nodeName=="BR"){if(O.nextSibling&&i.isBlock(O.nextSibling)){if(!M||M<9){P=i.create("br");O.parentNode.insertBefore(P,O)}N.setStartBefore(O);N.setEndBefore(O)}else{N.setStartAfter(O);N.setEndAfter(O)}}else{N.setStart(O,0);N.setEnd(O,0)}}e.setRng(N);i.remove(P);S=i.getViewPort(f.getWin());U=i.getPos(O).y;if(U<S.y||U+25>S.y+S.h){f.getWin().scrollTo(0,U<S.y?U:U-S.h+25)}}function r(O){var P=A,R,Q,N;R=O||t=="TABLE"?i.create(O||x):p.cloneNode(false);N=R;if(d.keep_styles!==false){do{if(/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(P.nodeName)){if(P.id=="_mce_caret"){continue}Q=P.cloneNode(false);i.setAttrib(Q,"id","");if(R.hasChildNodes()){Q.appendChild(R.firstChild);R.appendChild(Q)}else{N=Q;R.appendChild(Q)}}}while(P=P.parentNode)}if(!b.isIE||b.isIE11){N.innerHTML='<br data-mce-bogus="1">'}return R}function q(Q){var P,O,N;if(A.nodeType==3&&(Q?u>0:u<A.nodeValue.length)){return false}if(A.parentNode==p&&D&&!Q){return true}if(Q&&A.nodeType==1&&A==p.firstChild){return true}if(A.nodeName==="TABLE"||(A.previousSibling&&A.previousSibling.nodeName=="TABLE")){return(D&&!Q)||(!D&&Q)}P=new a(A,p);if(A.nodeType==3){if(Q&&u==0){P.prev()}else{if(!Q&&u==A.nodeValue.length){P.next()}}}while(O=P.current()){if(O.nodeType===1){if(!O.getAttribute("data-mce-bogus")){N=O.nodeName.toLowerCase();if(c[N]&&N!=="br"){return false}}}else{if(O.nodeType===3&&!/^[ \t\r\n]*$/.test(O.nodeValue)){return false}}if(Q){P.prev()}else{P.next()}}return true}function l(N,T){var U,S,P,R,Q,O=x||"P";S=i.getParent(N,i.isBlock);if(!S||!E(S)){S=S||j;if(!S.hasChildNodes()){U=i.create(O);S.appendChild(U);v.setStart(U,0);v.setEnd(U,0);return U}R=N;while(R.parentNode!=S){R=R.parentNode}while(R&&!i.isBlock(R)){P=R;R=R.previousSibling}if(P){U=i.create(O);P.parentNode.insertBefore(U,P);R=P;while(R&&!i.isBlock(R)){Q=R.nextSibling;U.appendChild(R);R=Q}v.setStart(N,T);v.setEnd(N,T)}}return N}function H(){function N(P){var O=n[P?"firstChild":"lastChild"];while(O){if(O.nodeType==1){break}O=O[P?"nextSibling":"previousSibling"]}return O===p}o=x?r(x):i.create("BR");if(N(true)&&N()){i.replace(o,n)}else{if(N(true)){n.parentNode.insertBefore(o,n)}else{if(N()){i.insertAfter(o,n);F(o)}else{G=v.cloneRange();G.setStartAfter(p);G.setEndAfter(n);k=G.extractContents();i.insertAfter(k,n);i.insertAfter(o,n)}}}i.remove(p);m(o);h.add()}function y(){var O=new a(A,p),N;while(N=O.next()){if(c[N.nodeName.toLowerCase()]||N.length>0){return true}}}function L(){var P,O,N;if(A&&A.nodeType==3&&u>=A.nodeValue.length){if((!b.isIE||b.isIE11)&&!y()){P=i.create("br");v.insertNode(P);v.setStartAfter(P);v.setEndAfter(P);O=true}}P=i.create("br");v.insertNode(P);if((b.isIE&&!b.isIE11)&&t=="PRE"&&(!M||M<8)){P.parentNode.insertBefore(i.doc.createTextNode("\r"),P)}N=i.create("span",{},"&nbsp;");P.parentNode.insertBefore(N,P);e.scrollIntoView(N);i.remove(N);if(!O){v.setStartAfter(P);v.setEndAfter(P)}else{v.setStartBefore(P);v.setEndBefore(P)}e.setRng(v);h.add()}function s(N){do{if(N.nodeType===3){N.nodeValue=N.nodeValue.replace(/^[\r\n]+/,"")}N=N.firstChild}while(N)}function K(P){var N=i.getRoot(),O,Q;O=P;while(O!==N&&i.getContentEditable(O)!=="false"){if(i.getContentEditable(O)==="true"){Q=O}O=O.parentNode}return O!==N?Q:N}function I(O){var N;if(!b.isIE||b.isIE11){O.normalize();N=O.lastChild;if(!N||(/^(left|right)$/gi.test(i.getStyle(N,"float",true)))){i.add(O,"br")}}}if(!v.collapsed){f.execCommand("Delete");return}if(B.isDefaultPrevented()){return}A=v.startContainer;u=v.startOffset;x=(d.force_p_newlines?"p":"")||d.forced_root_block;x=x?x.toUpperCase():"";M=i.doc.documentMode;C=B.shiftKey;if(A.nodeType==1&&A.hasChildNodes()){D=u>A.childNodes.length-1;A=A.childNodes[Math.min(u,A.childNodes.length-1)]||A;if(D&&A.nodeType==3){u=A.nodeValue.length}else{u=0}}j=K(A);if(!j){return}h.beforeChange();if(!i.isBlock(j)&&j!=i.getRoot()){if(!x||C){L()}return}if((x&&!C)||(!x&&C)){A=l(A,u)}p=i.getParent(A,i.isBlock);n=p?i.getParent(p.parentNode,i.isBlock):null;t=p?p.nodeName.toUpperCase():"";J=n?n.nodeName.toUpperCase():"";if(J=="LI"&&!B.ctrlKey){p=n;t=J}if(t=="LI"){if(!x&&C){L();return}if(i.isEmpty(p)){if(/^(UL|OL|LI)$/.test(n.parentNode.nodeName)){return false}H();return}}if(t=="PRE"&&d.br_in_pre!==false){if(!C){L();return}}else{if((!x&&!C&&t!="LI")||(x&&C)){L();return}}x=x||"P";if(q()){if(/^(H[1-6]|PRE)$/.test(t)&&J!="HGROUP"){o=r(x)}else{o=r()}if(d.end_container_on_empty_block&&E(n)&&i.isEmpty(p)){o=i.split(n,p)}else{i.insertAfter(o,p)}m(o)}else{if(q(true)){o=p.parentNode.insertBefore(r(),p);F(o)}else{G=v.cloneRange();G.setEndAfter(p);k=G.extractContents();s(k);o=k.firstChild;i.insertAfter(k,p);z(o);I(p);m(o)}}i.setAttrib(o,"id","");h.add()}f.onKeyDown.add(function(k,j){if(j.keyCode==13){if(g(j)!==false){j.preventDefault()}}})}})(tinymce); \ No newline at end of file
diff --git a/program/js/tiny_mce/tiny_mce_popup.js b/program/js/tiny_mce/tiny_mce_popup.js
index bb8e58c88..0808f8f9b 100644
--- a/program/js/tiny_mce/tiny_mce_popup.js
+++ b/program/js/tiny_mce/tiny_mce_popup.js
@@ -2,4 +2,4 @@
// Uncomment and change this document.domain value if you are loading the script cross subdomains
// document.domain = 'moxiecode.com';
-var tinymce=null,tinyMCEPopup,tinyMCE;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document,{ownEvents:true,proxy:tinyMCEPopup._eventProxy});b.dom.bind(window,"ready",b._onDOMLoaded,b);if(b.features.popup_css!==false){b.dom.loadCSS(b.features.popup_css||b.editor.settings.popup_css)}b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=!b.getWindowArg("mce_inline");b.id=b.getWindowArg("mce_window_id");b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return(!window.frameElement&&window.dialogArguments)||opener||parent||top},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var a=this;setTimeout(function(){var b=a.dom.getViewPort(window);a.editor.windowManager.resizeBy(a.getWindowArg("mce_width")-b.w,a.getWindowArg("mce_height")-b.h,a.id||window)},10)},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false&&b.editor.settings.language_load!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('<script type="text/javascript" src="'+tinymce._addVer(a)+'"><\/script>');tinymce.ScriptLoader.markDone(a)}}},pickColor:function(b,a){this.execCommand("mceColorPicker",true,{color:document.getElementById(a).value,func:function(e){document.getElementById(a).value=e;try{document.getElementById(a).onchange()}catch(d){}}})},openBrowser:function(a,c,b){tinyMCEPopup.restoreSelection();this.editor.execCallback("file_browser_callback",a,document.getElementById(a).value,c,window)},confirm:function(b,a,c){this.editor.windowManager.confirm(b,a,c,window)},alert:function(b,a,c){this.editor.windowManager.alert(b,a,c,window)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);tinymce=tinyMCE=a.editor=a.params=a.dom=a.dom.doc=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},_restoreSelection:function(){var a=window.event.srcElement;if(a.nodeName=="INPUT"&&(a.type=="submit"||a.type=="button")){tinyMCEPopup.restoreSelection()}},_onDOMLoaded:function(){var b=tinyMCEPopup,d=document.title,e,c,a;if(b.features.translate_i18n!==false){c=document.body.innerHTML;if(tinymce.isIE){c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')}document.dir=b.editor.getParam("directionality","");if((a=b.editor.translate(c))&&a!=c){document.body.innerHTML=a}if((a=b.editor.translate(d))&&a!=d){document.title=d=a}}if(!b.editor.getParam("browser_preferred_colors",false)||!b.isWindow){b.dom.addClass(document.body,"forceColors")}document.body.style.display="";if(tinymce.isIE){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}b.restoreSelection();b.resizeToInnerSize();if(!b.isWindow){b.editor.windowManager.setTitle(window,d)}else{window.focus()}if(!tinymce.isIE&&!b.isWindow){b.dom.bind(document,"focus",function(){b.editor.windowManager.focus(b.id)})}tinymce.each(b.dom.select("select"),function(f){f.onkeydown=tinyMCEPopup._accessHandler});tinymce.each(b.listeners,function(f){f.func.call(f.scope,b.editor)});if(b.getWindowArg("mce_auto_focus",true)){window.focus();tinymce.each(document.forms,function(g){tinymce.each(g.elements,function(f){if(b.dom.hasClass(f,"mceFocus")&&!f.disabled){f.focus();return false}})})}document.onkeyup=tinyMCEPopup._closeWinKeyHandler},_accessHandler:function(a){a=a||window.event;if(a.keyCode==13||a.keyCode==32){var b=a.target||a.srcElement;if(b.onchange){b.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_eventProxy:function(a){return function(b){tinyMCEPopup.dom.events.callNativeHandler(a,b)}}};tinyMCEPopup.init(); \ No newline at end of file
+var tinymce=null,tinyMCEPopup,tinyMCE;tinyMCEPopup={init:function(){var b=this,a,c;a=b.getWin();tinymce=a.tinymce;tinyMCE=a.tinyMCE;b.editor=tinymce.EditorManager.activeEditor;b.params=b.editor.windowManager.params;b.features=b.editor.windowManager.features;b.dom=b.editor.windowManager.createInstance("tinymce.dom.DOMUtils",document,{ownEvents:true,proxy:tinyMCEPopup._eventProxy});b.dom.bind(window,"ready",b._onDOMLoaded,b);if(b.features.popup_css!==false){b.dom.loadCSS(b.features.popup_css||b.editor.settings.popup_css)}b.listeners=[];b.onInit={add:function(e,d){b.listeners.push({func:e,scope:d})}};b.isWindow=!b.getWindowArg("mce_inline");b.id=b.getWindowArg("mce_window_id");b.editor.windowManager.onOpen.dispatch(b.editor.windowManager,window)},getWin:function(){return(!window.frameElement&&window.dialogArguments)||opener||parent||top},getWindowArg:function(c,b){var a=this.params[c];return tinymce.is(a)?a:b},getParam:function(b,a){return this.editor.getParam(b,a)},getLang:function(b,a){return this.editor.getLang(b,a)},execCommand:function(d,c,e,b){b=b||{};b.skip_focus=1;this.restoreSelection();return this.editor.execCommand(d,c,e,b)},resizeToInnerSize:function(){var a=this;setTimeout(function(){var b=a.dom.getViewPort(window);a.editor.windowManager.resizeBy(a.getWindowArg("mce_width")-b.w,a.getWindowArg("mce_height")-b.h,a.id||window)},10)},executeOnLoad:function(s){this.onInit.add(function(){eval(s)})},storeSelection:function(){this.editor.windowManager.bookmark=tinyMCEPopup.editor.selection.getBookmark(1)},restoreSelection:function(){var a=tinyMCEPopup;if(!a.isWindow&&tinymce.isIE){a.editor.selection.moveToBookmark(a.editor.windowManager.bookmark)}},requireLangPack:function(){var b=this,a=b.getWindowArg("plugin_url")||b.getWindowArg("theme_url");if(a&&b.editor.settings.language&&b.features.translate_i18n!==false&&b.editor.settings.language_load!==false){a+="/langs/"+b.editor.settings.language+"_dlg.js";if(!tinymce.ScriptLoader.isDone(a)){document.write('<script type="text/javascript" src="'+tinymce._addVer(a)+'"><\/script>');tinymce.ScriptLoader.markDone(a)}}},pickColor:function(b,a){this.execCommand("mceColorPicker",true,{color:document.getElementById(a).value,func:function(e){document.getElementById(a).value=e;try{document.getElementById(a).onchange()}catch(d){}}})},openBrowser:function(a,c,b){tinyMCEPopup.restoreSelection();this.editor.execCallback("file_browser_callback",a,document.getElementById(a).value,c,window)},confirm:function(b,a,c){this.editor.windowManager.confirm(b,a,c,window)},alert:function(b,a,c){this.editor.windowManager.alert(b,a,c,window)},close:function(){var a=this;function b(){a.editor.windowManager.close(window);tinymce=tinyMCE=a.editor=a.params=a.dom=a.dom.doc=null}if(tinymce.isOpera){a.getWin().setTimeout(b,0)}else{b()}},_restoreSelection:function(a){var a=(a&&a.target)||window.event.srcElement;if(a.nodeName=="INPUT"&&(a.type=="submit"||a.type=="button")){tinyMCEPopup.restoreSelection()}},_onDOMLoaded:function(){var b=tinyMCEPopup,d=document.title,e,c,a;if(b.features.translate_i18n!==false){c=document.body.innerHTML;if(tinymce.isIE){c=c.replace(/ (value|title|alt)=([^"][^\s>]+)/gi,' $1="$2"')}document.dir=b.editor.getParam("directionality","");if((a=b.editor.translate(c))&&a!=c){document.body.innerHTML=a}if((a=b.editor.translate(d))&&a!=d){document.title=d=a}}if(!b.editor.getParam("browser_preferred_colors",false)||!b.isWindow){b.dom.addClass(document.body,"forceColors")}document.body.style.display="";if(tinymce.isIE&&!tinymce.isIE11){document.attachEvent("onmouseup",tinyMCEPopup._restoreSelection);b.dom.add(b.dom.select("head")[0],"base",{target:"_self"})}else{if(tinymce.isIE11){document.addEventListener("mouseup",tinyMCEPopup._restoreSelection,false)}}b.restoreSelection();b.resizeToInnerSize();if(!b.isWindow){b.editor.windowManager.setTitle(window,d)}else{window.focus()}if(!tinymce.isIE&&!b.isWindow){b.dom.bind(document,"focus",function(){b.editor.windowManager.focus(b.id)})}tinymce.each(b.dom.select("select"),function(f){f.onkeydown=tinyMCEPopup._accessHandler});tinymce.each(b.listeners,function(f){f.func.call(f.scope,b.editor)});if(b.getWindowArg("mce_auto_focus",true)){window.focus();tinymce.each(document.forms,function(g){tinymce.each(g.elements,function(f){if(b.dom.hasClass(f,"mceFocus")&&!f.disabled){f.focus();return false}})})}document.onkeyup=tinyMCEPopup._closeWinKeyHandler},_accessHandler:function(a){a=a||window.event;if(a.keyCode==13||a.keyCode==32){var b=a.target||a.srcElement;if(b.onchange){b.onchange()}return tinymce.dom.Event.cancel(a)}},_closeWinKeyHandler:function(a){a=a||window.event;if(a.keyCode==27){tinyMCEPopup.close()}},_eventProxy:function(a){return function(b){tinyMCEPopup.dom.events.callNativeHandler(a,b)}}};tinyMCEPopup.init(); \ No newline at end of file
diff --git a/program/js/tiny_mce/tiny_mce_src.js b/program/js/tiny_mce/tiny_mce_src.js
index e38fb7efb..86b162b75 100644
--- a/program/js/tiny_mce/tiny_mce_src.js
+++ b/program/js/tiny_mce/tiny_mce_src.js
@@ -6,18 +6,20 @@
var tinymce = {
majorVersion : '3',
- minorVersion : '5.6',
+ minorVersion : '5.10',
- releaseDate : '2012-07-26',
+ releaseDate : '2013-10-24',
_init : function() {
var t = this, d = document, na = navigator, ua = na.userAgent, i, nl, n, base, p, v;
+ t.isIE11 = ua.indexOf('Trident/') != -1 && (ua.indexOf('rv:') != -1 || na.appName.indexOf('Netscape') != -1);
+
t.isOpera = win.opera && opera.buildNumber;
t.isWebKit = /WebKit/.test(ua);
- t.isIE = !t.isWebKit && !t.isOpera && (/MSIE/gi).test(ua) && (/Explorer/gi).test(na.appName);
+ t.isIE = !t.isWebKit && !t.isOpera && (/MSIE/gi).test(ua) && (/Explorer/gi).test(na.appName) || t.isIE11;
t.isIE6 = t.isIE && /MSIE [56]/.test(ua);
@@ -27,7 +29,7 @@
t.isIE9 = t.isIE && /MSIE [9]/.test(ua);
- t.isGecko = !t.isWebKit && /Gecko/.test(ua);
+ t.isGecko = !t.isWebKit && !t.isIE11 && /Gecko/.test(ua);
t.isMac = ua.indexOf('Mac') != -1;
@@ -107,12 +109,16 @@
if (!t)
return o !== undef;
- if (t == 'array' && (o.hasOwnProperty && o instanceof Array))
+ if (t == 'array' && tinymce.isArray(o))
return true;
return typeof(o) == t;
},
+ isArray: Array.isArray || function(obj) {
+ return Object.prototype.toString.call(obj) === "[object Array]";
+ },
+
makeMap : function(items, delim, map) {
var i;
@@ -921,7 +927,7 @@ tinymce.create('tinymce.util.Dispatcher', {
}
if (t == 'object') {
- if (o.hasOwnProperty && o instanceof Array) {
+ if (o.hasOwnProperty && Object.prototype.toString.call(o) === '[object Array]') {
for (i=0, v = '['; i<o.length; i++)
v += (i > 0 ? ',' : '') + serialize(o[i], quote);
@@ -1093,7 +1099,8 @@ tinymce.create('static tinymce.util.XHR', {
})(tinymce);
tinymce.util.Quirks = function(editor) {
- var VK = tinymce.VK, BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE, dom = editor.dom, selection = editor.selection, settings = editor.settings;
+ var VK = tinymce.VK, BACKSPACE = VK.BACKSPACE, DELETE = VK.DELETE, dom = editor.dom, selection = editor.selection,
+ settings = editor.settings, parser = editor.parser, serializer = editor.serializer, each = tinymce.each;
function setEditorCommandState(cmd, state) {
try {
@@ -1109,56 +1116,81 @@ tinymce.util.Quirks = function(editor) {
return documentMode ? documentMode : 6;
};
+ function isDefaultPrevented(e) {
+ return e.isDefaultPrevented();
+ };
+
function cleanupStylesWhenDeleting() {
function removeMergedFormatSpans(isDelete) {
- var rng, blockElm, node, clonedSpan;
+ var rng, blockElm, wrapperElm, bookmark, container, offset, elm;
+
+ function isAtStartOrEndOfElm() {
+ if (container.nodeType == 3) {
+ if (isDelete && offset == container.length) {
+ return true;
+ }
+
+ if (!isDelete && offset === 0) {
+ return true;
+ }
+ }
+ }
rng = selection.getRng();
+ var tmpRng = [rng.startContainer, rng.startOffset, rng.endContainer, rng.endOffset];
+
+ if (!rng.collapsed) {
+ isDelete = true;
+ }
- // Find root block
- blockElm = dom.getParent(rng.startContainer, dom.isBlock);
+ container = rng[(isDelete ? 'start' : 'end') + 'Container'];
+ offset = rng[(isDelete ? 'start' : 'end') + 'Offset'];
- // On delete clone the root span of the next block element
- if (isDelete)
- blockElm = dom.getNext(blockElm, dom.isBlock);
+ if (container.nodeType == 3) {
+ blockElm = dom.getParent(rng.startContainer, dom.isBlock);
- // Locate root span element and clone it since it would otherwise get merged by the "apple-style-span" on delete/backspace
- if (blockElm) {
- node = blockElm.firstChild;
+ // On delete clone the root span of the next block element
+ if (isDelete) {
+ blockElm = dom.getNext(blockElm, dom.isBlock);
+ }
- // Ignore empty text nodes
- while (node && node.nodeType == 3 && node.nodeValue.length === 0)
- node = node.nextSibling;
+ if (blockElm && (isAtStartOrEndOfElm() || !rng.collapsed)) {
+ // Wrap children of block in a EM and let WebKit stick is
+ // runtime styles junk into that EM
+ wrapperElm = dom.create('em', {'id': '__mceDel'});
+
+ each(tinymce.grep(blockElm.childNodes), function(node) {
+ wrapperElm.appendChild(node);
+ });
- if (node && node.nodeName === 'SPAN') {
- clonedSpan = node.cloneNode(false);
+ blockElm.appendChild(wrapperElm);
}
}
// Do the backspace/delete action
+ rng = dom.createRng();
+ rng.setStart(tmpRng[0], tmpRng[1]);
+ rng.setEnd(tmpRng[2], tmpRng[3]);
+ selection.setRng(rng);
editor.getDoc().execCommand(isDelete ? 'ForwardDelete' : 'Delete', false, null);
- // Find all odd apple-style-spans
- blockElm = dom.getParent(rng.startContainer, dom.isBlock);
- tinymce.each(dom.select('span.Apple-style-span,font.Apple-style-span', blockElm), function(span) {
- var bm = selection.getBookmark();
+ // Remove temp wrapper element
+ if (wrapperElm) {
+ bookmark = selection.getBookmark();
- if (clonedSpan) {
- dom.replace(clonedSpan.cloneNode(false), span, true);
- } else {
- dom.remove(span, true);
+ while (elm = dom.get('__mceDel')) {
+ dom.remove(elm, true);
}
- // Restore the selection
- selection.moveToBookmark(bm);
- });
- };
+ selection.moveToBookmark(bookmark);
+ }
+ }
editor.onKeyDown.add(function(editor, e) {
var isDelete;
isDelete = e.keyCode == DELETE;
- if (!e.isDefaultPrevented() && (isDelete || e.keyCode == BACKSPACE) && !VK.modifierPressed(e)) {
+ if (!isDefaultPrevented(e) && (isDelete || e.keyCode == BACKSPACE) && !VK.modifierPressed(e)) {
e.preventDefault();
removeMergedFormatSpans(isDelete);
}
@@ -1189,7 +1221,7 @@ tinymce.util.Quirks = function(editor) {
var keyCode = e.keyCode, isCollapsed;
// Empty the editor if it's needed for example backspace at <p><b>|</b></p>
- if (!e.isDefaultPrevented() && (keyCode == DELETE || keyCode == BACKSPACE)) {
+ if (!isDefaultPrevented(e) && (keyCode == DELETE || keyCode == BACKSPACE)) {
isCollapsed = editor.selection.isCollapsed();
// Selection is collapsed but the editor isn't empty
@@ -1217,7 +1249,7 @@ tinymce.util.Quirks = function(editor) {
function selectAll() {
editor.onKeyDown.add(function(editor, e) {
- if (e.keyCode == 65 && VK.metaKeyPressed(e)) {
+ if (!isDefaultPrevented(e) && e.keyCode == 65 && VK.metaKeyPressed(e)) {
e.preventDefault();
editor.execCommand('SelectAll');
}
@@ -1243,7 +1275,7 @@ tinymce.util.Quirks = function(editor) {
function removeHrOnBackspace() {
editor.onKeyDown.add(function(editor, e) {
- if (!e.isDefaultPrevented() && e.keyCode === BACKSPACE) {
+ if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {
if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {
var node = selection.getNode();
var previousSibling = node.previousSibling;
@@ -1262,7 +1294,7 @@ tinymce.util.Quirks = function(editor) {
// wouldn't get proper focus if the user clicked on the HTML element
if (!Range.prototype.getClientRects) { // Detect getClientRects got introduced in FF 4
editor.onMouseDown.add(function(editor, e) {
- if (e.target.nodeName === "HTML") {
+ if (!isDefaultPrevented(e) && e.target.nodeName === "HTML") {
var body = editor.getBody();
// Blur the body it's focused but not correctly focused
@@ -1306,7 +1338,7 @@ tinymce.util.Quirks = function(editor) {
if (target !== editor.getBody()) {
dom.setAttrib(target, "style", null);
- tinymce.each(template, function(attr) {
+ each(template, function(attr) {
target.setAttributeNode(attr.cloneNode(true));
});
}
@@ -1325,7 +1357,7 @@ tinymce.util.Quirks = function(editor) {
editor.onKeyPress.add(function(editor, e) {
var applyAttributes;
- if ((e.keyCode == 8 || e.keyCode == 46) && isSelectionAcrossElements()) {
+ if (!isDefaultPrevented(e) && (e.keyCode == 8 || e.keyCode == 46) && isSelectionAcrossElements()) {
applyAttributes = getAttributeApplyFunction();
editor.getDoc().execCommand('delete', false, null);
applyAttributes();
@@ -1337,7 +1369,7 @@ tinymce.util.Quirks = function(editor) {
dom.bind(editor.getDoc(), 'cut', function(e) {
var applyAttributes;
- if (isSelectionAcrossElements()) {
+ if (!isDefaultPrevented(e) && isSelectionAcrossElements()) {
applyAttributes = getAttributeApplyFunction();
editor.onKeyUp.addToTop(blockEvent);
@@ -1376,7 +1408,7 @@ tinymce.util.Quirks = function(editor) {
function disableBackspaceIntoATable() {
editor.onKeyDown.add(function(editor, e) {
- if (!e.isDefaultPrevented() && e.keyCode === BACKSPACE) {
+ if (!isDefaultPrevented(e) && e.keyCode === BACKSPACE) {
if (selection.isCollapsed() && selection.getRng(true).startOffset === 0) {
var previousSibling = selection.getNode().previousSibling;
if (previousSibling && previousSibling.nodeName && previousSibling.nodeName.toLowerCase() === "table") {
@@ -1400,7 +1432,7 @@ tinymce.util.Quirks = function(editor) {
dom.addClass(editor.getBody(), 'mceHideBrInPre');
// Adds a \n before all BR elements in PRE to get them visual
- editor.parser.addNodeFilter('pre', function(nodes, name) {
+ parser.addNodeFilter('pre', function(nodes, name) {
var i = nodes.length, brNodes, j, brElm, sibling;
while (i--) {
@@ -1421,7 +1453,7 @@ tinymce.util.Quirks = function(editor) {
});
// Removes any \n before BR elements in PRE since other browsers and in contentEditable=false mode they will be visible
- editor.serializer.addNodeFilter('pre', function(nodes, name) {
+ serializer.addNodeFilter('pre', function(nodes, name) {
var i = nodes.length, brNodes, j, brElm, sibling;
while (i--) {
@@ -1464,7 +1496,7 @@ tinymce.util.Quirks = function(editor) {
var isDelete, rng, container, offset, brElm, sibling, collapsed;
isDelete = e.keyCode == DELETE;
- if (!e.isDefaultPrevented() && (isDelete || e.keyCode == BACKSPACE) && !VK.modifierPressed(e)) {
+ if (!isDefaultPrevented(e) && (isDelete || e.keyCode == BACKSPACE) && !VK.modifierPressed(e)) {
rng = selection.getRng();
container = rng.startContainer;
offset = rng.startOffset;
@@ -1473,6 +1505,12 @@ tinymce.util.Quirks = function(editor) {
// Override delete if the start container is a text node and is at the beginning of text or
// just before/after the last character to be deleted in collapsed mode
if (container.nodeType == 3 && container.nodeValue.length > 0 && ((offset === 0 && !collapsed) || (collapsed && offset === (isDelete ? 0 : 1)))) {
+ // Edge case when deleting <p><b><img> |x</b></p>
+ sibling = container.previousSibling;
+ if (sibling && sibling.nodeName == "IMG") {
+ return;
+ }
+
nonEmptyElements = editor.schema.getNonEmptyElements();
// Prevent default logic since it's broken
@@ -1504,7 +1542,7 @@ tinymce.util.Quirks = function(editor) {
editor.onKeyDown.add(function(editor, e) {
var rng, container, offset, root, parent;
- if (e.isDefaultPrevented() || e.keyCode != VK.BACKSPACE) {
+ if (isDefaultPrevented(e) || e.keyCode != VK.BACKSPACE) {
return;
}
@@ -1528,10 +1566,10 @@ tinymce.util.Quirks = function(editor) {
editor.formatter.toggle('blockquote', null, parent);
// Move the caret to the beginning of container
+ rng = dom.createRng();
rng.setStart(container, 0);
rng.setEnd(container, 0);
selection.setRng(rng);
- selection.collapse(false);
}
});
};
@@ -1556,7 +1594,7 @@ tinymce.util.Quirks = function(editor) {
function addBrAfterLastLinks() {
function fixLinks(editor, o) {
- tinymce.each(dom.select('a'), function(node) {
+ each(dom.select('a'), function(node) {
var parentNode = node.parentNode, root = dom.getRoot();
if (parentNode.lastChild === node) {
@@ -1606,7 +1644,7 @@ tinymce.util.Quirks = function(editor) {
editor.onKeyDown.add(function(editor, e) {
var rng;
- if (!e.isDefaultPrevented() && e.keyCode == BACKSPACE) {
+ if (!isDefaultPrevented(e) && e.keyCode == BACKSPACE) {
rng = editor.getDoc().selection.createRange();
if (rng && rng.item) {
e.preventDefault();
@@ -1624,7 +1662,7 @@ tinymce.util.Quirks = function(editor) {
// IE10+
if (getDocumentMode() >= 10) {
emptyBlocksCSS = '';
- tinymce.each('p div h1 h2 h3 h4 h5 h6'.split(' '), function(name, i) {
+ each('p div h1 h2 h3 h4 h5 h6'.split(' '), function(name, i) {
emptyBlocksCSS += (i > 0 ? ',' : '') + name + ':empty';
});
@@ -1741,7 +1779,7 @@ tinymce.util.Quirks = function(editor) {
width = height = 0;
}
- tinymce.each(resizeHandles, function(handle, name) {
+ each(resizeHandles, function(handle, name) {
var handleElm;
// Get existing or render resize handle
@@ -1838,7 +1876,7 @@ tinymce.util.Quirks = function(editor) {
var controlElm = dom.getParent(selection.getNode(), 'table,img');
// Remove data-mce-selected from all elements since they might have been copied using Ctrl+c/v
- tinymce.each(dom.select('img[data-mce-selected]'), function(img) {
+ each(dom.select('img[data-mce-selected]'), function(img) {
img.removeAttribute('data-mce-selected');
});
@@ -1865,6 +1903,57 @@ tinymce.util.Quirks = function(editor) {
});
}
+ function keepNoScriptContents() {
+ if (getDocumentMode() < 9) {
+ parser.addNodeFilter('noscript', function(nodes) {
+ var i = nodes.length, node, textNode;
+
+ while (i--) {
+ node = nodes[i];
+ textNode = node.firstChild;
+
+ if (textNode) {
+ node.attr('data-mce-innertext', textNode.value);
+ }
+ }
+ });
+
+ serializer.addNodeFilter('noscript', function(nodes) {
+ var i = nodes.length, node, textNode, value;
+
+ while (i--) {
+ node = nodes[i];
+ textNode = nodes[i].firstChild;
+
+ if (textNode) {
+ textNode.value = tinymce.html.Entities.decode(textNode.value);
+ } else {
+ // Old IE can't retain noscript value so an attribute is used to store it
+ value = node.attributes.map['data-mce-innertext'];
+ if (value) {
+ node.attr('data-mce-innertext', null);
+ textNode = new tinymce.html.Node('#text', 3);
+ textNode.value = value;
+ textNode.raw = true;
+ node.append(textNode);
+ }
+ }
+ }
+ });
+ }
+ }
+
+ function bodyHeight() {
+ editor.contentStyles.push('body {min-height: 100px}');
+ editor.onClick.add(function(ed, e) {
+ if (e.target.nodeName == 'HTML') {
+ editor.execCommand('SelectAll');
+ editor.selection.collapse(true);
+ editor.nodeChanged();
+ }
+ });
+ }
+
// All browsers
disableBackspaceIntoATable();
removeBlockQuoteOnBackSpace();
@@ -1888,17 +1977,23 @@ tinymce.util.Quirks = function(editor) {
}
// IE
- if (tinymce.isIE) {
+ if (tinymce.isIE && !tinymce.isIE11) {
removeHrOnBackspace();
ensureBodyHasRoleApplication();
addNewLinesBeforeBrInPre();
removePreSerializedStylesWhenSelectingControls();
deleteControlItemOnBackSpace();
renderEmptyBlocksFix();
+ keepNoScriptContents();
+ }
+
+ // IE 11+
+ if (tinymce.isIE11) {
+ bodyHeight();
}
// Gecko
- if (tinymce.isGecko) {
+ if (tinymce.isGecko && !tinymce.isIE11) {
removeHrOnBackspace();
focusBody();
removeStylesWhenDeletingAccrossBlockElements();
@@ -2135,6 +2230,12 @@ tinymce.html.Styles = function(settings, schema) {
function compress(prefix, suffix) {
var top, right, bottom, left;
+ // IE 11 will produce a border-image: none when getting the style attribute from <p style="border: 1px solid red"></p>
+ // So lets asume it shouldn't be there
+ if (styles['border-image'] === 'none') {
+ delete styles['border-image'];
+ }
+
// Get values and check it it needs compressing
top = styles[prefix + '-top' + suffix];
if (!top)
@@ -2449,7 +2550,7 @@ tinymce.html.Styles = function(settings, schema) {
'form[A|accept-charset|action|autocomplete|enctype|method|name|novalidate|target][C]' +
'fieldset[A|disabled|form|name][C|legend]' +
'label[A|form|for][B]' +
- 'input[A|type|accept|alt|autocomplete|checked|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|height|list|max|maxlength|min|' +
+ 'input[A|type|accept|alt|autocomplete|autofocus|checked|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|height|list|max|maxlength|min|' +
'multiple|pattern|placeholder|readonly|required|size|src|step|width|files|value|name][]' +
'button[A|autofocus|disabled|form|formaction|formenctype|formmethod|formnovalidate|formtarget|name|value|type][B]' +
'select[A|autofocus|disabled|form|multiple|name|size][option|optgroup]' +
@@ -2653,14 +2754,15 @@ tinymce.html.Styles = function(settings, schema) {
}
// Setup map objects
- whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script style textarea');
+ whiteSpaceElementsMap = createLookupTable('whitespace_elements', 'pre script noscript style textarea');
selfClosingElementsMap = createLookupTable('self_closing_elements', 'colgroup dd dt li option p td tfoot th thead tr');
shortEndedElementsMap = createLookupTable('short_ended_elements', 'area base basefont br col frame hr img input isindex link meta param embed source wbr');
boolAttrMap = createLookupTable('boolean_attributes', 'checked compact declare defer disabled ismap multiple nohref noresize noshade nowrap readonly selected autoplay loop controls');
- nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object', shortEndedElementsMap);
- blockElementsMap = createLookupTable('block_elements', 'h1 h2 h3 h4 h5 h6 hr p div address pre form table tbody thead tfoot ' +
- 'th tr td li ol ul caption blockquote center dl dt dd dir fieldset ' +
- 'noscript menu isindex samp header footer article section hgroup aside nav figure option datalist select optgroup');
+ nonEmptyElementsMap = createLookupTable('non_empty_elements', 'td th iframe video audio object script', shortEndedElementsMap);
+ textBlockElementsMap = createLookupTable('text_block_elements', 'h1 h2 h3 h4 h5 h6 p div address pre form ' +
+ 'blockquote center dir fieldset header footer article section hgroup aside nav figure');
+ blockElementsMap = createLookupTable('block_elements', 'hr table tbody thead tfoot ' +
+ 'th tr td li ol ul caption dl dt dd noscript menu isindex samp option datalist select optgroup', textBlockElementsMap);
// Converts a wildcard expression string to a regexp for example *a will become /.*a/.
function patternToRegExp(str) {
@@ -2834,8 +2936,15 @@ tinymce.html.Styles = function(settings, schema) {
customElementsMap[name] = cloneName;
// If it's not marked as inline then add it to valid block elements
- if (!inline)
+ if (!inline) {
+ blockElementsMap[name.toUpperCase()] = {};
blockElementsMap[name] = {};
+ }
+
+ // Add elements clone if needed
+ if (!elements[name]) {
+ elements[name] = elements[cloneName];
+ }
// Add custom elements at span/div positions
each(children, function(element, child) {
@@ -2960,6 +3069,10 @@ tinymce.html.Styles = function(settings, schema) {
return blockElementsMap;
};
+ self.getTextBlockElements = function() {
+ return textBlockElementsMap;
+ };
+
self.getShortEndedElements = function() {
return shortEndedElementsMap;
};
@@ -3025,6 +3138,8 @@ tinymce.html.Styles = function(settings, schema) {
self.addCustomElements = addCustomElements;
self.addValidChildren = addValidChildren;
+
+ self.elements = elements;
};
})(tinymce);
@@ -3123,10 +3238,10 @@ tinymce.html.Styles = function(settings, schema) {
'(?:!DOCTYPE([\\w\\W]*?)>)|' + // DOCTYPE
'(?:\\?([^\\s\\/<>]+) ?([\\w\\W]*?)[?/]>)|' + // PI
'(?:\\/([^>]+)>)|' + // End element
- '(?:([A-Za-z0-9\\-\\:]+)((?:\\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\\/|\\s+)>)' + // Start element
+ '(?:([A-Za-z0-9\\-\\:\\.]+)((?:\\s+[^"\'>]+(?:(?:"[^"]*")|(?:\'[^\']*\')|[^>]*))*|\\/|\\s+)>)' + // Start element
')', 'g');
- attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:\\.|[^\"])*)\")|(?:\'((?:\\.|[^\'])*)\')|([^>\s]+)))?/g;
+ attrRegExp = /([\w:\-]+)(?:\s*=\s*(?:(?:\"((?:[^\"])*)\")|(?:\'((?:[^\'])*)\')|([^>\s]+)))?/g;
specialElements = {
'script' : /<\/script[^>]*>/gi,
'style' : /<\/style[^>]*>/gi,
@@ -3609,7 +3724,7 @@ tinymce.html.Styles = function(settings, schema) {
i = node.attributes.length;
while (i--) {
name = node.attributes[i].name;
- if (name === "name" || name.indexOf('data-') === 0)
+ if (name === "name" || name.indexOf('data-mce-') === 0)
return false;
}
}
@@ -3665,17 +3780,40 @@ tinymce.html.Styles = function(settings, schema) {
function fixInvalidChildren(nodes) {
var ni, node, parent, parents, newParent, currentNode, tempNode, childNode, i,
- childClone, nonEmptyElements, nonSplitableElements, sibling, nextNode;
+ childClone, nonEmptyElements, nonSplitableElements, textBlockElements, sibling, nextNode;
nonSplitableElements = tinymce.makeMap('tr,td,th,tbody,thead,tfoot,table');
nonEmptyElements = schema.getNonEmptyElements();
+ textBlockElements = schema.getTextBlockElements();
for (ni = 0; ni < nodes.length; ni++) {
node = nodes[ni];
- // Already removed
- if (!node.parent)
+ // Already removed or fixed
+ if (!node.parent || node.fixed)
+ continue;
+
+ // If the invalid element is a text block and the text block is within a parent LI element
+ // Then unwrap the first text block and convert other sibling text blocks to LI elements similar to Word/Open Office
+ if (textBlockElements[node.name] && node.parent.name == 'li') {
+ // Move sibling text blocks after LI element
+ sibling = node.next;
+ while (sibling) {
+ if (textBlockElements[sibling.name]) {
+ sibling.name = 'li';
+ sibling.fixed = true;
+ node.parent.insert(sibling, node.parent);
+ } else {
+ break;
+ }
+
+ sibling = sibling.next;
+ }
+
+ // Unwrap current text block
+ node.unwrap(node);
continue;
+ }
// Get list of all parent nodes until we find a valid parent to stick the child into
parents = [node];
@@ -4054,7 +4192,8 @@ tinymce.html.Styles = function(settings, schema) {
}
// Trim start white space
- textNode = node.prev;
+ // Removed due to: #5424
+ /*textNode = node.prev;
if (textNode && textNode.type === 3) {
text = textNode.value.replace(startWhiteSpaceRegExp, '');
@@ -4062,7 +4201,7 @@ tinymce.html.Styles = function(settings, schema) {
textNode.value = text;
else
textNode.remove();
- }
+ }*/
}
// Check if we exited a whitespace preserved element
@@ -4572,6 +4711,12 @@ tinymce.dom = {};
}
}
+ // Page already loaded then fire it directly
+ if (doc.readyState == "complete") {
+ readyHandler();
+ return;
+ }
+
// Use W3C method
if (w3cEventModel) {
addEvent(win, 'DOMContentLoaded', readyHandler);
@@ -5115,6 +5260,11 @@ tinymce.dom.TreeWalker = function(start_node, root_node) {
blockElementsMap = s.schema ? s.schema.getBlockElements() : {};
t.isBlock = function(node) {
+ // Fix for #5446
+ if (!node) {
+ return false;
+ }
+
// This function is called in module pattern style since it might be executed with the wrong this scope
var type = node.nodeType;
@@ -5129,7 +5279,7 @@ tinymce.dom.TreeWalker = function(start_node, root_node) {
fixDoc: function(doc) {
var settings = this.settings, name;
- if (isIE && settings.schema) {
+ if (isIE && !tinymce.isIE11 && settings.schema) {
// Add missing HTML 4/5 elements to IE
('abbr article aside audio canvas ' +
'details figcaption figure footer ' +
@@ -5150,7 +5300,7 @@ tinymce.dom.TreeWalker = function(start_node, root_node) {
var self = this, clone, doc;
// TODO: Add feature detection here in the future
- if (!isIE || node.nodeType !== 1 || deep) {
+ if (!isIE || tinymce.isIE11 || node.nodeType !== 1 || deep) {
return node.cloneNode(deep);
}
@@ -5423,7 +5573,7 @@ tinymce.dom.TreeWalker = function(start_node, root_node) {
switch (na) {
case 'opacity':
// IE specific opacity
- if (isIE) {
+ if (isIE && ! tinymce.isIE11) {
s.filter = v === '' ? '' : "alpha(opacity=" + (v * 100) + ")";
if (!n.currentStyle || !n.currentStyle.hasLayout)
@@ -5435,7 +5585,7 @@ tinymce.dom.TreeWalker = function(start_node, root_node) {
break;
case 'float':
- isIE ? s.styleFloat = v : s.cssFloat = v;
+ (isIE && ! tinymce.isIE11) ? s.styleFloat = v : s.cssFloat = v;
break;
default:
@@ -5801,7 +5951,7 @@ tinymce.dom.TreeWalker = function(start_node, root_node) {
// IE 8 has a bug where dynamically loading stylesheets would produce a 1 item remaining bug
// This fix seems to resolve that issue by realcing the document ones a stylesheet finishes loading
// It's ugly but it seems to work fine.
- if (isIE && d.documentMode && d.recalc) {
+ if (isIE && !tinymce.isIE11 && d.documentMode && d.recalc) {
link.onload = function() {
if (d.recalc)
d.recalc();
@@ -6120,7 +6270,12 @@ tinymce.dom.TreeWalker = function(start_node, root_node) {
// Import
case 3:
- addClasses(r.styleSheet);
+ try {
+ addClasses(r.styleSheet);
+ } catch (ex) {
+ // Ignore
+ }
+
break;
}
});
@@ -9222,7 +9377,7 @@ window.tinymce.dom.Sizzle = Sizzle;
if (!t.win.getSelection)
t.tridentSel = new tinymce.dom.TridentSelection(t);
- if (tinymce.isIE && dom.boxModel)
+ if (tinymce.isIE && ! tinymce.isIE11 && dom.boxModel)
this._fixIESelection();
// Prevent leaks
@@ -9514,8 +9669,20 @@ window.tinymce.dom.Sizzle = Sizzle;
}
// Handle simple range
- if (type)
- return {rng : t.getRng()};
+ if (type) {
+ rng = t.getRng();
+
+ if (rng.setStart) {
+ rng = {
+ startContainer: rng.startContainer,
+ startOffset: rng.startOffset,
+ endContainer: rng.endContainer,
+ endOffset: rng.endOffset
+ };
+ }
+
+ return {rng : rng};
+ }
rng = t.getRng();
id = dom.uniqueId();
@@ -9581,7 +9748,7 @@ window.tinymce.dom.Sizzle = Sizzle;
},
moveToBookmark : function(bookmark) {
- var t = this, dom = t.dom, marker1, marker2, rng, root, startContainer, endContainer, startOffset, endOffset;
+ var t = this, dom = t.dom, marker1, marker2, rng, rng2, root, startContainer, endContainer, startOffset, endOffset;
function setEndPoint(start) {
var point = bookmark[start ? 'start' : 'end'], i, node, offset, children;
@@ -9711,8 +9878,24 @@ window.tinymce.dom.Sizzle = Sizzle;
}
} else if (bookmark.name) {
t.select(dom.select(bookmark.name)[bookmark.index]);
- } else if (bookmark.rng)
- t.setRng(bookmark.rng);
+ } else if (bookmark.rng) {
+ rng = bookmark.rng;
+
+ if (rng.startContainer) {
+ rng2 = t.dom.createRng();
+
+ try {
+ rng2.setStart(rng.startContainer, rng.startOffset);
+ rng2.setEnd(rng.endContainer, rng.endOffset);
+ } catch (e) {
+ // Might fail with index error
+ }
+
+ rng = rng2;
+ }
+
+ t.setRng(rng);
+ }
}
},
@@ -9811,7 +9994,7 @@ window.tinymce.dom.Sizzle = Sizzle;
}
// We have W3C ranges and it's IE then fake control selection since IE9 doesn't handle that correctly yet
- if (tinymce.isIE && rng && rng.setStart && doc.selection.createRange().item) {
+ if (tinymce.isIE && ! tinymce.isIE11 && rng && rng.setStart && doc.selection.createRange().item) {
elm = doc.selection.createRange().item(0);
rng = doc.createRange();
rng.setStartBefore(elm);
@@ -10224,6 +10407,16 @@ window.tinymce.dom.Sizzle = Sizzle;
return self;
},
+ scrollIntoView: function(elm) {
+ var y, viewPort, self = this, dom = self.dom;
+
+ viewPort = dom.getViewPort(self.editor.getWin());
+ y = dom.getPos(elm).y;
+ if (y < viewPort.y || y + 25 > viewPort.y + viewPort.h) {
+ self.editor.getWin().scrollTo(0, y < viewPort.y ? y : y - viewPort.h + 25);
+ }
+ },
+
destroy : function(manual) {
var self = this;
@@ -10396,6 +10589,18 @@ window.tinymce.dom.Sizzle = Sizzle;
}
});
+ htmlParser.addNodeFilter('noscript', function(nodes) {
+ var i = nodes.length, node;
+
+ while (i--) {
+ node = nodes[i].firstChild;
+
+ if (node) {
+ node.value = tinymce.html.Entities.decode(node.value);
+ }
+ }
+ });
+
// Force script into CDATA sections and remove the mce- prefix also add comments around styles
htmlParser.addNodeFilter('script,style', function(nodes, name) {
var i = nodes.length, node, value;
@@ -10654,7 +10859,7 @@ window.tinymce.dom.Sizzle = Sizzle;
// Add onload listener for non IE browsers since IE9
// fires onload event before the script is parsed and executed
- if (!tinymce.isIE)
+ if (!tinymce.isIE || tinymce.isIE11)
elm.onload = done;
// Add onerror event will get fired on some browsers but not all of them
@@ -11067,18 +11272,22 @@ window.tinymce.dom.Sizzle = Sizzle;
switch (evt.keyCode) {
case DOM_VK_LEFT:
if (enableLeftRight) t.moveFocus(-1);
+ Event.cancel(evt);
break;
case DOM_VK_RIGHT:
if (enableLeftRight) t.moveFocus(1);
+ Event.cancel(evt);
break;
case DOM_VK_UP:
if (enableUpDown) t.moveFocus(-1);
+ Event.cancel(evt);
break;
case DOM_VK_DOWN:
if (enableUpDown) t.moveFocus(1);
+ Event.cancel(evt);
break;
case DOM_VK_ESCAPE:
@@ -11775,7 +11984,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
else
h += '<span class="mceIcon ' + s['class'] + '"></span>' + (l ? '<span class="' + cp + 'Label">' + l + '</span>' : '');
- h += '<span class="mceVoiceLabel mceIconOnly" style="display: none;" id="' + this.id + '_voice">' + s.title + '</span>';
+ h += '<span class="mceVoiceLabel mceIconOnly" style="display: none;" id="' + this.id + '_voice">' + s.title + '</span>';
h += '</a>';
return h;
},
@@ -11800,9 +12009,11 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
return s.onclick.call(s.scope, e);
}
});
- tinymce.dom.Event.add(t.id, 'keyup', function(e) {
- if (!t.isDisabled() && e.keyCode==tinymce.VK.SPACEBAR)
+ tinymce.dom.Event.add(t.id, 'keydown', function(e) {
+ if (!t.isDisabled() && e.keyCode==tinymce.VK.SPACEBAR) {
+ tinymce.dom.Event.cancel(e);
return s.onclick.call(s.scope, e);
+ }
});
}
});
@@ -12215,7 +12426,7 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
// Accessibility keyhandler
Event.add(t.id, 'keydown', function(e) {
- var bf;
+ var bf, DOM_VK_LEFT = 37, DOM_VK_RIGHT = 39, DOM_VK_UP = 38, DOM_VK_DOWN = 40, DOM_VK_RETURN = 13, DOM_VK_SPACE = 32;
Event.remove(t.id, 'change', ch);
changeListenerAdded = false;
@@ -12227,14 +12438,12 @@ tinymce.create('tinymce.ui.Separator:tinymce.ui.Control', {
Event.remove(t.id, 'blur', bf);
});
- //prevent default left and right keys on chrome - so that the keyboard navigation is used.
- if (tinymce.isWebKit && (e.keyCode==37 ||e.keyCode==39)) {
- return Event.prevent(e);
- }
-
- if (e.keyCode == 13 || e.keyCode == 32) {
+ if (e.keyCode == DOM_VK_RETURN || e.keyCode == DOM_VK_SPACE) {
onChange(e);
return Event.cancel(e);
+ } else if (e.keyCode == DOM_VK_DOWN || e.keyCode == DOM_VK_UP) {
+ // allow native implementation (navigate select element options)
+ e.stopImmediatePropagation();
}
});
@@ -13037,6 +13246,9 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
if (id === undef)
return this.editors;
+ if (!this.editors.hasOwnProperty(id))
+ return undef;
+
return this.editors[id];
},
@@ -13120,7 +13332,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
ed.render();
// Fix IE memory leaks
- if (tinymce.isIE) {
+ if (tinymce.isIE && ! tinymce.isIE11) {
w.attachEvent('onunload', clr);
}
@@ -13518,10 +13730,16 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
// Store away the selection when it's changed to it can be restored later with a editor.focus() call
if (isIE) {
t.onInit.add(function(ed) {
- ed.dom.bind(ed.getBody(), 'beforedeactivate keydown', function() {
- ed.lastIERng = ed.selection.getRng();
+ ed.dom.bind(ed.getBody(), 'beforedeactivate keydown keyup', function() {
+ ed.bookmark = ed.selection.getBookmark(1);
});
});
+
+ t.onNodeChange.add(function(ed) {
+ if (document.activeElement.id == ed.id + "_ifr") {
+ ed.bookmark = ed.selection.getBookmark(1);
+ }
+ });
}
}
@@ -13558,10 +13776,12 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
t.iframeHTML += '<base href="' + t.documentBaseURI.getURI() + '" />';
// IE8 doesn't support carets behind images setting ie7_compat would force IE8+ to run in IE7 compat mode.
- if (s.ie7_compat)
- t.iframeHTML += '<meta http-equiv="X-UA-Compatible" content="IE=7" />';
- else
- t.iframeHTML += '<meta http-equiv="X-UA-Compatible" content="IE=edge" />';
+ if (tinymce.isIE8) {
+ if (s.ie7_compat)
+ t.iframeHTML += '<meta http-equiv="X-UA-Compatible" content="IE=7" />';
+ else
+ t.iframeHTML += '<meta http-equiv="X-UA-Compatible" content="IE=edge" />';
+ }
t.iframeHTML += '<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />';
@@ -13839,8 +14059,9 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
var oed, self = this, selection = self.selection, contentEditable = self.settings.content_editable, ieRng, controlElm, doc = self.getDoc(), body;
if (!skip_focus) {
- if (self.lastIERng) {
- selection.setRng(self.lastIERng);
+ if (self.bookmark) {
+ selection.moveToBookmark(self.bookmark);
+ self.bookmark = null;
}
// Get selected control element
@@ -13861,7 +14082,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
body = self.getBody();
// Check for setActive since it doesn't scroll to the element
- if (body.setActive) {
+ if (body.setActive && ! tinymce.isIE11) {
body.setActive();
} else {
body.focus();
@@ -14189,6 +14410,8 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
// We must save before we hide so Safari doesn't crash
self.save();
+
+ // defer the call to hide to prevent an IE9 crash #4921
DOM.hide(self.getContainer());
DOM.setStyle(self.id, 'display', self.orgDisplay);
},
@@ -14468,11 +14691,19 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
},
remove : function() {
- var self = this, elm = self.getContainer();
+ var self = this, elm = self.getContainer(), doc = self.getDoc();
if (!self.removed) {
self.removed = 1; // Cancels post remove event execution
- self.hide();
+
+ // Fixed bug where IE has a blinking cursor left from the editor
+ if (isIE && doc)
+ doc.execCommand('SelectAll');
+
+ // We must save before we hide so Safari doesn't crash
+ self.save();
+
+ DOM.setStyle(self.id, 'display', self.orgDisplay);
// Don't clear the window or document if content editable
// is enabled since other instances might still be present
@@ -15465,7 +15696,7 @@ tinymce.create('tinymce.ui.Toolbar:tinymce.ui.Container', {
// Add undo level on save contents, drag end and blur/focusout
editor.onSaveContent.add(addNonTypingUndoLevel);
editor.dom.bind(editor.dom.getRoot(), 'dragend', addNonTypingUndoLevel);
- editor.dom.bind(editor.getDoc(), tinymce.isGecko ? 'blur' : 'focusout', function(e) {
+ editor.dom.bind(editor.getBody(), 'focusout', function(e) {
if (!editor.removed && self.typing) {
addNonTypingUndoLevel();
}
@@ -16248,6 +16479,7 @@ tinymce.ForceBlocks = function(editor) {
TreeWalker = tinymce.dom.TreeWalker,
rangeUtils = new tinymce.dom.RangeUtils(dom),
isValid = ed.schema.isValidChild,
+ isArray = tinymce.isArray,
isBlock = dom.isBlock,
forcedRootBlock = ed.settings.forced_root_block,
nodeIndex = dom.nodeIndex,
@@ -16259,9 +16491,13 @@ tinymce.ForceBlocks = function(editor) {
undef,
getContentEditable = dom.getContentEditable;
- function isArray(obj) {
- return obj instanceof Array;
- };
+ function isTextBlock(name) {
+ if (name.nodeType) {
+ name = name.nodeName;
+ }
+
+ return !!ed.schema.getTextBlockElements()[name.toLowerCase()];
+ }
function getParents(node, selector) {
return dom.getParents(node, selector, dom.getRoot());
@@ -16621,7 +16857,7 @@ tinymce.ForceBlocks = function(editor) {
// Is it valid to wrap this item
if (contentEditable && !hasContentEditableState && isValid(wrapName, nodeName) && isValid(parentName, wrapName) &&
- !(!node_specific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !isCaretNode(node)) {
+ !(!node_specific && node.nodeType === 3 && node.nodeValue.length === 1 && node.nodeValue.charCodeAt(0) === 65279) && !isCaretNode(node) && (!format.inline || !isBlock(node))) {
// Start wrapping
if (!currentWrapElm) {
// Wrap the node
@@ -16827,6 +17063,11 @@ tinymce.ForceBlocks = function(editor) {
function process(node) {
var children, i, l, localContentEditable, lastContentEditable, hasContentEditableState;
+ // Skip on text nodes as they have neither format to remove nor children
+ if (node.nodeType === 3) {
+ return;
+ }
+
// Node has a contentEditable value
if (node.nodeType === 1 && getContentEditable(node)) {
lastContentEditable = contentEditable;
@@ -17320,6 +17561,10 @@ tinymce.ForceBlocks = function(editor) {
siblingName = start ? 'previousSibling' : 'nextSibling';
root = dom.getRoot();
+ function isBogusBr(node) {
+ return node.nodeName == "BR" && node.getAttribute('data-mce-bogus') && !node.nextSibling;
+ };
+
// If it's a text node and the offset is inside the text
if (container.nodeType == 3 && !isWhiteSpaceNode(container)) {
if (start ? startOffset > 0 : endOffset < container.nodeValue.length) {
@@ -17334,7 +17579,7 @@ tinymce.ForceBlocks = function(editor) {
// Walk left/right
for (sibling = parent[siblingName]; sibling; sibling = sibling[siblingName]) {
- if (!isBookmarkNode(sibling) && !isWhiteSpaceNode(sibling)) {
+ if (!isBookmarkNode(sibling) && !isWhiteSpaceNode(sibling) && !isBogusBr(sibling)) {
return parent;
}
}
@@ -17493,7 +17738,7 @@ tinymce.ForceBlocks = function(editor) {
// Expand to first wrappable block element or any block element
if (!node)
- node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, isBlock);
+ node = dom.getParent(container.nodeType == 3 ? container.parentNode : container, isTextBlock);
// Exclude inner lists from wrapping
if (node && format[0].wrapper)
@@ -17892,10 +18137,6 @@ tinymce.ForceBlocks = function(editor) {
return next;
};
- function isTextBlock(name) {
- return /^(h[1-6]|p|div|pre|address|dl|dt|dd)$/.test(name);
- };
-
function getContainer(rng, start) {
var container, offset, lastIdx, walker;
@@ -18131,11 +18372,23 @@ tinymce.ForceBlocks = function(editor) {
node.appendChild(dom.doc.createTextNode(INVISIBLE_CHAR));
node = node.firstChild;
- // Insert caret container after the formated node
- dom.insertAfter(caretContainer, formatNode);
+ var block = dom.getParent(formatNode, isTextBlock);
+
+ if (block && dom.isEmpty(block)) {
+ // Replace formatNode with caretContainer when removing format from empty block like <p><b>|</b></p>
+ formatNode.parentNode.replaceChild(caretContainer, formatNode);
+ } else {
+ // Insert caret container after the formated node
+ dom.insertAfter(caretContainer, formatNode);
+ }
// Move selection to text node
selection.setCursorLocation(node, 1);
+
+ // If the formatNode is empty, we can remove it safely.
+ if (dom.isEmpty(formatNode)) {
+ dom.remove(formatNode);
+ }
}
};
@@ -18325,7 +18578,7 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
function renderBlockOnIE(block) {
var oldRng;
- if (tinymce.isIE && dom.isBlock(block)) {
+ if (tinymce.isIE && !tinymce.isIE11 && dom.isBlock(block)) {
oldRng = selection.getRng();
block.appendChild(dom.create('span', null, '\u00a0'));
selection.select(block);
@@ -18440,6 +18693,11 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
if (settings.keep_styles !== false) {
do {
if (/^(SPAN|STRONG|B|EM|I|FONT|STRIKE|U)$/.test(node.nodeName)) {
+ // Never clone a caret containers
+ if (node.id == '_mce_caret') {
+ continue;
+ }
+
clonedNode = node.cloneNode(false);
dom.setAttrib(clonedNode, 'id', ''); // Remove ID since it needs to be document unique
@@ -18455,8 +18713,8 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
}
// BR is needed in empty blocks on non IE browsers
- if (!tinymce.isIE) {
- caretNode.innerHTML = '<br>';
+ if (!tinymce.isIE || tinymce.isIE11) {
+ caretNode.innerHTML = '<br data-mce-bogus="1">';
}
return block;
@@ -18617,26 +18875,24 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
undoManager.add();
};
- // Walks the parent block to the right and look for BR elements
- function hasRightSideBr() {
+ // Walks the parent block to the right and look for any contents
+ function hasRightSideContent() {
var walker = new TreeWalker(container, parentBlock), node;
- while (node = walker.current()) {
- if (node.nodeName == 'BR') {
+ while (node = walker.next()) {
+ if (nonEmptyElementsMap[node.nodeName.toLowerCase()] || node.length > 0) {
return true;
}
-
- node = walker.next();
}
}
-
+
// Inserts a BR element if the forced_root_block option is set to false or empty string
function insertBr() {
- var brElm, extraBr;
+ var brElm, extraBr, marker;
if (container && container.nodeType == 3 && offset >= container.nodeValue.length) {
// Insert extra BR element at the end block elements
- if (!tinymce.isIE && !hasRightSideBr()) {
+ if ((!tinymce.isIE || tinymce.isIE11) && !hasRightSideContent()) {
brElm = dom.create('br');
rng.insertNode(brElm);
rng.setStartAfter(brElm);
@@ -18649,10 +18905,16 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
rng.insertNode(brElm);
// Rendering modes below IE8 doesn't display BR elements in PRE unless we have a \n before it
- if (tinymce.isIE && parentBlockName == 'PRE' && (!documentMode || documentMode < 8)) {
+ if ((tinymce.isIE && !tinymce.isIE11) && parentBlockName == 'PRE' && (!documentMode || documentMode < 8)) {
brElm.parentNode.insertBefore(dom.doc.createTextNode('\r'), brElm);
}
+ // Insert temp marker and scroll to that
+ marker = dom.create('span', {}, '&nbsp;');
+ brElm.parentNode.insertBefore(marker, brElm);
+ selection.scrollIntoView(marker);
+ dom.remove(marker);
+
if (!extraBr) {
rng.setStartAfter(brElm);
rng.setEndAfter(brElm);
@@ -18697,7 +18959,7 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
var lastChild;
// IE will render the blocks correctly other browsers needs a BR
- if (!tinymce.isIE) {
+ if (!tinymce.isIE || tinymce.isIE11) {
block.normalize(); // Remove empty text nodes that got left behind by the extract
// Check if the block is empty or contains a floated last child
@@ -18772,6 +19034,12 @@ tinymce.onAddEditor.add(function(tinymce, ed) {
parentBlockName = parentBlock ? parentBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
containerBlockName = containerBlock ? containerBlock.nodeName.toUpperCase() : ''; // IE < 9 & HTML5
+ // Enter inside block contained within a LI then split or insert before/after LI
+ if (containerBlockName == 'LI' && !evt.ctrlKey) {
+ parentBlock = containerBlock;
+ parentBlockName = containerBlockName;
+ }
+
// Handle enter in LI
if (parentBlockName == 'LI') {
if (!newBlockName && shiftKey) {
diff --git a/program/js/treelist.js b/program/js/treelist.js
index 5913f44b4..d940e396c 100644
--- a/program/js/treelist.js
+++ b/program/js/treelist.js
@@ -28,6 +28,9 @@ function rcube_treelist_widget(node, p)
id_prefix: '',
autoexpand: 1000,
selectable: false,
+ scroll_delay: 500,
+ scroll_step: 5,
+ scroll_speed: 20,
check_droptarget: function(node){ return !node.virtual }
}, p || {});
@@ -42,6 +45,7 @@ function rcube_treelist_widget(node, p)
autoexpand_item,
body_scroll_top = 0,
list_scroll_top = 0,
+ scroll_timer,
me = this;
@@ -461,6 +465,7 @@ function rcube_treelist_widget(node, p)
body_scroll_top = bw.ie ? 0 : window.pageYOffset;
list_scroll_top = container.parent().scrollTop();
+ pos.top += list_scroll_top;
drag_active = true;
box_coords = {
@@ -476,6 +481,7 @@ function rcube_treelist_widget(node, p)
item = li.children().first().get(0);
if (height = item.offsetHeight) {
pos = $(item).offset();
+ pos.top += list_scroll_top;
item_coords[id] = {
x1: pos.left,
y1: pos.top,
@@ -485,6 +491,38 @@ function rcube_treelist_widget(node, p)
};
}
}
+
+ // enable auto-scrolling of list container
+ if (container.height() > container.parent().height()) {
+ container.parent()
+ .mousemove(function(e) {
+ var scroll = 0,
+ mouse = rcube_event.get_mouse_pos(e);
+ mouse.y -= container.parent().offset().top;
+
+ if (mouse.y < 25 && list_scroll_top > 0) {
+ scroll = -1; // up
+ }
+ else if (mouse.y > container.parent().height() - 25) {
+ scroll = 1; // down
+ }
+
+ if (drag_active && scroll != 0) {
+ if (!scroll_timer)
+ scroll_timer = window.setTimeout(function(){ drag_scroll(scroll); }, p.scroll_delay);
+ }
+ else if (scroll_timer) {
+ window.clearTimeout(scroll_timer);
+ scroll_timer = null;
+ }
+ })
+ .mouseleave(function() {
+ if (scroll_timer) {
+ window.clearTimeout(scroll_timer);
+ scroll_timer = null;
+ }
+ });
+ }
}
/**
@@ -493,6 +531,7 @@ function rcube_treelist_widget(node, p)
function drag_end()
{
drag_active = false;
+ scroll_timer = null;
if (autoexpand_timer) {
clearTimeout(autoexpand_timer);
@@ -504,16 +543,33 @@ function rcube_treelist_widget(node, p)
}
/**
+ * Scroll list container in the given direction
+ */
+ function drag_scroll(dir)
+ {
+ if (!drag_active)
+ return;
+
+ var old_top = list_scroll_top;
+ container.parent().get(0).scrollTop += p.scroll_step * dir;
+ list_scroll_top = container.parent().scrollTop();
+ scroll_timer = null;
+
+ if (list_scroll_top != old_top)
+ scroll_timer = window.setTimeout(function(){ drag_scroll(dir); }, p.scroll_speed);
+ }
+
+ /**
* Determine if the given mouse coords intersect the list and one if its items
*/
function intersects(mouse, highlight)
{
// offsets to compensate for scrolling while dragging a message
var boffset = bw.ie ? -document.documentElement.scrollTop : body_scroll_top,
- moffset = list_scroll_top - container.parent().scrollTop(),
+ moffset = container.parent().scrollTop(),
result = null;
- mouse.top = mouse.y + -moffset - boffset;
+ mouse.top = mouse.y + moffset - boffset;
// no intersection with list bounding box
if (mouse.x < box_coords.x1 || mouse.x >= box_coords.x2 || mouse.top < box_coords.y1 || mouse.top >= box_coords.y2) {
diff --git a/program/lib/Crypt/GPG.php b/program/lib/Crypt/GPG.php
index 6e8e717e8..5c2231289 100644
--- a/program/lib/Crypt/GPG.php
+++ b/program/lib/Crypt/GPG.php
@@ -47,15 +47,20 @@
* @package Crypt_GPG
* @author Nathan Fredrickson <nathan@silverorange.com>
* @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2010 silverorange
+ * @copyright 2005-2013 silverorange
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id: GPG.php 302814 2010-08-26 15:43:07Z gauthierm $
+ * @version CVS: $Id$
* @link http://pear.php.net/package/Crypt_GPG
* @link http://pear.php.net/manual/en/package.encryption.crypt-gpg.php
* @link http://www.gnupg.org/
*/
/**
+ * Base class for GPG methods
+ */
+require_once 'Crypt/GPGAbstract.php';
+
+/**
* Signature handler class
*/
require_once 'Crypt/GPG/VerifyStatusHandler.php';
@@ -65,31 +70,6 @@ require_once 'Crypt/GPG/VerifyStatusHandler.php';
*/
require_once 'Crypt/GPG/DecryptStatusHandler.php';
-/**
- * GPG key class
- */
-require_once 'Crypt/GPG/Key.php';
-
-/**
- * GPG sub-key class
- */
-require_once 'Crypt/GPG/SubKey.php';
-
-/**
- * GPG user id class
- */
-require_once 'Crypt/GPG/UserId.php';
-
-/**
- * GPG process and I/O engine class
- */
-require_once 'Crypt/GPG/Engine.php';
-
-/**
- * GPG exception classes
- */
-require_once 'Crypt/GPG/Exceptions.php';
-
// {{{ class Crypt_GPG
/**
@@ -104,82 +84,13 @@ require_once 'Crypt/GPG/Exceptions.php';
* @package Crypt_GPG
* @author Nathan Fredrickson <nathan@silverorange.com>
* @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2010 silverorange
+ * @copyright 2005-2013 silverorange
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
* @link http://pear.php.net/package/Crypt_GPG
* @link http://www.gnupg.org/
*/
-class Crypt_GPG
+class Crypt_GPG extends Crypt_GPGAbstract
{
- // {{{ class error constants
-
- /**
- * Error code returned when there is no error.
- */
- const ERROR_NONE = 0;
-
- /**
- * Error code returned when an unknown or unhandled error occurs.
- */
- const ERROR_UNKNOWN = 1;
-
- /**
- * Error code returned when a bad passphrase is used.
- */
- const ERROR_BAD_PASSPHRASE = 2;
-
- /**
- * Error code returned when a required passphrase is missing.
- */
- const ERROR_MISSING_PASSPHRASE = 3;
-
- /**
- * Error code returned when a key that is already in the keyring is
- * imported.
- */
- const ERROR_DUPLICATE_KEY = 4;
-
- /**
- * Error code returned the required data is missing for an operation.
- *
- * This could be missing key data, missing encrypted data or missing
- * signature data.
- */
- const ERROR_NO_DATA = 5;
-
- /**
- * Error code returned when an unsigned key is used.
- */
- const ERROR_UNSIGNED_KEY = 6;
-
- /**
- * Error code returned when a key that is not self-signed is used.
- */
- const ERROR_NOT_SELF_SIGNED = 7;
-
- /**
- * Error code returned when a public or private key that is not in the
- * keyring is used.
- */
- const ERROR_KEY_NOT_FOUND = 8;
-
- /**
- * Error code returned when an attempt to delete public key having a
- * private key is made.
- */
- const ERROR_DELETE_PRIVATE_KEY = 9;
-
- /**
- * Error code returned when one or more bad signatures are detected.
- */
- const ERROR_BAD_SIGNATURE = 10;
-
- /**
- * Error code returned when there is a problem reading GnuPG data files.
- */
- const ERROR_FILE_PERMISSIONS = 11;
-
- // }}}
// {{{ class constants for data signing modes
/**
@@ -249,12 +160,27 @@ class Crypt_GPG
const FORMAT_X509 = 3;
// }}}
- // {{{ other class constants
+ // {{{ class constants for boolean options
+
+ /**
+ * Use to specify ASCII armored mode for returned data
+ */
+ const ARMOR_ASCII = true;
+
+ /**
+ * Use to specify binary mode for returned data
+ */
+ const ARMOR_BINARY = false;
+
+ /**
+ * Use to specify that line breaks in signed text should be normalized
+ */
+ const TEXT_NORMALIZED = true;
/**
- * URI at which package bugs may be reported.
+ * Use to specify that line breaks in signed text should not be normalized
*/
- const BUG_URI = 'http://pear.php.net/bugs/report.php?package=Crypt_GPG';
+ const TEXT_RAW = false;
// }}}
// {{{ protected class properties
@@ -326,88 +252,6 @@ class Crypt_GPG
protected $decryptKeys = array();
// }}}
- // {{{ __construct()
-
- /**
- * Creates a new GPG object
- *
- * Available options are:
- *
- * - <kbd>string homedir</kbd> - the directory where the GPG
- * keyring files are stored. If not
- * specified, Crypt_GPG uses the
- * default of <kbd>~/.gnupg</kbd>.
- * - <kbd>string publicKeyring</kbd> - the file path of the public
- * keyring. Use this if the public
- * keyring is not in the homedir, or
- * if the keyring is in a directory
- * not writable by the process
- * invoking GPG (like Apache). Then
- * you can specify the path to the
- * keyring with this option
- * (/foo/bar/pubring.gpg), and specify
- * a writable directory (like /tmp)
- * using the <i>homedir</i> option.
- * - <kbd>string privateKeyring</kbd> - the file path of the private
- * keyring. Use this if the private
- * keyring is not in the homedir, or
- * if the keyring is in a directory
- * not writable by the process
- * invoking GPG (like Apache). Then
- * you can specify the path to the
- * keyring with this option
- * (/foo/bar/secring.gpg), and specify
- * a writable directory (like /tmp)
- * using the <i>homedir</i> option.
- * - <kbd>string trustDb</kbd> - the file path of the web-of-trust
- * database. Use this if the trust
- * database is not in the homedir, or
- * if the database is in a directory
- * not writable by the process
- * invoking GPG (like Apache). Then
- * you can specify the path to the
- * trust database with this option
- * (/foo/bar/trustdb.gpg), and specify
- * a writable directory (like /tmp)
- * using the <i>homedir</i> option.
- * - <kbd>string binary</kbd> - the location of the GPG binary. If
- * not specified, the driver attempts
- * to auto-detect the GPG binary
- * location using a list of known
- * default locations for the current
- * operating system. The option
- * <kbd>gpgBinary</kbd> is a
- * deprecated alias for this option.
- * - <kbd>boolean debug</kbd> - whether or not to use debug mode.
- * When debug mode is on, all
- * communication to and from the GPG
- * subprocess is logged. This can be
- *
- * @param array $options optional. An array of options used to create the
- * GPG object. All options are optional and are
- * represented as key-value pairs.
- *
- * @throws Crypt_GPG_FileException if the <kbd>homedir</kbd> does not exist
- * and cannot be created. This can happen if <kbd>homedir</kbd> is
- * not specified, Crypt_GPG is run as the web user, and the web
- * user has no home directory. This exception is also thrown if any
- * of the options <kbd>publicKeyring</kbd>,
- * <kbd>privateKeyring</kbd> or <kbd>trustDb</kbd> options are
- * specified but the files do not exist or are are not readable.
- * This can happen if the user running the Crypt_GPG process (for
- * example, the Apache user) does not have permission to read the
- * files.
- *
- * @throws PEAR_Exception if the provided <kbd>binary</kbd> is invalid, or
- * if no <kbd>binary</kbd> is provided and no suitable binary could
- * be found.
- */
- public function __construct(array $options = array())
- {
- $this->setEngine(new Crypt_GPG_Engine($options));
- }
-
- // }}}
// {{{ importKey()
/**
@@ -520,7 +364,9 @@ class Crypt_GPG
if ($fingerprint === null) {
throw new Crypt_GPG_KeyNotFoundException(
'Public key not found: ' . $keyId,
- Crypt_GPG::ERROR_KEY_NOT_FOUND, $keyId);
+ self::ERROR_KEY_NOT_FOUND,
+ $keyId
+ );
}
$keyData = '';
@@ -534,11 +380,13 @@ class Crypt_GPG
$code = $this->engine->getErrorCode();
- if ($code !== Crypt_GPG::ERROR_NONE) {
+ if ($code !== self::ERROR_NONE) {
throw new Crypt_GPG_Exception(
'Unknown error exporting public key. Please use the ' .
'\'debug\' option when creating the Crypt_GPG object, and ' .
- 'file a bug report at ' . self::BUG_URI, $code);
+ 'file a bug report at ' . self::BUG_URI,
+ $code
+ );
}
return $keyData;
@@ -583,7 +431,9 @@ class Crypt_GPG
if ($fingerprint === null) {
throw new Crypt_GPG_KeyNotFoundException(
'Public key not found: ' . $keyId,
- Crypt_GPG::ERROR_KEY_NOT_FOUND, $keyId);
+ self::ERROR_KEY_NOT_FOUND,
+ $keyId
+ );
}
$operation = '--delete-key ' . escapeshellarg($fingerprint);
@@ -599,17 +449,22 @@ class Crypt_GPG
$code = $this->engine->getErrorCode();
switch ($code) {
- case Crypt_GPG::ERROR_NONE:
+ case self::ERROR_NONE:
break;
- case Crypt_GPG::ERROR_DELETE_PRIVATE_KEY:
+ case self::ERROR_DELETE_PRIVATE_KEY:
throw new Crypt_GPG_DeletePrivateKeyException(
'Private key must be deleted before public key can be ' .
- 'deleted.', $code, $keyId);
+ 'deleted.',
+ $code,
+ $keyId
+ );
default:
throw new Crypt_GPG_Exception(
'Unknown error deleting public key. Please use the ' .
'\'debug\' option when creating the Crypt_GPG object, and ' .
- 'file a bug report at ' . self::BUG_URI, $code);
+ 'file a bug report at ' . self::BUG_URI,
+ $code
+ );
}
}
@@ -647,7 +502,9 @@ class Crypt_GPG
if ($fingerprint === null) {
throw new Crypt_GPG_KeyNotFoundException(
'Private key not found: ' . $keyId,
- Crypt_GPG::ERROR_KEY_NOT_FOUND, $keyId);
+ self::ERROR_KEY_NOT_FOUND,
+ $keyId
+ );
}
$operation = '--delete-secret-key ' . escapeshellarg($fingerprint);
@@ -663,17 +520,21 @@ class Crypt_GPG
$code = $this->engine->getErrorCode();
switch ($code) {
- case Crypt_GPG::ERROR_NONE:
+ case self::ERROR_NONE:
break;
- case Crypt_GPG::ERROR_KEY_NOT_FOUND:
+ case self::ERROR_KEY_NOT_FOUND:
throw new Crypt_GPG_KeyNotFoundException(
'Private key not found: ' . $keyId,
- $code, $keyId);
+ $code,
+ $keyId
+ );
default:
throw new Crypt_GPG_Exception(
'Unknown error deleting private key. Please use the ' .
'\'debug\' option when creating the Crypt_GPG object, and ' .
- 'file a bug report at ' . self::BUG_URI, $code);
+ 'file a bug report at ' . self::BUG_URI,
+ $code
+ );
}
}
@@ -705,161 +566,7 @@ class Crypt_GPG
*/
public function getKeys($keyId = '')
{
- // get private key fingerprints
- if ($keyId == '') {
- $operation = '--list-secret-keys';
- } else {
- $operation = '--list-secret-keys ' . escapeshellarg($keyId);
- }
-
- // According to The file 'doc/DETAILS' in the GnuPG distribution, using
- // double '--with-fingerprint' also prints the fingerprint for subkeys.
- $arguments = array(
- '--with-colons',
- '--with-fingerprint',
- '--with-fingerprint',
- '--fixed-list-mode'
- );
-
- $output = '';
-
- $this->engine->reset();
- $this->engine->setOutput($output);
- $this->engine->setOperation($operation, $arguments);
- $this->engine->run();
-
- $code = $this->engine->getErrorCode();
-
- switch ($code) {
- case Crypt_GPG::ERROR_NONE:
- case Crypt_GPG::ERROR_KEY_NOT_FOUND:
- // ignore not found key errors
- break;
- case Crypt_GPG::ERROR_FILE_PERMISSIONS:
- $filename = $this->engine->getErrorFilename();
- if ($filename) {
- throw new Crypt_GPG_FileException(sprintf(
- 'Error reading GnuPG data file \'%s\'. Check to make ' .
- 'sure it is readable by the current user.', $filename),
- $code, $filename);
- }
- throw new Crypt_GPG_FileException(
- 'Error reading GnuPG data file. Check to make GnuPG data ' .
- 'files are readable by the current user.', $code);
- default:
- throw new Crypt_GPG_Exception(
- 'Unknown error getting keys. Please use the \'debug\' option ' .
- 'when creating the Crypt_GPG object, and file a bug report ' .
- 'at ' . self::BUG_URI, $code);
- }
-
- $privateKeyFingerprints = array();
-
- $lines = explode(PHP_EOL, $output);
- foreach ($lines as $line) {
- $lineExp = explode(':', $line);
- if ($lineExp[0] == 'fpr') {
- $privateKeyFingerprints[] = $lineExp[9];
- }
- }
-
- // get public keys
- if ($keyId == '') {
- $operation = '--list-public-keys';
- } else {
- $operation = '--list-public-keys ' . escapeshellarg($keyId);
- }
-
- $output = '';
-
- $this->engine->reset();
- $this->engine->setOutput($output);
- $this->engine->setOperation($operation, $arguments);
- $this->engine->run();
-
- $code = $this->engine->getErrorCode();
-
- switch ($code) {
- case Crypt_GPG::ERROR_NONE:
- case Crypt_GPG::ERROR_KEY_NOT_FOUND:
- // ignore not found key errors
- break;
- case Crypt_GPG::ERROR_FILE_PERMISSIONS:
- $filename = $this->engine->getErrorFilename();
- if ($filename) {
- throw new Crypt_GPG_FileException(sprintf(
- 'Error reading GnuPG data file \'%s\'. Check to make ' .
- 'sure it is readable by the current user.', $filename),
- $code, $filename);
- }
- throw new Crypt_GPG_FileException(
- 'Error reading GnuPG data file. Check to make GnuPG data ' .
- 'files are readable by the current user.', $code);
- default:
- throw new Crypt_GPG_Exception(
- 'Unknown error getting keys. Please use the \'debug\' option ' .
- 'when creating the Crypt_GPG object, and file a bug report ' .
- 'at ' . self::BUG_URI, $code);
- }
-
- $keys = array();
-
- $key = null; // current key
- $subKey = null; // current sub-key
-
- $lines = explode(PHP_EOL, $output);
- foreach ($lines as $line) {
- $lineExp = explode(':', $line);
-
- if ($lineExp[0] == 'pub') {
-
- // new primary key means last key should be added to the array
- if ($key !== null) {
- $keys[] = $key;
- }
-
- $key = new Crypt_GPG_Key();
-
- $subKey = Crypt_GPG_SubKey::parse($line);
- $key->addSubKey($subKey);
-
- } elseif ($lineExp[0] == 'sub') {
-
- $subKey = Crypt_GPG_SubKey::parse($line);
- $key->addSubKey($subKey);
-
- } elseif ($lineExp[0] == 'fpr') {
-
- $fingerprint = $lineExp[9];
-
- // set current sub-key fingerprint
- $subKey->setFingerprint($fingerprint);
-
- // if private key exists, set has private to true
- if (in_array($fingerprint, $privateKeyFingerprints)) {
- $subKey->setHasPrivate(true);
- }
-
- } elseif ($lineExp[0] == 'uid') {
-
- $string = stripcslashes($lineExp[9]); // as per documentation
- $userId = new Crypt_GPG_UserId($string);
-
- if ($lineExp[1] == 'r') {
- $userId->setRevoked(true);
- }
-
- $key->addUserId($userId);
-
- }
- }
-
- // add last key
- if ($key !== null) {
- $keys[] = $key;
- }
-
- return $keys;
+ return parent::_getKeys($keyId);
}
// }}}
@@ -895,7 +602,7 @@ class Crypt_GPG
* Use the <kbd>debug</kbd> option and file a bug report if these
* exceptions occur.
*/
- public function getFingerprint($keyId, $format = Crypt_GPG::FORMAT_NONE)
+ public function getFingerprint($keyId, $format = self::FORMAT_NONE)
{
$output = '';
$operation = '--list-keys ' . escapeshellarg($keyId);
@@ -912,15 +619,17 @@ class Crypt_GPG
$code = $this->engine->getErrorCode();
switch ($code) {
- case Crypt_GPG::ERROR_NONE:
- case Crypt_GPG::ERROR_KEY_NOT_FOUND:
+ case self::ERROR_NONE:
+ case self::ERROR_KEY_NOT_FOUND:
// ignore not found key errors
break;
default:
throw new Crypt_GPG_Exception(
'Unknown error getting key fingerprint. Please use the ' .
'\'debug\' option when creating the Crypt_GPG object, and ' .
- 'file a bug report at ' . self::BUG_URI, $code);
+ 'file a bug report at ' . self::BUG_URI,
+ $code
+ );
}
$fingerprint = null;
@@ -932,13 +641,13 @@ class Crypt_GPG
$fingerprint = $lineExp[9];
switch ($format) {
- case Crypt_GPG::FORMAT_CANONICAL:
+ case self::FORMAT_CANONICAL:
$fingerprintExp = str_split($fingerprint, 4);
$format = '%s %s %s %s %s %s %s %s %s %s';
$fingerprint = vsprintf($format, $fingerprintExp);
break;
- case Crypt_GPG::FORMAT_X509:
+ case self::FORMAT_X509:
$fingerprintExp = str_split($fingerprint, 2);
$fingerprint = implode(':', $fingerprintExp);
break;
@@ -976,7 +685,7 @@ class Crypt_GPG
*
* @sensitive $data
*/
- public function encrypt($data, $armor = true)
+ public function encrypt($data, $armor = self::ARMOR_ASCII)
{
return $this->_encrypt($data, false, null, $armor);
}
@@ -1012,8 +721,11 @@ class Crypt_GPG
* Use the <kbd>debug</kbd> option and file a bug report if these
* exceptions occur.
*/
- public function encryptFile($filename, $encryptedFile = null, $armor = true)
- {
+ public function encryptFile(
+ $filename,
+ $encryptedFile = null,
+ $armor = self::ARMOR_ASCII
+ ) {
return $this->_encrypt($filename, true, $encryptedFile, $armor);
}
@@ -1052,7 +764,7 @@ class Crypt_GPG
*
* @see Crypt_GPG::decryptAndVerify()
*/
- public function encryptAndSign($data, $armor = true)
+ public function encryptAndSign($data, $armor = self::ARMOR_ASCII)
{
return $this->_encryptAndSign($data, false, null, $armor);
}
@@ -1103,8 +815,10 @@ class Crypt_GPG
*
* @see Crypt_GPG::decryptAndVerifyFile()
*/
- public function encryptAndSignFile($filename, $signedFile = null,
- $armor = true
+ public function encryptAndSignFile(
+ $filename,
+ $signedFile = null,
+ $armor = self::ARMOR_ASCII
) {
return $this->_encryptAndSign($filename, true, $signedFile, $armor);
}
@@ -1315,8 +1029,11 @@ class Crypt_GPG
* Use the <kbd>debug</kbd> option and file a bug report if these
* exceptions occur.
*/
- public function sign($data, $mode = Crypt_GPG::SIGN_MODE_NORMAL,
- $armor = true, $textmode = false
+ public function sign(
+ $data,
+ $mode = self::SIGN_MODE_NORMAL,
+ $armor = self::ARMOR_ASCII,
+ $textmode = self::TEXT_RAW
) {
return $this->_sign($data, false, null, $mode, $armor, $textmode);
}
@@ -1376,8 +1093,12 @@ class Crypt_GPG
* Use the <kbd>debug</kbd> option and file a bug report if these
* exceptions occur.
*/
- public function signFile($filename, $signedFile = null,
- $mode = Crypt_GPG::SIGN_MODE_NORMAL, $armor = true, $textmode = false
+ public function signFile(
+ $filename,
+ $signedFile = null,
+ $mode = self::SIGN_MODE_NORMAL,
+ $armor = self::ARMOR_ASCII,
+ $textmode = self::TEXT_RAW
) {
return $this->_sign(
$filename,
@@ -1472,7 +1193,7 @@ class Crypt_GPG
* @param string $passphrase optional. The passphrase of the key required
* for decryption.
*
- * @return void
+ * @return Crypt_GPG the current object, for fluent interface.
*
* @see Crypt_GPG::decrypt()
* @see Crypt_GPG::decryptFile()
@@ -1485,6 +1206,7 @@ class Crypt_GPG
public function addDecryptKey($key, $passphrase = null)
{
$this->_addKey($this->decryptKeys, true, false, $key, $passphrase);
+ return $this;
}
// }}}
@@ -1498,7 +1220,7 @@ class Crypt_GPG
* {@link Crypt_GPG_SubKey}. The key must be able to
* encrypt.
*
- * @return void
+ * @return Crypt_GPG the current object, for fluent interface.
*
* @see Crypt_GPG::encrypt()
* @see Crypt_GPG::encryptFile()
@@ -1508,6 +1230,7 @@ class Crypt_GPG
public function addEncryptKey($key)
{
$this->_addKey($this->encryptKeys, true, false, $key);
+ return $this;
}
// }}}
@@ -1523,7 +1246,7 @@ class Crypt_GPG
* @param string $passphrase optional. The passphrase of the key required
* for signing.
*
- * @return void
+ * @return Crypt_GPG the current object, for fluent interface.
*
* @see Crypt_GPG::sign()
* @see Crypt_GPG::signFile()
@@ -1536,6 +1259,7 @@ class Crypt_GPG
public function addSignKey($key, $passphrase = null)
{
$this->_addKey($this->signKeys, false, true, $key, $passphrase);
+ return $this;
}
// }}}
@@ -1544,7 +1268,7 @@ class Crypt_GPG
/**
* Clears all decryption keys
*
- * @return void
+ * @return Crypt_GPG the current object, for fluent interface.
*
* @see Crypt_GPG::decrypt()
* @see Crypt_GPG::addDecryptKey()
@@ -1552,6 +1276,7 @@ class Crypt_GPG
public function clearDecryptKeys()
{
$this->decryptKeys = array();
+ return $this;
}
// }}}
@@ -1560,7 +1285,7 @@ class Crypt_GPG
/**
* Clears all encryption keys
*
- * @return void
+ * @return Crypt_GPG the current object, for fluent interface.
*
* @see Crypt_GPG::encrypt()
* @see Crypt_GPG::addEncryptKey()
@@ -1568,6 +1293,7 @@ class Crypt_GPG
public function clearEncryptKeys()
{
$this->encryptKeys = array();
+ return $this;
}
// }}}
@@ -1576,7 +1302,7 @@ class Crypt_GPG
/**
* Clears all signing keys
*
- * @return void
+ * @return Crypt_GPG the current object, for fluent interface.
*
* @see Crypt_GPG::sign()
* @see Crypt_GPG::addSignKey()
@@ -1584,6 +1310,7 @@ class Crypt_GPG
public function clearSignKeys()
{
$this->signKeys = array();
+ return $this;
}
// }}}
@@ -1658,24 +1385,6 @@ class Crypt_GPG
}
// }}}
- // {{{ setEngine()
-
- /**
- * Sets the I/O engine to use for GnuPG operations
- *
- * Normally this method does not need to be used. It provides a means for
- * dependency injection.
- *
- * @param Crypt_GPG_Engine $engine the engine to use.
- *
- * @return void
- */
- public function setEngine(Crypt_GPG_Engine $engine)
- {
- $this->engine = $engine;
- }
-
- // }}}
// {{{ _addKey()
/**
@@ -1698,7 +1407,7 @@ class Crypt_GPG
*
* @sensitive $passphrase
*/
- private function _addKey(array &$array, $encrypt, $sign, $key,
+ protected function _addKey(array &$array, $encrypt, $sign, $key,
$passphrase = null
) {
$subKeys = array();
@@ -1707,7 +1416,10 @@ class Crypt_GPG
$keys = $this->getKeys($key);
if (count($keys) == 0) {
throw new Crypt_GPG_KeyNotFoundException(
- 'Key "' . $key . '" not found.', 0, $key);
+ 'Key "' . $key . '" not found.',
+ 0,
+ $key
+ );
}
$key = $keys[0];
}
@@ -1715,12 +1427,14 @@ class Crypt_GPG
if ($key instanceof Crypt_GPG_Key) {
if ($encrypt && !$key->canEncrypt()) {
throw new InvalidArgumentException(
- 'Key "' . $key . '" cannot encrypt.');
+ 'Key "' . $key . '" cannot encrypt.'
+ );
}
if ($sign && !$key->canSign()) {
throw new InvalidArgumentException(
- 'Key "' . $key . '" cannot sign.');
+ 'Key "' . $key . '" cannot sign.'
+ );
}
foreach ($key->getSubKeys() as $subKey) {
@@ -1741,18 +1455,21 @@ class Crypt_GPG
if (count($subKeys) === 0) {
throw new InvalidArgumentException(
- 'Key "' . $key . '" is not in a recognized format.');
+ 'Key "' . $key . '" is not in a recognized format.'
+ );
}
foreach ($subKeys as $subKey) {
if ($encrypt && !$subKey->canEncrypt()) {
throw new InvalidArgumentException(
- 'Key "' . $key . '" cannot encrypt.');
+ 'Key "' . $key . '" cannot encrypt.'
+ );
}
if ($sign && !$subKey->canSign()) {
throw new InvalidArgumentException(
- 'Key "' . $key . '" cannot sign.');
+ 'Key "' . $key . '" cannot sign.'
+ );
}
$array[$subKey->getId()] = array(
@@ -1763,6 +1480,37 @@ class Crypt_GPG
}
// }}}
+ // {{{ _setPinEntryEnv()
+
+ /**
+ * Sets the PINENTRY_USER_DATA environment variable with the currently
+ * added keys and passphrases
+ *
+ * Keys and pasphrases are stored as an indexed array of associative
+ * arrays that is JSON encoded to a flat string.
+ *
+ * For GnuPG 2.x this is how passphrases are passed. For GnuPG 1.x the
+ * environment variable is set but not used.
+ *
+ * @param array $keys the internal key array to use.
+ *
+ * @return void
+ */
+ protected function _setPinEntryEnv(array $keys)
+ {
+ $envKeys = array();
+ foreach ($keys as $id => $key) {
+ $envKeys[] = array(
+ 'keyId' => $id,
+ 'fingerprint' => $key['fingerprint'],
+ 'passphrase' => $key['passphrase']
+ );
+ }
+ $envKeys = json_encode($envKeys);
+ $_ENV['PINENTRY_USER_DATA'] = $envKeys;
+ }
+
+ // }}}
// {{{ _importKey()
/**
@@ -1792,21 +1540,26 @@ class Crypt_GPG
* Use the <kbd>debug</kbd> option and file a bug report if these
* exceptions occur.
*/
- private function _importKey($key, $isFile)
+ protected function _importKey($key, $isFile)
{
$result = array();
if ($isFile) {
$input = @fopen($key, 'rb');
if ($input === false) {
- throw new Crypt_GPG_FileException('Could not open key file "' .
- $key . '" for importing.', 0, $key);
+ throw new Crypt_GPG_FileException(
+ 'Could not open key file "' . $key . '" for importing.',
+ 0,
+ $key
+ );
}
} else {
$input = strval($key);
if ($input == '') {
throw new Crypt_GPG_NoDataException(
- 'No valid GPG key data found.', Crypt_GPG::ERROR_NO_DATA);
+ 'No valid GPG key data found.',
+ self::ERROR_NO_DATA
+ );
}
}
@@ -1836,18 +1589,22 @@ class Crypt_GPG
$code = $this->engine->getErrorCode();
switch ($code) {
- case Crypt_GPG::ERROR_DUPLICATE_KEY:
- case Crypt_GPG::ERROR_NONE:
+ case self::ERROR_DUPLICATE_KEY:
+ case self::ERROR_NONE:
// ignore duplicate key import errors
break;
- case Crypt_GPG::ERROR_NO_DATA:
+ case self::ERROR_NO_DATA:
throw new Crypt_GPG_NoDataException(
- 'No valid GPG key data found.', $code);
+ 'No valid GPG key data found.',
+ $code
+ );
default:
throw new Crypt_GPG_Exception(
'Unknown error importing GPG key. Please use the \'debug\' ' .
'option when creating the Crypt_GPG object, and file a bug ' .
- 'report at ' . self::BUG_URI, $code);
+ 'report at ' . self::BUG_URI,
+ $code
+ );
}
return $result;
@@ -1880,18 +1637,23 @@ class Crypt_GPG
* Use the <kbd>debug</kbd> option and file a bug report if these
* exceptions occur.
*/
- private function _encrypt($data, $isFile, $outputFile, $armor)
+ protected function _encrypt($data, $isFile, $outputFile, $armor)
{
if (count($this->encryptKeys) === 0) {
throw new Crypt_GPG_KeyNotFoundException(
- 'No encryption keys specified.');
+ 'No encryption keys specified.'
+ );
}
if ($isFile) {
$input = @fopen($data, 'rb');
if ($input === false) {
- throw new Crypt_GPG_FileException('Could not open input file "' .
- $data . '" for encryption.', 0, $data);
+ throw new Crypt_GPG_FileException(
+ 'Could not open input file "' . $data .
+ '" for encryption.',
+ 0,
+ $data
+ );
}
} else {
$input = strval($data);
@@ -1905,9 +1667,12 @@ class Crypt_GPG
if ($isFile) {
fclose($input);
}
- throw new Crypt_GPG_FileException('Could not open output ' .
- 'file "' . $outputFile . '" for storing encrypted data.',
- 0, $outputFile);
+ throw new Crypt_GPG_FileException(
+ 'Could not open output file "' . $outputFile .
+ '" for storing encrypted data.',
+ 0,
+ $outputFile
+ );
}
}
@@ -1932,11 +1697,13 @@ class Crypt_GPG
$code = $this->engine->getErrorCode();
- if ($code !== Crypt_GPG::ERROR_NONE) {
+ if ($code !== self::ERROR_NONE) {
throw new Crypt_GPG_Exception(
'Unknown error encrypting data. Please use the \'debug\' ' .
'option when creating the Crypt_GPG object, and file a bug ' .
- 'report at ' . self::BUG_URI, $code);
+ 'report at ' . self::BUG_URI,
+ $code
+ );
}
if ($outputFile === null) {
@@ -1976,20 +1743,26 @@ class Crypt_GPG
* Use the <kbd>debug</kbd> option and file a bug report if these
* exceptions occur.
*/
- private function _decrypt($data, $isFile, $outputFile)
+ protected function _decrypt($data, $isFile, $outputFile)
{
if ($isFile) {
$input = @fopen($data, 'rb');
if ($input === false) {
- throw new Crypt_GPG_FileException('Could not open input file "' .
- $data . '" for decryption.', 0, $data);
+ throw new Crypt_GPG_FileException(
+ 'Could not open input file "' . $data .
+ '" for decryption.',
+ 0,
+ $data
+ );
}
} else {
$input = strval($data);
if ($input == '') {
throw new Crypt_GPG_NoDataException(
'Cannot decrypt data. No PGP encrypted data was found in '.
- 'the provided data.', Crypt_GPG::ERROR_NO_DATA);
+ 'the provided data.',
+ self::ERROR_NO_DATA
+ );
}
}
@@ -2001,14 +1774,22 @@ class Crypt_GPG
if ($isFile) {
fclose($input);
}
- throw new Crypt_GPG_FileException('Could not open output ' .
- 'file "' . $outputFile . '" for storing decrypted data.',
- 0, $outputFile);
+ throw new Crypt_GPG_FileException(
+ 'Could not open output file "' . $outputFile .
+ '" for storing decrypted data.',
+ 0,
+ $outputFile
+ );
}
}
- $handler = new Crypt_GPG_DecryptStatusHandler($this->engine,
- $this->decryptKeys);
+ $handler = new Crypt_GPG_DecryptStatusHandler(
+ $this->engine,
+ $this->decryptKeys
+ );
+
+ // If using gpg-agent, set the decrypt pins used by the pinentry
+ $this->_setPinEntryEnv($this->decryptKeys);
$this->engine->reset();
$this->engine->addStatusHandler(array($handler, 'handle'));
@@ -2080,19 +1861,23 @@ class Crypt_GPG
* Use the <kbd>debug</kbd> option and file a bug report if these
* exceptions occur.
*/
- private function _sign($data, $isFile, $outputFile, $mode, $armor,
+ protected function _sign($data, $isFile, $outputFile, $mode, $armor,
$textmode
) {
if (count($this->signKeys) === 0) {
throw new Crypt_GPG_KeyNotFoundException(
- 'No signing keys specified.');
+ 'No signing keys specified.'
+ );
}
if ($isFile) {
$input = @fopen($data, 'rb');
if ($input === false) {
- throw new Crypt_GPG_FileException('Could not open input ' .
- 'file "' . $data . '" for signing.', 0, $data);
+ throw new Crypt_GPG_FileException(
+ 'Could not open input file "' . $data . '" for signing.',
+ 0,
+ $data
+ );
}
} else {
$input = strval($data);
@@ -2106,20 +1891,23 @@ class Crypt_GPG
if ($isFile) {
fclose($input);
}
- throw new Crypt_GPG_FileException('Could not open output ' .
- 'file "' . $outputFile . '" for storing signed ' .
- 'data.', 0, $outputFile);
+ throw new Crypt_GPG_FileException(
+ 'Could not open output file "' . $outputFile .
+ '" for storing signed data.',
+ 0,
+ $outputFile
+ );
}
}
switch ($mode) {
- case Crypt_GPG::SIGN_MODE_DETACHED:
+ case self::SIGN_MODE_DETACHED:
$operation = '--detach-sign';
break;
- case Crypt_GPG::SIGN_MODE_CLEAR:
+ case self::SIGN_MODE_CLEAR:
$operation = '--clearsign';
break;
- case Crypt_GPG::SIGN_MODE_NORMAL:
+ case self::SIGN_MODE_NORMAL:
default:
$operation = '--sign';
break;
@@ -2139,6 +1927,9 @@ class Crypt_GPG
escapeshellarg($key['fingerprint']);
}
+ // If using gpg-agent, set the sign pins used by the pinentry
+ $this->_setPinEntryEnv($this->signKeys);
+
$this->engine->reset();
$this->engine->addStatusHandler(array($this, 'handleSignStatus'));
$this->engine->setInput($input);
@@ -2157,24 +1948,32 @@ class Crypt_GPG
$code = $this->engine->getErrorCode();
switch ($code) {
- case Crypt_GPG::ERROR_NONE:
+ case self::ERROR_NONE:
break;
- case Crypt_GPG::ERROR_KEY_NOT_FOUND:
+ case self::ERROR_KEY_NOT_FOUND:
throw new Crypt_GPG_KeyNotFoundException(
'Cannot sign data. Private key not found. Import the '.
- 'private key before trying to sign data.', $code,
- $this->engine->getErrorKeyId());
- case Crypt_GPG::ERROR_BAD_PASSPHRASE:
+ 'private key before trying to sign data.',
+ $code,
+ $this->engine->getErrorKeyId()
+ );
+ case self::ERROR_BAD_PASSPHRASE:
throw new Crypt_GPG_BadPassphraseException(
- 'Cannot sign data. Incorrect passphrase provided.', $code);
- case Crypt_GPG::ERROR_MISSING_PASSPHRASE:
+ 'Cannot sign data. Incorrect passphrase provided.',
+ $code
+ );
+ case self::ERROR_MISSING_PASSPHRASE:
throw new Crypt_GPG_BadPassphraseException(
- 'Cannot sign data. No passphrase provided.', $code);
+ 'Cannot sign data. No passphrase provided.',
+ $code
+ );
default:
throw new Crypt_GPG_Exception(
'Unknown error signing data. Please use the \'debug\' option ' .
'when creating the Crypt_GPG object, and file a bug report ' .
- 'at ' . self::BUG_URI, $code);
+ 'at ' . self::BUG_URI,
+ $code
+ );
}
if ($outputFile === null) {
@@ -2216,25 +2015,30 @@ class Crypt_GPG
* Use the <kbd>debug</kbd> option and file a bug report if these
* exceptions occur.
*/
- private function _encryptAndSign($data, $isFile, $outputFile, $armor)
+ protected function _encryptAndSign($data, $isFile, $outputFile, $armor)
{
if (count($this->signKeys) === 0) {
throw new Crypt_GPG_KeyNotFoundException(
- 'No signing keys specified.');
+ 'No signing keys specified.'
+ );
}
if (count($this->encryptKeys) === 0) {
throw new Crypt_GPG_KeyNotFoundException(
- 'No encryption keys specified.');
+ 'No encryption keys specified.'
+ );
}
if ($isFile) {
$input = @fopen($data, 'rb');
if ($input === false) {
- throw new Crypt_GPG_FileException('Could not open input ' .
- 'file "' . $data . '" for encrypting and signing.', 0,
- $data);
+ throw new Crypt_GPG_FileException(
+ 'Could not open input file "' . $data .
+ '" for encrypting and signing.',
+ 0,
+ $data
+ );
}
} else {
$input = strval($data);
@@ -2248,9 +2052,12 @@ class Crypt_GPG
if ($isFile) {
fclose($input);
}
- throw new Crypt_GPG_FileException('Could not open output ' .
- 'file "' . $outputFile . '" for storing encrypted, ' .
- 'signed data.', 0, $outputFile);
+ throw new Crypt_GPG_FileException(
+ 'Could not open output file "' . $outputFile .
+ '" for storing encrypted, signed data.',
+ 0,
+ $outputFile
+ );
}
}
@@ -2261,6 +2068,9 @@ class Crypt_GPG
escapeshellarg($key['fingerprint']);
}
+ // If using gpg-agent, set the sign pins used by the pinentry
+ $this->_setPinEntryEnv($this->signKeys);
+
foreach ($this->encryptKeys as $key) {
$arguments[] = '--recipient ' . escapeshellarg($key['fingerprint']);
}
@@ -2283,25 +2093,32 @@ class Crypt_GPG
$code = $this->engine->getErrorCode();
switch ($code) {
- case Crypt_GPG::ERROR_NONE:
+ case self::ERROR_NONE:
break;
- case Crypt_GPG::ERROR_KEY_NOT_FOUND:
+ case self::ERROR_KEY_NOT_FOUND:
throw new Crypt_GPG_KeyNotFoundException(
'Cannot sign encrypted data. Private key not found. Import '.
'the private key before trying to sign the encrypted data.',
- $code, $this->engine->getErrorKeyId());
- case Crypt_GPG::ERROR_BAD_PASSPHRASE:
+ $code,
+ $this->engine->getErrorKeyId()
+ );
+ case self::ERROR_BAD_PASSPHRASE:
throw new Crypt_GPG_BadPassphraseException(
'Cannot sign encrypted data. Incorrect passphrase provided.',
- $code);
- case Crypt_GPG::ERROR_MISSING_PASSPHRASE:
+ $code
+ );
+ case self::ERROR_MISSING_PASSPHRASE:
throw new Crypt_GPG_BadPassphraseException(
- 'Cannot sign encrypted data. No passphrase provided.', $code);
+ 'Cannot sign encrypted data. No passphrase provided.',
+ $code
+ );
default:
throw new Crypt_GPG_Exception(
'Unknown error encrypting and signing data. Please use the ' .
'\'debug\' option when creating the Crypt_GPG object, and ' .
- 'file a bug report at ' . self::BUG_URI, $code);
+ 'file a bug report at ' . self::BUG_URI,
+ $code
+ );
}
if ($outputFile === null) {
@@ -2335,7 +2152,7 @@ class Crypt_GPG
*
* @see Crypt_GPG_Signature
*/
- private function _verify($data, $isFile, $signature)
+ protected function _verify($data, $isFile, $signature)
{
if ($signature == '') {
$operation = '--verify';
@@ -2352,14 +2169,19 @@ class Crypt_GPG
if ($isFile) {
$input = @fopen($data, 'rb');
if ($input === false) {
- throw new Crypt_GPG_FileException('Could not open input ' .
- 'file "' . $data . '" for verifying.', 0, $data);
+ throw new Crypt_GPG_FileException(
+ 'Could not open input file "' . $data . '" for verifying.',
+ 0,
+ $data
+ );
}
} else {
$input = strval($data);
if ($input == '') {
throw new Crypt_GPG_NoDataException(
- 'No valid signature data found.', Crypt_GPG::ERROR_NO_DATA);
+ 'No valid signature data found.',
+ self::ERROR_NO_DATA
+ );
}
}
@@ -2385,21 +2207,27 @@ class Crypt_GPG
$code = $this->engine->getErrorCode();
switch ($code) {
- case Crypt_GPG::ERROR_NONE:
- case Crypt_GPG::ERROR_BAD_SIGNATURE:
+ case self::ERROR_NONE:
+ case self::ERROR_BAD_SIGNATURE:
break;
- case Crypt_GPG::ERROR_NO_DATA:
+ case self::ERROR_NO_DATA:
throw new Crypt_GPG_NoDataException(
- 'No valid signature data found.', $code);
- case Crypt_GPG::ERROR_KEY_NOT_FOUND:
+ 'No valid signature data found.',
+ $code
+ );
+ case self::ERROR_KEY_NOT_FOUND:
throw new Crypt_GPG_KeyNotFoundException(
'Public key required for data verification not in keyring.',
- $code, $this->engine->getErrorKeyId());
+ $code,
+ $this->engine->getErrorKeyId()
+ );
default:
throw new Crypt_GPG_Exception(
'Unknown error validating signature details. Please use the ' .
'\'debug\' option when creating the Crypt_GPG object, and ' .
- 'file a bug report at ' . self::BUG_URI, $code);
+ 'file a bug report at ' . self::BUG_URI,
+ $code
+ );
}
return $handler->getSignatures();
@@ -2445,21 +2273,25 @@ class Crypt_GPG
*
* @see Crypt_GPG_Signature
*/
- private function _decryptAndVerify($data, $isFile, $outputFile)
+ protected function _decryptAndVerify($data, $isFile, $outputFile)
{
if ($isFile) {
$input = @fopen($data, 'rb');
if ($input === false) {
- throw new Crypt_GPG_FileException('Could not open input ' .
- 'file "' . $data . '" for decrypting and verifying.', 0,
- $data);
+ throw new Crypt_GPG_FileException(
+ 'Could not open input file "' . $data .
+ '" for decrypting and verifying.',
+ 0,
+ $data
+ );
}
} else {
$input = strval($data);
if ($input == '') {
throw new Crypt_GPG_NoDataException(
'No valid encrypted signed data found.',
- Crypt_GPG::ERROR_NO_DATA);
+ self::ERROR_NO_DATA
+ );
}
}
@@ -2471,16 +2303,24 @@ class Crypt_GPG
if ($isFile) {
fclose($input);
}
- throw new Crypt_GPG_FileException('Could not open output ' .
- 'file "' . $outputFile . '" for storing decrypted data.',
- 0, $outputFile);
+ throw new Crypt_GPG_FileException(
+ 'Could not open output file "' . $outputFile .
+ '" for storing decrypted data.',
+ 0,
+ $outputFile
+ );
}
}
$verifyHandler = new Crypt_GPG_VerifyStatusHandler();
- $decryptHandler = new Crypt_GPG_DecryptStatusHandler($this->engine,
- $this->decryptKeys);
+ $decryptHandler = new Crypt_GPG_DecryptStatusHandler(
+ $this->engine,
+ $this->decryptKeys
+ );
+
+ // If using gpg-agent, set the decrypt pins used by the pinentry
+ $this->_setPinEntryEnv($this->decryptKeys);
$this->engine->reset();
$this->engine->addStatusHandler(array($verifyHandler, 'handle'));
@@ -2515,13 +2355,17 @@ class Crypt_GPG
'is in the keyring or the public key required for data ' .
'verification is not in the keyring. Import a suitable ' .
'key before trying to decrypt and verify this data.',
- self::ERROR_KEY_NOT_FOUND, $this->engine->getErrorKeyId());
+ self::ERROR_KEY_NOT_FOUND,
+ $this->engine->getErrorKeyId()
+ );
}
if ($e instanceof Crypt_GPG_NoDataException) {
throw new Crypt_GPG_NoDataException(
'Cannot decrypt and verify data. No PGP encrypted data ' .
- 'was found in the provided data.', self::ERROR_NO_DATA);
+ 'was found in the provided data.',
+ self::ERROR_NO_DATA
+ );
}
throw $e;
diff --git a/program/lib/Crypt/GPG/ByteUtils.php b/program/lib/Crypt/GPG/ByteUtils.php
new file mode 100644
index 000000000..342905471
--- /dev/null
+++ b/program/lib/Crypt/GPG/ByteUtils.php
@@ -0,0 +1,105 @@
+<?php
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * A class for performing byte-wise string operations
+ *
+ * GPG I/O streams are managed using bytes rather than characters.
+ *
+ * PHP version 5
+ *
+ * LICENSE:
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of the
+ * License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2013 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @version CVS: $Id$
+ * @link http://pear.php.net/package/Crypt_GPG
+ */
+
+// {{{ class Crypt_GPG_ByteUtils
+
+/**
+ * A class for performing byte-wise string operations
+ *
+ * GPG I/O streams are managed using bytes rather than characters. This class
+ * requires the mbstring extension to be available.
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2013 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @link http://pear.php.net/package/Crypt_GPG
+ * @link http://php.net/mbstring
+ */
+class Crypt_GPG_ByteUtils
+{
+ // {{{ strlen()
+
+ /**
+ * Gets the length of a string in bytes
+ *
+ * This is used for stream-based communication with the GPG subprocess.
+ *
+ * @param string $string the string for which to get the length.
+ *
+ * @return integer the length of the string in bytes.
+ */
+ public static function strlen($string)
+ {
+ return mb_strlen($string, '8bit');
+ }
+
+ // }}}
+ // {{{ substr()
+
+ /**
+ * Gets the substring of a string in bytes
+ *
+ * This is used for stream-based communication with the GPG subprocess.
+ *
+ * @param string $string the input string.
+ * @param integer $start the starting point at which to get the substring.
+ * @param integer $length optional. The length of the substring.
+ *
+ * @return string the extracted part of the string. Unlike the default PHP
+ * <kbd>substr()</kbd> function, the returned value is
+ * always a string and never false.
+ */
+ public static function substr($string, $start, $length = null)
+ {
+ if ($length === null) {
+ return mb_substr(
+ $string,
+ $start,
+ self::strlen($string) - $start, '8bit'
+ );
+ }
+
+ return mb_substr($string, $start, $length, '8bit');
+ }
+
+ // }}}
+}
+
+// }}}
+
+?>
diff --git a/program/lib/Crypt/GPG/DecryptStatusHandler.php b/program/lib/Crypt/GPG/DecryptStatusHandler.php
index 40e8d50ed..67c0dd74b 100644
--- a/program/lib/Crypt/GPG/DecryptStatusHandler.php
+++ b/program/lib/Crypt/GPG/DecryptStatusHandler.php
@@ -3,9 +3,9 @@
/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
/**
- * Crypt_GPG is a package to use GPG from PHP
+ * Crypt_GPG is a package to use GnuPG from PHP
*
- * This file contains an object that handles GPG's status output for the
+ * This file contains an object that handles GnuPG's status output for the
* decrypt operation.
*
* PHP version 5
@@ -29,9 +29,9 @@
* @category Encryption
* @package Crypt_GPG
* @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2008-2009 silverorange
+ * @copyright 2008-2013 silverorange
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id: DecryptStatusHandler.php 302814 2010-08-26 15:43:07Z gauthierm $
+ * @version CVS: $Id$
* @link http://pear.php.net/package/Crypt_GPG
* @link http://www.gnupg.org/
*/
@@ -42,7 +42,7 @@
require_once 'Crypt/GPG.php';
/**
- * GPG exception classes
+ * Crypt_GPG exception classes
*/
require_once 'Crypt/GPG/Exceptions.php';
@@ -55,8 +55,8 @@ require_once 'Crypt/GPG/Exceptions.php';
*
* This class is responsible for sending the passphrase commands when required
* by the {@link Crypt_GPG::decrypt()} method. See <b>doc/DETAILS</b> in the
- * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
- * information on GPG's status output for the decrypt operation.
+ * {@link http://www.gnupg.org/download/ GnuPG distribution} for detailed
+ * information on GnuPG's status output for the decrypt operation.
*
* This class is also responsible for parsing error status and throwing a
* meaningful exception in the event that decryption fails.
@@ -64,7 +64,7 @@ require_once 'Crypt/GPG/Exceptions.php';
* @category Encryption
* @package Crypt_GPG
* @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2008 silverorange
+ * @copyright 2008-2013 silverorange
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
* @link http://pear.php.net/package/Crypt_GPG
* @link http://www.gnupg.org/
@@ -293,8 +293,10 @@ class Crypt_GPG_DecryptStatusHandler
throw new Crypt_GPG_KeyNotFoundException(
'Cannot decrypt data. No suitable private key is in the ' .
'keyring. Import a suitable private key before trying to ' .
- 'decrypt this data.', $code, $keyId);
-
+ 'decrypt this data.',
+ $code,
+ $keyId
+ );
case Crypt_GPG::ERROR_BAD_PASSPHRASE:
$badPassphrases = array_diff_key(
$this->badPassphrases,
@@ -316,17 +318,23 @@ class Crypt_GPG_DecryptStatusHandler
implode('", "', $badPassphrases) . '".';
}
- throw new Crypt_GPG_BadPassphraseException($message, $code,
- $badPassphrases, $missingPassphrases);
-
+ throw new Crypt_GPG_BadPassphraseException(
+ $message,
+ $code,
+ $badPassphrases,
+ $missingPassphrases
+ );
case Crypt_GPG::ERROR_NO_DATA:
throw new Crypt_GPG_NoDataException(
'Cannot decrypt data. No PGP encrypted data was found in '.
- 'the provided data.', $code);
-
+ 'the provided data.',
+ $code
+ );
default:
throw new Crypt_GPG_Exception(
- 'Unknown error decrypting data.', $code);
+ 'Unknown error decrypting data.',
+ $code
+ );
}
}
diff --git a/program/lib/Crypt/GPG/Engine.php b/program/lib/Crypt/GPG/Engine.php
index 081be8e21..601541443 100644
--- a/program/lib/Crypt/GPG/Engine.php
+++ b/program/lib/Crypt/GPG/Engine.php
@@ -30,9 +30,9 @@
* @package Crypt_GPG
* @author Nathan Fredrickson <nathan@silverorange.com>
* @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2010 silverorange
+ * @copyright 2005-2013 silverorange
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id: Engine.php 302822 2010-08-26 17:30:57Z gauthierm $
+ * @version CVS: $Id$
* @link http://pear.php.net/package/Crypt_GPG
* @link http://www.gnupg.org/
*/
@@ -48,6 +48,16 @@ require_once 'Crypt/GPG.php';
require_once 'Crypt/GPG/Exceptions.php';
/**
+ * Byte string operations.
+ */
+require_once 'Crypt/GPG/ByteUtils.php';
+
+/**
+ * Process control methods.
+ */
+require_once 'Crypt/GPG/ProcessControl.php';
+
+/**
* Standard PEAR exception is used if GPG binary is not found.
*/
require_once 'PEAR/Exception.php';
@@ -70,7 +80,7 @@ require_once 'PEAR/Exception.php';
* @package Crypt_GPG
* @author Nathan Fredrickson <nathan@silverorange.com>
* @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2010 silverorange
+ * @copyright 2005-2013 silverorange
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
* @link http://pear.php.net/package/Crypt_GPG
* @link http://www.gnupg.org/
@@ -163,6 +173,17 @@ class Crypt_GPG_Engine
private $_binary = '';
/**
+ * Location of GnuPG agent binary
+ *
+ * Only used for GnuPG 2.x
+ *
+ * @var string
+ * @see Crypt_GPG_Engine::__construct()
+ * @see Crypt_GPG_Engine::_getAgent()
+ */
+ private $_agent = '';
+
+ /**
* Directory containing the GPG key files
*
* This property only contains the path when the <i>homedir</i> option
@@ -228,6 +249,15 @@ class Crypt_GPG_Engine
private $_pipes = array();
/**
+ * Array of pipes used for communication with the gpg-agent binary
+ *
+ * This is an array of file descriptor resources.
+ *
+ * @var array
+ */
+ private $_agentPipes = array();
+
+ /**
* Array of currently opened pipes
*
* This array is used to keep track of remaining opened pipes so they can
@@ -248,6 +278,20 @@ class Crypt_GPG_Engine
private $_process = null;
/**
+ * A handle for the gpg-agent process
+ *
+ * @var resource
+ */
+ private $_agentProcess = null;
+
+ /**
+ * GPG agent daemon socket and PID for running gpg-agent
+ *
+ * @var string
+ */
+ private $_agentInfo = null;
+
+ /**
* Whether or not the operating system is Darwin (OS X)
*
* @var boolean
@@ -367,18 +411,6 @@ class Crypt_GPG_Engine
*/
private $_version = '';
- /**
- * Cached value indicating whether or not mbstring function overloading is
- * on for strlen
- *
- * This is cached for optimal performance inside the I/O loop.
- *
- * @var boolean
- * @see Crypt_GPG_Engine::_byteLength()
- * @see Crypt_GPG_Engine::_byteSubstring()
- */
- private static $_mbStringOverload = null;
-
// }}}
// {{{ __construct()
@@ -432,6 +464,14 @@ class Crypt_GPG_Engine
* operating system. The option
* <kbd>gpgBinary</kbd> is a
* deprecated alias for this option.
+ * - <kbd>string agent</kbd> - the location of the GnuPG agent
+ * binary. The gpg-agent is only
+ * used for GnuPG 2.x. If not
+ * specified, the engine attempts
+ * to auto-detect the gpg-agent
+ * binary location using a list of
+ * know default locations for the
+ * current operating system.
* - <kbd>boolean debug</kbd> - whether or not to use debug mode.
* When debug mode is on, all
* communication to and from the GPG
@@ -457,24 +497,38 @@ class Crypt_GPG_Engine
* @throws PEAR_Exception if the provided <kbd>binary</kbd> is invalid, or
* if no <kbd>binary</kbd> is provided and no suitable binary could
* be found.
+ *
+ * @throws PEAR_Exception if the provided <kbd>agent</kbd> is invalid, or
+ * if no <kbd>agent</kbd> is provided and no suitable gpg-agent
+ * cound be found.
*/
public function __construct(array $options = array())
{
$this->_isDarwin = (strncmp(strtoupper(PHP_OS), 'DARWIN', 6) === 0);
- // populate mbstring overloading cache if not set
- if (self::$_mbStringOverload === null) {
- self::$_mbStringOverload = (extension_loaded('mbstring')
- && (ini_get('mbstring.func_overload') & 0x02) === 0x02);
- }
-
// get homedir
if (array_key_exists('homedir', $options)) {
$this->_homedir = (string)$options['homedir'];
} else {
- // note: this requires the package OS dep exclude 'windows'
- $info = posix_getpwuid(posix_getuid());
- $this->_homedir = $info['dir'].'/.gnupg';
+ if (extension_loaded('posix')) {
+ // note: this requires the package OS dep exclude 'windows'
+ $info = posix_getpwuid(posix_getuid());
+ $this->_homedir = $info['dir'].'/.gnupg';
+ } else {
+ if (isset($_SERVER['HOME'])) {
+ $this->_homedir = $_SERVER['HOME'];
+ } else {
+ $this->_homedir = getenv('HOME');
+ }
+ }
+
+ if ($this->_homedir === false) {
+ throw new Crypt_GPG_FileException(
+ 'Could not locate homedir. Please specify the homedir ' .
+ 'to use with the \'homedir\' option when instantiating ' .
+ 'the Crypt_GPG object.'
+ );
+ }
}
// attempt to create homedir if it does not exist
@@ -484,16 +538,40 @@ class Crypt_GPG_Engine
// with 0777, homedir is set to 0700.
chmod($this->_homedir, 0700);
} else {
- throw new Crypt_GPG_FileException('The \'homedir\' "' .
- $this->_homedir . '" is not readable or does not exist '.
- 'and cannot be created. This can happen if \'homedir\' '.
- 'is not specified in the Crypt_GPG options, Crypt_GPG is '.
- 'run as the web user, and the web user has no home '.
- 'directory.',
- 0, $this->_homedir);
+ throw new Crypt_GPG_FileException(
+ 'The \'homedir\' "' . $this->_homedir . '" is not ' .
+ 'readable or does not exist and cannot be created. This ' .
+ 'can happen if \'homedir\' is not specified in the ' .
+ 'Crypt_GPG options, Crypt_GPG is run as the web user, ' .
+ 'and the web user has no home directory.',
+ 0,
+ $this->_homedir
+ );
}
}
+ // check homedir permissions (See Bug #19833)
+ if (!is_executable($this->_homedir)) {
+ throw new Crypt_GPG_FileException(
+ 'The \'homedir\' "' . $this->_homedir . '" is not enterable ' .
+ 'by the current user. Please check the permissions on your ' .
+ 'homedir and make sure the current user can both enter and ' .
+ 'write to the directory.',
+ 0,
+ $this->_homedir
+ );
+ }
+ if (!is_writeable($this->_homedir)) {
+ throw new Crypt_GPG_FileException(
+ 'The \'homedir\' "' . $this->_homedir . '" is not writable ' .
+ 'by the current user. Please check the permissions on your ' .
+ 'homedir and make sure the current user can both enter and ' .
+ 'write to the directory.',
+ 0,
+ $this->_homedir
+ );
+ }
+
// get binary
if (array_key_exists('binary', $options)) {
$this->_binary = (string)$options['binary'];
@@ -505,9 +583,26 @@ class Crypt_GPG_Engine
}
if ($this->_binary == '' || !is_executable($this->_binary)) {
- throw new PEAR_Exception('GPG binary not found. If you are sure '.
- 'the GPG binary is installed, please specify the location of '.
- 'the GPG binary using the \'binary\' driver option.');
+ throw new PEAR_Exception(
+ 'GPG binary not found. If you are sure the GPG binary is ' .
+ 'installed, please specify the location of the GPG binary ' .
+ 'using the \'binary\' driver option.'
+ );
+ }
+
+ // get agent
+ if (array_key_exists('agent', $options)) {
+ $this->_agent = (string)$options['agent'];
+ } else {
+ $this->_agent = $this->_getAgent();
+ }
+
+ if ($this->_agent == '' || !is_executable($this->_agent)) {
+ throw new PEAR_Exception(
+ 'gpg-agent binary not found. If you are sure the gpg-agent ' .
+ 'is installed, please specify the location of the gpg-agent ' .
+ 'binary using the \'agent\' driver option.'
+ );
}
/*
@@ -891,7 +986,7 @@ class Crypt_GPG_Engine
}
$matches = array();
- $expression = '/gpg \(GnuPG\) (\S+)/';
+ $expression = '#gpg \(GnuPG[A-Za-z0-9/]*?\) (\S+)#';
if (preg_match($expression, $info, $matches) === 1) {
$this->_version = $matches[1];
@@ -1114,6 +1209,9 @@ class Crypt_GPG_Engine
$fdCommand = $this->_pipes[self::FD_COMMAND];
$fdMessage = $this->_pipes[self::FD_MESSAGE];
+ // select loop delay in milliseconds
+ $delay = 0;
+
while (true) {
$inputStreams = array();
@@ -1166,15 +1264,15 @@ class Crypt_GPG_Engine
$outputStreams[] = $this->_output;
}
- if ($this->_commandBuffer != '') {
+ if ($this->_commandBuffer != '' && is_resource($fdCommand)) {
$outputStreams[] = $fdCommand;
}
- if ($messageBuffer != '') {
+ if ($messageBuffer != '' && is_resource($fdMessage)) {
$outputStreams[] = $fdMessage;
}
- if ($inputBuffer != '') {
+ if ($inputBuffer != '' && is_resource($fdInput)) {
$outputStreams[] = $fdInput;
}
@@ -1209,33 +1307,41 @@ class Crypt_GPG_Engine
}
// write input (to GPG)
- if (in_array($fdInput, $outputStreams)) {
+ if (in_array($fdInput, $outputStreams, true)) {
$this->_debug('GPG is ready for input');
- $chunk = self::_byteSubstring(
+ $chunk = Crypt_GPG_ByteUtils::substr(
$inputBuffer,
0,
self::CHUNK_SIZE
);
- $length = self::_byteLength($chunk);
+ $length = Crypt_GPG_ByteUtils::strlen($chunk);
$this->_debug(
'=> about to write ' . $length . ' bytes to GPG input'
);
$length = fwrite($fdInput, $chunk, $length);
-
- $this->_debug('=> wrote ' . $length . ' bytes');
-
- $inputBuffer = self::_byteSubstring(
- $inputBuffer,
- $length
- );
+ if ($length === 0) {
+ // If we wrote 0 bytes it was either EAGAIN or EPIPE. Since
+ // the pipe was seleted for writing, we assume it was EPIPE.
+ // There's no way to get the actual erorr code in PHP. See
+ // PHP Bug #39598. https://bugs.php.net/bug.php?id=39598
+ $this->_debug('=> broken pipe on GPG input');
+ $this->_debug('=> closing pipe GPG input');
+ $this->_closePipe(self::FD_INPUT);
+ } else {
+ $this->_debug('=> wrote ' . $length . ' bytes');
+ $inputBuffer = Crypt_GPG_ByteUtils::substr(
+ $inputBuffer,
+ $length
+ );
+ }
}
// read input (from PHP stream)
- if (in_array($this->_input, $inputStreams)) {
+ if (in_array($this->_input, $inputStreams, true)) {
$this->_debug('input stream is ready for reading');
$this->_debug(
'=> about to read ' . self::CHUNK_SIZE .
@@ -1243,36 +1349,48 @@ class Crypt_GPG_Engine
);
$chunk = fread($this->_input, self::CHUNK_SIZE);
- $length = self::_byteLength($chunk);
+ $length = Crypt_GPG_ByteUtils::strlen($chunk);
$inputBuffer .= $chunk;
$this->_debug('=> read ' . $length . ' bytes');
}
// write message (to GPG)
- if (in_array($fdMessage, $outputStreams)) {
+ if (in_array($fdMessage, $outputStreams, true)) {
$this->_debug('GPG is ready for message data');
- $chunk = self::_byteSubstring(
+ $chunk = Crypt_GPG_ByteUtils::substr(
$messageBuffer,
0,
self::CHUNK_SIZE
);
- $length = self::_byteLength($chunk);
+ $length = Crypt_GPG_ByteUtils::strlen($chunk);
$this->_debug(
'=> about to write ' . $length . ' bytes to GPG message'
);
$length = fwrite($fdMessage, $chunk, $length);
- $this->_debug('=> wrote ' . $length . ' bytes');
-
- $messageBuffer = self::_byteSubstring($messageBuffer, $length);
+ if ($length === 0) {
+ // If we wrote 0 bytes it was either EAGAIN or EPIPE. Since
+ // the pipe was seleted for writing, we assume it was EPIPE.
+ // There's no way to get the actual erorr code in PHP. See
+ // PHP Bug #39598. https://bugs.php.net/bug.php?id=39598
+ $this->_debug('=> broken pipe on GPG message');
+ $this->_debug('=> closing pipe GPG message');
+ $this->_closePipe(self::FD_MESSAGE);
+ } else {
+ $this->_debug('=> wrote ' . $length . ' bytes');
+ $messageBuffer = Crypt_GPG_ByteUtils::substr(
+ $messageBuffer,
+ $length
+ );
+ }
}
// read message (from PHP stream)
- if (in_array($this->_message, $inputStreams)) {
+ if (in_array($this->_message, $inputStreams, true)) {
$this->_debug('message stream is ready for reading');
$this->_debug(
'=> about to read ' . self::CHUNK_SIZE .
@@ -1280,14 +1398,14 @@ class Crypt_GPG_Engine
);
$chunk = fread($this->_message, self::CHUNK_SIZE);
- $length = self::_byteLength($chunk);
+ $length = Crypt_GPG_ByteUtils::strlen($chunk);
$messageBuffer .= $chunk;
$this->_debug('=> read ' . $length . ' bytes');
}
// read output (from GPG)
- if (in_array($fdOutput, $inputStreams)) {
+ if (in_array($fdOutput, $inputStreams, true)) {
$this->_debug('GPG output stream ready for reading');
$this->_debug(
'=> about to read ' . self::CHUNK_SIZE .
@@ -1295,23 +1413,23 @@ class Crypt_GPG_Engine
);
$chunk = fread($fdOutput, self::CHUNK_SIZE);
- $length = self::_byteLength($chunk);
+ $length = Crypt_GPG_ByteUtils::strlen($chunk);
$outputBuffer .= $chunk;
$this->_debug('=> read ' . $length . ' bytes');
}
// write output (to PHP stream)
- if (in_array($this->_output, $outputStreams)) {
+ if (in_array($this->_output, $outputStreams, true)) {
$this->_debug('output stream is ready for data');
- $chunk = self::_byteSubstring(
+ $chunk = Crypt_GPG_ByteUtils::substr(
$outputBuffer,
0,
self::CHUNK_SIZE
);
- $length = self::_byteLength($chunk);
+ $length = Crypt_GPG_ByteUtils::strlen($chunk);
$this->_debug(
'=> about to write ' . $length . ' bytes to output stream'
@@ -1321,11 +1439,14 @@ class Crypt_GPG_Engine
$this->_debug('=> wrote ' . $length . ' bytes');
- $outputBuffer = self::_byteSubstring($outputBuffer, $length);
+ $outputBuffer = Crypt_GPG_ByteUtils::substr(
+ $outputBuffer,
+ $length
+ );
}
// read error (from GPG)
- if (in_array($fdError, $inputStreams)) {
+ if (in_array($fdError, $inputStreams, true)) {
$this->_debug('GPG error stream ready for reading');
$this->_debug(
'=> about to read ' . self::CHUNK_SIZE .
@@ -1333,14 +1454,14 @@ class Crypt_GPG_Engine
);
$chunk = fread($fdError, self::CHUNK_SIZE);
- $length = self::_byteLength($chunk);
+ $length = Crypt_GPG_ByteUtils::strlen($chunk);
$errorBuffer .= $chunk;
$this->_debug('=> read ' . $length . ' bytes');
// pass lines to error handlers
while (($pos = strpos($errorBuffer, PHP_EOL)) !== false) {
- $line = self::_byteSubstring($errorBuffer, 0, $pos);
+ $line = Crypt_GPG_ByteUtils::substr($errorBuffer, 0, $pos);
foreach ($this->_errorHandlers as $handler) {
array_unshift($handler['args'], $line);
call_user_func_array(
@@ -1350,15 +1471,15 @@ class Crypt_GPG_Engine
array_shift($handler['args']);
}
- $errorBuffer = self::_byteSubString(
+ $errorBuffer = Crypt_GPG_ByteUtils::substr(
$errorBuffer,
- $pos + self::_byteLength(PHP_EOL)
+ $pos + Crypt_GPG_ByteUtils::strlen(PHP_EOL)
);
}
}
// read status (from GPG)
- if (in_array($fdStatus, $inputStreams)) {
+ if (in_array($fdStatus, $inputStreams, true)) {
$this->_debug('GPG status stream ready for reading');
$this->_debug(
'=> about to read ' . self::CHUNK_SIZE .
@@ -1366,17 +1487,17 @@ class Crypt_GPG_Engine
);
$chunk = fread($fdStatus, self::CHUNK_SIZE);
- $length = self::_byteLength($chunk);
+ $length = Crypt_GPG_ByteUtils::strlen($chunk);
$statusBuffer .= $chunk;
$this->_debug('=> read ' . $length . ' bytes');
// pass lines to status handlers
while (($pos = strpos($statusBuffer, PHP_EOL)) !== false) {
- $line = self::_byteSubstring($statusBuffer, 0, $pos);
+ $line = Crypt_GPG_ByteUtils::substr($statusBuffer, 0, $pos);
// only pass lines beginning with magic prefix
- if (self::_byteSubstring($line, 0, 9) == '[GNUPG:] ') {
- $line = self::_byteSubstring($line, 9);
+ if (Crypt_GPG_ByteUtils::substr($line, 0, 9) == '[GNUPG:] ') {
+ $line = Crypt_GPG_ByteUtils::substr($line, 9);
foreach ($this->_statusHandlers as $handler) {
array_unshift($handler['args'], $line);
call_user_func_array(
@@ -1387,38 +1508,60 @@ class Crypt_GPG_Engine
array_shift($handler['args']);
}
}
- $statusBuffer = self::_byteSubString(
+ $statusBuffer = Crypt_GPG_ByteUtils::substr(
$statusBuffer,
- $pos + self::_byteLength(PHP_EOL)
+ $pos + Crypt_GPG_ByteUtils::strlen(PHP_EOL)
);
}
}
// write command (to GPG)
- if (in_array($fdCommand, $outputStreams)) {
+ if (in_array($fdCommand, $outputStreams, true)) {
$this->_debug('GPG is ready for command data');
// send commands
- $chunk = self::_byteSubstring(
+ $chunk = Crypt_GPG_ByteUtils::substr(
$this->_commandBuffer,
0,
self::CHUNK_SIZE
);
- $length = self::_byteLength($chunk);
+ $length = Crypt_GPG_ByteUtils::strlen($chunk);
$this->_debug(
'=> about to write ' . $length . ' bytes to GPG command'
);
$length = fwrite($fdCommand, $chunk, $length);
+ if ($length === 0) {
+ // If we wrote 0 bytes it was either EAGAIN or EPIPE. Since
+ // the pipe was seleted for writing, we assume it was EPIPE.
+ // There's no way to get the actual erorr code in PHP. See
+ // PHP Bug #39598. https://bugs.php.net/bug.php?id=39598
+ $this->_debug('=> broken pipe on GPG command');
+ $this->_debug('=> closing pipe GPG command');
+ $this->_closePipe(self::FD_COMMAND);
+ } else {
+ $this->_debug('=> wrote ' . $length);
+ $this->_commandBuffer = Crypt_GPG_ByteUtils::substr(
+ $this->_commandBuffer,
+ $length
+ );
+ }
+ }
- $this->_debug('=> wrote ' . $length);
+ if (count($outputStreams) === 0 || count($inputStreams) === 0) {
+ // we have an I/O imbalance, increase the select loop delay
+ // to smooth things out
+ $delay += 10;
+ } else {
+ // things are running smoothly, decrease the delay
+ $delay -= 8;
+ $delay = max(0, $delay);
+ }
- $this->_commandBuffer = self::_byteSubstring(
- $this->_commandBuffer,
- $length
- );
+ if ($delay > 0) {
+ usleep($delay);
}
} // end loop while streams are open
@@ -1449,12 +1592,83 @@ class Crypt_GPG_Engine
{
$version = $this->getVersion();
+ // Binary operations will not work on Windows with PHP < 5.2.6. This is
+ // in case stream_select() ever works on Windows.
+ $rb = (version_compare(PHP_VERSION, '5.2.6') < 0) ? 'r' : 'rb';
+ $wb = (version_compare(PHP_VERSION, '5.2.6') < 0) ? 'w' : 'wb';
+
$env = $_ENV;
// Newer versions of GnuPG return localized results. Crypt_GPG only
// works with English, so set the locale to 'C' for the subprocess.
$env['LC_ALL'] = 'C';
+ // If using GnuPG 2.x start the gpg-agent
+ if (version_compare($version, '2.0.0', 'ge')) {
+ $agentCommandLine = $this->_agent;
+
+ $agentArguments = array(
+ '--options /dev/null', // ignore any saved options
+ '--csh', // output is easier to parse
+ '--keep-display', // prevent passing --display to pinentry
+ '--no-grab',
+ '--ignore-cache-for-signing',
+ '--pinentry-touch-file /dev/null',
+ '--disable-scdaemon',
+ '--no-use-standard-socket',
+ '--pinentry-program ' . escapeshellarg($this->_getPinEntry())
+ );
+
+ if ($this->_homedir) {
+ $agentArguments[] = '--homedir ' .
+ escapeshellarg($this->_homedir);
+ }
+
+
+ $agentCommandLine .= ' ' . implode(' ', $agentArguments)
+ . ' --daemon';
+
+ $agentDescriptorSpec = array(
+ self::FD_INPUT => array('pipe', $rb), // stdin
+ self::FD_OUTPUT => array('pipe', $wb), // stdout
+ self::FD_ERROR => array('pipe', $wb) // stderr
+ );
+
+ $this->_debug('OPENING GPG-AGENT SUBPROCESS WITH THE FOLLOWING COMMAND:');
+ $this->_debug($agentCommandLine);
+
+ $this->_agentProcess = proc_open(
+ $agentCommandLine,
+ $agentDescriptorSpec,
+ $this->_agentPipes,
+ null,
+ $env,
+ array('binary_pipes' => true)
+ );
+
+ if (!is_resource($this->_agentProcess)) {
+ throw new Crypt_GPG_OpenSubprocessException(
+ 'Unable to open gpg-agent subprocess.',
+ 0,
+ $agentCommandLine
+ );
+ }
+
+ // Get GPG_AGENT_INFO and set environment variable for gpg process.
+ // This is a blocking read, but is only 1 line.
+ $agentInfo = fread(
+ $this->_agentPipes[self::FD_OUTPUT],
+ self::CHUNK_SIZE
+ );
+
+ $agentInfo = explode(' ', $agentInfo, 3);
+ $this->_agentInfo = $agentInfo[2];
+ $env['GPG_AGENT_INFO'] = $this->_agentInfo;
+
+ // gpg-agent daemon is started, we can close the launching process
+ $this->_closeAgentLaunchProcess();
+ }
+
$commandLine = $this->_binary;
$defaultArguments = array(
@@ -1511,11 +1725,6 @@ class Crypt_GPG_Engine
$commandLine .= ' ' . implode(' ', $arguments) . ' ' .
$this->_operation;
- // Binary operations will not work on Windows with PHP < 5.2.6. This is
- // in case stream_select() ever works on Windows.
- $rb = (version_compare(PHP_VERSION, '5.2.6') < 0) ? 'r' : 'rb';
- $wb = (version_compare(PHP_VERSION, '5.2.6') < 0) ? 'w' : 'wb';
-
$descriptorSpec = array(
self::FD_INPUT => array('pipe', $rb), // stdin
self::FD_OUTPUT => array('pipe', $wb), // stdout
@@ -1525,7 +1734,7 @@ class Crypt_GPG_Engine
self::FD_MESSAGE => array('pipe', $rb) // message
);
- $this->_debug('OPENING SUBPROCESS WITH THE FOLLOWING COMMAND:');
+ $this->_debug('OPENING GPG SUBPROCESS WITH THE FOLLOWING COMMAND:');
$this->_debug($commandLine);
$this->_process = proc_open(
@@ -1542,6 +1751,11 @@ class Crypt_GPG_Engine
'Unable to open GPG subprocess.', 0, $commandLine);
}
+ // Set streams as non-blocking. See Bug #18618.
+ foreach ($this->_pipes as $pipe) {
+ stream_set_blocking($pipe, 0);
+ }
+
$this->_openPipes = $this->_pipes;
$this->_errorCode = Crypt_GPG::ERROR_NONE;
}
@@ -1562,8 +1776,11 @@ class Crypt_GPG_Engine
*/
private function _closeSubprocess()
{
+ // clear PINs from environment if they were set
+ $_ENV['PINENTRY_USER_DATA'] = null;
+
if (is_resource($this->_process)) {
- $this->_debug('CLOSING SUBPROCESS');
+ $this->_debug('CLOSING GPG SUBPROCESS');
// close remaining open pipes
foreach (array_keys($this->_openPipes) as $pipeNumber) {
@@ -1590,9 +1807,55 @@ class Crypt_GPG_Engine
$this->_process = null;
$this->_pipes = array();
}
+
+ $this->_closeAgentLaunchProcess();
+
+ if ($this->_agentInfo !== null) {
+ $this->_debug('STOPPING GPG-AGENT DAEMON');
+
+ $parts = explode(':', $this->_agentInfo, 3);
+ $pid = $parts[1];
+ $process = new Crypt_GPG_ProcessControl($pid);
+
+ // terminate agent daemon
+ $process->terminate();
+
+ while ($process->isRunning()) {
+ usleep(10000); // 10 ms
+ $process->terminate();
+ }
+
+ $this->_agentInfo = null;
+
+ $this->_debug('GPG-AGENT DAEMON STOPPED');
+ }
}
// }}}
+ // {{ _closeAgentLaunchProcess()
+
+ private function _closeAgentLaunchProcess()
+ {
+ if (is_resource($this->_agentProcess)) {
+ $this->_debug('CLOSING GPG-AGENT LAUNCH PROCESS');
+
+ // close agent pipes
+ foreach ($this->_agentPipes as $pipe) {
+ fflush($pipe);
+ fclose($pipe);
+ }
+
+ // close agent launching process
+ proc_close($this->_agentProcess);
+
+ $this->_agentProcess = null;
+ $this->_agentPipes = array();
+
+ $this->_debug('GPG-AGENT LAUNCH PROCESS CLOSED');
+ }
+ }
+
+ // }}
// {{{ _closePipe()
/**
@@ -1658,6 +1921,55 @@ class Crypt_GPG_Engine
}
// }}}
+ // {{ _getAgent()
+
+ private function _getAgent()
+ {
+ $agent = '';
+
+ if ($this->_isDarwin) {
+ $agentFiles = array(
+ '/opt/local/bin/gpg-agent', // MacPorts
+ '/usr/local/bin/gpg-agent', // Mac GPG
+ '/sw/bin/gpg-agent', // Fink
+ '/usr/bin/gpg-agent'
+ );
+ } else {
+ $agentFiles = array(
+ '/usr/bin/gpg-agent',
+ '/usr/local/bin/gpg-agent'
+ );
+ }
+
+ foreach ($agentFiles as $agentFile) {
+ if (is_executable($agentFile)) {
+ $agent = $agentFile;
+ break;
+ }
+ }
+
+ return $agent;
+ }
+
+ // }}
+ // {{ _getPinEntry()
+
+ private function _getPinEntry()
+ {
+ // Check if we're running directly from git or if we're using a
+ // PEAR-packaged version
+ $pinEntry = '@bin-dir@' . DIRECTORY_SEPARATOR . 'crypt-gpg-pinentry';
+
+ if ($pinEntry[0] === '@') {
+ $pinEntry = dirname(__FILE__) . DIRECTORY_SEPARATOR . '..'
+ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'scripts'
+ . DIRECTORY_SEPARATOR . 'crypt-gpg-pinentry';
+ }
+
+ return $pinEntry;
+ }
+
+ // }}
// {{{ _debug()
/**
@@ -1672,7 +1984,7 @@ class Crypt_GPG_Engine
private function _debug($text)
{
if ($this->_debug) {
- if (array_key_exists('SHELL', $_ENV)) {
+ if (php_sapi_name() === 'cli') {
foreach (explode(PHP_EOL, $text) as $line) {
echo "Crypt_GPG DEBUG: ", $line, PHP_EOL;
}
@@ -1687,70 +1999,6 @@ class Crypt_GPG_Engine
}
// }}}
- // {{{ _byteLength()
-
- /**
- * Gets the length of a string in bytes even if mbstring function
- * overloading is turned on
- *
- * This is used for stream-based communication with the GPG subprocess.
- *
- * @param string $string the string for which to get the length.
- *
- * @return integer the length of the string in bytes.
- *
- * @see Crypt_GPG_Engine::$_mbStringOverload
- */
- private static function _byteLength($string)
- {
- if (self::$_mbStringOverload) {
- return mb_strlen($string, '8bit');
- }
-
- return strlen((binary)$string);
- }
-
- // }}}
- // {{{ _byteSubstring()
-
- /**
- * Gets the substring of a string in bytes even if mbstring function
- * overloading is turned on
- *
- * This is used for stream-based communication with the GPG subprocess.
- *
- * @param string $string the input string.
- * @param integer $start the starting point at which to get the substring.
- * @param integer $length optional. The length of the substring.
- *
- * @return string the extracted part of the string. Unlike the default PHP
- * <kbd>substr()</kbd> function, the returned value is
- * always a string and never false.
- *
- * @see Crypt_GPG_Engine::$_mbStringOverload
- */
- private static function _byteSubstring($string, $start, $length = null)
- {
- if (self::$_mbStringOverload) {
- if ($length === null) {
- return mb_substr(
- $string,
- $start,
- self::_byteLength($string) - $start, '8bit'
- );
- }
-
- return mb_substr($string, $start, $length, '8bit');
- }
-
- if ($length === null) {
- return (string)substr((binary)$string, $start);
- }
-
- return (string)substr((binary)$string, $start, $length);
- }
-
- // }}}
}
// }}}
diff --git a/program/lib/Crypt/GPG/Exceptions.php b/program/lib/Crypt/GPG/Exceptions.php
index 744acf5d4..0ca917db6 100644
--- a/program/lib/Crypt/GPG/Exceptions.php
+++ b/program/lib/Crypt/GPG/Exceptions.php
@@ -32,9 +32,9 @@
* @package Crypt_GPG
* @author Nathan Fredrickson <nathan@silverorange.com>
* @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005 silverorange
+ * @copyright 2005-2011 silverorange
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id: Exceptions.php 273745 2009-01-18 05:24:25Z gauthierm $
+ * @version CVS: $Id$
* @link http://pear.php.net/package/Crypt_GPG
*/
@@ -469,5 +469,130 @@ class Crypt_GPG_DeletePrivateKeyException extends Crypt_GPG_Exception
}
// }}}
+// {{{ class Crypt_GPG_KeyNotCreatedException
+
+/**
+ * An exception thrown when an attempt is made to generate a key and the
+ * attempt fails
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2011 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @link http://pear.php.net/package/Crypt_GPG
+ */
+class Crypt_GPG_KeyNotCreatedException extends Crypt_GPG_Exception
+{
+}
+
+// }}}
+// {{{ class Crypt_GPG_InvalidKeyParamsException
+
+/**
+ * An exception thrown when an attempt is made to generate a key and the
+ * key parameters set on the key generator are invalid
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2011 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @link http://pear.php.net/package/Crypt_GPG
+ */
+class Crypt_GPG_InvalidKeyParamsException extends Crypt_GPG_Exception
+{
+ // {{{ private class properties
+
+ /**
+ * The key algorithm
+ *
+ * @var integer
+ */
+ private $_algorithm = 0;
+
+ /**
+ * The key size
+ *
+ * @var integer
+ */
+ private $_size = 0;
+
+ /**
+ * The key usage
+ *
+ * @var integer
+ */
+ private $_usage = 0;
+
+ // }}}
+ // {{{ __construct()
+
+ /**
+ * Creates a new Crypt_GPG_InvalidKeyParamsException
+ *
+ * @param string $message an error message.
+ * @param integer $code a user defined error code.
+ * @param string $algorithm the key algorithm.
+ * @param string $size the key size.
+ * @param string $usage the key usage.
+ */
+ public function __construct(
+ $message,
+ $code = 0,
+ $algorithm = 0,
+ $size = 0,
+ $usage = 0
+ ) {
+ parent::__construct($message, $code);
+
+ $this->_algorithm = $algorithm;
+ $this->_size = $size;
+ $this->_usage = $usage;
+ }
+
+ // }}}
+ // {{{ getAlgorithm()
+
+ /**
+ * Gets the key algorithm
+ *
+ * @return integer the key algorithm.
+ */
+ public function getAlgorithm()
+ {
+ return $this->_algorithm;
+ }
+
+ // }}}
+ // {{{ getSize()
+
+ /**
+ * Gets the key size
+ *
+ * @return integer the key size.
+ */
+ public function getSize()
+ {
+ return $this->_size;
+ }
+
+ // }}}
+ // {{{ getUsage()
+
+ /**
+ * Gets the key usage
+ *
+ * @return integer the key usage.
+ */
+ public function getUsage()
+ {
+ return $this->_usage;
+ }
+
+ // }}}
+}
+
+// }}}
?>
diff --git a/program/lib/Crypt/GPG/Key.php b/program/lib/Crypt/GPG/Key.php
index 67a4b9c7d..6ecb538bc 100644
--- a/program/lib/Crypt/GPG/Key.php
+++ b/program/lib/Crypt/GPG/Key.php
@@ -28,7 +28,7 @@
* @author Michael Gauthier <mike@silverorange.com>
* @copyright 2008-2010 silverorange
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id: Key.php 295621 2010-03-01 04:18:54Z gauthierm $
+ * @version CVS: $Id$
* @link http://pear.php.net/package/Crypt_GPG
*/
diff --git a/program/lib/Crypt/GPG/KeyGenerator.php b/program/lib/Crypt/GPG/KeyGenerator.php
new file mode 100644
index 000000000..f59c0ee3a
--- /dev/null
+++ b/program/lib/Crypt/GPG/KeyGenerator.php
@@ -0,0 +1,790 @@
+<?php
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Crypt_GPG is a package to use GPG from PHP
+ *
+ * This file contains an object that handles GnuPG key generation.
+ *
+ * PHP version 5
+ *
+ * LICENSE:
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of the
+ * License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2011-2013 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @version CVS: $Id:$
+ * @link http://pear.php.net/package/Crypt_GPG
+ * @link http://www.gnupg.org/
+ */
+
+/**
+ * Base class for GPG methods
+ */
+require_once 'Crypt/GPGAbstract.php';
+
+/**
+ * Status output handler for key generation
+ */
+require_once 'Crypt/GPG/KeyGeneratorStatusHandler.php';
+
+/**
+ * Error output handler for key generation
+ */
+require_once 'Crypt/GPG/KeyGeneratorErrorHandler.php';
+
+// {{{ class Crypt_GPG_KeyGenerator
+
+/**
+ * GnuPG key generator
+ *
+ * This class provides an object oriented interface for generating keys with
+ * the GNU Privacy Guard (GPG).
+ *
+ * Secure key generation requires true random numbers, and as such can be slow.
+ * If the operating system runs out of entropy, key generation will block until
+ * more entropy is available.
+ *
+ * If quick key generation is important, a hardware entropy generator, or an
+ * entropy gathering daemon may be installed. For example, administrators of
+ * Debian systems may want to install the 'randomsound' package.
+ *
+ * This class uses the experimental automated key generation support available
+ * in GnuPG. See <b>doc/DETAILS</b> in the
+ * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
+ * information on the key generation format.
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Nathan Fredrickson <nathan@silverorange.com>
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2005-2013 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @link http://pear.php.net/package/Crypt_GPG
+ * @link http://www.gnupg.org/
+ */
+class Crypt_GPG_KeyGenerator extends Crypt_GPGAbstract
+{
+ // {{{ protected properties
+
+ /**
+ * The expiration date of generated keys
+ *
+ * @var integer
+ *
+ * @see Crypt_GPG_KeyGenerator::setExpirationDate()
+ */
+ protected $expirationDate = 0;
+
+ /**
+ * The passphrase of generated keys
+ *
+ * @var string
+ *
+ * @see Crypt_GPG_KeyGenerator::setPassphrase()
+ */
+ protected $passphrase = '';
+
+ /**
+ * The algorithm for generated primary keys
+ *
+ * @var integer
+ *
+ * @see Crypt_GPG_KeyGenerator::setKeyParams()
+ */
+ protected $keyAlgorithm = Crypt_GPG_SubKey::ALGORITHM_DSA;
+
+ /**
+ * The size of generated primary keys
+ *
+ * @var integer
+ *
+ * @see Crypt_GPG_KeyGenerator::setKeyParams()
+ */
+ protected $keySize = 1024;
+
+ /**
+ * The usages of generated primary keys
+ *
+ * This is a bitwise combination of the usage constants in
+ * {@link Crypt_GPG_SubKey}.
+ *
+ * @var integer
+ *
+ * @see Crypt_GPG_KeyGenerator::setKeyParams()
+ */
+ protected $keyUsage = 6; // USAGE_SIGN | USAGE_CERTIFY
+
+ /**
+ * The algorithm for generated sub-keys
+ *
+ * @var integer
+ *
+ * @see Crypt_GPG_KeyGenerator::setSubKeyParams()
+ */
+ protected $subKeyAlgorithm = Crypt_GPG_SubKey::ALGORITHM_ELGAMAL_ENC;
+
+ /**
+ * The size of generated sub-keys
+ *
+ * @var integer
+ *
+ * @see Crypt_GPG_KeyGenerator::setSubKeyParams()
+ */
+ protected $subKeySize = 2048;
+
+ /**
+ * The usages of generated sub-keys
+ *
+ * This is a bitwise combination of the usage constants in
+ * {@link Crypt_GPG_SubKey}.
+ *
+ * @var integer
+ *
+ * @see Crypt_GPG_KeyGenerator::setSubKeyParams()
+ */
+ protected $subKeyUsage = Crypt_GPG_SubKey::USAGE_ENCRYPT;
+
+ /**
+ * The GnuPG status handler to use for key generation
+ *
+ * @var Crypt_GPG_KeyGeneratorStatusHandler
+ *
+ * @see Crypt_GPG_KeyGenerator::setStatusHandler()
+ */
+ protected $statusHandler = null;
+
+ /**
+ * The GnuPG error handler to use for key generation
+ *
+ * @var Crypt_GPG_KeyGeneratorErrorHandler
+ *
+ * @see Crypt_GPG_KeyGenerator::setErrorHandler()
+ */
+ protected $errorHandler = null;
+
+ // }}}
+ // {{{ __construct()
+
+ /**
+ * Creates a new GnuPG key generator
+ *
+ * Available options are:
+ *
+ * - <kbd>string homedir</kbd> - the directory where the GPG
+ * keyring files are stored. If not
+ * specified, Crypt_GPG uses the
+ * default of <kbd>~/.gnupg</kbd>.
+ * - <kbd>string publicKeyring</kbd> - the file path of the public
+ * keyring. Use this if the public
+ * keyring is not in the homedir, or
+ * if the keyring is in a directory
+ * not writable by the process
+ * invoking GPG (like Apache). Then
+ * you can specify the path to the
+ * keyring with this option
+ * (/foo/bar/pubring.gpg), and specify
+ * a writable directory (like /tmp)
+ * using the <i>homedir</i> option.
+ * - <kbd>string privateKeyring</kbd> - the file path of the private
+ * keyring. Use this if the private
+ * keyring is not in the homedir, or
+ * if the keyring is in a directory
+ * not writable by the process
+ * invoking GPG (like Apache). Then
+ * you can specify the path to the
+ * keyring with this option
+ * (/foo/bar/secring.gpg), and specify
+ * a writable directory (like /tmp)
+ * using the <i>homedir</i> option.
+ * - <kbd>string trustDb</kbd> - the file path of the web-of-trust
+ * database. Use this if the trust
+ * database is not in the homedir, or
+ * if the database is in a directory
+ * not writable by the process
+ * invoking GPG (like Apache). Then
+ * you can specify the path to the
+ * trust database with this option
+ * (/foo/bar/trustdb.gpg), and specify
+ * a writable directory (like /tmp)
+ * using the <i>homedir</i> option.
+ * - <kbd>string binary</kbd> - the location of the GPG binary. If
+ * not specified, the driver attempts
+ * to auto-detect the GPG binary
+ * location using a list of known
+ * default locations for the current
+ * operating system. The option
+ * <kbd>gpgBinary</kbd> is a
+ * deprecated alias for this option.
+ * - <kbd>string agent</kbd> - the location of the GnuPG agent
+ * binary. The gpg-agent is only
+ * used for GnuPG 2.x. If not
+ * specified, the engine attempts
+ * to auto-detect the gpg-agent
+ * binary location using a list of
+ * know default locations for the
+ * current operating system.
+ * - <kbd>boolean debug</kbd> - whether or not to use debug mode.
+ * When debug mode is on, all
+ * communication to and from the GPG
+ * subprocess is logged. This can be
+ *
+ * @param array $options optional. An array of options used to create the
+ * GPG object. All options are optional and are
+ * represented as key-value pairs.
+ *
+ * @throws Crypt_GPG_FileException if the <kbd>homedir</kbd> does not exist
+ * and cannot be created. This can happen if <kbd>homedir</kbd> is
+ * not specified, Crypt_GPG is run as the web user, and the web
+ * user has no home directory. This exception is also thrown if any
+ * of the options <kbd>publicKeyring</kbd>,
+ * <kbd>privateKeyring</kbd> or <kbd>trustDb</kbd> options are
+ * specified but the files do not exist or are are not readable.
+ * This can happen if the user running the Crypt_GPG process (for
+ * example, the Apache user) does not have permission to read the
+ * files.
+ *
+ * @throws PEAR_Exception if the provided <kbd>binary</kbd> is invalid, or
+ * if no <kbd>binary</kbd> is provided and no suitable binary could
+ * be found.
+ *
+ * @throws PEAR_Exception if the provided <kbd>agent</kbd> is invalid, or
+ * if no <kbd>agent</kbd> is provided and no suitable gpg-agent
+ * cound be found.
+ */
+ public function __construct(array $options = array())
+ {
+ parent::__construct($options);
+
+ $this->statusHandler = new Crypt_GPG_KeyGeneratorStatusHandler();
+ $this->errorHandler = new Crypt_GPG_KeyGeneratorErrorHandler();
+ }
+
+ // }}}
+ // {{{ setExpirationDate()
+
+ /**
+ * Sets the expiration date of generated keys
+ *
+ * @param string|integer $date either a string that may be parsed by
+ * PHP's strtotime() function, or an integer
+ * timestamp representing the number of seconds
+ * since the UNIX epoch. This date must be at
+ * least one date in the future. Keys that
+ * expire in the past may not be generated. Use
+ * an expiration date of 0 for keys that do not
+ * expire.
+ *
+ * @throws InvalidArgumentException if the date is not a valid format, or
+ * if the date is not at least one day in
+ * the future, or if the date is greater
+ * than 2038-01-19T03:14:07.
+ *
+ * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
+ */
+ public function setExpirationDate($date)
+ {
+ if (is_int($date) || ctype_digit(strval($date))) {
+ $expirationDate = intval($date);
+ } else {
+ $expirationDate = strtotime($date);
+ }
+
+ if ($expirationDate === false) {
+ throw new InvalidArgumentException(
+ sprintf(
+ 'Invalid expiration date format: "%s". Please use a ' .
+ 'format compatible with PHP\'s strtotime().',
+ $date
+ )
+ );
+ }
+
+ if ($expirationDate !== 0 && $expirationDate < time() + 86400) {
+ throw new InvalidArgumentException(
+ 'Expiration date must be at least a day in the future.'
+ );
+ }
+
+ // GnuPG suffers from the 2038 bug
+ if ($expirationDate > 2147483647) {
+ throw new InvalidArgumentException(
+ 'Expiration date must not be greater than 2038-01-19T03:14:07.'
+ );
+ }
+
+ $this->expirationDate = $expirationDate;
+
+ return $this;
+ }
+
+ // }}}
+ // {{{ setPassphrase()
+
+ /**
+ * Sets the passphrase of generated keys
+ *
+ * @param string $passphrase the passphrase to use for generated keys. Use
+ * null or an empty string for no passphrase.
+ *
+ * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
+ */
+ public function setPassphrase($passphrase)
+ {
+ $this->passphrase = strval($passphrase);
+ return $this;
+ }
+
+ // }}}
+ // {{{ setKeyParams()
+
+ /**
+ * Sets the parameters for the primary key of generated key-pairs
+ *
+ * @param integer $algorithm the algorithm used by the key. This should be
+ * one of the Crypt_GPG_SubKey::ALGORITHM_*
+ * constants.
+ * @param integer $size optional. The size of the key. Different
+ * algorithms have different size requirements.
+ * If not specified, the default size for the
+ * specified algorithm will be used. If an
+ * invalid key size is used, GnuPG will do its
+ * best to round it to a valid size.
+ * @param integer $usage optional. A bitwise combination of key usages.
+ * If not specified, the primary key will be used
+ * only to sign and certify. This is the default
+ * behavior of GnuPG in interactive mode. Use
+ * the Crypt_GPG_SubKey::USAGE_* constants here.
+ * The primary key may be used to certify even
+ * if the certify usage is not specified.
+ *
+ * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
+ */
+ public function setKeyParams($algorithm, $size = 0, $usage = 0)
+ {
+ $apgorithm = intval($algorithm);
+
+ if ($algorithm === Crypt_GPG_SubKey::ALGORITHM_ELGAMAL_ENC) {
+ throw new Crypt_GPG_InvalidKeyParamsException(
+ 'Primary key algorithm must be capable of signing. The ' .
+ 'Elgamal algorithm can only encrypt.',
+ 0,
+ $algorithm,
+ $size,
+ $usage
+ );
+ }
+
+ if ($size != 0) {
+ $size = intval($size);
+ }
+
+ if ($usage != 0) {
+ $usage = intval($usage);
+ }
+
+ $usageEncrypt = Crypt_GPG_SubKey::USAGE_ENCRYPT;
+
+ if ( $algorithm === Crypt_GPG_SubKey::ALGORITHM_DSA
+ && ($usage & $usageEncrypt) === $usageEncrypt
+ ) {
+ throw new Crypt_GPG_InvalidKeyParamsException(
+ 'The DSA algorithm is not capable of encrypting. Please ' .
+ 'specify a different algorithm or do not include encryption ' .
+ 'as a usage for the primary key.',
+ 0,
+ $algorithm,
+ $size,
+ $usage
+ );
+ }
+
+ $this->keyAlgorithm = $algorithm;
+
+ if ($size != 0) {
+ $this->keySize = $size;
+ }
+
+ if ($usage != 0) {
+ $this->keyUsage = $usage;
+ }
+
+ return $this;
+ }
+
+ // }}}
+ // {{{ setSubKeyParams()
+
+ /**
+ * Sets the parameters for the sub-key of generated key-pairs
+ *
+ * @param integer $algorithm the algorithm used by the key. This should be
+ * one of the Crypt_GPG_SubKey::ALGORITHM_*
+ * constants.
+ * @param integer $size optional. The size of the key. Different
+ * algorithms have different size requirements.
+ * If not specified, the default size for the
+ * specified algorithm will be used. If an
+ * invalid key size is used, GnuPG will do its
+ * best to round it to a valid size.
+ * @param integer $usage optional. A bitwise combination of key usages.
+ * If not specified, the sub-key will be used
+ * only to encrypt. This is the default behavior
+ * of GnuPG in interactive mode. Use the
+ * Crypt_GPG_SubKey::USAGE_* constants here.
+ *
+ * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
+ */
+ public function setSubKeyParams($algorithm, $size = '', $usage = 0)
+ {
+ $apgorithm = intval($algorithm);
+
+ if ($size != 0) {
+ $size = intval($size);
+ }
+
+ if ($usage != 0) {
+ $usage = intval($usage);
+ }
+
+ $usageSign = Crypt_GPG_SubKey::USAGE_SIGN;
+
+ if ( $algorithm === Crypt_GPG_SubKey::ALGORITHM_ELGAMAL_ENC
+ && ($usage & $usageSign) === $usageSign
+ ) {
+ throw new Crypt_GPG_InvalidKeyParamsException(
+ 'The Elgamal algorithm is not capable of signing. Please ' .
+ 'specify a different algorithm or do not include signing ' .
+ 'as a usage for the sub-key.',
+ 0,
+ $algorithm,
+ $size,
+ $usage
+ );
+ }
+
+ $usageEncrypt = Crypt_GPG_SubKey::USAGE_ENCRYPT;
+
+ if ( $algorithm === Crypt_GPG_SubKey::ALGORITHM_DSA
+ && ($usage & $usageEncrypt) === $usageEncrypt
+ ) {
+ throw new Crypt_GPG_InvalidKeyParamsException(
+ 'The DSA algorithm is not capable of encrypting. Please ' .
+ 'specify a different algorithm or do not include encryption ' .
+ 'as a usage for the sub-key.',
+ 0,
+ $algorithm,
+ $size,
+ $usage
+ );
+ }
+
+ $this->subKeyAlgorithm = $algorithm;
+
+ if ($size != 0) {
+ $this->subKeySize = $size;
+ }
+
+ if ($usage != 0) {
+ $this->subKeyUsage = $usage;
+ }
+
+ return $this;
+ }
+
+ // }}}
+ // {{{ setStatusHandler()
+
+ /**
+ * Sets the status handler to use for key generation
+ *
+ * Normally this method does not need to be used. It provides a means for
+ * dependency injection.
+ *
+ * @param Crypt_GPG_KeyStatusHandler $handler the key status handler to
+ * use.
+ *
+ * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
+ */
+ public function setStatusHandler(
+ Crypt_GPG_KeyGeneratorStatusHandler $handler
+ ) {
+ $this->statusHandler = $handler;
+ return $this;
+ }
+
+ // }}}
+ // {{{ setErrorHandler()
+
+ /**
+ * Sets the error handler to use for key generation
+ *
+ * Normally this method does not need to be used. It provides a means for
+ * dependency injection.
+ *
+ * @param Crypt_GPG_KeyErrorHandler $handler the key error handler to
+ * use.
+ *
+ * @return Crypt_GPG_KeyGenerator the current object, for fluent interface.
+ */
+ public function setErrorHandler(
+ Crypt_GPG_KeyGeneratorErrorHandler $handler
+ ) {
+ $this->errorHandler = $handler;
+ return $this;
+ }
+
+ // }}}
+ // {{{ generateKey()
+
+ /**
+ * Generates a new key-pair in the current keyring
+ *
+ * Secure key generation requires true random numbers, and as such can be
+ * solw. If the operating system runs out of entropy, key generation will
+ * block until more entropy is available.
+ *
+ * If quick key generation is important, a hardware entropy generator, or
+ * an entropy gathering daemon may be installed. For example,
+ * administrators of Debian systems may want to install the 'randomsound'
+ * package.
+ *
+ * @param string|Crypt_GPG_UserId $name either a {@link Crypt_GPG_UserId}
+ * object, or a string containing
+ * the name of the user id.
+ * @param string $email optional. If <i>$name</i> is
+ * specified as a string, this is
+ * the email address of the user id.
+ * @param string $comment optional. If <i>$name</i> is
+ * specified as a string, this is
+ * the comment of the user id.
+ *
+ * @return Crypt_GPG_Key the newly generated key.
+ *
+ * @throws Crypt_GPG_KeyNotCreatedException if the key parameters are
+ * incorrect, if an unknown error occurs during key generation, or
+ * if the newly generated key is not found in the keyring.
+ *
+ * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
+ * Use the <kbd>debug</kbd> option and file a bug report if these
+ * exceptions occur.
+ */
+ public function generateKey($name, $email = '', $comment = '')
+ {
+ $handle = uniqid('key', true);
+
+ $userId = $this->getUserId($name, $email, $comment);
+
+ $keyParams = array(
+ 'Key-Type' => $this->keyAlgorithm,
+ 'Key-Length' => $this->keySize,
+ 'Key-Usage' => $this->getUsage($this->keyUsage),
+ 'Subkey-Type' => $this->subKeyAlgorithm,
+ 'Subkey-Length' => $this->subKeySize,
+ 'Subkey-Usage' => $this->getUsage($this->subKeyUsage),
+ 'Name-Real' => $userId->getName(),
+ 'Handle' => $handle,
+ );
+
+ if ($this->expirationDate != 0) {
+ // GnuPG only accepts granularity of days
+ $expirationDate = date('Y-m-d', $this->expirationDate);
+ $keyParams['Expire-Date'] = $expirationDate;
+ }
+
+ if ($this->passphrase != '') {
+ $keyParams['Passphrase'] = $this->passphrase;
+ }
+
+ if ($userId->getEmail() != '') {
+ $keyParams['Name-Email'] = $userId->getEmail();
+ }
+
+ if ($userId->getComment() != '') {
+ $keyParams['Name-Comment'] = $userId->getComment();
+ }
+
+
+ $keyParamsFormatted = array();
+ foreach ($keyParams as $name => $value) {
+ $keyParamsFormatted[] = $name . ': ' . $value;
+ }
+
+ $input = implode("\n", $keyParamsFormatted) . "\n%commit\n";
+
+ $statusHandler = clone $this->statusHandler;
+ $statusHandler->setHandle($handle);
+
+ $errorHandler = clone $this->errorHandler;
+
+ $this->engine->reset();
+ $this->engine->addStatusHandler(array($statusHandler, 'handle'));
+ $this->engine->addErrorHandler(array($errorHandler, 'handle'));
+ $this->engine->setInput($input);
+ $this->engine->setOutput($output);
+ $this->engine->setOperation('--gen-key', array('--batch'));
+ $this->engine->run();
+
+ $code = $errorHandler->getErrorCode();
+ switch ($code) {
+ case self::ERROR_BAD_KEY_PARAMS:
+ switch ($errorHandler->getLineNumber()) {
+ case 1:
+ throw new Crypt_GPG_InvalidKeyParamsException(
+ 'Invalid primary key algorithm specified.',
+ 0,
+ $this->keyAlgorithm,
+ $this->keySize,
+ $this->keyUsage
+ );
+ case 4:
+ throw new Crypt_GPG_InvalidKeyParamsException(
+ 'Invalid sub-key algorithm specified.',
+ 0,
+ $this->subKeyAlgorithm,
+ $this->subKeySize,
+ $this->subKeyUsage
+ );
+ default:
+ throw new Crypt_GPG_InvalidKeyParamsException(
+ 'Invalid key algorithm specified.'
+ );
+ }
+ }
+
+ $code = $this->engine->getErrorCode();
+
+ switch ($code) {
+ case self::ERROR_NONE:
+ break;
+ default:
+ throw new Crypt_GPG_Exception(
+ 'Unknown error generating key-pair. Please use the \'debug\' ' .
+ 'option when creating the Crypt_GPG object, and file a bug ' .
+ 'report at ' . self::BUG_URI,
+ $code
+ );
+ }
+
+ $code = $statusHandler->getErrorCode();
+
+ switch ($code) {
+ case self::ERROR_NONE:
+ break;
+ case self::ERROR_KEY_NOT_CREATED:
+ throw new Crypt_GPG_KeyNotCreatedException(
+ 'Unable to create new key-pair. Invalid key parameters. ' .
+ 'Make sure the specified key algorithms and sizes are ' .
+ 'correct.',
+ $code
+ );
+ }
+
+ $fingerprint = $statusHandler->getKeyFingerprint();
+ $keys = $this->_getKeys($fingerprint);
+
+ if (count($keys) === 0) {
+ throw new Crypt_GPG_KeyNotCreatedException(
+ sprintf(
+ 'Newly created key "%s" not found in keyring.',
+ $fingerprint
+ )
+ );
+ }
+
+ return $keys[0];
+ }
+
+ // }}}
+ // {{{ getUsage()
+
+ /**
+ * Builds a GnuPG key usage string suitable for key generation
+ *
+ * See <b>doc/DETAILS</b> in the
+ * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
+ * information on the key usage format.
+ *
+ * @param integer $usage a bitwise combination of the key usages. This is
+ * a combination of the Crypt_GPG_SubKey::USAGE_*
+ * constants.
+ *
+ * @return string the key usage string.
+ */
+ protected function getUsage($usage)
+ {
+ $map = array(
+ Crypt_GPG_SubKey::USAGE_ENCRYPT => 'encrypt',
+ Crypt_GPG_SubKey::USAGE_SIGN => 'sign',
+ Crypt_GPG_SubKey::USAGE_CERTIFY => 'cert',
+ Crypt_GPG_SubKey::USAGE_AUTHENTICATION => 'auth',
+ );
+
+ // cert is always used for primary keys and does not need to be
+ // specified
+ $usage &= ~Crypt_GPG_SubKey::USAGE_CERTIFY;
+
+ $usageArray = array();
+
+ foreach ($map as $key => $value) {
+ if (($usage & $key) === $key) {
+ $usageArray[] = $value;
+ }
+ }
+
+ return implode(',', $usageArray);
+ }
+
+ // }}}
+ // {{{ getUserId()
+
+ /**
+ * Gets a user id object from parameters
+ *
+ * @param string|Crypt_GPG_UserId $name either a {@link Crypt_GPG_UserId}
+ * object, or a string containing
+ * the name of the user id.
+ * @param string $email optional. If <i>$name</i> is
+ * specified as a string, this is
+ * the email address of the user id.
+ * @param string $comment optional. If <i>$name</i> is
+ * specified as a string, this is
+ * the comment of the user id.
+ *
+ * @return Crypt_GPG_UserId a user id object for the specified parameters.
+ */
+ protected function getUserId($name, $email = '', $comment = '')
+ {
+ if ($name instanceof Crypt_GPG_UserId) {
+ $userId = $name;
+ } else {
+ $userId = new Crypt_GPG_UserId();
+ $userId->setName($name)->setEmail($email)->setComment($comment);
+ }
+
+ return $userId;
+ }
+
+ // }}}
+}
+
+// }}}
+
+?>
diff --git a/program/lib/Crypt/GPG/KeyGeneratorErrorHandler.php b/program/lib/Crypt/GPG/KeyGeneratorErrorHandler.php
new file mode 100644
index 000000000..ad9ebf395
--- /dev/null
+++ b/program/lib/Crypt/GPG/KeyGeneratorErrorHandler.php
@@ -0,0 +1,121 @@
+<?php
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Crypt_GPG is a package to use GPG from PHP
+ *
+ * This file contains an object that handles GPG's error output for the
+ * key generation operation.
+ *
+ * PHP version 5
+ *
+ * LICENSE:
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of the
+ * License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2011-2013 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @version CVS: $Id:$
+ * @link http://pear.php.net/package/Crypt_GPG
+ * @link http://www.gnupg.org/
+ */
+
+/**
+ * Error line handler for the key generation operation
+ *
+ * This class is used internally by Crypt_GPG and does not need be used
+ * directly. See the {@link Crypt_GPG} class for end-user API.
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2011-2013 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @link http://pear.php.net/package/Crypt_GPG
+ * @link http://www.gnupg.org/
+ */
+class Crypt_GPG_KeyGeneratorErrorHandler
+{
+ // {{{ protected properties
+
+ /**
+ * Error code (if any) caused by key generation
+ *
+ * @var integer
+ */
+ protected $errorCode = Crypt_GPG::ERROR_NONE;
+
+ /**
+ * Line number at which the error occurred
+ *
+ * @var integer
+ */
+ protected $lineNumber = null;
+
+ // }}}
+ // {{{ handle()
+
+ /**
+ * Handles an error line
+ *
+ * @param string $line the error line to handle.
+ *
+ * @return void
+ */
+ public function handle($line)
+ {
+ $matches = array();
+ $pattern = '/:([0-9]+): invalid algorithm$/';
+ if (preg_match($pattern, $line, $matches) === 1) {
+ $this->errorCode = Crypt_GPG::ERROR_BAD_KEY_PARAMS;
+ $this->lineNumber = intval($matches[1]);
+ }
+ }
+
+ // }}}
+ // {{{ getErrorCode()
+
+ /**
+ * Gets the error code resulting from key gneration
+ *
+ * @return integer the error code resulting from key generation.
+ */
+ public function getErrorCode()
+ {
+ return $this->errorCode;
+ }
+
+ // }}}
+ // {{{ getLineNumber()
+
+ /**
+ * Gets the line number at which the error occurred
+ *
+ * @return integer the line number at which the error occurred. Null if
+ * no error occurred.
+ */
+ public function getLineNumber()
+ {
+ return $this->lineNumber;
+ }
+
+ // }}}
+}
+
+?>
diff --git a/program/lib/Crypt/GPG/KeyGeneratorStatusHandler.php b/program/lib/Crypt/GPG/KeyGeneratorStatusHandler.php
new file mode 100644
index 000000000..8b4c85c7a
--- /dev/null
+++ b/program/lib/Crypt/GPG/KeyGeneratorStatusHandler.php
@@ -0,0 +1,173 @@
+<?php
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Crypt_GPG is a package to use GPG from PHP
+ *
+ * This file contains an object that handles GPG's status output for the
+ * key generation operation.
+ *
+ * PHP version 5
+ *
+ * LICENSE:
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of the
+ * License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2011-2013 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @version CVS: $Id:$
+ * @link http://pear.php.net/package/Crypt_GPG
+ * @link http://www.gnupg.org/
+ */
+
+/**
+ * Status line handler for the key generation operation
+ *
+ * This class is used internally by Crypt_GPG and does not need be used
+ * directly. See the {@link Crypt_GPG} class for end-user API.
+ *
+ * This class is responsible for parsing the final key fingerprint from the
+ * status output and for updating the key generation progress file. See
+ * <b>doc/DETAILS</b> in the
+ * {@link http://www.gnupg.org/download/ GPG distribution} for detailed
+ * information on GPG's status output for the batch key generation operation.
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2011-2013 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @link http://pear.php.net/package/Crypt_GPG
+ * @link http://www.gnupg.org/
+ */
+class Crypt_GPG_KeyGeneratorStatusHandler
+{
+ // {{{ protected properties
+
+ /**
+ * The key fingerprint
+ *
+ * Ths key fingerprint is emitted by GPG after the key generation is
+ * complete.
+ *
+ * @var string
+ */
+ protected $keyFingerprint = '';
+
+ /**
+ * The unique key handle used by this handler
+ *
+ * The key handle is used to track GPG status output for a particular key
+ * before the key has its own identifier.
+ *
+ * @var string
+ *
+ * @see Crypt_GPG_KeyGeneratorStatusHandler::setHandle()
+ */
+ protected $handle = '';
+
+ /**
+ * Error code (if any) caused by key generation
+ *
+ * @var integer
+ */
+ protected $errorCode = Crypt_GPG::ERROR_NONE;
+
+ // }}}
+ // {{{ setHandle()
+
+ /**
+ * Sets the unique key handle used by this handler
+ *
+ * The key handle is used to track GPG status output for a particular key
+ * before the key has its own identifier.
+ *
+ * @param string $handle the key handle this status handle will use.
+ *
+ * @return Crypt_GPG_KeyGeneratorStatusHandler the current object, for
+ * fluent interface.
+ */
+ public function setHandle($handle)
+ {
+ $this->handle = strval($handle);
+ return $this;
+ }
+
+ // }}}
+ // {{{ handle()
+
+ /**
+ * Handles a status line
+ *
+ * @param string $line the status line to handle.
+ *
+ * @return void
+ */
+ public function handle($line)
+ {
+ $tokens = explode(' ', $line);
+ switch ($tokens[0]) {
+ case 'KEY_CREATED':
+ if ($tokens[3] == $this->handle) {
+ $this->keyFingerprint = $tokens[2];
+ }
+ break;
+
+ case 'KEY_NOT_CREATED':
+ if ($tokens[1] == $this->handle) {
+ $this->errorCode = Crypt_GPG::ERROR_KEY_NOT_CREATED;
+ }
+ break;
+
+ case 'PROGRESS':
+ // todo: at some point, support reporting status async
+ break;
+ }
+ }
+
+ // }}}
+ // {{{ getKeyFingerprint()
+
+ /**
+ * Gets the key fingerprint parsed by this handler
+ *
+ * @return array the key fingerprint parsed by this handler.
+ */
+ public function getKeyFingerprint()
+ {
+ return $this->keyFingerprint;
+ }
+
+ // }}}
+ // {{{ getErrorCode()
+
+ /**
+ * Gets the error code resulting from key gneration
+ *
+ * @return integer the error code resulting from key generation.
+ */
+ public function getErrorCode()
+ {
+ return $this->errorCode;
+ }
+
+ // }}}
+}
+
+?>
diff --git a/program/lib/Crypt/GPG/PinEntry.php b/program/lib/Crypt/GPG/PinEntry.php
new file mode 100644
index 000000000..c09703617
--- /dev/null
+++ b/program/lib/Crypt/GPG/PinEntry.php
@@ -0,0 +1,875 @@
+<?php
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Contains a class implementing automatic pinentry for gpg-agent
+ *
+ * PHP version 5
+ *
+ * LICENSE:
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of the
+ * License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2013 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @version CVS: $Id$
+ * @link http://pear.php.net/package/Crypt_GPG
+ */
+
+/**
+ * CLI user-interface and parser.
+ */
+require_once 'Console/CommandLine.php';
+
+// {{{ class Crypt_GPG_PinEntry
+
+/**
+ * A command-line dummy pinentry program for use with gpg-agent and Crypt_GPG
+ *
+ * This pinentry receives passphrases through en environment variable and
+ * automatically enters the PIN in response to gpg-agent requests. No user-
+ * interaction required.
+ *
+ * Thie pinentry can be run independently for testing and debugging with the
+ * following syntax:
+ *
+ * <pre>
+ * Usage:
+ * crypt-gpg-pinentry [options]
+ *
+ * Options:
+ * -l log, --log=log Optional location to log pinentry activity.
+ * -v, --verbose Sets verbosity level. Use multiples for more detail
+ * (e.g. "-vv").
+ * -h, --help show this help message and exit
+ * --version show the program version and exit
+ * </pre>
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2013 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @link http://pear.php.net/package/Crypt_GPG
+ * @see Crypt_GPG::getKeys()
+ */
+class Crypt_GPG_PinEntry
+{
+ // {{{ class constants
+
+ /**
+ * Verbosity level for showing no output.
+ */
+ const VERBOSITY_NONE = 0;
+
+ /**
+ * Verbosity level for showing error output.
+ */
+ const VERBOSITY_ERRORS = 1;
+
+ /**
+ * Verbosity level for showing all output, including Assuan protocol
+ * messages.
+ */
+ const VERBOSITY_ALL = 2;
+
+ /**
+ * Length of buffer for reading lines from the Assuan server.
+ *
+ * PHP reads 8192 bytes. If this is set to less than 8192, PHP reads 8192
+ * and buffers the rest so we might as well just read 8192.
+ *
+ * Using values other than 8192 also triggers PHP bugs.
+ *
+ * @see http://bugs.php.net/bug.php?id=35224
+ */
+ const CHUNK_SIZE = 8192;
+
+ // }}}
+ // {{{ protected properties
+
+ /**
+ * File handle for the input stream
+ *
+ * @var resource
+ */
+ protected $stdin = null;
+
+ /**
+ * File handle for the output stream
+ *
+ * @var resource
+ */
+ protected $stdout = null;
+
+ /**
+ * File handle for the log file if a log file is used
+ *
+ * @var resource
+ */
+ protected $logFile = null;
+
+ /**
+ * Whether or not this pinentry is finished and is exiting
+ *
+ * @var boolean
+ */
+ protected $moribund = false;
+
+ /**
+ * Verbosity level
+ *
+ * One of:
+ * - {@link Crypt_GPG_PinEntry::VERBOSITY_NONE},
+ * - {@link Crypt_GPG_PinEntry::VERBOSITY_ERRORS}, or
+ * - {@link Crypt_GPG_PinEntry::VERBOSITY_ALL}
+ *
+ * @var integer
+ */
+ protected $verbosity = self::VERBOSITY_NONE;
+
+ /**
+ * The command-line interface parser for this pinentry
+ *
+ * @var Console_CommandLine
+ *
+ * @see Crypt_GPG_PinEntry::getParser()
+ */
+ protected $parser = null;
+
+ /**
+ * PINs to be entered by this pinentry
+ *
+ * An indexed array of associative arrays in the form:
+ * <code>
+ * <?php
+ * array(
+ * array(
+ * 'keyId' => $keyId,
+ * 'passphrase' => $passphrase
+ * ),
+ * ...
+ * );
+ * ?>
+ * </code>
+ *
+ * This array is parsed from the environment variable
+ * <kbd>PINENTRY_USER_DATA</kbd>.
+ *
+ * @var array
+ *
+ * @see Crypt_GPG_PinEntry::initPinsFromENV()
+ */
+ protected $pins = array();
+
+ /**
+ * PINs that have been tried for the current PIN
+ *
+ * This is an associative array indexed by the key identifier with
+ * values being the same as elements in the {@link Crypt_GPG_PinEntry::$pins}
+ * array.
+ *
+ * @var array
+ */
+ protected $triedPins = array();
+
+ /**
+ * The PIN currently being requested by the Assuan server
+ *
+ * If set, this is an associative array in the form:
+ * <code>
+ * <?php
+ * array(
+ * 'keyId' => $shortKeyId,
+ * 'userId' => $userIdString
+ * );
+ * ?>
+ * </code>
+ *
+ * @var array|null
+ */
+ protected $currentPin = null;
+
+ // }}}
+ // {{{ __invoke()
+
+ /**
+ * Runs this pinentry
+ *
+ * @return void
+ */
+ public function __invoke()
+ {
+ $this->parser = $this->getCommandLineParser();
+
+ try {
+ $result = $this->parser->parse();
+
+ $this->setVerbosity($result->options['verbose']);
+ $this->setLogFilename($result->options['log']);
+
+ $this->connect();
+ $this->initPinsFromENV();
+
+ while (($line = fgets($this->stdin, self::CHUNK_SIZE)) !== false) {
+ $this->parseCommand(mb_substr($line, 0, -1, '8bit'));
+ if ($this->moribund) {
+ break;
+ }
+ }
+
+ $this->disconnect();
+
+ } catch (Console_CommandLineException $e) {
+ $this->log($e->getMessage() . PHP_EOL, slf::VERBOSITY_ERRORS);
+ exit(1);
+ } catch (Exception $e) {
+ $this->log($e->getMessage() . PHP_EOL, self::VERBOSITY_ERRORS);
+ $this->log($e->getTraceAsString() . PHP_EOL, self::VERBOSITY_ERRORS);
+ exit(1);
+ }
+ }
+
+ // }}}
+ // {{{ setVerbosity()
+
+ /**
+ * Sets the verbosity of logging for this pinentry
+ *
+ * Verbosity levels are:
+ *
+ * - {@link Crypt_GPG_PinEntry::VERBOSITY_NONE} - no logging.
+ * - {@link Crypt_GPG_PinEntry::VERBOSITY_ERRORS} - log errors only.
+ * - {@link Crypt_GPG_PinEntry::VERBOSITY_ALL} - log everything, including
+ * the assuan protocol.
+ *
+ * @param integer $verbosity the level of verbosity of this pinentry.
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ public function setVerbosity($verbosity)
+ {
+ $this->verbosity = (integer)$verbosity;
+ return $this;
+ }
+
+ // }}}
+ // {{{ setLogFilename()
+
+ /**
+ * Sets the log file location
+ *
+ * @param string $filename the new log filename to use. If an empty string
+ * is used, file-based logging is disabled.
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ public function setLogFilename($filename)
+ {
+ if (is_resource($this->logFile)) {
+ fflush($this->logFile);
+ fclose($this->logFile);
+ $this->logFile = null;
+ }
+
+ if ($filename != '') {
+ if (($this->logFile = fopen($filename, 'w')) === false) {
+ $this->log(
+ 'Unable to open log file "' . $filename . '" '
+ . 'for writing.' . PHP_EOL,
+ self::VERBOSITY_ERRORS
+ );
+ exit(1);
+ } else {
+ stream_set_write_buffer($this->logFile, 0);
+ }
+ }
+
+ return $this;
+ }
+
+ // }}}
+ // {{{ getUIXML()
+
+ /**
+ * Gets the CLI user-interface definition for this pinentry
+ *
+ * Detects whether or not this package is PEAR-installed and appropriately
+ * locates the XML UI definition.
+ *
+ * @return string the location of the CLI user-interface definition XML.
+ */
+ protected function getUIXML()
+ {
+ $dir = '@data-dir@' . DIRECTORY_SEPARATOR
+ . '@package-name@' . DIRECTORY_SEPARATOR . 'data';
+
+ // Check if we're running directly from a git checkout or if we're
+ // running from a PEAR-packaged version.
+ if ($dir[0] == '@') {
+ $dir = dirname(__FILE__) . DIRECTORY_SEPARATOR . '..'
+ . DIRECTORY_SEPARATOR . '..' . DIRECTORY_SEPARATOR . 'data';
+ }
+
+ return $dir . DIRECTORY_SEPARATOR . 'pinentry-cli.xml';
+ }
+
+ // }}}
+ // {{{ getCommandLineParser()
+
+ /**
+ * Gets the CLI parser for this pinentry
+ *
+ * @return Console_CommandLine the CLI parser for this pinentry.
+ */
+ protected function getCommandLineParser()
+ {
+ return Console_CommandLine::fromXmlFile($this->getUIXML());
+ }
+
+ // }}}
+ // {{{ log()
+
+ /**
+ * Logs a message at the specified verbosity level
+ *
+ * If a log file is used, the message is written to the log. Otherwise,
+ * the message is sent to STDERR.
+ *
+ * @param string $data the message to log.
+ * @param integer $level the verbosity level above which the message should
+ * be logged.
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function log($data, $level)
+ {
+ if ($this->verbosity >= $level) {
+ if (is_resource($this->logFile)) {
+ fwrite($this->logFile, $data);
+ fflush($this->logFile);
+ } else {
+ $this->parser->outputter->stderr($data);
+ }
+ }
+
+ return $this;
+ }
+
+ // }}}
+ // {{{ connect()
+
+ /**
+ * Connects this pinentry to the assuan server
+ *
+ * Opens I/O streams and sends initial handshake.
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function connect()
+ {
+ // Binary operations will not work on Windows with PHP < 5.2.6.
+ $rb = (version_compare(PHP_VERSION, '5.2.6') < 0) ? 'r' : 'rb';
+ $wb = (version_compare(PHP_VERSION, '5.2.6') < 0) ? 'w' : 'wb';
+
+ $this->stdin = fopen('php://stdin', $rb);
+ $this->stdout = fopen('php://stdout', $wb);
+
+ if (function_exists('stream_set_read_buffer')) {
+ stream_set_read_buffer($this->stdin, 0);
+ }
+ stream_set_write_buffer($this->stdout, 0);
+
+ // initial handshake
+ $this->send($this->getOK('Crypt_GPG pinentry ready and waiting'));
+
+ return $this;
+ }
+
+ // }}}
+ // {{{ parseCommand()
+
+ /**
+ * Parses an assuan command and performs the appropriate action
+ *
+ * Documentation of the assuan commands for pinentry is limited to
+ * non-existent. Most of these commands were taken from the C source code
+ * to gpg-agent and pinentry.
+ *
+ * Additional context was provided by using strace -f when calling the
+ * gpg-agent.
+ *
+ * @param string $line the assuan command line to parse
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function parseCommand($line)
+ {
+ $this->log('<- ' . $line . PHP_EOL, self::VERBOSITY_ALL);
+
+ $parts = explode(' ', $line, 2);
+
+ $command = $parts[0];
+
+ if (count($parts) === 2) {
+ $data = $parts[1];
+ } else {
+ $data = null;
+ }
+
+ switch ($command) {
+ case 'SETDESC':
+ return $this->sendSetDescription($data);
+
+ case 'SETPROMPT':
+ case 'SETERROR':
+ case 'SETOK':
+ case 'SETNOTOK':
+ case 'SETCANCEL':
+ case 'SETQUALITYBAR':
+ case 'SETQUALITYBAR_TT':
+ case 'OPTION':
+ return $this->sendNotImplementedOK();
+
+ case 'MESSAGE':
+ return $this->sendMessage();
+
+ case 'CONFIRM':
+ return $this->sendConfirm();
+
+ case 'GETINFO':
+ return $this->sendGetInfo($data);
+
+ case 'GETPIN':
+ return $this->sendGetPin($data);
+
+ case 'RESET':
+ return $this->sendReset();
+
+ case 'BYE':
+ return $this->sendBye();
+ }
+ }
+
+ // }}}
+ // {{{ initPinsFromENV()
+
+ /**
+ * Initializes the PINs to be entered by this pinentry from the environment
+ * variable PINENTRY_USER_DATA
+ *
+ * The PINs are parsed from a JSON-encoded string.
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function initPinsFromENV()
+ {
+ if (($userData = getenv('PINENTRY_USER_DATA')) !== false) {
+ $pins = json_decode($userData, true);
+ if ($pins === null) {
+ $this->log(
+ '-- failed to parse user data' . PHP_EOL,
+ self::VERBOSITY_ERRORS
+ );
+ } else {
+ $this->pins = $pins;
+ $this->log(
+ '-- got user data [not showing passphrases]' . PHP_EOL,
+ self::VERBOSITY_ALL
+ );
+ }
+ }
+
+ return $this;
+ }
+
+ // }}}
+ // {{{ disconnect()
+
+ /**
+ * Disconnects this pinentry from the Assuan server
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function disconnect()
+ {
+ $this->log('-- disconnecting' . PHP_EOL, self::VERBOSITY_ALL);
+
+ fflush($this->stdout);
+ fclose($this->stdout);
+ fclose($this->stdin);
+
+ $this->stdin = null;
+ $this->stdout = null;
+
+ $this->log('-- disconnected' . PHP_EOL, self::VERBOSITY_ALL);
+
+ if (is_resource($this->logFile)) {
+ fflush($this->logFile);
+ fclose($this->logFile);
+ $this->logFile = null;
+ }
+
+ return $this;
+ }
+
+ // }}}
+ // {{{ sendNotImplementedOK()
+
+ /**
+ * Sends an OK response for a not implemented feature
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function sendNotImplementedOK()
+ {
+ return $this->send($this->getOK());
+ }
+
+ // }}}
+ // {{{ sendSetDescription()
+
+ /**
+ * Parses the currently requested key identifier and user identifier from
+ * the description passed to this pinentry
+ *
+ * @param string $text the raw description sent from gpg-agent.
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function sendSetDescription($text)
+ {
+ $text = rawurldecode($text);
+ $matches = array();
+ // TODO: handle user id with quotation marks
+ $exp = '/\n"(.+)"\n.*\sID ([A-Z0-9]+),\n/mu';
+ if (preg_match($exp, $text, $matches) === 1) {
+ $userId = $matches[1];
+ $keyId = $matches[2];
+
+ // only reset tried pins for new requested pin
+ if ( $this->currentPin === null
+ || $this->currentPin['keyId'] !== $keyId
+ ) {
+ $this->currentPin = array(
+ 'userId' => $userId,
+ 'keyId' => $keyId
+ );
+ $this->triedPins = array();
+ $this->log(
+ '-- looking for PIN for ' . $keyId . PHP_EOL,
+ self::VERBOSITY_ALL
+ );
+ }
+ }
+
+ return $this->send($this->getOK());
+ }
+
+ // }}}
+ // {{{ sendConfirm()
+
+ /**
+ * Tells the assuan server the PIN entry was confirmed (not cancelled)
+ * by pressing the fake 'close' button
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function sendConfirm()
+ {
+ return $this->sendButtonInfo('close');
+ }
+
+ // }}}
+ // {{{ sendMessage()
+
+ /**
+ * Tells the assuan server that any requested pop-up messages were confirmed
+ * by pressing the fake 'close' button
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function sendMessage()
+ {
+ return $this->sendButtonInfo('close');
+ }
+
+ // }}}
+ // {{{ sendButtonInfo()
+
+ /**
+ * Sends information about pressed buttons to the assuan server
+ *
+ * This is used to fake a user-interface for this pinentry.
+ *
+ * @param string $text the button status to send.
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function sendButtonInfo($text)
+ {
+ return $this->send('BUTTON_INFO ' . $text . "\n");
+ }
+
+ // }}}
+ // {{{ sendGetPin()
+
+ /**
+ * Sends the PIN value for the currently requested key
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function sendGetPin()
+ {
+ $foundPin = '';
+
+ if (is_array($this->currentPin)) {
+ $keyIdLength = mb_strlen($this->currentPin['keyId'], '8bit');
+
+ // search for the pin
+ foreach ($this->pins as $pin) {
+ // only check pins we haven't tried
+ if (!isset($this->triedPins[$pin['keyId']])) {
+
+ // get last X characters of key identifier to compare
+ $keyId = mb_substr(
+ $pin['keyId'],
+ -$keyIdLength,
+ mb_strlen($pin['keyId'], '8bit'),
+ '8bit'
+ );
+
+ if ($keyId === $this->currentPin['keyId']) {
+ $foundPin = $pin['passphrase'];
+ $this->triedPins[$pin['keyId']] = $pin;
+ break;
+ }
+ }
+ }
+ }
+
+ return $this
+ ->send($this->getData($foundPin))
+ ->send($this->getOK());
+ }
+
+ // }}}
+ // {{{ sendGetInfo()
+
+ /**
+ * Sends information about this pinentry
+ *
+ * @param string $data the information requested by the assuan server.
+ * Currently only 'pid' is supported. Other requests
+ * return no information.
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function sendGetInfo($data)
+ {
+ $parts = explode(' ', $data, 2);
+ $command = reset($parts);
+
+ switch ($command) {
+ case 'pid':
+ return $this->sendGetInfoPID();
+ default:
+ return $this->send($this->getOK());
+ }
+
+ return $this;
+ }
+ // }}}
+ // {{{ sendGetInfoPID()
+
+ /**
+ * Sends the PID of this pinentry to the assuan server
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function sendGetInfoPID()
+ {
+ return $this
+ ->send($this->getData(getmypid()))
+ ->send($this->getOK());
+ }
+
+ // }}}
+ // {{{ sendBye()
+
+ /**
+ * Flags this pinentry for disconnection and sends an OK response
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function sendBye()
+ {
+ $return = $this->send($this->getOK('closing connection'));
+ $this->moribund = true;
+ return $return;
+ }
+
+ // }}}
+ // {{{ sendReset()
+
+ /**
+ * Resets this pinentry and sends an OK response
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function sendReset()
+ {
+ $this->currentPin = null;
+ $this->triedPins = array();
+ return $this->send($this->getOK());
+ }
+
+ // }}}
+ // {{{ getOK()
+
+ /**
+ * Gets an OK response to send to the assuan server
+ *
+ * @param string $data an optional message to include with the OK response.
+ *
+ * @return string the OK response.
+ */
+ protected function getOK($data = null)
+ {
+ $return = 'OK';
+
+ if ($data) {
+ $return .= ' ' . $data;
+ }
+
+ return $return . "\n";
+ }
+
+ // }}}
+ // {{{ getData()
+
+ /**
+ * Gets data ready to send to the assuan server
+ *
+ * Data is appropriately escaped and long lines are wrapped.
+ *
+ * @param string $data the data to send to the assuan server.
+ *
+ * @return string the properly escaped, formatted data.
+ *
+ * @see http://www.gnupg.org/documentation/manuals/assuan/Server-responses.html
+ */
+ protected function getData($data)
+ {
+ // Escape data. Only %, \n and \r need to be escaped but other
+ // values are allowed to be escaped. See
+ // http://www.gnupg.org/documentation/manuals/assuan/Server-responses.html
+ $data = rawurlencode($data);
+ $data = $this->getWordWrappedData($data, 'D');
+ return $data;
+ }
+
+ // }}}
+ // {{{ getComment()
+
+ /**
+ * Gets a comment ready to send to the assuan server
+ *
+ * @param string $data the comment to send to the assuan server.
+ *
+ * @return string the properly formatted comment.
+ *
+ * @see http://www.gnupg.org/documentation/manuals/assuan/Server-responses.html
+ */
+ protected function getComment($data)
+ {
+ return $this->getWordWrappedData($data, '#');
+ }
+
+ // }}}
+ // {{{ getWordWrappedData()
+
+ /**
+ * Wraps strings at 1,000 bytes without splitting UTF-8 multibyte
+ * characters
+ *
+ * Each line is prepended with the specified line prefix. Wrapped lines
+ * are automatically appended with \ characters.
+ *
+ * Protocol strings are UTF-8 but maximum line length is 1,000 bytes.
+ * <kbd>mb_strcut()</kbd> is used so we can limit line length by bytes
+ * and not split characters across multiple lines.
+ *
+ * @param string $data the data to wrap.
+ * @param string $prefix a single character to use as the line prefix. For
+ * example, 'D' or '#'.
+ *
+ * @return string the word-wrapped, prefixed string.
+ *
+ * @see http://www.gnupg.org/documentation/manuals/assuan/Server-responses.html
+ */
+ protected function getWordWrappedData($data, $prefix)
+ {
+ $lines = array();
+
+ do {
+ if (mb_strlen($data, '8bit') > 997) {
+ $line = $prefix . ' ' . mb_strcut($data, 0, 996, 'utf-8') . "\\\n";
+ $lines[] = $line;
+ $lineLength = mb_strlen($line, '8bit') - 1;
+ $dataLength = mb_substr($data, '8bit');
+ $data = mb_substr(
+ $data,
+ $lineLength,
+ $dataLength - $lineLength,
+ '8bit'
+ );
+ } else {
+ $lines[] = $prefix . ' ' . $data . "\n";
+ $data = '';
+ }
+ } while ($data != '');
+
+ return implode('', $lines);
+ }
+
+ // }}}
+ // {{{ send()
+
+ /**
+ * Sends raw data to the assuan server
+ *
+ * @param string $data the data to send.
+ *
+ * @return Crypt_GPG_PinEntry the current object, for fluent interface.
+ */
+ protected function send($data)
+ {
+ $this->log('-> ' . $data, self::VERBOSITY_ALL);
+ fwrite($this->stdout, $data);
+ fflush($this->stdout);
+ return $this;
+ }
+
+ // }}}
+}
+
+// }}}
+
+?>
diff --git a/program/lib/Crypt/GPG/ProcessControl.php b/program/lib/Crypt/GPG/ProcessControl.php
new file mode 100644
index 000000000..d6dae0325
--- /dev/null
+++ b/program/lib/Crypt/GPG/ProcessControl.php
@@ -0,0 +1,150 @@
+<?php
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * A class for monitoring and terminating processes
+ *
+ * PHP version 5
+ *
+ * LICENSE:
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of the
+ * License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2013 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @version CVS: $Id$
+ * @link http://pear.php.net/package/Crypt_GPG
+ */
+
+// {{{ class Crypt_GPG_ProcessControl
+
+/**
+ * A class for monitoring and terminating processes by PID
+ *
+ * This is used to safely terminate the gpg-agent for GnuPG 2.x. This class
+ * is limited in its abilities and can only check if a PID is running and
+ * send a PID SIGTERM.
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2013 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @link http://pear.php.net/package/Crypt_GPG
+ */
+class Crypt_GPG_ProcessControl
+{
+ // {{{ protected properties
+
+ /**
+ * The PID (process identifier) being monitored
+ *
+ * @var integer
+ */
+ protected $pid;
+
+ // }}}
+ // {{{ __construct()
+
+ /**
+ * Creates a new process controller from the given PID (process identifier)
+ *
+ * @param integer $pid the PID (process identifier).
+ */
+ public function __construct($pid)
+ {
+ $this->pid = $pid;
+ }
+
+ // }}}
+ // {{{ public function getPid()
+
+ /**
+ * Gets the PID (process identifier) being controlled
+ *
+ * @return integer the PID being controlled.
+ */
+ public function getPid()
+ {
+ return $this->pid;
+ }
+
+ // }}}
+ // {{{ isRunning()
+
+ /**
+ * Checks if the process is running
+ *
+ * Uses <kbd>ps</kbd> on UNIX-like systems and <kbd>tasklist</kbd> on
+ * Windows.
+ *
+ * @return boolean true if the process is running, false if not.
+ */
+ public function isRunning()
+ {
+ $running = false;
+
+ if (PHP_OS === 'WINNT') {
+ $command = 'tasklist /fo csv /nh /fi '
+ . escapeshellarg('PID eq ' . $this->pid);
+
+ $result = exec($command);
+ $parts = explode(',', $result);
+ $running = (count($parts) > 1 && trim($parts[1], '"') == $this->pid);
+ } else {
+ $result = exec('ps -p ' . escapeshellarg($this->pid) . ' -o pid=');
+ $running = (trim($result) == $this->pid);
+ }
+
+ return $running;
+ }
+
+ // }}}
+ // {{{ terminate()
+
+ /**
+ * Ends the process gracefully
+ *
+ * The signal SIGTERM is sent to the process. The gpg-agent process will
+ * end gracefully upon receiving the SIGTERM signal. Upon 3 consecutive
+ * SIGTERM signals the gpg-agent will forcefully shut down.
+ *
+ * If the <kbd>posix</kbd> extension is available, <kbd>posix_kill()</kbd>
+ * is used. Otherwise <kbd>kill</kbd> is used on UNIX-like systems and
+ * <kbd>taskkill</kbd> is used in Windows.
+ *
+ * @return void
+ */
+ public function terminate()
+ {
+ if (function_exists('posix_kill')) {
+ posix_kill($this->pid, 15);
+ } elseif (PHP_OS === 'WINNT') {
+ exec('taskkill /PID ' . escapeshellarg($this->pid));
+ } else {
+ exec('kill -15 ' . escapeshellarg($this->pid));
+ }
+ }
+
+ // }}}
+}
+
+// }}}
+
+?>
diff --git a/program/lib/Crypt/GPG/Signature.php b/program/lib/Crypt/GPG/Signature.php
index 03ab44c53..1d28a1188 100644
--- a/program/lib/Crypt/GPG/Signature.php
+++ b/program/lib/Crypt/GPG/Signature.php
@@ -28,9 +28,10 @@
* @category Encryption
* @package Crypt_GPG
* @author Nathan Fredrickson <nathan@silverorange.com>
- * @copyright 2005-2010 silverorange
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2005-2013 silverorange
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id: Signature.php 302773 2010-08-25 14:16:28Z gauthierm $
+ * @version CVS: $Id$
* @link http://pear.php.net/package/Crypt_GPG
*/
@@ -50,7 +51,7 @@ require_once 'Crypt/GPG/UserId.php';
* @package Crypt_GPG
* @author Nathan Fredrickson <nathan@silverorange.com>
* @author Michael Gauthier <mike@silverorange.com>
- * @copyright 2005-2010 silverorange
+ * @copyright 2005-2013 silverorange
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
* @link http://pear.php.net/package/Crypt_GPG
* @see Crypt_GPG::verify()
@@ -159,8 +160,6 @@ class Crypt_GPG_Signature
if ($signature->_userId instanceof Crypt_GPG_UserId) {
$this->_userId = clone $signature->_userId;
- } else {
- $this->_userId = $signature->_userId;
}
}
diff --git a/program/lib/Crypt/GPG/SubKey.php b/program/lib/Crypt/GPG/SubKey.php
index b6316e99f..59245cac1 100644
--- a/program/lib/Crypt/GPG/SubKey.php
+++ b/program/lib/Crypt/GPG/SubKey.php
@@ -29,7 +29,7 @@
* @author Nathan Fredrickson <nathan@silverorange.com>
* @copyright 2005-2010 silverorange
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id: SubKey.php 302768 2010-08-25 13:45:52Z gauthierm $
+ * @version CVS: $Id$
* @link http://pear.php.net/package/Crypt_GPG
*/
@@ -53,7 +53,7 @@
*/
class Crypt_GPG_SubKey
{
- // {{{ class constants
+ // {{{ algorithm class constants
/**
* RSA encryption algorithm.
@@ -77,6 +77,29 @@ class Crypt_GPG_SubKey
const ALGORITHM_ELGAMAL_ENC_SGN = 20;
// }}}
+ // {{{ usage class constants
+
+ /**
+ * Key can be used to encrypt
+ */
+ const USAGE_ENCRYPT = 1;
+
+ /**
+ * Key can be used to sign
+ */
+ const USAGE_SIGN = 2;
+
+ /**
+ * Key can be used to certify other keys
+ */
+ const USAGE_CERTIFY = 4;
+
+ /**
+ * Key can be used for authentication
+ */
+ const USAGE_AUTHENTICATION = 8;
+
+ // }}}
// {{{ class properties
/**
diff --git a/program/lib/Crypt/GPG/UserId.php b/program/lib/Crypt/GPG/UserId.php
index 04435708c..a367bceb3 100644
--- a/program/lib/Crypt/GPG/UserId.php
+++ b/program/lib/Crypt/GPG/UserId.php
@@ -28,7 +28,7 @@
* @author Michael Gauthier <mike@silverorange.com>
* @copyright 2008-2010 silverorange
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id: UserId.php 295621 2010-03-01 04:18:54Z gauthierm $
+ * @version CVS: $Id$
* @link http://pear.php.net/package/Crypt_GPG
*/
diff --git a/program/lib/Crypt/GPG/VerifyStatusHandler.php b/program/lib/Crypt/GPG/VerifyStatusHandler.php
index 083bd3012..8904be149 100644
--- a/program/lib/Crypt/GPG/VerifyStatusHandler.php
+++ b/program/lib/Crypt/GPG/VerifyStatusHandler.php
@@ -31,7 +31,7 @@
* @author Michael Gauthier <mike@silverorange.com>
* @copyright 2008 silverorange
* @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
- * @version CVS: $Id: VerifyStatusHandler.php 302908 2010-08-31 03:56:54Z gauthierm $
+ * @version CVS: $Id$
* @link http://pear.php.net/package/Crypt_GPG
* @link http://www.gnupg.org/
*/
diff --git a/program/lib/Crypt/GPGAbstract.php b/program/lib/Crypt/GPGAbstract.php
new file mode 100644
index 000000000..214133936
--- /dev/null
+++ b/program/lib/Crypt/GPGAbstract.php
@@ -0,0 +1,508 @@
+<?php
+
+/* vim: set expandtab tabstop=4 shiftwidth=4 softtabstop=4: */
+
+/**
+ * Crypt_GPG is a package to use GPG from PHP
+ *
+ * This package provides an object oriented interface to GNU Privacy
+ * Guard (GPG). It requires the GPG executable to be on the system.
+ *
+ * Though GPG can support symmetric-key cryptography, this package is intended
+ * only to facilitate public-key cryptography.
+ *
+ * This file contains an abstract implementation of a user of the
+ * {@link Crypt_GPG_Engine} class.
+ *
+ * PHP version 5
+ *
+ * LICENSE:
+ *
+ * This library is free software; you can redistribute it and/or modify
+ * it under the terms of the GNU Lesser General Public License as
+ * published by the Free Software Foundation; either version 2.1 of the
+ * License, or (at your option) any later version.
+ *
+ * This library is distributed in the hope that it will be useful,
+ * but WITHOUT ANY WARRANTY; without even the implied warranty of
+ * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with this library; if not, write to the Free Software
+ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Nathan Fredrickson <nathan@silverorange.com>
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2005-2013 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @version CVS: $Id: GPG.php 305428 2010-11-17 02:47:56Z gauthierm $
+ * @link http://pear.php.net/package/Crypt_GPG
+ * @link http://pear.php.net/manual/en/package.encryption.crypt-gpg.php
+ * @link http://www.gnupg.org/
+ */
+
+/**
+ * GPG key class
+ */
+require_once 'Crypt/GPG/Key.php';
+
+/**
+ * GPG sub-key class
+ */
+require_once 'Crypt/GPG/SubKey.php';
+
+/**
+ * GPG user id class
+ */
+require_once 'Crypt/GPG/UserId.php';
+
+/**
+ * GPG process and I/O engine class
+ */
+require_once 'Crypt/GPG/Engine.php';
+
+/**
+ * GPG exception classes
+ */
+require_once 'Crypt/GPG/Exceptions.php';
+
+// {{{ class Crypt_GPGAbstract
+
+/**
+ * Base class for implementing a user of {@link Crypt_GPG_Engine}
+ *
+ * @category Encryption
+ * @package Crypt_GPG
+ * @author Nathan Fredrickson <nathan@silverorange.com>
+ * @author Michael Gauthier <mike@silverorange.com>
+ * @copyright 2005-2013 silverorange
+ * @license http://www.gnu.org/copyleft/lesser.html LGPL License 2.1
+ * @link http://pear.php.net/package/Crypt_GPG
+ * @link http://www.gnupg.org/
+ */
+abstract class Crypt_GPGAbstract
+{
+ // {{{ class error constants
+
+ /**
+ * Error code returned when there is no error.
+ */
+ const ERROR_NONE = 0;
+
+ /**
+ * Error code returned when an unknown or unhandled error occurs.
+ */
+ const ERROR_UNKNOWN = 1;
+
+ /**
+ * Error code returned when a bad passphrase is used.
+ */
+ const ERROR_BAD_PASSPHRASE = 2;
+
+ /**
+ * Error code returned when a required passphrase is missing.
+ */
+ const ERROR_MISSING_PASSPHRASE = 3;
+
+ /**
+ * Error code returned when a key that is already in the keyring is
+ * imported.
+ */
+ const ERROR_DUPLICATE_KEY = 4;
+
+ /**
+ * Error code returned the required data is missing for an operation.
+ *
+ * This could be missing key data, missing encrypted data or missing
+ * signature data.
+ */
+ const ERROR_NO_DATA = 5;
+
+ /**
+ * Error code returned when an unsigned key is used.
+ */
+ const ERROR_UNSIGNED_KEY = 6;
+
+ /**
+ * Error code returned when a key that is not self-signed is used.
+ */
+ const ERROR_NOT_SELF_SIGNED = 7;
+
+ /**
+ * Error code returned when a public or private key that is not in the
+ * keyring is used.
+ */
+ const ERROR_KEY_NOT_FOUND = 8;
+
+ /**
+ * Error code returned when an attempt to delete public key having a
+ * private key is made.
+ */
+ const ERROR_DELETE_PRIVATE_KEY = 9;
+
+ /**
+ * Error code returned when one or more bad signatures are detected.
+ */
+ const ERROR_BAD_SIGNATURE = 10;
+
+ /**
+ * Error code returned when there is a problem reading GnuPG data files.
+ */
+ const ERROR_FILE_PERMISSIONS = 11;
+
+ /**
+ * Error code returned when a key could not be created.
+ */
+ const ERROR_KEY_NOT_CREATED = 12;
+
+ /**
+ * Error code returned when bad key parameters are used during key
+ * generation.
+ */
+ const ERROR_BAD_KEY_PARAMS = 13;
+
+ // }}}
+ // {{{ other class constants
+
+ /**
+ * URI at which package bugs may be reported.
+ */
+ const BUG_URI = 'http://pear.php.net/bugs/report.php?package=Crypt_GPG';
+
+ // }}}
+ // {{{ protected class properties
+
+ /**
+ * Engine used to control the GPG subprocess
+ *
+ * @var Crypt_GPG_Engine
+ *
+ * @see Crypt_GPGAbstract::setEngine()
+ */
+ protected $engine = null;
+
+ // }}}
+ // {{{ __construct()
+
+ /**
+ * Creates a new GPG object
+ *
+ * Available options are:
+ *
+ * - <kbd>string homedir</kbd> - the directory where the GPG
+ * keyring files are stored. If not
+ * specified, Crypt_GPG uses the
+ * default of <kbd>~/.gnupg</kbd>.
+ * - <kbd>string publicKeyring</kbd> - the file path of the public
+ * keyring. Use this if the public
+ * keyring is not in the homedir, or
+ * if the keyring is in a directory
+ * not writable by the process
+ * invoking GPG (like Apache). Then
+ * you can specify the path to the
+ * keyring with this option
+ * (/foo/bar/pubring.gpg), and specify
+ * a writable directory (like /tmp)
+ * using the <i>homedir</i> option.
+ * - <kbd>string privateKeyring</kbd> - the file path of the private
+ * keyring. Use this if the private
+ * keyring is not in the homedir, or
+ * if the keyring is in a directory
+ * not writable by the process
+ * invoking GPG (like Apache). Then
+ * you can specify the path to the
+ * keyring with this option
+ * (/foo/bar/secring.gpg), and specify
+ * a writable directory (like /tmp)
+ * using the <i>homedir</i> option.
+ * - <kbd>string trustDb</kbd> - the file path of the web-of-trust
+ * database. Use this if the trust
+ * database is not in the homedir, or
+ * if the database is in a directory
+ * not writable by the process
+ * invoking GPG (like Apache). Then
+ * you can specify the path to the
+ * trust database with this option
+ * (/foo/bar/trustdb.gpg), and specify
+ * a writable directory (like /tmp)
+ * using the <i>homedir</i> option.
+ * - <kbd>string binary</kbd> - the location of the GPG binary. If
+ * not specified, the driver attempts
+ * to auto-detect the GPG binary
+ * location using a list of known
+ * default locations for the current
+ * operating system. The option
+ * <kbd>gpgBinary</kbd> is a
+ * deprecated alias for this option.
+ * - <kbd>string agent</kbd> - the location of the GnuPG agent
+ * binary. The gpg-agent is only
+ * used for GnuPG 2.x. If not
+ * specified, the engine attempts
+ * to auto-detect the gpg-agent
+ * binary location using a list of
+ * know default locations for the
+ * current operating system.
+ * - <kbd>boolean debug</kbd> - whether or not to use debug mode.
+ * When debug mode is on, all
+ * communication to and from the GPG
+ * subprocess is logged. This can be
+ *
+ * @param array $options optional. An array of options used to create the
+ * GPG object. All options are optional and are
+ * represented as key-value pairs.
+ *
+ * @throws Crypt_GPG_FileException if the <kbd>homedir</kbd> does not exist
+ * and cannot be created. This can happen if <kbd>homedir</kbd> is
+ * not specified, Crypt_GPG is run as the web user, and the web
+ * user has no home directory. This exception is also thrown if any
+ * of the options <kbd>publicKeyring</kbd>,
+ * <kbd>privateKeyring</kbd> or <kbd>trustDb</kbd> options are
+ * specified but the files do not exist or are are not readable.
+ * This can happen if the user running the Crypt_GPG process (for
+ * example, the Apache user) does not have permission to read the
+ * files.
+ *
+ * @throws PEAR_Exception if the provided <kbd>binary</kbd> is invalid, or
+ * if no <kbd>binary</kbd> is provided and no suitable binary could
+ * be found.
+ *
+ * @throws PEAR_Exception if the provided <kbd>agent</kbd> is invalid, or
+ * if no <kbd>agent</kbd> is provided and no suitable gpg-agent
+ * cound be found.
+ */
+ public function __construct(array $options = array())
+ {
+ $this->setEngine(new Crypt_GPG_Engine($options));
+ }
+
+ // }}}
+ // {{{ setEngine()
+
+ /**
+ * Sets the I/O engine to use for GnuPG operations
+ *
+ * Normally this method does not need to be used. It provides a means for
+ * dependency injection.
+ *
+ * @param Crypt_GPG_Engine $engine the engine to use.
+ *
+ * @return Crypt_GPGAbstract the current object, for fluent interface.
+ */
+ public function setEngine(Crypt_GPG_Engine $engine)
+ {
+ $this->engine = $engine;
+ return $this;
+ }
+
+ // }}}
+ // {{{ _getKeys()
+
+ /**
+ * Gets the available keys in the keyring
+ *
+ * Calls GPG with the <kbd>--list-keys</kbd> command and grabs keys. See
+ * the first section of <b>doc/DETAILS</b> in the
+ * {@link http://www.gnupg.org/download/ GPG package} for a detailed
+ * description of how the GPG command output is parsed.
+ *
+ * @param string $keyId optional. Only keys with that match the specified
+ * pattern are returned. The pattern may be part of
+ * a user id, a key id or a key fingerprint. If not
+ * specified, all keys are returned.
+ *
+ * @return array an array of {@link Crypt_GPG_Key} objects. If no keys
+ * match the specified <kbd>$keyId</kbd> an empty array is
+ * returned.
+ *
+ * @throws Crypt_GPG_Exception if an unknown or unexpected error occurs.
+ * Use the <kbd>debug</kbd> option and file a bug report if these
+ * exceptions occur.
+ *
+ * @see Crypt_GPG_Key
+ */
+ protected function _getKeys($keyId = '')
+ {
+ // get private key fingerprints
+ if ($keyId == '') {
+ $operation = '--list-secret-keys';
+ } else {
+ $operation = '--list-secret-keys ' . escapeshellarg($keyId);
+ }
+
+ // According to The file 'doc/DETAILS' in the GnuPG distribution, using
+ // double '--with-fingerprint' also prints the fingerprint for subkeys.
+ $arguments = array(
+ '--with-colons',
+ '--with-fingerprint',
+ '--with-fingerprint',
+ '--fixed-list-mode'
+ );
+
+ $output = '';
+
+ $this->engine->reset();
+ $this->engine->setOutput($output);
+ $this->engine->setOperation($operation, $arguments);
+ $this->engine->run();
+
+ $code = $this->engine->getErrorCode();
+
+ switch ($code) {
+ case self::ERROR_NONE:
+ case self::ERROR_KEY_NOT_FOUND:
+ // ignore not found key errors
+ break;
+ case self::ERROR_FILE_PERMISSIONS:
+ $filename = $this->engine->getErrorFilename();
+ if ($filename) {
+ throw new Crypt_GPG_FileException(
+ sprintf(
+ 'Error reading GnuPG data file \'%s\'. Check to make ' .
+ 'sure it is readable by the current user.',
+ $filename
+ ),
+ $code,
+ $filename
+ );
+ }
+ throw new Crypt_GPG_FileException(
+ 'Error reading GnuPG data file. Check to make GnuPG data ' .
+ 'files are readable by the current user.',
+ $code
+ );
+ default:
+ throw new Crypt_GPG_Exception(
+ 'Unknown error getting keys. Please use the \'debug\' option ' .
+ 'when creating the Crypt_GPG object, and file a bug report ' .
+ 'at ' . self::BUG_URI,
+ $code
+ );
+ }
+
+ $privateKeyFingerprints = array();
+
+ $lines = explode(PHP_EOL, $output);
+ foreach ($lines as $line) {
+ $lineExp = explode(':', $line);
+ if ($lineExp[0] == 'fpr') {
+ $privateKeyFingerprints[] = $lineExp[9];
+ }
+ }
+
+ // get public keys
+ if ($keyId == '') {
+ $operation = '--list-public-keys';
+ } else {
+ $operation = '--list-public-keys ' . escapeshellarg($keyId);
+ }
+
+ $output = '';
+
+ $this->engine->reset();
+ $this->engine->setOutput($output);
+ $this->engine->setOperation($operation, $arguments);
+ $this->engine->run();
+
+ $code = $this->engine->getErrorCode();
+
+ switch ($code) {
+ case self::ERROR_NONE:
+ case self::ERROR_KEY_NOT_FOUND:
+ // ignore not found key errors
+ break;
+ case self::ERROR_FILE_PERMISSIONS:
+ $filename = $this->engine->getErrorFilename();
+ if ($filename) {
+ throw new Crypt_GPG_FileException(
+ sprintf(
+ 'Error reading GnuPG data file \'%s\'. Check to make ' .
+ 'sure it is readable by the current user.',
+ $filename
+ ),
+ $code,
+ $filename
+ );
+ }
+ throw new Crypt_GPG_FileException(
+ 'Error reading GnuPG data file. Check to make GnuPG data ' .
+ 'files are readable by the current user.',
+ $code
+ );
+ default:
+ throw new Crypt_GPG_Exception(
+ 'Unknown error getting keys. Please use the \'debug\' option ' .
+ 'when creating the Crypt_GPG object, and file a bug report ' .
+ 'at ' . self::BUG_URI,
+ $code
+ );
+ }
+
+ $keys = array();
+
+ $key = null; // current key
+ $subKey = null; // current sub-key
+
+ $lines = explode(PHP_EOL, $output);
+ foreach ($lines as $line) {
+ $lineExp = explode(':', $line);
+
+ if ($lineExp[0] == 'pub') {
+
+ // new primary key means last key should be added to the array
+ if ($key !== null) {
+ $keys[] = $key;
+ }
+
+ $key = new Crypt_GPG_Key();
+
+ $subKey = Crypt_GPG_SubKey::parse($line);
+ $key->addSubKey($subKey);
+
+ } elseif ($lineExp[0] == 'sub') {
+
+ $subKey = Crypt_GPG_SubKey::parse($line);
+ $key->addSubKey($subKey);
+
+ } elseif ($lineExp[0] == 'fpr') {
+
+ $fingerprint = $lineExp[9];
+
+ // set current sub-key fingerprint
+ $subKey->setFingerprint($fingerprint);
+
+ // if private key exists, set has private to true
+ if (in_array($fingerprint, $privateKeyFingerprints)) {
+ $subKey->setHasPrivate(true);
+ }
+
+ } elseif ($lineExp[0] == 'uid') {
+
+ $string = stripcslashes($lineExp[9]); // as per documentation
+ $userId = new Crypt_GPG_UserId($string);
+
+ if ($lineExp[1] == 'r') {
+ $userId->setRevoked(true);
+ }
+
+ $key->addUserId($userId);
+
+ }
+ }
+
+ // add last key
+ if ($key !== null) {
+ $keys[] = $key;
+ }
+
+ return $keys;
+ }
+
+ // }}}
+}
+
+// }}}
+
+?>
diff --git a/program/lib/Roundcube/html.php b/program/lib/Roundcube/html.php
index a36711281..33517fbcd 100644
--- a/program/lib/Roundcube/html.php
+++ b/program/lib/Roundcube/html.php
@@ -3,7 +3,7 @@
/*
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2011, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -32,8 +32,8 @@ class html
public static $doctype = 'xhtml';
public static $lc_tags = true;
- public static $common_attrib = array('id','class','style','title','align');
- public static $containers = array('iframe','div','span','p','h1','h2','h3','form','textarea','table','thead','tbody','tr','th','td','style','script');
+ public static $common_attrib = array('id','class','style','title','align','unselectable');
+ public static $containers = array('iframe','div','span','p','h1','h2','h3','ul','form','textarea','table','thead','tbody','tr','th','td','style','script');
/**
@@ -604,16 +604,17 @@ class html_select extends html
*
* @param mixed $names Option name or array with option names
* @param mixed $values Option value or array with option values
+ * @param array $attrib Additional attributes for the option entry
*/
- public function add($names, $values = null)
+ public function add($names, $values = null, $attrib = array())
{
if (is_array($names)) {
foreach ($names as $i => $text) {
- $this->options[] = array('text' => $text, 'value' => $values[$i]);
+ $this->options[] = array('text' => $text, 'value' => $values[$i]) + $attrib;
}
}
else {
- $this->options[] = array('text' => $names, 'value' => $values);
+ $this->options[] = array('text' => $names, 'value' => $values) + $attrib;
}
}
@@ -644,7 +645,7 @@ class html_select extends html
$option_content = self::quote($option_content);
}
- $this->content .= self::tag('option', $attr, $option_content);
+ $this->content .= self::tag('option', $attr + $option, $option_content, array('value','label','class','style','title','disabled','selected'));
}
return parent::show();
@@ -676,8 +677,8 @@ class html_table extends html
*/
public function __construct($attrib = array())
{
- $default_attrib = self::$doctype == 'xhtml' ? array('summary' => '', 'border' => 0) : array();
- $this->attrib = array_merge($attrib, $default_attrib);
+ $default_attrib = self::$doctype == 'xhtml' ? array('summary' => '', 'border' => '0') : array();
+ $this->attrib = array_merge($attrib, $default_attrib);
if (!empty($attrib['tagname']) && $attrib['tagname'] != 'table') {
$this->tagname = $attrib['tagname'];
@@ -879,7 +880,7 @@ class html_table extends html
private function _row_tagname()
{
static $row_tagnames = array('table' => 'tr', 'ul' => 'li', '*' => 'div');
- return $row_tagnames[$this->tagname] ?: $row_tagnames['*'];
+ return $row_tagnames[$this->tagname] ? $row_tagnames[$this->tagname] : $row_tagnames['*'];
}
/**
@@ -888,7 +889,7 @@ class html_table extends html
private function _col_tagname()
{
static $col_tagnames = array('table' => 'td', '*' => 'span');
- return $col_tagnames[$this->tagname] ?: $col_tagnames['*'];
+ return $col_tagnames[$this->tagname] ? $col_tagnames[$this->tagname] : $col_tagnames['*'];
}
}
diff --git a/program/lib/Roundcube/rcube.php b/program/lib/Roundcube/rcube.php
index 399f84fd8..d58eb087b 100644
--- a/program/lib/Roundcube/rcube.php
+++ b/program/lib/Roundcube/rcube.php
@@ -642,10 +642,11 @@ class rcube
/**
* Load a localization package
*
- * @param string Language ID
- * @param array Additional text labels/messages
+ * @param string $lang Language ID
+ * @param array $add Additional text labels/messages
+ * @param array $merge Additional text labels/messages to merge
*/
- public function load_language($lang = null, $add = array())
+ public function load_language($lang = null, $add = array(), $merge = array())
{
$lang = $this->language_prop(($lang ? $lang : $_SESSION['language']));
@@ -685,6 +686,11 @@ class rcube
if (is_array($add) && !empty($add)) {
$this->texts += $add;
}
+
+ // merge additional texts (from plugin)
+ if (is_array($merge) && !empty($merge)) {
+ $this->texts = array_merge($this->texts, $merge);
+ }
}
@@ -1108,7 +1114,20 @@ class rcube
// log_driver == 'file' is assumed here
$line = sprintf("[%s]: %s\n", $date, $line);
- $log_dir = self::$instance ? self::$instance->config->get('log_dir') : null;
+ $log_dir = null;
+
+ // per-user logging is activated
+ if (self::$instance && self::$instance->config->get('per_user_logging', false) && self::$instance->get_user_id()) {
+ $log_dir = self::$instance->get_user_log_dir();
+ if (empty($log_dir))
+ return false;
+ }
+ else if (!empty($log['dir'])) {
+ $log_dir = $log['dir'];
+ }
+ else if (self::$instance) {
+ $log_dir = self::$instance->config->get('log_dir');
+ }
if (empty($log_dir)) {
$log_dir = RCUBE_INSTALL_PATH . 'logs';
@@ -1146,7 +1165,6 @@ class rcube
// handle PHP exceptions
if (is_object($arg) && is_a($arg, 'Exception')) {
$arg = array(
- 'type' => 'php',
'code' => $arg->getCode(),
'line' => $arg->getLine(),
'file' => $arg->getFile(),
@@ -1154,7 +1172,7 @@ class rcube
);
}
else if (is_string($arg)) {
- $arg = array('message' => $arg, 'type' => 'php');
+ $arg = array('message' => $arg);
}
if (empty($arg['code'])) {
@@ -1170,7 +1188,7 @@ class rcube
$cli = php_sapi_name() == 'cli';
- if (($log || $terminate) && !$cli && $arg['type'] && $arg['message']) {
+ if (($log || $terminate) && !$cli && $arg['message']) {
$arg['fatal'] = $terminate;
self::log_bug($arg);
}
@@ -1198,7 +1216,7 @@ class rcube
*/
public static function log_bug($arg_arr)
{
- $program = strtoupper($arg_arr['type']);
+ $program = strtoupper(!empty($arg_arr['type']) ? $arg_arr['type'] : 'php');
$level = self::get_instance()->config->get('debug_level');
// disable errors for ajax requests, write to log instead (#1487831)
@@ -1347,6 +1365,17 @@ class rcube
}
}
+ /**
+ * Get the per-user log directory
+ */
+ protected function get_user_log_dir()
+ {
+ $log_dir = $this->config->get('log_dir', RCUBE_INSTALL_PATH . 'logs');
+ $user_name = $this->get_user_name();
+ $user_log_dir = $log_dir . '/' . $user_name;
+
+ return !empty($user_name) && is_writable($user_log_dir) ? $user_log_dir : false;
+ }
/**
* Getter for logged user language code.
@@ -1537,6 +1566,10 @@ class rcube
!empty($response) ? join('; ', $response) : ''));
}
}
+ else {
+ // allow plugins to catch sending errors with the same parameters as in 'message_before_send'
+ $this->plugins->exec_hook('message_send_error', $plugin + array('error' => $error));
+ }
if (is_resource($msg_body)) {
fclose($msg_body);
diff --git a/program/lib/Roundcube/rcube_addressbook.php b/program/lib/Roundcube/rcube_addressbook.php
index 6e2b439d8..4d9fa3db1 100644
--- a/program/lib/Roundcube/rcube_addressbook.php
+++ b/program/lib/Roundcube/rcube_addressbook.php
@@ -209,6 +209,7 @@ abstract class rcube_addressbook
public function validate(&$save_data, $autofix = false)
{
$rcube = rcube::get_instance();
+ $valid = true;
// check validity of email addresses
foreach ($this->get_col_values('email', $save_data, true) as $email) {
@@ -216,12 +217,28 @@ abstract class rcube_addressbook
if (!rcube_utils::check_email(rcube_utils::idn_to_ascii($email))) {
$error = $rcube->gettext(array('name' => 'emailformaterror', 'vars' => array('email' => $email)));
$this->set_error(self::ERROR_VALIDATE, $error);
- return false;
+ $valid = false;
+ break;
}
}
}
- return true;
+ // allow plugins to do contact validation and auto-fixing
+ $plugin = $rcube->plugins->exec_hook('contact_validate', array(
+ 'record' => $save_data,
+ 'autofix' => $autofix,
+ 'valid' => $valid,
+ ));
+
+ if ($valid && !$plugin['valid']) {
+ $this->set_error(self::ERROR_VALIDATE, $plugin['error']);
+ }
+
+ if (is_array($plugin['record'])) {
+ $save_data = $plugin['record'];
+ }
+
+ return $plugin['valid'];
}
/**
@@ -264,7 +281,8 @@ abstract class rcube_addressbook
* @param array Assoziative array with save data
* Keys: Field name with optional section in the form FIELD:SECTION
* Values: Field value. Can be either a string or an array of strings for multiple values
- * @return boolean True on success, False on error
+ *
+ * @return mixed On success if ID has been changed returns ID, otherwise True, False on error
*/
function update($id, $save_cols)
{
@@ -294,8 +312,10 @@ abstract class rcube_addressbook
/**
* Mark all records in database as deleted
+ *
+ * @param bool $with_groups Remove also groups
*/
- function delete_all()
+ function delete_all($with_groups = false)
{
/* empty for read-only address books */
}
@@ -515,8 +535,12 @@ abstract class rcube_addressbook
$fn = join(' ', array($contact['surname'], $contact['firstname'], $contact['middlename']));
else if ($compose_mode == 1)
$fn = join(' ', array($contact['firstname'], $contact['middlename'], $contact['surname']));
- else
+ else if ($compose_mode == 0)
$fn = !empty($contact['name']) ? $contact['name'] : join(' ', array($contact['prefix'], $contact['firstname'], $contact['middlename'], $contact['surname'], $contact['suffix']));
+ else {
+ $plugin = rcube::get_instance()->plugins->exec_hook('contact_listname', array('contact' => $contact));
+ $fn = $plugin['fn'];
+ }
$fn = trim($fn, ', ');
diff --git a/program/lib/Roundcube/rcube_base_replacer.php b/program/lib/Roundcube/rcube_base_replacer.php
index a59bba926..fa6764753 100644
--- a/program/lib/Roundcube/rcube_base_replacer.php
+++ b/program/lib/Roundcube/rcube_base_replacer.php
@@ -90,8 +90,8 @@ class rcube_base_replacer
if (preg_match_all('/\.\.\//', $path, $matches, PREG_SET_ORDER)) {
foreach ($matches as $a_match) {
- if (strrpos($base_url, '/')) {
- $base_url = substr($base_url, 0, strrpos($base_url, '/'));
+ if ($pos = strrpos($base_url, '/')) {
+ $base_url = substr($base_url, 0, $pos);
}
$path = substr($path, 3);
}
diff --git a/program/lib/Roundcube/rcube_browser.php b/program/lib/Roundcube/rcube_browser.php
index 34128291b..e53e31200 100644
--- a/program/lib/Roundcube/rcube_browser.php
+++ b/program/lib/Roundcube/rcube_browser.php
@@ -28,32 +28,24 @@ class rcube_browser
{
$HTTP_USER_AGENT = strtolower($_SERVER['HTTP_USER_AGENT']);
- $this->ver = 0;
- $this->win = strpos($HTTP_USER_AGENT, 'win') != false;
- $this->mac = strpos($HTTP_USER_AGENT, 'mac') != false;
+ $this->ver = 0;
+ $this->win = strpos($HTTP_USER_AGENT, 'win') != false;
+ $this->mac = strpos($HTTP_USER_AGENT, 'mac') != false;
$this->linux = strpos($HTTP_USER_AGENT, 'linux') != false;
$this->unix = strpos($HTTP_USER_AGENT, 'unix') != false;
- $this->opera = strpos($HTTP_USER_AGENT, 'opera') !== false;
- $this->ns4 = strpos($HTTP_USER_AGENT, 'mozilla/4') !== false && strpos($HTTP_USER_AGENT, 'msie') === false;
- $this->ns = ($this->ns4 || strpos($HTTP_USER_AGENT, 'netscape') !== false);
- $this->ie = !$this->opera && strpos($HTTP_USER_AGENT, 'compatible; msie') !== false;
- $this->khtml = strpos($HTTP_USER_AGENT, 'khtml') !== false;
- $this->mz = !$this->ie && !$this->khtml && strpos($HTTP_USER_AGENT, 'mozilla/5') !== false;
+ $this->opera = strpos($HTTP_USER_AGENT, 'opera') !== false;
+ $this->ns = strpos($HTTP_USER_AGENT, 'netscape') !== false;
$this->chrome = strpos($HTTP_USER_AGENT, 'chrome') !== false;
- $this->safari = !$this->chrome && ($this->khtml || strpos($HTTP_USER_AGENT, 'safari') !== false);
+ $this->ie = !$this->opera && (strpos($HTTP_USER_AGENT, 'compatible; msie') !== false || strpos($HTTP_USER_AGENT, 'trident/') !== false);
+ $this->safari = !$this->chrome && (strpos($HTTP_USER_AGENT, 'safari') !== false || strpos($HTTP_USER_AGENT, 'applewebkit') !== false);
+ $this->mz = !$this->ie && !$this->safari && !$this->chrome && !$this->ns && strpos($HTTP_USER_AGENT, 'mozilla') !== false;
- if ($this->ns || $this->chrome) {
- $test = preg_match('/(mozilla|chrome)\/([0-9.]+)/', $HTTP_USER_AGENT, $regs);
- $this->ver = $test ? (float)$regs[2] : 0;
+ if (preg_match('/(chrome|msie|opera|version|khtml)(\s*|\/)([0-9.]+)/', $HTTP_USER_AGENT, $regs)) {
+ $this->ver = (float) $regs[3];
}
- else if ($this->mz) {
- $test = preg_match('/rv:([0-9.]+)/', $HTTP_USER_AGENT, $regs);
- $this->ver = $test ? (float)$regs[1] : 0;
- }
- else if ($this->ie || $this->opera) {
- $test = preg_match('/(msie|opera) ([0-9.]+)/', $HTTP_USER_AGENT, $regs);
- $this->ver = $test ? (float)$regs[2] : 0;
+ else if (preg_match('/rv:([0-9.]+)/', $HTTP_USER_AGENT, $regs)) {
+ $this->ver = (float) $regs[1];
}
if (preg_match('/ ([a-z]{2})-([a-z]{2})/', $HTTP_USER_AGENT, $regs))
@@ -61,10 +53,10 @@ class rcube_browser
else
$this->lang = 'en';
- $this->dom = ($this->mz || $this->safari || ($this->ie && $this->ver>=5) || ($this->opera && $this->ver>=7));
+ $this->dom = $this->mz || $this->safari || ($this->ie && $this->ver>=5) || ($this->opera && $this->ver>=7);
$this->pngalpha = $this->mz || $this->safari || ($this->ie && $this->ver>=5.5) ||
($this->ie && $this->ver>=5 && $this->mac) || ($this->opera && $this->ver>=7) ? true : false;
- $this->imgdata = !$this->ie;
+ $this->imgdata = !$this->ie;
}
}
diff --git a/program/lib/Roundcube/rcube_charset.php b/program/lib/Roundcube/rcube_charset.php
index 19dbf6cbc..8612e7fca 100644
--- a/program/lib/Roundcube/rcube_charset.php
+++ b/program/lib/Roundcube/rcube_charset.php
@@ -199,10 +199,13 @@ class rcube_charset
$iconv_options = '';
}
}
+ else {
+ $iconv_options = false;
+ }
}
// convert charset using iconv module
- if ($iconv_options !== null && $from != 'UTF7-IMAP' && $to != 'UTF7-IMAP') {
+ if ($iconv_options !== false && $from != 'UTF7-IMAP' && $to != 'UTF7-IMAP') {
// throw an exception if iconv reports an illegal character in input
// it means that input string has been truncated
set_error_handler(array('rcube_charset', 'error_handler'), E_NOTICE);
@@ -224,10 +227,13 @@ class rcube_charset
$mbstring_list = mb_list_encodings();
$mbstring_list = array_map('strtoupper', $mbstring_list);
}
+ else {
+ $mbstring_list = false;
+ }
}
// convert charset using mbstring module
- if ($mbstring_list !== null) {
+ if ($mbstring_list !== false) {
$aliases['WINDOWS-1257'] = 'ISO-8859-13';
// it happens that mbstring supports ASCII but not US-ASCII
if (($from == 'US-ASCII' || $to == 'US-ASCII') && !in_array('US-ASCII', $mbstring_list)) {
diff --git a/program/lib/Roundcube/rcube_config.php b/program/lib/Roundcube/rcube_config.php
index 04b914c3d..0352e4772 100644
--- a/program/lib/Roundcube/rcube_config.php
+++ b/program/lib/Roundcube/rcube_config.php
@@ -373,7 +373,11 @@ class rcube_config
*/
public function all()
{
- return $this->prop;
+ $rcube = rcube::get_instance();
+ $plugin = $rcube->plugins->exec_hook('config_get', array(
+ 'name' => '*', 'result' => $this->prop));
+
+ return $plugin['result'];
}
/**
diff --git a/program/lib/Roundcube/rcube_contacts.php b/program/lib/Roundcube/rcube_contacts.php
index 6d01368a1..d215760cf 100644
--- a/program/lib/Roundcube/rcube_contacts.php
+++ b/program/lib/Roundcube/rcube_contacts.php
@@ -350,7 +350,7 @@ class rcube_contacts extends rcube_addressbook
if (in_array($col, $this->table_cols)) {
switch ($mode) {
case 1: // strict
- $where[] = '(' . $this->db->quoteIdentifier($col) . ' = ' . $this->db->quote($val)
+ $where[] = '(' . $this->db->quote_identifier($col) . ' = ' . $this->db->quote($val)
. ' OR ' . $this->db->ilike($col, $val . $AS . '%')
. ' OR ' . $this->db->ilike($col, '%' . $AS . $val . $AS . '%')
. ' OR ' . $this->db->ilike($col, '%' . $AS . $val) . ')';
@@ -390,7 +390,7 @@ class rcube_contacts extends rcube_addressbook
}
foreach (array_intersect($required, $this->table_cols) as $col) {
- $and_where[] = $this->db->quoteIdentifier($col).' <> '.$this->db->quote('');
+ $and_where[] = $this->db->quote_identifier($col).' <> '.$this->db->quote('');
}
if (!empty($where)) {
@@ -592,8 +592,8 @@ class rcube_contacts extends rcube_addressbook
// validate e-mail addresses
$valid = parent::validate($save_data, $autofix);
- // require at least one e-mail address (syntax check is already done)
- if ($valid && !array_filter($this->get_col_values('email', $save_data, true))) {
+ // require at least one email address or a name
+ if ($valid && !strlen($save_data['firstname'].$save_data['surname'].$save_data['name']) && !array_filter($this->get_col_values('email', $save_data, true))) {
$this->set_error(self::ERROR_VALIDATE, 'noemailwarning');
$valid = false;
}
@@ -626,11 +626,11 @@ class rcube_contacts extends rcube_addressbook
}
}
- $save_data = $this->convert_save_data($save_data);
+ $save_data = $this->convert_save_data($save_data);
$a_insert_cols = $a_insert_values = array();
foreach ($save_data as $col => $value) {
- $a_insert_cols[] = $this->db->quoteIdentifier($col);
+ $a_insert_cols[] = $this->db->quote_identifier($col);
$a_insert_values[] = $this->db->quote($value);
}
@@ -655,17 +655,18 @@ class rcube_contacts extends rcube_addressbook
*
* @param mixed Record identifier
* @param array Assoziative array with save data
+ *
* @return boolean True on success, False on error
*/
function update($id, $save_cols)
{
- $updated = false;
+ $updated = false;
$write_sql = array();
- $record = $this->get_record($id, true);
+ $record = $this->get_record($id, true);
$save_cols = $this->convert_save_data($save_cols, $record);
foreach ($save_cols as $col => $value) {
- $write_sql[] = sprintf("%s=%s", $this->db->quoteIdentifier($col), $this->db->quote($value));
+ $write_sql[] = sprintf("%s=%s", $this->db->quote_identifier($col), $this->db->quote($value));
}
if (!empty($write_sql)) {
@@ -683,7 +684,7 @@ class rcube_contacts extends rcube_addressbook
$this->result = null; // clear current result (from get_record())
}
- return $updated;
+ return $updated ? true : false;
}
@@ -812,16 +813,30 @@ class rcube_contacts extends rcube_addressbook
/**
* Remove all records from the database
+ *
+ * @param bool $with_groups Remove also groups
+ *
+ * @return int Number of removed records
*/
- function delete_all()
+ function delete_all($with_groups = false)
{
$this->cache = null;
- $this->db->query("UPDATE ".$this->db->table_name($this->db_name).
- " SET del=1, changed=".$this->db->now().
- " WHERE user_id = ?", $this->user_id);
+ $this->db->query("UPDATE " . $this->db->table_name($this->db_name)
+ . " SET del = 1, changed = " . $this->db->now()
+ . " WHERE user_id = ?", $this->user_id);
- return $this->db->affected_rows();
+ $count = $this->db->affected_rows();
+
+ if ($with_groups) {
+ $this->db->query("UPDATE " . $this->db->table_name($this->db_groups)
+ . " SET del = 1, changed = " . $this->db->now()
+ . " WHERE user_id = ?", $this->user_id);
+
+ $count += $this->db->affected_rows();
+ }
+
+ return $count;
}
@@ -860,11 +875,11 @@ class rcube_contacts extends rcube_addressbook
function delete_group($gid)
{
// flag group record as deleted
- $sql_result = $this->db->query(
- "UPDATE ".$this->db->table_name($this->db_groups).
- " SET del=1, changed=".$this->db->now().
- " WHERE contactgroup_id=?".
- " AND user_id=?",
+ $this->db->query(
+ "UPDATE " . $this->db->table_name($this->db_groups)
+ . " SET del = 1, changed = " . $this->db->now()
+ . " WHERE contactgroup_id = ?"
+ . " AND user_id = ?",
$gid, $this->user_id
);
@@ -873,7 +888,6 @@ class rcube_contacts extends rcube_addressbook
return $this->db->affected_rows();
}
-
/**
* Rename a specific contact group
*
diff --git a/program/lib/Roundcube/rcube_csv2vcard.php b/program/lib/Roundcube/rcube_csv2vcard.php
index 00e6d4e20..aa385dce4 100644
--- a/program/lib/Roundcube/rcube_csv2vcard.php
+++ b/program/lib/Roundcube/rcube_csv2vcard.php
@@ -47,7 +47,7 @@ class rcube_csv2vcard
//'business_street_2' => '',
//'business_street_3' => '',
'car_phone' => 'phone:car',
- 'categories' => 'categories',
+ 'categories' => 'groups',
//'children' => '',
'company' => 'organization',
//'company_main_phone' => '',
@@ -146,6 +146,9 @@ class rcube_csv2vcard
'work_title' => 'jobtitle',
'work_zip' => 'zipcode:work',
'group' => 'groups',
+
+ // GMail
+ 'groups' => 'groups',
);
/**
@@ -427,6 +430,11 @@ class rcube_csv2vcard
$contact['birthday'] = $contact['birthday-y'] .'-' .$contact['birthday-m'] . '-' . $contact['birthday-d'];
}
+ // categories/groups separator in vCard is ',' not ';'
+ if (!empty($contact['groups'])) {
+ $contact['groups'] = str_replace(';', ',', $contact['groups']);
+ }
+
// Empty dates, e.g. "0/0/00", "0000-00-00 00:00:00"
foreach (array('birthday', 'anniversary') as $key) {
if (!empty($contact[$key])) {
diff --git a/program/lib/Roundcube/rcube_db.php b/program/lib/Roundcube/rcube_db.php
index 08935853a..2828f26ee 100644
--- a/program/lib/Roundcube/rcube_db.php
+++ b/program/lib/Roundcube/rcube_db.php
@@ -392,7 +392,7 @@ class rcube_db
*/
protected function _query($query, $offset, $numrows, $params)
{
- $query = trim($query);
+ $query = ltrim($query);
$this->db_connect($this->dsn_select($query), true);
@@ -405,27 +405,28 @@ class rcube_db
$query = $this->set_limit($query, $numrows, $offset);
}
- $params = (array) $params;
-
// Because in Roundcube we mostly use queries that are
// executed only once, we will not use prepared queries
$pos = 0;
$idx = 0;
- while ($pos = strpos($query, '?', $pos)) {
- if ($query[$pos+1] == '?') { // skip escaped ?
- $pos += 2;
- }
- else {
- $val = $this->quote($params[$idx++]);
- unset($params[$idx-1]);
- $query = substr_replace($query, $val, $pos, 1);
- $pos += strlen($val);
+ if (count($params)) {
+ while ($pos = strpos($query, '?', $pos)) {
+ if ($query[$pos+1] == '?') { // skip escaped '?'
+ $pos += 2;
+ }
+ else {
+ $val = $this->quote($params[$idx++]);
+ unset($params[$idx-1]);
+ $query = substr_replace($query, $val, $pos, 1);
+ $pos += strlen($val);
+ }
}
}
- // replace escaped ? back to normal
- $query = rtrim(strtr($query, array('??' => '?')), ';');
+ // replace escaped '?' back to normal, see self::quote()
+ $query = str_replace('??', '?', $query);
+ $query = rtrim($query, " \t\n\r\0\x0B;");
$this->debug($query);
@@ -456,7 +457,7 @@ class rcube_db
{
$error = $this->dbh->errorInfo();
- if (empty($this->options['ignore_key_errors']) || $error[0] != '23000') {
+ if (empty($this->options['ignore_key_errors']) || !in_array($error[0], array('23000', '23505'))) {
$this->db_error = true;
$this->db_error_msg = sprintf('[%s] %s', $error[1], $error[2]);
diff --git a/program/lib/Roundcube/rcube_html2text.php b/program/lib/Roundcube/rcube_html2text.php
index 9b248a3a8..01362e6fb 100644
--- a/program/lib/Roundcube/rcube_html2text.php
+++ b/program/lib/Roundcube/rcube_html2text.php
@@ -608,24 +608,27 @@ class rcube_html2text
$this->width = $p_width;
// Add citation markers and create <pre> block
- $body = preg_replace_callback('/((?:^|\n)>*)([^\n]*)/', array($this, 'blockquote_citation_ballback'), trim($body));
+ $body = preg_replace_callback('/((?:^|\n)>*)([^\n]*)/', array($this, 'blockquote_citation_callback'), trim($body));
$body = '<pre>' . htmlspecialchars($body) . '</pre>';
- $text = substr($text, 0, $start) . $body . "\n" . substr($text, $end + 13);
+ $text = substr_replace($text, $body . "\n", $start, $end + 13 - $start);
$offset = 0;
+
break;
}
- } while ($end || $next);
+ }
+ while ($end || $next);
}
}
/**
* Callback function to correctly add citation markers for blockquote contents
*/
- public function blockquote_citation_ballback($m)
+ public function blockquote_citation_callback($m)
{
- $line = ltrim($m[2]);
+ $line = ltrim($m[2]);
$space = $line[0] == '>' ? '' : ' ';
+
return $m[1] . '>' . $space . $line;
}
diff --git a/program/lib/Roundcube/rcube_imap.php b/program/lib/Roundcube/rcube_imap.php
index ff88bdccb..0cf34b2ca 100644
--- a/program/lib/Roundcube/rcube_imap.php
+++ b/program/lib/Roundcube/rcube_imap.php
@@ -680,6 +680,41 @@ class rcube_imap extends rcube_storage
/**
+ * Public method for listing message flags
+ *
+ * @param string $folder Folder name
+ * @param array $uids Message UIDs
+ * @param int $mod_seq Optional MODSEQ value (of last flag update)
+ *
+ * @return array Indexed array with message flags
+ */
+ public function list_flags($folder, $uids, $mod_seq = null)
+ {
+ if (!strlen($folder)) {
+ $folder = $this->folder;
+ }
+
+ if (!$this->check_connection()) {
+ return array();
+ }
+
+ // @TODO: when cache was synchronized in this request
+ // we might already have asked for flag updates, use it.
+
+ $flags = $this->conn->fetch($folder, $uids, true, array('FLAGS'), $mod_seq);
+ $result = array();
+
+ if (!empty($flags)) {
+ foreach ($flags as $message) {
+ $result[$message->uid] = $message->flags;
+ }
+ }
+
+ return $result;
+ }
+
+
+ /**
* Public method for listing headers
*
* @param string $folder Folder name
@@ -1474,7 +1509,7 @@ class rcube_imap extends rcube_storage
public function search_once($folder = null, $str = 'ALL')
{
if (!$str) {
- return 'ALL';
+ $str = 'ALL';
}
if (!strlen($folder)) {
@@ -2186,7 +2221,7 @@ class rcube_imap extends rcube_storage
// convert charset (if text or message part)
if ($body && preg_match('/^(text|message)$/', $o_part->ctype_primary)) {
// Remove NULL characters if any (#1486189)
- if (strpos($body, "\x00") !== false) {
+ if ($formatted && strpos($body, "\x00") !== false) {
$body = str_replace("\x00", '', $body);
}
@@ -2908,12 +2943,21 @@ class rcube_imap extends rcube_storage
/**
* Filter the given list of folders according to access rights
+ *
+ * For performance reasons we assume user has full rights
+ * on all personal folders.
*/
protected function filter_rights($a_folders, $rights)
{
$regex = '/('.$rights.')/';
+
foreach ($a_folders as $idx => $folder) {
+ if ($this->folder_namespace($folder) == 'personal') {
+ continue;
+ }
+
$myrights = join('', (array)$this->my_rights($folder));
+
if ($myrights !== null && !preg_match($regex, $myrights)) {
unset($a_folders[$idx]);
}
@@ -3913,9 +3957,12 @@ class rcube_imap extends rcube_storage
/**
* Sort folders first by default folders and then in alphabethical order
*
- * @param array $a_folders Folders list
+ * @param array $a_folders Folders list
+ * @param bool $skip_default Skip default folders handling
+ *
+ * @return array Sorted list
*/
- protected function sort_folder_list($a_folders)
+ public function sort_folder_list($a_folders, $skip_default = false)
{
$a_out = $a_defaults = $folders = array();
@@ -3927,7 +3974,7 @@ class rcube_imap extends rcube_storage
continue;
}
- if (($p = array_search($folder, $this->default_folders)) !== false && !$a_defaults[$p]) {
+ if (!$skip_default && ($p = array_search($folder, $this->default_folders)) !== false && !$a_defaults[$p]) {
$a_defaults[$p] = $folder;
}
else {
diff --git a/program/lib/Roundcube/rcube_imap_cache.php b/program/lib/Roundcube/rcube_imap_cache.php
index 445d46360..0c3edeaad 100644
--- a/program/lib/Roundcube/rcube_imap_cache.php
+++ b/program/lib/Roundcube/rcube_imap_cache.php
@@ -327,7 +327,6 @@ class rcube_imap_cache
return array();
}
- $msgs = array_flip($msgs);
$result = array();
if ($this->mode & self::MODE_MESSAGE) {
@@ -340,6 +339,8 @@ class rcube_imap_cache
." AND uid IN (".$this->db->array2list($msgs, 'integer').")",
$this->userid, $mailbox);
+ $msgs = array_flip($msgs);
+
while ($sql_arr = $this->db->fetch_assoc($sql_result)) {
$uid = intval($sql_arr['uid']);
$result[$uid] = $this->build_message($sql_arr);
@@ -351,11 +352,13 @@ class rcube_imap_cache
unset($msgs[$uid]);
}
}
+
+ $msgs = array_flip($msgs);
}
// Fetch not found messages from IMAP server
if (!empty($msgs)) {
- $messages = $this->imap->fetch_headers($mailbox, array_keys($msgs), false, true);
+ $messages = $this->imap->fetch_headers($mailbox, $msgs, false, true);
// Insert to DB and add to result list
if (!empty($messages)) {
@@ -1247,10 +1250,8 @@ class rcube_imap_cache
unset($msg->replaces);
- if (is_array($msg->structure->parts)) {
- foreach ($msg->structure->parts as $part) {
- $this->message_object_prepare($part, $size);
- }
+ if (is_object($msg->structure)) {
+ $this->message_object_prepare($msg->structure, $size);
}
if (is_array($msg->parts)) {
diff --git a/program/lib/Roundcube/rcube_imap_generic.php b/program/lib/Roundcube/rcube_imap_generic.php
index bce4cd4e2..f9a62f010 100644
--- a/program/lib/Roundcube/rcube_imap_generic.php
+++ b/program/lib/Roundcube/rcube_imap_generic.php
@@ -48,6 +48,8 @@ class rcube_imap_generic
'*' => '\\*',
);
+ public static $mupdate;
+
private $fp;
private $host;
private $logged = false;
@@ -3156,6 +3158,11 @@ class rcube_imap_generic
}
foreach ($data as $entry) {
+ // Workaround cyrus-murder bug, the entry[2] string needs to be escaped
+ if (self::$mupdate) {
+ $entry[2] = addcslashes($entry[2], '\\"');
+ }
+
// ANNOTATEMORE drafts before version 08 require quoted parameters
$entries[] = sprintf('%s (%s %s)', $this->escape($entry[0], true),
$this->escape($entry[1], true), $this->escape($entry[2], true));
@@ -3720,6 +3727,10 @@ class rcube_imap_generic
$this->prefs['literal+'] = true;
}
+ if (preg_match('/(\[| )MUPDATE=.*/', $str)) {
+ self::$mupdate = true;
+ }
+
if ($trusted) {
$this->capability_readed = true;
}
diff --git a/program/lib/Roundcube/rcube_imap_search.php b/program/lib/Roundcube/rcube_imap_search.php
index d82ec8a24..70a11bc1c 100644
--- a/program/lib/Roundcube/rcube_imap_search.php
+++ b/program/lib/Roundcube/rcube_imap_search.php
@@ -235,7 +235,7 @@ class rcube_imap_search_job extends Stackable
}
}
- if (!$messages || !$messages->is_error()) {
+ if (!$messages || $messages->is_error()) {
$messages = $imap->search($this->folder,
($charset && $charset != 'US-ASCII' ? "CHARSET $charset " : '') . $criteria, true);
@@ -272,7 +272,7 @@ class rcube_imap_search_job extends Stackable
/**
- * Wrker thread to run search jobs while maintaining a common context
+ * Worker thread to run search jobs while maintaining a common context
*/
class rcube_imap_search_worker extends Worker
{
diff --git a/program/lib/Roundcube/rcube_ldap.php b/program/lib/Roundcube/rcube_ldap.php
index 64288f973..de3790e5c 100644
--- a/program/lib/Roundcube/rcube_ldap.php
+++ b/program/lib/Roundcube/rcube_ldap.php
@@ -52,7 +52,7 @@ class rcube_ldap extends rcube_addressbook
*
* @var array
*/
- private static $group_types = array(
+ private $group_types = array(
'group' => 'member',
'groupofnames' => 'member',
'kolabgroupofnames' => 'member',
@@ -94,6 +94,9 @@ class rcube_ldap extends rcube_addressbook
$this->prop['groups']['name_attr'] = 'cn';
if (empty($this->prop['groups']['scope']))
$this->prop['groups']['scope'] = 'sub';
+ // extend group objectclass => member attribute mapping
+ if (!empty($this->prop['groups']['class_member_attr']))
+ $this->group_types = array_merge($this->group_types, $this->prop['groups']['class_member_attr']);
// add group name attrib to the list of attributes to be fetched
$fetch_attributes[] = $this->prop['groups']['name_attr'];
@@ -292,6 +295,14 @@ class rcube_ldap extends rcube_addressbook
if ($this->prop['search_base_dn'] && $this->prop['search_filter']
&& (strstr($bind_dn, '%dn') || strstr($this->base_dn, '%dn') || strstr($this->groups_base_dn, '%dn'))
) {
+ $search_attribs = array('uid');
+ if ($search_bind_attrib = (array)$this->prop['search_bind_attrib']) {
+ foreach ($search_bind_attrib as $r => $attr) {
+ $search_attribs[] = $attr;
+ $replaces[$r] = '';
+ }
+ }
+
$search_bind_dn = strtr($this->prop['search_bind_dn'], $replaces);
$search_base_dn = strtr($this->prop['search_base_dn'], $replaces);
$search_filter = strtr($this->prop['search_filter'], $replaces);
@@ -321,10 +332,18 @@ class rcube_ldap extends rcube_addressbook
}
}
- $res = $ldap->search($search_base_dn, $search_filter, 'sub', array('uid'));
+ $res = $ldap->search($search_base_dn, $search_filter, 'sub', $search_attribs);
if ($res) {
$res->rewind();
$replaces['%dn'] = $res->get_dn();
+
+ // add more replacements from 'search_bind_attrib' config
+ if ($search_bind_attrib) {
+ $res = $res->current();
+ foreach ($search_bind_attrib as $r => $attr) {
+ $replaces[$r] = $res[$attr][0];
+ }
+ }
}
if ($ldap != $this->ldap) {
@@ -355,6 +374,23 @@ class rcube_ldap extends rcube_addressbook
$this->base_dn = strtr($this->base_dn, $replaces);
$this->groups_base_dn = strtr($this->groups_base_dn, $replaces);
+ // replace placeholders in filter settings
+ if (!empty($this->prop['filter']))
+ $this->prop['filter'] = strtr($this->prop['filter'], $replaces);
+ if (!empty($this->prop['groups']['filter']))
+ $this->prop['groups']['filter'] = strtr($this->prop['groups']['filter'], $replaces);
+ if (!empty($this->prop['groups']['member_filter']))
+ $this->prop['groups']['member_filter'] = strtr($this->prop['groups']['member_filter'], $replaces);
+
+ if (!empty($this->prop['group_filters'])) {
+ foreach ($this->prop['group_filters'] as $i => $gf) {
+ if (!empty($gf['base_dn']))
+ $this->prop['group_filters'][$i]['base_dn'] = strtr($gf['base_dn'], $replaces);
+ if (!empty($gf['filter']))
+ $this->prop['group_filters'][$i]['filter'] = strtr($gf['filter'], $replaces);
+ }
+ }
+
if (empty($bind_user)) {
$bind_user = $u;
}
@@ -518,7 +554,7 @@ class rcube_ldap extends rcube_addressbook
}
else {
$prop = $this->group_id ? $this->group_data : $this->prop;
- $base_dn = $this->group_id ? $this->group_base_dn : $this->base_dn;
+ $base_dn = $this->group_id ? $prop['base_dn'] : $this->base_dn;
// use global search filter
if (!empty($this->filter))
@@ -559,9 +595,10 @@ class rcube_ldap extends rcube_addressbook
/**
* Get all members of the given group
*
- * @param string Group DN
- * @param array Group entries (if called recursively)
- * @return array Accumulated group members
+ * @param string Group DN
+ * @param boolean Count only
+ * @param array Group entries (if called recursively)
+ * @return array Accumulated group members
*/
function list_group_members($dn, $count = false, $entries = null)
{
@@ -569,7 +606,7 @@ class rcube_ldap extends rcube_addressbook
// fetch group object
if (empty($entries)) {
- $attribs = array('dn','objectClass','member','uniqueMember','memberURL');
+ $attribs = array_merge(array('dn','objectClass','memberURL'), array_values($this->group_types));
$entries = $this->ldap->read_entries($dn, '(objectClass=*)', $attribs);
if ($entries === false) {
return $group_members;
@@ -581,17 +618,17 @@ class rcube_ldap extends rcube_addressbook
$attrs = array();
foreach ((array)$entry['objectclass'] as $objectclass) {
- if (strtolower($objectclass) == 'groupofurls') {
- $members = $this->_list_group_memberurl($dn, $entry, $count);
- $group_members = array_merge($group_members, $members);
- }
- else if (($member_attr = $this->get_group_member_attr(array($objectclass), ''))
+ if (($member_attr = $this->get_group_member_attr(array($objectclass), ''))
&& ($member_attr = strtolower($member_attr)) && !in_array($member_attr, $attrs)
) {
$members = $this->_list_group_members($dn, $entry, $member_attr, $count);
$group_members = array_merge($group_members, $members);
$attrs[] = $member_attr;
}
+ else if (!empty($entry['memberurl'])) {
+ $members = $this->_list_group_memberurl($dn, $entry, $count);
+ $group_members = array_merge($group_members, $members);
+ }
if ($this->prop['sizelimit'] && count($group_members) > $this->prop['sizelimit']) {
break 2;
@@ -608,6 +645,7 @@ class rcube_ldap extends rcube_addressbook
* @param string Group DN
* @param array Group entry
* @param string Member attribute to use
+ * @param boolean Count only
* @return array Accumulated group members
*/
private function _list_group_members($dn, $entry, $attr, $count)
@@ -621,8 +659,7 @@ class rcube_ldap extends rcube_addressbook
// read these attributes for all members
$attrib = $count ? array('dn','objectClass') : $this->prop['list_attributes'];
- $attrib[] = 'member';
- $attrib[] = 'uniqueMember';
+ $attrib = array_merge($attrib, array_values($this->group_types));
$attrib[] = 'memberURL';
$filter = $this->prop['groups']['member_filter'] ? $this->prop['groups']['member_filter'] : '(objectclass=*)';
@@ -669,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];
@@ -1287,8 +1324,10 @@ class rcube_ldap extends rcube_addressbook
/**
* Remove all contact records
+ *
+ * @param bool $with_groups Delete also groups if enabled
*/
- function delete_all()
+ function delete_all($with_groups = false)
{
// searching for contact entries
$dn_list = $this->ldap->list_entries($this->base_dn, $this->prop['filter'] ? $this->prop['filter'] : '(objectclass=*)');
@@ -1299,6 +1338,16 @@ class rcube_ldap extends rcube_addressbook
}
$this->delete($dn_list);
}
+
+ if ($with_groups && $this->groups && ($groups = $this->_fetch_groups()) && count($groups)) {
+ foreach ($groups as $group) {
+ $this->ldap->delete($group['dn']);
+ }
+
+ if ($this->cache) {
+ $this->cache->remove('groups');
+ }
+ }
}
/**
@@ -1354,7 +1403,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'];
@@ -1479,11 +1528,11 @@ 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']);
- return count(array_intersect(array_keys(self::$group_types), $classes)) > 0;
+ return count(array_intersect(array_keys($this->group_types), $classes)) > 0;
}
/**
@@ -1569,11 +1618,12 @@ class rcube_ldap extends rcube_addressbook
// special case: list groups from 'group_filters' config
if ($vlv_page === null && !empty($this->prop['group_filters'])) {
$groups = array();
+ $rcube = rcube::get_instance();
// list regular groups configuration as special filter
if (!empty($this->prop['groups']['filter'])) {
$id = '__groups__';
- $groups[$id] = array('ID' => $id, 'name' => rcube_label('groups'), 'virtual' => true) + $this->prop['groups'];
+ $groups[$id] = array('ID' => $id, 'name' => $rcube->gettext('groups'), 'virtual' => true) + $this->prop['groups'];
}
foreach ($this->prop['group_filters'] as $id => $prop) {
@@ -1914,7 +1964,7 @@ class rcube_ldap extends rcube_addressbook
if (!empty($object_classes)) {
foreach ((array)$object_classes as $oc) {
- if ($attr = self::$group_types[strtolower($oc)]) {
+ if ($attr = $this->group_types[strtolower($oc)]) {
return $attr;
}
}
diff --git a/program/lib/Roundcube/rcube_message.php b/program/lib/Roundcube/rcube_message.php
index 0cc0766f5..f24ec3ed8 100644
--- a/program/lib/Roundcube/rcube_message.php
+++ b/program/lib/Roundcube/rcube_message.php
@@ -195,8 +195,6 @@ class rcube_message
/**
* Determine if the message contains a HTML part. This must to be
* a real part not an attachment (or its part)
- * This must to be
- * a real part not an attachment (or its part)
*
* @param bool $enriched Enables checking for text/enriched parts too
*
@@ -213,15 +211,19 @@ class rcube_message
}
$level = explode('.', $part->mime_id);
+ $depth = count($level);
- // Check if the part belongs to higher-level's alternative/related
+ // Check if the part belongs to higher-level's multipart part
+ // this can be alternative/related/signed/encrypted or mixed
while (array_pop($level) !== null) {
- if (!count($level)) {
+ $parent_depth = count($level);
+ if (!$parent_depth) {
return true;
}
$parent = $this->mime_parts[join('.', $level)];
- if ($parent->mimetype != 'multipart/alternative' && $parent->mimetype != 'multipart/related') {
+ if (!preg_match('/^multipart\/(alternative|related|signed|encrypted|mixed)$/', $parent->mimetype)
+ || ($parent->mimetype == 'multipart/mixed' && $parent_depth < $depth - 1)) {
continue 2;
}
}
@@ -530,8 +532,9 @@ class rcube_message
$part_mimetype = $mail_part->real_mimetype;
list($primary_type, $secondary_type) = explode('/', $part_mimetype);
}
- else
- $part_mimetype = $mail_part->mimetype;
+ else {
+ $part_mimetype = $part_orig_mimetype = $mail_part->mimetype;
+ }
// multipart/alternative
if ($primary_type == 'multipart') {
diff --git a/program/lib/Roundcube/rcube_mime.php b/program/lib/Roundcube/rcube_mime.php
index 96a8eac61..a931c27c1 100644
--- a/program/lib/Roundcube/rcube_mime.php
+++ b/program/lib/Roundcube/rcube_mime.php
@@ -637,7 +637,8 @@ class rcube_mime
if ($nextChar === ' ' || $nextChar === $separator) {
$afterNextChar = mb_substr($string, $width + 1, 1);
- if ($afterNextChar === false) {
+ // Note: mb_substr() does never return False
+ if ($afterNextChar === false || $afterNextChar === '') {
$subString .= $nextChar;
}
@@ -650,24 +651,23 @@ class rcube_mime
$subString = mb_substr($subString, 0, $spacePos);
$cutLength = $spacePos + 1;
}
- else if ($cut === false && $breakPos === false) {
- $subString = $string;
- $cutLength = null;
- }
else if ($cut === false) {
$spacePos = mb_strpos($string, ' ', 0);
- if ($spacePos !== false && $spacePos < $breakPos) {
+ if ($spacePos !== false && ($breakPos === false || $spacePos < $breakPos)) {
$subString = mb_substr($string, 0, $spacePos);
$cutLength = $spacePos + 1;
}
+ else if ($breakPos === false) {
+ $subString = $string;
+ $cutLength = null;
+ }
else {
$subString = mb_substr($string, 0, $breakPos);
$cutLength = $breakPos + 1;
}
}
else {
- $subString = mb_substr($subString, 0, $width);
$cutLength = $width;
}
}
@@ -810,7 +810,7 @@ class rcube_mime
}
$mime_types = $mime_extensions = array();
- $regex = "/([\w\+\-\.\/]+)\t+([\w\s]+)/i";
+ $regex = "/([\w\+\-\.\/]+)\s+([\w\s]+)/i";
foreach((array)$lines as $line) {
// skip comments or mime types w/o any extensions
if ($line[0] == '#' || !preg_match($regex, $line, $matches))
diff --git a/program/lib/Roundcube/rcube_plugin.php b/program/lib/Roundcube/rcube_plugin.php
index 3153a8410..f0af95332 100644
--- a/program/lib/Roundcube/rcube_plugin.php
+++ b/program/lib/Roundcube/rcube_plugin.php
@@ -109,7 +109,7 @@ abstract class rcube_plugin
*/
public function require_plugin($plugin_name)
{
- return $this->api->load_plugin($plugin_name);
+ return $this->api->load_plugin($plugin_name, true);
}
/**
@@ -125,13 +125,17 @@ abstract class rcube_plugin
$fpath = $this->home.'/'.$fname;
$rcube = rcube::get_instance();
- if (is_file($fpath) && !$rcube->config->load_from_file($fpath)) {
+ if (($is_local = is_file($fpath)) && !$rcube->config->load_from_file($fpath)) {
rcube::raise_error(array(
'code' => 527, 'type' => 'php',
'file' => __FILE__, 'line' => __LINE__,
'message' => "Failed to load config from $fpath"), true, false);
return false;
}
+ else if (!$is_local) {
+ // Search plugin_name.inc.php file in any configured path
+ return $rcube->config->load_from_file($this->ID . '.inc.php');
+ }
return true;
}
diff --git a/program/lib/Roundcube/rcube_plugin_api.php b/program/lib/Roundcube/rcube_plugin_api.php
index 33f04eaa5..461c3cc07 100644
--- a/program/lib/Roundcube/rcube_plugin_api.php
+++ b/program/lib/Roundcube/rcube_plugin_api.php
@@ -35,8 +35,9 @@ class rcube_plugin_api
public $url = 'plugins/';
public $task = '';
public $output;
- public $handlers = array();
- public $allowed_prefs = array();
+ public $handlers = array();
+ public $allowed_prefs = array();
+ public $allowed_session_prefs = array();
protected $plugins = array();
protected $tasks = array();
@@ -167,10 +168,11 @@ class rcube_plugin_api
* Load the specified plugin
*
* @param string Plugin name
+ * @param boolean Force loading of the plugin even if it doesn't match the filter
*
* @return boolean True on success, false if not loaded or failure
*/
- public function load_plugin($plugin_name)
+ public function load_plugin($plugin_name, $force = false)
{
static $plugins_dir;
@@ -196,7 +198,7 @@ class rcube_plugin_api
// check inheritance...
if (is_subclass_of($plugin, 'rcube_plugin')) {
// ... task, request type and framed mode
- if ((!$plugin->task || preg_match('/^('.$plugin->task.')$/i', $this->task))
+ if (($force || !$plugin->task || preg_match('/^('.$plugin->task.')$/i', $this->task))
&& (!$plugin->noajax || (is_object($this->output) && $this->output->type == 'html'))
&& (!$plugin->noframe || empty($_REQUEST['_framed']))
) {
@@ -282,6 +284,7 @@ class rcube_plugin_api
$composer = INSTALL_PATH . "/plugins/$plugin_name/composer.json";
if (file_exists($composer) && ($json = @json_decode(file_get_contents($composer), true))) {
list($info['vendor'], $info['name']) = explode('/', $json['name']);
+ $info['version'] = $json['version'];
$info['license'] = $json['license'];
if ($license_uri = $license_uris[$info['license']])
$info['license_uri'] = $license_uri;
@@ -403,7 +406,7 @@ class rcube_plugin_api
$args = $ret + $args;
}
- if ($args['abort']) {
+ if ($args['break']) {
break;
}
}
diff --git a/program/lib/Roundcube/rcube_result_thread.php b/program/lib/Roundcube/rcube_result_thread.php
index 7657550be..c7f21db53 100644
--- a/program/lib/Roundcube/rcube_result_thread.php
+++ b/program/lib/Roundcube/rcube_result_thread.php
@@ -606,33 +606,39 @@ class rcube_result_thread
// arrays handling is much more expensive
// For the following structure: THREAD (2)(3 6 (4 23)(44 7 96))
// -- 2
- //
// -- 3
// \-- 6
// |-- 4
// | \-- 23
// |
// \-- 44
- // \-- 7
- // \-- 96
+ // \-- 7
+ // \-- 96
//
// The output will be: 2,3^1:6^2:4^3:23^2:44^3:7^4:96
if ($str[$begin] != '(') {
- $stop = $begin + strspn($str, '1234567890', $begin, $end - $begin);
- $msg = substr($str, $begin, $stop - $begin);
- if (!$msg) {
+ // find next bracket
+ $stop = $begin + strcspn($str, '()', $begin, $end - $begin);
+ $messages = explode(' ', trim(substr($str, $begin, $stop - $begin)));
+
+ if (empty($messages)) {
return $node;
}
- $this->meta['messages']++;
-
- $node .= ($depth ? self::SEPARATOR_ITEM.$depth.self::SEPARATOR_LEVEL : '').$msg;
+ foreach ($messages as $msg) {
+ if ($msg) {
+ $node .= ($depth ? self::SEPARATOR_ITEM.$depth.self::SEPARATOR_LEVEL : '').$msg;
+ $this->meta['messages']++;
+ $depth++;
+ }
+ }
- if ($stop + 1 < $end) {
- $node .= $this->parse_thread($str, $stop + 1, $end, $depth + 1);
+ if ($stop < $end) {
+ $node .= $this->parse_thread($str, $stop, $end, $depth);
}
- } else {
+ }
+ else {
$off = $begin;
while ($off < $end) {
$start = $off;
@@ -649,7 +655,8 @@ class rcube_result_thread
if ($p1 !== false && $p1 < $p) {
$off = $p1 + 1;
$n++;
- } else {
+ }
+ else {
$off = $p + 1;
$n--;
}
diff --git a/program/lib/Roundcube/rcube_session.php b/program/lib/Roundcube/rcube_session.php
index 67072df41..caca262c6 100644
--- a/program/lib/Roundcube/rcube_session.php
+++ b/program/lib/Roundcube/rcube_session.php
@@ -34,6 +34,7 @@ class rcube_session
private $changed;
private $time_diff = 0;
private $reloaded = false;
+ private $appends = array();
private $unsets = array();
private $gc_handlers = array();
private $cookiename = 'roundcube_sessauth';
@@ -441,8 +442,19 @@ class rcube_session
$node = &$this->get_node(explode('.', $path), $_SESSION);
- if ($key !== null) $node[$key] = $value;
- else $node[] = $value;
+ if ($key !== null) {
+ $node[$key] = $value;
+ $path .= '.' . $key;
+ }
+ else {
+ $node[] = $value;
+ }
+
+ $this->appends[] = $path;
+
+ // when overwriting a previously unset variable
+ if ($this->unsets[$path])
+ unset($this->unsets[$path]);
}
@@ -491,13 +503,40 @@ class rcube_session
*/
public function reload()
{
+ // collect updated data from previous appends
+ $merge_data = array();
+ foreach ((array)$this->appends as $var) {
+ $path = explode('.', $var);
+ $value = $this->get_node($path, $_SESSION);
+ $k = array_pop($path);
+ $node = &$this->get_node($path, $merge_data);
+ $node[$k] = $value;
+ }
+
if ($this->key && $this->memcache)
$data = $this->mc_read($this->key);
else if ($this->key)
$data = $this->db_read($this->key);
- if ($data)
+ if ($data) {
session_decode($data);
+
+ // apply appends and unsets to reloaded data
+ $_SESSION = array_merge_recursive($_SESSION, $merge_data);
+
+ foreach ((array)$this->unsets as $var) {
+ if (isset($_SESSION[$var])) {
+ unset($_SESSION[$var]);
+ }
+ else {
+ $path = explode('.', $var);
+ $k = array_pop($path);
+ $node = &$this->get_node($path, $_SESSION);
+ unset($node[$k]);
+ }
+ }
+ }
+
}
/**
diff --git a/program/lib/Roundcube/rcube_spellcheck_atd.php b/program/lib/Roundcube/rcube_spellcheck_atd.php
new file mode 100644
index 000000000..9f073f56f
--- /dev/null
+++ b/program/lib/Roundcube/rcube_spellcheck_atd.php
@@ -0,0 +1,204 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | This file is part of the Roundcube Webmail client |
+ | |
+ | Copyright (C) 2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ | PURPOSE: |
+ | Spellchecking backend implementation for afterthedeadline services |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com> |
+ +-----------------------------------------------------------------------+
+*/
+
+/**
+ * Spellchecking backend implementation to work with an After the Deadline service
+ * See http://www.afterthedeadline.com/ for more information
+ *
+ * @package Framework
+ * @subpackage Utils
+ */
+class rcube_spellcheck_atd extends rcube_spellcheck_engine
+{
+ const SERVICE_HOST = 'service.afterthedeadline.com';
+ const SERVICE_PORT = 80;
+
+ private $matches = array();
+ private $content;
+ private $langhosts = array(
+ 'fr' => 'fr.',
+ 'de' => 'de.',
+ 'pt' => 'pt.',
+ 'es' => 'es.',
+ );
+
+ /**
+ * Return a list of languages supported by this backend
+ *
+ * @see rcube_spellcheck_engine::languages()
+ */
+ function languages()
+ {
+ $langs = array_values($this->langhosts);
+ $langs[] = 'en';
+ return $langs;
+ }
+
+ /**
+ * Set content and check spelling
+ *
+ * @see rcube_spellcheck_engine::check()
+ */
+ function check($text)
+ {
+ $this->content = $text;
+
+ // spell check uri is configured
+ $rcube = rcube::get_instance();
+ $url = $rcube->config->get('spellcheck_uri');
+ $key = $rcube->config->get('spellcheck_atd_key');
+
+ if ($url) {
+ $a_uri = parse_url($url);
+ $ssl = ($a_uri['scheme'] == 'https' || $a_uri['scheme'] == 'ssl');
+ $port = $a_uri['port'] ? $a_uri['port'] : ($ssl ? 443 : 80);
+ $host = ($ssl ? 'ssl://' : '') . $a_uri['host'];
+ $path = $a_uri['path'] . ($a_uri['query'] ? '?'.$a_uri['query'] : '') . $this->lang;
+ }
+ else {
+ $host = self::SERVICE_HOST;
+ $port = self::SERVICE_PORT;
+ $path = '/checkDocument';
+
+ // prefix host for other languages than 'en'
+ $lang = substr($this->lang, 0, 2);
+ if ($this->langhosts[$lang])
+ $host = $this->langhosts[$lang] . $host;
+ }
+
+ $postdata = 'data=' . urlencode($text);
+
+ if (!empty($key))
+ $postdata .= '&key=' . urlencode($key);
+
+ $response = $headers = '';
+ $in_header = true;
+ if ($fp = fsockopen($host, $port, $errno, $errstr, 30)) {
+ $out = "POST $path HTTP/1.0\r\n";
+ $out .= "Host: " . str_replace('ssl://', '', $host) . "\r\n";
+ $out .= "Content-Length: " . strlen($postdata) . "\r\n";
+ $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
+ $out .= "Connection: Close\r\n\r\n";
+ $out .= $postdata;
+ fwrite($fp, $out);
+
+ while (!feof($fp)) {
+ if ($in_header) {
+ $line = fgets($fp, 512);
+ $headers .= $line;
+ if (trim($line) == '')
+ $in_header = false;
+ }
+ else {
+ $response .= fgets($fp, 1024);
+ }
+ }
+ fclose($fp);
+ }
+
+ // parse HTTP response headers
+ if (preg_match('!^HTTP/1.\d (\d+)(.+)!', $headers, $m)) {
+ $http_status = $m[1];
+ if ($http_status != '200')
+ $this->error = 'HTTP ' . $m[1] . $m[2];
+ }
+
+ if (!$response) {
+ $this->error = "Empty result from spelling engine";
+ }
+
+ try {
+ $result = new SimpleXMLElement($response);
+ }
+ catch (Exception $e) {
+ $thid->error = "Unexpected response from server: " . $store;
+ return array();
+ }
+
+ foreach ($result->error as $error) {
+ if (strval($error->type) == 'spelling') {
+ $word = strval($error->string);
+
+ // skip exceptions
+ if ($this->dictionary->is_exception($word)) {
+ continue;
+ }
+
+ $prefix = strval($error->precontext);
+ $start = $prefix ? mb_strpos($text, $prefix) : 0;
+ $pos = mb_strpos($text, $word, $start);
+ $len = mb_strlen($word);
+ $num = 0;
+
+ $match = array($word, $pos, $len, null, array());
+ foreach ($error->suggestions->option as $option) {
+ $match[4][] = strval($option);
+ if (++$num == self::MAX_SUGGESTIONS)
+ break;
+ }
+ $matches[] = $match;
+ }
+ }
+
+ $this->matches = $matches;
+ return $matches;
+ }
+
+ /**
+ * Returns suggestions for the specified word
+ *
+ * @see rcube_spellcheck_engine::get_words()
+ */
+ function get_suggestions($word)
+ {
+ $matches = $word ? $this->check($word) : $this->matches;
+
+ if ($matches[0][4]) {
+ return $matches[0][4];
+ }
+
+ return array();
+ }
+
+ /**
+ * Returns misspelled words
+ *
+ * @see rcube_spellcheck_engine::get_suggestions()
+ */
+ function get_words($text = null)
+ {
+ if ($text) {
+ $matches = $this->check($text);
+ }
+ else {
+ $matches = $this->matches;
+ $text = $this->content;
+ }
+
+ $result = array();
+
+ foreach ($matches as $m) {
+ $result[] = mb_substr($text, $m[1], $m[2], RCUBE_CHARSET);
+ }
+
+ return $result;
+ }
+
+}
+
diff --git a/program/lib/Roundcube/rcube_spellcheck_enchant.php b/program/lib/Roundcube/rcube_spellcheck_enchant.php
new file mode 100644
index 000000000..14d6fff46
--- /dev/null
+++ b/program/lib/Roundcube/rcube_spellcheck_enchant.php
@@ -0,0 +1,182 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | This file is part of the Roundcube Webmail client |
+ | |
+ | Copyright (C) 2011-2013, Kolab Systems AG |
+ | Copyright (C) 20011-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ | PURPOSE: |
+ | Spellchecking backend implementation to work with Enchant |
+ +-----------------------------------------------------------------------+
+ | Author: Aleksander Machniak <machniak@kolabsys.com> |
+ +-----------------------------------------------------------------------+
+*/
+
+/**
+ * Spellchecking backend implementation to work with Pspell
+ *
+ * @package Framework
+ * @subpackage Utils
+ */
+class rcube_spellcheck_enchant extends rcube_spellcheck_engine
+{
+ private $enchant_broker;
+ private $enchant_dictionary;
+ private $matches = array();
+
+ /**
+ * Return a list of languages supported by this backend
+ *
+ * @see rcube_spellcheck_engine::languages()
+ */
+ function languages()
+ {
+ $this->init();
+
+ $langs = array();
+ $dicts = enchant_broker_list_dicts($this->enchant_broker);
+ foreach ($dicts as $dict) {
+ $langs[] = preg_replace('/-.*$/', '', $dict['lang_tag']);
+ }
+
+ return array_unique($langs);
+ }
+
+ /**
+ * Initializes Enchant dictionary
+ */
+ private function init()
+ {
+ if (!$this->enchant_broker) {
+ if (!extension_loaded('enchant')) {
+ $this->error = "Enchant extension not available";
+ return;
+ }
+
+ $this->enchant_broker = enchant_broker_init();
+ }
+
+ if (!enchant_broker_dict_exists($this->enchant_broker, $this->lang)) {
+ $this->error = "Unable to load dictionary for selected language using Enchant";
+ return;
+ }
+
+ $this->enchant_dictionary = enchant_broker_request_dict($this->enchant_broker, $this->lang);
+ }
+
+ /**
+ * Set content and check spelling
+ *
+ * @see rcube_spellcheck_engine::check()
+ */
+ function check($text)
+ {
+ $this->init();
+
+ if (!$this->enchant_dictionary) {
+ return array();
+ }
+
+ // tokenize
+ $text = preg_split($this->separator, $text, NULL, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE);
+
+ $diff = 0;
+ $matches = array();
+
+ foreach ($text as $w) {
+ $word = trim($w[0]);
+ $pos = $w[1] - $diff;
+ $len = mb_strlen($word);
+
+ // skip exceptions
+ if ($this->dictionary->is_exception($word)) {
+ }
+ else if (!enchant_dict_check($this->enchant_dictionary, $word)) {
+ $suggestions = enchant_dict_suggest($this->enchant_dictionary, $word);
+
+ if (sizeof($suggestions) > self::MAX_SUGGESTIONS) {
+ $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
+ }
+
+ $matches[] = array($word, $pos, $len, null, $suggestions);
+ }
+
+ $diff += (strlen($word) - $len);
+ }
+
+ $this->matches = $matches;
+ return $matches;
+ }
+
+ /**
+ * Returns suggestions for the specified word
+ *
+ * @see rcube_spellcheck_engine::get_words()
+ */
+ function get_suggestions($word)
+ {
+ $this->init();
+
+ if (!$this->enchant_dictionary) {
+ return array();
+ }
+
+ $suggestions = enchant_dict_suggest($this->enchant_dictionary, $word);
+
+ if (sizeof($suggestions) > self::MAX_SUGGESTIONS)
+ $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
+
+ return is_array($suggestions) ? $suggestions : array();
+ }
+
+ /**
+ * Returns misspelled words
+ *
+ * @see rcube_spellcheck_engine::get_suggestions()
+ */
+ function get_words($text = null)
+ {
+ $result = array();
+
+ if ($text) {
+ // init spellchecker
+ $this->init();
+
+ if (!$this->enchant_dictionary) {
+ return array();
+ }
+
+ // With Enchant we don't need to get suggestions to return misspelled words
+ $text = preg_split($this->separator, $text, NULL, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE);
+
+ foreach ($text as $w) {
+ $word = trim($w[0]);
+
+ // skip exceptions
+ if ($this->dictionary->is_exception($word)) {
+ continue;
+ }
+
+ if (!enchant_dict_check($this->enchant_dictionary, $word)) {
+ $result[] = $word;
+ }
+ }
+
+ return $result;
+ }
+
+ foreach ($this->matches as $m) {
+ $result[] = $m[0];
+ }
+
+ return $result;
+ }
+
+}
+
diff --git a/program/lib/Roundcube/rcube_spellcheck_engine.php b/program/lib/Roundcube/rcube_spellcheck_engine.php
new file mode 100644
index 000000000..3cb4ca3de
--- /dev/null
+++ b/program/lib/Roundcube/rcube_spellcheck_engine.php
@@ -0,0 +1,91 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | This file is part of the Roundcube Webmail client |
+ | |
+ | Copyright (C) 2011-2013, Kolab Systems AG |
+ | Copyright (C) 2008-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ | PURPOSE: |
+ | Interface class for a spell-checking backend |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com> |
+ +-----------------------------------------------------------------------+
+*/
+
+/**
+ * Interface class for a spell-checking backend
+ *
+ * @package Framework
+ * @subpackage Utils
+ */
+abstract class rcube_spellcheck_engine
+{
+ const MAX_SUGGESTIONS = 10;
+
+ protected $lang;
+ protected $error;
+ protected $dictionary;
+ protected $separator = '/[\s\r\n\t\(\)\/\[\]{}<>\\"]+|[:;?!,\.](?=\W|$)/';
+
+ /**
+ * Default constructor
+ */
+ public function __construct($dict, $lang)
+ {
+ $this->dictionary = $dict;
+ $this->lang = $lang;
+ }
+
+ /**
+ * Return a list of languages supported by this backend
+ *
+ * @return array Indexed list of language codes
+ */
+ abstract function languages();
+
+ /**
+ * Set content and check spelling
+ *
+ * @param string $text Text content for spellchecking
+ *
+ * @return bool True when no mispelling found, otherwise false
+ */
+ abstract function check($text);
+
+ /**
+ * Returns suggestions for the specified word
+ *
+ * @param string $word The word
+ *
+ * @return array Suggestions list
+ */
+ abstract function get_suggestions($word);
+
+ /**
+ * Returns misspelled words
+ *
+ * @param string $text The content for spellchecking. If empty content
+ * used for check() method will be used.
+ *
+ * @return array List of misspelled words
+ */
+ abstract function get_words($text = null);
+
+ /**
+ * Returns error message
+ *
+ * @return string Error message
+ */
+ public function error()
+ {
+ return $this->error;
+ }
+
+}
+
diff --git a/program/lib/Roundcube/rcube_spellcheck_googie.php b/program/lib/Roundcube/rcube_spellcheck_googie.php
new file mode 100644
index 000000000..3777942a6
--- /dev/null
+++ b/program/lib/Roundcube/rcube_spellcheck_googie.php
@@ -0,0 +1,176 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | This file is part of the Roundcube Webmail client |
+ | |
+ | Copyright (C) 2008-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ | PURPOSE: |
+ | Spellchecking backend implementation to work with Googiespell |
+ +-----------------------------------------------------------------------+
+ | Author: Aleksander Machniak <machniak@kolabsys.com> |
+ | Author: Thomas Bruederli <roundcube@gmail.com> |
+ +-----------------------------------------------------------------------+
+*/
+
+/**
+ * Spellchecking backend implementation to work with a Googiespell service
+ *
+ * @package Framework
+ * @subpackage Utils
+ */
+class rcube_spellcheck_googie extends rcube_spellcheck_engine
+{
+ const GOOGIE_HOST = 'ssl://spell.roundcube.net';
+ const GOOGIE_PORT = 443;
+
+ private $matches = array();
+ private $content;
+
+ /**
+ * Return a list of languages supported by this backend
+ *
+ * @see rcube_spellcheck_engine::languages()
+ */
+ function languages()
+ {
+ return array('am','ar','ar','bg','br','ca','cs','cy','da',
+ 'de_CH','de_DE','el','en_GB','en_US',
+ 'eo','es','et','eu','fa','fi','fr_FR','ga','gl','gl',
+ 'he','hr','hu','hy','is','it','ku','lt','lv','nl',
+ 'pl','pt_BR','pt_PT','ro','ru',
+ 'sk','sl','sv','uk');
+ }
+
+ /**
+ * Set content and check spelling
+ *
+ * @see rcube_spellcheck_engine::check()
+ */
+ function check($text)
+ {
+ $this->content = $text;
+
+ // spell check uri is configured
+ $url = rcube::get_instance()->config->get('spellcheck_uri');
+
+ if ($url) {
+ $a_uri = parse_url($url);
+ $ssl = ($a_uri['scheme'] == 'https' || $a_uri['scheme'] == 'ssl');
+ $port = $a_uri['port'] ? $a_uri['port'] : ($ssl ? 443 : 80);
+ $host = ($ssl ? 'ssl://' : '') . $a_uri['host'];
+ $path = $a_uri['path'] . ($a_uri['query'] ? '?'.$a_uri['query'] : '') . $this->lang;
+ }
+ else {
+ $host = self::GOOGIE_HOST;
+ $port = self::GOOGIE_PORT;
+ $path = '/tbproxy/spell?lang=' . $this->lang;
+ }
+
+ $path .= sprintf('&key=%06d', $_SESSION['user_id']);
+
+ $gtext = '<?xml version="1.0" encoding="utf-8" ?>'
+ .'<spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1">'
+ .'<text>' . htmlspecialchars($text, ENT_QUOTES, RCUBE_CHARSET) . '</text>'
+ .'</spellrequest>';
+
+ $store = '';
+ if ($fp = fsockopen($host, $port, $errno, $errstr, 30)) {
+ $out = "POST $path HTTP/1.0\r\n";
+ $out .= "Host: " . str_replace('ssl://', '', $host) . "\r\n";
+ $out .= "User-Agent: Roundcube Webmail/" . RCMAIL_VERSION . " (Googiespell Wrapper)\r\n";
+ $out .= "Content-Length: " . strlen($gtext) . "\r\n";
+ $out .= "Content-Type: text/xml\r\n";
+ $out .= "Connection: Close\r\n\r\n";
+ $out .= $gtext;
+ fwrite($fp, $out);
+
+ while (!feof($fp))
+ $store .= fgets($fp, 128);
+ fclose($fp);
+ }
+
+ // parse HTTP response
+ if (preg_match('!^HTTP/1.\d (\d+)(.+)!', $store, $m)) {
+ $http_status = $m[1];
+ if ($http_status != '200') {
+ $this->error = 'HTTP ' . $m[1] . $m[2];
+ $this->error .= "\n" . $store;
+ }
+ }
+
+ if (!$store) {
+ $this->error = "Empty result from spelling engine";
+ }
+ else if (preg_match('/<spellresult error="([^"]+)"/', $store, $m) && $m[1]) {
+ $this->error = "Error code $m[1] returned";
+ $this->error .= preg_match('/<errortext>([^<]+)/', $store, $m) ? ": " . html_entity_decode($m[1]) : '';
+ }
+
+ preg_match_all('/<c o="([^"]*)" l="([^"]*)" s="([^"]*)">([^<]*)<\/c>/', $store, $matches, PREG_SET_ORDER);
+
+ // skip exceptions (if appropriate options are enabled)
+ foreach ($matches as $idx => $m) {
+ $word = mb_substr($text, $m[1], $m[2], RCUBE_CHARSET);
+ // skip exceptions
+ if ($this->dictionary->is_exception($word)) {
+ unset($matches[$idx]);
+ }
+ }
+
+ $this->matches = $matches;
+ return $matches;
+ }
+
+ /**
+ * Returns suggestions for the specified word
+ *
+ * @see rcube_spellcheck_engine::get_words()
+ */
+ function get_suggestions($word)
+ {
+ $matches = $word ? $this->check($word) : $this->matches;
+
+ if ($matches[0][4]) {
+ $suggestions = explode("\t", $matches[0][4]);
+ if (sizeof($suggestions) > self::MAX_SUGGESTIONS) {
+ $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
+ }
+
+ return $suggestions;
+ }
+
+ return array();
+ }
+
+ /**
+ * Returns misspelled words
+ *
+ * @see rcube_spellcheck_engine::get_suggestions()
+ */
+ function get_words($text = null)
+ {
+ if ($text) {
+ $matches = $this->check($text);
+ }
+ else {
+ $matches = $this->matches;
+ $text = $this->content;
+ }
+
+ $result = array();
+
+ foreach ($matches as $m) {
+ $result[] = mb_substr($text, $m[1], $m[2], RCUBE_CHARSET);
+ }
+
+ return $result;
+ }
+
+}
+
diff --git a/program/lib/Roundcube/rcube_spellcheck_pspell.php b/program/lib/Roundcube/rcube_spellcheck_pspell.php
new file mode 100644
index 000000000..b12684e43
--- /dev/null
+++ b/program/lib/Roundcube/rcube_spellcheck_pspell.php
@@ -0,0 +1,189 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | This file is part of the Roundcube Webmail client |
+ | |
+ | Copyright (C) 2008-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ | PURPOSE: |
+ | Spellchecking backend implementation to work with Pspell |
+ +-----------------------------------------------------------------------+
+ | Author: Aleksander Machniak <machniak@kolabsys.com> |
+ | Author: Thomas Bruederli <roundcube@gmail.com> |
+ +-----------------------------------------------------------------------+
+*/
+
+/**
+ * Spellchecking backend implementation to work with Pspell
+ *
+ * @package Framework
+ * @subpackage Utils
+ */
+class rcube_spellcheck_pspell extends rcube_spellcheck_engine
+{
+ private $plink;
+ private $matches = array();
+
+ /**
+ * Return a list of languages supported by this backend
+ *
+ * @see rcube_spellcheck_engine::languages()
+ */
+ function languages()
+ {
+ $defaults = array('en');
+ $langs = array();
+
+ // get aspell dictionaries
+ exec('aspell dump dicts', $dicts);
+ if (!empty($dicts)) {
+ $seen = array();
+ foreach ($dicts as $lang) {
+ $lang = preg_replace('/-.*$/', '', $lang);
+ $langc = strlen($lang) == 2 ? $lang.'_'.strtoupper($lang) : $lang;
+ if (!$seen[$langc]++)
+ $langs[] = $lang;
+ }
+ $langs = array_unique($langs);
+ }
+ else {
+ $langs = $defaults;
+ }
+
+ return $langs;
+ }
+
+ /**
+ * Initializes PSpell dictionary
+ */
+ private function init()
+ {
+ if (!$this->plink) {
+ if (!extension_loaded('pspell')) {
+ $this->error = "Pspell extension not available";
+ return;
+ }
+
+ $this->plink = pspell_new($this->lang, null, null, RCUBE_CHARSET, PSPELL_FAST);
+ }
+
+ if (!$this->plink) {
+ $this->error = "Unable to load Pspell engine for selected language";
+ }
+ }
+
+ /**
+ * Set content and check spelling
+ *
+ * @see rcube_spellcheck_engine::check()
+ */
+ function check($text)
+ {
+ $this->init();
+
+ if (!$this->plink) {
+ return array();
+ }
+
+ // tokenize
+ $text = preg_split($this->separator, $text, NULL, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE);
+
+ $diff = 0;
+ $matches = array();
+
+ foreach ($text as $w) {
+ $word = trim($w[0]);
+ $pos = $w[1] - $diff;
+ $len = mb_strlen($word);
+
+ // skip exceptions
+ if ($this->dictionary->is_exception($word)) {
+ }
+ else if (!pspell_check($this->plink, $word)) {
+ $suggestions = pspell_suggest($this->plink, $word);
+
+ if (sizeof($suggestions) > self::MAX_SUGGESTIONS) {
+ $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
+ }
+
+ $matches[] = array($word, $pos, $len, null, $suggestions);
+ }
+
+ $diff += (strlen($word) - $len);
+ }
+
+ $this->matches = $matches;
+ return $matches;
+ }
+
+ /**
+ * Returns suggestions for the specified word
+ *
+ * @see rcube_spellcheck_engine::get_words()
+ */
+ function get_suggestions($word)
+ {
+ $this->init();
+
+ if (!$this->plink) {
+ return array();
+ }
+
+ $suggestions = pspell_suggest($this->plink, $word);
+
+ if (sizeof($suggestions) > self::MAX_SUGGESTIONS)
+ $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
+
+ return is_array($suggestions) ? $suggestions : array();
+ }
+
+ /**
+ * Returns misspelled words
+ *
+ * @see rcube_spellcheck_engine::get_suggestions()
+ */
+ function get_words($text = null)
+ {
+ $result = array();
+
+ if ($text) {
+ // init spellchecker
+ $this->init();
+
+ if (!$this->plink) {
+ return array();
+ }
+
+ // With PSpell we don't need to get suggestions to return misspelled words
+ $text = preg_split($this->separator, $text, NULL, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE);
+
+ foreach ($text as $w) {
+ $word = trim($w[0]);
+
+ // skip exceptions
+ if ($this->dictionary->is_exception($word)) {
+ continue;
+ }
+
+ if (!pspell_check($this->plink, $word)) {
+ $result[] = $word;
+ }
+ }
+
+ return $result;
+ }
+
+ foreach ($this->matches as $m) {
+ $result[] = $m[0];
+ }
+
+ return $result;
+ }
+
+}
+
diff --git a/program/lib/Roundcube/rcube_spellchecker.php b/program/lib/Roundcube/rcube_spellchecker.php
index df4365223..5b77bda02 100644
--- a/program/lib/Roundcube/rcube_spellchecker.php
+++ b/program/lib/Roundcube/rcube_spellchecker.php
@@ -3,8 +3,8 @@
/*
+-----------------------------------------------------------------------+
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2011, Kolab Systems AG |
- | Copyright (C) 2008-2011, The Roundcube Dev Team |
+ | Copyright (C) 2011-2013, Kolab Systems AG |
+ | Copyright (C) 2008-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -28,21 +28,15 @@ class rcube_spellchecker
{
private $matches = array();
private $engine;
+ private $backend;
private $lang;
private $rc;
private $error;
- private $separator = '/[\s\r\n\t\(\)\/\[\]{}<>\\"]+|[:;?!,\.](?=\W|$)/';
private $options = array();
private $dict;
private $have_dict;
- // default settings
- const GOOGLE_HOST = 'ssl://www.google.com';
- const GOOGLE_PORT = 443;
- const MAX_SUGGESTIONS = 10;
-
-
/**
* Constructor
*
@@ -60,8 +54,63 @@ class rcube_spellchecker
'ignore_caps' => $this->rc->config->get('spellcheck_ignore_caps'),
'dictionary' => $this->rc->config->get('spellcheck_dictionary'),
);
+
+ $cls = 'rcube_spellcheck_' . $this->engine;
+ if (class_exists($cls)) {
+ $this->backend = new $cls($this, $this->lang);
+ $this->backend->options = $this->options;
+ }
+ else {
+ $this->error = "Unknown spellcheck engine '$this->engine'";
+ }
}
+ /**
+ * Return a list of supported languages
+ */
+ function languages()
+ {
+ // trust configuration
+ $configured = $this->rc->config->get('spellcheck_languages');
+ if (!empty($configured) && is_array($configured) && !$configured[0]) {
+ return $configured;
+ }
+ else if (!empty($configured)) {
+ $langs = (array)$configured;
+ }
+ else if ($this->backend) {
+ $langs = $this->backend->languages();
+ }
+
+ // load index
+ @include(RCUBE_LOCALIZATION_DIR . 'index.inc');
+
+ // add correct labels
+ $languages = array();
+ foreach ($langs as $lang) {
+ $langc = strtolower(substr($lang, 0, 2));
+ $alias = $rcube_language_aliases[$langc];
+ if (!$alias) {
+ $alias = $langc.'_'.strtoupper($langc);
+ }
+ if ($rcube_languages[$lang]) {
+ $languages[$lang] = $rcube_languages[$lang];
+ }
+ else if ($rcube_languages[$alias]) {
+ $languages[$lang] = $rcube_languages[$alias];
+ }
+ else {
+ $languages[$lang] = ucfirst($lang);
+ }
+ }
+
+ // remove possible duplicates (#1489395)
+ $languages = array_unique($languages);
+
+ asort($languages);
+
+ return $languages;
+ }
/**
* Set content and check spelling
@@ -81,14 +130,8 @@ class rcube_spellchecker
$this->content = $text;
}
- if ($this->engine == 'pspell') {
- $this->matches = $this->_pspell_check($this->content);
- }
- else if ($this->engine == 'enchant') {
- $this->matches = $this->_enchant_check($this->content);
- }
- else {
- $this->matches = $this->_googie_check($this->content);
+ if ($this->backend) {
+ $this->matches = $this->backend->check($this->content);
}
return $this->found() == 0;
@@ -115,14 +158,11 @@ class rcube_spellchecker
*/
function get_suggestions($word)
{
- if ($this->engine == 'pspell') {
- return $this->_pspell_suggestions($word);
- }
- else if ($this->engine == 'enchant') {
- return $this->_enchant_suggestions($word);
+ if ($this->backend) {
+ return $this->backend->get_suggestions($word);
}
- return $this->_googie_suggestions($word);
+ return array();
}
@@ -136,14 +176,15 @@ class rcube_spellchecker
*/
function get_words($text = null, $is_html=false)
{
- if ($this->engine == 'pspell') {
- return $this->_pspell_words($text, $is_html);
+ if ($is_html) {
+ $text = $this->html2text($text);
}
- else if ($this->engine == 'enchant') {
- return $this->_enchant_words($text, $is_html);
+
+ if ($this->backend) {
+ return $this->backend->get_words($text);
}
- return $this->_googie_words($text, $is_html);
+ return array();
}
@@ -157,7 +198,7 @@ class rcube_spellchecker
// send output
$out = '<?xml version="1.0" encoding="'.RCUBE_CHARSET.'"?><spellresult charschecked="'.mb_strlen($this->content).'">';
- foreach ($this->matches as $item) {
+ foreach ((array)$this->matches as $item) {
$out .= '<c o="'.$item[1].'" l="'.$item[2].'">';
$out .= is_array($item[4]) ? implode("\t", $item[4]) : $item[4];
$out .= '</c>';
@@ -178,7 +219,7 @@ class rcube_spellchecker
{
$result = array();
- foreach ($this->matches as $item) {
+ foreach ((array)$this->matches as $item) {
if ($this->engine == 'pspell') {
$word = $item[0];
}
@@ -199,394 +240,7 @@ class rcube_spellchecker
*/
function error()
{
- return $this->error;
- }
-
-
- /**
- * Checks the text using pspell
- *
- * @param string $text Text content for spellchecking
- */
- private function _pspell_check($text)
- {
- // init spellchecker
- $this->_pspell_init();
-
- if (!$this->plink) {
- return array();
- }
-
- // tokenize
- $text = preg_split($this->separator, $text, NULL, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE);
-
- $diff = 0;
- $matches = array();
-
- foreach ($text as $w) {
- $word = trim($w[0]);
- $pos = $w[1] - $diff;
- $len = mb_strlen($word);
-
- // skip exceptions
- if ($this->is_exception($word)) {
- }
- else if (!pspell_check($this->plink, $word)) {
- $suggestions = pspell_suggest($this->plink, $word);
-
- if (sizeof($suggestions) > self::MAX_SUGGESTIONS) {
- $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
- }
-
- $matches[] = array($word, $pos, $len, null, $suggestions);
- }
-
- $diff += (strlen($word) - $len);
- }
-
- return $matches;
- }
-
-
- /**
- * Returns the misspelled words
- */
- private function _pspell_words($text = null, $is_html=false)
- {
- $result = array();
-
- if ($text) {
- // init spellchecker
- $this->_pspell_init();
-
- if (!$this->plink) {
- return array();
- }
-
- // With PSpell we don't need to get suggestions to return misspelled words
- if ($is_html) {
- $text = $this->html2text($text);
- }
-
- $text = preg_split($this->separator, $text, NULL, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE);
-
- foreach ($text as $w) {
- $word = trim($w[0]);
-
- // skip exceptions
- if ($this->is_exception($word)) {
- continue;
- }
-
- if (!pspell_check($this->plink, $word)) {
- $result[] = $word;
- }
- }
-
- return $result;
- }
-
- foreach ($this->matches as $m) {
- $result[] = $m[0];
- }
-
- return $result;
- }
-
-
- /**
- * Returns suggestions for misspelled word
- */
- private function _pspell_suggestions($word)
- {
- // init spellchecker
- $this->_pspell_init();
-
- if (!$this->plink) {
- return array();
- }
-
- $suggestions = pspell_suggest($this->plink, $word);
-
- if (sizeof($suggestions) > self::MAX_SUGGESTIONS)
- $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
-
- return is_array($suggestions) ? $suggestions : array();
- }
-
-
- /**
- * Initializes PSpell dictionary
- */
- private function _pspell_init()
- {
- if (!$this->plink) {
- if (!extension_loaded('pspell')) {
- $this->error = "Pspell extension not available";
- return;
- }
-
- $this->plink = pspell_new($this->lang, null, null, RCUBE_CHARSET, PSPELL_FAST);
- }
-
- if (!$this->plink) {
- $this->error = "Unable to load Pspell engine for selected language";
- }
- }
-
-
- /**
- * Checks the text using enchant
- *
- * @param string $text Text content for spellchecking
- */
- private function _enchant_check($text)
- {
- // init spellchecker
- $this->_enchant_init();
-
- if (!$this->enchant_dictionary) {
- return array();
- }
-
- // tokenize
- $text = preg_split($this->separator, $text, NULL, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE);
-
- $diff = 0;
- $matches = array();
-
- foreach ($text as $w) {
- $word = trim($w[0]);
- $pos = $w[1] - $diff;
- $len = mb_strlen($word);
-
- // skip exceptions
- if ($this->is_exception($word)) {
- }
- else if (!enchant_dict_check($this->enchant_dictionary, $word)) {
- $suggestions = enchant_dict_suggest($this->enchant_dictionary, $word);
-
- if (sizeof($suggestions) > self::MAX_SUGGESTIONS) {
- $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
- }
-
- $matches[] = array($word, $pos, $len, null, $suggestions);
- }
-
- $diff += (strlen($word) - $len);
- }
-
- return $matches;
- }
-
-
- /**
- * Returns the misspelled words
- */
- private function _enchant_words($text = null, $is_html=false)
- {
- $result = array();
-
- if ($text) {
- // init spellchecker
- $this->_enchant_init();
-
- if (!$this->enchant_dictionary) {
- return array();
- }
-
- // With Enchant we don't need to get suggestions to return misspelled words
- if ($is_html) {
- $text = $this->html2text($text);
- }
-
- $text = preg_split($this->separator, $text, NULL, PREG_SPLIT_NO_EMPTY | PREG_SPLIT_OFFSET_CAPTURE);
-
- foreach ($text as $w) {
- $word = trim($w[0]);
-
- // skip exceptions
- if ($this->is_exception($word)) {
- continue;
- }
-
- if (!enchant_dict_check($this->enchant_dictionary, $word)) {
- $result[] = $word;
- }
- }
-
- return $result;
- }
-
- foreach ($this->matches as $m) {
- $result[] = $m[0];
- }
-
- return $result;
- }
-
-
- /**
- * Returns suggestions for misspelled word
- */
- private function _enchant_suggestions($word)
- {
- // init spellchecker
- $this->_enchant_init();
-
- if (!$this->enchant_dictionary) {
- return array();
- }
-
- $suggestions = enchant_dict_suggest($this->enchant_dictionary, $word);
-
- if (sizeof($suggestions) > self::MAX_SUGGESTIONS)
- $suggestions = array_slice($suggestions, 0, self::MAX_SUGGESTIONS);
-
- return is_array($suggestions) ? $suggestions : array();
- }
-
-
- /**
- * Initializes PSpell dictionary
- */
- private function _enchant_init()
- {
- if (!$this->enchant_broker) {
- if (!extension_loaded('enchant')) {
- $this->error = "Enchant extension not available";
- return;
- }
-
- $this->enchant_broker = enchant_broker_init();
- }
-
- if (!enchant_broker_dict_exists($this->enchant_broker, $this->lang)) {
- $this->error = "Unable to load dictionary for selected language using Enchant";
- return;
- }
-
- $this->enchant_dictionary = enchant_broker_request_dict($this->enchant_broker, $this->lang);
- }
-
-
- private function _googie_check($text)
- {
- // spell check uri is configured
- $url = $this->rc->config->get('spellcheck_uri');
-
- if ($url) {
- $a_uri = parse_url($url);
- $ssl = ($a_uri['scheme'] == 'https' || $a_uri['scheme'] == 'ssl');
- $port = $a_uri['port'] ? $a_uri['port'] : ($ssl ? 443 : 80);
- $host = ($ssl ? 'ssl://' : '') . $a_uri['host'];
- $path = $a_uri['path'] . ($a_uri['query'] ? '?'.$a_uri['query'] : '') . $this->lang;
- }
- else {
- $host = self::GOOGLE_HOST;
- $port = self::GOOGLE_PORT;
- $path = '/tbproxy/spell?lang=' . $this->lang;
- }
-
- // Google has some problem with spaces, use \n instead
- $gtext = str_replace(' ', "\n", $text);
-
- $gtext = '<?xml version="1.0" encoding="utf-8" ?>'
- .'<spellrequest textalreadyclipped="0" ignoredups="0" ignoredigits="1" ignoreallcaps="1">'
- .'<text>' . $gtext . '</text>'
- .'</spellrequest>';
-
- $store = '';
- if ($fp = fsockopen($host, $port, $errno, $errstr, 30)) {
- $out = "POST $path HTTP/1.0\r\n";
- $out .= "Host: " . str_replace('ssl://', '', $host) . "\r\n";
- $out .= "Content-Length: " . strlen($gtext) . "\r\n";
- $out .= "Content-Type: application/x-www-form-urlencoded\r\n";
- $out .= "Connection: Close\r\n\r\n";
- $out .= $gtext;
- fwrite($fp, $out);
-
- while (!feof($fp))
- $store .= fgets($fp, 128);
- fclose($fp);
- }
-
- // parse HTTP response
- if (preg_match('!^HTTP/1.\d (\d+)(.+)!', $store, $m)) {
- $http_status = $m[1];
- if ($http_status != '200')
- $this->error = 'HTTP ' . $m[1] . $m[2];
- }
-
- if (!$store) {
- $this->error = "Empty result from spelling engine";
- }
- else if (preg_match('/<spellresult error="([^"]+)"/', $store, $m) && $m[1]) {
- $this->error = "Error code $m[1] returned";
- }
-
- preg_match_all('/<c o="([^"]*)" l="([^"]*)" s="([^"]*)">([^<]*)<\/c>/', $store, $matches, PREG_SET_ORDER);
-
- // skip exceptions (if appropriate options are enabled)
- if (!empty($this->options['ignore_syms']) || !empty($this->options['ignore_nums'])
- || !empty($this->options['ignore_caps']) || !empty($this->options['dictionary'])
- ) {
- foreach ($matches as $idx => $m) {
- $word = mb_substr($text, $m[1], $m[2], RCUBE_CHARSET);
- // skip exceptions
- if ($this->is_exception($word)) {
- unset($matches[$idx]);
- }
- }
- }
-
- return $matches;
- }
-
-
- private function _googie_words($text = null, $is_html=false)
- {
- if ($text) {
- if ($is_html) {
- $text = $this->html2text($text);
- }
-
- $matches = $this->_googie_check($text);
- }
- else {
- $matches = $this->matches;
- $text = $this->content;
- }
-
- $result = array();
-
- foreach ($matches as $m) {
- $result[] = mb_substr($text, $m[1], $m[2], RCUBE_CHARSET);
- }
-
- return $result;
- }
-
-
- private function _googie_suggestions($word)
- {
- if ($word) {
- $matches = $this->_googie_check($word);
- }
- else {
- $matches = $this->matches;
- }
-
- if ($matches[0][4]) {
- $suggestions = explode("\t", $matches[0][4]);
- if (sizeof($suggestions) > self::MAX_SUGGESTIONS) {
- $suggestions = array_slice($suggestions, 0, MAX_SUGGESTIONS);
- }
-
- return $suggestions;
- }
-
- return array();
+ return $this->error ? $this->error : ($this->backend ? $this->backend->error() : false);
}
@@ -698,7 +352,7 @@ class rcube_spellchecker
"UPDATE ".$this->rc->db->table_name('dictionary')
." SET data = ?"
." WHERE user_id " . ($plugin['userid'] ? "= ".$this->rc->db->quote($plugin['userid']) : "IS NULL")
- ." AND " . $this->rc->db->quoteIdentifier('language') . " = ?",
+ ." AND " . $this->rc->db->quote_identifier('language') . " = ?",
implode(' ', $plugin['dictionary']), $plugin['language']);
}
// don't store empty dict
@@ -706,14 +360,14 @@ class rcube_spellchecker
$this->rc->db->query(
"DELETE FROM " . $this->rc->db->table_name('dictionary')
." WHERE user_id " . ($plugin['userid'] ? "= ".$this->rc->db->quote($plugin['userid']) : "IS NULL")
- ." AND " . $this->rc->db->quoteIdentifier('language') . " = ?",
+ ." AND " . $this->rc->db->quote_identifier('language') . " = ?",
$plugin['language']);
}
}
else if (!empty($this->dict)) {
$this->rc->db->query(
"INSERT INTO " .$this->rc->db->table_name('dictionary')
- ." (user_id, " . $this->rc->db->quoteIdentifier('language') . ", data) VALUES (?, ?, ?)",
+ ." (user_id, " . $this->rc->db->quote_identifier('language') . ", data) VALUES (?, ?, ?)",
$plugin['userid'], $plugin['language'], implode(' ', $plugin['dictionary']));
}
}
@@ -740,7 +394,7 @@ class rcube_spellchecker
$sql_result = $this->rc->db->query(
"SELECT data FROM ".$this->rc->db->table_name('dictionary')
." WHERE user_id ". ($plugin['userid'] ? "= ".$this->rc->db->quote($plugin['userid']) : "IS NULL")
- ." AND " . $this->rc->db->quoteIdentifier('language') . " = ?",
+ ." AND " . $this->rc->db->quote_identifier('language') . " = ?",
$plugin['language']);
if ($sql_arr = $this->rc->db->fetch_assoc($sql_result)) {
diff --git a/program/lib/Roundcube/rcube_storage.php b/program/lib/Roundcube/rcube_storage.php
index e697b2c73..ca65af1cb 100644
--- a/program/lib/Roundcube/rcube_storage.php
+++ b/program/lib/Roundcube/rcube_storage.php
@@ -360,6 +360,18 @@ abstract class rcube_storage
/**
+ * Public method for listing message flags
+ *
+ * @param string $folder Folder name
+ * @param array $uids Message UIDs
+ * @param int $mod_seq Optional MODSEQ value
+ *
+ * @return array Indexed array with message flags
+ */
+ abstract function list_flags($folder, $uids, $mod_seq = null);
+
+
+ /**
* Public method for listing headers.
*
* @param string $folder Folder name
diff --git a/program/lib/Roundcube/rcube_string_replacer.php b/program/lib/Roundcube/rcube_string_replacer.php
index 354b4596d..77b91d18b 100644
--- a/program/lib/Roundcube/rcube_string_replacer.php
+++ b/program/lib/Roundcube/rcube_string_replacer.php
@@ -24,11 +24,16 @@
*/
class rcube_string_replacer
{
- public static $pattern = '/##str_replacement\[([0-9]+)\]##/';
+ public static $pattern = '/##str_replacement_(\d+)##/';
public $mailto_pattern;
public $link_pattern;
+ public $linkref_index;
+ public $linkref_pattern;
+
private $values = array();
private $options = array();
+ private $linkrefs = array();
+ private $urls = array();
function __construct($options = array())
@@ -45,6 +50,8 @@ class rcube_string_replacer
."@$utf_domain" // domain-part
."(\?[$url1$url2]+)?" // e.g. ?subject=test...
.")/";
+ $this->linkref_index = '/\[([^\]#]+)\](:?\s*##str_replacement_(\d+)##)/';
+ $this->linkref_pattern = '/\[([^\]#]+)\]/';
$this->options = $options;
}
@@ -67,7 +74,7 @@ class rcube_string_replacer
*/
public function get_replacement($i)
{
- return '##str_replacement['.$i.']##';
+ return '##str_replacement_' . $i . '##';
}
/**
@@ -96,6 +103,7 @@ class rcube_string_replacer
$attrib['href'] = $url_prefix . $url;
$i = $this->add(html::a($attrib, rcube::Q($url)) . $suffix);
+ $this->urls[$i] = $attrib['href'];
}
// Return valid link for recognized schemes, otherwise
@@ -104,6 +112,32 @@ class rcube_string_replacer
}
/**
+ * Callback to add an entry to the link index
+ */
+ public function linkref_addindex($matches)
+ {
+ $key = $matches[1];
+ $this->linkrefs[$key] = $this->urls[$matches[3]];
+
+ return $this->get_replacement($this->add('['.$key.']')) . $matches[2];
+ }
+
+ /**
+ * Callback to replace link references with real links
+ */
+ public function linkref_callback($matches)
+ {
+ $i = 0;
+ if ($url = $this->linkrefs[$matches[1]]) {
+ $attrib = (array)$this->options['link_attribs'];
+ $attrib['href'] = $url;
+ $i = $this->add(html::a($attrib, rcube::Q($matches[1])));
+ }
+
+ return $i > 0 ? '['.$this->get_replacement($i).']' : $matches[0];
+ }
+
+ /**
* Callback function used to build mailto: links around e-mail strings
*
* @param array Matches result from preg_replace_callback
@@ -142,6 +176,9 @@ class rcube_string_replacer
// search for patterns like links and e-mail addresses
$str = preg_replace_callback($this->link_pattern, array($this, 'link_callback'), $str);
$str = preg_replace_callback($this->mailto_pattern, array($this, 'mailto_callback'), $str);
+ // resolve link references
+ $str = preg_replace_callback($this->linkref_index, array($this, 'linkref_addindex'), $str);
+ $str = preg_replace_callback($this->linkref_pattern, array($this, 'linkref_callback'), $str);
return $str;
}
diff --git a/program/lib/Roundcube/rcube_user.php b/program/lib/Roundcube/rcube_user.php
index 5e9c9af80..e232736c9 100644
--- a/program/lib/Roundcube/rcube_user.php
+++ b/program/lib/Roundcube/rcube_user.php
@@ -125,8 +125,10 @@ class rcube_user
*/
function get_prefs()
{
+ $prefs = array();
+
if (!empty($this->language))
- $prefs = array('language' => $this->language);
+ $prefs['language'] = $this->language;
if ($this->ID) {
// Preferences from session (write-master is unavailable)
@@ -163,8 +165,16 @@ class rcube_user
if (!$this->ID)
return false;
- $config = $this->rc->config;
- $old_prefs = (array)$this->get_prefs();
+ $plugin = $this->rc->plugins->exec_hook('preferences_update', array(
+ 'userid' => $this->ID, 'prefs' => $a_user_prefs, 'old' => (array)$this->get_prefs()));
+
+ if (!empty($plugin['abort'])) {
+ return;
+ }
+
+ $a_user_prefs = $plugin['prefs'];
+ $old_prefs = $plugin['old'];
+ $config = $this->rc->config;
// merge (partial) prefs array with existing settings
$save_prefs = $a_user_prefs + $old_prefs;
@@ -213,6 +223,14 @@ class rcube_user
return false;
}
+ /**
+ * Generate a unique hash to identify this user which
+ */
+ function get_hash()
+ {
+ $key = substr($this->rc->config->get('des_key'), 1, 4);
+ return md5($this->data['user_id'] . $key . $this->data['username'] . '@' . $this->data['mail_host']);
+ }
/**
* Get default identity of this user
@@ -249,7 +267,7 @@ class rcube_user
"SELECT * FROM ".$this->db->table_name('identities').
" WHERE del <> 1 AND user_id = ?".
($sql_add ? " ".$sql_add : "").
- " ORDER BY ".$this->db->quoteIdentifier('standard')." DESC, name ASC, identity_id ASC",
+ " ORDER BY ".$this->db->quote_identifier('standard')." DESC, name ASC, identity_id ASC",
$this->ID);
while ($sql_arr = $this->db->fetch_assoc($sql_result)) {
@@ -284,7 +302,7 @@ class rcube_user
$query_cols = $query_params = array();
foreach ((array)$data as $col => $value) {
- $query_cols[] = $this->db->quoteIdentifier($col) . ' = ?';
+ $query_cols[] = $this->db->quote_identifier($col) . ' = ?';
$query_params[] = $value;
}
$query_params[] = $iid;
@@ -320,7 +338,7 @@ class rcube_user
$insert_cols = $insert_values = array();
foreach ((array)$data as $col => $value) {
- $insert_cols[] = $this->db->quoteIdentifier($col);
+ $insert_cols[] = $this->db->quote_identifier($col);
$insert_values[] = $value;
}
$insert_cols[] = 'user_id';
@@ -385,7 +403,7 @@ class rcube_user
if ($this->ID && $iid) {
$this->db->query(
"UPDATE ".$this->db->table_name('identities').
- " SET ".$this->db->quoteIdentifier('standard')." = '0'".
+ " SET ".$this->db->quote_identifier('standard')." = '0'".
" WHERE user_id = ?".
" AND identity_id <> ?".
" AND del <> 1",
@@ -625,11 +643,11 @@ class rcube_user
$result = array();
$sql_result = $this->db->query(
- "SELECT search_id AS id, ".$this->db->quoteIdentifier('name')
+ "SELECT search_id AS id, ".$this->db->quote_identifier('name')
." FROM ".$this->db->table_name('searches')
." WHERE user_id = ?"
- ." AND ".$this->db->quoteIdentifier('type')." = ?"
- ." ORDER BY ".$this->db->quoteIdentifier('name'),
+ ." AND ".$this->db->quote_identifier('type')." = ?"
+ ." ORDER BY ".$this->db->quote_identifier('name'),
(int) $this->ID, (int) $type);
while ($sql_arr = $this->db->fetch_assoc($sql_result)) {
@@ -657,9 +675,9 @@ class rcube_user
}
$sql_result = $this->db->query(
- "SELECT ".$this->db->quoteIdentifier('name')
- .", ".$this->db->quoteIdentifier('data')
- .", ".$this->db->quoteIdentifier('type')
+ "SELECT ".$this->db->quote_identifier('name')
+ .", ".$this->db->quote_identifier('data')
+ .", ".$this->db->quote_identifier('type')
." FROM ".$this->db->table_name('searches')
." WHERE user_id = ?"
." AND search_id = ?",
@@ -714,11 +732,11 @@ class rcube_user
$insert_cols[] = 'user_id';
$insert_values[] = (int) $this->ID;
- $insert_cols[] = $this->db->quoteIdentifier('type');
+ $insert_cols[] = $this->db->quote_identifier('type');
$insert_values[] = (int) $data['type'];
- $insert_cols[] = $this->db->quoteIdentifier('name');
+ $insert_cols[] = $this->db->quote_identifier('name');
$insert_values[] = $data['name'];
- $insert_cols[] = $this->db->quoteIdentifier('data');
+ $insert_cols[] = $this->db->quote_identifier('data');
$insert_values[] = serialize($data['data']);
$sql = "INSERT INTO ".$this->db->table_name('searches')
diff --git a/program/lib/Roundcube/rcube_utils.php b/program/lib/Roundcube/rcube_utils.php
index c1ad3823b..c48cd80e8 100644
--- a/program/lib/Roundcube/rcube_utils.php
+++ b/program/lib/Roundcube/rcube_utils.php
@@ -445,34 +445,41 @@ class rcube_utils
$source = self::xss_entity_decode($source);
$stripped = preg_replace('/[^a-z\(:;]/i', '', $source);
$evilexpr = 'expression|behavior|javascript:|import[^a]' . (!$allow_remote ? '|url\(' : '');
+
if (preg_match("/$evilexpr/i", $stripped)) {
return '/* evil! */';
}
+ $strict_url_regexp = '!url\s*\([ "\'](https?:)//[a-z0-9/._+-]+["\' ]\)!Uims';
+
// cut out all contents between { and }
while (($pos = strpos($source, '{', $last_pos)) && ($pos2 = strpos($source, '}', $pos))) {
- $styles = substr($source, $pos+1, $pos2-($pos+1));
+ $nested = strpos($source, '{', $pos+1);
+ if ($nested && $nested < $pos2) // when dealing with nested blocks (e.g. @media), take the inner one
+ $pos = $nested;
+ $length = $pos2 - $pos - 1;
+ $styles = substr($source, $pos+1, $length);
// check every line of a style block...
if ($allow_remote) {
$a_styles = preg_split('/;[\r\n]*/', $styles, -1, PREG_SPLIT_NO_EMPTY);
+
foreach ($a_styles as $line) {
$stripped = preg_replace('/[^a-z\(:;]/i', '', $line);
// ... and only allow strict url() values
- $regexp = '!url\s*\([ "\'](https?:)//[a-z0-9/._+-]+["\' ]\)!Uims';
- if (stripos($stripped, 'url(') && !preg_match($regexp, $line)) {
+ if (stripos($stripped, 'url(') && !preg_match($strict_url_regexp, $line)) {
$a_styles = array('/* evil! */');
break;
}
}
+
$styles = join(";\n", $a_styles);
}
- $key = $replacements->add($styles);
- $source = substr($source, 0, $pos+1)
- . $replacements->get_replacement($key)
- . substr($source, $pos2, strlen($source)-$pos2);
- $last_pos = $pos+2;
+ $key = $replacements->add($styles);
+ $repl = $replacements->get_replacement($key);
+ $source = substr_replace($source, $repl, $pos+1, $length);
+ $last_pos = $pos2 - ($length - strlen($repl));
}
// remove html comments and add #container to each tag selector.
@@ -615,6 +622,10 @@ class rcube_utils
*/
public static function parse_host($name, $host = '')
{
+ if (!is_string($name)) {
+ return $name;
+ }
+
// %n - host
$n = preg_replace('/:\d+$/', '', $_SERVER['SERVER_NAME']);
// %t - host name without first part, e.g. %n=mail.domain.tld, %t=domain.tld
@@ -635,8 +646,7 @@ class rcube_utils
}
}
- $name = str_replace(array('%n', '%t', '%d', '%h', '%z', '%s'), array($n, $t, $d, $h, $z, $s[2]), $name);
- return $name;
+ return str_replace(array('%n', '%t', '%d', '%h', '%z', '%s'), array($n, $t, $d, $h, $z, $s[2]), $name);
}
@@ -673,9 +683,17 @@ class rcube_utils
*/
public static function remote_addr()
{
- foreach (array('HTTP_X_FORWARDED_FOR','HTTP_X_REAL_IP','REMOTE_ADDR') as $prop) {
- if (!empty($_SERVER[$prop]))
- return $_SERVER[$prop];
+ if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
+ $hosts = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'], 2);
+ return $hosts[0];
+ }
+
+ if (!empty($_SERVER['HTTP_X_REAL_IP'])) {
+ return $_SERVER['HTTP_X_REAL_IP'];
+ }
+
+ if (!empty($_SERVER['REMOTE_ADDR'])) {
+ return $_SERVER['REMOTE_ADDR'];
}
return '';
@@ -740,40 +758,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)) {
@@ -801,8 +792,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)) {
@@ -827,6 +818,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
@@ -886,10 +923,20 @@ class rcube_utils
*
* @param string Input string (UTF-8)
* @param boolean True to return list of words as array
+ *
* @return mixed Normalized string or a list of normalized tokens
*/
public static function normalize_string($str, $as_array = false)
{
+ // replace 4-byte unicode characters with '?' character,
+ // these are not supported in default utf-8 charset on mysql,
+ // the chance we'd need them in searching is very low
+ $str = preg_replace('/('
+ . '\xF0[\x90-\xBF][\x80-\xBF]{2}'
+ . '|[\xF1-\xF3][\x80-\xBF]{3}'
+ . '|\xF4[\x80-\x8F][\x80-\xBF]{2}'
+ . ')/', '?', $str);
+
// split by words
$arr = self::tokenize_string($str);
diff --git a/program/lib/Roundcube/rcube_vcard.php b/program/lib/Roundcube/rcube_vcard.php
index d54dc56ad..a54ee7e11 100644
--- a/program/lib/Roundcube/rcube_vcard.php
+++ b/program/lib/Roundcube/rcube_vcard.php
@@ -378,7 +378,7 @@ class rcube_vcard
default:
if ($field == 'phone' && $this->phonetypemap[$type_uc]) {
$type = $this->phonetypemap[$type_uc];
- }
+ }
if (($tag = self::$fieldmap[$field]) && (is_array($value) || strlen($value))) {
$index = count($this->raw[$tag]);
@@ -518,20 +518,28 @@ class rcube_vcard
*/
public static function cleanup($vcard)
{
- // Convert special types (like Skype) to normal type='skype' classes with this simple regex ;)
- $vcard = preg_replace(
- '/item(\d+)\.(TEL|EMAIL|URL)([^:]*?):(.*?)item\1.X-ABLabel:(?:_\$!<)?([\w-() ]*)(?:>!\$_)?./s',
- '\2;type=\5\3:\4',
- $vcard);
-
// convert Apple X-ABRELATEDNAMES into X-* fields for better compatibility
$vcard = preg_replace_callback(
'/item(\d+)\.(X-ABRELATEDNAMES)([^:]*?):(.*?)item\1.X-ABLabel:(?:_\$!<)?([\w-() ]*)(?:>!\$_)?./s',
array('self', 'x_abrelatednames_callback'),
$vcard);
- // Remove cruft like item1.X-AB*, item1.ADR instead of ADR, and empty lines
- $vcard = preg_replace(array('/^item\d*\.X-AB.*$/m', '/^item\d*\./m', "/\n+/"), array('', '', "\n"), $vcard);
+ // Cleanup
+ $vcard = preg_replace(array(
+ // convert special types (like Skype) to normal type='skype' classes with this simple regex ;)
+ '/item(\d+)\.(TEL|EMAIL|URL)([^:]*?):(.*?)item\1.X-ABLabel:(?:_\$!<)?([\w-() ]*)(?:>!\$_)?./s',
+ '/^item\d*\.X-AB.*$/m', // remove cruft like item1.X-AB*
+ '/^item\d*\./m', // remove item1.ADR instead of ADR
+ '/\n+/', // remove empty lines
+ '/^(N:[^;\R]*)$/m', // if N doesn't have any semicolons, add some
+ ),
+ array(
+ '\2;type=\5\3:\4',
+ '',
+ '',
+ "\n",
+ '\1;;;;',
+ ), $vcard);
// convert X-WAB-GENDER to X-GENDER
if (preg_match('/X-WAB-GENDER:(\d)/', $vcard, $matches)) {
@@ -539,9 +547,6 @@ class rcube_vcard
$vcard = preg_replace('/X-WAB-GENDER:\d/', 'X-GENDER:' . $value, $vcard);
}
- // if N doesn't have any semicolons, add some
- $vcard = preg_replace('/^(N:[^;\R]*)$/m', '\1;;;;', $vcard);
-
return $vcard;
}
@@ -612,8 +617,8 @@ class rcube_vcard
$enc = null;
foreach($regs2[1] as $attrid => $attr) {
+ $attr = preg_replace('/[\s\t\n\r\0\x0B]/', '', $attr);
if ((list($key, $value) = explode('=', $attr)) && $value) {
- $value = trim($value);
if ($key == 'ENCODING') {
$value = strtoupper($value);
// add next line(s) to value string if QP line end detected
@@ -792,7 +797,7 @@ class rcube_vcard
return $result;
}
- $s = strtr($s, $rep2);
+ $s = trim(strtr($s, $rep2));
}
// some implementations (GMail) use non-standard backslash before colon (#1489085)
diff --git a/program/lib/Roundcube/rcube_washtml.php b/program/lib/Roundcube/rcube_washtml.php
index e7467545f..5a5b3dc55 100644
--- a/program/lib/Roundcube/rcube_washtml.php
+++ b/program/lib/Roundcube/rcube_washtml.php
@@ -418,7 +418,7 @@ class rcube_washtml
$html = preg_replace($html_search, $html_replace, trim($html));
//-> Replace all of those weird MS Word quotes and other high characters
- $badwordchars=array(
+ $badwordchars = array(
"\xe2\x80\x98", // left single quote
"\xe2\x80\x99", // right single quote
"\xe2\x80\x9c", // left double quote
@@ -426,7 +426,7 @@ class rcube_washtml
"\xe2\x80\x94", // em dash
"\xe2\x80\xa6" // elipses
);
- $fixedwordchars=array(
+ $fixedwordchars = array(
"'",
"'",
'"',
@@ -434,7 +434,7 @@ class rcube_washtml
'&mdash;',
'...'
);
- $html = str_replace($badwordchars,$fixedwordchars, $html);
+ $html = str_replace($badwordchars, $fixedwordchars, $html);
// PCRE errors handling (#1486856), should we use something like for every preg_* use?
if ($html === null && ($preg_error = preg_last_error()) != PREG_NO_ERROR) {
@@ -455,13 +455,16 @@ class rcube_washtml
}
// fix (unknown/malformed) HTML tags before "wash"
- $html = preg_replace_callback('/(<(?!\!)[\/]*)([^\s>]+)/', array($this, 'html_tag_callback'), $html);
+ $html = preg_replace_callback('/(<(?!\!)[\/]*)([^\s>]+)([^>]*)/', array($this, 'html_tag_callback'), $html);
// Remove invalid HTML comments (#1487759)
// Don't remove valid conditional comments
// Don't remove MSOutlook (<!-->) conditional comments (#1489004)
$html = preg_replace('/<!--[^->\[\n]+>/', '', $html);
+ // fix broken nested lists
+ self::fix_broken_lists($html);
+
// turn relative into absolute urls
$html = self::resolve_base($html);
@@ -479,7 +482,12 @@ class rcube_washtml
'/[^a-z0-9_\[\]\!-]/i', // forbidden characters
), '', $tagname);
- return $matches[1] . $tagname;
+ // fix invalid closing tags - remove any attributes (#1489446)
+ if ($matches[1] == '</') {
+ $matches[3] = '';
+ }
+
+ return $matches[1] . $tagname . $matches[3];
}
/**
@@ -495,5 +503,77 @@ class rcube_washtml
return $body;
}
-}
+ /**
+ * Fix broken nested lists, they are not handled properly by DOMDocument (#1488768)
+ */
+ public static function fix_broken_lists(&$html)
+ {
+ // do two rounds, one for <ol>, one for <ul>
+ foreach (array('ol', 'ul') as $tag) {
+ $pos = 0;
+ while (($pos = stripos($html, '<' . $tag, $pos)) !== false) {
+ $pos++;
+
+ // make sure this is an ol/ul tag
+ if (!in_array($html[$pos+2], array(' ', '>'))) {
+ continue;
+ }
+
+ $p = $pos;
+ $in_li = false;
+ $li_pos = 0;
+
+ while (($p = strpos($html, '<', $p)) !== false) {
+ $tt = strtolower(substr($html, $p, 4));
+
+ // li open tag
+ if ($tt == '<li>' || $tt == '<li ') {
+ $in_li = true;
+ $p += 4;
+ }
+ // li close tag
+ else if ($tt == '</li' && in_array($html[$p+4], array(' ', '>'))) {
+ $li_pos = $p;
+ $p += 4;
+ $in_li = false;
+ }
+ // ul/ol closing tag
+ else if ($tt == '</' . $tag && in_array($html[$p+4], array(' ', '>'))) {
+ break;
+ }
+ // nested ol/ul element out of li
+ else if (!$in_li && $li_pos && ($tt == '<ol>' || $tt == '<ol ' || $tt == '<ul>' || $tt == '<ul ')) {
+ // find closing tag of this ul/ol element
+ $element = substr($tt, 1, 2);
+ $cpos = $p;
+ do {
+ $tpos = stripos($html, '<' . $element, $cpos+1);
+ $cpos = stripos($html, '</' . $element, $cpos+1);
+ }
+ while ($tpos !== false && $cpos !== false && $cpos > $tpos);
+
+ // not found, this is invalid HTML, skip it
+ if ($cpos === false) {
+ break;
+ }
+
+ // get element content
+ $end = strpos($html, '>', $cpos);
+ $len = $end - $p + 1;
+ $element = substr($html, $p, $len);
+
+ // move element to the end of the last li
+ $html = substr_replace($html, '', $p, $len);
+ $html = substr_replace($html, $element, $li_pos, 0);
+
+ $p = $end;
+ }
+ else {
+ $p++;
+ }
+ }
+ }
+ }
+ }
+}
diff --git a/program/localization/ar_SA/labels.inc b/program/localization/ar_SA/labels.inc
index 377e1352f..4100f7c4a 100644
--- a/program/localization/ar_SA/labels.inc
+++ b/program/localization/ar_SA/labels.inc
@@ -15,34 +15,22 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'مرحباً بكم ÙÙŠ $product';
$labels['username'] = 'اسم المستخدم';
$labels['password'] = 'كلمة المرور';
$labels['server'] = 'الخادم';
$labels['login'] = 'تسجيل الدخول';
-
-// taskbar
$labels['logout'] = 'تسجيل الخروج';
$labels['mail'] = 'البريد';
$labels['settings'] = 'الإعدادات الشخصية';
$labels['addressbook'] = 'دÙتر العناوين';
-
-// mailbox names
$labels['inbox'] = 'الوارد';
$labels['drafts'] = 'المسودات';
$labels['sent'] = 'المرسل';
$labels['trash'] = 'المهملات';
$labels['junk'] = 'غير المرغوب';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'الموضوع';
$labels['from'] = 'المرسل';
-$labels['sender'] = 'Sender';
$labels['to'] = 'المستقبل';
$labels['cc'] = 'نسخة';
$labels['bcc'] = 'نسخة مخÙية';
@@ -53,28 +41,18 @@ $labels['size'] = 'الحجم';
$labels['priority'] = 'الأولوية';
$labels['organization'] = 'المنظمة';
$labels['readstatus'] = 'حالة القراءة';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'مجلدات';
$labels['messagesfromto'] = 'الرسالة $from إلى $to من مجموع $count';
$labels['threadsfromto'] = 'جهات الإتصال $from إلى $to من مجموع $count';
$labels['messagenrof'] = 'الرسالة $nr من $count';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'نسخ';
$labels['move'] = 'نقل';
$labels['moveto'] = 'نقل إلى...';
$labels['download'] = 'تنزيل';
$labels['open'] = 'Ùتح';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'اسم الملÙ';
$labels['filesize'] = 'حجم الملÙ';
-
$labels['addtoaddressbook'] = 'إضاÙØ© إلى دÙتر العناوين';
-
-// weekdays short
$labels['sun'] = 'أحد';
$labels['mon'] = 'إثنين';
$labels['tue'] = 'ثلاثاء';
@@ -82,8 +60,6 @@ $labels['wed'] = 'أربعاء';
$labels['thu'] = 'خميس';
$labels['fri'] = 'جمعة';
$labels['sat'] = 'سبت';
-
-// weekdays long
$labels['sunday'] = 'الأحد';
$labels['monday'] = 'الإثنين';
$labels['tuesday'] = 'الثلاثاء';
@@ -91,8 +67,6 @@ $labels['wednesday'] = 'الأربعاء';
$labels['thursday'] = 'الخميس';
$labels['friday'] = 'الجمعة';
$labels['saturday'] = 'السبت';
-
-// months short
$labels['jan'] = 'يناير';
$labels['feb'] = 'Ùبراير';
$labels['mar'] = 'مارس';
@@ -105,8 +79,6 @@ $labels['sep'] = 'سبتمبر';
$labels['oct'] = 'أكتوبر';
$labels['nov'] = 'نوÙمبر';
$labels['dec'] = 'ديسمبر';
-
-// months long
$labels['longjan'] = 'يناير';
$labels['longfeb'] = 'Ùبراير';
$labels['longmar'] = 'مارس';
@@ -119,10 +91,7 @@ $labels['longsep'] = 'سبتمبر';
$labels['longoct'] = 'أكتوبر';
$labels['longnov'] = 'نوÙمبر';
$labels['longdec'] = 'ديسمبر';
-
$labels['today'] = 'اليوم';
-
-// toolbar buttons
$labels['refresh'] = 'تحديث';
$labels['checkmail'] = 'التحقق من وجود رسائل جديدة';
$labels['compose'] = 'إنشاء رسالة';
@@ -155,7 +124,6 @@ $labels['moreactions'] = 'إجراءات إضاÙية...';
$labels['more'] = 'المزيد';
$labels['back'] = 'العودة';
$labels['options'] = 'خيارات';
-
$labels['select'] = 'تحديد';
$labels['all'] = 'الكل';
$labels['none'] = 'لاشيء';
@@ -174,7 +142,6 @@ $labels['expand-all'] = 'إظهار الكل';
$labels['expand-unread'] = 'إظهار الغير مقروءة';
$labels['collapse-all'] = 'ضمّ الكل';
$labels['threaded'] = 'متتابع';
-
$labels['autoexpand_threads'] = 'إظهار تتابعات الرسائل';
$labels['do_expand'] = 'جميع التتابعات';
$labels['expand_only_unread'] = 'Ùقط مع الرسائل الغير مقروءة';
@@ -190,30 +157,18 @@ $labels['listcolumns'] = 'أعمدة السرد';
$labels['listsorting'] = 'أعمدة الترتيب';
$labels['listorder'] = 'طريقة الترتيب';
$labels['listmode'] = 'وضع طريقة السرد';
-
$labels['folderactions'] = 'إجراءات المجلد...';
$labels['compact'] = 'ضغط';
$labels['empty'] = 'تÙريغ';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'المساحة المستخدمة';
$labels['unknown'] = 'مجهول';
$labels['unlimited'] = 'غير محدود';
-
$labels['quicksearch'] = 'البحث السريع';
$labels['resetsearch'] = 'استعادة البحث للاÙتراضي';
$labels['searchmod'] = 'أماكن البحث';
$labels['msgtext'] = 'كامل الرسالة';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-$labels['namex'] = 'Name';
-
$labels['openinextwin'] = 'اÙتح ÙÙŠ ناÙذة جديدة';
$labels['emlsave'] = 'تنزيل (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'تعديل كجديد';
$labels['send'] = 'ارسل';
$labels['sendmessage'] = 'إرسال الرسالة الآن';
@@ -225,52 +180,40 @@ $labels['returnreceipt'] = 'ايصال استلام';
$labels['dsn'] = 'تنويه حالة التوصيل';
$labels['mailreplyintro'] = 'كتب $sender ÙÙŠ $date:';
$labels['originalmessage'] = 'الرسالة الأساسية';
-
$labels['editidents'] = 'تعديل الهويات';
$labels['spellcheck'] = 'التدقيق اﻹملائى';
$labels['checkspelling'] = 'التدقيق الإملائي';
$labels['resumeediting'] = 'متابعة التحرير';
$labels['revertto'] = 'استعادة إلى';
-
$labels['attach'] = 'إرÙاق';
$labels['attachments'] = 'مرÙقات';
$labels['upload'] = 'تحميل';
$labels['uploadprogress'] = '$percent ($current من $total)';
$labels['close'] = 'إغلاق';
$labels['messageoptions'] = 'خيارات الرسائل...';
-
$labels['low'] = 'منخض';
$labels['lowest'] = 'الأقل';
$labels['normal'] = 'عادي';
$labels['high'] = 'مرتÙع';
$labels['highest'] = 'الأعلى';
-
$labels['nosubject'] = '(دون موضوع)';
$labels['showimages'] = 'إظهار الصور';
$labels['alwaysshow'] = 'دائماً أظهر الصّور القادمة من $sender';
$labels['isdraft'] = 'هذه مسودّة رسالة';
$labels['andnmore'] = '$nr المزيد ...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'نص مجرد';
$labels['savesentmessagein'] = 'احÙظ الرسالة المÙرسلة ÙÙŠ';
$labels['dontsave'] = 'لا تحÙظها';
$labels['maxuploadsize'] = 'أقصى حجم للمل٠هو $size';
-
$labels['addcc'] = 'أض٠CC';
$labels['addbcc'] = 'أض٠BCC';
$labels['addreplyto'] = 'أضي٠Reply-To';
$labels['addfollowupto'] = 'إضاÙØ© Mail-Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'طلب المرسل إعلامه عند قراءتك لرسالته. هل تود إعلام المرسل؟';
$labels['receiptread'] = 'إيصال الاستلام )بالقراءة)';
$labels['yourmessage'] = 'هذا إيصال بقراءة رسالتك';
$labels['receiptnote'] = 'ملاحظة: ÙŠÙعلمك هذا الإيصال بأن رسالتك قد ظهرت على جهاز المستقبÙÙ„. ليست هناك أية ضمانات أن المستقبل قد قرأ أو Ùهم محتويات الرسالة.';
-
-// address boook
$labels['name'] = 'اسم العرض';
$labels['firstname'] = 'الإسم الأول';
$labels['surname'] = 'الإسم الأخير';
@@ -305,7 +248,6 @@ $labels['search'] = 'بحث';
$labels['advsearch'] = 'بحث متقدم';
$labels['advanced'] = 'Ù…Ùتقدم';
$labels['other'] = 'آخر';
-
$labels['typehome'] = 'المنزل';
$labels['typework'] = 'العمل';
$labels['typeother'] = 'آخر';
@@ -320,14 +262,12 @@ $labels['typeassistant'] = 'المساعد';
$labels['typehomepage'] = 'الرئيسية';
$labels['typeblog'] = 'المدوّنة';
$labels['typeprofile'] = 'المل٠الشخصي';
-
$labels['addfield'] = 'إضاÙØ© حقل...';
$labels['addcontact'] = 'إضاÙØ© المراسل المحدد إلى دÙتر عناويني';
$labels['editcontact'] = 'تحرير بيانات المراسل';
$labels['contacts'] = 'المراسلين';
$labels['contactproperties'] = 'خواص جهة الإتصال';
$labels['personalinfo'] = 'المعلومات الشخصية';
-
$labels['edit'] = 'تحرير';
$labels['cancel'] = 'إلغاء';
$labels['save'] = 'Ø­Ùظ';
@@ -336,7 +276,6 @@ $labels['rename'] = 'إعادة التسمية';
$labels['addphoto'] = 'إضاÙØ©';
$labels['replacephoto'] = 'استبدال';
$labels['uploadphoto'] = 'ارÙع صورة';
-
$labels['newcontact'] = 'إنشاء بطاقة مراسل جديدة';
$labels['deletecontact'] = 'حذ٠المراسلين المحددين';
$labels['composeto'] = 'إنشاء رسالة إليه';
@@ -344,55 +283,38 @@ $labels['contactsfromto'] = 'المراسلون $from إلى $to من $count';
$labels['print'] = 'طباعة';
$labels['export'] = 'تصدير';
$labels['exportall'] = 'تصدير الكل';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'صدّر المراسلين بنسق vCard';
$labels['newcontactgroup'] = 'إنشاء مجموعة مراسلين جديدة';
$labels['grouprename'] = 'تغيير اسم المجموعة';
$labels['groupdelete'] = 'حذ٠المجموعة';
$labels['groupremoveselected'] = 'حذ٠العنوان المختار من المجموعة';
-
$labels['previouspage'] = 'عرض المجموعة السابقة';
$labels['firstpage'] = 'عرض المجموعة الأولى';
$labels['nextpage'] = 'عرض المجموعة التالية';
$labels['lastpage'] = 'عرض المجموعة الأخيرة';
-
$labels['group'] = 'مجموعة';
$labels['groups'] = 'المجموعات';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'العناوين الشخصية';
-
$labels['searchsave'] = 'Ø­Ùظ البحث';
$labels['searchdelete'] = 'حذ٠البحث';
-
$labels['import'] = 'استورد';
$labels['importcontacts'] = 'استورد المراسلين';
$labels['importfromfile'] = 'استورد من ملÙ:';
-$labels['importtarget'] = 'Add contacts to';
$labels['importreplace'] = 'استبدل دÙتر العناوين بأكمله';
-$labels['importgroups'] = 'Import group assignments';
-$labels['importgroupsall'] = 'All (create groups if necessary)';
-$labels['importgroupsexisting'] = 'Only for existing groups';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'تم';
-
-// settings
$labels['settingsfor'] = 'إعدادات';
$labels['about'] = 'نبذة';
$labels['preferences'] = 'التÙضيلات';
$labels['userpreferences'] = 'تÙضيلات المستخدم';
$labels['editpreferences'] = 'تحرير تÙضيلات المستخدم';
-
$labels['identities'] = 'الهويات';
$labels['manageidentities'] = 'إدارة هويات هذا الحساب';
$labels['newidentity'] = 'هوية جديدة';
-
$labels['newitem'] = 'عنصر جديد';
$labels['edititem'] = 'تحرير عنصر';
-
$labels['preferhtml'] = 'تÙضيل صيغة HTML';
$labels['defaultcharset'] = 'ترميز المحار٠الاÙتراضي';
$labels['htmlmessage'] = 'رسالة بنسق HTML';
-$labels['messagepart'] = 'Part';
$labels['digitalsig'] = 'التوقيع الالكتروني';
$labels['dateformat'] = 'نسق التاريخ';
$labels['timeformat'] = 'نسق الوقت';
@@ -408,9 +330,7 @@ $labels['showinextwin'] = 'Ùتح الرسالة ÙÙ‰ ناÙذة جديدة';
$labels['composeextwin'] = 'أرسال عن طريق ناÙذة جديدة';
$labels['htmleditor'] = 'إنشاء رسائل بنسق HTML';
$labels['htmlonreply'] = 'حال الرد على الرسائل بصيغة HTML Ùقط';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'توقيع HTML';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'إظهار قسم المعاينة';
$labels['skin'] = 'شكل الواجهة';
$labels['logoutclear'] = 'Ø¥Ùراغ سلة المحذوÙات عند الخروج';
@@ -428,14 +348,12 @@ $labels['readwhendeleted'] = 'تحديد الرسالة كمقروءة عند ح
$labels['flagfordeletion'] = 'وضع علامة على الرسالة لحذÙها بدلاً منحذÙها';
$labels['skipdeleted'] = 'لا تظهر الرسائل المحذوÙØ©';
$labels['deletealways'] = 'حذ٠الرسائل مباشرة، إن تعذر نقلها إلىالمهملات';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
$labels['showremoteimages'] = 'إظهار الصور الخارجية المدمجة';
$labels['fromknownsenders'] = 'للمرسلين المعلومين';
$labels['always'] = 'دائماً';
$labels['showinlineimages'] = 'إظهار الصّور المرÙقة أسÙÙ„ الرسالة';
$labels['autosavedraft'] = 'Ø­Ùظ المسودة تلقائياً';
$labels['everynminutes'] = 'كل $n دقيقة';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'أبداً';
$labels['immediately'] = 'حالاً';
$labels['messagesdisplaying'] = 'إظهار الرسائل';
@@ -449,15 +367,12 @@ $labels['advancedoptions'] = 'خيارات متقدّمة';
$labels['focusonnewmessage'] = 'التركيز على ناÙذة المتصÙØ­ عند وجود رسالةجديدة';
$labels['checkallfolders'] = 'التحقق من وجود رسائل جديدة ÙÙŠ جميعالمجلدات';
$labels['displaynext'] = 'إظهار الرسالة التالية بعد حذÙ/نقلالرسالة الحالية';
-$labels['defaultfont'] = 'Default font of HTML message';
$labels['mainoptions'] = 'الخيارات الأساسية';
-$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'قسم';
$labels['maintenance'] = 'الصيانة';
$labels['newmessage'] = 'رسالة جديدة';
$labels['signatureoptions'] = 'خيارات التوقيع';
$labels['whenreplying'] = 'عند الرد';
-$labels['replyempty'] = 'do not quote the original message';
$labels['replytopposting'] = 'بدء رسالة جديدة ووضع النص أعلى الأصلية';
$labels['replybottomposting'] = 'بدء رسالة جديدة ووضع النص أسÙÙ„ الأصلية';
$labels['replyremovesignature'] = 'إزالة التوقيع من الرسالة عند الرد';
@@ -470,21 +385,13 @@ $labels['afternseconds'] = 'بعد $n ثواني';
$labels['reqmdn'] = 'طلب إشعار استلام دائماً';
$labels['reqdsn'] = 'طلب تنويه لحالة التوصيل دائماً';
$labels['replysamefolder'] = 'وضع الردود ÙÙŠ المجلد الذي يحوي الرسالةالمردود عليها';
-$labels['defaultabook'] = 'Default address book';
$labels['autocompletesingle'] = 'تجاهل عنوان البريد الإلكتروني البديل Ùيالتكملة التلقائية';
-$labels['listnamedisplay'] = 'List contacts as';
$labels['spellcheckbeforesend'] = 'تحقق من الإملاء قبل إرسال الرسائل';
$labels['spellcheckoptions'] = 'خيارات التدقيق الإملاءي';
$labels['spellcheckignoresyms'] = 'تجاهل الكلمات التي تحتوي رموز';
$labels['spellcheckignorenums'] = 'تجاهل الكلمات التي تحتوي أرقام';
$labels['spellcheckignorecaps'] = 'تجاهل الكلمات التي بها أحر٠كبيرة';
$labels['addtodict'] = 'إضاÙØ© إلى القامس';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'مجلد';
$labels['folders'] = 'مجلدات';
$labels['foldername'] = 'اسم المجلد';
@@ -505,26 +412,19 @@ $labels['foldertype'] = 'نوع المجلد';
$labels['personalfolder'] = 'مجلد خاص';
$labels['otherfolder'] = 'مجلد مستخدم آخر';
$labels['sharedfolder'] = 'مجلد عام';
-
$labels['sortby'] = 'ترتيب بحسب';
$labels['sortasc'] = 'ترتيب تصاعدي';
$labels['sortdesc'] = 'ترتيب تنازلي';
$labels['undo'] = 'تراجع';
-
-$labels['installedplugins'] = 'Installed plugins';
$labels['plugin'] = 'إضاÙØ©';
$labels['version'] = 'النسخة';
$labels['source'] = 'المصدر';
$labels['license'] = 'الترخيص';
$labels['support'] = 'احصل على الدعم الÙني';
-
-// units
$labels['B'] = 'ب';
$labels['KB'] = 'ك.ب';
$labels['MB'] = 'م.ب';
$labels['GB'] = 'ج.ب';
-
-// character sets
$labels['unicode'] = 'يونيكود';
$labels['english'] = 'الإنجليزية';
$labels['westerneuropean'] = 'الغرب أوروبية';
@@ -543,5 +443,4 @@ $labels['vietnamese'] = 'الÙيتنامية';
$labels['japanese'] = 'اليابانية';
$labels['korean'] = 'الكورية';
$labels['chinese'] = 'الصينية';
-
?>
diff --git a/program/localization/ar_SA/messages.inc b/program/localization/ar_SA/messages.inc
index f989867de..7d9a7ac62 100644
--- a/program/localization/ar_SA/messages.inc
+++ b/program/localization/ar_SA/messages.inc
@@ -15,9 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'Ùشل تسجيل الدخول';
$messages['cookiesdisabled'] = 'المتصÙØ­ الخاص بك لا يقبل الكوكيز';
$messages['sessionerror'] = 'انتهت صلاحية الجلسة الحالية أو أنها غيرصالحة';
@@ -25,17 +22,12 @@ $messages['storageerror'] = 'Ùشل الاتصال بخادم IMAP';
$messages['servererror'] = 'خطأ ÙÙŠ الخادم!';
$messages['servererrormsg'] = 'خطأ خادم: $msg';
$messages['dberror'] = 'خطأ ÙÙŠ قاعدة البيانات!';
-$messages['requesttimedout'] = 'Request timed out';
$messages['errorreadonly'] = 'تعذر تنÙيذ العملية. المجلد للقراءة Ùقط.';
$messages['errornoperm'] = 'تعذر تنÙيذ العملية. ليست لديك الصلاحية.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'طلب غير صالح! لم تحÙظ أية بيانات.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'لم يعثر على أية رسائل ÙÙŠ صندوق البريد هذا';
$messages['loggedout'] = 'قمت بإنهاء هذه الجلسة بنجاح. إلى اللقاء!';
$messages['mailboxempty'] = 'صندوق البريد Ùارغ';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'جاري العمل...';
$messages['uploading'] = 'جاري رÙع الملÙ...';
$messages['uploadingmany'] = 'جاري تحميل الملÙات...';
@@ -56,8 +48,6 @@ $messages['contactnotfound'] = 'تعذر العثور على المراسل ال
$messages['contactsearchonly'] = 'اكتب بعض كلمات البحث للعثور علىالمÙراسلين';
$messages['sendingfailed'] = 'Ùشل إرسال الرسالة';
$messages['senttooquickly'] = 'رجاء انتظر $sec ثوان قبل إرسال هذه الرسالة';
-$messages['errorsavingsent'] = 'حدث خطأ أثناء Ø­Ùظ الرسالة المÙرسلة';
-$messages['errorsaving'] = 'حدث خطأ أثناء الحÙظ';
$messages['errormoving'] = 'تعذر نقل هذه الرسالة';
$messages['errorcopying'] = 'تعذر نسخ الرسائل';
$messages['errordeleting'] = 'تعذر حذ٠هذه الرسالة';
@@ -101,36 +91,26 @@ $messages['converting'] = 'إزالة التنسيق من الرسالة...';
$messages['messageopenerror'] = 'تعذرت قراءة الرسالة من الخادم';
$messages['fileuploaderror'] = 'Ùشل رÙع الملÙ';
$messages['filesizeerror'] = 'حجم المل٠الذي تحاول رÙعه أكبر من الحجمالأقصى $size';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'لا يمكن تعديل مصدر العنوان هذا';
$messages['errorsavingcontact'] = 'تعذر Ø­Ùظ عنوان المراسل';
$messages['movingmessage'] = 'جاري نقل الرسالة...';
$messages['copyingmessage'] = 'جاري نسخ الرسالة...';
$messages['copyingcontact'] = 'جاري نسخ المÙراسلين...';
-$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'جاري حذ٠الرسائل...';
$messages['markingmessage'] = 'جاري تحديد الرسائل...';
$messages['addingmember'] = 'جاري إضاÙØ© المÙراسلين إلى المجموعة...';
$messages['removingmember'] = 'جاري إزالة المراسلين من المجموعة...';
$messages['receiptsent'] = 'أرسل إيصال الاستلام بنجاح';
$messages['errorsendingreceipt'] = 'تعذر إرسال إيصال الاستلام';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'لا يمكن حذ٠هذا السجل حيث أنه الوحيدالمتبقي.';
$messages['forbiddencharacter'] = 'اسم المجلّد يحتوي حروÙاً ممنوعة';
$messages['selectimportfile'] = 'رجاء اختر ملÙاً لرÙعه';
$messages['addresswriterror'] = 'دÙتر العناوين المحدد غير قابل للكتابة';
$messages['contactaddedtogroup'] = 'تمت إضاÙØ© المراسلين إلى هذه المجموعةبنجاح';
$messages['contactremovedfromgroup'] = 'تمت إزالة المراسلين من هذه المجموعةبنجاح';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'جاري الاستيراد، رجاء انتظر...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
$messages['importconfirm'] = '<b>تم استيراد $inserted مراسلين بنجاح، وتجاهل$skipped موجودين مسبقاً</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>تم تجاهل $skipped عناصر موجودة</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'العملية ممنوعة!';
$messages['nofromaddress'] = 'عنوان البريد الالكتروني غير محدد Ùيالهويّة المنتقاة';
$messages['editorwarning'] = 'يتسبب الانتقال إلى محرر النص البسيط بضياع جميع التنسيق. هل تريد الاستمرار؟';
@@ -144,7 +124,6 @@ $messages['smtperror'] = 'خطأ SMTP: $msg';
$messages['emailformaterror'] = 'عنوان بريد إلكتروني غير صالح: $email';
$messages['toomanyrecipients'] = 'عدد المرسل إليهم كبير. قلص العدد إلى $max.';
$messages['maxgroupmembersreached'] = 'عدد أعضاء المجموعة أكثر من $max';
-$messages['internalerror'] = 'حدث خطأ داخلي. الرجاء المحاولة مرة أخرى';
$messages['contactdelerror'] = 'تعذر حذ٠أسماء جهات الإتصال';
$messages['contactdeleted'] = 'تم حذ٠أسماء جهات الإتصال بنجاح';
$messages['contactrestoreerror'] = 'تعذر استعادة المÙراسل المحذوÙ.';
@@ -170,7 +149,4 @@ $messages['invalidimageformat'] = 'ليست صيغة صورة صحيحة';
$messages['mispellingsfound'] = 'عÙثر على أخطاء إملائية ÙÙŠ الرسالة';
$messages['parentnotwritable'] = 'تعذر إنشاء/نقل المجلد إلى المجلد المحدد.ليست لديك الصلاحية.';
$messages['messagetoobig'] = 'جزء الرسالة أكبر بكثير مما يمكن معالجته.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/ast/labels.inc b/program/localization/ast/labels.inc
index d92aa3d61..25d09451c 100644
--- a/program/localization/ast/labels.inc
+++ b/program/localization/ast/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Bienllegáu a $product';
$labels['username'] = 'Usuariu';
$labels['password'] = 'Clave';
$labels['server'] = 'Sirvidor';
$labels['login'] = 'Entrar';
-
-// taskbar
$labels['logout'] = 'Zarrar';
$labels['mail'] = 'Corréu';
$labels['settings'] = 'Axustes';
$labels['addressbook'] = 'Llibreta de direiciones';
-
-// mailbox names
$labels['inbox'] = 'Entrantes';
$labels['drafts'] = 'Borradores';
$labels['sent'] = 'Unviaos';
$labels['trash'] = 'Papelera';
$labels['junk'] = 'Puxarra';
$labels['show_real_foldernames'] = 'Amosar nomes reales pa carpetes especiales';
-
-// message listing
$labels['subject'] = 'Asuntu';
$labels['from'] = 'De';
$labels['sender'] = 'Remitente';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Prioridá';
$labels['organization'] = 'Organización';
$labels['readstatus'] = 'Lleer estáu';
$labels['listoptions'] = 'Llista d\'oopciones...';
-
$labels['mailboxlist'] = 'Bandexes';
$labels['messagesfromto'] = 'Mensaxes del $from a $to de $count';
$labels['threadsfromto'] = 'Filos $from a $to de $count';
$labels['messagenrof'] = 'Mensaxe $nr de $count';
$labels['fromtoshort'] = '$from – $to de $count';
-
$labels['copy'] = 'Copia';
$labels['move'] = 'Mover';
$labels['moveto'] = 'mover a...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Descargar';
$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Amosar';
$labels['showanyway'] = 'Amosar de toes formes';
-
$labels['filename'] = 'Nome del Ficheru';
$labels['filesize'] = 'Tamañu del ficheru';
-
$labels['addtoaddressbook'] = 'Amestar a la llibreta de direiciones';
-
-// weekdays short
$labels['sun'] = 'Dom';
$labels['mon'] = 'Llu';
$labels['tue'] = 'Mar';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Mie';
$labels['thu'] = 'Xue';
$labels['fri'] = 'Vie';
$labels['sat'] = 'Sab';
-
-// weekdays long
$labels['sunday'] = 'Domingu';
$labels['monday'] = 'Llunes';
$labels['tuesday'] = 'Martes';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Miércoles';
$labels['thursday'] = 'Xueves';
$labels['friday'] = 'Vienres';
$labels['saturday'] = 'Sábadu';
-
-// months short
$labels['jan'] = 'Xin';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Set';
$labels['oct'] = 'Och';
$labels['nov'] = 'Pay';
$labels['dec'] = 'Avi';
-
-// months long
$labels['longjan'] = 'Xineru';
$labels['longfeb'] = 'Febreru';
$labels['longmar'] = 'Marzu';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Setiembre';
$labels['longoct'] = 'Ochobre';
$labels['longnov'] = 'Payares';
$labels['longdec'] = 'Avientu';
-
$labels['today'] = 'Güei';
-
-// toolbar buttons
$labels['refresh'] = 'Refrescar';
$labels['checkmail'] = 'Buscar mensaxes nuevos';
$labels['compose'] = 'Escribir un mensaxe';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Más aiciones...';
$labels['more'] = 'Más';
$labels['back'] = 'Volver';
$labels['options'] = 'Opciones';
-
$labels['select'] = 'Escoyer';
$labels['all'] = 'Toos';
$labels['none'] = 'Dengún';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Espander toos';
$labels['expand-unread'] = 'Espander non lleíos';
$labels['collapse-all'] = 'Contrayer toos';
$labels['threaded'] = 'Encadenaos';
-
$labels['autoexpand_threads'] = 'Espander filos de mensaxes';
$labels['do_expand'] = 'tolos filos';
$labels['expand_only_unread'] = 'namái con mensaxes non lleíos';
@@ -190,16 +163,13 @@ $labels['listcolumns'] = 'Llistar columnes';
$labels['listsorting'] = 'Columna de llistáu';
$labels['listorder'] = 'Orde de llistáu';
$labels['listmode'] = 'Mou de vista de llista';
-
$labels['folderactions'] = 'Aiciones de bandexa...';
$labels['compact'] = 'Compautar';
$labels['empty'] = 'Vaciar';
$labels['importmessages'] = 'Importar mensaxes';
-
$labels['quota'] = 'Espaciu en discu';
$labels['unknown'] = 'desconocíu';
$labels['unlimited'] = 'ensin llímite';
-
$labels['quicksearch'] = 'Gueta rápida';
$labels['resetsearch'] = 'Anovar la gueta';
$labels['searchmod'] = 'Guetar modificadores';
@@ -207,13 +177,10 @@ $labels['msgtext'] = 'Mensaxe';
$labels['body'] = 'Cuerpu';
$labels['type'] = 'Tipu';
$labels['namex'] = 'Nome';
-
$labels['openinextwin'] = 'Abrir nuna ventana nueva';
$labels['emlsave'] = 'Baxar (.eml)';
$labels['changeformattext'] = 'Amosar en formatu de testu planu';
$labels['changeformathtml'] = 'Amosar en formatu HTML';
-
-// message compose
$labels['editasnew'] = 'Editar como nuevu';
$labels['send'] = 'Unviar';
$labels['sendmessage'] = 'Unviar el mensaxe yá';
@@ -225,26 +192,23 @@ $labels['returnreceipt'] = 'Avisu de recibu';
$labels['dsn'] = 'Entrega de notificaciones d\'estáu';
$labels['mailreplyintro'] = 'El $date, $sender escribió:';
$labels['originalmessage'] = 'Mensaxe orixinal';
-
$labels['editidents'] = 'Editar identidaes';
$labels['spellcheck'] = 'Correutor ortográficu';
$labels['checkspelling'] = 'Revisar ortografía';
$labels['resumeediting'] = 'Siguir cola edición';
$labels['revertto'] = 'Revertir a';
-
+$labels['responsename'] = 'Nome';
$labels['attach'] = 'Axuntar';
$labels['attachments'] = 'Axuntos';
$labels['upload'] = 'Xubir';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Zarrar';
$labels['messageoptions'] = 'Opciones de mensaxe...';
-
$labels['low'] = 'Baxu';
$labels['lowest'] = 'Mui baxu';
$labels['normal'] = 'Normal';
$labels['high'] = 'Altu';
$labels['highest'] = 'Mui altu';
-
$labels['nosubject'] = '(ensin asuntu)';
$labels['showimages'] = 'Amosar imáxenes';
$labels['alwaysshow'] = 'Amosar siempre les imáxenes de $sender';
@@ -252,25 +216,19 @@ $labels['isdraft'] = 'Esti mensaxe ye un borrador.';
$labels['andnmore'] = '$nr más...';
$labels['togglemoreheaders'] = 'Amosar más testeres del mensaxe';
$labels['togglefullheaders'] = 'Amosar o anubrir testeres de mensaxes';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Testu';
$labels['savesentmessagein'] = 'Guardar mensaxe unviáu en';
$labels['dontsave'] = 'nun guardar';
$labels['maxuploadsize'] = 'El tamañu másimu pa un ficheru ye $size';
-
$labels['addcc'] = 'Amestar Cc';
$labels['addbcc'] = 'Amestar Cct';
$labels['addreplyto'] = 'Amestar Rempuesta pa';
$labels['addfollowupto'] = 'Amestar Siguir a';
-
-// mdn
$labels['mdnrequest'] = 'El qu\'unvia esti mensaxe quier que lu avises cuando lleas el corréu. ¿Quies avisalu?';
$labels['receiptread'] = 'Avisu de llectura';
$labels['yourmessage'] = 'Esto ye un avisu de llectura del to mensaxe';
$labels['receiptnote'] = 'Nota: Esti avisu namás quier dicir que\'l to mensaxe amosóse nel equipu del receutor. Nun hai forma de garantizate que lu lleera o que atalantara\'l conteníu del to mensaxe.';
-
-// address boook
$labels['name'] = 'Nome completu';
$labels['firstname'] = 'Nome';
$labels['surname'] = 'Apellíu';
@@ -305,7 +263,6 @@ $labels['search'] = 'Guetar';
$labels['advsearch'] = 'Gueta avanzada';
$labels['advanced'] = 'Avanzaes';
$labels['other'] = 'Otru';
-
$labels['typehome'] = 'Casa';
$labels['typework'] = 'Trabayu';
$labels['typeother'] = 'Otru';
@@ -320,14 +277,12 @@ $labels['typeassistant'] = 'Auxiliar';
$labels['typehomepage'] = 'Aniciu';
$labels['typeblog'] = 'Blogue';
$labels['typeprofile'] = 'Perfil';
-
$labels['addfield'] = 'Amestar campu...';
$labels['addcontact'] = 'Amestar contautu nuevu';
$labels['editcontact'] = 'Editar contautu';
$labels['contacts'] = 'Contautos';
$labels['contactproperties'] = 'Propiedaes del contautu';
$labels['personalinfo'] = 'Información personal';
-
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Encaboxar';
$labels['save'] = 'Guardar';
@@ -336,7 +291,6 @@ $labels['rename'] = 'Renomar';
$labels['addphoto'] = 'Amestar';
$labels['replacephoto'] = 'Trocar';
$labels['uploadphoto'] = 'Xubir xemeya';
-
$labels['newcontact'] = 'Facer un contautu nuevu';
$labels['deletecontact'] = 'Desaniciar los contautos marcaos';
$labels['composeto'] = 'Unviar mensaxe a';
@@ -350,20 +304,16 @@ $labels['newcontactgroup'] = 'Crear un grupu nuevu de contautos';
$labels['grouprename'] = 'Renomar grupu';
$labels['groupdelete'] = 'Desaniciar grupu';
$labels['groupremoveselected'] = 'Desaniciar los contautos seleicionaos del grupu';
-
$labels['previouspage'] = 'Amosar páxina previa';
$labels['firstpage'] = 'Amosar primer páxina';
$labels['nextpage'] = 'Amosar siguiente páxina';
$labels['lastpage'] = 'Amosar última páxina';
-
$labels['group'] = 'Grupu';
$labels['groups'] = 'Grupos';
$labels['listgroup'] = 'Llistar miembros del grupu';
$labels['personaladrbook'] = 'Direiciones personales';
-
$labels['searchsave'] = 'Guardar gueta';
$labels['searchdelete'] = 'Desaniciar gueta';
-
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contautos';
$labels['importfromfile'] = 'Importar dende un ficheru:';
@@ -374,21 +324,16 @@ $labels['importgroupsall'] = 'Toos (crear grupos si ye necesario)';
$labels['importgroupsexisting'] = 'Namái pa los grupos esistentes';
$labels['importdesc'] = 'Pues xubir contautos dende una llibreta de direiciones esistente.<br/>Anguaño permitimos la importación dende los formatos de datos <a href="http://es.wikipedia.org/wiki/VCard">vCard</a> o CSV (separtaos per comes).';
$labels['done'] = 'Fecho';
-
-// settings
$labels['settingsfor'] = 'Axustes pa';
$labels['about'] = 'Tocante a';
$labels['preferences'] = 'Preferencies';
$labels['userpreferences'] = 'Preferencies d\'usuariu';
$labels['editpreferences'] = 'Editar preferencies d\'usuariu';
-
$labels['identities'] = 'Identidaes';
$labels['manageidentities'] = 'Remanar identidaes pa esta cuenta';
$labels['newidentity'] = 'Identidá nueva';
-
$labels['newitem'] = 'Nuevu';
$labels['edititem'] = 'Editar';
-
$labels['preferhtml'] = 'Amosar HTML';
$labels['defaultcharset'] = 'Xuegu de caráuteres predetermináu';
$labels['htmlmessage'] = 'Mensaxe HTML';
@@ -484,7 +429,7 @@ $labels['standardwindows'] = 'Xestionar ventanes emerxentes como ventanes están
$labels['forwardmode'] = 'Reunviu de mensaxes';
$labels['inline'] = 'en llinia';
$labels['asattachment'] = 'como axuntu';
-
+$labels['replyalldefault'] = 'responder a toos';
$labels['folder'] = 'Bandexa';
$labels['folders'] = 'Bandexes';
$labels['foldername'] = 'Nome de bandexa';
@@ -505,26 +450,20 @@ $labels['foldertype'] = 'Tipu de bandexa';
$labels['personalfolder'] = 'Bandexa privada';
$labels['otherfolder'] = 'Bandexa d\'otru usuariu';
$labels['sharedfolder'] = 'Bandexa pública';
-
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Orde ascendente';
$labels['sortdesc'] = 'Orde descendente';
$labels['undo'] = 'Desfacer';
-
$labels['installedplugins'] = 'Complementos instalaos';
$labels['plugin'] = 'Complementu';
$labels['version'] = 'Versión';
$labels['source'] = 'Orixe';
$labels['license'] = 'Llicencia';
$labels['support'] = 'Obtener soporte';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inglés';
$labels['westerneuropean'] = 'Européu occidental';
@@ -543,5 +482,4 @@ $labels['vietnamese'] = 'Vietnamín';
$labels['japanese'] = 'Xaponés';
$labels['korean'] = 'Coreanu';
$labels['chinese'] = 'Chinu';
-
?>
diff --git a/program/localization/ast/messages.inc b/program/localization/ast/messages.inc
index 69d5ecc2f..35a850e57 100644
--- a/program/localization/ast/messages.inc
+++ b/program/localization/ast/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = '¡Hebo un fallu!';
$messages['loginfailed'] = 'Contraseña o nome d\'usuariu incorreutu.';
$messages['cookiesdisabled'] = 'El to navegador nun aceuta "cookies';
@@ -56,8 +54,6 @@ $messages['contactnotfound'] = 'Nun s\'atopa\'l contautu solicitáu.';
$messages['contactsearchonly'] = 'Introduz dalgún criteriu pa guetar contautos';
$messages['sendingfailed'] = 'Falló l\'unviu del mensaxe';
$messages['senttooquickly'] = 'Por favor espera $sec segundu/os enantes d\'unviar esti mensaxe.';
-$messages['errorsavingsent'] = 'Hebo un fallu al guardar el mensaxe unviáu.';
-$messages['errorsaving'] = 'Falló al guardase.';
$messages['errormoving'] = 'Nun pudo movese el/los mensaxe(s).';
$messages['errorcopying'] = 'Nun pudo copiase el/los mensaxe(s).';
$messages['errordeleting'] = 'Nun pudo desaniciase el/los mensaxe(s)';
@@ -144,7 +140,6 @@ $messages['smtperror'] = 'Fallu SMTP: $msg';
$messages['emailformaterror'] = 'Direición de corréu incorreuta: $email';
$messages['toomanyrecipients'] = 'Hai munchos destinatarios. Amenorga\'l númberu de destinatarios a $max.';
$messages['maxgroupmembersreached'] = 'El númberu de miembros del grupu perpasa\'l máximu de $max.';
-$messages['internalerror'] = 'Hebo un fallu internu. Por favor, inténtalo de nueves.';
$messages['contactdelerror'] = 'Nun pudo desaniciase el/los contautu(os).';
$messages['contactdeleted'] = 'Contautu(os) desaniciáu(os) correchamente.';
$messages['contactrestoreerror'] = 'Nun pudieron restaurase los contautos desaniciaos.';
@@ -172,5 +167,4 @@ $messages['parentnotwritable'] = 'Nun puede crease/movese la carpeta a la carpet
$messages['messagetoobig'] = 'Esta parte del mensaxe ye enforma grande pa procesala';
$messages['attachmentvalidationerror'] = '¡ATENCIÓN! Esti axuntu ye sospechosu porque\'l so tipu nun concasa col tipu declaráu nel mensaxe. Si nun confíes nel so remitente, nun tendríes d\'abrilu nel to navegador porque podría tener conteníu maliciosu.<br/<br/> <em>Esperábase: $expected; atopóse: $detected</em>';
$messages['noscriptwarning'] = 'Avisu: ¡esti serviciu de webmail necesita Javascript! Pa poder usalu, habilita\'l soporte de Javascript nel to navegador, por favor.';
-
?>
diff --git a/program/localization/az_AZ/labels.inc b/program/localization/az_AZ/labels.inc
index 129315ec0..47c00ed08 100644
--- a/program/localization/az_AZ/labels.inc
+++ b/program/localization/az_AZ/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = '$product-a xoş gəldiniz!';
$labels['username'] = 'İstifadəçi adı';
$labels['password'] = 'ÅžifrÉ™';
$labels['server'] = 'Server';
$labels['login'] = 'GiriÅŸ';
-
-// taskbar
$labels['logout'] = 'Çıx';
$labels['mail'] = 'Poçt';
$labels['settings'] = 'Nizamlamalar';
$labels['addressbook'] = 'Ãœnvanlar';
-
-// mailbox names
$labels['inbox'] = 'Gələnlər';
$labels['drafts'] = 'Qaralamalar';
$labels['sent'] = 'Göndərilənlər';
$labels['trash'] = 'Səbət';
$labels['junk'] = 'Spam';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
+$labels['show_real_foldernames'] = 'Xüsusi qovluqlar üçün real adları göstər';
$labels['subject'] = 'Mövzu';
$labels['from'] = 'Kimdən';
$labels['sender'] = 'Göndərən';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Vaciblik';
$labels['organization'] = 'Təşkilat';
$labels['readstatus'] = 'Statusu oxu';
$labels['listoptions'] = 'Siyahı ayarları...';
-
$labels['mailboxlist'] = 'Qovluqlar';
$labels['messagesfromto'] = '$count mesajdan $from - $to arası mesajlar';
$labels['threadsfromto'] = 'Müzakirə: $from - $to Toplam: $count';
$labels['messagenrof'] = 'Məktub: $nr / $count';
$labels['fromtoshort'] = '$from – $to-dan $count';
-
$labels['copy'] = 'Kopyala';
$labels['move'] = 'Köçür';
$labels['moveto'] = 'Burada köçür...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Endir';
$labels['open'] = 'Aç';
$labels['showattachment'] = 'Göstər';
$labels['showanyway'] = 'İstənilən halda göstər';
-
$labels['filename'] = 'Faylın adı';
$labels['filesize'] = 'Faylın ölçüsü';
-
$labels['addtoaddressbook'] = 'Ünvanlara əlavə et';
-
-// weekdays short
$labels['sun'] = 'B';
$labels['mon'] = 'Be';
$labels['tue'] = 'Ç';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Ça';
$labels['thu'] = 'C';
$labels['fri'] = 'Ca';
$labels['sat'] = 'Åž';
-
-// weekdays long
$labels['sunday'] = 'Bazar';
$labels['monday'] = 'Bazar ertəsi';
$labels['tuesday'] = 'Çərçənbə';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Çərşənbə axşamı';
$labels['thursday'] = 'Cümə';
$labels['friday'] = 'Cümə axşamı';
$labels['saturday'] = 'Şənbə';
-
-// months short
$labels['jan'] = 'Yan';
$labels['feb'] = 'Fev';
$labels['mar'] = 'Mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Sen';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Noy';
$labels['dec'] = 'Dek';
-
-// months long
$labels['longjan'] = 'Yanvar';
$labels['longfeb'] = 'Fevral';
$labels['longmar'] = 'Mart';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Sentyabr';
$labels['longoct'] = 'Oktyabr';
$labels['longnov'] = 'Noyabr';
$labels['longdec'] = 'Dekabr';
-
$labels['today'] = 'Bu gün';
-
-// toolbar buttons
$labels['refresh'] = 'YenilÉ™';
$labels['checkmail'] = 'Gələnləri yoxla';
$labels['compose'] = 'Məktub yaz';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Daha çox seçim...';
$labels['more'] = 'Daha çox';
$labels['back'] = 'Geri';
$labels['options'] = 'Ayarlar';
-
$labels['select'] = 'Seçin';
$labels['all'] = 'Hamısı';
$labels['none'] = 'Heç biri';
@@ -163,7 +137,7 @@ $labels['currpage'] = 'Hazırki səhifəni';
$labels['unread'] = 'Oxunmamışları';
$labels['flagged'] = 'İşarəliləri';
$labels['unanswered'] = 'Cavabsızları';
-$labels['withattachment'] = 'With attachment';
+$labels['withattachment'] = 'QoÅŸma ilÉ™';
$labels['deleted'] = 'Silinmişləri';
$labels['undeleted'] = 'Silinməyib';
$labels['invert'] = 'İnvertliləri';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Hamısını aç';
$labels['expand-unread'] = 'Oxunmamışları aç';
$labels['collapse-all'] = 'Hamısını bük';
$labels['threaded'] = 'Müzakirə';
-
$labels['autoexpand_threads'] = 'Müzakirəni aç';
$labels['do_expand'] = 'bütün müzakirələr';
$labels['expand_only_unread'] = 'yalnız oxunmamış məktublarla';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Sütunlar';
$labels['listsorting'] = 'Sütunları çeşidlə';
$labels['listorder'] = 'Çeşidləmə qaydası';
$labels['listmode'] = 'Görünüş rejimi';
-
$labels['folderactions'] = 'Qovluq işləri...';
$labels['compact'] = 'Sıx';
$labels['empty'] = 'BoÅŸalt';
-$labels['importmessages'] = 'Import messages';
-
+$labels['importmessages'] = 'Mesajların idxalı';
$labels['quota'] = 'Disk istifadəsi';
$labels['unknown'] = 'naməlum';
$labels['unlimited'] = 'limitsiz';
-
$labels['quicksearch'] = 'Sürətli axtarış';
$labels['resetsearch'] = 'Axtarışı yenilə';
$labels['searchmod'] = 'Axtarış variantları';
$labels['msgtext'] = 'Bütün məktub';
$labels['body'] = 'Mətn';
-$labels['type'] = 'Type';
-
+$labels['type'] = 'Növ';
+$labels['namex'] = 'Ad';
$labels['openinextwin'] = 'Yeni pəncərədə aç';
$labels['emlsave'] = 'Saxla (.eml)';
$labels['changeformattext'] = 'Sadə mətn formatında göstər';
$labels['changeformathtml'] = 'HTML formatında göstər';
-
-// message compose
$labels['editasnew'] = 'Yeni kimi redaktÉ™ et';
$labels['send'] = 'Göndər';
$labels['sendmessage'] = 'İndi göndər';
@@ -224,26 +192,32 @@ $labels['returnreceipt'] = 'Cavab sorÄŸusu';
$labels['dsn'] = 'Çatdırılma statusu haqda bildiriş';
$labels['mailreplyintro'] = '$date tarixdə, $sender yazıb:';
$labels['originalmessage'] = 'Orijinal məktub';
-
$labels['editidents'] = 'İdentifikasiyanı dəyiş';
$labels['spellcheck'] = 'Orfoqrafiya';
$labels['checkspelling'] = 'Orfoqrafiyanı yoxla';
$labels['resumeediting'] = 'Redaktəni davam et';
$labels['revertto'] = 'Dəyişiklikləri ləğv et';
-
+$labels['restore'] = 'Bərpa';
+$labels['restoremessage'] = 'Məktub bərpa edilsin?';
+$labels['responses'] = 'Cavablar';
+$labels['insertresponse'] = 'Cavab daxil et';
+$labels['manageresponses'] = 'Cavabların idarə edilməsi';
+$labels['savenewresponse'] = 'Yeni cavabı saxla';
+$labels['editresponses'] = 'Cavabları redaktə et';
+$labels['editresponse'] = 'Cavabı redaktə et';
+$labels['responsename'] = 'Ad';
+$labels['responsetext'] = 'Cavab mətni';
$labels['attach'] = 'Fayl əlavə et';
$labels['attachments'] = 'Bərkidilmiş Fayllar';
$labels['upload'] = 'Yüklə';
$labels['uploadprogress'] = '$percent ($current cəmi: $total)';
$labels['close'] = 'BaÄŸla';
$labels['messageoptions'] = 'Məktub xüsusiyyətləri...';
-
$labels['low'] = 'Alçaq';
$labels['lowest'] = 'Çox alçaq';
$labels['normal'] = 'Normal';
$labels['high'] = 'Yüksək';
$labels['highest'] = 'Çox yüksək';
-
$labels['nosubject'] = '(mövzu yoxdur)';
$labels['showimages'] = 'Şəkilləri göstər';
$labels['alwaysshow'] = '$sender-dən olan məktublarda həmişə şəkilləri göstər';
@@ -251,25 +225,19 @@ $labels['isdraft'] = 'Bu qaralama məktubudur.';
$labels['andnmore'] = 'Daha çox $nr more...';
$labels['togglemoreheaders'] = 'Daha çox məktub';
$labels['togglefullheaders'] = 'Məktubun çiy başlıqlarını keçir';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Mətn';
$labels['savesentmessagein'] = 'Məktubu saxla...';
$labels['dontsave'] = 'saxlama';
$labels['maxuploadsize'] = 'Faylın maksimal ölçüsü: $size';
-
$labels['addcc'] = 'Kopya əlavə et';
$labels['addbcc'] = 'Gizli kopya əlavə et';
$labels['addreplyto'] = 'Yönəltmə əlavə et';
$labels['addfollowupto'] = '"İzlə" əlavə et';
-
-// mdn
$labels['mdnrequest'] = 'Məktubu göndərən onu oxuduğunuz haqda sorğu almaq istəyir. Göndərilsin?';
$labels['receiptread'] = 'Oxunulma haqda soÄŸru';
$labels['yourmessage'] = 'Bu məktubunuzun oxunulduğu haqda sorğudur';
$labels['receiptnote'] = 'Bu sorğu yalnız qəbul edilən tərəfindən məktubun açıldığına göstərir. Onun oxunulduğuna zəmanət vermir.';
-
-// address boook
$labels['name'] = 'Göstərilən ad';
$labels['firstname'] = 'Adı';
$labels['surname'] = 'Soyadı';
@@ -304,7 +272,6 @@ $labels['search'] = 'Axtar';
$labels['advsearch'] = 'Ætraflı axtarış';
$labels['advanced'] = 'ÆlavÉ™';
$labels['other'] = 'BaÅŸqa';
-
$labels['typehome'] = 'Ev';
$labels['typework'] = 'Ä°ÅŸ';
$labels['typeother'] = 'BaÅŸqa';
@@ -319,14 +286,12 @@ $labels['typeassistant'] = 'Köməkçi';
$labels['typehomepage'] = 'Ana səhifə';
$labels['typeblog'] = 'Bloq';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Sahə əlavə et';
$labels['addcontact'] = 'Ünvanlara əlavə et';
$labels['editcontact'] = 'Ünvanı redaktə et';
$labels['contacts'] = 'ÆlaqÉ™lÉ™r';
$labels['contactproperties'] = 'Kontakt xüsusiyyətləri';
$labels['personalinfo'] = 'Şəxsi məlumat';
-
$labels['edit'] = 'RedaktÉ™ et';
$labels['cancel'] = 'Ləğv et';
$labels['save'] = 'Saxla';
@@ -335,7 +300,6 @@ $labels['rename'] = 'Adlandır';
$labels['addphoto'] = 'ÆlavÉ™ et';
$labels['replacephoto'] = 'Adı dəyiş';
$labels['uploadphoto'] = 'Şəkil yüklə';
-
$labels['newcontact'] = 'Yeni ünvan kartı əlavə et';
$labels['deletecontact'] = 'Seçilmiş ünvanları sil';
$labels['composeto'] = 'Seçilmiş ünvanlara məktub yaz';
@@ -349,42 +313,36 @@ $labels['newcontactgroup'] = 'Ãœnvanlar qrupunu yarat';
$labels['grouprename'] = 'Qruğun adını dəyişdir';
$labels['groupdelete'] = 'Qrupu sil';
$labels['groupremoveselected'] = 'Qrupdan seçilmiş kontaktları sil';
-
$labels['previouspage'] = 'ÆvvÉ™lkini göstÉ™r';
$labels['firstpage'] = 'Birincini göstər';
$labels['nextpage'] = 'Sonrakını göstər';
$labels['lastpage'] = 'Sonuncunu göstər';
-
$labels['group'] = 'Qrup';
$labels['groups'] = 'Qruplar';
-$labels['listgroup'] = 'List group members';
+$labels['listgroup'] = 'Qrup üzvlərinin siyahısı';
$labels['personaladrbook'] = 'Şəxsi ünvanlar';
-
$labels['searchsave'] = 'SorÄŸunu saxla';
$labels['searchdelete'] = 'SorÄŸunu sil';
-
$labels['import'] = 'Ä°dxal';
$labels['importcontacts'] = 'Ünvanların idxalı';
$labels['importfromfile'] = 'Fayldan idxal:';
-$labels['importtarget'] = 'ÆlaqÉ™ kitabçasına yeni kontaktları É™lavÉ™ et';
+$labels['importtarget'] = 'Kontaktları əlavə et';
$labels['importreplace'] = 'Ünvan kitabçasını dəyiş';
+$labels['importgroups'] = 'Qrup idxalı tapşırığı';
+$labels['importgroupsall'] = 'Hamısı (əgər lazımdırsa qrupun yaradılması)';
+$labels['importgroupsexisting'] = 'Yalnız mövcud qruplar üçün';
$labels['importdesc'] = 'Siz kontaktları mövcud ünvan kitabçasından yükləyə bilərsiniz. <br/> Hal-hazırda biz ünvanların idxalını <a href="http://az.wikipedia.org/wiki/VCard">vCard</a> və ya CSV (vergüllə bölünmüş) formatında olan vizit kartları dəstəkləyirik.';
$labels['done'] = 'Bitdi';
-
-// settings
$labels['settingsfor'] = 'Nizamlamaları';
$labels['about'] = 'Haqqında';
$labels['preferences'] = 'Nizamlamalar';
$labels['userpreferences'] = 'İstifadəçi nizamlamaları';
$labels['editpreferences'] = 'İstifadəçi nizamlamalarını redaktə et';
-
$labels['identities'] = 'Kimliklər';
$labels['manageidentities'] = 'Bu hesab üçün kimlikləri idarə et';
$labels['newidentity'] = 'Yeni kimlik';
-
$labels['newitem'] = 'Yeni maddÉ™';
$labels['edititem'] = 'Maddəni redaktə et';
-
$labels['preferhtml'] = 'HTML-də göstər';
$labels['defaultcharset'] = 'İlkin vəziyyətdəki kodlaşdırma';
$labels['htmlmessage'] = 'HTML məktub';
@@ -406,7 +364,7 @@ $labels['htmleditor'] = 'HTML-dÉ™ mesaj yaz';
$labels['htmlonreply'] = 'yalnız HTML mesajlar ilə cavab';
$labels['htmlonreplyandforward'] = 'HTML məktuba cavab və yönəltmə zamanı';
$labels['htmlsignature'] = 'HTML imza';
-$labels['showemail'] = 'Show email address with display name';
+$labels['showemail'] = 'E-poçt ünvanları displey adları ilə göstər';
$labels['previewpane'] = 'Prevyu paneli göstər';
$labels['skin'] = 'Ä°nterfeys stili';
$labels['logoutclear'] = 'Poçtdan çıxan zaman səbəti təmizlə';
@@ -476,11 +434,13 @@ $labels['spellcheckignorenums'] = 'Rəqəmlər ilə sözləri keç';
$labels['spellcheckignorecaps'] = 'Böyük hərfləri olan sözlərdən keç';
$labels['addtodict'] = 'Lüğətə əlavə et';
$labels['mailtoprotohandler'] = 'mailto: keçid üçün protokol qeyd et';
-$labels['standardwindows'] = 'Handle popups as standard windows';
+$labels['standardwindows'] = 'Handle popapsı standart pəncərələr kimi';
$labels['forwardmode'] = 'Məktubların yönəldilməsi';
$labels['inline'] = 'mətndə';
$labels['asattachment'] = 'fayl kimi';
-
+$labels['replyallmode'] = '[Hamıya cavab] düyməsinin susmaya görə hərəkəti';
+$labels['replyalldefault'] = 'hamıya cavab';
+$labels['replyalllist'] = 'yalnız poçt siyahısına (əgər tapılıbsa) cavab ';
$labels['folder'] = 'Qovluq';
$labels['folders'] = 'Qovluqlar';
$labels['foldername'] = 'Qovluq adı';
@@ -501,26 +461,20 @@ $labels['foldertype'] = 'Qovluq növü';
$labels['personalfolder'] = 'Gizli qovluq';
$labels['otherfolder'] = 'Başqa istifadəçilərin qovluğu';
$labels['sharedfolder'] = 'Ä°ctimai qovluq';
-
$labels['sortby'] = 'Çeşidlə';
$labels['sortasc'] = 'Azdan çoxa';
$labels['sortdesc'] = 'Çoxdan aza';
$labels['undo'] = 'Ləğv et';
-
$labels['installedplugins'] = 'Yazılmış qoşmalar';
$labels['plugin'] = 'QoÅŸma';
$labels['version'] = 'Versiya';
$labels['source'] = 'Mənbə';
$labels['license'] = 'Lisenziya';
$labels['support'] = 'Dəstək';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Ä°ngilis dili';
$labels['westerneuropean'] = 'Qərbi Avropa';
@@ -539,5 +493,4 @@ $labels['vietnamese'] = 'Vyetnamca';
$labels['japanese'] = 'Yaponca';
$labels['korean'] = 'Koreya';
$labels['chinese'] = 'Çincə';
-
?>
diff --git a/program/localization/az_AZ/messages.inc b/program/localization/az_AZ/messages.inc
index 745836e5f..ddf70378d 100644
--- a/program/localization/az_AZ/messages.inc
+++ b/program/localization/az_AZ/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Xəta baş verdi!';
$messages['loginfailed'] = 'GiriÅŸ uÄŸursuz oldu.';
$messages['cookiesdisabled'] = 'Sizin brauzer kukiləri qəbul etmir.';
@@ -46,6 +44,8 @@ $messages['messagesent'] = 'Məktub uğurla göndərildi';
$messages['savingmessage'] = 'Məktubu saxla...';
$messages['messagesaved'] = 'Məktub qaralamada saxlandı';
$messages['successfullysaved'] = 'Yaddaşa yazıldı';
+$messages['savingresponse'] = 'Cavab mətninin saxlanılması...';
+$messages['deleteresponseconfirm'] = 'Siz cavab mətnini silmək istəyirsiniz?';
$messages['addedsuccessfully'] = 'ÆlaqÉ™ ünvan kitabçasına É™lavÉ™ olundu';
$messages['contactexists'] = 'Ünvan kitabçasında bu e-poçtla əlaqə mövcuddur';
$messages['contactnameexists'] = 'Bu adda kontakt artıq mövcuddur.';
@@ -56,8 +56,8 @@ $messages['contactnotfound'] = 'Tələb olunan ünvan tapılmadı';
$messages['contactsearchonly'] = 'Kontaqların axtarışı üçün şərti daxil edin';
$messages['sendingfailed'] = 'Məktub göndərilmədi';
$messages['senttooquickly'] = 'Məktub göndərmək üçün $sec saniyə gözləmək gərəkir';
-$messages['errorsavingsent'] = 'Göndərilən məktub saxlanılan zaman xəta baş verdi';
-$messages['errorsaving'] = 'Saxlanma prosesi zamanı problem baş verdi';
+$messages['errorsavingsent'] = 'Göndərilən məktubun saxlanılması zamanı xəta baş verdi.';
+$messages['errorsaving'] = 'Saxlanılma zamanı xəta baş verdi.';
$messages['errormoving'] = 'Məktubu (məktubları) köçürmək alnmadı';
$messages['errorcopying'] = 'Məktubu (məktubları) kopyalamaq alınmadı';
$messages['errordeleting'] = 'Məktubu (məktubları) silmək alınmadı';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'Lütfən, qəbul edənin ünvanını daxil ed
$messages['nosubjectwarning'] = '"Mövzu" sahəsi boşdur. Mövzu daxil etmək istəyirsiniz?';
$messages['nobodywarning'] = 'Məktub boş göndərilsin?';
$messages['notsentwarning'] = 'Məktub göndərilmədi. Göndərilmədən imtina etmək istəyirsiniz?';
+$messages['restoresavedcomposedata'] = 'ÆvvÉ™lki göndÉ™rildi, ancaq göndÉ™rilmÉ™yÉ™n mÉ™ktub da tapıldı.\n\nSubject: $subject\nSaved: $date\n\nSiz bu mÉ™ktubu bÉ™rpa etmÉ™k istÉ™yirsiniz?';
$messages['noldapserver'] = 'Lütfən, axtarış üçün LDAP server seçin';
$messages['nosearchname'] = 'Lütfən, ad və ya e-poçt əlavə edin';
$messages['notuploadedwarning'] = 'ÆlavÉ™lÉ™r tam yüklÉ™nilmÉ™yib. GözlÉ™yin vÉ™ ya yüklÉ™mÉ™ni ləğv edin.';
@@ -144,7 +145,7 @@ $messages['smtperror'] = 'SMTP Error ($code): $msg';
$messages['emailformaterror'] = 'Səhv ünvan: $email';
$messages['toomanyrecipients'] = 'Qəbul edənlər həddindən artıq çoxdur. Lütfən, $max qədər azaldın.';
$messages['maxgroupmembersreached'] = 'Qrupun ölçüsü imkan verilən maksimumdan artıqdır - $max';
-$messages['internalerror'] = 'Daxili xəta baş verdi. Lütfən, bir daha cəhd edin';
+$messages['internalerror'] = 'Daxili xəta. Lütfən bir daha cəhd edin.';
$messages['contactdelerror'] = 'Kontak(lar)ı silmək alınmadı';
$messages['contactdeleted'] = 'Kontak(lar) uÄŸurla silindi';
$messages['contactrestoreerror'] = 'Silinmiş kontakt(lar)ın bərpası alınmadı';
@@ -172,5 +173,4 @@ $messages['parentnotwritable'] = 'Qovluğu seçilmiş ana qovluğa köçürmək/
$messages['messagetoobig'] = 'Məktubun bir hissəsi emal üçün böyükdür.';
$messages['attachmentvalidationerror'] = 'DÄ°QQÆT! Bu qoÅŸma şübhÉ™lidir, çünki mÉ™ktubda deyilÉ™n növlÉ™ eyni deyil. ÆgÉ™r siz göndÉ™rÉ™ güvÉ™nmirsinizsÉ™, brauzerdÉ™ bunu açmayın. TÉ™rkibi tÉ™hlükÉ™li ola bilÉ™r.<br/><br/><em>Expected: $expected; found: $detected</em>';
$messages['noscriptwarning'] = 'Xəbərdarlıq: Bu vebmeyl xidməti Javascript tələb edir! Funksiyanı istifadə etmək üçün lütfən, brauzerinizin ayarlarında Javascript-i yandırın.';
-
?>
diff --git a/program/localization/be_BE/labels.inc b/program/localization/be_BE/labels.inc
index b3518f8f0..9180b92d7 100644
--- a/program/localization/be_BE/labels.inc
+++ b/program/localization/be_BE/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Вітаем у $product';
$labels['username'] = 'КарыÑтальнік';
$labels['password'] = 'Пароль';
$labels['server'] = 'Сервер';
$labels['login'] = 'Уваход';
-
-// taskbar
$labels['logout'] = 'Выхад';
$labels['mail'] = 'Пошта';
$labels['settings'] = 'ÐаÑтаўленні';
$labels['addressbook'] = 'ÐдраÑÐ½Ð°Ñ ÐºÐ½Ñ–Ð³Ð°';
-
-// mailbox names
$labels['inbox'] = 'ÐтрыманыÑ';
$labels['drafts'] = 'Чарнавікі';
$labels['sent'] = 'ДаÑланыÑ';
$labels['trash'] = 'Сметніца';
$labels['junk'] = 'Спам';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
+$labels['show_real_foldernames'] = 'Паказваць ÑÐ°Ð¿Ñ€Ð°ÑžÐ´Ð½Ñ‹Ñ Ð½Ð°Ð·Ð²Ñ‹ Ð´Ð»Ñ Ð°Ð´Ð¼Ñ‹Ñловых папак';
$labels['subject'] = 'ТÑма';
$labels['from'] = 'Ðд каго';
$labels['sender'] = 'Ðдпраўнік';
@@ -52,38 +42,30 @@ $labels['date'] = 'Дата';
$labels['size'] = 'Памер';
$labels['priority'] = 'ПрыÑрытÑÑ‚';
$labels['organization'] = 'УÑтанова';
-$labels['readstatus'] = 'Ðе прачытанае';
-$labels['listoptions'] = 'List options...';
-
-$labels['mailboxlist'] = 'ТÑчкі';
-$labels['messagesfromto'] = 'Messages $from to $to of $count';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
-$labels['messagenrof'] = 'Message $nr of $count';
-$labels['fromtoshort'] = '$from – $to of $count';
-
-$labels['copy'] = 'Капіраваць';
+$labels['readstatus'] = 'Прачытана';
+$labels['listoptions'] = 'Параметры ÑпіÑу...';
+$labels['mailboxlist'] = 'Папкі';
+$labels['messagesfromto'] = 'Паведамленні $from—$to з $count';
+$labels['threadsfromto'] = 'Ðбмеркаванні $from—$to з $count';
+$labels['messagenrof'] = 'Паведамленне $nr з $count';
+$labels['fromtoshort'] = '$from—$to з $count';
+$labels['copy'] = 'КапіÑваць';
$labels['move'] = 'ПерамÑÑціць';
$labels['moveto'] = 'ПерамÑÑціць у...';
-$labels['download'] = 'Спампаваць';
-$labels['open'] = 'Open';
+$labels['download'] = 'СцÑгнуць';
+$labels['open'] = 'Ðдкрыць';
$labels['showattachment'] = 'Паказаць';
-$labels['showanyway'] = 'Show it anyway';
-
-$labels['filename'] = 'Ð†Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°';
+$labels['showanyway'] = 'УÑÑ‘ адно паказваць';
+$labels['filename'] = 'Ðазва файла';
$labels['filesize'] = 'Памер файла';
-
$labels['addtoaddressbook'] = 'Дадаць у адраÑную кнігу';
-
-// weekdays short
-$labels['sun'] = 'Ðдз';
-$labels['mon'] = 'Пн';
-$labels['tue'] = 'Ðўт';
-$labels['wed'] = 'Сер';
-$labels['thu'] = 'Чц';
-$labels['fri'] = 'Пт';
-$labels['sat'] = 'Сб';
-
-// weekdays long
+$labels['sun'] = 'нд';
+$labels['mon'] = 'пн';
+$labels['tue'] = 'аў';
+$labels['wed'] = 'ÑÑ€';
+$labels['thu'] = 'чц';
+$labels['fri'] = 'пт';
+$labels['sat'] = 'Ñб';
$labels['sunday'] = 'нÑдзелÑ';
$labels['monday'] = 'панÑдзелак';
$labels['tuesday'] = 'аўторак';
@@ -91,457 +73,424 @@ $labels['wednesday'] = 'Ñерада';
$labels['thursday'] = 'чацвер';
$labels['friday'] = 'пÑтніца';
$labels['saturday'] = 'Ñубота';
-
-// months short
-$labels['jan'] = 'Jan';
-$labels['feb'] = 'Feb';
-$labels['mar'] = 'Mar';
-$labels['apr'] = 'Apr';
-$labels['may'] = 'May';
-$labels['jun'] = 'Jun';
-$labels['jul'] = 'Jul';
-$labels['aug'] = 'Aug';
-$labels['sep'] = 'Sep';
-$labels['oct'] = 'Oct';
-$labels['nov'] = 'Nov';
-$labels['dec'] = 'Dec';
-
-// months long
-$labels['longjan'] = 'January';
-$labels['longfeb'] = 'February';
-$labels['longmar'] = 'March';
-$labels['longapr'] = 'April';
-$labels['longmay'] = 'May';
-$labels['longjun'] = 'June';
-$labels['longjul'] = 'July';
-$labels['longaug'] = 'August';
-$labels['longsep'] = 'September';
-$labels['longoct'] = 'October';
-$labels['longnov'] = 'November';
-$labels['longdec'] = 'December';
-
-$labels['today'] = 'Today';
-
-// toolbar buttons
-$labels['refresh'] = 'Refresh';
-$labels['checkmail'] = 'Check for new messages';
-$labels['compose'] = 'Compose';
-$labels['writenewmessage'] = 'Create a new message';
-$labels['reply'] = 'Reply';
-$labels['replytomessage'] = 'Reply to sender';
-$labels['replytoallmessage'] = 'Reply to list or to sender and all recipients';
-$labels['replyall'] = 'Reply all';
-$labels['replylist'] = 'Reply list';
-$labels['forward'] = 'Forward';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
-$labels['forwardmessage'] = 'Forward the message';
-$labels['deletemessage'] = 'Delete message';
-$labels['movemessagetotrash'] = 'Move message to trash';
-$labels['printmessage'] = 'Print this message';
-$labels['previousmessage'] = 'Show previous message';
-$labels['firstmessage'] = 'Show first message';
-$labels['nextmessage'] = 'Show next message';
-$labels['lastmessage'] = 'Show last message';
-$labels['backtolist'] = 'Back to message list';
-$labels['viewsource'] = 'Show source';
-$labels['mark'] = 'Mark';
-$labels['markmessages'] = 'Mark messages';
-$labels['markread'] = 'As read';
-$labels['markunread'] = 'As unread';
-$labels['markflagged'] = 'As flagged';
-$labels['markunflagged'] = 'As unflagged';
-$labels['moreactions'] = 'More actions...';
-$labels['more'] = 'More';
-$labels['back'] = 'Back';
-$labels['options'] = 'Options';
-
-$labels['select'] = 'Select';
-$labels['all'] = 'All';
-$labels['none'] = 'None';
-$labels['currpage'] = 'Current page';
-$labels['unread'] = 'Unread';
-$labels['flagged'] = 'Flagged';
-$labels['unanswered'] = 'Unanswered';
-$labels['withattachment'] = 'With attachment';
-$labels['deleted'] = 'Deleted';
-$labels['undeleted'] = 'Not deleted';
-$labels['invert'] = 'Invert';
-$labels['filter'] = 'Filter';
-$labels['list'] = 'List';
-$labels['threads'] = 'Threads';
-$labels['expand-all'] = 'Expand All';
-$labels['expand-unread'] = 'Expand Unread';
-$labels['collapse-all'] = 'Collapse All';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
-$labels['fromto'] = 'From/To';
-$labels['flag'] = 'Flag';
-$labels['attachment'] = 'Attachment';
-$labels['nonesort'] = 'None';
-$labels['sentdate'] = 'Sent date';
-$labels['arrival'] = 'Arrival date';
-$labels['asc'] = 'ascending';
-$labels['desc'] = 'descending';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
-$labels['compact'] = 'Compact';
-$labels['empty'] = 'Empty';
-$labels['importmessages'] = 'Import messages';
-
-$labels['quota'] = 'Disk usage';
-$labels['unknown'] = 'unknown';
-$labels['unlimited'] = 'unlimited';
-
-$labels['quicksearch'] = 'Quick search';
-$labels['resetsearch'] = 'Reset search';
-$labels['searchmod'] = 'Search modifiers';
-$labels['msgtext'] = 'Entire message';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-$labels['namex'] = 'Name';
-
-$labels['openinextwin'] = 'Open in new window';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
-$labels['editasnew'] = 'Edit as new';
-$labels['send'] = 'Send';
-$labels['sendmessage'] = 'Send message';
-$labels['savemessage'] = 'Save as draft';
-$labels['addattachment'] = 'Attach a file';
-$labels['charset'] = 'Charset';
-$labels['editortype'] = 'Editor type';
-$labels['returnreceipt'] = 'Return receipt';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
-$labels['checkspelling'] = 'Check spelling';
-$labels['resumeediting'] = 'Resume editing';
-$labels['revertto'] = 'Revert to';
-
-$labels['attach'] = 'Attach';
-$labels['attachments'] = 'Attachments';
-$labels['upload'] = 'Upload';
-$labels['uploadprogress'] = '$percent ($current from $total)';
-$labels['close'] = 'Close';
-$labels['messageoptions'] = 'Message options...';
-
-$labels['low'] = 'Low';
-$labels['lowest'] = 'Lowest';
-$labels['normal'] = 'Normal';
-$labels['high'] = 'High';
-$labels['highest'] = 'Highest';
-
-$labels['nosubject'] = '(no subject)';
-$labels['showimages'] = 'Display images';
-$labels['alwaysshow'] = 'Always show images from $sender';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
+$labels['jan'] = 'Ñту';
+$labels['feb'] = 'лют';
+$labels['mar'] = 'Ñак';
+$labels['apr'] = 'кра';
+$labels['may'] = 'май';
+$labels['jun'] = 'чÑÑ€';
+$labels['jul'] = 'ліп';
+$labels['aug'] = 'жні';
+$labels['sep'] = 'вер';
+$labels['oct'] = 'каÑ';
+$labels['nov'] = 'ліÑ';
+$labels['dec'] = 'Ñне';
+$labels['longjan'] = 'Ñтудзень';
+$labels['longfeb'] = 'люты';
+$labels['longmar'] = 'Ñакавік';
+$labels['longapr'] = 'краÑавік';
+$labels['longmay'] = 'май';
+$labels['longjun'] = 'чÑрвень';
+$labels['longjul'] = 'ліпень';
+$labels['longaug'] = 'жнівень';
+$labels['longsep'] = 'вераÑень';
+$labels['longoct'] = 'каÑтрычнік';
+$labels['longnov'] = 'ліÑтапад';
+$labels['longdec'] = 'Ñнежань';
+$labels['today'] = 'ÑённÑ';
+$labels['refresh'] = 'Ðбнавіць';
+$labels['checkmail'] = 'Праверыць Ð½Ð¾Ð²Ñ‹Ñ Ð¿Ð°Ð²ÐµÐ´Ð°Ð¼Ð»ÐµÐ½Ð½Ñ–';
+$labels['compose'] = 'СклаÑці';
+$labels['writenewmessage'] = 'СклаÑці новае паведамленне';
+$labels['reply'] = 'Ðдказаць';
+$labels['replytomessage'] = 'Ðдказаць адпраўніку';
+$labels['replytoallmessage'] = 'Ðдказаць па ÑпіÑе альбо адпраўніку Ñ– ÑžÑім атрымальнікам';
+$labels['replyall'] = 'Ðдказаць уÑім';
+$labels['replylist'] = 'Ðдказаць у ÑÐ¿Ñ–Ñ Ñ€Ð°ÑÑылкі';
+$labels['forward'] = 'ПераÑлаць';
+$labels['forwardinline'] = 'ПераÑлаць у целе ліÑта';
+$labels['forwardattachment'] = 'ПераÑлаць Ñк далучÑнне';
+$labels['forwardmessage'] = 'ПераÑлаць гÑтае паведамленне';
+$labels['deletemessage'] = 'Выдаліць паведамленне';
+$labels['movemessagetotrash'] = 'ПерамÑÑціць паведамленне Ñž Ñметніцу';
+$labels['printmessage'] = 'Раздрукаваць гÑтае паведамленне';
+$labels['previousmessage'] = 'Паказаць папÑÑ€ÑднÑе паведамленне';
+$labels['firstmessage'] = 'Паказаць першае паведамленне';
+$labels['nextmessage'] = 'Паказаць наÑтупнае паведамленне';
+$labels['lastmessage'] = 'Паказаць апошнÑе паведамленне';
+$labels['backtolist'] = 'Ðазад да ÑпіÑу паведамленнÑÑž';
+$labels['viewsource'] = 'Зыходны Ñ‚ÑкÑÑ‚';
+$labels['mark'] = 'Пазначыць';
+$labels['markmessages'] = 'Пазначыць паведамленні';
+$labels['markread'] = 'Як прачытаныÑ';
+$labels['markunread'] = 'Як непрачытаныÑ';
+$labels['markflagged'] = 'ПаÑтавіць флаг';
+$labels['markunflagged'] = 'ЗнÑць флаг';
+$labels['moreactions'] = 'Больш дзеÑннÑÑž...';
+$labels['more'] = 'Больш';
+$labels['back'] = 'Ðазад';
+$labels['options'] = 'Параметры';
+$labels['select'] = 'Выбраць';
+$labels['all'] = 'УÑе';
+$labels['none'] = 'Жаднага';
+$labels['currpage'] = 'БÑÐ³ÑƒÑ‡Ð°Ñ Ñтаронка';
+$labels['unread'] = 'ÐепрачытаныÑ';
+$labels['flagged'] = 'З флагам';
+$labels['unanswered'] = 'ÐеадказаныÑ';
+$labels['withattachment'] = 'З далучÑннÑмі';
+$labels['deleted'] = 'ВыдаленыÑ';
+$labels['undeleted'] = 'ÐÑвыдаленыÑ';
+$labels['invert'] = 'Інвертаваць';
+$labels['filter'] = 'Фільтр';
+$labels['list'] = 'СпіÑ';
+$labels['threads'] = 'Ðбмеркаванні';
+$labels['expand-all'] = 'Развінуць уÑÑ‘';
+$labels['expand-unread'] = 'Развінуць непрачытаныÑ';
+$labels['collapse-all'] = 'Звінуць уÑÑ‘';
+$labels['threaded'] = 'Ðбмеркаванні';
+$labels['autoexpand_threads'] = 'Развінуць абмеркаванні';
+$labels['do_expand'] = 'уÑе абмеркаванні';
+$labels['expand_only_unread'] = 'толькі з непрачытанымі паведамленнÑмі';
+$labels['fromto'] = 'Ðд/Да';
+$labels['flag'] = 'Флаг';
+$labels['attachment'] = 'ДалучÑнне';
+$labels['nonesort'] = 'ÐдÑутнічае';
+$labels['sentdate'] = 'Дата адпраўкі';
+$labels['arrival'] = 'Дата атрыманнÑ';
+$labels['asc'] = 'на ўзраÑтанне';
+$labels['desc'] = 'на змÑншчÑнне';
+$labels['listcolumns'] = 'Слупкі';
+$labels['listsorting'] = 'Сартаваць паводле';
+$labels['listorder'] = 'Парадак ÑартаваннÑ';
+$labels['listmode'] = 'Тып ÑпіÑу';
+$labels['folderactions'] = 'Ðперацыі з папкай...';
+$labels['compact'] = 'СціÑнуць';
+$labels['empty'] = 'Спаражніць';
+$labels['importmessages'] = 'Імпартаваць паведамленні';
+$labels['quota'] = 'Квота';
+$labels['unknown'] = 'невÑдома';
+$labels['unlimited'] = 'без абмежаваннÑÑž';
+$labels['quicksearch'] = 'Хуткі пошук';
+$labels['resetsearch'] = 'Скінуць пошук';
+$labels['searchmod'] = 'Мадыфікатары пошуку';
+$labels['msgtext'] = 'УÑÑ‘ паведамленне';
+$labels['body'] = 'Цела';
+$labels['type'] = 'Тып';
+$labels['namex'] = 'ІмÑ';
+$labels['openinextwin'] = 'Ðдкрыць у новым акне';
+$labels['emlsave'] = 'СцÑгнуць (.eml)';
+$labels['changeformattext'] = 'Паказаць Ñк проÑÑ‚Ñ‹ Ñ‚ÑкÑÑ‚';
+$labels['changeformathtml'] = 'Паказаць Ñк HTML';
+$labels['editasnew'] = 'ÐдрÑдагаваць Ñк новае';
+$labels['send'] = 'Ðдправіць';
+$labels['sendmessage'] = 'Ðдправіць паведамленне';
+$labels['savemessage'] = 'Захаваць Ñк чарнавік';
+$labels['addattachment'] = 'Далучыць файл';
+$labels['charset'] = 'Кадзіроўка';
+$labels['editortype'] = 'РÑдактар';
+$labels['returnreceipt'] = 'Пацверджанне атрыманнÑ';
+$labels['dsn'] = 'ÐпавÑшчÑнне пра даÑтаўку';
+$labels['mailreplyintro'] = '$sender піÑаў $date:';
+$labels['originalmessage'] = 'Ðрыгінальнае паведамленне';
+$labels['editidents'] = 'РÑдагаваць тоеÑнаÑці';
+$labels['spellcheck'] = 'ПравапіÑ';
+$labels['checkspelling'] = 'Праверыць правапіÑ';
+$labels['resumeediting'] = 'ПрацÑгнуць Ñ€Ñдагаванне';
+$labels['revertto'] = 'Ðдкаціцца на';
+$labels['restore'] = 'Ðднавіць';
+$labels['restoremessage'] = 'Ðднавіць паведамленне?';
+$labels['responses'] = 'Ðдказы';
+$labels['insertresponse'] = 'УÑтавіць адказ';
+$labels['manageresponses'] = 'Кіраваць адказамі';
+$labels['savenewresponse'] = 'Захаваць новы адказ';
+$labels['editresponses'] = 'РÑдагаваць адказы';
+$labels['editresponse'] = 'РÑдагаваць адказ';
+$labels['responsename'] = 'Ðазва';
+$labels['responsetext'] = 'ТÑкÑÑ‚ адказу';
+$labels['attach'] = 'Далучыць';
+$labels['attachments'] = 'ДалучÑнні';
+$labels['upload'] = 'Ðпублікаваць';
+$labels['uploadprogress'] = '$percent ($current з $total)';
+$labels['close'] = 'Закрыць';
+$labels['messageoptions'] = 'Параметры паведамленнÑ...';
+$labels['low'] = 'Ðізкі';
+$labels['lowest'] = 'Ðайнізшы';
+$labels['normal'] = 'Звычайны';
+$labels['high'] = 'Ð’Ñ‹Ñокі';
+$labels['highest'] = 'Ðайвышшы';
+$labels['nosubject'] = '(без Ñ‚Ñмы)';
+$labels['showimages'] = 'Паказваць выÑвы';
+$labels['alwaysshow'] = 'ЗаўÑёды паказваць выÑвы ад $sender';
+$labels['isdraft'] = 'ГÑта чарнавік.';
+$labels['andnmore'] = 'ÑÑˆÑ‡Ñ $nr...';
+$labels['togglemoreheaders'] = 'Паказаць больш загалоўкаў паведамленнÑ';
+$labels['togglefullheaders'] = 'Паказаць Ð½ÐµÐ°Ð¿Ñ€Ð°Ñ†Ð°Ð²Ð°Ð½Ñ‹Ñ Ð·Ð°Ð³Ð°Ð»Ð¾ÑžÐºÑ– паведамленнÑ';
$labels['htmltoggle'] = 'HTML';
-$labels['plaintoggle'] = 'Plain text';
-$labels['savesentmessagein'] = 'Save sent message in';
-$labels['dontsave'] = 'don\'t save';
-$labels['maxuploadsize'] = 'Maximum allowed file size is $size';
-
-$labels['addcc'] = 'Add Cc';
-$labels['addbcc'] = 'Add Bcc';
-$labels['addreplyto'] = 'Add Reply-To';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
-$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
-$labels['receiptread'] = 'Return Receipt (read)';
-$labels['yourmessage'] = 'This is a Return Receipt for your message';
-$labels['receiptnote'] = 'Note: This receipt only acknowledges that the message was displayed on the recipient\'s computer. There is no guarantee that the recipient has read or understood the message contents.';
-
-// address boook
-$labels['name'] = 'Display Name';
-$labels['firstname'] = 'First Name';
-$labels['surname'] = 'Last Name';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
-$labels['email'] = 'Email';
-$labels['phone'] = 'Phone';
-$labels['address'] = 'Address';
-$labels['street'] = 'Street';
-$labels['locality'] = 'City';
-$labels['zipcode'] = 'ZIP Code';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
+$labels['plaintoggle'] = 'Звычайны Ñ‚ÑкÑÑ‚';
+$labels['savesentmessagein'] = 'Захаваць паведамленне ў';
+$labels['dontsave'] = 'не захоўваць';
+$labels['maxuploadsize'] = 'МакÑімальна дазволены памер файла — $size';
+$labels['addcc'] = 'КопіÑ';
+$labels['addbcc'] = 'Ð¡Ñ…Ð°Ð²Ð°Ð½Ð°Ñ ÐºÐ¾Ð¿Ñ–Ñ';
+$labels['addreplyto'] = 'Ðдказаць-на';
+$labels['addfollowupto'] = 'Групавы-адказ-на';
+$labels['mdnrequest'] = 'Ðдпраўнік пажадаў даведацца аб прачытанні гÑтага паведамленнÑ. ÐпавÑÑціць адпраўніка?';
+$labels['receiptread'] = 'Пацверджанне Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ð½Ð½Ñ (прачытаннÑ)';
+$labels['yourmessage'] = 'ГÑта пацверджанне аб атрыманні вашага паведамленнÑ';
+$labels['receiptnote'] = 'Заўвага: ГÑтае пацверджанне значыць адно, што паведамленне было адлюÑтравана на Ñкране камп\'ютара адраÑата. ÐÑма гарантыі, што атрымальнік прачытаў альбо зразумеў змеÑÑ‚ паведамленнÑ.';
+$labels['name'] = 'Экраннае імÑ';
+$labels['firstname'] = 'ІмÑ';
+$labels['surname'] = 'Прозвішча';
+$labels['middlename'] = 'Другое імÑ';
+$labels['nameprefix'] = 'ПрÑфікÑ';
+$labels['namesuffix'] = 'СуфікÑ';
+$labels['nickname'] = 'ÐœÑнушка';
+$labels['jobtitle'] = 'ПаÑада';
+$labels['department'] = 'Ðддзел';
+$labels['gender'] = 'Пол';
+$labels['maidenname'] = 'ДзÑвоцкае прозвішча';
+$labels['email'] = 'Эл. пошта';
+$labels['phone'] = 'ТÑлефон';
+$labels['address'] = 'ÐдраÑ';
+$labels['street'] = 'Вуліца';
+$labels['locality'] = 'Горад';
+$labels['zipcode'] = 'ІндÑкÑ';
+$labels['region'] = 'РÑгіён';
+$labels['country'] = 'Краіна';
+$labels['birthday'] = 'Дзень народзінаў';
+$labels['anniversary'] = 'Юбілей';
+$labels['website'] = 'Ð’Ñб-Ñайт';
$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
-$labels['typemobile'] = 'Mobile';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
-$labels['addcontact'] = 'Add new contact';
-$labels['editcontact'] = 'Edit contact';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
-$labels['personalinfo'] = 'Personal information';
-
-$labels['edit'] = 'Edit';
-$labels['cancel'] = 'Cancel';
-$labels['save'] = 'Save';
-$labels['delete'] = 'Delete';
-$labels['rename'] = 'Rename';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
-$labels['newcontact'] = 'Create new contact card';
-$labels['deletecontact'] = 'Delete selected contacts';
-$labels['composeto'] = 'Compose mail to';
-$labels['contactsfromto'] = 'Contacts $from to $to of $count';
-$labels['print'] = 'Print';
-$labels['export'] = 'Export';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
-$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
-$labels['previouspage'] = 'Show previous page';
-$labels['firstpage'] = 'Show first page';
-$labels['nextpage'] = 'Show next page';
-$labels['lastpage'] = 'Show last page';
-
-$labels['group'] = 'Group';
-$labels['groups'] = 'Groups';
-$labels['listgroup'] = 'List group members';
-$labels['personaladrbook'] = 'Personal Addresses';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
-$labels['import'] = 'Import';
-$labels['importcontacts'] = 'Import contacts';
-$labels['importfromfile'] = 'Import from file:';
-$labels['importtarget'] = 'Add contacts to';
-$labels['importreplace'] = 'Replace the entire address book';
-$labels['importgroups'] = 'Import group assignments';
-$labels['importgroupsall'] = 'All (create groups if necessary)';
-$labels['importgroupsexisting'] = 'Only for existing groups';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
-$labels['done'] = 'Done';
-
-// settings
-$labels['settingsfor'] = 'Settings for';
-$labels['about'] = 'About';
-$labels['preferences'] = 'Preferences';
-$labels['userpreferences'] = 'User preferences';
-$labels['editpreferences'] = 'Edit user preferences';
-
-$labels['identities'] = 'Identities';
-$labels['manageidentities'] = 'Manage identities for this account';
-$labels['newidentity'] = 'New identity';
-
-$labels['newitem'] = 'New item';
-$labels['edititem'] = 'Edit item';
-
-$labels['preferhtml'] = 'Display HTML';
-$labels['defaultcharset'] = 'Default Character Set';
-$labels['htmlmessage'] = 'HTML Message';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
-$labels['prettydate'] = 'Pretty dates';
-$labels['setdefault'] = 'Set default';
-$labels['autodetect'] = 'Auto';
-$labels['language'] = 'Language';
-$labels['timezone'] = 'Time zone';
-$labels['pagesize'] = 'Rows per page';
-$labels['signature'] = 'Signature';
-$labels['dstactive'] = 'Daylight saving time';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
-$labels['htmleditor'] = 'Compose HTML messages';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
-$labels['htmlsignature'] = 'HTML signature';
-$labels['showemail'] = 'Show email address with display name';
-$labels['previewpane'] = 'Show preview pane';
-$labels['skin'] = 'Interface skin';
-$labels['logoutclear'] = 'Clear Trash on logout';
-$labels['logoutcompact'] = 'Compact Inbox on logout';
-$labels['uisettings'] = 'User Interface';
-$labels['serversettings'] = 'Server Settings';
-$labels['mailboxview'] = 'Mailbox View';
-$labels['mdnrequests'] = 'On request for return receipt';
-$labels['askuser'] = 'ask me';
-$labels['autosend'] = 'send receipt';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
-$labels['ignore'] = 'ignore';
-$labels['readwhendeleted'] = 'Mark the message as read on delete';
-$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
-$labels['skipdeleted'] = 'Do not show deleted messages';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
-$labels['always'] = 'always';
-$labels['showinlineimages'] = 'Display attached images below the message';
-$labels['autosavedraft'] = 'Automatically save draft';
-$labels['everynminutes'] = 'every $n minute(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
-$labels['never'] = 'never';
-$labels['immediately'] = 'immediately';
-$labels['messagesdisplaying'] = 'Displaying Messages';
-$labels['messagescomposition'] = 'Composing Messages';
-$labels['mimeparamfolding'] = 'Attachment names';
-$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
+$labels['notes'] = 'Занатоўкі';
+$labels['male'] = 'мужчына';
+$labels['female'] = 'жанчына';
+$labels['manager'] = 'Кіраўнік';
+$labels['assistant'] = 'ÐÑÑ–ÑÑ‚Ñнт';
+$labels['spouse'] = 'Жонка';
+$labels['allfields'] = 'УÑе палі';
+$labels['search'] = 'Пошук';
+$labels['advsearch'] = 'Пашыраны пошук';
+$labels['advanced'] = 'Дадаткова';
+$labels['other'] = 'Іншае';
+$labels['typehome'] = 'Дом';
+$labels['typework'] = 'Праца';
+$labels['typeother'] = 'Іншае';
+$labels['typemobile'] = 'Мабільны';
+$labels['typemain'] = 'ÐÑноўны';
+$labels['typehomefax'] = 'Дамашні факÑ';
+$labels['typeworkfax'] = 'Працоўны факÑ';
+$labels['typecar'] = 'Ðўта';
+$labels['typepager'] = 'ПÑйджар';
+$labels['typevideo'] = 'ВідÑа';
+$labels['typeassistant'] = 'ÐÑÑ–ÑÑ‚Ñнт';
+$labels['typehomepage'] = 'ДамашнÑÑ Ñтаронка';
+$labels['typeblog'] = 'Блог';
+$labels['typeprofile'] = 'Профіль';
+$labels['addfield'] = 'Дадаць поле...';
+$labels['addcontact'] = 'Дадаць новы кантакт';
+$labels['editcontact'] = 'РÑдагаваць кантакт';
+$labels['contacts'] = 'Кантакты';
+$labels['contactproperties'] = 'УлаÑціваÑці кантакта';
+$labels['personalinfo'] = 'ÐÑабіÑÑ‚Ñ‹Ñ Ð·Ð²ÐµÑткі';
+$labels['edit'] = 'РÑдагаваць';
+$labels['cancel'] = 'СкаÑаваць';
+$labels['save'] = 'Захаваць';
+$labels['delete'] = 'Выдаліць';
+$labels['rename'] = 'Пераназваць';
+$labels['addphoto'] = 'Дадаць';
+$labels['replacephoto'] = 'ЗамÑніць';
+$labels['uploadphoto'] = 'Ðпублікаваць фота';
+$labels['newcontact'] = 'Стварыць новую картку кантакта';
+$labels['deletecontact'] = 'Выдаліць абраных кантактаў';
+$labels['composeto'] = 'СклаÑці ліÑÑ‚ да';
+$labels['contactsfromto'] = 'Кантакты $from—$to з $count';
+$labels['print'] = 'Друкаваць';
+$labels['export'] = 'ЭкÑпарт';
+$labels['exportall'] = 'ЭкÑпартаваць уÑÑ‘';
+$labels['exportsel'] = 'ЭкÑпартаваць абранае';
+$labels['exportvcards'] = 'ЭкÑпартаваць кантакты Ñž фармаце vCard';
+$labels['newcontactgroup'] = 'Стварыць новую групу кантактаў';
+$labels['grouprename'] = 'Пераназваць групу';
+$labels['groupdelete'] = 'Выдаліць групу';
+$labels['groupremoveselected'] = 'Выдаліць абраных кантакаў з групы';
+$labels['previouspage'] = 'ПапÑÑ€ÑднÑÑ Ñтаронка';
+$labels['firstpage'] = 'ÐŸÐµÑ€ÑˆÐ°Ñ Ñтаронка';
+$labels['nextpage'] = 'ÐаÑÑ‚ÑƒÐ¿Ð½Ð°Ñ Ñтаронка';
+$labels['lastpage'] = 'ÐпошнÑÑ Ñтаронка';
+$labels['group'] = 'Група';
+$labels['groups'] = 'Групы';
+$labels['listgroup'] = 'Паказаць ÑÑброў групы';
+$labels['personaladrbook'] = 'ÐÑабіÑÑ‚Ñ‹Ñ Ð°Ð´Ñ€Ð°ÑÑ‹';
+$labels['searchsave'] = 'Захаваць запытанне';
+$labels['searchdelete'] = 'Выдаліць запытанне';
+$labels['import'] = 'Імпарт';
+$labels['importcontacts'] = 'Імпартаваць кантакты';
+$labels['importfromfile'] = 'Імпартаваць з файла:';
+$labels['importtarget'] = 'Дадаць канактаў у';
+$labels['importreplace'] = 'ЗамÑніць адраÑную кнігу цалкам';
+$labels['importgroups'] = 'Імпартаваць прызначÑнні групы';
+$labels['importgroupsall'] = 'УÑе (Ñтварыць групы пры неабходнаÑці)';
+$labels['importgroupsexisting'] = 'Толькі Ð´Ð»Ñ Ñ–Ñнуючых груп';
+$labels['importdesc'] = 'Кантакты можна загрузіць з Ñ–Ñнуючай адраÑнай кнігі.<br/>Ðа дадзены момант падтрымліваюцца адраÑÑ‹ Ñž фарматах <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> Ñ– CSV (значÑнні праз коÑку).';
+$labels['done'] = 'Гатова';
+$labels['settingsfor'] = 'ÐаÑтаўленні длÑ';
+$labels['about'] = 'ÐпіÑанне';
+$labels['preferences'] = 'Параметры';
+$labels['userpreferences'] = 'Параметры карыÑтальніка';
+$labels['editpreferences'] = 'РÑдагаваць параметры карыÑтальніка';
+$labels['identities'] = 'ТоеÑнаÑці';
+$labels['manageidentities'] = 'Парадкаваць тоеÑнаÑці Ð´Ð»Ñ Ð³Ñтага ўліковага запіÑу';
+$labels['newidentity'] = 'ÐÐ¾Ð²Ð°Ñ Ñ‚Ð¾ÐµÑнаÑць';
+$labels['newitem'] = 'Ðовы Ñлемент';
+$labels['edititem'] = 'РÑдагаваць Ñлемент';
+$labels['preferhtml'] = 'Паказаць HTML';
+$labels['defaultcharset'] = 'Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð°Ñ ÐºÐ°Ð´Ð·Ñ–Ñ€Ð¾ÑžÐºÐ°';
+$labels['htmlmessage'] = 'Паведамленне ў HTML';
+$labels['messagepart'] = 'ЧаÑць';
+$labels['digitalsig'] = 'Электронны подпіÑ';
+$labels['dateformat'] = 'Фармат даты';
+$labels['timeformat'] = 'Фармат чаÑу';
+$labels['prettydate'] = 'Даты ў зручным фармаце';
+$labels['setdefault'] = 'Зрабіць Ñтандартам';
+$labels['autodetect'] = 'Ðўтаматычна';
+$labels['language'] = 'Мова';
+$labels['timezone'] = 'ЧаÑÐ°Ð²Ð°Ñ Ð·Ð¾Ð½Ð°';
+$labels['pagesize'] = 'Радкоў на Ñтаронку';
+$labels['signature'] = 'ПодпіÑ';
+$labels['dstactive'] = 'Летні/зімовы чаÑ';
+$labels['showinextwin'] = 'Ðдкрываць паведамленні Ñž новым акне';
+$labels['composeextwin'] = 'Складаць у новым акне';
+$labels['htmleditor'] = 'Складаць паведамленні ў HTML';
+$labels['htmlonreply'] = 'у адказ на паведамленні ў HTML';
+$labels['htmlonreplyandforward'] = 'пры пераÑылцы альбо Ñž адказ на паведамленні Ñž HTML';
+$labels['htmlsignature'] = 'ÐŸÐ¾Ð´Ð¿Ñ–Ñ Ñƒ HTML';
+$labels['showemail'] = 'Паказваць Ð°Ð´Ñ€Ð°Ñ Ñлектроннай пошты разам з Ñкраннай назвай';
+$labels['previewpane'] = 'ПанÑль праглÑду';
+$labels['skin'] = 'ТÑма інтÑрфейÑу';
+$labels['logoutclear'] = 'Ðчышчаць Сметніцу па выхадзе';
+$labels['logoutcompact'] = 'СціÑкаць ÐÑ‚Ñ€Ñ‹Ð¼Ð°Ð½Ñ‹Ñ Ð¿Ð° выхадзе';
+$labels['uisettings'] = 'ІнтÑÑ€Ñ„ÐµÐ¹Ñ ÐºÐ°Ñ€Ñ‹Ñтальніка';
+$labels['serversettings'] = 'ÐаÑтаўленні Ñервера';
+$labels['mailboxview'] = 'ВыглÑд Ñкрынкі';
+$labels['mdnrequests'] = 'Пры запытанні пацверджаннÑÑž аб атрыманні';
+$labels['askuser'] = 'Ñпытаць мÑне';
+$labels['autosend'] = 'адправіць пацверджанне';
+$labels['autosendknown'] = 'адпраўлÑць пацверджанне маім кантактам, іначай Ñпытаць';
+$labels['autosendknownignore'] = 'адпраўлÑць пацверджанне маім кантактам, іначай ігнараваць';
+$labels['ignore'] = 'ігнараваць';
+$labels['readwhendeleted'] = 'Пазначаць паведамленне Ñк прачытанае па выдаленні';
+$labels['flagfordeletion'] = 'Толькі пазначаць паведамленне на выдаленне, не выдалÑць';
+$labels['skipdeleted'] = 'Ðе паказваць Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½Ñ‹Ñ Ð¿Ð°Ð²ÐµÐ´Ð°Ð¼Ð»ÐµÐ½Ð½Ñ–';
+$labels['deletealways'] = 'Як не ўдалоÑÑ Ð¿ÐµÑ€Ð°Ð¼ÑÑціць паведамленні Ñž Сметніцу, выдаліць Ñ–Ñ…';
+$labels['deletejunk'] = 'Ðдразу выдалÑць паведамленні Ñž Спаме';
+$labels['showremoteimages'] = 'Паказваць Ð²Ð¾Ð½ÐºÐ°Ð²Ñ‹Ñ Ð²Ñ–Ð´Ð°Ñ€Ñ‹ÑÑ‹';
+$labels['fromknownsenders'] = 'ад вÑдомых адпраўнікоў';
+$labels['always'] = 'заўÑёды';
+$labels['showinlineimages'] = 'Паказваць Ð´Ð°Ð»ÑƒÑ‡Ð°Ð½Ñ‹Ñ Ð²Ñ–Ð´Ð°Ñ€Ñ‹ÑÑ‹ пад паведамленнем';
+$labels['autosavedraft'] = 'Ðўтаматычна захоўваць чарнавікі';
+$labels['everynminutes'] = 'ÐºÐ¾Ð¶Ð½Ñ‹Ñ $n мінут(аў)';
+$labels['refreshinterval'] = 'Ðбнаўленне (праверка новых паведамленнÑÑž Ñ– г. д.)';
+$labels['never'] = 'ніколі';
+$labels['immediately'] = 'імгненна';
+$labels['messagesdisplaying'] = 'ÐдлюÑтраванне паведамленнÑÑž';
+$labels['messagescomposition'] = 'Складанне паведамленнÑÑž';
+$labels['mimeparamfolding'] = 'Ðазвы далучÑннÑÑž';
+$labels['2231folding'] = 'Поўны RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (other)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
-$labels['advancedoptions'] = 'Advanced options';
-$labels['focusonnewmessage'] = 'Focus browser window on new message';
-$labels['checkallfolders'] = 'Check all folders for new messages';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
-$labels['section'] = 'Section';
-$labels['maintenance'] = 'Maintenance';
-$labels['newmessage'] = 'New Message';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
-$labels['autoaddsignature'] = 'Automatically add signature';
-$labels['newmessageonly'] = 'new message only';
-$labels['replyandforwardonly'] = 'replies and forwards only';
-$labels['insertsignature'] = 'Insert signature';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
-$labels['folder'] = 'Folder';
-$labels['folders'] = 'ТÑчкі';
-$labels['foldername'] = 'Folder name';
-$labels['subscribed'] = 'Subscribed';
-$labels['messagecount'] = 'Messages';
-$labels['create'] = 'Create';
-$labels['createfolder'] = 'Create new folder';
-$labels['managefolders'] = 'Manage folders';
-$labels['specialfolders'] = 'Special Folders';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
-$labels['sortby'] = 'Sort by';
-$labels['sortasc'] = 'Sort ascending';
-$labels['sortdesc'] = 'Sort descending';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
-$labels['B'] = 'B';
-$labels['KB'] = 'KB';
-$labels['MB'] = 'MB';
-$labels['GB'] = 'GB';
-
-// character sets
-$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
+$labels['2047folding'] = 'Поўны RFC 2047 (інш.)';
+$labels['force7bit'] = 'Ужываць MIME-кадзіроўку Ð´Ð»Ñ 8-бітных знакаў';
+$labels['advancedoptions'] = 'Ð”Ð°Ð´Ð°Ñ‚ÐºÐ¾Ð²Ñ‹Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ‹';
+$labels['focusonnewmessage'] = 'Ðктываваць акно браўзера пры новым паведамленні';
+$labels['checkallfolders'] = 'ПравÑраць уÑе папкі на Ð½Ð¾Ð²Ñ‹Ñ Ð¿Ð°Ð²ÐµÐ´Ð°Ð¼Ð»ÐµÐ½Ð½Ñ–';
+$labels['displaynext'] = 'Па выдаленні/перамÑшчÑнні Ð¿Ð°Ð²ÐµÐ´Ð°Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ð°ÐºÐ°Ð·Ð²Ð°Ñ†ÑŒ наÑтупнае паведамленне';
+$labels['defaultfont'] = 'Стандартны шрыфт Ð¿Ð°Ð²ÐµÐ´Ð°Ð¼Ð»ÐµÐ½Ð½Ñ Ñž HTML';
+$labels['mainoptions'] = 'ÐÑÐ½Ð¾ÑžÐ½Ñ‹Ñ Ð¿Ð°Ñ€Ð°Ð¼ÐµÑ‚Ñ€Ñ‹';
+$labels['browseroptions'] = 'Параметры браўзера';
+$labels['section'] = 'СекцыÑ';
+$labels['maintenance'] = 'ÐбÑлугоўванне';
+$labels['newmessage'] = 'Ðовае паведамленне';
+$labels['signatureoptions'] = 'Параметры подпіÑу';
+$labels['whenreplying'] = 'Ðдказваючы';
+$labels['replyempty'] = 'не цытаваць зыходнае паведамленне';
+$labels['replytopposting'] = 'пачынаць новае паведамленне над цытаваным';
+$labels['replybottomposting'] = 'пачынаць новае паведамленне пад цытаваным';
+$labels['replyremovesignature'] = 'Ðдказваючы, выдаліць Ñтары Ð¿Ð¾Ð´Ð¿Ñ–Ñ Ð· паведамленнÑ';
+$labels['autoaddsignature'] = 'Ðўтаматычна дадаваць подпіÑ';
+$labels['newmessageonly'] = 'толькі Ñž новых паведамленнÑÑ…';
+$labels['replyandforwardonly'] = 'толькі Ñž адказах Ñ– пераÑылках';
+$labels['insertsignature'] = 'УÑтавіць подпіÑ';
+$labels['previewpanemarkread'] = 'Пазначаць Ð¿Ñ€Ð°Ð³Ð»ÐµÐ´Ð¶Ð°Ð½Ñ‹Ñ Ð¿Ð°Ð²ÐµÐ´Ð°Ð¼Ð»ÐµÐ½Ð½Ñ– Ñк прачытаныÑ';
+$labels['afternseconds'] = 'паÑÐ»Ñ $n Ñекунд';
+$labels['reqmdn'] = 'ЗаўÑёды запытваць пацверджанне аб атрыманні';
+$labels['reqdsn'] = 'ЗаўÑёды запытваць апавÑшчÑнне аб даÑтаўцы';
+$labels['replysamefolder'] = 'Складваць адказы Ñž папку зыходнага паведамленнÑ';
+$labels['defaultabook'] = 'Ð¡Ñ‚Ð°Ð½Ð´Ð°Ñ€Ñ‚Ð½Ð°Ñ Ð°Ð´Ñ€Ð°ÑÐ½Ð°Ñ ÐºÐ½Ñ–Ð³Ð°';
+$labels['autocompletesingle'] = 'ПрапуÑкаць альтÑÑ€Ð½Ð°Ñ‚Ñ‹ÑžÐ½Ñ‹Ñ Ð°Ð´Ñ€Ð°ÑÑ‹ пры аўдадапаўненні';
+$labels['listnamedisplay'] = 'Выводзіць ÑÐ¿Ñ–Ñ ÐºÐ°Ð½Ñ‚Ð°ÐºÑ‚Ð°Ñž Ñк';
+$labels['spellcheckbeforesend'] = 'ПравÑраць Ð¿Ñ€Ð°Ð²Ð°Ð¿Ñ–Ñ Ð¿ÐµÑ€Ð°Ð´ адпраўкай';
+$labels['spellcheckoptions'] = 'Параметры праверкі правапіÑу';
+$labels['spellcheckignoresyms'] = 'Ігнараваць Ñловы з Ñімваламі';
+$labels['spellcheckignorenums'] = 'Ігнараваць Ñловы з лікамі';
+$labels['spellcheckignorecaps'] = 'Ігнараваць Ñловы з уÑімі літарамі Ñž верхнім Ñ€ÑгіÑтры';
+$labels['addtodict'] = 'Дадаць у Ñлоўнік';
+$labels['mailtoprotohandler'] = 'ЗарÑгіÑтраваць апрацоўніка Ð´Ð»Ñ ÑпаÑылак mailto:';
+$labels['standardwindows'] = 'УÑпрымаць вокны-бурбалкі Ñк Ð·Ð²Ñ‹Ñ‡Ð°Ð¹Ð½Ñ‹Ñ Ð²Ð¾ÐºÐ½Ñ‹';
+$labels['forwardmode'] = 'ПераÑылка паведамленнÑÑž';
+$labels['inline'] = 'у Ñ‚ÑкÑце';
+$labels['asattachment'] = 'Ñк далучÑнне';
+$labels['replyallmode'] = 'Стандартнае дзеÑнне кнопкі [Ðдказаць уÑім]';
+$labels['replyalldefault'] = 'адказаць уÑім';
+$labels['replyalllist'] = 'адказаць толькі Ñž ÑÐ¿Ñ–Ñ Ñ€Ð°ÑÑылкі (калі знойдзены)';
+$labels['folder'] = 'Папка';
+$labels['folders'] = 'Папкі';
+$labels['foldername'] = 'Ðазва папкі';
+$labels['subscribed'] = 'ПадпіÑанаÑ';
+$labels['messagecount'] = 'Паведамленні';
+$labels['create'] = 'Стварыць';
+$labels['createfolder'] = 'Стварыць новую папку';
+$labels['managefolders'] = 'Парадкаваць папкі';
+$labels['specialfolders'] = 'ÐдмыÑÐ»Ð¾Ð²Ñ‹Ñ Ð¿Ð°Ð¿ÐºÑ–';
+$labels['properties'] = 'УлаÑціваÑці';
+$labels['folderproperties'] = 'УлаÑціваÑці папкі';
+$labels['parentfolder'] = 'БацькоўÑÐºÐ°Ñ Ð¿Ð°Ð¿ÐºÐ°';
+$labels['location'] = 'РазмÑшчÑнне';
+$labels['info'] = 'ЗвеÑткі';
+$labels['getfoldersize'] = 'ПÑтрыкніце, каб даведацца памер папкі';
+$labels['changesubscription'] = 'ПÑтрыкніце, каб змÑніць падпіÑку';
+$labels['foldertype'] = 'Тып папкі';
+$labels['personalfolder'] = 'ÐÑабіÑÑ‚Ð°Ñ Ð¿Ð°Ð¿ÐºÐ°';
+$labels['otherfolder'] = 'Папка іншага карыÑтальніка';
+$labels['sharedfolder'] = 'ÐŸÑƒÐ±Ð»Ñ–Ñ‡Ð½Ð°Ñ Ð¿Ð°Ð¿ÐºÐ°';
+$labels['sortby'] = 'Сартаваць паводле';
+$labels['sortasc'] = 'Сартаваць на ўзраÑтанне';
+$labels['sortdesc'] = 'Сартаваць на змÑншчÑнне';
+$labels['undo'] = 'ÐдмÑніць';
+$labels['installedplugins'] = 'УÑÑ‚Ð°Ð½Ð¾ÑžÐ»ÐµÐ½Ñ‹Ñ Ð¿Ð»Ð°Ð³Ñ–Ð½Ñ‹';
+$labels['plugin'] = 'Плагін';
+$labels['version'] = 'ВерÑÑ–Ñ';
+$labels['source'] = 'Крыніца';
+$labels['license'] = 'ЛіцÑнзіÑ';
+$labels['support'] = 'Падтрымка';
+$labels['B'] = 'Б';
+$labels['KB'] = 'КБ';
+$labels['MB'] = 'МБ';
+$labels['GB'] = 'ГБ';
+$labels['unicode'] = 'Юнікод';
+$labels['english'] = 'англійÑкаÑ';
+$labels['westerneuropean'] = 'заходне-еўрапейÑкаÑ';
+$labels['easterneuropean'] = 'уÑходне-еўрапейÑкаÑ';
+$labels['southeasterneuropean'] = 'паўднёва-еўрапейÑкаÑ';
+$labels['baltic'] = 'балтыйÑкаÑ';
+$labels['cyrillic'] = 'кірыліца';
+$labels['arabic'] = 'арабÑкаÑ';
+$labels['greek'] = 'грÑцкаÑ';
+$labels['hebrew'] = 'габрÑйÑкаÑ';
+$labels['turkish'] = 'турÑцкаÑ';
+$labels['nordic'] = 'паўночнаÑ';
+$labels['thai'] = 'тайÑкаÑ';
+$labels['celtic'] = 'кельцкаÑ';
+$labels['vietnamese'] = 'в\'етнамÑкаÑ';
+$labels['japanese'] = 'ÑпонÑкаÑ';
+$labels['korean'] = 'карÑйÑкаÑ';
+$labels['chinese'] = 'кітайÑкаÑ';
?>
diff --git a/program/localization/be_BE/messages.inc b/program/localization/be_BE/messages.inc
index c4033dad9..6afc34b23 100644
--- a/program/localization/be_BE/messages.inc
+++ b/program/localization/be_BE/messages.inc
@@ -15,162 +15,162 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
-$messages['loginfailed'] = 'Збой уваходу.';
-$messages['cookiesdisabled'] = 'Ваш азіральнік не падтрымлівае кукіÑ.';
-$messages['sessionerror'] = 'Ваша ÑеÑÑ–Ñ Ð½Ðµ дзейÑÐ½Ð°Ñ Ñ†Ñ– ÑаÑтарÑла.';
-$messages['storageerror'] = 'Connection to storage server failed.';
+$messages['errortitle'] = 'ЗдарылаÑÑ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°!';
+$messages['loginfailed'] = 'Ðе ўдалоÑÑ ÑžÐ²Ð°Ð¹Ñці.';
+$messages['cookiesdisabled'] = 'Ваш браўзер не падтрымлівае кукіÑ.';
+$messages['sessionerror'] = 'Ваша ÑеÑÑ–Ñ Ð½ÐµÐ²Ð°Ð»Ñ–Ð´Ð½Ð°Ñ Ð°Ð»ÑŒÐ±Ð¾ ÑаÑтарÑла.';
+$messages['storageerror'] = 'Ðе ўдалоÑÑ Ð·Ð»ÑƒÑ‡Ñ‹Ñ†Ñ†Ð° з Ñерверам-Ñховішчам.';
$messages['servererror'] = 'Памылка Ñервера!';
$messages['servererrormsg'] = 'Памылка Ñервера: $msg';
$messages['dberror'] = 'Памылка базы даных!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Ðемагчыма выканаць аперацыю. ТÑчка даÑтупна толькі Ð´Ð»Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ.';
-$messages['errornoperm'] = 'Ðемагчыма выканаць аперацыю. Ðдмоўлена Ñž доÑтупе.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Ðе дзейÑны запыт! Ð”Ð°Ð½Ñ‹Ñ Ð½Ðµ захаваныÑ.';
-$messages['invalidhost'] = 'Invalid server name.';
-$messages['nomessagesfound'] = 'No messages found in this mailbox.';
-$messages['loggedout'] = 'You have successfully terminated the session. Good bye!';
-$messages['mailboxempty'] = 'Mailbox is empty.';
-$messages['refreshing'] = 'Refreshing...';
-$messages['loading'] = 'Loading...';
-$messages['uploading'] = 'Uploading file...';
-$messages['uploadingmany'] = 'Uploading files...';
-$messages['loadingdata'] = 'Loading data...';
-$messages['checkingmail'] = 'Checking for new messages...';
-$messages['sendingmessage'] = 'Sending message...';
-$messages['messagesent'] = 'Message sent successfully.';
-$messages['savingmessage'] = 'Saving message...';
-$messages['messagesaved'] = 'Message saved to Drafts.';
-$messages['successfullysaved'] = 'Successfully saved.';
-$messages['addedsuccessfully'] = 'Contact added successfully to address book.';
-$messages['contactexists'] = 'A contact with the same e-mail address already exists.';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
-$messages['blockedimages'] = 'To protect your privacy, remote images are blocked in this message.';
-$messages['encryptedmessage'] = 'This is an encrypted message and can not be displayed. Sorry!';
-$messages['nocontactsfound'] = 'No contacts found.';
-$messages['contactnotfound'] = 'The requested contact was not found.';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
-$messages['sendingfailed'] = 'Failed to send message.';
-$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
-$messages['errorsavingsent'] = 'An error occured while saving sent message.';
-$messages['errorsaving'] = 'An error occured while saving.';
-$messages['errormoving'] = 'Could not move the message(s).';
-$messages['errorcopying'] = 'Could not copy the message(s).';
-$messages['errordeleting'] = 'Could not delete the message(s).';
-$messages['errormarking'] = 'Could not mark the message(s).';
-$messages['deletecontactconfirm'] = 'Do you really want to delete selected contact(s)?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
-$messages['deletemessagesconfirm'] = 'Do you really want to delete selected message(s)?';
-$messages['deletefolderconfirm'] = 'Do you really want to delete this folder?';
-$messages['purgefolderconfirm'] = 'Do you really want to delete all messages in this folder?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
-$messages['folderdeleting'] = 'Deleting folder...';
-$messages['foldermoving'] = 'Moving folder...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
-$messages['formincomplete'] = 'The form was not completely filled out.';
-$messages['noemailwarning'] = 'Please enter a valid email address.';
-$messages['nonamewarning'] = 'Please enter a name.';
-$messages['nopagesizewarning'] = 'Please enter a page size.';
-$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
-$messages['norecipientwarning'] = 'Please enter at least one recipient.';
-$messages['nosubjectwarning'] = 'The "Subject" field is empty. Would you like to enter one now?';
-$messages['nobodywarning'] = 'Send this message without text?';
-$messages['notsentwarning'] = 'Message has not been sent. Do you want to discard your message?';
-$messages['noldapserver'] = 'Please select an ldap server to search.';
-$messages['nosearchname'] = 'Please enter a contact name or email address.';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
-$messages['searchsuccessful'] = '$nr messages found.';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
-$messages['searchnomatch'] = 'Search returned no matches.';
-$messages['searching'] = 'Searching...';
-$messages['checking'] = 'Checking...';
-$messages['nospellerrors'] = 'No spelling errors found.';
-$messages['folderdeleted'] = 'Folder successfully deleted.';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
-$messages['deletedsuccessfully'] = 'Successfully deleted.';
-$messages['converting'] = 'Removing formatting...';
-$messages['messageopenerror'] = 'Could not load message from server.';
-$messages['fileuploaderror'] = 'File upload failed.';
-$messages['filesizeerror'] = 'The uploaded file exceeds the maximum size of $size.';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
-$messages['sourceisreadonly'] = 'This address source is read only.';
-$messages['errorsavingcontact'] = 'Could not save the contact address.';
-$messages['movingmessage'] = 'Moving message(s)...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
-$messages['receiptsent'] = 'Successfully sent a read receipt.';
-$messages['errorsendingreceipt'] = 'Could not send the receipt.';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
-$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
-$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
-$messages['selectimportfile'] = 'Please select a file to upload.';
-$messages['addresswriterror'] = 'The selected address book is not writeable.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
-$messages['importwait'] = 'Importing, please wait...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operation not permitted!';
-$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
+$messages['requesttimedout'] = 'Ð§Ð°Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñу выйшаў';
+$messages['errorreadonly'] = 'Ðе ўдалоÑÑ Ð²Ñ‹ÐºÐ°Ð½Ð°Ñ†ÑŒ аперацыю. Папка даÑтупна толькі Ð´Ð»Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ.';
+$messages['errornoperm'] = 'Ðе ўдалоÑÑ Ð²Ñ‹ÐºÐ°Ð½Ð°Ñ†ÑŒ аперацыю. Ðдмоўлена Ñž доÑтупе.';
+$messages['erroroverquota'] = 'Ðе ўдалоÑÑ Ð²Ñ‹ÐºÐ°Ð½Ð°Ñ†ÑŒ аперацыю. ÐÑма Ñвабоднай праÑторы на дыÑку.';
+$messages['erroroverquotadelete'] = 'ÐÑма Ñвабоднай праÑторы на дыÑку. ÐаціÑніце SHIFT+DEL, каб выдаліць паведамленне.';
+$messages['invalidrequest'] = 'Ðевалідны запроÑ! Ð”Ð°Ð´Ð·ÐµÐ½Ñ‹Ñ Ð½Ðµ захаваныÑ.';
+$messages['invalidhost'] = 'ÐÑÑлушнае Ñ–Ð¼Ñ Ñервера.';
+$messages['nomessagesfound'] = 'ПаведамленнÑÑž у гÑтай Ñкрынцы не знойдзена';
+$messages['loggedout'] = 'СеÑÑ–Ñ ÑкаÑавана. Да пабачÑннÑ!';
+$messages['mailboxempty'] = 'У Ñкрынцы пуÑта.';
+$messages['refreshing'] = 'ÐбнаўлÑецца...';
+$messages['loading'] = 'Загружаецца...';
+$messages['uploading'] = 'Файл зацÑгваецца...';
+$messages['uploadingmany'] = 'Файлы зацÑгваюцца...';
+$messages['loadingdata'] = 'Загружаюцца даныÑ...';
+$messages['checkingmail'] = 'Праверка новых паведамленнÑÑž...';
+$messages['sendingmessage'] = 'Паведамленне адпраўлÑецца...';
+$messages['messagesent'] = 'Паведамленні адпраўлены.';
+$messages['savingmessage'] = 'Паведамленне захоўваецца...';
+$messages['messagesaved'] = 'Паведамленне захавана ў Чарнавікі.';
+$messages['successfullysaved'] = 'Захавана.';
+$messages['savingresponse'] = 'ТÑкÑÑ‚ адказу захоўваецца...';
+$messages['deleteresponseconfirm'] = 'Ðапраўду выдаліць Ñ‚ÑкÑÑ‚ адказу?';
+$messages['addedsuccessfully'] = 'Кантакт дададзены Ñž адраÑную кнігу.';
+$messages['contactexists'] = 'Кантакт з такім Ñамым адраÑам Ñл. пошты ўжо Ñ–Ñнуе.';
+$messages['contactnameexists'] = 'Кантакт з такім Ñамым імем ужо Ñ–Ñнуе.';
+$messages['blockedimages'] = 'Ð”Ð·ÐµÐ»Ñ Ð·Ð°Ð±ÐµÑпÑчÑÐ½Ð½Ñ Ð²Ð°ÑˆÐ°Ð¹ прыватнаÑці Ð·Ð½ÐµÑˆÐ½Ñ–Ñ Ð²Ñ–Ð´Ð°Ñ€Ñ‹ÑÑ‹ Ñž гÑтым паведамленні заблакіраваныÑ.';
+$messages['encryptedmessage'] = 'ГÑта зашыфраванае паведамленне. Яно не можа быць адлюÑтравана. Выбачайце!';
+$messages['nocontactsfound'] = 'Кантактаў не знойдзена.';
+$messages['contactnotfound'] = 'Запытаны кантакт не знойдзены.';
+$messages['contactsearchonly'] = 'Задайце выраз Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÐ° кантактаў';
+$messages['sendingfailed'] = 'Ðе ўдалоÑÑ Ð°Ð´Ð¿Ñ€Ð°Ð²Ñ–Ñ†ÑŒ паведамленне.';
+$messages['senttooquickly'] = 'Пачакайце $sec Ñекунд(Ñ‹) перад адпраўкай гÑтага паведамленнÑ.';
+$messages['errorsavingsent'] = 'Ðе ўдалоÑÑ Ð·Ð°Ñ…Ð°Ð²Ð°Ñ†ÑŒ адпраўленае паведамленне.';
+$messages['errorsaving'] = 'Ðе ўдалоÑÑ Ð·Ð°Ñ…Ð°Ð²Ð°Ñ†ÑŒ.';
+$messages['errormoving'] = 'Ðе ўдалоÑÑ Ð¿ÐµÑ€Ð°Ð¼ÑÑціць паведамленнÑ(Ñž).';
+$messages['errorcopying'] = 'Ðе ўдалоÑÑ ÑкапіÑваць паведамленнÑ(Ñž).';
+$messages['errordeleting'] = 'Ðе ўдалоÑÑ Ð²Ñ‹Ð´Ð°Ð»Ñ–Ñ†ÑŒ паведамленнÑ(Ñž).';
+$messages['errormarking'] = 'Ðе ўдалоÑÑ Ð¿Ð°Ð·Ð½Ð°Ñ‡Ñ‹Ñ†ÑŒ паведамленнÑ(Ñž).';
+$messages['deletecontactconfirm'] = 'Ðапраўду выдаліць абраны(Ñ) кантакты?';
+$messages['deletegroupconfirm'] = 'Ðапраўду выдаліць абраную групу?';
+$messages['deletemessagesconfirm'] = 'Ðапраўду выдаліць абранае(Ñ‹Ñ) паведамленне?';
+$messages['deletefolderconfirm'] = 'Ðапраўду выдаліць гÑтую папку?';
+$messages['purgefolderconfirm'] = 'Ðапраўду выдаліць уÑе паведамленні з гÑтай папкі?';
+$messages['contactdeleting'] = 'Кантакт(Ñ‹) выдалÑюцца...';
+$messages['groupdeleting'] = 'Група выдалÑецца...';
+$messages['folderdeleting'] = 'Папка выдалÑецца...';
+$messages['foldermoving'] = 'Папка перамÑшчаецца...';
+$messages['foldersubscribing'] = 'Папка падпіÑваецца...';
+$messages['folderunsubscribing'] = 'Папка адпіÑваецца...';
+$messages['formincomplete'] = 'ФармулÑÑ€ запоўнены не да канца.';
+$messages['noemailwarning'] = 'Задайце Ñлушны Ð°Ð´Ñ€Ð°Ñ Ñлектроннай пошты.';
+$messages['nonamewarning'] = 'Задайце імÑ.';
+$messages['nopagesizewarning'] = 'Задайце памер Ñтаронкі.';
+$messages['nosenderwarning'] = 'Задайце Ð°Ð´Ñ€Ð°Ñ Ñл. пошты адпраўніка.';
+$messages['norecipientwarning'] = 'Задайце хацÑ-б аднаго атрымальніка.';
+$messages['nosubjectwarning'] = 'ТÑма ліÑта не зададзена. Ці жадаеце задаць Ñе зараз?';
+$messages['nobodywarning'] = 'Ðдправіць гÑта паведамленне без Ñ‚ÑкÑту?';
+$messages['notsentwarning'] = 'Паведамленне не адпраўлена. Жадаеце ÑкаÑаваць Ñваё паведамленне?';
+$messages['restoresavedcomposedata'] = 'Было знойдзена ўжо Ñкладзенае, але не адпраўленае паведамленне.\n\nТÑма: $subject\nЗахавана: $date\n\nЖадаеце аднавіць гÑтае паведамленне?';
+$messages['noldapserver'] = 'Задайце ldap-Ñервер Ð´Ð»Ñ Ð¿Ð¾ÑˆÑƒÐºÑƒ.';
+$messages['nosearchname'] = 'Задайце Ñ–Ð¼Ñ ÐºÐ°Ð½Ñ‚Ð°ÐºÑ‚Ð° альбо Ð°Ð´Ñ€Ð°Ñ Ñлектроннай пошты.';
+$messages['notuploadedwarning'] = 'Ðе ÑžÑе далучÑнні пакуль ÑÑˆÑ‡Ñ Ð·Ð°Ñ†ÑгнутыÑ. Пачакайце альбо ÑкаÑуйце аперацыю.';
+$messages['searchsuccessful'] = 'Знойдзена $nr паведамленнÑÑž.';
+$messages['contactsearchsuccessful'] = 'Знойдзена $nr кантактаў.';
+$messages['searchnomatch'] = 'Пошук не даў выніку.';
+$messages['searching'] = 'Ідзе пошук...';
+$messages['checking'] = 'Ідзе праверка...';
+$messages['nospellerrors'] = 'Памылак правапіÑÐ°Ð½Ð½Ñ Ð½Ðµ выÑўлена.';
+$messages['folderdeleted'] = 'Папка выдалена.';
+$messages['foldersubscribed'] = 'Папка падпіÑана.';
+$messages['folderunsubscribed'] = 'Папка адпіÑана.';
+$messages['folderpurged'] = 'Папка ачышчана.';
+$messages['folderexpunged'] = 'Папка ÑціÑнута. ';
+$messages['deletedsuccessfully'] = 'Выдалена.';
+$messages['converting'] = 'Фарматаванне выдалÑецца...';
+$messages['messageopenerror'] = 'Ðе ўдалоÑÑ Ð·Ð°Ð³Ñ€ÑƒÐ·Ñ–Ñ†ÑŒ паведамленне з Ñервера.';
+$messages['fileuploaderror'] = 'Ðе ўдалоÑÑ Ð·Ð°Ñ†Ñгнуць файл.';
+$messages['filesizeerror'] = 'ЗацÑгнуты файл перавышае макÑімальна дазволены памер $size.';
+$messages['copysuccess'] = '$nr кантактаў ÑкапіÑвана.';
+$messages['movesuccess'] = '$nr кантактаў перамешчана.';
+$messages['copyerror'] = 'Ðе ўдалоÑÑ ÑкапіÑваць ніводнага кантакта.';
+$messages['moveerror'] = 'Ðе ўдалоÑÑ Ð¿ÐµÑ€Ð°Ð¼ÑÑціць ніводнага кантакта.';
+$messages['sourceisreadonly'] = 'ГÑÑ‚Ð°Ñ ÐºÑ€Ñ‹Ð½Ñ–Ñ†Ð° адраÑоў толькі Ð´Ð»Ñ Ñ‡Ñ‹Ñ‚Ð°Ð½Ð½Ñ.';
+$messages['errorsavingcontact'] = 'Ðе ўдалоÑÑ Ð·Ð°Ñ…Ð°Ð²Ð°Ñ†ÑŒ Ð°Ð´Ñ€Ð°Ñ ÐºÐ°Ð½Ñ‚Ð°ÐºÑ‚Ð°.';
+$messages['movingmessage'] = 'Паведамленні(е) перамÑшчаюцца...';
+$messages['copyingmessage'] = 'Паведамленні(е) капіююцца...';
+$messages['copyingcontact'] = 'Кантакт(ы) капіююцца...';
+$messages['movingcontact'] = 'Кантакт(Ñ‹) перамÑшчаюцца...';
+$messages['deletingmessage'] = 'Паведамленні(е) выдалÑюцца...';
+$messages['markingmessage'] = 'Паведамленні(е) пазначаюцца...';
+$messages['addingmember'] = 'Кантакт(ы) дадаюцца ў групу...';
+$messages['removingmember'] = 'Кантакт(Ñ‹) выдалÑюцца з групы...';
+$messages['receiptsent'] = 'Пацверджанне аб прачытанні адпраўлена.';
+$messages['errorsendingreceipt'] = 'Ðе ўдалоÑÑ Ð°Ð´Ð¿Ñ€Ð°Ð²Ñ–Ñ†ÑŒ пацверджаннÑ.';
+$messages['deleteidentityconfirm'] = 'Ðапраўду выдаліць гÑтую тоеÑнаÑць?';
+$messages['nodeletelastidentity'] = 'ГÑтую тоеÑнаÑць выдаліць нÑможна, бо апошнÑÑ.';
+$messages['forbiddencharacter'] = 'Ðазва папкі змÑшчае забаронены знак.';
+$messages['selectimportfile'] = 'ÐбÑрыце файл да зацÑгваннÑ.';
+$messages['addresswriterror'] = 'ÐÐ±Ñ€Ð°Ð½Ð°Ñ Ð°Ð´Ñ€Ð°ÑÐ½Ð°Ñ ÐºÐ½Ñ–Ð³Ð° Ñ‘Ñць толькі-длÑ-чытаннÑ.';
+$messages['contactaddedtogroup'] = 'Кантакты дададзены ў групу.';
+$messages['contactremovedfromgroup'] = 'Кантакты Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½Ñ‹Ñ Ð· групы.';
+$messages['nogroupassignmentschanged'] = 'УÑе прызначÑнні групы заÑталіÑÑ Ð±ÐµÐ· зменаў.';
+$messages['importwait'] = 'Ідзе імпартаванне. Чакайце...';
+$messages['importformaterror'] = 'Імпартаванне не ўдалоÑÑ! Загружаны файл не ўтрымоўвае Ñлушных даных на імпарт.';
+$messages['importconfirm'] = '<b>$inserted кантактаў імпартаваныÑ</b>';
+$messages['importconfirmskipped'] = '<b>Прапушчана $skipped Ñ–Ñнуючых запіÑаў</b>';
+$messages['importmessagesuccess'] = '$nr паведамленнÑÑž імпартавана';
+$messages['importmessageerror'] = 'Ðе ўдалоÑÑ Ñ–Ð¼Ð¿Ð°Ñ€Ñ‚Ð°Ð²Ð°Ñ†ÑŒ! Загружаны файл не Ñ‘Ñць Ñлушным паведамленнем альбо файлам паштовай Ñкрынкі';
+$messages['opnotpermitted'] = 'ÐÐ¿ÐµÑ€Ð°Ñ†Ñ‹Ñ Ð½Ðµ дазволенаÑ!';
+$messages['nofromaddress'] = 'У абранай тоеÑнаÑці не Ñтае адраÑу Ñл. пошты.';
+$messages['editorwarning'] = 'Змена Ñ€Ñдактара прывÑдзе да Ñтраты фарматаваннÑ. ПрацÑгнуць?';
+$messages['httpreceivedencrypterror'] = 'Ð’Ð°Ð¶Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ° Ñž канфігурацыі. Ðеадкладна ÑкантактуйцеÑÑ Ð· адмініÑтратарам. <b>Паведамленне не можа быць адпраўлена.</b>';
+$messages['smtpconnerror'] = 'Памылка SMTP ($code): Ðе ўдалоÑÑ Ð·Ð»ÑƒÑ‡Ñ‹Ñ†Ñ†Ð° з Ñерверам.';
+$messages['smtpautherror'] = 'Памылка SMTP ($code): ÐўтÑÑ‚Ñ‹Ñ„Ñ–ÐºÐ°Ñ†Ñ‹Ñ Ð½Ðµ ўдалаÑÑ.';
+$messages['smtpfromerror'] = 'Памылка SMTP ($code): Ðе ўдалоÑÑ Ð·Ð°Ð´Ð°Ñ†ÑŒ адпраўніка "$from" ($msg).';
+$messages['smtptoerror'] = 'Памылка STMP ($code): Ðе ўдалоÑÑ Ð·Ð°Ð´Ð°Ñ†ÑŒ атрымальніка "$to" ($msg).';
+$messages['smtprecipientserror'] = 'Памылка STMP: Ðе ўдалоÑÑ Ð¿Ñ€Ð°Ñ‡Ñ‹Ñ‚Ð°Ñ†ÑŒ ÑÐ¿Ñ–Ñ Ð°Ñ‚Ñ€Ñ‹Ð¼Ð°Ð»ÑŒÐ½Ñ–ÐºÐ°Ñž.';
+$messages['smtperror'] = 'Памылка SMTP: $msg';
+$messages['emailformaterror'] = 'ÐÑÑлушны Ð°Ð´Ñ€Ð°Ñ Ñл. пошты: $email';
+$messages['toomanyrecipients'] = 'Замнога атрымальнікаў. Зменшыце лік атрымальнікаў да $max.';
+$messages['maxgroupmembersreached'] = 'Лік ÑÑброў групы перавышае макÑімум — $max.';
+$messages['internalerror'] = 'Ð£Ð½ÑƒÑ‚Ñ€Ð°Ð½Ð°Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÐ°. ПаÑпрабуйце ÑÑˆÑ‡Ñ Ñ€Ð°Ð·.';
+$messages['contactdelerror'] = 'Ðе ўдалоÑÑ Ð²Ñ‹Ð´Ð°Ð»Ñ–Ñ†ÑŒ кантакта(Ñž).';
+$messages['contactdeleted'] = 'Кантакт(ы) выдалены.';
+$messages['contactrestoreerror'] = 'Ðе ўдалоÑÑ Ð°Ð´Ð½Ð°Ð²Ñ–Ñ†ÑŒ Ð²Ñ‹Ð´Ð°Ð»ÐµÐ½Ñ‹Ñ ÐºÐ°Ð½Ñ‚Ð°ÐºÑ‚(Ñ‹).';
+$messages['contactrestored'] = 'Кантакт(ы) адноўлены.';
+$messages['groupdeleted'] = 'Група выдалена.';
+$messages['grouprenamed'] = 'Група перайменавана.';
+$messages['groupcreated'] = 'Група Ñтворана.';
+$messages['savedsearchdeleted'] = 'Захаванае запытанне выдалена.';
+$messages['savedsearchdeleteerror'] = 'Ðе ўдалоÑÑ Ð²Ñ‹Ð´Ð°Ð»Ñ–Ñ†ÑŒ захаванае запытанне.';
+$messages['savedsearchcreated'] = 'Захаванае запытанне Ñтворана.';
+$messages['savedsearchcreateerror'] = 'Ðе ўдалоÑÑ Ñтварыць захаванае запытанне.';
+$messages['messagedeleted'] = 'Паведамленні(е) выдалены.';
+$messages['messagemoved'] = 'Паведамленні(е) перамешчаны.';
+$messages['messagecopied'] = 'Паведамленні(е) ÑкапіÑваны.';
+$messages['messagemarked'] = 'Паведамленні(е) пазначаны.';
+$messages['autocompletechars'] = 'УвÑдзіце мінімум $min знакаў Ð´Ð»Ñ Ð°ÑžÑ‚Ð°Ð´Ð°Ð¿Ð°ÑžÐ½ÐµÐ½Ð½Ñ.';
+$messages['autocompletemore'] = 'Больш адпаведных запіÑаў знойдзена. УвÑдзіце больш знакаў.';
+$messages['namecannotbeempty'] = 'Ðазва не можа быць пуÑтой.';
+$messages['nametoolong'] = 'Ðазва задаўгаÑ.';
+$messages['folderupdated'] = 'Папка абноўлена.';
+$messages['foldercreated'] = 'Папка Ñтворана.';
+$messages['invalidimageformat'] = 'ÐÑÑлушны фармат відарыÑу.';
+$messages['mispellingsfound'] = 'У паведамленні выÑўлены правапіÑÐ½Ñ‹Ñ Ð¿Ð°Ð¼Ñ‹Ð»ÐºÑ–.';
+$messages['parentnotwritable'] = 'Ðе ўдалоÑÑ Ñтварыць/перамÑÑціць папку Ñž абраным меÑцы. ÐÑма доÑтупу.';
+$messages['messagetoobig'] = 'ГÑÑ‚Ð°Ñ Ñ‡Ð°Ñць Ð¿Ð°Ð²ÐµÐ´Ð°Ð¼Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð²ÑлікаÑ, каб Ñе апрацаваць.';
+$messages['attachmentvalidationerror'] = 'УВÐГÐ! ГÑтае далучÑнне Ñ‘Ñць падазроным, бо тып Ñгоны не Ñупадае з заÑўленым тыпам у паведамленні. Калі вы не давÑраеце гÑтаму адпраўніку, не адчынÑйце Ñго Ñž браўзеры, таму што Ñно можа ўтрымліваць шкоднае змеÑціва.<br/><br/><em>Чаканы: $expected; знойдзены: $detected<em>';
+$messages['noscriptwarning'] = 'Увага: Служба вымагае Javascript’у! Каб карыÑтацца ёй, Ñ‚Ñ€Ñба ўключыць Javascript у наÑтаўленнÑÑ… браўзера.';
?>
diff --git a/program/localization/ber/labels.inc b/program/localization/ber/labels.inc
index 1128b0d4b..939405707 100644
--- a/program/localization/ber/labels.inc
+++ b/program/localization/ber/labels.inc
@@ -13,6 +13,5 @@
+-----------------------------------------------------------------------+
*/
-$labels = array();
$labels['username'] = 'Izwel n';
diff --git a/program/localization/bg_BG/labels.inc b/program/localization/bg_BG/labels.inc
index 3c63580b6..ecedae739 100644
--- a/program/localization/bg_BG/labels.inc
+++ b/program/localization/bg_BG/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Добре дошли в $product';
$labels['username'] = 'Потребител';
$labels['password'] = 'Парола';
$labels['server'] = 'Сървър';
$labels['login'] = 'Вход';
-
-// taskbar
$labels['logout'] = 'Изход';
$labels['mail'] = 'Поща';
$labels['settings'] = 'ÐаÑтройки';
$labels['addressbook'] = 'ÐдреÑна книга';
-
-// mailbox names
$labels['inbox'] = 'Вх. поща';
$labels['drafts'] = 'Чернови';
$labels['sent'] = 'Изпратени';
$labels['trash'] = 'Кошче';
$labels['junk'] = 'Спам';
$labels['show_real_foldernames'] = 'Показва иÑтинÑките имена на Ñлужебните папки';
-
-// message listing
$labels['subject'] = 'Заглавие';
$labels['from'] = 'От';
$labels['sender'] = 'Подател';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Приоритет';
$labels['organization'] = 'ОрганизациÑ';
$labels['readstatus'] = 'Статут (прочетено/ново)';
$labels['listoptions'] = 'ÐаÑтройки на ÑпиÑък...';
-
$labels['mailboxlist'] = 'Папки';
$labels['messagesfromto'] = 'ПиÑма $from до $to от $count';
$labels['threadsfromto'] = 'КореÑпонденции $from до $to от $count';
$labels['messagenrof'] = 'ПиÑмо $nr от $count';
$labels['fromtoshort'] = '$from – $to от $count';
-
$labels['copy'] = 'Копиране';
$labels['move'] = 'ПремеÑтване';
$labels['moveto'] = 'ПремеÑти във...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Изтегли';
$labels['open'] = 'Отвори';
$labels['showattachment'] = 'Показване';
$labels['showanyway'] = 'Показване въпреки това';
-
$labels['filename'] = 'Име на файла';
$labels['filesize'] = 'Размер на файла';
-
$labels['addtoaddressbook'] = 'Добави в адреÑната книга';
-
-// weekdays short
$labels['sun'] = 'Ðед';
$labels['mon'] = 'Пон';
$labels['tue'] = 'Вто';
@@ -82,8 +66,6 @@ $labels['wed'] = 'СрÑ';
$labels['thu'] = 'Чет';
$labels['fri'] = 'Пет';
$labels['sat'] = 'Съб';
-
-// weekdays long
$labels['sunday'] = 'ÐеделÑ';
$labels['monday'] = 'Понеделник';
$labels['tuesday'] = 'Вторник';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'СрÑда';
$labels['thursday'] = 'Четвъртък';
$labels['friday'] = 'Петък';
$labels['saturday'] = 'Събота';
-
-// months short
$labels['jan'] = 'Яну';
$labels['feb'] = 'Фев';
$labels['mar'] = 'Мар';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Сеп';
$labels['oct'] = 'Окт';
$labels['nov'] = 'Ðое';
$labels['dec'] = 'Дек';
-
-// months long
$labels['longjan'] = 'Януари';
$labels['longfeb'] = 'Февруари';
$labels['longmar'] = 'Март';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Септември';
$labels['longoct'] = 'Октомври';
$labels['longnov'] = 'Ðоември';
$labels['longdec'] = 'Декември';
-
$labels['today'] = 'ДнеÑ';
-
-// toolbar buttons
$labels['refresh'] = 'Обнови';
$labels['checkmail'] = 'Провери за нова поща';
$labels['compose'] = 'Ðапиши';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Допълнителни дейÑтвиÑ...';
$labels['more'] = 'Още';
$labels['back'] = 'Ðазад';
$labels['options'] = 'Опции';
-
$labels['select'] = 'Избери';
$labels['all'] = 'Ð’Ñички';
$labels['none'] = 'ОÑтави без избор';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Разгъни вÑички';
$labels['expand-unread'] = 'Разгъни непрочетените';
$labels['collapse-all'] = 'Сгъни вÑички';
$labels['threaded'] = 'Групирани по кореÑпонденции';
-
$labels['autoexpand_threads'] = 'Разгъни кореÑпонденции';
$labels['do_expand'] = 'вÑички кореÑпонденции';
$labels['expand_only_unread'] = 'Ñамо Ñ Ð½ÐµÐ¿Ñ€Ð¾Ñ‡ÐµÑ‚ÐµÐ½Ð¸ пиÑма';
@@ -190,16 +163,13 @@ $labels['listcolumns'] = 'Колони на ÑпиÑък';
$labels['listsorting'] = 'Подреди по колона';
$labels['listorder'] = 'ПоÑока на подреждане';
$labels['listmode'] = 'Изглед на ÑпиÑък';
-
$labels['folderactions'] = 'ДейÑÑ‚Ð²Ð¸Ñ Ð·Ð° папки...';
$labels['compact'] = 'Уплътни данни';
$labels['empty'] = 'Изпразни';
$labels['importmessages'] = 'Импорт на пиÑма';
-
$labels['quota'] = 'Използвано мÑÑто';
$labels['unknown'] = 'нÑма информациÑ';
$labels['unlimited'] = 'без ограничение';
-
$labels['quicksearch'] = 'Бързо Ñ‚ÑŠÑ€Ñене';
$labels['resetsearch'] = 'ИзчиÑти филтър и покажи вÑичко';
$labels['searchmod'] = 'Филтър по';
@@ -207,13 +177,10 @@ $labels['msgtext'] = 'ЦÑлото пиÑмо';
$labels['body'] = 'ОÑновен текÑÑ‚';
$labels['type'] = 'Тип';
$labels['namex'] = 'Име';
-
$labels['openinextwin'] = 'Отвори в нов прозорец';
$labels['emlsave'] = 'Изтегли като .eml';
$labels['changeformattext'] = 'Покажи в текÑтов формат';
$labels['changeformathtml'] = 'Покажи в HTML формат';
-
-// message compose
$labels['editasnew'] = 'Редактирай като ново';
$labels['send'] = 'Изпрати';
$labels['sendmessage'] = 'Изпрати пиÑмото';
@@ -225,26 +192,32 @@ $labels['returnreceipt'] = 'Обратна разпиÑка';
$labels['dsn'] = 'ÐÐ¾Ñ‚Ð¸Ñ„Ð¸ÐºÐ°Ñ†Ð¸Ñ Ð¿Ñ€Ð¸ доÑтавка';
$labels['mailreplyintro'] = 'Ðа $date, $sender напиÑа:';
$labels['originalmessage'] = 'Оригинално пиÑмо';
-
$labels['editidents'] = 'Промени ÑамоличноÑти';
$labels['spellcheck'] = 'ПравопиÑ';
$labels['checkspelling'] = 'Проверка на правопиÑа';
$labels['resumeediting'] = 'Продължи черновата';
$labels['revertto'] = 'Върни Ñе към';
-
+$labels['restore'] = 'ВъзÑтанови';
+$labels['restoremessage'] = 'ВъзÑтановÑване на Ñъобщението?';
+$labels['responses'] = 'Отговори';
+$labels['insertresponse'] = 'Вмъкване на отговори';
+$labels['manageresponses'] = 'ÐаÑтройка на отговори';
+$labels['savenewresponse'] = 'Ð—Ð°Ð¿Ð¸Ñ Ð½Ð° нов отговор';
+$labels['editresponses'] = 'Ð ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ð½Ð° отговори';
+$labels['editresponse'] = 'Ð ÐµÐ´Ð°ÐºÑ†Ð¸Ñ Ð½Ð° отговор';
+$labels['responsename'] = 'Име';
+$labels['responsetext'] = 'ТекÑÑ‚ на отговор';
$labels['attach'] = 'Прикачи';
$labels['attachments'] = 'Прикачени файлове';
$labels['upload'] = 'Качи';
$labels['uploadprogress'] = '$percent ($current от $total)';
$labels['close'] = 'Затвори';
$labels['messageoptions'] = 'ÐаÑтройки на пиÑма...';
-
$labels['low'] = 'ÐиÑък';
$labels['lowest'] = 'Ðай-ниÑък';
$labels['normal'] = 'Ðормален';
$labels['high'] = 'ВиÑок';
$labels['highest'] = 'Ðай-виÑок';
-
$labels['nosubject'] = '(нÑма заглавие)';
$labels['showimages'] = 'Показвай изображениÑ';
$labels['alwaysshow'] = 'Винаги показвай Ð¸Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð¸Ñ Ð¾Ñ‚ $sender';
@@ -252,25 +225,19 @@ $labels['isdraft'] = 'Това е чернова';
$labels['andnmore'] = 'още $nr...';
$labels['togglemoreheaders'] = 'Покажи още заглавни блокове';
$labels['togglefullheaders'] = 'Изходни заглавни блокове';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'ТекÑтово';
$labels['savesentmessagein'] = 'Запази Ñлед изпращане в';
$labels['dontsave'] = 'не запазвай';
$labels['maxuploadsize'] = 'МакÑимален размер на файл е $size';
-
$labels['addcc'] = 'Копие до';
$labels['addbcc'] = 'Скрито копие до';
$labels['addreplyto'] = 'Отговор до';
$labels['addfollowupto'] = 'Препращане към';
-
-// mdn
$labels['mdnrequest'] = 'ПодателÑÑ‚ е поиÑкал да бъде уведомен, че Ñте го прочели това пиÑмо. Желаете ли да изпратите обратна разпиÑка?';
$labels['receiptread'] = 'Обратна разпиÑка (прочетено)';
$labels['yourmessage'] = 'Това е обратна разпиÑка отноÑно пиÑмото Ви';
$labels['receiptnote'] = 'Забележка: Тази разпиÑка потвърждава Ñамо, че пиÑмото е било визуализирано на екрана на получателÑÑ‚. ÐÑма никаква гаранциÑ, че той е разбрал и/или дори прочел неговото Ñъдържание.';
-
-// address boook
$labels['name'] = 'Екранно име';
$labels['firstname'] = 'Име';
$labels['surname'] = 'ФамилиÑ';
@@ -305,7 +272,6 @@ $labels['search'] = 'ТърÑене';
$labels['advsearch'] = 'Разширено Ñ‚ÑŠÑ€Ñене';
$labels['advanced'] = 'ТърÑи';
$labels['other'] = 'Други';
-
$labels['typehome'] = 'Домашен';
$labels['typework'] = 'Служебен';
$labels['typeother'] = 'Друг';
@@ -320,14 +286,12 @@ $labels['typeassistant'] = 'Ðа аÑиÑтент';
$labels['typehomepage'] = 'Личен';
$labels['typeblog'] = 'Блог';
$labels['typeprofile'] = 'Профил';
-
$labels['addfield'] = 'Друго поле...';
$labels['addcontact'] = 'Добави нов контакт';
$labels['editcontact'] = 'Редактирай контакт';
$labels['contacts'] = 'Контакти';
$labels['contactproperties'] = 'Данни на контакт';
$labels['personalinfo'] = 'Лична информациÑ';
-
$labels['edit'] = 'Редактирай';
$labels['cancel'] = 'Отказ';
$labels['save'] = 'ЗапиÑ';
@@ -336,7 +300,6 @@ $labels['rename'] = 'Преименувай';
$labels['addphoto'] = 'Добави';
$labels['replacephoto'] = 'Замени';
$labels['uploadphoto'] = 'Качване на Ñнимка';
-
$labels['newcontact'] = 'Ðов контакт';
$labels['deletecontact'] = 'Изтрий избраните контакти';
$labels['composeto'] = 'Ðапиши пиÑмо до';
@@ -350,20 +313,16 @@ $labels['newcontactgroup'] = 'Ðова група контракти';
$labels['grouprename'] = 'Преименувай групата';
$labels['groupdelete'] = 'Изтрий групата';
$labels['groupremoveselected'] = 'Премахни избраните контакти от групата';
-
$labels['previouspage'] = 'Предишна Ñтраница';
$labels['firstpage'] = 'Първа Ñтраница';
$labels['nextpage'] = 'Следваща Ñтраница';
$labels['lastpage'] = 'ПоÑледна Ñтраница';
-
$labels['group'] = 'Група';
$labels['groups'] = 'Групи';
$labels['listgroup'] = 'Покажи членове на групата';
$labels['personaladrbook'] = 'Лични адреÑи';
-
$labels['searchsave'] = 'Запази филтър';
$labels['searchdelete'] = 'Изтрий филтър';
-
$labels['import'] = 'Импорт';
$labels['importcontacts'] = 'Импортиране на контакти';
$labels['importfromfile'] = 'Импорт от файл:';
@@ -374,21 +333,16 @@ $labels['importgroupsall'] = 'Ð’Ñички (Ñъздава групи ако е
$labels['importgroupsexisting'] = 'Само за ÑъщеÑтвуващите групи';
$labels['importdesc'] = 'Можете да качвате контакти от ÑъщеÑтвуваща адреÑна книга.<br/>Ð’ момента поддържаме импорт на адреÑи от файловите формати <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> или CSV (comma-separated).';
$labels['done'] = 'Готово';
-
-// settings
$labels['settingsfor'] = 'ÐаÑтройки за';
$labels['about'] = 'ОтноÑно';
$labels['preferences'] = 'ÐаÑтройки';
$labels['userpreferences'] = 'ПотребителÑки наÑтройки';
$labels['editpreferences'] = 'Редактирай потребителÑките наÑтройки';
-
$labels['identities'] = 'СамоличноÑти';
$labels['manageidentities'] = 'ÐаÑтройка на ÑамоличноÑти за този акаунт';
$labels['newidentity'] = 'Ðова ÑамоличноÑÑ‚';
-
$labels['newitem'] = 'Ðова ÑамоличноÑÑ‚';
$labels['edititem'] = 'Редактирай ÑамоличноÑÑ‚';
-
$labels['preferhtml'] = 'Покажи първо HTML верÑиÑ';
$labels['defaultcharset'] = 'Кодова таблица по подразбиране';
$labels['htmlmessage'] = 'HTML пиÑмо';
@@ -484,7 +438,9 @@ $labels['standardwindows'] = 'Обработва изÑкачащи прозор
$labels['forwardmode'] = 'Препращай пиÑмата';
$labels['inline'] = 'цитирани в пиÑмото';
$labels['asattachment'] = 'като прикачен файл';
-
+$labels['replyallmode'] = 'ДейÑтвие по подразбиране на бутон [Отговор на вÑички]';
+$labels['replyalldefault'] = 'отговори на вÑички';
+$labels['replyalllist'] = 'отговори на ÑпиÑъка Ñамо (ако има)';
$labels['folder'] = 'Папка';
$labels['folders'] = 'Папки';
$labels['foldername'] = 'Име на папката';
@@ -505,26 +461,20 @@ $labels['foldertype'] = 'Вид на папката';
$labels['personalfolder'] = 'Лична папка';
$labels['otherfolder'] = 'Папка на друг потребител';
$labels['sharedfolder'] = 'Публична папка';
-
$labels['sortby'] = 'Сортирай по';
$labels['sortasc'] = 'Сортирай нараÑтващо';
$labels['sortdesc'] = 'Сортирай намалÑващо';
$labels['undo'] = 'Отмени';
-
$labels['installedplugins'] = 'ИнÑталирани добавки';
$labels['plugin'] = 'Добавки';
$labels['version'] = 'ВерÑиÑ';
$labels['source'] = 'Източник';
$labels['license'] = 'Лиценз';
$labels['support'] = 'Поддръжка';
-
-// units
$labels['B'] = 'Б';
$labels['KB'] = 'КБ';
$labels['MB'] = 'МБ';
$labels['GB'] = 'ГБ';
-
-// character sets
$labels['unicode'] = 'Уникод';
$labels['english'] = 'ÐнглийÑки';
$labels['westerneuropean'] = 'Западна Европа';
@@ -543,5 +493,4 @@ $labels['vietnamese'] = 'ВиетнамÑки';
$labels['japanese'] = 'ЯпонÑки';
$labels['korean'] = 'КорейÑки';
$labels['chinese'] = 'КитайÑки';
-
?>
diff --git a/program/localization/bg_BG/messages.inc b/program/localization/bg_BG/messages.inc
index f1038dfa1..4363417d2 100644
--- a/program/localization/bg_BG/messages.inc
+++ b/program/localization/bg_BG/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Възникна грешка!';
$messages['loginfailed'] = 'ÐеуÑпешно уÑтановÑване на ÑамоличноÑÑ‚.';
$messages['cookiesdisabled'] = 'ВашиÑÑ‚ браузър не приема cookies.';
@@ -46,6 +44,8 @@ $messages['messagesent'] = 'ПиÑмото е изпратено уÑпешно.
$messages['savingmessage'] = 'ЗапиÑване на пиÑмо...';
$messages['messagesaved'] = 'ПиÑмото е запиÑано в Чернови.';
$messages['successfullysaved'] = 'УÑпешен запиÑ.';
+$messages['savingresponse'] = 'ЗапиÑване текÑÑ‚ на отговор...';
+$messages['deleteresponseconfirm'] = 'Желаете ли да изтриете текÑÑ‚ за отговор?';
$messages['addedsuccessfully'] = 'Контактът е добавен в адреÑната книга.';
$messages['contactexists'] = 'Вече ÑъщеÑтвува контакт Ñ Ñ‚Ð¾Ð·Ð¸ e-mail адреÑ.';
$messages['contactnameexists'] = 'Вече ÑъщеÑтвува контакт Ñ Ñ‚Ð¾Ð²Ð° име.';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ поне един Ð
$messages['nosubjectwarning'] = 'Полето "Заглавие" е празно. Желаете ли да въведете заглавие Ñега?';
$messages['nobodywarning'] = 'Изпрати това пиÑмо без текÑÑ‚?';
$messages['notsentwarning'] = 'ПиÑмото не е изпратено. Желаете ли да бъде унищожено?';
+$messages['restoresavedcomposedata'] = 'Ðамерено е неизпратено пиÑмо, което е било в Ð¿Ñ€Ð¾Ñ†ÐµÑ Ð½Ð° Ñъздаване.\n\nОтноÑно: $subject\nЗапазено на: $date\n\nЖелаете ли да възÑтановите пиÑмото?';
$messages['noldapserver'] = 'Изберете LDAP Ñървър за Ñ‚ÑŠÑ€Ñене.';
$messages['nosearchname'] = 'ÐœÐ¾Ð»Ñ Ð²ÑŠÐ²ÐµÐ´ÐµÑ‚Ðµ име на контакта или e-mail адреÑ.';
$messages['notuploadedwarning'] = 'Ð’Ñе още не Ñа качени вÑички прикачени файлове. ÐœÐ¾Ð»Ñ Ð¸Ð·Ñ‡Ð°ÐºÐ°Ð¹Ñ‚Ðµ или откажете качването.';
@@ -172,5 +173,4 @@ $messages['parentnotwritable'] = 'ÐеуÑпешно Ñъздаването/пр
$messages['messagetoobig'] = 'ПиÑмото е прекалено голÑмо, за да бъде обработено.';
$messages['attachmentvalidationerror'] = 'Ð’ÐИМÐÐИЕ! ПрикачениÑÑ‚ файл е опаÑен, защото типът му не Ñъвпада Ñ Ñ‚Ð¾Ð·Ð¸, който е деклариран в пиÑмото.<br/><br/><em>Очакван тип: $expected; открит тип: $detected</em>';
$messages['noscriptwarning'] = 'Ð’ÐИМÐÐИЕ! Тази пощенÑка уÑлуга изиÑква JavaScript за да функционира коректно. ÐœÐ¾Ð»Ñ Ð²ÐºÐ»ÑŽÑ‡ÐµÑ‚Ðµ поддръжката на JavaScript в наÑтройките на Ñ‚ÐµÐºÑƒÑ‰Ð¸Ñ Ð±Ñ€Ð°ÑƒÐ·ÑŠÑ€.';
-
?>
diff --git a/program/localization/bn_BD/labels.inc b/program/localization/bn_BD/labels.inc
index 1273ef192..c0b7ad3a7 100644
--- a/program/localization/bn_BD/labels.inc
+++ b/program/localization/bn_BD/labels.inc
@@ -15,66 +15,39 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'সà§à¦¬à¦¾à¦—তম';
$labels['username'] = 'গà§à¦°à¦¾à¦¹à¦• নাম (username)';
$labels['password'] = 'গোপোন শবà§à¦¦ (password)';
$labels['server'] = 'সারভার';
$labels['login'] = 'পà§à¦°à¦¬à§‡à¦¶';
-
-// taskbar
$labels['logout'] = 'পà§à¦°à¦¸à§à¦¥à¦¾à¦¨';
$labels['mail'] = 'ই-মেইল';
$labels['settings'] = 'বà§à¦¯à¦¾à¦•à§à¦¤à¦¿à¦—ত খà§à¦Ÿà¦¿à¦¨à¦¾à¦Ÿà¦¿';
$labels['addressbook'] = 'ঠিকানার বই';
-
-// mailbox names
$labels['inbox'] = 'পà§à¦°à¦§à¦¾à¦¨ বাকà§à¦¸';
$labels['drafts'] = 'খসড়া';
$labels['sent'] = 'পà§à¦°à§‡à¦°à¦¿à¦¤(পাঠানো মেইল)';
$labels['trash'] = 'ডাসà§à¦Ÿà¦¬à¦¿à¦¨';
$labels['junk'] = 'আজেবাজে মেইল';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'বিষয়';
$labels['from'] = 'পà§à¦°à§‡à¦°à¦•';
-$labels['sender'] = 'Sender';
$labels['to'] = 'পà§à¦°à¦¾à¦ªà¦•';
$labels['cc'] = 'অনà§à¦²à¦¿à¦ªà¦¿à¦° ঠিকানা';
$labels['bcc'] = 'নাজানিয়ে অনà§à¦²à¦¿à¦ªà¦¿à¦° ঠিকানা';
$labels['replyto'] = 'উতà§à¦¤à¦° পাঠানোর ঠিকানা';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'তারিখ';
$labels['size'] = 'সাইজ';
$labels['priority'] = 'গà§à¦°à§à¦¤à§à¦¬';
$labels['organization'] = 'কোমà§à¦ªà¦¾à¦¨à¦¿';
-$labels['readstatus'] = 'Read status';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸';
$labels['messagesfromto'] = '$count মেইলের মধà§à¦¯à§‡, $from হতে $to দেখানো হচà§à¦›à§‡';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = '$nr #মেইল/চিঠি , $count à¦à¦° মধà§à¦¯à§‡';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'অনà§à¦²à¦¿à¦ªà¦¿à¦° ঠিকানা';
-$labels['move'] = 'Move';
$labels['moveto'] = 'সরিয়ে ফেলà§à¦¨..';
$labels['download'] = 'ডাউনলোড';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'ফাইলের নাম';
$labels['filesize'] = 'ফাইলের সাইজ';
-
$labels['addtoaddressbook'] = 'ঠিকানার বইতে ঢà§à¦•à¦¾à¦¨';
-
-// weekdays short
$labels['sun'] = 'রবি';
$labels['mon'] = 'সোম';
$labels['tue'] = 'মঙà§à¦—ল';
@@ -82,8 +55,6 @@ $labels['wed'] = 'বà§à¦§';
$labels['thu'] = 'বৃহ:';
$labels['fri'] = 'শà§à¦•à§à¦°';
$labels['sat'] = 'শনি';
-
-// weekdays long
$labels['sunday'] = 'রবিবার';
$labels['monday'] = 'সোমবার';
$labels['tuesday'] = 'মঙà§à¦—লবার';
@@ -91,8 +62,6 @@ $labels['wednesday'] = 'বà§à¦§à¦¬à¦¾à¦°';
$labels['thursday'] = 'বৃহসà§à¦ªà¦¤à¦¿à¦¬à¦¾à¦°';
$labels['friday'] = 'শà§à¦•à§à¦°à¦¬à¦¾à¦°';
$labels['saturday'] = 'শনিবার';
-
-// months short
$labels['jan'] = 'জানà§à§Ÿà¦¾à¦°à¦¿';
$labels['feb'] = 'ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿';
$labels['mar'] = 'মারà§à¦š';
@@ -105,8 +74,6 @@ $labels['sep'] = 'সেপà§à¦¤à§‡à¦®à¦¬à¦¾à¦°';
$labels['oct'] = 'অষà§à¦Ÿà¦¬à¦¾à¦°';
$labels['nov'] = 'নবেমবার';
$labels['dec'] = 'দিশেমবার';
-
-// months long
$labels['longjan'] = 'জানà§à§Ÿà¦¾à¦°à¦¿';
$labels['longfeb'] = 'ফেবà§à¦°à§à§Ÿà¦¾à¦°à¦¿';
$labels['longmar'] = 'মারà§à¦š';
@@ -119,22 +86,12 @@ $labels['longsep'] = 'সেপà§à¦¤à§‡à¦®à¦¬à¦¾à¦° (September)';
$labels['longoct'] = 'অষà§à¦Ÿà¦¬à¦¾à¦° (October)';
$labels['longnov'] = 'নবেমবার (November)';
$labels['longdec'] = 'দিশেমবার (December)';
-
$labels['today'] = 'আজকে';
-
-// toolbar buttons
-$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'দেখà§à¦¨ নতà§à¦¨ কোনো মেইল/চিঠি à¦à¦²à§‹ কিনা';
$labels['compose'] = 'নতà§à¦¨ মেইল/চিঠি লিখà§à¦¨';
$labels['writenewmessage'] = 'নতà§à¦¨ মেইল/চিঠি লিখà§à¦¨';
-$labels['reply'] = 'Reply';
$labels['replytomessage'] = 'শà§à¦§à§ পà§à¦°à§‡à¦°à¦•à§‡à¦° কাছে উতà§à¦¤à¦° পাঠান';
$labels['replytoallmessage'] = 'পà§à¦°à§‡à¦°à¦• ও à¦à¦‡ চিঠির অনà§à¦¯à¦¾à¦¨à§à¦¯ পà§à¦°à¦¾à¦ªà¦•à¦¦à§‡à¦° কাছে উতà§à¦¤à¦° পাঠান';
-$labels['replyall'] = 'Reply all';
-$labels['replylist'] = 'Reply list';
-$labels['forward'] = 'Forward';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'মেইল/চিঠি à¦à¦—িয়ে দিন';
$labels['deletemessage'] = 'মেইল/চিঠি ছিড়ে ফেলà§à¦¨';
$labels['movemessagetotrash'] = 'মেইল/চিঠি ডাসà§à¦Ÿà¦¬à¦¿à¦¨à§‡ ফেলà§à¦¨';
@@ -145,253 +102,98 @@ $labels['nextmessage'] = 'পরের মেইল/চিঠিটি দà
$labels['lastmessage'] = 'শেষ মেইল/চিঠিটি দেখà§à¦¨';
$labels['backtolist'] = 'মেইল/চিঠির তালিকায় ফিরে যান';
$labels['viewsource'] = 'মূল উৎসদেখà§à¦¨';
-$labels['mark'] = 'Mark';
$labels['markmessages'] = 'মেইল/চিঠি (গà§à¦²à§‹)';
$labels['markread'] = 'পড়া শেষ (read)';
$labels['markunread'] = 'নাদেখা (unread)';
$labels['markflagged'] = 'দাগানো (flagged)';
$labels['markunflagged'] = 'দাগহীন (unflagged)';
-$labels['moreactions'] = 'More actions...';
-$labels['more'] = 'More';
-$labels['back'] = 'Back';
-$labels['options'] = 'Options';
-
$labels['select'] = 'বেছেনিন';
$labels['all'] = 'সবগà§à¦²à§‹';
$labels['none'] = 'কোনোটাই না';
-$labels['currpage'] = 'Current page';
$labels['unread'] = 'নাদেখা (unread)';
$labels['flagged'] = 'দাগানো (flagged)';
$labels['unanswered'] = 'উতà§à¦¤à¦° না দেওয়া গà§à¦²à§‹';
-$labels['withattachment'] = 'With attachment';
-$labels['deleted'] = 'Deleted';
-$labels['undeleted'] = 'Not deleted';
-$labels['invert'] = 'Invert';
$labels['filter'] = 'ছাকনি';
-$labels['list'] = 'List';
-$labels['threads'] = 'Threads';
-$labels['expand-all'] = 'Expand All';
-$labels['expand-unread'] = 'Expand Unread';
-$labels['collapse-all'] = 'Collapse All';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
-$labels['fromto'] = 'From/To';
-$labels['flag'] = 'Flag';
-$labels['attachment'] = 'Attachment';
$labels['nonesort'] = 'কোনোটাই না';
-$labels['sentdate'] = 'Sent date';
-$labels['arrival'] = 'Arrival date';
-$labels['asc'] = 'ascending';
-$labels['desc'] = 'descending';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'টাইটকরà§à¦¨';
$labels['empty'] = 'খালিকরà§à¦¨';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'ডিসà§à¦• ঠখালি যায়গা';
$labels['unknown'] = 'অজানা';
$labels['unlimited'] = 'সীমাহীন';
-
$labels['quicksearch'] = 'à¦à¦Ÿà¦•à¦°à§‡ খোজা';
$labels['resetsearch'] = 'নতà§à¦¨à¦•à¦°à§‡ খà§à¦œà§à¦¨';
-$labels['searchmod'] = 'Search modifiers';
-$labels['msgtext'] = 'Entire message';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'নতà§à¦¨ উইনà§à¦¡à§‹ তে দেখà§à¦¨';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
-$labels['editasnew'] = 'Edit as new';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'à¦à¦–à§à¦¨à¦¿ মেইল / চিঠিটি পাঠান';
$labels['savemessage'] = 'খসড়া হিসাবে জমা করে রাখà§à¦¨';
$labels['addattachment'] = 'à¦à¦•à¦Ÿà¦¾ ফাইল জà§à§œà§‡ দিন চিঠির সাথে';
$labels['charset'] = 'Charset';
$labels['editortype'] = 'Editor type';
$labels['returnreceipt'] = 'ফিরতি রসিদ';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'Check spelling';
$labels['resumeediting'] = 'Resume editing';
$labels['revertto'] = 'Revert to';
-
-$labels['attach'] = 'Attach';
$labels['attachments'] = 'জà§à§œà§‡ দেওয়া ফাইল (Attachments)';
$labels['upload'] = 'উঠায় দেন';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'বনà§à¦§ করà§à¦¨';
-$labels['messageoptions'] = 'Message options...';
-
$labels['low'] = 'Low';
$labels['lowest'] = 'Lowest';
$labels['normal'] = 'Normal';
$labels['high'] = 'High';
$labels['highest'] = 'Highest';
-
$labels['nosubject'] = '(বিষয়হীন)';
$labels['showimages'] = 'ছবি দেখান';
$labels['alwaysshow'] = 'সবসময় $sender à¦à¦° কাছে থেকে পাওয়া ছবিগà§à¦²à§‹ দেখানো হোক';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'খালি লেখা দেখà§à¦¨';
$labels['savesentmessagein'] = 'পাঠানো চিঠি/মেইল জমা করà§à¦¨ >>';
$labels['dontsave'] = 'জমিয়ে রাখা লাগবে না';
$labels['maxuploadsize'] = 'ফাইল উঠানোর সরà§à¦¬à§‹à¦šà§à¦š সাইজ $size';
-
$labels['addcc'] = 'অনà§à¦²à¦¿à¦ªà¦¿à¦° ঠিকানা ঢà§à¦•à¦¾à¦¨';
$labels['addbcc'] = 'নাজানিয়ে অনà§à¦²à¦¿à¦ªà¦¿à¦° ঠিকানা ঢà§à¦•à¦¾à¦¨';
$labels['addreplyto'] = 'উতà§à¦¤à¦° পাঠানোর ঠিকানা ঢà§à¦•à¦¾à¦¨';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'পà§à¦°à¦¾à¦ªà¦• আপনার কাছে মেইল/চিঠিটা যে পেয়েছেন তার ফিরতি রসিদ চেয়েছেন। আপনি কি ফিরতি রসিদ টা পাঠাবেন?';
$labels['receiptread'] = 'মেইল/চিঠি যে পেয়েছেন তার ফিরতি রসিদ';
$labels['yourmessage'] = 'নিচে রয়েছে আপনার চিঠিটা যে পà§à¦°à¦¾à¦ªà¦• পেয়েছেন তার রসিদ';
$labels['receiptnote'] = 'à¦à¦‡ রসিদ খালি à¦à¦¤à¦Ÿà§à¦•à§ পà§à¦°à¦®à¦¾à¦¨ করে যে পà§à¦°à¦¾à¦ªà¦• চিঠিটি পেয়েছেন। কিনà§à¦¤à§ তিনি ঠিকমতো পড়তে পেরেছেন কিনা অথবা তিনি পড়ে বà§à¦à¦¤à§‡ পেরেছেন কিনা তার কোনো পà§à¦°à¦®à¦¾à¦¨ নেই।';
-
-// address boook
$labels['name'] = 'নাম';
$labels['firstname'] = 'নামের পà§à¦°à¦¥à¦®à¦¾à¦‚শ';
$labels['surname'] = 'নামের শেষাংশ';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'ই-মেইল/চিঠি';
-$labels['phone'] = 'Phone';
-$labels['address'] = 'Address';
-$labels['street'] = 'Street';
-$labels['locality'] = 'City';
-$labels['zipcode'] = 'ZIP Code';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
-$labels['typemobile'] = 'Mobile';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'নতà§à¦¨ ঠিকানা ঢà§à¦•à¦¾à¦¨';
$labels['editcontact'] = 'à¦à¦•à¦Ÿà¦¾ ঠিকানা বদলান';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
-$labels['personalinfo'] = 'Personal information';
-
$labels['edit'] = 'বদলান';
$labels['cancel'] = 'বাতিল';
$labels['save'] = 'জমা দিন';
$labels['delete'] = 'ফেলে দিন';
-$labels['rename'] = 'Rename';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'à¦à¦•à¦Ÿà¦¾ নতà§à¦¨ ঠিকানার কারà§à¦¡ বানান';
$labels['deletecontact'] = 'বেছে নেওয়া ঠিকানা গà§à¦²à§‹ ফেলে দিন';
$labels['composeto'] = 'চিঠি পাঠাবেন কার কাছে?';
$labels['contactsfromto'] = '$count ঠিকানার মধà§à¦¯à§‡ $from থেকে $to টা';
$labels['print'] = 'পà§à¦°à¦¿à¦¨à§à¦Ÿ করà§à¦¨';
$labels['export'] = 'রপà§à¦¤à¦¾à¦¨à¦¿ করà§à¦¨';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'রপà§à¦¤à¦¾à¦¨à¦¿ করà§à¦¨ vCard আকারে';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'আগের গà§à¦²à§‹ দেখান';
$labels['firstpage'] = 'পà§à¦°à¦¥à¦® গà§à¦²à§‹ দেখান';
$labels['nextpage'] = 'পরের গà§à¦²à§‹ দেখান';
$labels['lastpage'] = 'শেষের গà§à¦²à§‹ দেখান';
-
-$labels['group'] = 'Group';
$labels['groups'] = 'গà§à¦°à§à¦ª';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'নিজের ঠিকানা';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
$labels['import'] = 'আমদানি করà§à¦¨';
$labels['importcontacts'] = 'ঠিকানা আমদানি করà§à¦¨';
$labels['importfromfile'] = 'ফাইলের থেকে ঠিকানা আমদানি করà§à¦¨';
-$labels['importtarget'] = 'Add new contacts to address book:';
$labels['importreplace'] = 'পà§à¦°à§‹ ঠিকানার বইটি খালি করে নতà§à¦¨ ঠিকানা গà§à¦²à§‹ ভরà§à¦¨';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'শেষ';
-
-// settings
$labels['settingsfor'] = 'খà§à¦Ÿà¦¿à¦¨à¦¾à¦Ÿà¦¿';
-$labels['about'] = 'About';
$labels['preferences'] = 'পছনà§à¦¦';
$labels['userpreferences'] = 'গà§à¦°à¦¾à¦¹à¦• পছনà§à¦¦';
$labels['editpreferences'] = 'গà§à¦°à¦¾à¦¹à¦• পছনà§à¦¦ বদলান';
-
$labels['identities'] = 'পরিচিতি';
$labels['manageidentities'] = 'à¦à¦‡ অà§à¦¯à¦¾à¦•à¦‰à¦¨à§à¦Ÿà§‡à¦° "পরচিতি" বদলান';
$labels['newidentity'] = 'নতà§à¦¨ পরিচিতি';
-
$labels['newitem'] = 'নতà§à¦¨ জিনিষ';
$labels['edititem'] = 'জিনিষ বদলান';
-
$labels['preferhtml'] = 'HTML ঠদেখি';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'HTML মেইল/চিঠি';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'তারিখ ভালো করে দেখা যাবে';
$labels['setdefault'] = 'à¦à¦‡à¦Ÿà¦¾à¦‡ আসল';
$labels['autodetect'] = 'কমà§à¦ªà§à¦Ÿà¦¾à¦° নিজেনিজি বেছে নেবে';
@@ -400,13 +202,8 @@ $labels['timezone'] = 'সময়ভিতà§à¦¤à¦¿à¦• à¦à¦²à¦¾à¦•à¦¾';
$labels['pagesize'] = 'পà§à¦°à¦¤à¦¿ পৃষà§à¦ à¦¾à§Ÿ লাইন সংখà§à¦¯à¦¾';
$labels['signature'] = 'সà§à¦¬à¦¾à¦•à§à¦·à¦°';
$labels['dstactive'] = 'Daylight saving time';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'HTML ঠমেইল/চিঠি লিখà§à¦¨';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'HTML ঠসà§à¦¬à¦¾à¦•à§à¦·à¦°';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'ছোটোকরে দেখার জায়গা';
$labels['skin'] = 'মেইলবকà§à¦¸ à¦à¦° পà§à¦°à§‹à¦Ÿà¦¾à¦° চেহারা';
$labels['logoutclear'] = 'বেরহবার সময় ডাসà§à¦Ÿà¦¬à¦¿à¦¨ অটোমেটিক খালি হবে';
@@ -417,70 +214,26 @@ $labels['mailboxview'] = 'মেইলবকà§à¦¸ দেখার কায়দà
$labels['mdnrequests'] = 'পà§à¦°à§‡à¦°à¦• নোটিশ পাঠালে কি করা হবে?';
$labels['askuser'] = 'আমি গà§à¦°à¦¾à¦¹à¦•, আমাকে জিজà§à¦žà¦¾à¦¸à¦¾ করà§à¦¨';
$labels['autosend'] = 'কমà§à¦ªà§à¦Ÿà¦¾à¦° নিজেনিজি ফিরতি নোটিশ পাঠায় দেবে';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['ignore'] = 'পাতà§à¦¤à¦¾ দেওয়া হবেনা';
$labels['readwhendeleted'] = 'ফেলে দেবার সময় মেইল/চিঠি পড়া হয়ে গেছে হিসাবে ধরে নেওয়া হবে';
$labels['flagfordeletion'] = 'à¦à¦•à§‡à¦¬à¦¾à¦°à§‡à¦‡ ফেলে না দিয়ে মেইল/চিঠি গà§à¦²à§‹à¦•à§‡ দাগিয়ে রাখà§à¦¨ ফেলে দেবার জনà§à¦¯à§‡';
$labels['skipdeleted'] = 'ফেলে দেওয়া মেইল/চিঠি দেখানোর দরকার নেই';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
$labels['showremoteimages'] = 'মেইলে অনà§à¦¯ ওয়েবসাইট থেকে আসা ছবি থাকলে তা দেখা যাবে';
$labels['fromknownsenders'] = 'পরিচিত পà§à¦°à§‡à¦°à¦• à¦à¦° কà§à¦·à§‡à¦¤à§à¦°à§‡';
$labels['always'] = 'সবসময়';
$labels['showinlineimages'] = 'মেইলের সাথে জোড়া লাগানো ছবি, মেইলের নিচে দেখা যাবে';
$labels['autosavedraft'] = 'নিজেনিজি খসড়া জমা হয়ে যাবে';
$labels['everynminutes'] = 'পà§à¦°à¦¤à¦¿ $n মিনিটে';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'কখোনোই না';
-$labels['immediately'] = 'immediately';
$labels['messagesdisplaying'] = 'মেইল/চিঠি দেখা যাচà§à¦›à§‡';
$labels['messagescomposition'] = 'মেইল/চিঠি লেখা হচà§à¦›à§‡';
$labels['mimeparamfolding'] = 'জà§à§œà§‡ দেওয়া জিনিষের নাম';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (other)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
$labels['advancedoptions'] = 'জটিল বিষয়';
$labels['focusonnewmessage'] = 'নতà§à¦¨ মেইল à¦à¦²à§‡à¦‡ তা হাইলাইট হয়ে যাবে';
$labels['checkallfolders'] = 'সবগà§à¦²à§‹ মেইলবকà§à¦¸à§‡ নতà§à¦¨ চিঠি খোজা হবে';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
-$labels['section'] = 'Section';
-$labels['maintenance'] = 'Maintenance';
-$labels['newmessage'] = 'New Message';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
-$labels['autoaddsignature'] = 'Automatically add signature';
-$labels['newmessageonly'] = 'new message only';
-$labels['replyandforwardonly'] = 'replies and forwards only';
-$labels['insertsignature'] = 'Insert signature';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸';
$labels['folders'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸';
$labels['foldername'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ à¦à¦° নাম';
@@ -490,54 +243,11 @@ $labels['create'] = 'পà§à¦°à¦¸à§à¦¤à§à¦¤ করà§à¦¨';
$labels['createfolder'] = 'নতà§à¦¨ ফোলà§à¦¡à¦¾à¦° / মেইলবকà§à¦¸ পà§à¦°à¦¸à§à¦¤à§à¦¤ করà§à¦¨';
$labels['managefolders'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ গà§à¦²à§‹ কে গà§à¦›à¦¾à¦¨';
$labels['specialfolders'] = 'বিশেষ ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'সাজান';
$labels['sortasc'] = 'কম থেকে বেশি হিসাবে সাজান';
$labels['sortdesc'] = 'বেশি থেকে কম হিসাবে সাজান';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
$labels['B'] = 'বাইট';
$labels['KB'] = 'কিলোবাইট';
$labels['MB'] = 'মেগাবাইট';
$labels['GB'] = 'গিগাবাইট';
-
-// character sets
-$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/bn_BD/messages.inc b/program/localization/bn_BD/messages.inc
index 9de6c38de..ac744edee 100644
--- a/program/localization/bn_BD/messages.inc
+++ b/program/localization/bn_BD/messages.inc
@@ -15,30 +15,14 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'ঢোকা গেল না';
$messages['cookiesdisabled'] = 'আপনার বà§à¦°à¦¾à¦‰à¦œà¦¾à¦°, কà§à¦•à¦¿ গà§à¦°à¦¹à¦¨ করে না';
$messages['sessionerror'] = 'আপনার সেশন শেষ';
$messages['storageerror'] = 'মেইল সারভার à¦à¦° সাথে যোগাযোগ করা গেল না';
-$messages['servererror'] = 'Server Error!';
-$messages['servererrormsg'] = 'Server Error: $msg';
-$messages['dberror'] = 'Database Error!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Invalid request! No data was saved.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'à¦à¦‡ মেইলবকà§à¦¸à§‡ কোনো চিঠি নাই';
$messages['loggedout'] = 'আপনের সেশন ঠিকঠাক মতো শেষ হইছে। শà§à¦­à¦¬à¦¿à¦¦à¦¾à§Ÿà¥¤';
$messages['mailboxempty'] = 'মেইলবকà§à¦¸ খালি';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'কমà§à¦ªà§à¦Ÿà¦¾à¦° কাজ করতেছে . .';
-$messages['uploading'] = 'Uploading file...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'কমà§à¦ªà§à¦Ÿà¦¾à¦° তথà§à¦¯ আনছে আপনার জনà§à¦¯..';
$messages['checkingmail'] = 'নতà§à¦¨ চিঠি আসছে কিনা তা দেখা হচà§à¦›à§‡';
$messages['sendingmessage'] = 'চিঠি পাঠায় দেওয়া হচà§à¦›à§‡';
@@ -48,31 +32,20 @@ $messages['messagesaved'] = 'চিঠি খসড়া হিসাবে জম
$messages['successfullysaved'] = 'ঠিকঠাকমতো জমা হয়ে গিয়েছে';
$messages['addedsuccessfully'] = 'নতà§à¦¨ ঠিকানা ঠিকঠাক মতো ঢোকানো হয়ে গেছে';
$messages['contactexists'] = 'à¦à¦•à¦‡ ই-মেইল ঠআরেকটা নাম ঠিকানা তালিকায় আছে';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'আপনার গোপনীয়তা রকà§à¦·à¦¾à¦° জনà§à¦¯ আমরা ছবি গà§à¦²à§‹ সরিয়ে রেখেছি';
$messages['encryptedmessage'] = 'à¦à¦Ÿà¦¾ à¦à¦•à¦Ÿà¦¿ গোপন (encrypted) চিঠি। à¦à¦Ÿà¦¾ আপনাকে দেখানো যাবে না। দà§à§à¦ƒà¦–িত।';
$messages['nocontactsfound'] = 'কোনো ঠিকানা পাওয়া গেলনা। দà§à§à¦ƒà¦–িত।';
$messages['contactnotfound'] = 'আপনি যে ঠিকানা খà§à¦œà¦›à§‡à¦¨ সেটা পাওয়া গেল না';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'চিঠি পাঠানো গেলনা';
$messages['senttooquickly'] = 'à¦à¦‡ চিঠি পাঠানোর আগে, দয়া করে $sec সেকেনà§à¦¡';
-$messages['errorsavingsent'] = 'পà§à¦°à§‡à¦°à¦¿à¦¤ চিঠি হিসাবে জমা রাখার সময় à¦à¦•à¦Ÿà¦¾ à¦à¦¾à¦®à§‡à¦²à¦¾ হয়েছে';
-$messages['errorsaving'] = 'জমা করার সময় à¦à¦•à¦Ÿà¦¾ à¦à¦¾à¦®à§‡à¦²à¦¾ হয়েছে';
$messages['errormoving'] = 'চিঠিটা সরানো গেলো না';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'চিঠিটা ফেলানো গেলো না';
-$messages['errormarking'] = 'Could not mark the message(s).';
$messages['deletecontactconfirm'] = 'আপনি কি আসলেই à¦à¦‡ ঠিকানা(গà§à¦²à§‹) ফেলো দিতে চান?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'আপনি কি আসলেই à¦à¦‡ চিঠি(গà§à¦²à§‹) ফেলো দিতে চান?';
$messages['deletefolderconfirm'] = 'আপনি কি আসলেই à¦à¦‡ ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ ফেলো দিতে চান?';
$messages['purgefolderconfirm'] = 'আপনি কি আসলেই à¦à¦‡ ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ à¦à¦° সব চিঠি ফেলো দিতে চান?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
$messages['folderdeleting'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ ফেলে দেওয়া হচà§à¦›à§‡';
$messages['foldermoving'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ সরানো হচà§à¦›à§‡';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'আপনি সবগà§à¦²à§‹ জিনিষ লেখেননি';
$messages['noemailwarning'] = 'à¦à¦•à¦Ÿà¦¿ সঠিক ই-মেইল লিখà§à¦¨';
$messages['nonamewarning'] = 'দয়া করে নামটি লিখà§à¦¨';
@@ -84,93 +57,29 @@ $messages['nobodywarning'] = 'কোনো কিছৠনা লিখেই à
$messages['notsentwarning'] = 'চিঠি পাঠানো হয়নি। চিঠিটা কি বাতিল করে দেবেন?';
$messages['noldapserver'] = 'দয়া করে à¦à¦•à¦Ÿà¦¿ à¦à¦²à§à¦¡à¦¾à¦ª সারভার বেছে নিন সারà§à¦š করার জনà§à¦¯à§‡';
$messages['nosearchname'] = 'দয়া করে à¦à¦•à¦œà¦¨à§‡à¦° নাম অথবা ই-মেইল লিখà§à¦¨';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = '$nr টা চিঠি পাওয়া গেছে';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'খà§à¦œà§‡ কিছৠপাওয়া গেলোনা';
$messages['searching'] = 'খà§à¦œà¦›à¦¿ ....';
$messages['checking'] = 'দেখছি ...';
$messages['nospellerrors'] = 'No spelling errors found';
$messages['folderdeleted'] = 'ফোলà§à¦¡à¦¾à¦°/মেইলবকà§à¦¸ ঠিকঠাকমতো ফেলানো হয়ে গেছে';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'ঠিকঠাকমতো ফেলানো হয়ে গেছে';
$messages['converting'] = 'বিনà§à¦¯à¦¾à¦¸ (formatting) সরানো হচà§à¦›à§‡ ..';
$messages['messageopenerror'] = 'সারভার থেকে চিঠি আনা গেলোনা';
$messages['fileuploaderror'] = 'ফাইলটা সারভারে উঠানো গেলোনা';
$messages['filesizeerror'] = 'যে ফাইলটা উঠানোর চেষà§à¦Ÿà¦¾ করলেন সেটি সরà§à¦¬à§‹à¦šà§à¦š সাইজ $size à¦à¦° থেকে বেশি';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'à¦à¦‡à¦ à¦¿à¦•à¦¾à¦¨à¦¾à¦Ÿà¦¾ খালি পড়ার জনà§à¦¯à§‡';
$messages['errorsavingcontact'] = 'ঠিকানা জমা রাখা গেলোনা';
$messages['movingmessage'] = 'চিঠি সরানো হচà§à¦›à§‡..';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'ঠিকঠাক মতো ফিরতি রশিদ পাঠানো হয়েছে';
$messages['errorsendingreceipt'] = 'রশিদ পাঠানো গেলোনা';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'আপনি à¦à¦‡ পরিচিতি ফেলতে পারবেন না কারন à¦à¦‡à¦Ÿà¦¾à§Ÿ বরà§à¦¤à¦®à¦¾à¦¨à§‡ আপনার à¦à¦•à¦®à¦¾à¦¤à§à¦° পরিচিতি।';
$messages['forbiddencharacter'] = 'ফোলà§à¦¡à¦¾à¦° à¦à¦° নামের মধà§à¦¯à§‡ নিষিদà§à¦§ অকà§à¦·à¦° আছে';
$messages['selectimportfile'] = 'à¦à¦•à¦Ÿà¦¾ ফাইল বেছে নিন তোলার জনà§à¦¯';
$messages['addresswriterror'] = 'বেছে নেওয়া ঠিকানার বইটিতে লেখাযায় না';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'আমদানি করা হচà§à¦›à§‡à¥¤ à¦à¦•à¦Ÿà§ অপেকà§à¦·à¦¾ করà§à¦¨...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
$messages['importconfirm'] = '<b>ঠিকমতো $inserted ঠিকানা আমদানি করা গেছে, $skipped ঠিকানা আগের থেকেই ছিলো বলে তাদের টা যা ছিলো তাই রাখা হয়েছে</b>:<p><em>$names</em></p>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'à¦à¦‡ কাজটা করার অনà§à¦®à¦¤à¦¿ নাই আপনার';
$messages['nofromaddress'] = 'বেছে নেওয়া যে পরিচিতিটা, তাতে ই-মেইল নেই';
$messages['editorwarning'] = 'যদি আপনি শà§à¦§à§ লেখার সà§à¦Ÿà¦¾à¦‡à¦²à§‡ যান তাহলে বরà§à¦¤à¦®à¦¾à¦¨à§‡à¦° কোনো বিনà§à¦¯à¦¾à¦¸ হারিয়ে যাবে';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/br/labels.inc b/program/localization/br/labels.inc
index c88fd92a6..d503d1f4c 100644
--- a/program/localization/br/labels.inc
+++ b/program/localization/br/labels.inc
@@ -15,66 +15,46 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Degemer mat war $product';
$labels['username'] = 'Anv an arveriad';
$labels['password'] = 'Ger-Tremen';
$labels['server'] = 'Dafariad';
$labels['login'] = 'Kennaskañ';
-
-// taskbar
$labels['logout'] = 'Digennaskañ';
$labels['mail'] = 'Postel elektronek';
$labels['settings'] = 'Arventennoù';
$labels['addressbook'] = 'Karned chomlec\'hioù';
-
-// mailbox names
$labels['inbox'] = 'Boest degemer';
$labels['drafts'] = 'Brouilhedoù';
$labels['sent'] = 'Kaset';
$labels['trash'] = 'Pod-lastez';
$labels['junk'] = 'Stroboù';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Sujed';
$labels['from'] = 'Eus';
-$labels['sender'] = 'Sender';
$labels['to'] = 'Da';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Cci';
$labels['replyto'] = 'Respont-da';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Deiz';
$labels['size'] = 'Ment';
$labels['priority'] = 'Kentwir';
$labels['organization'] = 'Aozadur';
$labels['readstatus'] = 'Stad al lenn';
$labels['listoptions'] = 'Dibarzhioù ar roll...';
-
$labels['mailboxlist'] = 'Teuliadoù';
$labels['messagesfromto'] = 'Kemennadoù eus $from da $to war $count';
$labels['threadsfromto'] = 'Sujedoù $from da $to war $count';
$labels['messagenrof'] = 'Kemennad $nr war $count';
$labels['fromtoshort'] = '$from - $to war $count';
-
$labels['copy'] = 'Eilañ';
$labels['move'] = 'Dilec\'hiañ';
$labels['moveto'] = 'Dilec\'hiañ da...';
$labels['download'] = 'Pellgargañ';
-$labels['open'] = 'Open';
$labels['showattachment'] = 'Diskouez';
$labels['showanyway'] = 'Diskouez anezhañ memestra';
-
$labels['filename'] = 'Anv ar restr';
$labels['filesize'] = 'Ment ar restr';
-
$labels['addtoaddressbook'] = 'Ouzhpennañ er c\'harned chomlec\'hioù';
-
-// weekdays short
$labels['sun'] = 'Sul';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Meu';
@@ -82,8 +62,6 @@ $labels['wed'] = 'Mer';
$labels['thu'] = 'Yao';
$labels['fri'] = 'Gwe';
$labels['sat'] = 'Sad';
-
-// weekdays long
$labels['sunday'] = 'Sul';
$labels['monday'] = 'Lun';
$labels['tuesday'] = 'Meurzh';
@@ -91,8 +69,6 @@ $labels['wednesday'] = 'Merc\'her';
$labels['thursday'] = 'Yaou';
$labels['friday'] = 'Gwener';
$labels['saturday'] = 'Sadorn';
-
-// months short
$labels['jan'] = 'Gen';
$labels['feb'] = 'C\'hwe';
$labels['mar'] = 'Meu';
@@ -105,8 +81,6 @@ $labels['sep'] = 'Gwe';
$labels['oct'] = 'Her';
$labels['nov'] = 'Du';
$labels['dec'] = 'Ker';
-
-// months long
$labels['longjan'] = 'Genver';
$labels['longfeb'] = 'C\'hwevrer';
$labels['longmar'] = 'Meurzh';
@@ -119,10 +93,7 @@ $labels['longsep'] = 'Gwengolo';
$labels['longoct'] = 'Here';
$labels['longnov'] = 'Du';
$labels['longdec'] = 'Kerzu';
-
$labels['today'] = 'Hiziv';
-
-// toolbar buttons
$labels['refresh'] = 'Azgrenaat';
$labels['checkmail'] = 'Gwiriañ kemennadoù nevez';
$labels['compose'] = 'Skrivañ ur c\'hemennad nevez';
@@ -132,12 +103,8 @@ $labels['replytomessage'] = 'Respont d\'ar kaser';
$labels['replytoallmessage'] = 'Respont d\'an holl';
$labels['replyall'] = 'Respont d\'an holl';
$labels['replylist'] = 'Respont d\'ar roll';
-$labels['forward'] = 'Forward';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'Treuzkas ar c\'hemennad';
$labels['deletemessage'] = 'Dilec\'hiañ ar c\'hemennad er pod-lastez';
-$labels['movemessagetotrash'] = 'Move message to trash';
$labels['printmessage'] = 'Moulañ ar c\'hemennad-se';
$labels['previousmessage'] = 'Gwelout ar c"hemennad a-raok';
$labels['firstmessage'] = 'Gwelout ar c\'hemennad kentañ';
@@ -145,399 +112,93 @@ $labels['nextmessage'] = 'Gwelout ar c\'hemennad da heul';
$labels['lastmessage'] = 'Gwelout ar c\'hemennad diwezhañ';
$labels['backtolist'] = 'Distreiñ el listenn kemennadoù';
$labels['viewsource'] = 'Gwelout an tarzh';
-$labels['mark'] = 'Mark';
-$labels['markmessages'] = 'Mark messages';
-$labels['markread'] = 'As read';
-$labels['markunread'] = 'As unread';
-$labels['markflagged'] = 'As flagged';
-$labels['markunflagged'] = 'As unflagged';
-$labels['moreactions'] = 'More actions...';
-$labels['more'] = 'More';
-$labels['back'] = 'Back';
-$labels['options'] = 'Options';
-
$labels['select'] = 'Diuzañ';
$labels['all'] = 'An holl';
$labels['none'] = 'Ebet';
-$labels['currpage'] = 'Current page';
$labels['unread'] = 'Na lennet';
-$labels['flagged'] = 'Flagged';
-$labels['unanswered'] = 'Unanswered';
-$labels['withattachment'] = 'With attachment';
-$labels['deleted'] = 'Deleted';
-$labels['undeleted'] = 'Not deleted';
-$labels['invert'] = 'Invert';
-$labels['filter'] = 'Filter';
-$labels['list'] = 'List';
-$labels['threads'] = 'Threads';
-$labels['expand-all'] = 'Expand All';
-$labels['expand-unread'] = 'Expand Unread';
-$labels['collapse-all'] = 'Collapse All';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
-$labels['fromto'] = 'From/To';
-$labels['flag'] = 'Flag';
-$labels['attachment'] = 'Attachment';
$labels['nonesort'] = 'Ebet';
-$labels['sentdate'] = 'Sent date';
-$labels['arrival'] = 'Arrival date';
-$labels['asc'] = 'ascending';
-$labels['desc'] = 'descending';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'Stummaat';
$labels['empty'] = 'Skarzhañ';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Implijadur pladenn';
$labels['unknown'] = 'Dianav';
$labels['unlimited'] = 'didermen';
-
$labels['quicksearch'] = 'Klask prim';
$labels['resetsearch'] = 'Aderaouekaat ar glask';
-$labels['searchmod'] = 'Search modifiers';
-$labels['msgtext'] = 'Entire message';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
-$labels['openinextwin'] = 'Open in new window';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
-$labels['editasnew'] = 'Edit as new';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'Kas ar c\'hemennad diouzhtu';
$labels['savemessage'] = 'Gwarediñ ar brouilhed-se';
$labels['addattachment'] = 'Stagañ ur restr';
$labels['charset'] = 'Engodadur';
$labels['editortype'] = 'Furmad aozer';
$labels['returnreceipt'] = 'Testeni degemer';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'Gwiriañ ar reizhskrivadur';
$labels['resumeediting'] = 'Distreiñ en aozer';
$labels['revertto'] = 'Distreiñ en/r';
-
-$labels['attach'] = 'Attach';
$labels['attachments'] = 'Restroù staget';
$labels['upload'] = 'Stagañ';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'Serriñ';
-$labels['messageoptions'] = 'Message options...';
-
$labels['low'] = 'Izel';
$labels['lowest'] = 'An izelañ';
$labels['normal'] = 'Reizh';
$labels['high'] = 'Uhel';
$labels['highest'] = 'An uhelañ';
-
$labels['nosubject'] = '(n\'eus ket sujed)';
$labels['showimages'] = 'Diskouez ar skeudennoù';
-$labels['alwaysshow'] = 'Always show images from $sender';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'testenn kriz';
-$labels['savesentmessagein'] = 'Save sent message in';
-$labels['dontsave'] = 'don\'t save';
-$labels['maxuploadsize'] = 'Maximum allowed file size is $size';
-
-$labels['addcc'] = 'Add Cc';
-$labels['addbcc'] = 'Add Bcc';
-$labels['addreplyto'] = 'Add Reply-To';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
-$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
-$labels['receiptread'] = 'Return Receipt (read)';
-$labels['yourmessage'] = 'This is a Return Receipt for your message';
-$labels['receiptnote'] = 'Note: This receipt only acknowledges that the message was displayed on the recipient\'s computer. There is no guarantee that the recipient has read or understood the message contents.';
-
-// address boook
$labels['name'] = 'Anv da ziskouez';
$labels['firstname'] = 'Raganv';
$labels['surname'] = 'Anv';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'Postel elektronek';
-$labels['phone'] = 'Phone';
-$labels['address'] = 'Address';
-$labels['street'] = 'Street';
-$labels['locality'] = 'City';
-$labels['zipcode'] = 'ZIP Code';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
-$labels['typemobile'] = 'Mobile';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'Ouzhpennañ an darempred diuzet en hor c\'harned chomlec\'hioù';
$labels['editcontact'] = 'Cheñch an darempred';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
-$labels['personalinfo'] = 'Personal information';
-
$labels['edit'] = 'Cheñch';
$labels['cancel'] = 'Nullañ';
$labels['save'] = 'Gwarediñ';
$labels['delete'] = 'Dilemel';
-$labels['rename'] = 'Rename';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'Krouiñ un darempred nevez';
$labels['deletecontact'] = 'Dilemel an darempredoù diuzet';
$labels['composeto'] = 'Skrivañ ur c\'hemennad ouzh';
$labels['contactsfromto'] = 'Darempredoù eus $from ouzh $to war $count';
$labels['print'] = 'Moulañ';
$labels['export'] = 'Ezporzhiañ';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
-$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'Diskouez pajenn a-raok';
$labels['firstpage'] = 'Gwelout ar bajenn gentañ';
$labels['nextpage'] = 'Diskouez pajenn da heul';
$labels['lastpage'] = 'Gwelout ar bajenn diwezhañ';
-
-$labels['group'] = 'Group';
$labels['groups'] = 'Strolladoù';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Chomlec\'h personel';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
-$labels['import'] = 'Import';
-$labels['importcontacts'] = 'Import contacts';
-$labels['importfromfile'] = 'Import from file:';
-$labels['importtarget'] = 'Add new contacts to address book:';
-$labels['importreplace'] = 'Replace the entire address book';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
-$labels['done'] = 'Done';
-
-// settings
$labels['settingsfor'] = 'Arventennoù evit';
-$labels['about'] = 'About';
$labels['preferences'] = 'Dibarzhioù';
$labels['userpreferences'] = 'Dibarzhioù implijer';
$labels['editpreferences'] = 'Cheñch dibarzhioù implijer';
-
$labels['identities'] = 'Identelezhioù';
$labels['manageidentities'] = 'Merañ an identelezhioù evit ar c\'hont-se';
$labels['newidentity'] = 'Identelezh nevez';
-
$labels['newitem'] = 'Elfenn nevez';
$labels['edititem'] = 'Cheñch an elfenn';
-
$labels['preferhtml'] = 'Diskouez en HTML';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'Kemennad en HTML';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'Diskouez berr deizioù';
$labels['setdefault'] = 'Arventennoù dre ziouer';
-$labels['autodetect'] = 'Auto';
$labels['language'] = 'Yezh';
$labels['timezone'] = 'Gwerzhid-eur';
$labels['pagesize'] = 'Niver a linenn dre bajenn';
$labels['signature'] = 'Sinadur';
$labels['dstactive'] = 'Eur an hañv';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'Sevel ur c\'hemennad er furmad HTML';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'Sinadur HTML';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Diskouez panel alberz';
-$labels['skin'] = 'Interface skin';
-$labels['logoutclear'] = 'Clear Trash on logout';
-$labels['logoutcompact'] = 'Compact Inbox on logout';
-$labels['uisettings'] = 'User Interface';
-$labels['serversettings'] = 'Server Settings';
-$labels['mailboxview'] = 'Mailbox View';
-$labels['mdnrequests'] = 'On request for return receipt';
-$labels['askuser'] = 'ask me';
-$labels['autosend'] = 'send receipt';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
-$labels['ignore'] = 'ignore';
-$labels['readwhendeleted'] = 'Mark the message as read on delete';
-$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
-$labels['skipdeleted'] = 'Do not show deleted messages';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
-$labels['always'] = 'always';
-$labels['showinlineimages'] = 'Display attached images below the message';
$labels['autosavedraft'] = 'Gwarediñ emgefre brouilhedoù';
$labels['everynminutes'] = 'Bep $n munutoù';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'ebet';
-$labels['immediately'] = 'immediately';
-$labels['messagesdisplaying'] = 'Displaying Messages';
-$labels['messagescomposition'] = 'Composing Messages';
-$labels['mimeparamfolding'] = 'Attachment names';
-$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
-$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (other)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
-$labels['advancedoptions'] = 'Advanced options';
-$labels['focusonnewmessage'] = 'Focus browser window on new message';
-$labels['checkallfolders'] = 'Check all folders for new messages';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
-$labels['section'] = 'Section';
-$labels['maintenance'] = 'Maintenance';
-$labels['newmessage'] = 'New Message';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
-$labels['autoaddsignature'] = 'Automatically add signature';
-$labels['newmessageonly'] = 'new message only';
-$labels['replyandforwardonly'] = 'replies and forwards only';
-$labels['insertsignature'] = 'Insert signature';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'Renkell';
$labels['folders'] = 'Teuliadoù';
$labels['foldername'] = 'Anv ar renkell';
$labels['subscribed'] = 'Koumananer';
-$labels['messagecount'] = 'Messages';
$labels['create'] = 'Krouiñ';
$labels['createfolder'] = 'Krouiñ ur renkell nevez';
$labels['managefolders'] = 'Aozañ ar renkelloù';
-$labels['specialfolders'] = 'Special Folders';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'Rummañ dre';
$labels['sortasc'] = 'Rumm diagentad';
$labels['sortdesc'] = 'Rumm diskennad';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
-$labels['B'] = 'B';
-$labels['KB'] = 'KB';
-$labels['MB'] = 'MB';
-$labels['GB'] = 'GB';
-
-// character sets
-$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/br/messages.inc b/program/localization/br/messages.inc
index fd1674d80..7f724a24d 100644
--- a/program/localization/br/messages.inc
+++ b/program/localization/br/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Degouezhet ez eus bet ur fazi !';
$messages['loginfailed'] = 'C\'hwitadenn war kennaskañ';
$messages['cookiesdisabled'] = 'N\'eus ket c\'hoant toupinoù Hor merder';
@@ -25,20 +23,10 @@ $messages['storageerror'] = 'C\'hwitadenn war kennaskañ ouzh an dafariad mirout
$messages['servererror'] = 'Fazi dafariad !';
$messages['servererrormsg'] = 'Fazi dafariad : $msg';
$messages['dberror'] = 'Fazi stlennvon !';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Invalid request! No data was saved.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'Kemennadoù ebet er voest lizhiri';
$messages['loggedout'] = 'Digevreet hoc\'h eus mat. Kenavo !';
$messages['mailboxempty'] = 'Boest lizhiri dileun';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'O kargañ...';
-$messages['uploading'] = 'Uploading file...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'O kargañ roadennoù...';
$messages['checkingmail'] = 'O Gwiriañ kemennadoù nevez...';
$messages['sendingmessage'] = 'O kas ar c\'hemennad...';
@@ -48,129 +36,38 @@ $messages['messagesaved'] = 'Kemennad gwaredet dindan Brouilhedoù';
$messages['successfullysaved'] = 'Gwarediñ graet';
$messages['addedsuccessfully'] = 'Darempred ouzhpennet er c\'harned chomlec\'hioù';
$messages['contactexists'] = 'Bout a ra un darempred gant memes postel elektronek';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'Evit gwarantiñ hoc\'h buhez prevez, stanket eo bet skeudennoù pell er c\'hemennad-se.';
$messages['encryptedmessage'] = 'Rineget eo ar c\'hemennad, ha ne c\'hall ket bezañ diskouez. Ma Digarezit !';
$messages['nocontactsfound'] = 'N\'eo ket bet kavet darempred ebet';
$messages['contactnotfound'] = 'N\'eo ket bet kavet an darempred goulennet';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'N\'eo ket bet kaset ar c\'hemennad';
-$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
-$messages['errorsavingsent'] = 'An error occured while saving sent message.';
-$messages['errorsaving'] = 'Fazi en deus graet reuz en hoc\'h gwarediñ';
$messages['errormoving'] = 'N\'eus ket tu da zilec\'hiañ ar c\'hemennad';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'N\'eus ket tu da zilemel ar c\'hemennad';
-$messages['errormarking'] = 'Could not mark the message(s).';
$messages['deletecontactconfirm'] = 'C\'hoant hoc\'h eus da zilemel an darempred(où) diuzet ?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'C\'hoant hoc\'h eus da zilemel ar c\'hemennad(où) diuzet ?';
$messages['deletefolderconfirm'] = 'C\'hoant hoc\'h eus da skarzhañ ar renkell-se ?';
$messages['purgefolderconfirm'] = 'C\'hoant hoc\'h eus da skarzhañ an holl kemennad eus ar renkell-se ?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
-$messages['folderdeleting'] = 'Deleting folder...';
-$messages['foldermoving'] = 'Moving folder...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'N\'eo ket leuniet ar furmskrid penn-da-benn';
$messages['noemailwarning'] = 'Termenit ur postel elektronek mat mar plij ganeoc\'h';
$messages['nonamewarning'] = 'Termenit un anv mar plij ganeoc\'h';
$messages['nopagesizewarning'] = 'Termenit ur ment pajenn mar plij ganeoc\'h';
-$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
$messages['norecipientwarning'] = 'Ouzhpennit ur resever da nebeutañ mar plij ganeoc\'h';
$messages['nosubjectwarning'] = 'Dileun eo ar maezienn « Sujed » . C\'hoant hoc\'h eus da leuniañ anezhiñ diouzhtu ?';
$messages['nobodywarning'] = 'Kas ar c\'hemennad hep testenn ?';
$messages['notsentwarning'] = 'N\'eo ket bet kaset ar c\'hemennad. C\'hoant hoc\'h eus dilezel ar c\'hemennad-se ?';
$messages['noldapserver'] = 'Dizuit ur servijer LDAP evit ar glask';
$messages['nosearchname'] = 'Skrivit un anv darempred pe ur postel elektronek';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = '$nr kemennad kavet';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'Disoc\'h ebet gant ar glask';
$messages['searching'] = 'O klask...';
$messages['checking'] = 'O gwiriañ...';
$messages['nospellerrors'] = 'Fazi ebet kavet';
$messages['folderdeleted'] = 'Renkell skarzhet';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'Dilemet mat';
$messages['converting'] = 'O tilemel furmaozañ...';
$messages['messageopenerror'] = 'N\'us ket tu da gargañ ar c\'hemennad adalek ar servijer';
$messages['fileuploaderror'] = 'Fazi o treuzkas ar restr';
$messages['filesizeerror'] = 'Re vras eo ar restr treuzkaset $size';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Lenn hepken eo an tarzh chomlec\'h se';
$messages['errorsavingcontact'] = 'Ne c\'haller ket gwarediñ chomlec\'h darempred';
-$messages['movingmessage'] = 'Moving message(s)...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
-$messages['receiptsent'] = 'Successfully sent a read receipt.';
-$messages['errorsendingreceipt'] = 'Could not send the receipt.';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
-$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
-$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
-$messages['selectimportfile'] = 'Please select a file to upload.';
-$messages['addresswriterror'] = 'The selected address book is not writeable.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
-$messages['importwait'] = 'Importing, please wait...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operation not permitted!';
-$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/bs_BA/labels.inc b/program/localization/bs_BA/labels.inc
index 61989e6b3..adc65e069 100644
--- a/program/localization/bs_BA/labels.inc
+++ b/program/localization/bs_BA/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Dobrodošli u $product';
$labels['username'] = 'Korisnik';
$labels['password'] = 'Å ifra';
$labels['server'] = 'Server';
$labels['login'] = 'Prijava';
-
-// taskbar
$labels['logout'] = 'Odjava';
$labels['mail'] = 'Email';
$labels['settings'] = 'Podešavanja';
$labels['addressbook'] = 'Adresar';
-
-// mailbox names
$labels['inbox'] = 'SanduÄe';
$labels['drafts'] = 'Skice';
$labels['sent'] = 'Poslano';
$labels['trash'] = 'Smeće';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Prikaži prava imena specijalnih foldera';
-
-// message listing
$labels['subject'] = 'Naslov';
$labels['from'] = 'Od';
$labels['sender'] = 'Pošiljalac';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Prioritet';
$labels['organization'] = 'Organizacija';
$labels['readstatus'] = 'Status poruke';
$labels['listoptions'] = 'Izlistaj opcije...';
-
$labels['mailboxlist'] = 'Folderi';
$labels['messagesfromto'] = 'Poruke od $from do $to od ukupno $count';
$labels['threadsfromto'] = 'Teme od $from do $to od ukupno $count';
$labels['messagenrof'] = 'Poruka broj $nr od $count';
$labels['fromtoshort'] = '$from – $to od ukupno $count';
-
$labels['copy'] = 'Kopiraj';
$labels['move'] = 'Premjesti';
$labels['moveto'] = 'Premjesti u...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Preuzmi';
$labels['open'] = 'Otvori';
$labels['showattachment'] = 'Prikaži';
$labels['showanyway'] = 'Ipak prikaži';
-
$labels['filename'] = 'Ime datoteke';
$labels['filesize'] = 'VeliÄina datoteke';
-
$labels['addtoaddressbook'] = 'Dodaj u adresar';
-
-// weekdays short
$labels['sun'] = 'Ned';
$labels['mon'] = 'Pon';
$labels['tue'] = 'Uto';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Sri';
$labels['thu'] = 'ÄŒet';
$labels['fri'] = 'Pet';
$labels['sat'] = 'Sub';
-
-// weekdays long
$labels['sunday'] = 'Nedjelja';
$labels['monday'] = 'Ponedjeljak';
$labels['tuesday'] = 'Utorak';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Srijeda';
$labels['thursday'] = 'ÄŒetvrtak';
$labels['friday'] = 'Petak';
$labels['saturday'] = 'Subota';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
-
-// months long
$labels['longjan'] = 'Januar';
$labels['longfeb'] = 'Februar';
$labels['longmar'] = 'Mart';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Septembar';
$labels['longoct'] = 'Oktobar';
$labels['longnov'] = 'Novembar';
$labels['longdec'] = 'Decembar';
-
$labels['today'] = 'Danas';
-
-// toolbar buttons
$labels['refresh'] = 'Osvježi';
$labels['checkmail'] = 'Provjeri ima li novih poruka';
$labels['compose'] = 'Nova poruka';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Više akcija...';
$labels['more'] = 'Više';
$labels['back'] = 'Nazad';
$labels['options'] = 'Opcije';
-
$labels['select'] = 'Odaberi';
$labels['all'] = 'Sve';
$labels['none'] = 'Ništa';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Proširi sve';
$labels['expand-unread'] = 'ProÅ¡iri neproÄitane';
$labels['collapse-all'] = 'Zatvori sve';
$labels['threaded'] = 'Teme';
-
$labels['autoexpand_threads'] = 'Proširi teme poruka';
$labels['do_expand'] = 'sve teme';
$labels['expand_only_unread'] = 'samo sa neproÄitanim porukama';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Lista kolona';
$labels['listsorting'] = 'Sortiranje kolona';
$labels['listorder'] = 'Raspored sortiranja';
$labels['listmode'] = 'NaÄin prikaza liste';
-
$labels['folderactions'] = 'Akcije za foldere...';
$labels['compact'] = 'Optimiziraj';
$labels['empty'] = 'Isprazni';
$labels['importmessages'] = 'Uvezi poruke';
-
$labels['quota'] = 'Zauzeće diska';
$labels['unknown'] = 'nepoznato';
$labels['unlimited'] = 'neograniÄeno';
-
$labels['quicksearch'] = 'Brza pretraga';
$labels['resetsearch'] = 'Resetuj pretragu';
$labels['searchmod'] = 'Modifikacija pretrage';
$labels['msgtext'] = 'Cijela poruka';
$labels['body'] = 'Tijelo';
$labels['type'] = 'Vrsta';
-
+$labels['namex'] = 'Ime';
$labels['openinextwin'] = 'Otvori u novom prozoru';
$labels['emlsave'] = 'Preuzmi (.eml)';
$labels['changeformattext'] = 'Prikaži kao obiÄni tekst';
$labels['changeformathtml'] = 'Prikaži kao HTML';
-
-// message compose
$labels['editasnew'] = 'Uredi kao novo';
$labels['send'] = 'Pošalji';
$labels['sendmessage'] = 'Pošalji poruku';
@@ -224,26 +192,32 @@ $labels['returnreceipt'] = 'Potvrda o prispijeću poruke';
$labels['dsn'] = 'Obavještenje o statusu dostave';
$labels['mailreplyintro'] = '$date, $sender je napisao/la:';
$labels['originalmessage'] = 'Originalna poruka';
-
$labels['editidents'] = 'Uredi identitete';
$labels['spellcheck'] = 'Pravopis';
$labels['checkspelling'] = 'Provjera pravopisa';
$labels['resumeediting'] = 'Nastavi uređivanje';
$labels['revertto'] = 'Vrati na';
-
+$labels['restore'] = 'Vrati';
+$labels['restoremessage'] = 'Vratiti poruku?';
+$labels['responses'] = 'Odgovori';
+$labels['insertresponse'] = 'Umetni odgovor';
+$labels['manageresponses'] = 'Upravljaj odgovorima';
+$labels['savenewresponse'] = 'Snimi novi odgovor';
+$labels['editresponses'] = 'Uredi odgovore';
+$labels['editresponse'] = 'Uredi odgovor';
+$labels['responsename'] = 'Ime';
+$labels['responsetext'] = 'Tekst odgovora';
$labels['attach'] = 'Priloži';
$labels['attachments'] = 'Prilozi';
$labels['upload'] = 'Dodaj';
$labels['uploadprogress'] = '$percent ($current od $total)';
$labels['close'] = 'Zatvori';
$labels['messageoptions'] = 'Opcije poruke...';
-
$labels['low'] = 'Nizak';
$labels['lowest'] = 'Najniži';
$labels['normal'] = 'Normalan';
$labels['high'] = 'Visok';
$labels['highest'] = 'Najveći';
-
$labels['nosubject'] = '(bez naslova)';
$labels['showimages'] = 'Prikaži slike';
$labels['alwaysshow'] = 'Uvijek prikaži slike od $sender';
@@ -251,25 +225,19 @@ $labels['isdraft'] = 'Ovo je skica.';
$labels['andnmore'] = 'još $nr...';
$labels['togglemoreheaders'] = 'Prikaži još zaglavlja poruka';
$labels['togglefullheaders'] = 'Aktiviranje izvornih zaglavlja poruka';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'ObiÄni tekst';
$labels['savesentmessagein'] = 'SaÄuvaj poslane poruke u';
$labels['dontsave'] = 'ne snimaj';
$labels['maxuploadsize'] = 'Maksimalna dozvoljena veliÄina datoteke je $size';
-
$labels['addcc'] = 'Dodaj Cc';
$labels['addbcc'] = 'Dodaj Bcc';
$labels['addreplyto'] = 'Dodaj odgovor na';
$labels['addfollowupto'] = 'Dodaj praćenje za';
-
-// mdn
$labels['mdnrequest'] = 'PoÅ¡iljaoc ove poruke je tražio da bude obavijeÅ¡ten kada proÄitate ovu poruku. Želite li obavijestiti poÅ¡iljaoca?';
$labels['receiptread'] = 'Povratnica (proÄitano)';
$labels['yourmessage'] = 'Ovo je povratnica vaše poruke';
$labels['receiptnote'] = 'Napomena: Ova povratnica samo potvrÄ‘uje da je poruka bila prikazana na raÄunaru primaoca. Nema garancija da je primaoc proÄitao ili razumio sadržaj poruke.';
-
-// address boook
$labels['name'] = 'Ime za prikaz';
$labels['firstname'] = 'Ime';
$labels['surname'] = 'Prezime';
@@ -304,7 +272,6 @@ $labels['search'] = 'Pretraga';
$labels['advsearch'] = 'Napredna pretraga';
$labels['advanced'] = 'Napredno';
$labels['other'] = 'Ostalo';
-
$labels['typehome'] = 'Kućni broj';
$labels['typework'] = 'Poslovni broj';
$labels['typeother'] = 'Ostalo';
@@ -319,14 +286,12 @@ $labels['typeassistant'] = 'Pomoćnik';
$labels['typehomepage'] = 'PoÄetna stranica';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Dodaj polje...';
$labels['addcontact'] = 'Dodaj novi kontakt';
$labels['editcontact'] = 'Uredi kontakt';
$labels['contacts'] = 'Kontakti';
$labels['contactproperties'] = 'Svojstva kontakta';
$labels['personalinfo'] = 'LiÄni podaci';
-
$labels['edit'] = 'Uredi';
$labels['cancel'] = 'Otkaži';
$labels['save'] = 'SaÄuvaj';
@@ -335,7 +300,6 @@ $labels['rename'] = 'Preimenuj';
$labels['addphoto'] = 'Dodaj';
$labels['replacephoto'] = 'Zamijeni';
$labels['uploadphoto'] = 'Dodaj fotografiju';
-
$labels['newcontact'] = 'Dodaj novi kontakt';
$labels['deletecontact'] = 'Obriši odabrane kontakte';
$labels['composeto'] = 'Napiši email za';
@@ -349,42 +313,36 @@ $labels['newcontactgroup'] = 'Kreiraj novu grupu kontakata';
$labels['grouprename'] = 'Preimenuj grupu';
$labels['groupdelete'] = 'Obriši grupu';
$labels['groupremoveselected'] = 'Ukloni odabrane kontakte iz grupe';
-
$labels['previouspage'] = 'Prikaži prethodnu stranicu';
$labels['firstpage'] = 'Prikaži prvu stranicu';
$labels['nextpage'] = 'Prikaži sljedeću stranicu';
$labels['lastpage'] = 'Prikaži zadnju stranicu';
-
$labels['group'] = 'Grupa';
$labels['groups'] = 'Grupe';
$labels['listgroup'] = 'Izlistaj Älanove grupe';
$labels['personaladrbook'] = 'LiÄne adrese';
-
$labels['searchsave'] = 'SaÄuvaj pretragu';
$labels['searchdelete'] = 'Obriši pretragu';
-
$labels['import'] = 'Uvoz';
$labels['importcontacts'] = 'Uvoz kontakata';
$labels['importfromfile'] = 'Uvoz iz datoteke:';
-$labels['importtarget'] = 'Dodaj novi kontakt u adresar:';
+$labels['importtarget'] = 'Dodaj kontakte u';
$labels['importreplace'] = 'Zamijeni cijeli adresar';
+$labels['importgroups'] = 'Uvezi grupne zadatke';
+$labels['importgroupsall'] = 'Sve (kreiraj grupe ako je potrebno)';
+$labels['importgroupsexisting'] = 'Samo za postojeće grupe';
$labels['importdesc'] = 'Kontakte možete dodati iz postojećeg adresara.<br/>Trenutno podržavamo uvoz adresara u formatima <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> ili CSV (comma-separated).';
$labels['done'] = 'Završeno';
-
-// settings
$labels['settingsfor'] = 'Podešavanja za';
$labels['about'] = 'Informacije';
$labels['preferences'] = 'Podešavanja';
$labels['userpreferences'] = 'KorisniÄke opcije';
$labels['editpreferences'] = 'Uredi korisniÄke opcije';
-
$labels['identities'] = 'Identiteti';
$labels['manageidentities'] = 'Podesi identitete za ovaj raÄun';
$labels['newidentity'] = 'Dodaj identitet';
-
$labels['newitem'] = 'Nova stavka';
$labels['edititem'] = 'Uredi stavku';
-
$labels['preferhtml'] = 'Prikaži HTML';
$labels['defaultcharset'] = 'Glavni skup znakova';
$labels['htmlmessage'] = 'HTML poruke';
@@ -480,7 +438,9 @@ $labels['standardwindows'] = 'Tretiraj popup-ove kao standardne prozore';
$labels['forwardmode'] = 'Prosljeđivanje poruka';
$labels['inline'] = 'u istom redu';
$labels['asattachment'] = 'kao prilog';
-
+$labels['replyallmode'] = 'Zadana radnja za [Odgovori svima] dugme';
+$labels['replyalldefault'] = 'odgovori svima';
+$labels['replyalllist'] = 'odgovori samo listi mailova (ukoliko je pronađena)';
$labels['folder'] = 'Folder';
$labels['folders'] = 'Folderi';
$labels['foldername'] = 'Naziv foldera';
@@ -501,26 +461,20 @@ $labels['foldertype'] = 'Vrsta foldera';
$labels['personalfolder'] = 'Privatni folder';
$labels['otherfolder'] = 'Folder drugog korisnika';
$labels['sharedfolder'] = 'Javni folder';
-
$labels['sortby'] = 'Sortiraj po';
$labels['sortasc'] = 'Sortiraj uzlazno';
$labels['sortdesc'] = 'Sortiraj silazno';
$labels['undo'] = 'Nazad';
-
$labels['installedplugins'] = 'Instalirani plugini';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Verzija';
$labels['source'] = 'Izvorni kod';
$labels['license'] = 'Licenca';
$labels['support'] = 'Podrška';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unikod';
$labels['english'] = 'engleski';
$labels['westerneuropean'] = 'Zapadna Evropa';
@@ -539,5 +493,4 @@ $labels['vietnamese'] = 'vijetnamski';
$labels['japanese'] = 'japanski';
$labels['korean'] = 'korejski';
$labels['chinese'] = 'kineski';
-
?>
diff --git a/program/localization/bs_BA/messages.inc b/program/localization/bs_BA/messages.inc
index 09e6df19e..52f865f1e 100644
--- a/program/localization/bs_BA/messages.inc
+++ b/program/localization/bs_BA/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Desila se greška!';
$messages['loginfailed'] = 'Prijava nije uspjela.';
$messages['cookiesdisabled'] = 'VaÅ¡ preglednik ne prihvata kolaÄiće.';
@@ -46,6 +44,8 @@ $messages['messagesent'] = 'Poruka je uspješno poslana.';
$messages['savingmessage'] = 'Poruka se snima...';
$messages['messagesaved'] = 'Poruka je uspjeÅ¡no saÄuvana u skicama.';
$messages['successfullysaved'] = 'UspjeÅ¡no saÄuvano.';
+$messages['savingresponse'] = 'Snimam teksta odgovora...';
+$messages['deleteresponseconfirm'] = 'Da li zaista želite obrisati tekst ovog odgovora?';
$messages['addedsuccessfully'] = 'Kontakt uspješno dodan u adresar.';
$messages['contactexists'] = 'Kontakt sa ovom email adresom već postoji u adresaru.';
$messages['contactnameexists'] = 'Kontakt s tim imenom već postoji.';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'Molimo vas da upišete barem jednog primaoca.
$messages['nosubjectwarning'] = 'Polje \'Naslov\' je prazno. Želite li unijeti naslov?';
$messages['nobodywarning'] = 'Želite li poslati poruku bez teksta?';
$messages['notsentwarning'] = 'Poruka nije poslana. Želite li odbaciti ovu poruku?';
+$messages['restoresavedcomposedata'] = 'Pronađena je prethodno napisana poruka koja nije poslana..\n\nTema:$subject\nSnimljeno: $date\n\nŽelite li vratiti ovu poruku?';
$messages['noldapserver'] = 'Molimo vas da odaberete LDAP server za pretragu.';
$messages['nosearchname'] = 'Molimo vas da upišete ime kontakta ili email adresu.';
$messages['notuploadedwarning'] = 'Neki od priloga joÅ¡ nisu dodani na server. Molimo vas da saÄekate ili da otkažete dodavanje.';
@@ -172,5 +173,4 @@ $messages['parentnotwritable'] = 'Nije moguće kreirati/premjestiti folder u oda
$messages['messagetoobig'] = 'Dio poruke je prevelik za procesiranje.';
$messages['attachmentvalidationerror'] = 'UPOZORENJE! Ovaj prilog je sumnjiv zbog toga Å¡to se njegov tip ne poklapa s tipom navedenim u poruci. Ako nemate povjerenja u poÅ¡iljaova, ne biste trebali da otvarate ovaj prilog u vaÅ¡em browseru jer bi on mogao da sadrži zlonamjerni sadržaj.<br/><br/><em>OÄekivano: $expected; pronaÄ‘eno: $detected</em>';
$messages['noscriptwarning'] = 'Upozorenje! Ovom webmail servisu je potreban Javascript! Da biste ga mogli koristiti, prvo je potrebno da omogućite Javascript u postavkama vašeg browsera.';
-
?>
diff --git a/program/localization/ca_ES/labels.inc b/program/localization/ca_ES/labels.inc
index ca0129de4..427abf142 100644
--- a/program/localization/ca_ES/labels.inc
+++ b/program/localization/ca_ES/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Benvingut a $product';
$labels['username'] = 'Nom d\'usuari';
$labels['password'] = 'Contrasenya';
$labels['server'] = 'Servidor';
$labels['login'] = 'Entra';
-
-// taskbar
$labels['logout'] = 'Tanca sessió';
$labels['mail'] = 'Correu';
$labels['settings'] = 'Configuració';
$labels['addressbook'] = 'Contactes';
-
-// mailbox names
$labels['inbox'] = 'Safata d\'entrada';
$labels['drafts'] = 'Esborranys';
$labels['sent'] = 'Enviats';
$labels['trash'] = 'Paperera';
$labels['junk'] = 'Correu brossa';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
+$labels['show_real_foldernames'] = 'Mostra els noms reals a les carpetes especials';
$labels['subject'] = 'Assumpte';
$labels['from'] = 'Remitent';
$labels['sender'] = 'Remitent';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Prioritat';
$labels['organization'] = 'Organització';
$labels['readstatus'] = 'Estat de lectura';
$labels['listoptions'] = 'Llista d\'opcions...';
-
$labels['mailboxlist'] = 'Carpetes';
-$labels['messagesfromto'] = 'Missatges des de $from a $to de $count';
+$labels['messagesfromto'] = 'Missatges $from a $to de $count';
$labels['threadsfromto'] = 'Fils $from a $to de $count';
$labels['messagenrof'] = 'Missatge $nr de $count';
$labels['fromtoshort'] = '$from - $to de $count';
-
$labels['copy'] = 'Copia';
$labels['move'] = 'Mou';
$labels['moveto'] = 'Mou a...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Descarrega';
$labels['open'] = 'Obre';
$labels['showattachment'] = 'Mostra';
$labels['showanyway'] = 'Mostra-ho de totes maneres';
-
$labels['filename'] = 'Nom del fitxer';
$labels['filesize'] = 'Mida del fitxer';
-
$labels['addtoaddressbook'] = 'Afegeix a contactes';
-
-// weekdays short
$labels['sun'] = 'Diu';
$labels['mon'] = 'Dll';
$labels['tue'] = 'Dmt';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Dmc';
$labels['thu'] = 'Dij';
$labels['fri'] = 'Div';
$labels['sat'] = 'Dis';
-
-// weekdays long
$labels['sunday'] = 'Diumenge';
$labels['monday'] = 'Dilluns';
$labels['tuesday'] = 'Dimarts';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Dimecres';
$labels['thursday'] = 'Dijous';
$labels['friday'] = 'Divendres';
$labels['saturday'] = 'Dissabte';
-
-// months short
$labels['jan'] = 'gen';
$labels['feb'] = 'feb';
$labels['mar'] = 'mar';
@@ -105,13 +85,11 @@ $labels['sep'] = 'set';
$labels['oct'] = 'oct';
$labels['nov'] = 'nov';
$labels['dec'] = 'des';
-
-// months long
$labels['longjan'] = 'gener';
$labels['longfeb'] = 'febrer';
$labels['longmar'] = 'març';
$labels['longapr'] = 'abril';
-$labels['longmay'] = 'mai';
+$labels['longmay'] = 'maig';
$labels['longjun'] = 'juny';
$labels['longjul'] = 'juliol';
$labels['longaug'] = 'agost';
@@ -119,19 +97,16 @@ $labels['longsep'] = 'setembre';
$labels['longoct'] = 'octubre';
$labels['longnov'] = 'novembre';
$labels['longdec'] = 'desembre';
-
$labels['today'] = 'Avui';
-
-// toolbar buttons
$labels['refresh'] = 'Actualitza';
-$labels['checkmail'] = 'Recupera missatges nous';
+$labels['checkmail'] = 'Comprova si hi ha missatges nous';
$labels['compose'] = 'Escriu un missatge';
$labels['writenewmessage'] = 'Crea un nou missatge';
$labels['reply'] = 'Respon';
$labels['replytomessage'] = 'Respon al remitent';
-$labels['replytoallmessage'] = 'Respon al remitent i a tots els destinataris';
+$labels['replytoallmessage'] = 'Respon a la llista o al remitent i a tots els destinataris';
$labels['replyall'] = 'Respon a tots';
-$labels['replylist'] = 'Llista de resposta';
+$labels['replylist'] = 'Respon a la llista';
$labels['forward'] = 'Reenvia';
$labels['forwardinline'] = 'Reenvia com en línia';
$labels['forwardattachment'] = 'Reenvia com a adjunt';
@@ -155,12 +130,11 @@ $labels['moreactions'] = 'Més accions...';
$labels['more'] = 'Més';
$labels['back'] = 'Torna';
$labels['options'] = 'Opcions';
-
$labels['select'] = 'Selecciona';
$labels['all'] = 'Tots';
$labels['none'] = 'Cap';
$labels['currpage'] = 'Pàgina actual';
-$labels['unread'] = 'No llegits';
+$labels['unread'] = 'No llegit';
$labels['flagged'] = 'Marcat';
$labels['unanswered'] = 'No respost';
$labels['withattachment'] = 'Amb fitxer adjunt';
@@ -169,18 +143,17 @@ $labels['undeleted'] = 'No s\'ha suprimit';
$labels['invert'] = 'Inverteix';
$labels['filter'] = 'Filtre';
$labels['list'] = 'Llista';
-$labels['threads'] = 'Fils de discusió';
-$labels['expand-all'] = 'Expandeix tots';
+$labels['threads'] = 'Fils de discussió';
+$labels['expand-all'] = 'Expandeix tot';
$labels['expand-unread'] = 'Expandeix No llegits';
-$labels['collapse-all'] = 'Redueix tots';
+$labels['collapse-all'] = 'Redueix tot';
$labels['threaded'] = 'Encadenat';
-
$labels['autoexpand_threads'] = 'Expandeix els missatges encadenats';
-$labels['do_expand'] = 'tots els fils de discusió';
+$labels['do_expand'] = 'tots els fils de discussió';
$labels['expand_only_unread'] = 'només amb missatges no llegits';
$labels['fromto'] = 'Remitent/Destinatari';
$labels['flag'] = 'Marca';
-$labels['attachment'] = 'Adjunció';
+$labels['attachment'] = 'Adjunt';
$labels['nonesort'] = 'Cap';
$labels['sentdate'] = 'Data d\'enviament';
$labels['arrival'] = 'Data d\'arribada';
@@ -190,33 +163,28 @@ $labels['listcolumns'] = 'Llista les columnes';
$labels['listsorting'] = 'Columna d\'ordenació';
$labels['listorder'] = 'Ordre d\'ordenació';
$labels['listmode'] = 'Mode de vista de llista';
-
-$labels['folderactions'] = 'Accions de carpeta';
+$labels['folderactions'] = 'Accions de carpeta...';
$labels['compact'] = 'Compacta';
$labels['empty'] = 'Buida';
-$labels['importmessages'] = 'Import messages';
-
+$labels['importmessages'] = 'Importa missatges';
$labels['quota'] = 'Ús del disc';
$labels['unknown'] = 'desconegut';
$labels['unlimited'] = 'il·limitat';
-
$labels['quicksearch'] = 'Cerca ràpida';
$labels['resetsearch'] = 'Neteja cerca';
$labels['searchmod'] = 'Cerca modificadors';
$labels['msgtext'] = 'Missatge sencer';
$labels['body'] = 'Cos';
-$labels['type'] = 'Type';
-
+$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';
-
-// message compose
$labels['editasnew'] = 'Edita com a nou';
-$labels['send'] = 'Enviar';
+$labels['send'] = 'Envia';
$labels['sendmessage'] = 'Envia el missatge';
-$labels['savemessage'] = 'Desa aquest esborrany';
+$labels['savemessage'] = 'Desa com a esborrany';
$labels['addattachment'] = 'Adjunta un fitxer';
$labels['charset'] = 'Codificació de caràcters';
$labels['editortype'] = 'Tipus d\'editor';
@@ -224,52 +192,52 @@ $labels['returnreceipt'] = 'Confirmació de recepció';
$labels['dsn'] = 'Notificació d\'estat de lliurament';
$labels['mailreplyintro'] = 'A $date, $sender escrigué:';
$labels['originalmessage'] = 'Missatge Original';
-
$labels['editidents'] = 'Edita identitats';
$labels['spellcheck'] = 'Ortografia';
$labels['checkspelling'] = 'Comprova l\'ortografia';
$labels['resumeediting'] = 'Reprèn l\'edició';
$labels['revertto'] = 'Torna a';
-
+$labels['restore'] = 'Recupera';
+$labels['restoremessage'] = 'Recupera el missatge?';
+$labels['responses'] = 'Respostes';
+$labels['insertresponse'] = 'Introduïu una resposta';
+$labels['manageresponses'] = 'Gestiona respostes';
+$labels['savenewresponse'] = 'Desa una nova resposta';
+$labels['editresponses'] = 'Edita respostes';
+$labels['editresponse'] = 'Edita la resposta';
+$labels['responsename'] = 'Nom';
+$labels['responsetext'] = 'Text de resposta';
$labels['attach'] = 'Adjunta';
-$labels['attachments'] = 'Adjuncions';
+$labels['attachments'] = 'Adjunts';
$labels['upload'] = 'Afegeix';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Tanca';
$labels['messageoptions'] = 'Opcions de missatge...';
-
$labels['low'] = 'Baixa';
$labels['lowest'] = 'La més baixa';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alta';
$labels['highest'] = 'La més alta';
-
$labels['nosubject'] = '(sense assumpte)';
$labels['showimages'] = 'Mostra les imatges';
$labels['alwaysshow'] = 'Mostra sempre les imatges de $sender';
$labels['isdraft'] = 'Aquest és un missatge esborrany.';
$labels['andnmore'] = '$nr més...';
$labels['togglemoreheaders'] = 'Mostra més capçaleres del missatge';
-$labels['togglefullheaders'] = 'Conmuta les capçaleres de text cru';
-
+$labels['togglefullheaders'] = 'Commuta les capçaleres del missatge en brut';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Text net';
$labels['savesentmessagein'] = 'Desa el missatge enviat a';
$labels['dontsave'] = 'no ho desis';
-$labels['maxuploadsize'] = 'El mida màxima del fitxer és $size';
-
+$labels['maxuploadsize'] = 'La mida màxima permesa del fitxer és $size';
$labels['addcc'] = 'Afegeix Cc';
$labels['addbcc'] = 'Afegeix Bcc';
$labels['addreplyto'] = 'Afegeix Respon-A';
$labels['addfollowupto'] = 'Afegir Seguiment-A';
-
-// mdn
$labels['mdnrequest'] = 'El remitent d\'aquest missatge ha demanat ser notificat quan llegiu aquest missatge. Voleu notificar al remitent?';
-$labels['receiptread'] = 'Confirmació de recepció';
+$labels['receiptread'] = 'Confirmació de recepció (llegit)';
$labels['yourmessage'] = 'Això és una confirmació de recepció per al vostre missatge';
$labels['receiptnote'] = 'Nota: Aquesta confirmació només indica que el missatge ha estat mostrat a l\'ordinador del destinatari. No hi ha garantia que el destinatari hagi llegit o entès el contingut del missatge.';
-
-// address boook
$labels['name'] = 'Nom a mostrar';
$labels['firstname'] = 'Nom';
$labels['surname'] = 'Cognom';
@@ -304,7 +272,6 @@ $labels['search'] = 'Cerca';
$labels['advsearch'] = 'Cerca Avançada';
$labels['advanced'] = 'Paràmetres avançats';
$labels['other'] = 'Un altre';
-
$labels['typehome'] = 'Casa';
$labels['typework'] = 'Feina';
$labels['typeother'] = 'Un altre';
@@ -316,17 +283,15 @@ $labels['typecar'] = 'Cotxe';
$labels['typepager'] = 'Cercapersones';
$labels['typevideo'] = 'Vídeo';
$labels['typeassistant'] = 'Assistent';
-$labels['typehomepage'] = 'Pàgina Inicial';
+$labels['typehomepage'] = 'Pàgina web personal';
$labels['typeblog'] = 'Bloc';
$labels['typeprofile'] = 'Perfil';
-
$labels['addfield'] = 'Afegeix camp...';
$labels['addcontact'] = 'Afegeix un nou contacte';
$labels['editcontact'] = 'Edita el contacte';
$labels['contacts'] = 'Contactes';
$labels['contactproperties'] = 'Propietats del contacte';
$labels['personalinfo'] = 'Informació personal';
-
$labels['edit'] = 'Edita';
$labels['cancel'] = 'Cancel·la';
$labels['save'] = 'Desa';
@@ -334,8 +299,7 @@ $labels['delete'] = 'Suprimeix';
$labels['rename'] = 'Reanomena';
$labels['addphoto'] = 'Afegeix';
$labels['replacephoto'] = 'Reemplaça';
-$labels['uploadphoto'] = 'Puja una fotografia';
-
+$labels['uploadphoto'] = 'Afegeix una fotografia';
$labels['newcontact'] = 'Crea un nou contacte';
$labels['deletecontact'] = 'Suprimeix els contactes seleccionats';
$labels['composeto'] = 'Redacta correu per a';
@@ -349,42 +313,36 @@ $labels['newcontactgroup'] = 'Crea un nou grup de contactes';
$labels['grouprename'] = 'Reanomena el grup';
$labels['groupdelete'] = 'Suprimeix el grup';
$labels['groupremoveselected'] = 'Suprimeix els contactes seleccionats del grup';
-
$labels['previouspage'] = 'Mostra la pàgina anterior';
$labels['firstpage'] = 'Mostra la primera pàgina';
$labels['nextpage'] = 'Mostra la pàgina següent';
$labels['lastpage'] = 'Mostra la darrera pàgina';
-
$labels['group'] = 'Grup';
$labels['groups'] = 'Grups';
-$labels['listgroup'] = 'List group members';
-$labels['personaladrbook'] = 'Llibreta d\'adreces';
-
+$labels['listgroup'] = 'Llista els membres del grup';
+$labels['personaladrbook'] = 'Llibreta d\'adreces personals';
$labels['searchsave'] = 'Desa la cerca';
$labels['searchdelete'] = 'Suprimeix la cerca';
-
$labels['import'] = 'Importa';
$labels['importcontacts'] = 'Importa contactes';
$labels['importfromfile'] = 'Importa des d\'un fitxer:';
-$labels['importtarget'] = 'Afegeix contactes nous a la llibreta d\'adreces:';
-$labels['importreplace'] = 'Reemplaça la llibreta d\'adreçes sencera';
-$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['importtarget'] = 'Afegeix contactes a';
+$labels['importreplace'] = 'Substitueix la llibreta d\'adreces 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 afegir contactes des d\'una llibreta d\'adreces.<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';
-
-// settings
$labels['settingsfor'] = 'Configuració per a';
$labels['about'] = 'Quant a';
$labels['preferences'] = 'Preferències';
$labels['userpreferences'] = 'Preferències de l\'usuari';
$labels['editpreferences'] = 'Edita les preferències de l\'usuari';
-
$labels['identities'] = 'Identitats';
$labels['manageidentities'] = 'Gestiona les identitats per a aquest compte';
$labels['newidentity'] = 'Nova identitat';
-
$labels['newitem'] = 'Nou element';
$labels['edititem'] = 'Edita l\'element';
-
$labels['preferhtml'] = 'Mostra HTML';
$labels['defaultcharset'] = 'Joc de caràcters per defecte';
$labels['htmlmessage'] = 'Missatge HTML';
@@ -400,13 +358,13 @@ $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';
+$labels['htmlonreplyandforward'] = 'quan es reenviï o es respongui un missatge en HTML';
$labels['htmlsignature'] = 'Signatura en HTML';
-$labels['showemail'] = 'Show email address with display name';
+$labels['showemail'] = 'Mostra l\'adreça electrònica amb el nom';
$labels['previewpane'] = 'Mostra el panell de previsualització';
$labels['skin'] = 'Aparença d\'interfície';
$labels['logoutclear'] = 'Buida la paperera al tancar la sessió';
@@ -414,10 +372,10 @@ $labels['logoutcompact'] = 'Compacta la safata d\'entrada al tancar la sessió';
$labels['uisettings'] = 'Interfície de l\'usuari';
$labels['serversettings'] = 'Configuració del servidor';
$labels['mailboxview'] = 'Vista de la bústia';
-$labels['mdnrequests'] = 'Notificacions de confirmació de recepció';
+$labels['mdnrequests'] = 'Quan es demani confirmació de recepció';
$labels['askuser'] = 'demana\'m què vull fer';
$labels['autosend'] = 'envia la confirmació de recepció';
-$labels['autosendknown'] = 'envia la confirmació de recepció als meus contactes, pels demés damana-m\'ho';
+$labels['autosendknown'] = 'envia la confirmació de recepció als meus contactes, pels demés demana-m\'ho';
$labels['autosendknownignore'] = 'envia la confirmació als meus contactes, pels demés ignora-ho';
$labels['ignore'] = 'ignora';
$labels['readwhendeleted'] = 'Marca el missatge com a llegit quan se suprimeixi';
@@ -426,12 +384,12 @@ $labels['skipdeleted'] = 'No mostris els missatges suprimits';
$labels['deletealways'] = 'Si falla quan es mou un missatge a la Paperera, aleshores suprimeix-lo';
$labels['deletejunk'] = 'Suprimeix directament els missatges de Correu brossa';
$labels['showremoteimages'] = 'Mostra les imatges remotes del missatge';
-$labels['fromknownsenders'] = 'de remitent conegut';
+$labels['fromknownsenders'] = 'de remitents coneguts';
$labels['always'] = 'sempre';
$labels['showinlineimages'] = 'Mostra les imatges adjuntes sota el missatge';
$labels['autosavedraft'] = 'Desa l\'esborrany automàticament';
$labels['everynminutes'] = 'cada $n minut(s)';
-$labels['refreshinterval'] = 'Resfrescar (comprovar nous missatges, etc.)';
+$labels['refreshinterval'] = 'Actualitza (comprova nous missatges, etc.)';
$labels['never'] = 'mai';
$labels['immediately'] = 'immediatament';
$labels['messagesdisplaying'] = 'Vista de missatges';
@@ -442,25 +400,25 @@ $labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Compleix RFC 2047 (un altre)';
$labels['force7bit'] = 'Fes servir la codificació MIME per a caràcters de 8-bits';
$labels['advancedoptions'] = 'Opcions avançades';
-$labels['focusonnewmessage'] = 'Envia el focus al navegador quan hi hagi un nou missatge';
+$labels['focusonnewmessage'] = 'Activa la finestra del navegador quan hi hagi un nou missatge';
$labels['checkallfolders'] = 'Comprova totes les carpetes per missatges nous';
-$labels['displaynext'] = 'Mostra el següent missatge després de suprimir-ne o moure\'n un';
-$labels['defaultfont'] = 'Font de lletra per defecte de missatge HTML';
+$labels['displaynext'] = 'Mostra el missatge següent després de suprimir-ne o moure\'n un';
+$labels['defaultfont'] = 'Font de lletra per defecte de missatge en HTML';
$labels['mainoptions'] = 'Opcions principals';
$labels['browseroptions'] = 'Opcions del navegador';
$labels['section'] = 'Secció';
$labels['maintenance'] = 'Manteniment';
$labels['newmessage'] = 'Missatge nou';
$labels['signatureoptions'] = 'Opcions de signatura';
-$labels['whenreplying'] = 'Quan es respon';
-$labels['replyempty'] = 'do citis el missatge original';
+$labels['whenreplying'] = 'Quan es respongui';
+$labels['replyempty'] = 'no citis el missatge original';
$labels['replytopposting'] = 'comença el missatge nou per sobre de l\'original';
$labels['replybottomposting'] = 'comença el missatge nou per sota de l\'original';
-$labels['replyremovesignature'] = 'Quan es contesti, suprimeix la signatura original del missatge';
+$labels['replyremovesignature'] = 'Quan es respongui suprimeix la signatura original del missatge';
$labels['autoaddsignature'] = 'Afegeix la signatura automàticament';
$labels['newmessageonly'] = 'només si és un missatge nou';
$labels['replyandforwardonly'] = 'només a respostes i reenviaments';
-$labels['insertsignature'] = 'Inserta la signatura';
+$labels['insertsignature'] = 'Inclou la signatura';
$labels['previewpanemarkread'] = 'Marca els missatges previsualitzats com a llegits';
$labels['afternseconds'] = 'després de $n segons';
$labels['reqmdn'] = 'Demana sempre la confirmació de recepció';
@@ -476,11 +434,13 @@ $labels['spellcheckignorenums'] = 'Ignora paraules amb números';
$labels['spellcheckignorecaps'] = 'Ignora paraules amb lletres capitalitzades';
$labels['addtodict'] = 'Afegeix al diccionari';
$labels['mailtoprotohandler'] = 'Registra controlador de protocol pels enllaços mailto:';
-$labels['standardwindows'] = 'Handle popups as standard windows';
+$labels['standardwindows'] = 'Gestiona les finestres emergents com si fossin finestres normals';
$labels['forwardmode'] = 'Reenviament de missatges';
$labels['inline'] = 'en línia';
-$labels['asattachment'] = 'com adjunt';
-
+$labels['asattachment'] = 'com un adjunt';
+$labels['replyallmode'] = 'Acció per defecte del botó [Respon a tots]';
+$labels['replyalldefault'] = 'respon a tots';
+$labels['replyalllist'] = 'respon només a la llista de missatges (si n\'hi ha cap)';
$labels['folder'] = 'Carpeta';
$labels['folders'] = 'Carpetes';
$labels['foldername'] = 'Nom de la carpeta';
@@ -501,26 +461,20 @@ $labels['foldertype'] = 'Tipus de Carpeta';
$labels['personalfolder'] = 'Carpeta privada';
$labels['otherfolder'] = 'Carpeta d\'un altre usuari';
$labels['sharedfolder'] = 'Carpeta pública';
-
$labels['sortby'] = 'Ordena per';
$labels['sortasc'] = 'Ordena ascendentment';
$labels['sortdesc'] = 'Ordena descendentment';
$labels['undo'] = 'Desfés';
-
-$labels['installedplugins'] = 'Connectors Instal·lats';
+$labels['installedplugins'] = 'Complements Instal·lats';
$labels['plugin'] = 'Complement';
$labels['version'] = 'Versió';
$labels['source'] = 'Font';
$labels['license'] = 'Llicència';
$labels['support'] = 'Obtingueu ajuda';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Anglès';
$labels['westerneuropean'] = 'Europeu occidental';
@@ -539,5 +493,4 @@ $labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonès';
$labels['korean'] = 'Coreà';
$labels['chinese'] = 'Xinès';
-
?>
diff --git a/program/localization/ca_ES/messages.inc b/program/localization/ca_ES/messages.inc
index 9ee32d54e..66c4a6d42 100644
--- a/program/localization/ca_ES/messages.inc
+++ b/program/localization/ca_ES/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Hi ha hagut un error!';
$messages['loginfailed'] = 'L\'accés ha fallat.';
$messages['cookiesdisabled'] = 'El vostre navegador no accepta cookies.';
@@ -26,8 +24,8 @@ $messages['servererror'] = 'Error del Servidor!';
$messages['servererrormsg'] = 'Error del Servidor: $msg';
$messages['dberror'] = 'Error a la Base de Dades!';
$messages['requesttimedout'] = 'S\'ha esgotat el temps de la sol·licitud';
-$messages['errorreadonly'] = 'Impossible de realitzar l\'operació. La carpeta és de només lectura.';
-$messages['errornoperm'] = 'Impossible de realitzar l\'operació. Permís denegat.';
+$messages['errorreadonly'] = 'No s\'ha pogut de realitzar l\'operació. La carpeta és de només lectura.';
+$messages['errornoperm'] = 'No s\'ha pogut realitzar l\'operació. Permís denegat.';
$messages['erroroverquota'] = 'No s\'ha pogut completar l\'operació. No hi ha prou espai lliure al disc dur.';
$messages['erroroverquotadelete'] = 'No hi ha prou espai lliure. Feu servir MAJÚS+SUPR per suprimir el missatge.';
$messages['invalidrequest'] = 'Petició no vàlida! No s\'han desat les dades.';
@@ -35,7 +33,7 @@ $messages['invalidhost'] = 'Nom de servidor no vàlid.';
$messages['nomessagesfound'] = 'No s\'han trobat missatges en aquesta bústia.';
$messages['loggedout'] = 'Heu tancat la sessió correctament. A reveure!';
$messages['mailboxempty'] = 'La bústia és buida.';
-$messages['refreshing'] = 'S\'està refrescant...';
+$messages['refreshing'] = 'S\'està actualitzant...';
$messages['loading'] = 'S\'està carregant…';
$messages['uploading'] = 'S\'està pujant el fitxer...';
$messages['uploadingmany'] = 'S\'estan pujant els fitxers...';
@@ -43,21 +41,23 @@ $messages['loadingdata'] = 'S\'estan carregant les dades...';
$messages['checkingmail'] = 'S’està comprovant si hi ha missatges nous…';
$messages['sendingmessage'] = 'S’està enviant el missatge…';
$messages['messagesent'] = 'Missatge enviat correctament.';
-$messages['savingmessage'] = 'Desant missatge...';
+$messages['savingmessage'] = 'S\'està desant el missatge...';
$messages['messagesaved'] = 'Missatge desat a Esborranys.';
$messages['successfullysaved'] = 'Desat correctament.';
+$messages['savingresponse'] = 'S\'està desant el text de resposta...';
+$messages['deleteresponseconfirm'] = 'Esteu segurs de voler suprimir aquest text de resposta?';
$messages['addedsuccessfully'] = 'Contacte afegit correctament a la llibreta d\'adreces.';
$messages['contactexists'] = 'Ja hi ha un contacte amb aquesta adreça de correu.';
$messages['contactnameexists'] = 'Ja existeix un contacte amb el mateix nom.';
-$messages['blockedimages'] = 'Per protegir la vostra privacitat, les imatges remotes han estat bloquejades en aquest missatge.';
+$messages['blockedimages'] = 'Per protegir la vostra privadesa, les imatges remotes han estat bloquejades en aquest missatge.';
$messages['encryptedmessage'] = 'Aquest és un missatge xifrat i no pot ser mostrat. Ho sento!';
$messages['nocontactsfound'] = 'No s\'ha trobat cap contacte.';
$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'] = 'Hi ha hagut un error mentre es desava el missatge enviat.';
-$messages['errorsaving'] = 'Hi ha hagut un error mentre s\'estava desant.';
+$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).';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'Si us plau, introduïu com a mínim un destin
$messages['nosubjectwarning'] = 'El camp "Assumpte" és buit. Voleu introduir-ne un ara?';
$messages['nobodywarning'] = 'Voleu enviar aquest missatge sense text?';
$messages['notsentwarning'] = 'El missatge no s\'ha enviat. Voleu descartar el vostre missatge?';
+$messages['restoresavedcomposedata'] = 'S\'ha trobat un missatge començat però que no ha estat enviat.\n\nAssumpte: $subject\nDesat: $date\n\nVoleu recuperar aquest missatge?';
$messages['noldapserver'] = 'Si us plau, seleccioneu un servidor LDAP per cercar.';
$messages['nosearchname'] = 'Si us plau, introduïu un nom de contacte o una adreça de correu.';
$messages['notuploadedwarning'] = 'Encara no s\'han pujat tots els adjunts. Si us plau, espereu o cancel·leu la pujada.';
@@ -116,7 +117,7 @@ $messages['markingmessage'] = 'S\'està marcant missatge(s)...';
$messages['addingmember'] = 'S\'està afegint contacte(s) al grup...';
$messages['removingmember'] = 'S\'està suprimint contacte(s) del grup...';
$messages['receiptsent'] = 'Confirmació de lectura enviada correctament.';
-$messages['errorsendingreceipt'] = 'No es pot enviar la confirmació.';
+$messages['errorsendingreceipt'] = 'No s\'ha pogut enviar la confirmació.';
$messages['deleteidentityconfirm'] = 'Esteu segurs de voler suprimir aquesta identitat?';
$messages['nodeletelastidentity'] = 'No podeu suprimir aquesta identitat, és l\'última.';
$messages['forbiddencharacter'] = 'El nom de carpeta conté un caràcter no permès.';
@@ -133,7 +134,7 @@ $messages['importmessagesuccess'] = '<b>S\'han importat $nr missatges correctame
$messages['importmessageerror'] = 'La importació ha fallat. El fitxer que heu pujat no és un fitxer de missatges vàlid o no és un fitxer de bústia.';
$messages['opnotpermitted'] = 'Operació no permesa!';
$messages['nofromaddress'] = 'Falta l\'adreça de correu a la identitat seleccionada.';
-$messages['editorwarning'] = 'Si canvieu a l\'editor de text pla perdreu tot el format del text. Voleu continuar?';
+$messages['editorwarning'] = 'Si canvieu a l\'editor de text net perdreu tot el format del text. Voleu continuar?';
$messages['httpreceivedencrypterror'] = 'Hi ha hagut un error fatal de configuració. Contacteu amb el vostre administrador immediatament. <b>El vostre missatge no pot ser enviat.</b>';
$messages['smtpconnerror'] = 'Error SMTP ($code): La connexió al servidor ha fallat.';
$messages['smtpautherror'] = 'Error SMTP ($code): La identificació ha fallat.';
@@ -142,9 +143,9 @@ $messages['smtptoerror'] = 'Error SMTP ($code): No s\'ha pogut posar "$to" com a
$messages['smtprecipientserror'] = 'Error SMTP: No s\'ha pogut analitzar la llista de destinataris.';
$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['toomanyrecipients'] = 'Hi ha masses 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'] = 'Hi ha hagut un error intern. Si us plau torneu-ho a provar.';
+$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).';
@@ -153,7 +154,7 @@ $messages['groupdeleted'] = 'Grup suprimit correctament.';
$messages['grouprenamed'] = 'Grup reanomenat correctament.';
$messages['groupcreated'] = 'Grup creat correctament.';
$messages['savedsearchdeleted'] = 'S\'ha suprimit correctament la cerca desada.';
-$messages['savedsearchdeleteerror'] = 'No s\'ha pogut suprimit la cerca desada.';
+$messages['savedsearchdeleteerror'] = 'No s\'ha pogut suprimir la cerca desada.';
$messages['savedsearchcreated'] = 'S\'ha creat correctament la cerca desada.';
$messages['savedsearchcreateerror'] = 'No s\'ha pogut crear la cerca desada.';
$messages['messagedeleted'] = 'Missatge(s) suprimit(s) correctament.';
@@ -171,6 +172,5 @@ $messages['mispellingsfound'] = 'S\'han detectat errors d\'ortografia al missatg
$messages['parentnotwritable'] = 'No s\'ha pogut crear/moure la carpeta dins de la carpeta ascendent seleccionada. No hi ha permisos d\'escriptura.';
$messages['messagetoobig'] = 'La part del missatge és massa gran per processar-la.';
$messages['attachmentvalidationerror'] = 'ATENCIÓ! Aquest adjunt és sospitós perquè el seu tipus no coincideix amb el tipus declarat al missatge. Si no confieu en l\'emissor, no l\'hauríeu d\'obrir al navegador perquè pot contenir elements maliciosos. <br/><br/><em>S\'esperava: $expected; s\'ha trobat: $detected</em>';
-$messages['noscriptwarning'] = 'Atenció: Aquest client de correu necessita Javascript! Per a poder fer-lo servir, heu d\'activar Javascript a les opcions del navegador.';
-
+$messages['noscriptwarning'] = 'Atenció: Aquest client de correu necessita Javascript! Per a poder fer-lo servir heu d\'activar Javascript a les opcions del navegador.';
?>
diff --git a/program/localization/cs_CZ/labels.inc b/program/localization/cs_CZ/labels.inc
index b5cc093d8..a0f0828fd 100644
--- a/program/localization/cs_CZ/labels.inc
+++ b/program/localization/cs_CZ/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Vítejte v $product';
$labels['username'] = 'Uživatel';
$labels['password'] = 'Heslo';
$labels['server'] = 'Server';
$labels['login'] = 'Přihlásit';
-
-// taskbar
$labels['logout'] = 'Odhlásit';
$labels['mail'] = 'E-mail';
$labels['settings'] = 'Nastavení';
$labels['addressbook'] = 'Adresář';
-
-// mailbox names
$labels['inbox'] = 'Příchozí pošta';
$labels['drafts'] = 'Rozepsané';
$labels['sent'] = 'Odeslané';
$labels['trash'] = 'Koš';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Zobrazit skuteÄná jména speciálních složek';
-
-// message listing
$labels['subject'] = 'Předmět';
$labels['from'] = 'Odesílatel';
$labels['sender'] = 'Odesílatel';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Priorita';
$labels['organization'] = 'Organizace';
$labels['readstatus'] = 'PÅ™eÄteno';
$labels['listoptions'] = 'Seznam možností ...';
-
$labels['mailboxlist'] = 'Složky';
$labels['messagesfromto'] = 'Zprávy $from až $to z celkem $count';
$labels['threadsfromto'] = 'Konverzace $from až $to z celkem $count';
$labels['messagenrof'] = 'Zpráva $nr z $count';
$labels['fromtoshort'] = '$from - $to z $count';
-
$labels['copy'] = 'Kopírovat';
$labels['move'] = 'Přesunout';
$labels['moveto'] = 'přesunout do...';
@@ -68,13 +56,9 @@ $labels['download'] = 'stáhnout';
$labels['open'] = 'Otevřít';
$labels['showattachment'] = 'Zobrazit';
$labels['showanyway'] = 'Přesto zobrazit';
-
$labels['filename'] = 'Jméno přílohy';
$labels['filesize'] = 'Velikost přílohy';
-
$labels['addtoaddressbook'] = 'Přidat do adresáře';
-
-// weekdays short
$labels['sun'] = 'Ne';
$labels['mon'] = 'Po';
$labels['tue'] = 'Út';
@@ -82,8 +66,6 @@ $labels['wed'] = 'St';
$labels['thu'] = 'ÄŒt';
$labels['fri'] = 'Pá';
$labels['sat'] = 'So';
-
-// weekdays long
$labels['sunday'] = 'Neděle';
$labels['monday'] = 'Pondělí';
$labels['tuesday'] = 'Úterý';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Středa';
$labels['thursday'] = 'ÄŒtvrtek';
$labels['friday'] = 'Pátek';
$labels['saturday'] = 'Sobota';
-
-// months short
$labels['jan'] = 'Led';
$labels['feb'] = 'Úno';
$labels['mar'] = 'Bře';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Zář';
$labels['oct'] = 'Říj';
$labels['nov'] = 'Lis';
$labels['dec'] = 'Pro';
-
-// months long
$labels['longjan'] = 'Leden';
$labels['longfeb'] = 'Únor';
$labels['longmar'] = 'Březen';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Září';
$labels['longoct'] = 'Říjen';
$labels['longnov'] = 'Listopad';
$labels['longdec'] = 'Prosinec';
-
$labels['today'] = 'Dnes';
-
-// toolbar buttons
$labels['refresh'] = 'Obnovit';
$labels['checkmail'] = 'Zkontrolovat nové zprávy';
$labels['compose'] = 'Napsat zprávu';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Další akce...';
$labels['more'] = 'Více';
$labels['back'] = 'Zpět';
$labels['options'] = 'Možnosti';
-
$labels['select'] = 'Vybrat';
$labels['all'] = 'VÅ¡e';
$labels['none'] = 'Nic';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Rozbalit všechny';
$labels['expand-unread'] = 'Rozbalit nepÅ™eÄtené';
$labels['collapse-all'] = 'Sbalit všechny';
$labels['threaded'] = 'Spojovat do konverzací';
-
$labels['autoexpand_threads'] = 'Rozbalit konverzace';
$labels['do_expand'] = 'všechny konverzace';
$labels['expand_only_unread'] = 'pouze s nepÅ™eÄtenými zprávami';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Seznam sloupců';
$labels['listsorting'] = 'Třídění sloupců';
$labels['listorder'] = 'Uspořádání';
$labels['listmode'] = 'Režim zobrazení seznamu';
-
$labels['folderactions'] = 'Akce se složkou...';
$labels['compact'] = 'Zmenšit';
$labels['empty'] = 'Vymazat';
$labels['importmessages'] = 'Import zpráv';
-
$labels['quota'] = 'Využití schránky';
$labels['unknown'] = 'neznámý';
$labels['unlimited'] = 'neomezený';
-
$labels['quicksearch'] = 'Rychlé vyhledávání';
$labels['resetsearch'] = 'Zrušit vyhledávání';
$labels['searchmod'] = 'Parametry hledání';
$labels['msgtext'] = 'Celá zpráva';
$labels['body'] = 'Tělo';
-$labels['type'] = 'Type';
-
+$labels['type'] = 'Typ';
+$labels['namex'] = 'Jméno';
$labels['openinextwin'] = 'Otevřít v novém okně';
$labels['emlsave'] = 'Stáhnout (.eml)';
$labels['changeformattext'] = 'Zobrazit v textovém formátu';
$labels['changeformathtml'] = 'Zobrazit v HTML formátu';
-
-// message compose
$labels['editasnew'] = 'Upravit jako novou';
$labels['send'] = 'Odeslat';
$labels['sendmessage'] = 'Odeslat zprávu nyní';
@@ -224,26 +192,32 @@ $labels['returnreceipt'] = 'DoruÄenka';
$labels['dsn'] = 'Stav doruÄení';
$labels['mailreplyintro'] = 'Dne $date, $sender napsal:';
$labels['originalmessage'] = 'Původní zpráva';
-
$labels['editidents'] = 'Editovat identity';
$labels['spellcheck'] = 'Pravopis';
$labels['checkspelling'] = 'Zkontrolovat pravopis';
$labels['resumeediting'] = 'PokraÄovat v úpravách';
$labels['revertto'] = 'Přejít na';
-
+$labels['restore'] = 'Obnovit';
+$labels['restoremessage'] = 'Obnovit zprávu?';
+$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';
$labels['uploadprogress'] = '$percent ($current z $total)';
$labels['close'] = 'Zavřít';
$labels['messageoptions'] = 'Nastavení zprávy...';
-
$labels['low'] = 'Nízká';
$labels['lowest'] = 'Nejnižší';
$labels['normal'] = 'Normální';
$labels['high'] = 'Vysoká';
$labels['highest'] = 'Nejvyšší';
-
$labels['nosubject'] = '(bez predmetu)';
$labels['showimages'] = 'Zobrazit obrázky';
$labels['alwaysshow'] = 'Vždy ukazovat obrázky od $sender';
@@ -251,25 +225,19 @@ $labels['isdraft'] = 'Toto je šablona zprávy.';
$labels['andnmore'] = '$nr dalších...';
$labels['togglemoreheaders'] = 'Zobrazit více hlaviÄek zprávy';
$labels['togglefullheaders'] = 'PÅ™epnout skuteÄné hlaviÄky zprávy';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Prostý text';
$labels['savesentmessagein'] = 'Ukládat odeslané zprávy v';
$labels['dontsave'] = 'neukládat';
$labels['maxuploadsize'] = 'Maximální povolená velikost souboru je $size';
-
$labels['addcc'] = 'Přidat pole "Kopie';
$labels['addbcc'] = 'Přidat pole "Skrytá kopie';
$labels['addreplyto'] = 'PÅ™idat pole "OdpovÄ›Ä';
$labels['addfollowupto'] = 'Přidat pole "Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Odesílatel této zprávy si přeje být upozorněn na to, že jste zprávu obdrželi. Chcete přijetí zprávy potvrdit?';
$labels['receiptread'] = 'Potvrzení o přijetí zprávy';
$labels['yourmessage'] = 'Toto je potvrzení o přijetí Vaší zprávy';
$labels['receiptnote'] = 'Poznámka: Toto potvrzení negarantuje, že zpráva byla příjemce pÅ™eÄtena a že porozumÄ›l jejímu obsahu.';
-
-// address boook
$labels['name'] = 'Zobrazit jméno';
$labels['firstname'] = 'Jméno';
$labels['surname'] = 'Příjmení';
@@ -304,7 +272,6 @@ $labels['search'] = 'Hledat';
$labels['advsearch'] = 'PokroÄilé vyhledávání';
$labels['advanced'] = 'PokroÄilé';
$labels['other'] = 'Ostatní';
-
$labels['typehome'] = 'Domací';
$labels['typework'] = 'Pracovní';
$labels['typeother'] = 'Ostatní';
@@ -319,14 +286,12 @@ $labels['typeassistant'] = 'Asistent';
$labels['typehomepage'] = 'Domácí stránka';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Přidat položku';
$labels['addcontact'] = 'Přidat kontakt';
$labels['editcontact'] = 'Upravit kontakt';
$labels['contacts'] = 'Kontakty';
$labels['contactproperties'] = 'Vlastnosti kontaktu';
$labels['personalinfo'] = 'Osobní informace';
-
$labels['edit'] = 'Upravit';
$labels['cancel'] = 'Konec';
$labels['save'] = 'Uložit';
@@ -335,7 +300,6 @@ $labels['rename'] = 'Přejmenovat';
$labels['addphoto'] = 'Přidat';
$labels['replacephoto'] = 'Změnit';
$labels['uploadphoto'] = 'Nahrát fotku';
-
$labels['newcontact'] = 'Vytvořit nový kontakt';
$labels['deletecontact'] = 'Smazat vybrané kontakty';
$labels['composeto'] = 'Poslat e-mail';
@@ -349,42 +313,36 @@ $labels['newcontactgroup'] = 'Vytvořit novou skupinu kontaktů';
$labels['grouprename'] = 'Přejmenovat skupinu';
$labels['groupdelete'] = 'Smazat skupinu';
$labels['groupremoveselected'] = 'Odstranit oznaÄené kontakty ze skupiny';
-
$labels['previouspage'] = 'Předchozí';
$labels['firstpage'] = 'Zobrazit první zprávy';
$labels['nextpage'] = 'Další';
$labels['lastpage'] = 'Zobrazit poslední zprávy';
-
$labels['group'] = 'Skupina';
$labels['groups'] = 'Skupiny';
$labels['listgroup'] = ' Seznam Älenů skupiny';
$labels['personaladrbook'] = 'Osobní kontakty';
-
$labels['searchsave'] = 'Uložit hledání';
$labels['searchdelete'] = 'Smazat hledání';
-
$labels['import'] = 'Import';
$labels['importcontacts'] = 'Importovat kontakty';
$labels['importfromfile'] = 'Importovat ze souboru';
-$labels['importtarget'] = 'Přidat nové kontakty do seznamu kontaktů:';
+$labels['importtarget'] = 'Přidat kontakty k';
$labels['importreplace'] = 'Nahradit celý seznam kontaktů';
+$labels['importgroups'] = 'Importovat přiřazení do skupin';
+$labels['importgroupsall'] = 'Vše (vytvořit skupiny v případě potřeby)';
+$labels['importgroupsexisting'] = 'Pouze pro existující skupiny';
$labels['importdesc'] = 'Můžete nahrát kontakty z existujícího adresáře kontaktů.<br/>Momentálně podporujeme kontakty ve formátu <a href="http://cs.wikipedia.org/wiki/VCard">vCard</a> nebo CSV (comma-separated).';
$labels['done'] = 'Hotovo';
-
-// settings
$labels['settingsfor'] = 'Nastavení pro';
$labels['about'] = 'O programu';
$labels['preferences'] = 'Vlastnosti';
$labels['userpreferences'] = 'Vlastnosti uživatele';
$labels['editpreferences'] = 'Upravit vlastnosti uživatele';
-
$labels['identities'] = 'Profily';
$labels['manageidentities'] = 'Spravovat profily u tohoto úÄtu';
$labels['newidentity'] = 'Nový profil';
-
$labels['newitem'] = 'Nová položka';
$labels['edititem'] = 'Upravit položku';
-
$labels['preferhtml'] = 'Upřednostňovat HTML zobrazení';
$labels['defaultcharset'] = 'Výchozí kódování';
$labels['htmlmessage'] = 'HTML zpráva';
@@ -480,7 +438,9 @@ $labels['standardwindows'] = 'Zacházet s vyskakovacími okny jako se standardnÃ
$labels['forwardmode'] = 'Přeposlat zprávu';
$labels['inline'] = 'vloženě';
$labels['asattachment'] = 'jako přílohu';
-
+$labels['replyallmode'] = 'Výchozí akce tlaÄítka [OdpovÄ›dÄ›t vÅ¡em]';
+$labels['replyalldefault'] = 'odpovědět všem';
+$labels['replyalllist'] = 'odpovědět pouze do poštovní konference (pokud je nalezena)';
$labels['folder'] = 'Složka';
$labels['folders'] = 'Složky';
$labels['foldername'] = 'Jméno složky';
@@ -501,26 +461,20 @@ $labels['foldertype'] = 'Typ složky';
$labels['personalfolder'] = 'Soukromá složka';
$labels['otherfolder'] = 'Složky ostatních uživatelů';
$labels['sharedfolder'] = 'Sdílená složka';
-
$labels['sortby'] = 'Seřadit podle';
$labels['sortasc'] = 'Seřadit vzestupně';
$labels['sortdesc'] = 'Seřadit sestupně';
$labels['undo'] = 'Vrátit zpět';
-
$labels['installedplugins'] = 'Nainstalované pluginy';
$labels['plugin'] = 'Zásuvný modul';
$labels['version'] = 'Verze';
$labels['source'] = 'Zdroj';
$labels['license'] = 'Licence';
$labels['support'] = 'Podpora';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'AngliÄtina';
$labels['westerneuropean'] = 'Západní Evropa';
@@ -539,5 +493,4 @@ $labels['vietnamese'] = 'Vietnamština';
$labels['japanese'] = 'Japonština';
$labels['korean'] = 'Korejština';
$labels['chinese'] = 'Čínština';
-
?>
diff --git a/program/localization/cs_CZ/messages.inc b/program/localization/cs_CZ/messages.inc
index 59b2c6bd6..a4c63b0e0 100644
--- a/program/localization/cs_CZ/messages.inc
+++ b/program/localization/cs_CZ/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Došlo k chybě!';
$messages['loginfailed'] = 'Přihlášení selhalo';
$messages['cookiesdisabled'] = 'Váš prohlížeÄ nepodporuje cookies, které jsou pro pÅ™ihlášení nezbytné';
@@ -46,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';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'Zadejte, prosím, alespoň jednoho příjemce
$messages['nosubjectwarning'] = 'Předmět nebyl vyplňen. Přejete si jej zadat nyní?';
$messages['nobodywarning'] = 'Opravdu chtete odeslat prázdnou zprávu?';
$messages['notsentwarning'] = 'Zpráva nebyla odeslána. Přejete si zprávu zahodit?';
+$messages['restoresavedcomposedata'] = 'Byla nalezena dříve vytvořená ale neodeslaná zpráva.\n\nPředmět: $subject\nUloženo: $date\n\nPřejete si obnovit tuto zprávu?';
$messages['noldapserver'] = 'Zvolte, prosím, LDAP server k hledání';
$messages['nosearchname'] = 'Zadejte, prosím, jméno nebo e-mail kontaktu';
$messages['notuploadedwarning'] = 'JeÅ¡tÄ› nebyly nahrány vÅ¡echny přílohy. PoÄkejte prosím nebo nahrávání zruÅ¡te.';
@@ -101,13 +102,16 @@ $messages['converting'] = 'Odstraňuji formátování ze zprávy...';
$messages['messageopenerror'] = 'Nemohu naÄíst zprávu ze serveru';
$messages['fileuploaderror'] = 'Nahrávání souboru selhalo';
$messages['filesizeerror'] = 'Soubor přesáhl maximální velikost $size';
-$messages['copysuccess'] = 'Úspěšně zkopírováno $nr adres';
-$messages['copyerror'] = 'Nemohu zkopírovat žádnou adresu';
+$messages['copysuccess'] = 'Úspěšně zkopírováno $nr kontaktů.';
+$messages['movesuccess'] = 'Úspěšně přesunuto $nr kontaktů.';
+$messages['copyerror'] = 'Kontakty nelze kopírovat.';
+$messages['moveerror'] = 'Kontakty nelze přesunout.';
$messages['sourceisreadonly'] = 'Tento zdroj adres je pouze pro Ätení';
$messages['errorsavingcontact'] = 'Nemohu uložit adresu kontaktu';
$messages['movingmessage'] = 'Přesouvám zprávu...';
$messages['copyingmessage'] = 'Kopíruji zprávu...';
$messages['copyingcontact'] = 'Kopíruji kontakty...';
+$messages['movingcontact'] = 'Přesouvání kontaktů()...';
$messages['deletingmessage'] = 'Odstraňuji zprávu...';
$messages['markingmessage'] = 'OznaÄuji zprávu...';
$messages['addingmember'] = 'Přidávám kontakty do skupiny...';
@@ -141,7 +145,7 @@ $messages['smtperror'] = 'Chyba SMTP: $msg';
$messages['emailformaterror'] = 'Neplatná e-mailová adresa: $email';
$messages['toomanyrecipients'] = 'PříliÅ¡ mnoho příjemců. Změňte poÄet příjemců na $max.';
$messages['maxgroupmembersreached'] = 'PoÄet Älenských skupin dosáhl maximum z $max';
-$messages['internalerror'] = 'Došlo k interní chybě. Zkuste to znovu';
+$messages['internalerror'] = 'Došlo k interní chybě. Zkuste to prosím znovu.';
$messages['contactdelerror'] = 'Kontakty nelze odstranit';
$messages['contactdeleted'] = 'Kontakty byly odstraněny';
$messages['contactrestoreerror'] = 'Nelze obnovit smazané kontakty';
@@ -169,5 +173,4 @@ $messages['parentnotwritable'] = 'Nelze vytvořit/přesunout složku do vybrané
$messages['messagetoobig'] = 'Část zprávy je příliš velká pro zpracování.';
$messages['attachmentvalidationerror'] = 'Varování: Tato příloha je podezÅ™elá, protože její typ se neshoduje s typem uvedeným ve zprávÄ›. Pokud nedůvěřujete odesílateli, nemÄ›li byste přílohu otevírat v prohlížeÄi, protože může obsahovat Å¡kodlivý obsah.<br/><br/><em>OÄekáváno: $expected; nalezeno: $detected</em>';
$messages['noscriptwarning'] = 'UpozornÄ›ní: Tato emailová aplikace vyžaduje Javascript! Prosím, zapnÄ›te Javascript v nastavení prohlížeÄe.';
-
?>
diff --git a/program/localization/cy_GB/labels.inc b/program/localization/cy_GB/labels.inc
index ea5d047c9..37ee5bbc1 100644
--- a/program/localization/cy_GB/labels.inc
+++ b/program/localization/cy_GB/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Croeso i $product';
$labels['username'] = 'Enw defnyddiwr';
$labels['password'] = 'Cyfrinair';
$labels['server'] = 'Gweinydd';
$labels['login'] = 'Mewngofnodi';
-
-// taskbar
$labels['logout'] = 'Allgofnodi';
$labels['mail'] = 'E-bost';
$labels['settings'] = 'Gosodiadau Personol';
$labels['addressbook'] = 'Llyfr Cyfeiriadau';
-
-// mailbox names
$labels['inbox'] = 'Mewnflwch';
$labels['drafts'] = 'Drafftiau';
$labels['sent'] = 'Danfonwyd';
$labels['trash'] = 'Sbwriel';
$labels['junk'] = 'Sothach';
$labels['show_real_foldernames'] = 'Dangos enwau go-iawn ar gyfer ffolderi arbennig';
-
-// message listing
$labels['subject'] = 'Pwnc';
$labels['from'] = 'Anfonwr';
$labels['sender'] = 'Anfonwr';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Blaenoriaeth';
$labels['organization'] = 'Enw\'r Sefydliad';
$labels['readstatus'] = 'Statws darllen';
$labels['listoptions'] = 'Dewisiadau rhestr...';
-
$labels['mailboxlist'] = 'Ffolderi';
$labels['messagesfromto'] = 'Negeseuon $from i $to o $count';
$labels['threadsfromto'] = 'Edefau $from i $to o $count';
$labels['messagenrof'] = 'Neges $nr o $count';
$labels['fromtoshort'] = '$from - $to o $count';
-
$labels['copy'] = 'Copio';
$labels['move'] = 'Symud';
$labels['moveto'] = 'Symud i...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Llwytho lawr';
$labels['open'] = 'Agor';
$labels['showattachment'] = 'Dangos';
$labels['showanyway'] = 'Dangos beth bynnag';
-
$labels['filename'] = 'Enw ffeil';
$labels['filesize'] = 'Maint ffeil';
-
$labels['addtoaddressbook'] = 'Ychwanegu i\'r llyfr cyfeiriadau';
-
-// weekdays short
$labels['sun'] = 'Sul';
$labels['mon'] = 'Llun';
$labels['tue'] = 'Maw';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Mer';
$labels['thu'] = 'Iau';
$labels['fri'] = 'Gwe';
$labels['sat'] = 'Sad';
-
-// weekdays long
$labels['sunday'] = 'Dydd Sul';
$labels['monday'] = 'Dydd Llun';
$labels['tuesday'] = 'Dydd Mawrth';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Dydd Mercher';
$labels['thursday'] = 'Dydd Iau';
$labels['friday'] = 'Dydd Gwener';
$labels['saturday'] = 'Dydd Sadwrn';
-
-// months short
$labels['jan'] = 'Ion';
$labels['feb'] = 'Chwe';
$labels['mar'] = 'Maw';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Med';
$labels['oct'] = 'Hyd';
$labels['nov'] = 'Tach';
$labels['dec'] = 'Rhag';
-
-// months long
$labels['longjan'] = 'Ionawr';
$labels['longfeb'] = 'Chwefror';
$labels['longmar'] = 'Mawrth';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Medi';
$labels['longoct'] = 'Hydref';
$labels['longnov'] = 'Tachwedd';
$labels['longdec'] = 'Rhagfyr';
-
$labels['today'] = 'Heddiw';
-
-// toolbar buttons
$labels['refresh'] = 'Ail-ofyn';
$labels['checkmail'] = 'Edrych am negeseuon newydd';
$labels['compose'] = 'Ysgrifennu neges';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Mwy o weithredoedd...';
$labels['more'] = 'Mwy';
$labels['back'] = 'Yn ôl';
$labels['options'] = 'Dewisiadau';
-
$labels['select'] = 'Dewis';
$labels['all'] = 'Popeth';
$labels['none'] = 'Dim';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Ehangu Popeth';
$labels['expand-unread'] = 'Ehangu Negeseuon Heb eu darllen';
$labels['collapse-all'] = 'Crebachu Popeth';
$labels['threaded'] = 'Edafedd';
-
$labels['autoexpand_threads'] = 'Ehangu edefau neges';
$labels['do_expand'] = 'pob edefyn';
$labels['expand_only_unread'] = 'dim ond gyda negeseuon heb eu darllen';
@@ -190,16 +163,13 @@ $labels['listcolumns'] = 'Rhestr colofnau';
$labels['listsorting'] = 'Colofn trefnu';
$labels['listorder'] = 'Trefn didoli';
$labels['listmode'] = 'Golwg rhestr';
-
$labels['folderactions'] = 'Gweithredoedd ffolder...';
$labels['compact'] = 'Crynhoi';
$labels['empty'] = 'Gwagio';
$labels['importmessages'] = 'Mewnforio negeseuon';
-
$labels['quota'] = 'Defnydd';
$labels['unknown'] = 'anhysbys';
$labels['unlimited'] = 'diderfyn';
-
$labels['quicksearch'] = 'Chwiliad cyflym';
$labels['resetsearch'] = 'Ail-osod chwiliad';
$labels['searchmod'] = 'Addasyddion chwilio';
@@ -207,13 +177,10 @@ $labels['msgtext'] = 'Y neges yn llawn';
$labels['body'] = 'Corff';
$labels['type'] = 'Math';
$labels['namex'] = 'Enw';
-
$labels['openinextwin'] = 'Agor mewn ffenest newydd';
$labels['emlsave'] = 'Llwytho lawr (.eml)';
$labels['changeformattext'] = 'Dangos mewn fformat testun plaen';
$labels['changeformathtml'] = 'Dangos mewn fformat HTML';
-
-// message compose
$labels['editasnew'] = 'Golygu fel neges newydd';
$labels['send'] = 'Anfon';
$labels['sendmessage'] = 'Danfon nawr';
@@ -225,26 +192,22 @@ $labels['returnreceipt'] = 'Cadarnhau derbyn';
$labels['dsn'] = 'Hysbysiad statws danfon';
$labels['mailreplyintro'] = 'Ar $date, ysgrifennodd $sender:';
$labels['originalmessage'] = 'Neges Wreiddiol';
-
$labels['editidents'] = 'Golygu personoliaethau';
$labels['spellcheck'] = 'Sillafu';
$labels['checkspelling'] = 'Gwirio sillafu';
$labels['resumeediting'] = 'Ail-ddechrau golygu';
$labels['revertto'] = 'Dychwelyd i';
-
$labels['attach'] = 'Atodi';
$labels['attachments'] = 'Atodiadau';
$labels['upload'] = 'Llwytho fyny';
$labels['uploadprogress'] = '$percent ($current o $total)';
$labels['close'] = 'Cau';
$labels['messageoptions'] = 'Dewisiadau neges...';
-
$labels['low'] = 'Isel';
$labels['lowest'] = 'Isaf';
$labels['normal'] = 'Cyffredin';
$labels['high'] = 'Uchel';
$labels['highest'] = 'Uchaf';
-
$labels['nosubject'] = '(dim pwnc)';
$labels['showimages'] = 'Dangos lluniau';
$labels['alwaysshow'] = 'Dangos lluniau bob amser o $sender';
@@ -252,25 +215,19 @@ $labels['isdraft'] = 'Mae hwn yn neges ddrafft';
$labels['andnmore'] = '$nr mwy...';
$labels['togglemoreheaders'] = 'Dangos fwy o benynnau\'r neges';
$labels['togglefullheaders'] = 'Toglo penawdau llawn y neges';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Testun plaen';
$labels['savesentmessagein'] = 'Cadw negeseuon a ddanfonir yn';
$labels['dontsave'] = 'peidio cadw';
$labels['maxuploadsize'] = 'Y maint ffeil uchaf a ganiateir yw $size';
-
$labels['addcc'] = 'Ychwanegu Cc';
$labels['addbcc'] = 'Ychwanegu Bcc';
$labels['addreplyto'] = 'Ychwanegu Ateb-I';
$labels['addfollowupto'] = 'Ychwanegu Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Mae anfonwr y neges hwn wedi gofyn am hysbysiad eich bod wedi darllen y neges. Hoffech chi hysbysu\'r anfonwr?';
$labels['receiptread'] = 'Cadarnhad Derbyn (darllenwyd)';
$labels['yourmessage'] = 'Mae hwn yn gadarnhad o dderbyn eich neges';
$labels['receiptnote'] = 'Nodyn: Mae\'r cadarnhad hwn yn cydnabod fod y neges wedi ei ddangos ar gyfrifiadur y derbynnydd. \'Does dim sicrwydd fod y derbynydd wedi darllen neu ddeall cynnwys y neges.';
-
-// address boook
$labels['name'] = 'Enw ddangosir';
$labels['firstname'] = 'Enw cyntaf';
$labels['surname'] = 'Enw olaf';
@@ -305,7 +262,6 @@ $labels['search'] = 'Chwilio';
$labels['advsearch'] = 'Chwilio Uwch';
$labels['advanced'] = 'Uwch';
$labels['other'] = 'Arall';
-
$labels['typehome'] = 'Cartref';
$labels['typework'] = 'Gwaith';
$labels['typeother'] = 'Arall';
@@ -320,14 +276,12 @@ $labels['typeassistant'] = 'Cynorthwyydd';
$labels['typehomepage'] = 'Gwefan';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Proffil';
-
$labels['addfield'] = 'Ychwanegu maes...';
$labels['addcontact'] = 'Ychwanegu cyswllt newydd';
$labels['editcontact'] = 'Golygu cyswllt';
$labels['contacts'] = 'Cysylltiadau';
$labels['contactproperties'] = 'Nodweddion cyswllt';
$labels['personalinfo'] = 'Gwybodaeth bersonol';
-
$labels['edit'] = 'Golygu';
$labels['cancel'] = 'Canslo';
$labels['save'] = 'Cadw';
@@ -336,7 +290,6 @@ $labels['rename'] = 'Ail-enwi';
$labels['addphoto'] = 'Ychwanegu';
$labels['replacephoto'] = 'Amnewid';
$labels['uploadphoto'] = 'Llwytho fyny llun';
-
$labels['newcontact'] = 'Creu cerdyn cyswllt newydd';
$labels['deletecontact'] = 'Dileu y cysylltiadau a ddewiswyd';
$labels['composeto'] = 'Ysgrifennu neges at';
@@ -350,20 +303,16 @@ $labels['newcontactgroup'] = 'Creu grŵp cysylltiadau newydd';
$labels['grouprename'] = 'Ail-enwi grŵp';
$labels['groupdelete'] = 'Dileu grŵp';
$labels['groupremoveselected'] = 'Dileu y cysylltiadau dewiswyd o\'r grŵp';
-
$labels['previouspage'] = 'Dangos y set flaenorol';
$labels['firstpage'] = 'Dangos y set gyntaf';
$labels['nextpage'] = 'Dangos y set nesaf';
$labels['lastpage'] = 'Dangos y set olaf';
-
$labels['group'] = 'Grŵp';
$labels['groups'] = 'Grwpiau';
$labels['listgroup'] = 'Rhestru aelodau\'r grŵp';
$labels['personaladrbook'] = 'Cyfeiriadau Personol';
-
$labels['searchsave'] = 'Cadw chwiliad';
$labels['searchdelete'] = 'Dileu chwiliad';
-
$labels['import'] = 'Mewnforio';
$labels['importcontacts'] = 'Mewnforio cysylltiadau';
$labels['importfromfile'] = 'Mewnforio o ffeil:';
@@ -374,21 +323,16 @@ $labels['importgroupsall'] = 'Holl (creu grwpiau os oes angen)';
$labels['importgroupsexisting'] = 'Dim ond ar gyfer grwpiau sy\'n bodoli';
$labels['importdesc'] = 'Fe allwch chi lwytho fyny cysylltiadau o lyfr cyfeiriadau presennol.<br/>Ar hyn o bryd, rydym yn cefnogi mewnforio cyfeiriadau o\'r fformatau <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> neu CSV.';
$labels['done'] = 'Wedi gorffen';
-
-// settings
$labels['settingsfor'] = 'Gosodiadau ar gyfer';
$labels['about'] = 'Amdan';
$labels['preferences'] = 'Dewisiadau';
$labels['userpreferences'] = 'Dewisiadau\'r defnyddiwr';
$labels['editpreferences'] = 'Golygu dewisiadau\'r defnyddiwr';
-
$labels['identities'] = 'Personoliaethau';
$labels['manageidentities'] = 'Rheoli personoliaethau ar gyfer y cyfri hwn';
$labels['newidentity'] = 'Personoliaeth newydd';
-
$labels['newitem'] = 'Eitem newydd';
$labels['edititem'] = 'Golygu eitem';
-
$labels['preferhtml'] = 'Dangos HTML';
$labels['defaultcharset'] = 'Set Nodau Diofyn';
$labels['htmlmessage'] = 'Neges HTML';
@@ -484,7 +428,6 @@ $labels['standardwindows'] = 'Trin ffenestri naid fel ffenestri arferol';
$labels['forwardmode'] = 'Danfon neges ymlaen';
$labels['inline'] = 'mewnlin';
$labels['asattachment'] = 'fel atodiad';
-
$labels['folder'] = 'Ffolder';
$labels['folders'] = 'Ffolderi';
$labels['foldername'] = 'Enw ffolder';
@@ -505,26 +448,20 @@ $labels['foldertype'] = 'Math Ffolder';
$labels['personalfolder'] = 'Ffolder Preifat';
$labels['otherfolder'] = 'Ffolder Defnyddiwr Arall';
$labels['sharedfolder'] = 'Ffolder Cyhoeddus';
-
$labels['sortby'] = 'Trefnu yn ôl';
$labels['sortasc'] = 'Trefn esgynnol';
$labels['sortdesc'] = 'Trefn ddisgynnol';
$labels['undo'] = 'Dad-wneud';
-
$labels['installedplugins'] = 'Ategynnau wedi eu gosod';
$labels['plugin'] = 'Ategyn';
$labels['version'] = 'Fersiwn';
$labels['source'] = 'Ffynhonnell';
$labels['license'] = 'Trwydded';
$labels['support'] = 'Gofyn am gymorth';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Saesneg';
$labels['westerneuropean'] = 'Gorllewin Ewropeaidd';
@@ -543,5 +480,4 @@ $labels['vietnamese'] = 'Fietnamaidd';
$labels['japanese'] = 'Japaneaidd';
$labels['korean'] = 'Corëeg';
$labels['chinese'] = 'Tsieineaidd';
-
?>
diff --git a/program/localization/cy_GB/messages.inc b/program/localization/cy_GB/messages.inc
index 6323d8c9c..be6c4dac6 100644
--- a/program/localization/cy_GB/messages.inc
+++ b/program/localization/cy_GB/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Fe gafwyd gwall!';
$messages['loginfailed'] = 'Methwyd a\'ch mewngofnodi';
$messages['cookiesdisabled'] = 'Nid yw eich porwr yn derbyn cwcis';
@@ -56,7 +54,7 @@ $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 cadw\'r neges ddanfonwyd';
+$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)';
@@ -172,5 +170,4 @@ $messages['parentnotwritable'] = 'Methwyd creu/symud ffolder i\'r ffolder rhiant
$messages['messagetoobig'] = 'Mae darn y neges yn rhy fawr i\'w brosesu.';
$messages['attachmentvalidationerror'] = 'RHYBUDD! Mae\'r atodiad yn amheus oherwydd nid yw ei fath yn gymharu\'r gyda\'r math ddatganwyd yn y neges. Os nad ydych yn ymddiried yn y danfonwr, ni ddylech agor hwn yn y porwr oherwydd fe all gynnwys ffeil maleisus.<br></br><em>Disgwylwyd:$expected;canfuwyd:$detected</em>';
$messages['noscriptwarning'] = 'Rhybudd: Mae\'r gwasanaeth gwebost angen Javascript i weithio! Er mwyn ei ddefnyddio, galluogwch Javascript yng ngosodiadau eich porwr.';
-
?>
diff --git a/program/localization/da_DK/labels.inc b/program/localization/da_DK/labels.inc
index a5b9b3bc8..a452a348c 100644
--- a/program/localization/da_DK/labels.inc
+++ b/program/localization/da_DK/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Velkommen til $product';
$labels['username'] = 'Brugernavn';
$labels['password'] = 'Adgangskode';
$labels['server'] = 'Server';
$labels['login'] = 'Log på';
-
-// taskbar
$labels['logout'] = 'Log af';
$labels['mail'] = 'E-mail';
$labels['settings'] = 'Indstillinger';
$labels['addressbook'] = 'Adressebog';
-
-// mailbox names
$labels['inbox'] = 'Indbakke';
$labels['drafts'] = 'Kladder';
$labels['sent'] = 'Sendt post';
$labels['trash'] = 'Papirkurv';
$labels['junk'] = 'Spam';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
+$labels['show_real_foldernames'] = 'Vis rigtige navne for specielle mapper';
$labels['subject'] = 'Emne';
$labels['from'] = 'Afsender';
$labels['sender'] = 'Afsender';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Prioritet';
$labels['organization'] = 'Firma';
$labels['readstatus'] = 'Læst status';
$labels['listoptions'] = 'Listeindstillinger';
-
$labels['mailboxlist'] = 'Mapper';
$labels['messagesfromto'] = 'Besked $from til $to af $count';
$labels['threadsfromto'] = 'Tråd $from til $to af $count';
$labels['messagenrof'] = 'Besked $nr af $count';
$labels['fromtoshort'] = '$from – $to af $count';
-
$labels['copy'] = 'Kopiér';
$labels['move'] = 'Flyt';
$labels['moveto'] = 'Flyt til...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Download';
$labels['open'] = 'Ã…ben';
$labels['showattachment'] = 'Vis';
$labels['showanyway'] = 'Vis alligevel';
-
$labels['filename'] = 'Filnavn';
$labels['filesize'] = 'Filstørrelse';
-
$labels['addtoaddressbook'] = 'Tilføj til adressebog';
-
-// weekdays short
$labels['sun'] = 'Søn';
$labels['mon'] = 'Man';
$labels['tue'] = 'Tir';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Ons';
$labels['thu'] = 'Tor';
$labels['fri'] = 'Fre';
$labels['sat'] = 'Lør';
-
-// weekdays long
$labels['sunday'] = 'Søndag';
$labels['monday'] = 'Mandag';
$labels['tuesday'] = 'Tirsdag';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Onsdag';
$labels['thursday'] = 'Torsdag';
$labels['friday'] = 'Fredag';
$labels['saturday'] = 'Lørdag';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
-
-// months long
$labels['longjan'] = 'Januar';
$labels['longfeb'] = 'Februar';
$labels['longmar'] = 'Marts';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'September';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'December';
-
$labels['today'] = 'I dag';
-
-// toolbar buttons
$labels['refresh'] = 'Opdatér';
$labels['checkmail'] = 'Se efter nye beskeder';
$labels['compose'] = 'Ny besked';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Flere funktioner...';
$labels['more'] = 'Mere';
$labels['back'] = 'Tilbage';
$labels['options'] = 'Indstillinger';
-
$labels['select'] = 'Vælg';
$labels['all'] = 'Alle';
$labels['none'] = 'Ingen';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Udfold alle';
$labels['expand-unread'] = 'Udfold ulæste';
$labels['collapse-all'] = 'Fold alle';
$labels['threaded'] = 'Trådet';
-
$labels['autoexpand_threads'] = 'Udfold besked tråde';
$labels['do_expand'] = 'alle tråde';
$labels['expand_only_unread'] = 'kun dem med ulæste beskeder';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Vist kolonne';
$labels['listsorting'] = 'Sorteringskolonne';
$labels['listorder'] = 'Sorter efter';
$labels['listmode'] = 'Listevisningsmode';
-
$labels['folderactions'] = 'Mappehandlinger...';
$labels['compact'] = 'Ryd op';
$labels['empty'] = 'Tøm';
-$labels['importmessages'] = 'Import messages';
-
+$labels['importmessages'] = 'Importer beskeder';
$labels['quota'] = 'Diskforbrug';
$labels['unknown'] = 'ukendt';
$labels['unlimited'] = 'ubegrænset';
-
$labels['quicksearch'] = 'Hurtigsøg';
$labels['resetsearch'] = 'Nulstil søgning';
$labels['searchmod'] = 'Søgeparametre';
$labels['msgtext'] = 'Hele beskeden';
$labels['body'] = 'Body';
$labels['type'] = 'Type';
-
+$labels['namex'] = 'Navn';
$labels['openinextwin'] = 'Ã…bn i nyt vindue';
$labels['emlsave'] = 'Download (.eml)';
$labels['changeformattext'] = 'Vis i ren tekst format';
$labels['changeformathtml'] = 'Vis i HTML format';
-
-// message compose
$labels['editasnew'] = 'Redigér som ny';
$labels['send'] = 'Send';
$labels['sendmessage'] = 'Send besked';
@@ -224,26 +192,32 @@ $labels['returnreceipt'] = 'Anmod om kvittering ved læst';
$labels['dsn'] = 'Anmod om leveringsstatus';
$labels['mailreplyintro'] = '$sender skrev den $date:';
$labels['originalmessage'] = 'Original besked';
-
$labels['editidents'] = 'Ret identiteter';
$labels['spellcheck'] = 'Stav';
$labels['checkspelling'] = 'Stavekontrol';
$labels['resumeediting'] = 'Genoptag redigering';
$labels['revertto'] = 'Vend tilbage til';
-
+$labels['restore'] = 'Gendan';
+$labels['restoremessage'] = 'Gendan besked';
+$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';
$labels['uploadprogress'] = '$percent ($current af $total)';
$labels['close'] = 'Luk';
$labels['messageoptions'] = 'Beskedmuligheder...';
-
$labels['low'] = 'Lav';
$labels['lowest'] = 'Lavest';
$labels['normal'] = 'Normal';
$labels['high'] = 'Høj';
$labels['highest'] = 'Højest';
-
$labels['nosubject'] = '(intet emne)';
$labels['showimages'] = 'Vis billeder';
$labels['alwaysshow'] = 'Vis altid billeder fra $sender';
@@ -251,25 +225,19 @@ $labels['isdraft'] = 'Dette er en kladde.';
$labels['andnmore'] = '$nr yderligere...';
$labels['togglemoreheaders'] = 'Vis yderligere headers';
$labels['togglefullheaders'] = 'Ændre rå brevhoveder';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Almindelig tekst';
$labels['savesentmessagein'] = 'Gem afsendt besked i';
$labels['dontsave'] = 'gem ikke';
$labels['maxuploadsize'] = 'Maksimale tilladte filstørrelse er $size';
-
$labels['addcc'] = 'Tilføj Cc';
$labels['addbcc'] = 'Tilføj Bcc';
$labels['addreplyto'] = 'Tilføj Svar-Til adresse';
$labels['addfollowupto'] = 'Tilføj følg-op adresse';
-
-// mdn
$labels['mdnrequest'] = 'Afsenderen af denne besked har bedt om at modtage en bekræftelse når du læser beskeden. Vil du sende kvittering for læsning?';
$labels['receiptread'] = 'Send kvittering for læsning';
$labels['yourmessage'] = 'Dette er en kvittering for at din besked er blevet vist';
$labels['receiptnote'] = 'Bemærk: Denne kvittering bekræfter udelukkende at beskeden blev vist på modtagerens computer. Der er ingen garanti for at modtageren har læst eller forstået beskedens indhold.';
-
-// address boook
$labels['name'] = 'Vist navn';
$labels['firstname'] = 'Fornavn';
$labels['surname'] = 'Efternavn';
@@ -304,7 +272,6 @@ $labels['search'] = 'Søg';
$labels['advsearch'] = 'Avanceret søg';
$labels['advanced'] = 'Avanceret';
$labels['other'] = 'Andet';
-
$labels['typehome'] = 'Hjem';
$labels['typework'] = 'Arbejde';
$labels['typeother'] = 'Andet';
@@ -319,14 +286,12 @@ $labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Hjemmeside';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Tilføj felt...';
$labels['addcontact'] = 'Tilføj ny kontakt';
$labels['editcontact'] = 'Redigér kontakt';
$labels['contacts'] = 'Kontakter';
$labels['contactproperties'] = 'Kontaktegenskaber';
$labels['personalinfo'] = 'Personlig information';
-
$labels['edit'] = 'Redigér';
$labels['cancel'] = 'Annullér';
$labels['save'] = 'Gem';
@@ -335,7 +300,6 @@ $labels['rename'] = 'Omdøb';
$labels['addphoto'] = 'Tilføj';
$labels['replacephoto'] = 'Erstat';
$labels['uploadphoto'] = 'Overfør billede';
-
$labels['newcontact'] = 'Opret nyt kontaktkort';
$labels['deletecontact'] = 'Slet valgte kontakter';
$labels['composeto'] = 'Skriv besked til';
@@ -349,42 +313,36 @@ $labels['newcontactgroup'] = 'Opret ny kontaktgruppe';
$labels['grouprename'] = 'Omdøb gruppe';
$labels['groupdelete'] = 'Slet gruppe';
$labels['groupremoveselected'] = 'Fjern markerede kontakter fra gruppen';
-
$labels['previouspage'] = 'Vis den forrige side';
$labels['firstpage'] = 'Vis første side';
$labels['nextpage'] = 'Vis næste side';
$labels['lastpage'] = 'Vis sidste side';
-
$labels['group'] = 'Gruppe';
$labels['groups'] = 'Grupper';
-$labels['listgroup'] = 'List group members';
+$labels['listgroup'] = 'Vis gruppemedlemmer';
$labels['personaladrbook'] = 'Personlige adresser';
-
$labels['searchsave'] = 'Gem søgning';
$labels['searchdelete'] = 'Slet søgning';
-
$labels['import'] = 'Importér';
$labels['importcontacts'] = 'Importér kontakter';
$labels['importfromfile'] = 'Importér fra fil:';
-$labels['importtarget'] = 'Tilføj nye kontakter til adressebogen:';
+$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';
-
-// settings
$labels['settingsfor'] = 'Indstillinger for';
$labels['about'] = 'Om';
$labels['preferences'] = 'Indstillinger';
$labels['userpreferences'] = 'Brugerindstillinger';
$labels['editpreferences'] = 'Redigér brugerindstillinger';
-
$labels['identities'] = 'Identiteter';
$labels['manageidentities'] = 'Styr identiteterne for denne konto';
$labels['newidentity'] = 'Ny identitet';
-
$labels['newitem'] = 'Nyt punkt';
$labels['edititem'] = 'Redigér punkt';
-
$labels['preferhtml'] = 'Vis HTML';
$labels['defaultcharset'] = 'Standard tegnkodning';
$labels['htmlmessage'] = 'HTML-besked';
@@ -480,7 +438,9 @@ $labels['standardwindows'] = 'Behandl popups som standardvinduer';
$labels['forwardmode'] = 'Videresendelse af besked';
$labels['inline'] = 'inline';
$labels['asattachment'] = 'som vedhæftning';
-
+$labels['replyallmode'] = 'Standardhandling til [Svar alle]-knap';
+$labels['replyalldefault'] = 'Svar til alle';
+$labels['replyalllist'] = 'svar kun til mail-liste (hvis fundet)';
$labels['folder'] = 'Mappe';
$labels['folders'] = 'Mapper';
$labels['foldername'] = 'Mappenavn';
@@ -501,26 +461,20 @@ $labels['foldertype'] = 'Mappetype';
$labels['personalfolder'] = 'Privat mappe';
$labels['otherfolder'] = 'Anden brugers mappe';
$labels['sharedfolder'] = 'Offentlig mappe';
-
$labels['sortby'] = 'Sortér efter';
$labels['sortasc'] = 'Ældste først';
$labels['sortdesc'] = 'Nyeste først';
$labels['undo'] = 'Fortryd';
-
$labels['installedplugins'] = 'Installerede udvidelser';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Version';
$labels['source'] = 'Kilde';
$labels['license'] = 'Licens';
$labels['support'] = 'FÃ¥ support';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'kB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Engelsk';
$labels['westerneuropean'] = 'Vesteuropæisk';
@@ -539,5 +493,4 @@ $labels['vietnamese'] = 'Vietnamesisk';
$labels['japanese'] = 'Japansk';
$labels['korean'] = 'Koreansk';
$labels['chinese'] = 'Kinesisk';
-
?>
diff --git a/program/localization/da_DK/messages.inc b/program/localization/da_DK/messages.inc
index 7429fd4e5..1328ed288 100644
--- a/program/localization/da_DK/messages.inc
+++ b/program/localization/da_DK/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Der opstod en fejl!';
$messages['loginfailed'] = 'Det lykkedes ikke at logge på.';
$messages['cookiesdisabled'] = 'Din browser accepterer ikke cookies.';
@@ -46,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.';
@@ -56,8 +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 da den sendte besked blev gemt.';
-$messages['errorsaving'] = 'Der opstod en fejl under gemning.';
+$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.';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'Indtast mindst én modtager.';
$messages['nosubjectwarning'] = '\'Emne\'-feltet er tomt. Kunne du tænke dig at skrive et nu?';
$messages['nobodywarning'] = 'Send denne besked uden tekst?';
$messages['notsentwarning'] = 'Beskeden er ikke sendt. Vil du kassere din besked?';
+$messages['restoresavedcomposedata'] = 'En tidligere skreven men usendt besked blev fundet.\n\nEmne: $subject\nGemt: $date\n\nØnsker du at gendanne denne besked?';
$messages['noldapserver'] = 'Vælg venligst hvilken LDAP-server der skal søges i.';
$messages['nosearchname'] = 'Indtast venligst en kontakts navn eller e-mailadresse.';
$messages['notuploadedwarning'] = 'Ikke alle vedhæftede filer er blevet uploadet endnu. Vent venligst eller afbryd upload.';
@@ -144,7 +145,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'] = 'Der opstod en intern fejl - prøv venligst igen.';
+$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).';
@@ -172,5 +173,4 @@ $messages['parentnotwritable'] = 'Kan ikke oprette/flytte mappe ind i valgt mapp
$messages['messagetoobig'] = 'Denne del af beskeden er for stor til at blive behandlet.';
$messages['attachmentvalidationerror'] = 'ADVARSEL! Den vedhæftede fil er mistænkelig - Typen stemmer ikke overens med den oplyste type. Hvis du ikke har tillid til afsender, skal du ikke åbne filen da den kan indholde onsindet indhold. <br/><br/><em>Forventet: $expected; Fundet: $detected</em>';
$messages['noscriptwarning'] = 'Advarsel: Denne webmailclient kræver Javascript! For at kunne bruge den slå venligst Javascripts til i din browserindstillinger.';
-
?>
diff --git a/program/localization/de_CH/labels.inc b/program/localization/de_CH/labels.inc
index 145a45f57..bfcbcf1e5 100644
--- a/program/localization/de_CH/labels.inc
+++ b/program/localization/de_CH/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Willkommen bei $product';
$labels['username'] = 'Benutzername';
$labels['password'] = 'Passwort';
$labels['server'] = 'Server';
$labels['login'] = 'Login';
-
-// taskbar
$labels['logout'] = 'Logout';
$labels['mail'] = 'E-Mail';
$labels['settings'] = 'Einstellungen';
$labels['addressbook'] = 'Adressbuch';
-
-// mailbox names
$labels['inbox'] = 'Posteingang';
$labels['drafts'] = 'Entwürfe';
$labels['sent'] = 'Gesendet';
$labels['trash'] = 'Gelöscht';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Spezialordner nicht übersetzen';
-
-// message listing
$labels['subject'] = 'Betreff';
$labels['from'] = 'Von';
$labels['sender'] = 'Absender';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Priorität';
$labels['organization'] = 'Organisation';
$labels['readstatus'] = 'Gelesen/Ungelesen';
$labels['listoptions'] = 'Listenoptionen...';
-
$labels['mailboxlist'] = 'Ordner';
$labels['messagesfromto'] = 'Nachrichten $from bis $to von $count';
$labels['threadsfromto'] = 'Konversationen $from bis $to von $count';
$labels['messagenrof'] = 'Nachricht $nr von $count';
$labels['fromtoshort'] = '$from – $to von $count';
-
$labels['copy'] = 'Kopieren';
$labels['move'] = 'Verschieben';
$labels['moveto'] = 'Verschieben nach...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Download';
$labels['open'] = 'Öffnen';
$labels['showattachment'] = 'Anzeigen';
$labels['showanyway'] = 'Trotzdem anzeigen';
-
$labels['filename'] = 'Dateiname';
$labels['filesize'] = 'Dateigrösse';
-
$labels['addtoaddressbook'] = 'Ins Adressbuch übernehmen';
-
-// weekdays short
$labels['sun'] = 'So';
$labels['mon'] = 'Mo';
$labels['tue'] = 'Di';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Mi';
$labels['thu'] = 'Do';
$labels['fri'] = 'Fr';
$labels['sat'] = 'Sa';
-
-// weekdays long
$labels['sunday'] = 'Sonntag';
$labels['monday'] = 'Montag';
$labels['tuesday'] = 'Dienstag';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Mittwoch';
$labels['thursday'] = 'Donnerstag';
$labels['friday'] = 'Freitag';
$labels['saturday'] = 'Samstag';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mär';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dez';
-
-// months long
$labels['longjan'] = 'Januar';
$labels['longfeb'] = 'Februar';
$labels['longmar'] = 'März';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'September';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Dezember';
-
$labels['today'] = 'Heute';
-
-// toolbar buttons
$labels['refresh'] = 'Aktualisieren';
$labels['checkmail'] = 'Auf neue Nachrichten prüfen';
$labels['compose'] = 'Schreiben';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Mehr ...';
$labels['more'] = 'Mehr';
$labels['back'] = 'Zurück';
$labels['options'] = 'Optionen';
-
$labels['select'] = 'Auswählen';
$labels['all'] = 'Alle';
$labels['none'] = 'Keine';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Alle aufklappen';
$labels['expand-unread'] = 'Ungelesene aufklappen';
$labels['collapse-all'] = 'Alle zuklappen';
$labels['threaded'] = 'Gruppiert';
-
$labels['autoexpand_threads'] = 'Konversationen aufklappen';
$labels['do_expand'] = 'alle';
$labels['expand_only_unread'] = 'nur ungelesene';
@@ -190,16 +163,13 @@ $labels['listcolumns'] = 'Spalten';
$labels['listsorting'] = 'Sortierung';
$labels['listorder'] = 'Ordnung';
$labels['listmode'] = 'Anzeigemodus';
-
$labels['folderactions'] = 'Ordneraktionen...';
$labels['compact'] = 'Packen';
$labels['empty'] = 'Leeren';
$labels['importmessages'] = 'Nachrichten importieren';
-
$labels['quota'] = 'Verwendeter Speicherplatz';
$labels['unknown'] = 'unbekannt';
$labels['unlimited'] = 'unlimitiert';
-
$labels['quicksearch'] = 'Schnellsuche';
$labels['resetsearch'] = 'Löschen';
$labels['searchmod'] = 'Suchkriterien ändern';
@@ -207,13 +177,10 @@ $labels['msgtext'] = 'Ganze Nachricht';
$labels['body'] = 'Inhalt';
$labels['type'] = 'Typ';
$labels['namex'] = 'Name';
-
$labels['openinextwin'] = 'In neuem Fenster öffnen';
$labels['emlsave'] = 'Herunterladen (.eml)';
$labels['changeformattext'] = 'Als reiner Text anzeigen';
$labels['changeformathtml'] = 'Als original HTML anzeigen';
-
-// message compose
$labels['editasnew'] = 'Als neue Nachricht öffnen';
$labels['send'] = 'Senden';
$labels['sendmessage'] = 'Nachricht jetzt senden';
@@ -225,26 +192,32 @@ $labels['returnreceipt'] = 'Empfangsbestätigung (MDN)';
$labels['dsn'] = 'Übermittlungsbestätigung (DSN)';
$labels['mailreplyintro'] = 'Am $date, schrieb $sender:';
$labels['originalmessage'] = 'Originalnachricht';
-
$labels['editidents'] = 'Absender bearbeiten';
$labels['spellcheck'] = 'Rechtschreibung';
$labels['checkspelling'] = 'Rechtschreibung prüfen';
$labels['resumeediting'] = 'Bearbeitung fortsetzen';
$labels['revertto'] = 'Zurück zu';
-
+$labels['restore'] = 'Wiederherstellen';
+$labels['restoremessage'] = 'Nachricht wiederherstellen?';
+$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';
$labels['uploadprogress'] = '$percent ($current von $total)';
$labels['close'] = 'Schliessen';
$labels['messageoptions'] = 'Optionen...';
-
$labels['low'] = 'Niedrig';
$labels['lowest'] = 'Niedrigste';
$labels['normal'] = 'Normal';
$labels['high'] = 'Hoch';
$labels['highest'] = 'Höchste';
-
$labels['nosubject'] = '(kein Betreff)';
$labels['showimages'] = 'Bilder anzeigen';
$labels['alwaysshow'] = 'Bilder von $sender immer zeigen';
@@ -252,25 +225,19 @@ $labels['isdraft'] = 'Dies ist ein Entwurf';
$labels['andnmore'] = '$nr weitere...';
$labels['togglemoreheaders'] = 'Weitere Kopfzeilen anzeigen';
$labels['togglefullheaders'] = 'Original-Kopfzeilen ein-/ausblenden';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Klartext';
$labels['savesentmessagein'] = 'Nachricht speichern in';
$labels['dontsave'] = 'nicht speichern';
$labels['maxuploadsize'] = 'Maximal erlaubte Dateigrösse ist $size';
-
$labels['addcc'] = 'Cc hinzufügen';
$labels['addbcc'] = 'Bcc hinzufügen';
$labels['addreplyto'] = 'Antwortadresse hinzufügen';
$labels['addfollowupto'] = 'Followup-To hinzufügen';
-
-// mdn
$labels['mdnrequest'] = 'Der Sender dieser Nachricht hat eine Empfangsbestätigung angefordert. Möchten Sie diese jetzt senden?';
$labels['receiptread'] = 'Empfangsbestätigung (gelesen)';
$labels['yourmessage'] = 'Dieses ist eine Empfangsbestätigung für Ihre Nachricht';
$labels['receiptnote'] = 'Hinweis: Der Empfänger hat den Empfang der Nachricht bestätigt. Dieses ist keine Garantie, dass die Nachricht gelesen und verstanden wurde.';
-
-// address boook
$labels['name'] = 'Anzeigename';
$labels['firstname'] = 'Vorname';
$labels['surname'] = 'Nachname';
@@ -305,7 +272,6 @@ $labels['search'] = 'Suche';
$labels['advsearch'] = 'Erweiterte Suche';
$labels['advanced'] = 'Erweitert';
$labels['other'] = 'Andere';
-
$labels['typehome'] = 'Zuhause';
$labels['typework'] = 'Arbeit';
$labels['typeother'] = 'Andere';
@@ -320,14 +286,12 @@ $labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Homepage';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Feld hinzufügen...';
$labels['addcontact'] = 'Kontakt hinzufügen';
$labels['editcontact'] = 'Kontakt bearbeiten';
$labels['contacts'] = 'Kontakte';
$labels['contactproperties'] = 'Kontaktdaten';
$labels['personalinfo'] = 'Persönliche Informationen';
-
$labels['edit'] = 'Bearbeiten';
$labels['cancel'] = 'Abbrechen';
$labels['save'] = 'Speichern';
@@ -336,7 +300,6 @@ $labels['rename'] = 'Umbenennen';
$labels['addphoto'] = 'Hinzufügen';
$labels['replacephoto'] = 'Ersetzen';
$labels['uploadphoto'] = 'Bild hochladen';
-
$labels['newcontact'] = 'Neuen Kontakt erfassen';
$labels['deletecontact'] = 'Gewählte Kontakte löschen';
$labels['composeto'] = 'Nachricht verfassen';
@@ -350,20 +313,16 @@ $labels['newcontactgroup'] = 'Neue Adressgruppe erstellen';
$labels['grouprename'] = 'Gruppe umbenennen';
$labels['groupdelete'] = 'Gruppe löschen';
$labels['groupremoveselected'] = 'Gewählte Kontakte aus Gruppe entfernen';
-
$labels['previouspage'] = 'Eine Seite zurück';
$labels['firstpage'] = 'Erste Seite';
$labels['nextpage'] = 'Nächste Seite';
$labels['lastpage'] = 'Letzte Seite';
-
$labels['group'] = 'Gruppe';
$labels['groups'] = 'Gruppen';
$labels['listgroup'] = 'Gruppenmitglieder anzeigen';
$labels['personaladrbook'] = 'Persönliches Adressbuch';
-
$labels['searchsave'] = 'Suche speichern';
$labels['searchdelete'] = 'Suche löschen';
-
$labels['import'] = 'Importieren';
$labels['importcontacts'] = 'Adressen importieren';
$labels['importfromfile'] = 'Import aus Datei:';
@@ -374,21 +333,16 @@ $labels['importgroupsall'] = 'Alle (nicht vorhandene Gruppen erstellen)';
$labels['importgroupsexisting'] = 'Für für existierende Gruppen';
$labels['importdesc'] = 'Sie können Kontakte aus einem bestehenden Adressbuch hochladen.rnEs können Adressbücher im <a href="http://de.wikipedia.org/wiki/VCard">vCard</a>- oder CSV-Format importiert werden.';
$labels['done'] = 'Fertig';
-
-// settings
$labels['settingsfor'] = 'Einstellungen für';
$labels['about'] = 'Ãœber';
$labels['preferences'] = 'Einstellungen';
$labels['userpreferences'] = 'Benutzereinstellungen';
$labels['editpreferences'] = 'Einstellungen bearbeiten';
-
$labels['identities'] = 'Absender';
$labels['manageidentities'] = 'Absender für dieses Konto verwalten';
$labels['newidentity'] = 'Neuer Absender';
-
$labels['newitem'] = 'Neuer Eintrag';
$labels['edititem'] = 'Eintrag bearbeiten';
-
$labels['preferhtml'] = 'HTML bevorzugen';
$labels['defaultcharset'] = 'Standard-Zeichensatz';
$labels['htmlmessage'] = 'HTML Nachricht';
@@ -484,7 +438,9 @@ $labels['standardwindows'] = 'Popups als normale Browserfenster öffnen';
$labels['forwardmode'] = 'Weiterleiten einer Nachricht';
$labels['inline'] = 'eingebettet';
$labels['asattachment'] = 'als Anhang';
-
+$labels['replyallmode'] = 'Standard Funktion für [Allen antworten]';
+$labels['replyalldefault'] = 'Allen antworten';
+$labels['replyalllist'] = 'Nur der Mailing-Liste antworten (falls vorhanden)';
$labels['folder'] = 'Ordner';
$labels['folders'] = 'Ordner';
$labels['foldername'] = 'Ordnername';
@@ -505,26 +461,20 @@ $labels['foldertype'] = 'Ordnertyp';
$labels['personalfolder'] = 'Privater Ordner';
$labels['otherfolder'] = 'Order eines anderen Benutzers';
$labels['sharedfolder'] = 'Öffentlicher Ordner';
-
$labels['sortby'] = 'Sortieren nach';
$labels['sortasc'] = 'aufsteigend sortieren';
$labels['sortdesc'] = 'absteigend sortieren';
$labels['undo'] = 'Rückgängig';
-
$labels['installedplugins'] = 'Installierte Plugins';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Version';
$labels['source'] = 'Quellcode';
$labels['license'] = 'Lizenz';
$labels['support'] = 'Support';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Englisch';
$labels['westerneuropean'] = 'Westeuropäisch';
@@ -543,5 +493,4 @@ $labels['vietnamese'] = 'Vietnamesisch';
$labels['japanese'] = 'Japanisch';
$labels['korean'] = 'Koreanisch';
$labels['chinese'] = 'Chinesisch';
-
?>
diff --git a/program/localization/de_CH/messages.inc b/program/localization/de_CH/messages.inc
index 13615d4a7..1b021a360 100644
--- a/program/localization/de_CH/messages.inc
+++ b/program/localization/de_CH/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Fehlermeldung';
$messages['loginfailed'] = 'Login fehlgeschlagen';
$messages['cookiesdisabled'] = 'Ihr Browser akzeptiert keine Cookies';
@@ -46,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';
@@ -57,7 +57,7 @@ $messages['contactsearchonly'] = 'Geben Sie einen Suchbegriff ein, um Kontakte z
$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['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.';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'Bitte geben Sie mindestens einen Empfänger a
$messages['nosubjectwarning'] = 'Die Betreffzeile ist leer. Möchten Sie jetzt einen Betreff eingeben?';
$messages['nobodywarning'] = 'Wollen Sie diese Nachricht ohne Inhalt senden?';
$messages['notsentwarning'] = 'Ihre Nachricht wurde nicht gesendet. Wollen Sie die Nachricht verwerfen?';
+$messages['restoresavedcomposedata'] = 'Eine zuvor verfasste aber nicht gesendete Nachricht wurde gefunden.\n\nBetreff: $subject\nGespeichert: $date\n\nWollen Sie diese Nachricht wiederherstellen?';
$messages['noldapserver'] = 'Bitte wählen Sie einen LDAP-Server aus';
$messages['nosearchname'] = 'Bitte geben Sie einen Namen oder eine E-Mail-Adresse ein.';
$messages['notuploadedwarning'] = 'Es wurden noch nicht alle Dateien hochgeladen. Bitte warten oder Upload abbrechen.';
@@ -172,5 +173,4 @@ $messages['parentnotwritable'] = 'Konnte den Ordner nicht erstellen/verschieben.
$messages['messagetoobig'] = 'Die Nachricht ist zu gross und kann nicht verarbeitet werden.';
$messages['attachmentvalidationerror'] = 'WARNUNG! Dieser Anhang ist verdächtig, da sein Dateityp nicht dem entspricht, was in der Nachricht angegeben wird. Wenn Sie dem Absender nicht vertrauen, sollten Sie diesen Anhang nicht im Browser öffnen, da er Ihrem Computer Schaden zuführen könnte. <br/><br/><em>Erwartet: $expected; gefunden: $detected</em>';
$messages['noscriptwarning'] = 'Achtung! Dieser Webmail-Service erfordert Javascript. Um ihn zu benutzten aktivieren Sie Javascript in ihren Browser-Einstellungen.';
-
?>
diff --git a/program/localization/de_DE/labels.inc b/program/localization/de_DE/labels.inc
index 662ad2c70..e3f4652cc 100644
--- a/program/localization/de_DE/labels.inc
+++ b/program/localization/de_DE/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Willkommen bei $product';
$labels['username'] = 'Benutzername';
$labels['password'] = 'Passwort';
$labels['server'] = 'Server';
$labels['login'] = 'Anmelden';
-
-// taskbar
$labels['logout'] = 'Abmelden';
$labels['mail'] = 'E-Mail';
$labels['settings'] = 'Einstellungen';
$labels['addressbook'] = 'Adressbuch';
-
-// mailbox names
$labels['inbox'] = 'Posteingang';
$labels['drafts'] = 'Entwürfe';
$labels['sent'] = 'Gesendet';
$labels['trash'] = 'Gelöscht';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Echte Namen für Spezialordner anzeigen';
-
-// message listing
$labels['subject'] = 'Betreff';
$labels['from'] = 'Von';
$labels['sender'] = 'Absender';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Priorität';
$labels['organization'] = 'Organisation';
$labels['readstatus'] = 'Gelesen/Ungelesen';
$labels['listoptions'] = 'Listenoptionen...';
-
$labels['mailboxlist'] = 'Ordner';
$labels['messagesfromto'] = 'Nachrichten $from bis $to von $count';
$labels['threadsfromto'] = 'Konversationen $from bis $to von $count';
$labels['messagenrof'] = 'Nachricht $nr von $count';
$labels['fromtoshort'] = '$from – $to von $count';
-
$labels['copy'] = 'Kopieren';
$labels['move'] = 'Verschieben';
$labels['moveto'] = 'Verschieben nach...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Herunterladen';
$labels['open'] = 'Offen';
$labels['showattachment'] = 'Anzeigen';
$labels['showanyway'] = 'Trotzdem anzeigen';
-
$labels['filename'] = 'Dateiname';
$labels['filesize'] = 'Dateigröße';
-
$labels['addtoaddressbook'] = 'Ins Adressbuch übernehmen';
-
-// weekdays short
$labels['sun'] = 'So';
$labels['mon'] = 'Mo';
$labels['tue'] = 'Di';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Mi';
$labels['thu'] = 'Do';
$labels['fri'] = 'Fr';
$labels['sat'] = 'Sa';
-
-// weekdays long
$labels['sunday'] = 'Sonntag';
$labels['monday'] = 'Montag';
$labels['tuesday'] = 'Dienstag';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Mittwoch';
$labels['thursday'] = 'Donnerstag';
$labels['friday'] = 'Freitag';
$labels['saturday'] = 'Samstag';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mär';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dez';
-
-// months long
$labels['longjan'] = 'Januar';
$labels['longfeb'] = 'Februar';
$labels['longmar'] = 'März';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'September';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Dezember';
-
$labels['today'] = 'Heute';
-
-// toolbar buttons
$labels['refresh'] = 'Aktualisieren';
$labels['checkmail'] = 'Auf neue Nachrichten überprüfen';
$labels['compose'] = 'Schreiben';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Mehr...';
$labels['more'] = 'Mehr';
$labels['back'] = 'Zurück';
$labels['options'] = 'Optionen';
-
$labels['select'] = 'Auswahl';
$labels['all'] = 'Alle';
$labels['none'] = 'Keine';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Alle aufklappen';
$labels['expand-unread'] = 'Ungelesene aufklappen';
$labels['collapse-all'] = 'Alle zuklappen';
$labels['threaded'] = 'Gruppiert';
-
$labels['autoexpand_threads'] = 'Konversationen aufklappen';
$labels['do_expand'] = 'alle';
$labels['expand_only_unread'] = 'nur ungelesene';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Spalten';
$labels['listsorting'] = 'Sortierung';
$labels['listorder'] = 'Ordnung';
$labels['listmode'] = 'Anzeigemodus';
-
$labels['folderactions'] = 'Ordneraktionen...';
$labels['compact'] = 'Packen';
$labels['empty'] = 'Leeren';
$labels['importmessages'] = 'Nachrichten importieren';
-
$labels['quota'] = 'Speicherplatz';
$labels['unknown'] = 'unbekannt';
$labels['unlimited'] = 'unbegrenzt';
-
$labels['quicksearch'] = 'Schnellsuche';
$labels['resetsearch'] = 'Suche zurücksetzen';
$labels['searchmod'] = 'Suchkriterien ändern';
$labels['msgtext'] = 'Nachricht';
$labels['body'] = 'Inhalt';
-$labels['type'] = 'Type';
-
+$labels['type'] = 'Typ';
+$labels['namex'] = 'Name';
$labels['openinextwin'] = 'In neuem Fenster öffnen';
$labels['emlsave'] = 'Lokal speichern (.eml)';
$labels['changeformattext'] = 'Als reiner Text anzeigen';
$labels['changeformathtml'] = 'Als original HTML anzeigen';
-
-// message compose
$labels['editasnew'] = 'Als neue Nachricht öffnen';
$labels['send'] = 'Senden';
$labels['sendmessage'] = 'Nachricht jetzt senden';
@@ -224,26 +192,22 @@ $labels['returnreceipt'] = 'Empfangsbestätigung (MDN)';
$labels['dsn'] = 'Übermittlungsbestätigung (DSN)';
$labels['mailreplyintro'] = 'Am $date, schrieb $sender:';
$labels['originalmessage'] = 'Originalnachricht';
-
$labels['editidents'] = 'Absender ändern';
$labels['spellcheck'] = 'Rechtschreibung';
$labels['checkspelling'] = 'Rechtschreibung prüfen';
$labels['resumeediting'] = 'Bearbeitung fortsetzen';
$labels['revertto'] = 'Zurück zu';
-
$labels['attach'] = 'Anhängen';
$labels['attachments'] = 'Anhänge';
$labels['upload'] = 'Hochladen';
$labels['uploadprogress'] = '$percent ($current von $total)';
$labels['close'] = 'Schließen';
$labels['messageoptions'] = 'Optionen...';
-
$labels['low'] = 'Niedrig';
$labels['lowest'] = 'Niedrigste';
$labels['normal'] = 'Normal';
$labels['high'] = 'Hoch';
$labels['highest'] = 'Höchste';
-
$labels['nosubject'] = '(kein Betreff)';
$labels['showimages'] = 'Bilder anzeigen';
$labels['alwaysshow'] = 'Bilder von $sender immer zeigen';
@@ -251,25 +215,19 @@ $labels['isdraft'] = 'Dies ist ein Entwurf';
$labels['andnmore'] = '$nr weitere';
$labels['togglemoreheaders'] = 'Zeige weitere Nachrichten-Header';
$labels['togglefullheaders'] = 'Original-Kopfzeilen ein-/ausblenden';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Nur-Text';
$labels['savesentmessagein'] = 'Nachricht speichern in';
$labels['dontsave'] = 'nicht speichern';
$labels['maxuploadsize'] = 'Maximal erlaubte Dateigröße ist $size';
-
$labels['addcc'] = 'Cc hinzufügen';
$labels['addbcc'] = 'Bcc hinzufügen';
$labels['addreplyto'] = 'Antwortadresse hinzufügen';
$labels['addfollowupto'] = 'Followup-To hinzufügen';
-
-// mdn
$labels['mdnrequest'] = 'Der Sender dieser Nachricht möchte gerne eine Lesebestätigung. Wollen Sie dieses bestätigen?';
$labels['receiptread'] = 'Empfangsbestätigung (gelesen)';
$labels['yourmessage'] = 'Dies ist eine Empfangsbestätigung für Ihre Nachricht';
$labels['receiptnote'] = 'Hinweis: Der Empfänger hat den Empfang der Nachricht bestätigt. Dies ist keine Garantie, dass die Nachricht gelesen und verstanden wurde.';
-
-// address boook
$labels['name'] = 'Angezeigter Name';
$labels['firstname'] = 'Vorname';
$labels['surname'] = 'Nachname';
@@ -304,7 +262,6 @@ $labels['search'] = 'Suche';
$labels['advsearch'] = 'Detaillierte Suche';
$labels['advanced'] = 'Erweitert';
$labels['other'] = 'Andere';
-
$labels['typehome'] = 'Privat';
$labels['typework'] = 'Dienstlich';
$labels['typeother'] = 'Andere';
@@ -319,14 +276,12 @@ $labels['typeassistant'] = 'Assistenz';
$labels['typehomepage'] = 'Internet';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Feld hinzufügen...';
$labels['addcontact'] = 'Kontakt hinzufügen';
$labels['editcontact'] = 'Kontakt bearbeiten';
$labels['contacts'] = 'Kontakte';
$labels['contactproperties'] = 'Kontaktdaten';
$labels['personalinfo'] = 'Persönliche Informationen';
-
$labels['edit'] = 'Bearbeiten';
$labels['cancel'] = 'Abbrechen';
$labels['save'] = 'Speichern';
@@ -335,7 +290,6 @@ $labels['rename'] = 'Umbenennen';
$labels['addphoto'] = 'Kontaktbild hinzufügen';
$labels['replacephoto'] = 'Bild ändern';
$labels['uploadphoto'] = 'Bild hochladen';
-
$labels['newcontact'] = 'Neuen Kontakt erstellen';
$labels['deletecontact'] = 'Gewählte Kontakte löschen';
$labels['composeto'] = 'Nachricht verfassen';
@@ -349,42 +303,34 @@ $labels['newcontactgroup'] = 'Neue Kontaktgruppe erstellen';
$labels['grouprename'] = 'Gruppe umbenennen';
$labels['groupdelete'] = 'Gruppe löschen';
$labels['groupremoveselected'] = 'Gewählte Kontakte aus Gruppe entfernen';
-
$labels['previouspage'] = 'Seite zurück';
$labels['firstpage'] = 'Erste Seite';
$labels['nextpage'] = 'Nächste Seite';
$labels['lastpage'] = 'Letzte Seite';
-
$labels['group'] = 'Gruppe';
$labels['groups'] = 'Gruppen';
-$labels['listgroup'] = 'List group members';
+$labels['listgroup'] = 'Gruppenmitglieder auflisten';
$labels['personaladrbook'] = 'Persönliches Adressbuch';
-
$labels['searchsave'] = 'Suchergebnisse speichern';
$labels['searchdelete'] = 'Suchergebnisse löschen';
-
$labels['import'] = 'Importieren';
$labels['importcontacts'] = 'Kontakte importieren';
$labels['importfromfile'] = 'Import aus Datei:';
-$labels['importtarget'] = 'Einen neuen Kontakt hinzufügen:';
+$labels['importtarget'] = 'Kontakte hinzufügen zu';
$labels['importreplace'] = 'Bestehendes Adressbuch komplett ersetzen';
+$labels['importgroupsexisting'] = 'Nur für existierende Gruppen';
$labels['importdesc'] = 'Sie können Kontakte von einem vorhandenen Adressbuch hochladen.<br/>Zur Zeit wird der Import von Adressen im <a href="http://de.wikipedia.org/wiki/VCard">vCard</a> oder <a href="http://de.wikipedia.org/wiki/CSV_(Dateiformat)">CSV</a>Format unterstützt.';
$labels['done'] = 'Fertig';
-
-// settings
$labels['settingsfor'] = 'Einstellungen für';
$labels['about'] = 'Ãœber';
$labels['preferences'] = 'Einstellungen';
$labels['userpreferences'] = 'Benutzereinstellungen';
$labels['editpreferences'] = 'Benutzereinstellungen bearbeiten';
-
$labels['identities'] = 'Identitäten';
$labels['manageidentities'] = 'Absender für dieses Konto verwalten';
$labels['newidentity'] = 'Neuer Absender';
-
$labels['newitem'] = 'Neuer Eintrag';
$labels['edititem'] = 'Eintrag bearbeiten';
-
$labels['preferhtml'] = 'HTML anzeigen';
$labels['defaultcharset'] = 'Standard Zeichensatz';
$labels['htmlmessage'] = 'HTML-Nachricht';
@@ -480,7 +426,6 @@ $labels['standardwindows'] = 'Popups als Standard Windows behandeln';
$labels['forwardmode'] = 'Nachrichtenweiterleitung';
$labels['inline'] = 'eingebettet';
$labels['asattachment'] = 'als Anhang';
-
$labels['folder'] = 'Ordner';
$labels['folders'] = 'Ordner';
$labels['foldername'] = 'Ordnername';
@@ -501,26 +446,20 @@ $labels['foldertype'] = 'Ordnertyp';
$labels['personalfolder'] = 'Privater Ordner';
$labels['otherfolder'] = 'Ordner eines anderen Benutzers';
$labels['sharedfolder'] = 'Öffentlicher Ordner';
-
$labels['sortby'] = 'Sortieren nach';
$labels['sortasc'] = 'Aufsteigend sortieren';
$labels['sortdesc'] = 'Absteigend sortieren';
$labels['undo'] = 'Rückgängig machen';
-
$labels['installedplugins'] = 'Installierte Plugins';
$labels['plugin'] = 'Erweiterung';
$labels['version'] = 'Version';
$labels['source'] = 'Quellcode';
$labels['license'] = 'Lizenz';
$labels['support'] = 'Support';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Englisch';
$labels['westerneuropean'] = 'West Europäisch';
@@ -539,5 +478,4 @@ $labels['vietnamese'] = 'Vietnamesisch';
$labels['japanese'] = 'Japanisch';
$labels['korean'] = 'Koreanisch';
$labels['chinese'] = 'Chinesisch';
-
?>
diff --git a/program/localization/de_DE/messages.inc b/program/localization/de_DE/messages.inc
index 7b6099924..fbc21521a 100644
--- a/program/localization/de_DE/messages.inc
+++ b/program/localization/de_DE/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Ein Fehler ist aufgetreten!';
$messages['loginfailed'] = 'Die Anmeldung ist fehlgeschlagen.';
$messages['cookiesdisabled'] = 'Ihr Browser akzeptiert keine Cookies.';
@@ -56,8 +54,6 @@ $messages['contactnotfound'] = 'Der angeforderte Kontakt wurde nicht gefunden.';
$messages['contactsearchonly'] = 'Geben Sie einen Suchbegriff ein, um Kontakte zu finden.';
$messages['sendingfailed'] = 'Versenden der Nachricht fehlgeschlagen.';
$messages['senttooquickly'] = 'Bitte warten Sie $sec Sekunde(n) vor dem Senden dieser Nachricht.';
-$messages['errorsavingsent'] = 'Ein Fehler ist beim Speichern der gesendeten Nachricht 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.';
@@ -144,7 +140,6 @@ $messages['smtperror'] = 'SMTP Fehler: $msg';
$messages['emailformaterror'] = 'Ungültige E-Mail-Adresse: $email';
$messages['toomanyrecipients'] = 'Zuviele Empfänger. Reduzieren Sie die Anzahl 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 es erneut.';
$messages['contactdelerror'] = 'Fehler beim Löschen.';
$messages['contactdeleted'] = 'Kontakt(e) erfolgreich gelöscht.';
$messages['contactrestoreerror'] = 'Konnte die gelöschten Kontakte nicht wiederherstellen.';
@@ -172,5 +167,4 @@ $messages['parentnotwritable'] = 'Konnte den Ordner nicht erstellen/verschieben.
$messages['messagetoobig'] = 'Die Nachricht ist zu gross und kann nicht verarbeitet werden.';
$messages['attachmentvalidationerror'] = 'WARNUNG! Dieser Anhang ist verdächtig, weil sein Typ nicht dem in der Nachricht deklarierten Typ entspricht. Wenn Sie dem Sender nicht trauen, sollten Sie den Anhang nicht öffnen, weil er schadhaften Inhalte beinhalten könnte.<br/><br/><em>Erwartet: $expected; gefunden: $detected</em>';
$messages['noscriptwarning'] = 'Warnung: Dieser Webmail-Service erfordert Javascript. Um ihn zu benutzten aktivieren Sie Javascript in ihren Browser-Einstellungen.';
-
?>
diff --git a/program/localization/el_GR/labels.inc b/program/localization/el_GR/labels.inc
index d3030e574..2e3ab405c 100644
--- a/program/localization/el_GR/labels.inc
+++ b/program/localization/el_GR/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Καλώς ήÏθατε στο $product';
$labels['username'] = 'Όνομα ΧÏήστη';
$labels['password'] = 'Κωδικός ΠÏόσβασης';
$labels['server'] = 'ΕξυπηÏετητής';
$labels['login'] = 'ΣÏνδεση';
-
-// taskbar
$labels['logout'] = 'ΑποσÏνδεση';
$labels['mail'] = 'E-Mail';
$labels['settings'] = 'Ρυθμίσεις';
$labels['addressbook'] = 'Επαφές';
-
-// mailbox names
$labels['inbox'] = 'ΕισεÏχόμενα';
$labels['drafts'] = 'ΠÏόχειÏα';
$labels['sent'] = 'Απεσταλμένα';
$labels['trash'] = 'Κάδος ΑποÏÏιμάτων';
$labels['junk'] = 'ΑνεπιθÏμητα';
$labels['show_real_foldernames'] = 'Εμφάνιση Ï€Ïαγματικών ονομάτων για ειδικοÏÏ‚ φακέλους';
-
-// message listing
$labels['subject'] = 'Θέμα';
$labels['from'] = 'Αποστολέας';
$labels['sender'] = 'Αποστολέας';
@@ -54,13 +44,11 @@ $labels['priority'] = 'ΠÏoτεÏαιότητα';
$labels['organization'] = 'ΟÏγανισμός';
$labels['readstatus'] = 'Κατάσταση ανάγνωσης';
$labels['listoptions'] = 'Κατάλογος επιλογών';
-
$labels['mailboxlist'] = 'Φάκελοι';
$labels['messagesfromto'] = 'ΜηνÏματα $from από $to έως $count';
$labels['threadsfromto'] = 'Θέματα $from έως $to από $count';
$labels['messagenrof'] = 'Μήνυμα $nr από $count';
$labels['fromtoshort'] = '$from – $to από $count';
-
$labels['copy'] = 'ΑντιγÏαφή';
$labels['move'] = 'Μετακίνηση';
$labels['moveto'] = 'Μετακίνηση σε...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Λήψη';
$labels['open'] = 'Ανοιγμα';
$labels['showattachment'] = 'Εμφάνιση';
$labels['showanyway'] = 'Εμφάνιση';
-
$labels['filename'] = 'Όνομα αÏχείου';
$labels['filesize'] = 'Μέγεθος αÏχείου';
-
$labels['addtoaddressbook'] = 'ΠÏοσθήκη στο βιβλίο διευθÏνσεων';
-
-// weekdays short
$labels['sun'] = 'ΚυÏ';
$labels['mon'] = 'Δευτ';
$labels['tue'] = 'ΤÏι';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Τετ';
$labels['thu'] = 'Πεμπ';
$labels['fri'] = 'ΠαÏ';
$labels['sat'] = 'Σαβ';
-
-// weekdays long
$labels['sunday'] = 'ΚυÏιακή';
$labels['monday'] = 'ΔευτέÏα';
$labels['tuesday'] = 'ΤÏίτη';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'ΤετάÏτη';
$labels['thursday'] = 'Πέμπτη';
$labels['friday'] = 'ΠαÏασκευή';
$labels['saturday'] = 'Σάββατο';
-
-// months short
$labels['jan'] = 'Ιαν';
$labels['feb'] = 'Φεβ';
$labels['mar'] = 'ΜαÏ';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Σεπ';
$labels['oct'] = 'Οκτ';
$labels['nov'] = 'Îοε';
$labels['dec'] = 'Δεκ';
-
-// months long
$labels['longjan'] = 'ΙανουάÏιος';
$labels['longfeb'] = 'ΦεβÏουάÏιος';
$labels['longmar'] = 'ΜάÏτιος';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'ΣεπτέμβÏιος';
$labels['longoct'] = 'ΟκτώβÏιος';
$labels['longnov'] = 'ÎοέμβÏιος';
$labels['longdec'] = 'ΔεκέμβÏιος';
-
$labels['today'] = 'ΣήμεÏα';
-
-// toolbar buttons
$labels['refresh'] = 'Ανανέωση';
$labels['checkmail'] = 'Έλεγχος για νέα μηνÏματα';
$labels['compose'] = 'ΔημιουÏγία μηνÏματος';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'ΠεÏισσότεÏες ενέÏγειες...';
$labels['more'] = 'ΠεÏισσότεÏα';
$labels['back'] = 'ΕπιστÏοφή';
$labels['options'] = 'Επιλογές';
-
$labels['select'] = 'Επιλέξτε';
$labels['all'] = 'Όλα';
$labels['none'] = 'Κανένα';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Ανάπτυξη όλων';
$labels['expand-unread'] = 'Ανάπτυξη των μη αναγνωσμένων';
$labels['collapse-all'] = 'ΣÏμπτυξη όλων';
$labels['threaded'] = 'Θεματοποιημένα';
-
$labels['autoexpand_threads'] = 'Ανάπτυξη θεματοποιημένων μηνυμάτων';
$labels['do_expand'] = 'όλα τα θέματα';
$labels['expand_only_unread'] = 'μόνο με τα μη αναγνωσμένα μηνÏματα';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Στήλες';
$labels['listsorting'] = 'Ταξινόμηση στηλών';
$labels['listorder'] = 'ΣειÏά ταξινόμησης';
$labels['listmode'] = 'ΠÏοβολή σε λίστα';
-
$labels['folderactions'] = 'ΕνέÏγειες στους φακέλους';
$labels['compact'] = 'Συμπίεση';
$labels['empty'] = 'Άδειασμα';
$labels['importmessages'] = 'Εισαγωγή μηνυμάτων';
-
$labels['quota'] = 'ΧÏήση δίσκου';
$labels['unknown'] = 'άγνωστο';
$labels['unlimited'] = 'απεÏιόÏιστο';
-
$labels['quicksearch'] = 'ΓÏήγοÏη Αναζήτηση';
$labels['resetsearch'] = 'ΕπαναφοÏά Αναζήτησης';
$labels['searchmod'] = 'Aλλαγή αναζήτησης';
$labels['msgtext'] = 'Σε όλο το μήνυμα';
$labels['body'] = 'Σώμα';
-$labels['type'] = 'Type';
-
+$labels['type'] = 'Τυπος';
+$labels['namex'] = 'όνομα';
$labels['openinextwin'] = 'Άνοιγμα σε νέο παÏάθυÏο';
$labels['emlsave'] = 'Λήψη αÏχείου (.eml)';
$labels['changeformattext'] = 'Εμφάνιση σε μοÏφή Î±Ï€Î»Î¿Ï ÎºÎµÎ¹Î¼Î­Î½Î¿Ï…';
$labels['changeformathtml'] = 'Εμφάνιση σε μοÏφή HTML';
-
-// message compose
$labels['editasnew'] = 'ΕπεξεÏγασία σαν νέο';
$labels['send'] = 'Αποστολή';
$labels['sendmessage'] = 'Αποστολή μηνÏματος';
@@ -224,26 +192,22 @@ $labels['returnreceipt'] = 'ΑναφοÏά ΠαÏάδοσης';
$labels['dsn'] = 'Κατάσταση αναφοÏάς παÏάδοσης';
$labels['mailreplyintro'] = 'Στις $date, $sender έγÏαψε:';
$labels['originalmessage'] = 'ΑÏχικό μήνυμα';
-
$labels['editidents'] = 'ΕπεξεÏγασία ταυτοτήτων';
$labels['spellcheck'] = 'Συλλαβισμός';
$labels['checkspelling'] = 'Έλεγχος οÏθογÏαφίας';
$labels['resumeediting'] = 'Συνέχεια επεξεÏγασίας';
$labels['revertto'] = 'ΕπαναφοÏά στο';
-
$labels['attach'] = 'ΕπισÏναψη';
$labels['attachments'] = 'Συνημμένα';
$labels['upload'] = 'ΦόÏτωση';
$labels['uploadprogress'] = '$percent ($current από $total)';
$labels['close'] = 'Κλείσιμο';
$labels['messageoptions'] = 'Επιλογές μηνÏματος';
-
$labels['low'] = 'Χαμηλή';
$labels['lowest'] = 'ΧαμηλότεÏη';
$labels['normal'] = 'Κανονική';
$labels['high'] = 'Υψηλή';
$labels['highest'] = 'Μέγιστη δυνατή';
-
$labels['nosubject'] = '(χωÏίς θέμα)';
$labels['showimages'] = 'ΠÏοβολή εικόνων';
$labels['alwaysshow'] = 'Îα Ï€Ïοβάλλονται πάντα οι εικόνες που αποστέλλονται από τον $sender';
@@ -251,25 +215,19 @@ $labels['isdraft'] = 'Αυτό το μήνυμα έχει σημανθεί σ
$labels['andnmore'] = '$nr πεÏισσότεÏα...';
$labels['togglemoreheaders'] = 'Εμφάνιση πεÏισσότεÏων κεφαλίδων';
$labels['togglefullheaders'] = 'Εμφάνιση ακατέÏγαστων κεφαλίδων μηνÏματος';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Απλό κείμενο';
$labels['savesentmessagein'] = 'Αποθήκευση απεσταλμένου στο φάκελο';
$labels['dontsave'] = 'να μην αποθηκευθεί';
$labels['maxuploadsize'] = 'Το μέγιστο επιτÏεπόμενο μέγεθος αÏχείου είναι $size';
-
$labels['addcc'] = 'ΠÏοσθήκη ΠαÏαλήπτη Κοινοποίησης';
$labels['addbcc'] = 'ΠÏοσθήκη ΠαÏαλήπτη ΚÏυφής Κοινοποίησης';
$labels['addreplyto'] = 'ΠÏοσθήκη Απάντησης-Στο';
$labels['addfollowupto'] = 'ΠÏοσθήκη Σε συνέχεια του';
-
-// mdn
$labels['mdnrequest'] = 'Ο αποστολέας Î±Ï…Ï„Î¿Ï Ï„Î¿Ï… μηνÏματος, έχει ζητήσει να ειδοποιηθεί όταν θα το διαβάσετε. Θέλετε να επιτÏέψετε την ενημέÏωσή του;';
$labels['receiptread'] = 'ΑναφοÏά παÏάδοσης (διαβάστε την)';
$labels['yourmessage'] = 'Αυτό είναι μια αναφοÏά παÏάδοσης για το μήνυμά σας';
$labels['receiptnote'] = 'Σημείωση: Αυτή η αναφοÏά επιβεβαιώνει μόνο ότι το μήνυμά σας εμφανίστηκε στον υπολογιστή του παÏαλήπτη. Δεν επιβεβαιώνει ότι ο παÏαλήπτης έχει διαβάσει ή έχει κατανοήσει το πεÏιεχόμενό του.';
-
-// address boook
$labels['name'] = 'Εμφανιζόμενο όνομα';
$labels['firstname'] = 'Όνομα';
$labels['surname'] = 'Επώνυμο';
@@ -304,7 +262,6 @@ $labels['search'] = 'Αναζήτηση';
$labels['advsearch'] = 'ΠÏοηγμένη Αναζήτηση';
$labels['advanced'] = 'ΠÏοχωÏημένες Ïυθμίσεις';
$labels['other'] = 'Άλλα';
-
$labels['typehome'] = 'Οικία';
$labels['typework'] = 'ΕÏγασία';
$labels['typeother'] = 'Άλλα';
@@ -319,14 +276,12 @@ $labels['typeassistant'] = 'Υπάλληλος';
$labels['typehomepage'] = 'ΑÏχική Σελίδα';
$labels['typeblog'] = 'Ιστολόγιο';
$labels['typeprofile'] = 'ΠÏοφίλ';
-
$labels['addfield'] = 'ΠÏοσθήκη πεδίου...';
$labels['addcontact'] = 'ΠÏοσθήκη νέας επαφής';
$labels['editcontact'] = 'ΕπεξεÏγασία επαφής';
$labels['contacts'] = 'Επαφές';
$labels['contactproperties'] = 'Ιδιότητες επαφών';
$labels['personalinfo'] = 'ΠÏοσωπικές πληÏοφοÏίες';
-
$labels['edit'] = 'ΕπεξεÏγασία';
$labels['cancel'] = 'ΑκÏÏωση';
$labels['save'] = 'Αποθήκευση';
@@ -335,7 +290,6 @@ $labels['rename'] = 'Μετονομασία';
$labels['addphoto'] = 'ΠÏοσθήκη';
$labels['replacephoto'] = 'Αντικατάσταση';
$labels['uploadphoto'] = 'ΦόÏτωση εικόνας';
-
$labels['newcontact'] = 'ΔημιουÏγία νέας κάÏτας επαφής';
$labels['deletecontact'] = 'ΔιαγÏαφή επιλεγμένων επαφών';
$labels['composeto'] = 'ΣÏνθεση μηνÏματος Ï€Ïος';
@@ -349,42 +303,32 @@ $labels['newcontactgroup'] = 'ΔημιουÏγία νέας Ομάδας επαÏ
$labels['grouprename'] = 'Μετονομασία ομάδας';
$labels['groupdelete'] = 'ΔιαγÏαφή ομάδας';
$labels['groupremoveselected'] = 'ΑφαίÏεση επιλεγμένων επαφών από την ομάδα';
-
$labels['previouspage'] = 'Εμφάνιση Ï€ÏοηγοÏμενης σελίδας';
$labels['firstpage'] = 'Εμφάνιση της Ï€Ïώτης σελίδας';
$labels['nextpage'] = 'Εμφάνιση επόμενης σελίδας';
$labels['lastpage'] = 'Εμφάνιση της τελευταίας σελίδας';
-
$labels['group'] = 'Ομάδα';
$labels['groups'] = 'Ομάδες';
-$labels['listgroup'] = 'List group members';
+$labels['listgroup'] = 'Μέλη της ομάδας λίστας';
$labels['personaladrbook'] = 'ΠÏοσωπικές ΔιυθÏνσεις';
-
$labels['searchsave'] = 'Αποθήκευση αναζήτησης';
$labels['searchdelete'] = 'ΔιαγÏαφή αποθηκευμένης αναζήτησης';
-
$labels['import'] = 'Εισαγωγή';
$labels['importcontacts'] = 'Εισαγωγή επαφών';
$labels['importfromfile'] = 'Εισαγωγή από το αÏχείο:';
-$labels['importtarget'] = 'ΠÏοσθήκη νέων επαφών στο βιβλίο διευθÏνσεων:';
$labels['importreplace'] = 'Αντικατάσταση όλου του βιβλίου διευθÏνσεων';
$labels['importdesc'] = 'ΜποÏείτε να ανεβάσετε επαφές από ένα υπάÏχον βιβλίο διευθÏνσεων.<br/>ΥποστηÏίζεται η εισαγωγή διευθÏνσεων από αÏχεία Ï„Ïπου <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> ή CSV (διαχωÏισμένα με κόμμα).';
$labels['done'] = 'ΟλοκληÏώθηκε';
-
-// settings
$labels['settingsfor'] = 'Ρυθμίσεις για';
$labels['about'] = 'Σχετικά';
$labels['preferences'] = 'ΠÏοτιμήσεις';
$labels['userpreferences'] = 'ΠÏοτιμήσεις χÏήστη';
$labels['editpreferences'] = 'ΕπεξεÏγασία Ï€Ïοτιμήσεων χÏήστη';
-
$labels['identities'] = 'Ταυτότητες';
$labels['manageidentities'] = 'ΔιαχείÏιση ταυτοτήτων για αυτόν το λογαÏιασμό';
$labels['newidentity'] = 'Îέα ταυτότητα';
-
$labels['newitem'] = 'Îέο αντικείμενο';
$labels['edititem'] = 'ΕπεξεÏγασία αντικειμένου';
-
$labels['preferhtml'] = 'ΠÏοβολή σε HTML';
$labels['defaultcharset'] = 'ΠÏοεπιλεγμένη κωδικοποίηση χαÏακτήÏων';
$labels['htmlmessage'] = 'Μήνυμα σε μοÏφή HTML';
@@ -480,7 +424,6 @@ $labels['standardwindows'] = 'ΧειÏιστείτε τα αναδυόμενα Ï
$labels['forwardmode'] = 'ΠÏοώθηση μηνυμάτων';
$labels['inline'] = 'με εσνωμάτωση';
$labels['asattachment'] = 'σαν επισÏναψη';
-
$labels['folder'] = 'Φάκελος';
$labels['folders'] = 'Φάκελοι';
$labels['foldername'] = 'Όνομα φακέλου';
@@ -501,26 +444,20 @@ $labels['foldertype'] = 'ΤÏπος φακέλου';
$labels['personalfolder'] = 'ΠÏοσωπικός φάκελος';
$labels['otherfolder'] = 'Φάκελοι άλλων χÏηστών';
$labels['sharedfolder'] = 'ΚοινόχÏηστος φάκελος';
-
$labels['sortby'] = 'Ταξινόμηση κατά';
$labels['sortasc'] = 'ΑÏξουσα ταξινόμηση';
$labels['sortdesc'] = 'Φθίνουσα ταξινόμηση';
$labels['undo'] = 'ΑναίÏεση';
-
$labels['installedplugins'] = 'Εγκατεστημένα Ï€Ïόσθετα';
$labels['plugin'] = 'ΠÏόσθετο';
$labels['version'] = 'Έκδοση';
$labels['source'] = 'ΠÏοέλευση';
$labels['license'] = 'Άδεια χÏήσης';
$labels['support'] = 'ΥποστήÏιξη';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Αγγλικά';
$labels['westerneuropean'] = 'Δυτικής ΕυÏώπης';
@@ -539,5 +476,4 @@ $labels['vietnamese'] = 'Βιετναμέζικα';
$labels['japanese'] = 'Ιαπωνικά';
$labels['korean'] = 'ΚοÏεατικά';
$labels['chinese'] = 'Κινεζικά';
-
?>
diff --git a/program/localization/el_GR/messages.inc b/program/localization/el_GR/messages.inc
index 504baa674..9947c715e 100644
--- a/program/localization/el_GR/messages.inc
+++ b/program/localization/el_GR/messages.inc
@@ -15,10 +15,8 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Έχει Ï€ÏοκÏψει κάποιο σφάλμα!';
-$messages['loginfailed'] = 'Είσοδος απέτυχε';
+$messages['loginfailed'] = 'Είσοδος απέτυχε.';
$messages['cookiesdisabled'] = 'Ο πεÏιηγητής σας (browser) δεν αποδέχεται cookies';
$messages['sessionerror'] = 'Η συνεδÏία σας είναι άκυÏη ή έχει λήξει';
$messages['storageerror'] = 'Η σÏνδεση με το διακομιστή IMAP απέτυχε';
@@ -46,6 +44,8 @@ $messages['messagesent'] = 'Μήνυμα εστάλη επιτυχώς';
$messages['savingmessage'] = 'Αποθήκευση μηνÏματος...';
$messages['messagesaved'] = 'Μήνυμα αποθηκεÏτηκε στα ΠÏόχειÏα';
$messages['successfullysaved'] = 'ΑποθηκεÏτηκε επιτυχώς';
+$messages['savingresponse'] = 'ΑποθηκεÏετε το κείμενο απάντησης...';
+$messages['deleteresponseconfirm'] = 'ΣίγουÏα θέλετε να διαγÏάψετε αυτό το κείμενο απάντησης;';
$messages['addedsuccessfully'] = 'Η επαφή Ï€Ïοστέθηκε επιτυχώς στις Επαφές';
$messages['contactexists'] = 'ΥπάÏχει ήδη επαφή με αυτή τη διεÏθυνση e-mail';
$messages['contactnameexists'] = 'Μια επαφή με το ίδιο όνομα υπάÏχει ήδη.';
@@ -56,8 +56,8 @@ $messages['contactnotfound'] = 'Η ζητοÏμενη επαφή δεν βÏέθ
$messages['contactsearchonly'] = 'Εισάγετε κάποιους ÏŒÏους Ï€Ïος αναζήτηση';
$messages['sendingfailed'] = 'Αποστολή μηνÏματος απέτυχε';
$messages['senttooquickly'] = 'ΠαÏακαλώ πεÏιμένετε $sec δευτεÏόλεπτα, Ï€Ïιν στείλετε το μήνυμα';
-$messages['errorsavingsent'] = 'ΠαÏουσιάστηκε σφάλμα, κατά την αποθήκευση του απεσταλμένου μηνÏματος';
-$messages['errorsaving'] = 'ΠαÏουσιάστηκε σφάλμα κατά την αποθήκευση';
+$messages['errorsavingsent'] = 'ΠÏοέκυψε σφάλμα κατά την αποθήκευση σταλμένου μηνÏματος.';
+$messages['errorsaving'] = 'ΠÏοέκυψε σφάλμα κατά την αποθήκευση.';
$messages['errormoving'] = 'Το μήνυμα δε μποÏοÏσε να μετακινηθεί';
$messages['errorcopying'] = 'Δεν είναι δυνατή η αντιγÏαφή του μηνÏματος/των';
$messages['errordeleting'] = 'Το μήνυμα δε μποÏοÏσε να διαγÏαφεί';
@@ -144,7 +144,7 @@ $messages['smtperror'] = 'Σφάλμα SMTP: $msg';
$messages['emailformaterror'] = 'Λανθασμένη διεÏθνση email: $email';
$messages['toomanyrecipients'] = 'Μεγάλο πλήθος αποδεκτών. Μειώστε τον αÏιθμό των αποδεκτών σε $max.';
$messages['maxgroupmembersreached'] = 'Ο αÏιθμός των μελών της ομάδας υπεÏβαίνει τον μέγιστο των $max μελών.';
-$messages['internalerror'] = 'ΠÏοέκυψε ένα εσωτεÏικό σφάλμα. ΠαÏακαλώ δοκιμάστε πάλι.';
+$messages['internalerror'] = 'ΠÏοέκυψε εσωτεÏικό σφάλμα. ΠαÏακαλώ δοκιμάστε ξανά.';
$messages['contactdelerror'] = 'Δεν είναι δυνατή η διαγÏαφή της επαφής/ων';
$messages['contactdeleted'] = 'Η επαφή/ές διαγÏάφηκαν με επιτυχία.';
$messages['contactrestoreerror'] = 'Οι διαγÏαφημενη επαφη(ες) δεν μποÏουν να επαναφεÏθουν.';
@@ -172,5 +172,4 @@ $messages['parentnotwritable'] = 'Δεν είναι δυνατή η δημιου
$messages['messagetoobig'] = 'Το τμήμα μήνυματος είναι Ï€Î¿Î»Ï Î¼ÎµÎ³Î¬Î»Î¿ για επεξεÏγασια. ';
$messages['attachmentvalidationerror'] = 'ΠΡΟΕΙΔΟΠΟΊΗΣΗ! Αυτή η κατάσχεση είναι Ïποπτη, επειδή ο Ï„Ïπος δεν ταιÏιάζει με τον Ï„Ïπο που δηλώνεται στο μήνυμα. Εάν δεν εμπιστεÏεστε τον αποστολέα, δεν θα Ï€Ïέπει να το ανοίγετε στο Ï€ÏόγÏαμμα πεÏιήγησης επειδή μποÏεί να πεÏιέχει κακόβουλο πεÏιεχόμενο.<br/><br/><em>Expected: $expected; found: $detected</em> ';
$messages['noscriptwarning'] = 'ΠÏοειδοποίηση : Αυτή η υπηÏεσία webmail απαιτεί Javascript! Για να ΤΟ χÏησιμοποιήσετε ενεÏγοποιήστε τΟ JavaScript στις Ïυθμίσεις του browser σας. ';
-
?>
diff --git a/program/localization/en_CA/labels.inc b/program/localization/en_CA/labels.inc
new file mode 100644
index 000000000..c1c62ff01
--- /dev/null
+++ b/program/localization/en_CA/labels.inc
@@ -0,0 +1,496 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/<lang>/labels.inc |
+ | |
+ | Localization file of the Roundcube Webmail client |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
+*/
+$labels['welcome'] = 'Welcome to $product';
+$labels['username'] = 'Username';
+$labels['password'] = 'Password';
+$labels['server'] = 'Server';
+$labels['login'] = 'Login';
+$labels['logout'] = 'Logout';
+$labels['mail'] = 'Mail';
+$labels['settings'] = 'Settings';
+$labels['addressbook'] = 'Address Book';
+$labels['inbox'] = 'Inbox';
+$labels['drafts'] = 'Drafts';
+$labels['sent'] = 'Sent';
+$labels['trash'] = 'Trash';
+$labels['junk'] = 'Junk';
+$labels['show_real_foldernames'] = 'Show real names for special folders';
+$labels['subject'] = 'Subject';
+$labels['from'] = 'From';
+$labels['sender'] = 'Sender';
+$labels['to'] = 'To';
+$labels['cc'] = 'Cc';
+$labels['bcc'] = 'Bcc';
+$labels['replyto'] = 'Reply-To';
+$labels['followupto'] = 'Followup-To';
+$labels['date'] = 'Date';
+$labels['size'] = 'Size';
+$labels['priority'] = 'Priority';
+$labels['organization'] = 'Organization';
+$labels['readstatus'] = 'Read status';
+$labels['listoptions'] = 'List options...';
+$labels['mailboxlist'] = 'Folders';
+$labels['messagesfromto'] = 'Messages $from to $to of $count';
+$labels['threadsfromto'] = 'Threads $from to $to of $count';
+$labels['messagenrof'] = 'Message $nr of $count';
+$labels['fromtoshort'] = '$from – $to of $count';
+$labels['copy'] = 'Copy';
+$labels['move'] = 'Move';
+$labels['moveto'] = 'Move to...';
+$labels['download'] = 'Download';
+$labels['open'] = 'Open';
+$labels['showattachment'] = 'Show';
+$labels['showanyway'] = 'Show it anyway';
+$labels['filename'] = 'File name';
+$labels['filesize'] = 'File size';
+$labels['addtoaddressbook'] = 'Add to address book';
+$labels['sun'] = 'Sun';
+$labels['mon'] = 'Mon';
+$labels['tue'] = 'Tue';
+$labels['wed'] = 'Wed';
+$labels['thu'] = 'Thu';
+$labels['fri'] = 'Fri';
+$labels['sat'] = 'Sat';
+$labels['sunday'] = 'Sunday';
+$labels['monday'] = 'Monday';
+$labels['tuesday'] = 'Tuesday';
+$labels['wednesday'] = 'Wednesday';
+$labels['thursday'] = 'Thursday';
+$labels['friday'] = 'Friday';
+$labels['saturday'] = 'Saturday';
+$labels['jan'] = 'Jan';
+$labels['feb'] = 'Feb';
+$labels['mar'] = 'Mar';
+$labels['apr'] = 'Apr';
+$labels['may'] = 'May';
+$labels['jun'] = 'Jun';
+$labels['jul'] = 'Jul';
+$labels['aug'] = 'Aug';
+$labels['sep'] = 'Sep';
+$labels['oct'] = 'Oct';
+$labels['nov'] = 'Nov';
+$labels['dec'] = 'Dec';
+$labels['longjan'] = 'January';
+$labels['longfeb'] = 'February';
+$labels['longmar'] = 'March';
+$labels['longapr'] = 'April';
+$labels['longmay'] = 'May';
+$labels['longjun'] = 'June';
+$labels['longjul'] = 'July';
+$labels['longaug'] = 'August';
+$labels['longsep'] = 'September';
+$labels['longoct'] = 'October';
+$labels['longnov'] = 'November';
+$labels['longdec'] = 'December';
+$labels['today'] = 'Today';
+$labels['refresh'] = 'Refresh';
+$labels['checkmail'] = 'Check for new messages';
+$labels['compose'] = 'Compose';
+$labels['writenewmessage'] = 'Create a new message';
+$labels['reply'] = 'Reply';
+$labels['replytomessage'] = 'Reply to sender';
+$labels['replytoallmessage'] = 'Reply to list or to sender and all recipients';
+$labels['replyall'] = 'Reply all';
+$labels['replylist'] = 'Reply list';
+$labels['forward'] = 'Forward';
+$labels['forwardinline'] = 'Forward inline';
+$labels['forwardattachment'] = 'Forward as attachment';
+$labels['forwardmessage'] = 'Forward the message';
+$labels['deletemessage'] = 'Delete message';
+$labels['movemessagetotrash'] = 'Move message to trash';
+$labels['printmessage'] = 'Print this message';
+$labels['previousmessage'] = 'Show previous message';
+$labels['firstmessage'] = 'Show first message';
+$labels['nextmessage'] = 'Show next message';
+$labels['lastmessage'] = 'Show last message';
+$labels['backtolist'] = 'Back to message list';
+$labels['viewsource'] = 'Show source';
+$labels['mark'] = 'Mark';
+$labels['markmessages'] = 'Mark messages';
+$labels['markread'] = 'As read';
+$labels['markunread'] = 'As unread';
+$labels['markflagged'] = 'As flagged';
+$labels['markunflagged'] = 'As unflagged';
+$labels['moreactions'] = 'More actions...';
+$labels['more'] = 'More';
+$labels['back'] = 'Back';
+$labels['options'] = 'Options';
+$labels['select'] = 'Select';
+$labels['all'] = 'All';
+$labels['none'] = 'None';
+$labels['currpage'] = 'Current page';
+$labels['unread'] = 'Unread';
+$labels['flagged'] = 'Flagged';
+$labels['unanswered'] = 'Unanswered';
+$labels['withattachment'] = 'With attachment';
+$labels['deleted'] = 'Deleted';
+$labels['undeleted'] = 'Not deleted';
+$labels['invert'] = 'Invert';
+$labels['filter'] = 'Filter';
+$labels['list'] = 'List';
+$labels['threads'] = 'Threads';
+$labels['expand-all'] = 'Expand All';
+$labels['expand-unread'] = 'Expand Unread';
+$labels['collapse-all'] = 'Collapse All';
+$labels['threaded'] = 'Threaded';
+$labels['autoexpand_threads'] = 'Expand message threads';
+$labels['do_expand'] = 'all threads';
+$labels['expand_only_unread'] = 'only with unread messages';
+$labels['fromto'] = 'From/To';
+$labels['flag'] = 'Flag';
+$labels['attachment'] = 'Attachment';
+$labels['nonesort'] = 'None';
+$labels['sentdate'] = 'Sent date';
+$labels['arrival'] = 'Arrival date';
+$labels['asc'] = 'ascending';
+$labels['desc'] = 'descending';
+$labels['listcolumns'] = 'List columns';
+$labels['listsorting'] = 'Sorting column';
+$labels['listorder'] = 'Sorting order';
+$labels['listmode'] = 'List view mode';
+$labels['folderactions'] = 'Folder actions...';
+$labels['compact'] = 'Compact';
+$labels['empty'] = 'Empty';
+$labels['importmessages'] = 'Import messages';
+$labels['quota'] = 'Disk usage';
+$labels['unknown'] = 'unknown';
+$labels['unlimited'] = 'unlimited';
+$labels['quicksearch'] = 'Quick search';
+$labels['resetsearch'] = 'Reset search';
+$labels['searchmod'] = 'Search modifiers';
+$labels['msgtext'] = 'Entire message';
+$labels['body'] = 'Body';
+$labels['type'] = 'Type';
+$labels['namex'] = 'Name';
+$labels['openinextwin'] = 'Open in new window';
+$labels['emlsave'] = 'Download (.eml)';
+$labels['changeformattext'] = 'Display in plain text format';
+$labels['changeformathtml'] = 'Display in HTML format';
+$labels['editasnew'] = 'Edit as new';
+$labels['send'] = 'Send';
+$labels['sendmessage'] = 'Send message';
+$labels['savemessage'] = 'Save as draft';
+$labels['addattachment'] = 'Attach a file';
+$labels['charset'] = 'Charset';
+$labels['editortype'] = 'Editor type';
+$labels['returnreceipt'] = 'Return receipt';
+$labels['dsn'] = 'Delivery status notification';
+$labels['mailreplyintro'] = 'On $date, $sender wrote:';
+$labels['originalmessage'] = 'Original Message';
+$labels['editidents'] = 'Edit identities';
+$labels['spellcheck'] = 'Spell';
+$labels['checkspelling'] = 'Check spelling';
+$labels['resumeediting'] = 'Resume editing';
+$labels['revertto'] = 'Revert to';
+$labels['restore'] = 'Restore';
+$labels['restoremessage'] = 'Restore message?';
+$labels['responses'] = 'Responses';
+$labels['insertresponse'] = 'Insert a response';
+$labels['manageresponses'] = 'Manage responses';
+$labels['savenewresponse'] = 'Save new response';
+$labels['editresponses'] = 'Edit responses';
+$labels['editresponse'] = 'Edit response';
+$labels['responsename'] = 'Name';
+$labels['responsetext'] = 'Response Text';
+$labels['attach'] = 'Attach';
+$labels['attachments'] = 'Attachments';
+$labels['upload'] = 'Upload';
+$labels['uploadprogress'] = '$percent ($current from $total)';
+$labels['close'] = 'Close';
+$labels['messageoptions'] = 'Message options...';
+$labels['low'] = 'Low';
+$labels['lowest'] = 'Lowest';
+$labels['normal'] = 'Normal';
+$labels['high'] = 'High';
+$labels['highest'] = 'Highest';
+$labels['nosubject'] = '(no subject)';
+$labels['showimages'] = 'Display images';
+$labels['alwaysshow'] = 'Always show images from $sender';
+$labels['isdraft'] = 'This is a draft message.';
+$labels['andnmore'] = '$nr more...';
+$labels['togglemoreheaders'] = 'Show more message headers';
+$labels['togglefullheaders'] = 'Toggle raw message headers';
+$labels['htmltoggle'] = 'HTML';
+$labels['plaintoggle'] = 'Plain text';
+$labels['savesentmessagein'] = 'Save sent message in';
+$labels['dontsave'] = 'don\'t save';
+$labels['maxuploadsize'] = 'Maximum allowed file size is $size';
+$labels['addcc'] = 'Add Cc';
+$labels['addbcc'] = 'Add Bcc';
+$labels['addreplyto'] = 'Add Reply-To';
+$labels['addfollowupto'] = 'Add Followup-To';
+$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
+$labels['receiptread'] = 'Return Receipt (read)';
+$labels['yourmessage'] = 'This is a Return Receipt for your message';
+$labels['receiptnote'] = 'Note: This receipt only acknowledges that the message was displayed on the recipient\'s computer. There is no guarantee that the recipient has read or understood the message contents.';
+$labels['name'] = 'Display Name';
+$labels['firstname'] = 'First Name';
+$labels['surname'] = 'Last Name';
+$labels['middlename'] = 'Middle Name';
+$labels['nameprefix'] = 'Prefix';
+$labels['namesuffix'] = 'Suffix';
+$labels['nickname'] = 'Nickname';
+$labels['jobtitle'] = 'Job Title';
+$labels['department'] = 'Department';
+$labels['gender'] = 'Gender';
+$labels['maidenname'] = 'Maiden Name';
+$labels['email'] = 'Email';
+$labels['phone'] = 'Phone';
+$labels['address'] = 'Address';
+$labels['street'] = 'Street';
+$labels['locality'] = 'City';
+$labels['zipcode'] = 'Postal Code';
+$labels['region'] = 'Province';
+$labels['country'] = 'Country';
+$labels['birthday'] = 'Birthday';
+$labels['anniversary'] = 'Anniversary';
+$labels['website'] = 'Website';
+$labels['instantmessenger'] = 'IM';
+$labels['notes'] = 'Notes';
+$labels['male'] = 'male';
+$labels['female'] = 'female';
+$labels['manager'] = 'Manager';
+$labels['assistant'] = 'Assistant';
+$labels['spouse'] = 'Spouse';
+$labels['allfields'] = 'All fields';
+$labels['search'] = 'Search';
+$labels['advsearch'] = 'Advanced Search';
+$labels['advanced'] = 'Advanced';
+$labels['other'] = 'Other';
+$labels['typehome'] = 'Home';
+$labels['typework'] = 'Work';
+$labels['typeother'] = 'Other';
+$labels['typemobile'] = 'Mobile';
+$labels['typemain'] = 'Main';
+$labels['typehomefax'] = 'Home Fax';
+$labels['typeworkfax'] = 'Work Fax';
+$labels['typecar'] = 'Car';
+$labels['typepager'] = 'Pager';
+$labels['typevideo'] = 'Video';
+$labels['typeassistant'] = 'Assistant';
+$labels['typehomepage'] = 'Home Page';
+$labels['typeblog'] = 'Blog';
+$labels['typeprofile'] = 'Profile';
+$labels['addfield'] = 'Add field...';
+$labels['addcontact'] = 'Add new contact';
+$labels['editcontact'] = 'Edit contact';
+$labels['contacts'] = 'Contacts';
+$labels['contactproperties'] = 'Contact properties';
+$labels['personalinfo'] = 'Personal information';
+$labels['edit'] = 'Edit';
+$labels['cancel'] = 'Cancel';
+$labels['save'] = 'Save';
+$labels['delete'] = 'Delete';
+$labels['rename'] = 'Rename';
+$labels['addphoto'] = 'Add';
+$labels['replacephoto'] = 'Replace';
+$labels['uploadphoto'] = 'Upload photo';
+$labels['newcontact'] = 'Create new contact card';
+$labels['deletecontact'] = 'Delete selected contacts';
+$labels['composeto'] = 'Compose mail to';
+$labels['contactsfromto'] = 'Contacts $from to $to of $count';
+$labels['print'] = 'Print';
+$labels['export'] = 'Export';
+$labels['exportall'] = 'Export all';
+$labels['exportsel'] = 'Export selected';
+$labels['exportvcards'] = 'Export contacts in vCard format';
+$labels['newcontactgroup'] = 'Create new contact group';
+$labels['grouprename'] = 'Rename group';
+$labels['groupdelete'] = 'Delete group';
+$labels['groupremoveselected'] = 'Remove selected contacts from group';
+$labels['previouspage'] = 'Show previous page';
+$labels['firstpage'] = 'Show first page';
+$labels['nextpage'] = 'Show next page';
+$labels['lastpage'] = 'Show last page';
+$labels['group'] = 'Group';
+$labels['groups'] = 'Groups';
+$labels['listgroup'] = 'List group members';
+$labels['personaladrbook'] = 'Personal Addresses';
+$labels['searchsave'] = 'Save search';
+$labels['searchdelete'] = 'Delete search';
+$labels['import'] = 'Import';
+$labels['importcontacts'] = 'Import contacts';
+$labels['importfromfile'] = 'Import from file:';
+$labels['importtarget'] = 'Add contacts to';
+$labels['importreplace'] = 'Replace the entire address book';
+$labels['importgroups'] = 'Import group assignments';
+$labels['importgroupsall'] = 'All (create groups if necessary)';
+$labels['importgroupsexisting'] = 'Only for existing groups';
+$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
+$labels['done'] = 'Done';
+$labels['settingsfor'] = 'Settings for';
+$labels['about'] = 'About';
+$labels['preferences'] = 'Preferences';
+$labels['userpreferences'] = 'User preferences';
+$labels['editpreferences'] = 'Edit user preferences';
+$labels['identities'] = 'Identities';
+$labels['manageidentities'] = 'Manage identities for this account';
+$labels['newidentity'] = 'New identity';
+$labels['newitem'] = 'New item';
+$labels['edititem'] = 'Edit item';
+$labels['preferhtml'] = 'Display HTML';
+$labels['defaultcharset'] = 'Default Character Set';
+$labels['htmlmessage'] = 'HTML Message';
+$labels['messagepart'] = 'Part';
+$labels['digitalsig'] = 'Digital Signature';
+$labels['dateformat'] = 'Date format';
+$labels['timeformat'] = 'Time format';
+$labels['prettydate'] = 'Pretty dates';
+$labels['setdefault'] = 'Set default';
+$labels['autodetect'] = 'Auto';
+$labels['language'] = 'Language';
+$labels['timezone'] = 'Time zone';
+$labels['pagesize'] = 'Rows per page';
+$labels['signature'] = 'Signature';
+$labels['dstactive'] = 'Daylight saving time';
+$labels['showinextwin'] = 'Open message in a new window';
+$labels['composeextwin'] = 'Compose in a new window';
+$labels['htmleditor'] = 'Compose HTML messages';
+$labels['htmlonreply'] = 'on reply to HTML message';
+$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
+$labels['htmlsignature'] = 'HTML signature';
+$labels['showemail'] = 'Show email address with display name';
+$labels['previewpane'] = 'Show preview pane';
+$labels['skin'] = 'Interface skin';
+$labels['logoutclear'] = 'Clear Trash on logout';
+$labels['logoutcompact'] = 'Compact Inbox on logout';
+$labels['uisettings'] = 'User Interface';
+$labels['serversettings'] = 'Server Settings';
+$labels['mailboxview'] = 'Mailbox View';
+$labels['mdnrequests'] = 'On request for return receipt';
+$labels['askuser'] = 'ask me';
+$labels['autosend'] = 'send receipt';
+$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
+$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
+$labels['ignore'] = 'ignore';
+$labels['readwhendeleted'] = 'Mark the message as read on delete';
+$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
+$labels['skipdeleted'] = 'Do not show deleted messages';
+$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
+$labels['deletejunk'] = 'Directly delete messages in Junk';
+$labels['showremoteimages'] = 'Display remote inline images';
+$labels['fromknownsenders'] = 'from known senders';
+$labels['always'] = 'always';
+$labels['showinlineimages'] = 'Display attached images below the message';
+$labels['autosavedraft'] = 'Automatically save draft';
+$labels['everynminutes'] = 'every $n minute(s)';
+$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
+$labels['never'] = 'never';
+$labels['immediately'] = 'immediately';
+$labels['messagesdisplaying'] = 'Displaying Messages';
+$labels['messagescomposition'] = 'Composing Messages';
+$labels['mimeparamfolding'] = 'Attachment names';
+$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
+$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
+$labels['2047folding'] = 'Full RFC 2047 (other)';
+$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
+$labels['advancedoptions'] = 'Advanced options';
+$labels['focusonnewmessage'] = 'Focus browser window on new message';
+$labels['checkallfolders'] = 'Check all folders for new messages';
+$labels['displaynext'] = 'After message delete/move display the next message';
+$labels['defaultfont'] = 'Default font of HTML message';
+$labels['mainoptions'] = 'Main Options';
+$labels['browseroptions'] = 'Browser Options';
+$labels['section'] = 'Section';
+$labels['maintenance'] = 'Maintenance';
+$labels['newmessage'] = 'New Message';
+$labels['signatureoptions'] = 'Signature Options';
+$labels['whenreplying'] = 'When replying';
+$labels['replyempty'] = 'do not quote the original message';
+$labels['replytopposting'] = 'start new message above the quote';
+$labels['replybottomposting'] = 'start new message below the quote';
+$labels['replyremovesignature'] = 'When replying remove original signature from message';
+$labels['autoaddsignature'] = 'Automatically add signature';
+$labels['newmessageonly'] = 'new message only';
+$labels['replyandforwardonly'] = 'replies and forwards only';
+$labels['insertsignature'] = 'Insert signature';
+$labels['previewpanemarkread'] = 'Mark previewed messages as read';
+$labels['afternseconds'] = 'after $n seconds';
+$labels['reqmdn'] = 'Always request a return receipt';
+$labels['reqdsn'] = 'Always request a delivery status notification';
+$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
+$labels['defaultabook'] = 'Default address book';
+$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
+$labels['listnamedisplay'] = 'List contacts as';
+$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
+$labels['spellcheckoptions'] = 'Spellcheck Options';
+$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
+$labels['spellcheckignorenums'] = 'Ignore words with numbers';
+$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
+$labels['addtodict'] = 'Add to dictionary';
+$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
+$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';
+$labels['foldername'] = 'Folder name';
+$labels['subscribed'] = 'Subscribed';
+$labels['messagecount'] = 'Messages';
+$labels['create'] = 'Create';
+$labels['createfolder'] = 'Create new folder';
+$labels['managefolders'] = 'Manage folders';
+$labels['specialfolders'] = 'Special Folders';
+$labels['properties'] = 'Properties';
+$labels['folderproperties'] = 'Folder properties';
+$labels['parentfolder'] = 'Parent folder';
+$labels['location'] = 'Location';
+$labels['info'] = 'Information';
+$labels['getfoldersize'] = 'Click to get folder size';
+$labels['changesubscription'] = 'Click to change subscription';
+$labels['foldertype'] = 'Folder Type';
+$labels['personalfolder'] = 'Private Folder';
+$labels['otherfolder'] = 'Other User\'s Folder';
+$labels['sharedfolder'] = 'Public Folder';
+$labels['sortby'] = 'Sort by';
+$labels['sortasc'] = 'Sort ascending';
+$labels['sortdesc'] = 'Sort descending';
+$labels['undo'] = 'Undo';
+$labels['installedplugins'] = 'Installed plugins';
+$labels['plugin'] = 'Plugin';
+$labels['version'] = 'Version';
+$labels['source'] = 'Source';
+$labels['license'] = 'License';
+$labels['support'] = 'Get support';
+$labels['B'] = 'B';
+$labels['KB'] = 'KB';
+$labels['MB'] = 'MB';
+$labels['GB'] = 'GB';
+$labels['unicode'] = 'Unicode';
+$labels['english'] = 'English';
+$labels['westerneuropean'] = 'Western European';
+$labels['easterneuropean'] = 'Eastern European';
+$labels['southeasterneuropean'] = 'South-Eastern European';
+$labels['baltic'] = 'Baltic';
+$labels['cyrillic'] = 'Cyrillic';
+$labels['arabic'] = 'Arabic';
+$labels['greek'] = 'Greek';
+$labels['hebrew'] = 'Hebrew';
+$labels['turkish'] = 'Turkish';
+$labels['nordic'] = 'Nordic';
+$labels['thai'] = 'Thai';
+$labels['celtic'] = 'Celtic';
+$labels['vietnamese'] = 'Vietnamese';
+$labels['japanese'] = 'Japanese';
+$labels['korean'] = 'Korean';
+$labels['chinese'] = 'Chinese';
+?>
diff --git a/program/localization/en_CA/messages.inc b/program/localization/en_CA/messages.inc
new file mode 100644
index 000000000..169c1c9b1
--- /dev/null
+++ b/program/localization/en_CA/messages.inc
@@ -0,0 +1,176 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/<lang>/messages.inc |
+ | |
+ | Localization file of the Roundcube Webmail client |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
+*/
+$messages['errortitle'] = 'An error occurred!';
+$messages['loginfailed'] = 'Login failed.';
+$messages['cookiesdisabled'] = 'Your browser does not accept cookies.';
+$messages['sessionerror'] = 'Your session is invalid or expired.';
+$messages['storageerror'] = 'Connection to storage server failed.';
+$messages['servererror'] = 'Server Error!';
+$messages['servererrormsg'] = 'Server Error: $msg';
+$messages['dberror'] = 'Database Error!';
+$messages['requesttimedout'] = 'Request timed out';
+$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
+$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
+$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
+$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
+$messages['invalidrequest'] = 'Invalid request! No data was saved.';
+$messages['invalidhost'] = 'Invalid server name.';
+$messages['nomessagesfound'] = 'No messages found in this mailbox.';
+$messages['loggedout'] = 'You have successfully terminated the session. Good bye!';
+$messages['mailboxempty'] = 'Mailbox is empty.';
+$messages['refreshing'] = 'Refreshing...';
+$messages['loading'] = 'Loading...';
+$messages['uploading'] = 'Uploading file...';
+$messages['uploadingmany'] = 'Uploading files...';
+$messages['loadingdata'] = 'Loading data...';
+$messages['checkingmail'] = 'Checking for new messages...';
+$messages['sendingmessage'] = 'Sending message...';
+$messages['messagesent'] = 'Message sent successfully.';
+$messages['savingmessage'] = 'Saving message...';
+$messages['messagesaved'] = 'Message saved to Drafts.';
+$messages['successfullysaved'] = 'Successfully saved.';
+$messages['savingresponse'] = 'Saving response text...';
+$messages['deleteresponseconfirm'] = 'Do you really want to delete this response text?';
+$messages['addedsuccessfully'] = 'Contact added successfully to address book.';
+$messages['contactexists'] = 'A contact with the same e-mail address already exists.';
+$messages['contactnameexists'] = 'A contact with the same name already exists.';
+$messages['blockedimages'] = 'To protect your privacy, remote images are blocked in this message.';
+$messages['encryptedmessage'] = 'This is an encrypted message and can not be displayed. Sorry!';
+$messages['nocontactsfound'] = 'No contacts found.';
+$messages['contactnotfound'] = 'The requested contact was not found.';
+$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
+$messages['sendingfailed'] = 'Failed to send message.';
+$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
+$messages['errorsavingsent'] = 'An error occurred while saving sent message.';
+$messages['errorsaving'] = 'An error occurred while saving.';
+$messages['errormoving'] = 'Could not move the message(s).';
+$messages['errorcopying'] = 'Could not copy the message(s).';
+$messages['errordeleting'] = 'Could not delete the message(s).';
+$messages['errormarking'] = 'Could not mark the message(s).';
+$messages['deletecontactconfirm'] = 'Do you really want to delete selected contact(s)?';
+$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
+$messages['deletemessagesconfirm'] = 'Do you really want to delete selected message(s)?';
+$messages['deletefolderconfirm'] = 'Do you really want to delete this folder?';
+$messages['purgefolderconfirm'] = 'Do you really want to delete all messages in this folder?';
+$messages['contactdeleting'] = 'Deleting contact(s)...';
+$messages['groupdeleting'] = 'Deleting group...';
+$messages['folderdeleting'] = 'Deleting folder...';
+$messages['foldermoving'] = 'Moving folder...';
+$messages['foldersubscribing'] = 'Subscribing folder...';
+$messages['folderunsubscribing'] = 'Unsubscribing folder...';
+$messages['formincomplete'] = 'The form was not completely filled out.';
+$messages['noemailwarning'] = 'Please enter a valid email address.';
+$messages['nonamewarning'] = 'Please enter a name.';
+$messages['nopagesizewarning'] = 'Please enter a page size.';
+$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
+$messages['norecipientwarning'] = 'Please enter at least one recipient.';
+$messages['nosubjectwarning'] = 'The "Subject" field is empty. Would you like to enter one now?';
+$messages['nobodywarning'] = 'Send this message without text?';
+$messages['notsentwarning'] = 'Message has not been sent. Do you want to discard your message?';
+$messages['restoresavedcomposedata'] = 'A previously composed but unsent message was found.\n\nSubject: $subject\nSaved: $date\n\nDo you want to restore this message?';
+$messages['noldapserver'] = 'Please select an ldap server to search.';
+$messages['nosearchname'] = 'Please enter a contact name or email address.';
+$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
+$messages['searchsuccessful'] = '$nr messages found.';
+$messages['contactsearchsuccessful'] = '$nr contacts found.';
+$messages['searchnomatch'] = 'Search returned no matches.';
+$messages['searching'] = 'Searching...';
+$messages['checking'] = 'Checking...';
+$messages['nospellerrors'] = 'No spelling errors found.';
+$messages['folderdeleted'] = 'Folder successfully deleted.';
+$messages['foldersubscribed'] = 'Folder successfully subscribed.';
+$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
+$messages['folderpurged'] = 'Folder has successfully been emptied.';
+$messages['folderexpunged'] = 'Folder has successfully been compacted.';
+$messages['deletedsuccessfully'] = 'Successfully deleted.';
+$messages['converting'] = 'Removing formatting...';
+$messages['messageopenerror'] = 'Could not load message from server.';
+$messages['fileuploaderror'] = 'File upload failed.';
+$messages['filesizeerror'] = 'The uploaded file exceeds the maximum size of $size.';
+$messages['copysuccess'] = 'Successfully copied $nr contacts.';
+$messages['movesuccess'] = 'Successfully moved $nr contacts.';
+$messages['copyerror'] = 'Could not copy any contacts.';
+$messages['moveerror'] = 'Could not move any contacts.';
+$messages['sourceisreadonly'] = 'This address source is read only.';
+$messages['errorsavingcontact'] = 'Could not save the contact address.';
+$messages['movingmessage'] = 'Moving message(s)...';
+$messages['copyingmessage'] = 'Copying message(s)...';
+$messages['copyingcontact'] = 'Copying contact(s)...';
+$messages['movingcontact'] = 'Moving contact(s)...';
+$messages['deletingmessage'] = 'Deleting message(s)...';
+$messages['markingmessage'] = 'Marking message(s)...';
+$messages['addingmember'] = 'Adding contact(s) to the group...';
+$messages['removingmember'] = 'Removing contact(s) from the group...';
+$messages['receiptsent'] = 'Successfully sent a read receipt.';
+$messages['errorsendingreceipt'] = 'Could not send the receipt.';
+$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
+$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
+$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
+$messages['selectimportfile'] = 'Please select a file to upload.';
+$messages['addresswriterror'] = 'The selected address book is not writeable.';
+$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
+$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
+$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
+$messages['importwait'] = 'Importing, please wait...';
+$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
+$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
+$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
+$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
+$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
+$messages['opnotpermitted'] = 'Operation not permitted!';
+$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
+$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
+$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
+$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
+$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
+$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
+$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
+$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
+$messages['smtperror'] = 'SMTP Error: $msg';
+$messages['emailformaterror'] = 'Invalid e-mail address: $email';
+$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
+$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
+$messages['internalerror'] = 'An internal error occurred. Please try again.';
+$messages['contactdelerror'] = 'Could not delete contact(s).';
+$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
+$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
+$messages['contactrestored'] = 'Contact(s) restored successfully.';
+$messages['groupdeleted'] = 'Group deleted successfully.';
+$messages['grouprenamed'] = 'Group renamed successfully.';
+$messages['groupcreated'] = 'Group created successfully.';
+$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
+$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
+$messages['savedsearchcreated'] = 'Saved search created successfully.';
+$messages['savedsearchcreateerror'] = 'Could not create saved search.';
+$messages['messagedeleted'] = 'Message(s) deleted successfully.';
+$messages['messagemoved'] = 'Message(s) moved successfully.';
+$messages['messagecopied'] = 'Message(s) copied successfully.';
+$messages['messagemarked'] = 'Message(s) marked successfully.';
+$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
+$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
+$messages['namecannotbeempty'] = 'Name cannot be empty.';
+$messages['nametoolong'] = 'Name is too long.';
+$messages['folderupdated'] = 'Folder updated successfully.';
+$messages['foldercreated'] = 'Folder created successfully.';
+$messages['invalidimageformat'] = 'Not a valid image format.';
+$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
+$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
+$messages['messagetoobig'] = 'The message part is too big to process it.';
+$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
+$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
+?>
diff --git a/program/localization/en_GB/labels.inc b/program/localization/en_GB/labels.inc
index f903b0cf5..c7778e955 100644
--- a/program/localization/en_GB/labels.inc
+++ b/program/localization/en_GB/labels.inc
@@ -15,34 +15,22 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Welcome to $product';
$labels['username'] = 'Username';
$labels['password'] = 'Password';
$labels['server'] = 'Server';
$labels['login'] = 'Login';
-
-// taskbar
$labels['logout'] = 'Logout';
$labels['mail'] = 'Mail';
$labels['settings'] = 'Settings';
$labels['addressbook'] = 'Address Book';
-
-// mailbox names
$labels['inbox'] = 'Inbox';
$labels['drafts'] = 'Drafts';
$labels['sent'] = 'Sent';
$labels['trash'] = 'Deleted Items';
$labels['junk'] = 'Junk';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Subject';
$labels['from'] = 'From';
-$labels['sender'] = 'Sender';
$labels['to'] = 'To';
$labels['cc'] = 'Copy';
$labels['bcc'] = 'Bcc';
@@ -54,27 +42,20 @@ $labels['priority'] = 'Priority';
$labels['organization'] = 'Company';
$labels['readstatus'] = 'Read status';
$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'Folders';
$labels['messagesfromto'] = 'Messages $from to $to of $count';
$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = 'Message $nr of $count';
$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'Copy';
$labels['move'] = 'Move';
$labels['moveto'] = 'Move to...';
$labels['download'] = 'Download';
-$labels['open'] = 'Open';
$labels['showattachment'] = 'Show';
$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'File name';
$labels['filesize'] = 'File size';
-
$labels['addtoaddressbook'] = 'Add to address book';
-
-// weekdays short
$labels['sun'] = 'Sun';
$labels['mon'] = 'Mon';
$labels['tue'] = 'Tue';
@@ -82,8 +63,6 @@ $labels['wed'] = 'Wed';
$labels['thu'] = 'Thu';
$labels['fri'] = 'Fri';
$labels['sat'] = 'Sat';
-
-// weekdays long
$labels['sunday'] = 'Sunday';
$labels['monday'] = 'Monday';
$labels['tuesday'] = 'Tuesday';
@@ -91,8 +70,6 @@ $labels['wednesday'] = 'Wednesday';
$labels['thursday'] = 'Thursday';
$labels['friday'] = 'Friday';
$labels['saturday'] = 'Saturday';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +82,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Oct';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
-
-// months long
$labels['longjan'] = 'January';
$labels['longfeb'] = 'February';
$labels['longmar'] = 'March';
@@ -119,10 +94,7 @@ $labels['longsep'] = 'September';
$labels['longoct'] = 'October';
$labels['longnov'] = 'November';
$labels['longdec'] = 'December';
-
$labels['today'] = 'Today';
-
-// toolbar buttons
$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'Check for new messages';
$labels['compose'] = 'Compose';
@@ -155,7 +127,6 @@ $labels['moreactions'] = 'More actions...';
$labels['more'] = 'More';
$labels['back'] = 'Back';
$labels['options'] = 'Options';
-
$labels['select'] = 'Select';
$labels['all'] = 'All';
$labels['none'] = 'None';
@@ -163,7 +134,6 @@ $labels['currpage'] = 'Current page';
$labels['unread'] = 'Unread';
$labels['flagged'] = 'Flagged';
$labels['unanswered'] = 'Unanswered';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'Deleted';
$labels['undeleted'] = 'Not deleted';
$labels['invert'] = 'Invert';
@@ -174,7 +144,6 @@ $labels['expand-all'] = 'Expand All';
$labels['expand-unread'] = 'Expand Unread';
$labels['collapse-all'] = 'Collapse All';
$labels['threaded'] = 'Threaded';
-
$labels['autoexpand_threads'] = 'Expand message threads';
$labels['do_expand'] = 'all threads';
$labels['expand_only_unread'] = 'only with unread messages';
@@ -190,29 +159,18 @@ $labels['listcolumns'] = 'List columns';
$labels['listsorting'] = 'Sorting column';
$labels['listorder'] = 'Sorting order';
$labels['listmode'] = 'List view mode';
-
$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'Compact';
$labels['empty'] = 'Empty';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Disk usage';
$labels['unknown'] = 'unknown';
$labels['unlimited'] = 'unlimited';
-
$labels['quicksearch'] = 'Quick search';
$labels['resetsearch'] = 'Reset search';
$labels['searchmod'] = 'Search modifiers';
$labels['msgtext'] = 'Entire message';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'Open in new window';
$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'Edit as new';
$labels['send'] = 'Send';
$labels['sendmessage'] = 'Send now';
@@ -224,26 +182,22 @@ $labels['returnreceipt'] = 'Return receipt';
$labels['dsn'] = 'Delivery status notification';
$labels['mailreplyintro'] = 'On $date, $sender wrote:';
$labels['originalmessage'] = 'Original Message';
-
$labels['editidents'] = 'Edit identities';
$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'Check spelling';
$labels['resumeediting'] = 'Resume editing';
$labels['revertto'] = 'Revert to';
-
$labels['attach'] = 'Attach';
$labels['attachments'] = 'Attachments';
$labels['upload'] = 'Upload';
$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'Close';
$labels['messageoptions'] = 'Message options...';
-
$labels['low'] = 'Low';
$labels['lowest'] = 'Lowest';
$labels['normal'] = 'Normal';
$labels['high'] = 'High';
$labels['highest'] = 'Highest';
-
$labels['nosubject'] = '(no subject)';
$labels['showimages'] = 'Display images';
$labels['alwaysshow'] = 'Always show images from $sender';
@@ -251,25 +205,19 @@ $labels['isdraft'] = 'This is a draft message.';
$labels['andnmore'] = '$nr more...';
$labels['togglemoreheaders'] = 'Show more message headers';
$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Plain text';
$labels['savesentmessagein'] = 'Save sent message in';
$labels['dontsave'] = 'don\'t save';
$labels['maxuploadsize'] = 'Maximum allowed file size is $size';
-
$labels['addcc'] = 'Add Cc';
$labels['addbcc'] = 'Add Bcc';
$labels['addreplyto'] = 'Add Reply-To';
$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
$labels['receiptread'] = 'Return Receipt (read)';
$labels['yourmessage'] = 'This is a Return Receipt for your message';
$labels['receiptnote'] = 'Note: This receipt only acknowledges that the message was displayed on the recipient\'s computer. There is no guarantee that the recipient has read or understood the message contents.';
-
-// address boook
$labels['name'] = 'Display Name';
$labels['firstname'] = 'First Name';
$labels['surname'] = 'Last Name';
@@ -304,7 +252,6 @@ $labels['search'] = 'Search';
$labels['advsearch'] = 'Advanced Search';
$labels['advanced'] = 'Advanced';
$labels['other'] = 'Other';
-
$labels['typehome'] = 'Home';
$labels['typework'] = 'Work';
$labels['typeother'] = 'Other';
@@ -319,14 +266,12 @@ $labels['typeassistant'] = 'Assistant';
$labels['typehomepage'] = 'Home Page';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profile';
-
$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'Add new contact';
$labels['editcontact'] = 'Edit contact';
$labels['contacts'] = 'Contacts';
$labels['contactproperties'] = 'Contact properties';
$labels['personalinfo'] = 'Personal information';
-
$labels['edit'] = 'Edit';
$labels['cancel'] = 'Cancel';
$labels['save'] = 'Save';
@@ -335,61 +280,45 @@ $labels['rename'] = 'Rename';
$labels['addphoto'] = 'Add';
$labels['replacephoto'] = 'Replace';
$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'Create new contact card';
$labels['deletecontact'] = 'Delete selected contacts';
$labels['composeto'] = 'Compose mail to';
$labels['contactsfromto'] = 'Contacts $from to $to of $count';
$labels['print'] = 'Print';
$labels['export'] = 'Export';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'Export contacts in vCard format';
$labels['newcontactgroup'] = 'Create new contact group';
$labels['grouprename'] = 'Rename group';
$labels['groupdelete'] = 'Delete group';
$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'Show previous set';
$labels['firstpage'] = 'Show first set';
$labels['nextpage'] = 'Show next set';
$labels['lastpage'] = 'Show last set';
-
$labels['group'] = 'Group';
$labels['groups'] = 'Groups';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Personal Addresses';
-
$labels['searchsave'] = 'Save search';
$labels['searchdelete'] = 'Delete search';
-
$labels['import'] = 'Import';
$labels['importcontacts'] = 'Import contacts';
$labels['importfromfile'] = 'Import from file:';
-$labels['importtarget'] = 'Add new contacts to address book:';
$labels['importreplace'] = 'Replace the entire address book';
$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'Done';
-
-// settings
$labels['settingsfor'] = 'Settings for';
$labels['about'] = 'About';
$labels['preferences'] = 'Preferences';
$labels['userpreferences'] = 'User preferences';
$labels['editpreferences'] = 'Edit user preferences';
-
$labels['identities'] = 'Identities';
$labels['manageidentities'] = 'Manage identities for this account';
$labels['newidentity'] = 'New identity';
-
$labels['newitem'] = 'New item';
$labels['edititem'] = 'Edit item';
-
$labels['preferhtml'] = 'Display HTML';
$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'HTML Message';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
$labels['dateformat'] = 'Date format';
$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'Pretty dates';
@@ -406,7 +335,6 @@ $labels['htmleditor'] = 'Compose HTML messages';
$labels['htmlonreply'] = 'on reply to HTML message only';
$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'HTML signature';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Show preview pane';
$labels['skin'] = 'Interface skin';
$labels['logoutclear'] = 'Clear Trash on logout';
@@ -476,11 +404,9 @@ $labels['spellcheckignorenums'] = 'Ignore words with numbers';
$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalised';
$labels['addtodict'] = 'Add to dictionary';
$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
$labels['forwardmode'] = 'Messages forwarding';
$labels['inline'] = 'inline';
$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'Folder';
$labels['folders'] = 'Folders';
$labels['foldername'] = 'Folder name';
@@ -501,26 +427,20 @@ $labels['foldertype'] = 'Folder Type';
$labels['personalfolder'] = 'Private Folder';
$labels['otherfolder'] = 'Other User\'s Folder';
$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'Sort by';
$labels['sortasc'] = 'Sort ascending';
$labels['sortdesc'] = 'Sort descending';
$labels['undo'] = 'Undo';
-
$labels['installedplugins'] = 'Installed plugins';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Version';
$labels['source'] = 'Source';
$labels['license'] = 'Licence';
$labels['support'] = 'Get support';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'English';
$labels['westerneuropean'] = 'Western European';
@@ -539,5 +459,4 @@ $labels['vietnamese'] = 'Vietnamese';
$labels['japanese'] = 'Japanese';
$labels['korean'] = 'Korean';
$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/en_GB/messages.inc b/program/localization/en_GB/messages.inc
index 9509451ed..5b6a8f7f2 100644
--- a/program/localization/en_GB/messages.inc
+++ b/program/localization/en_GB/messages.inc
@@ -15,9 +15,7 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred.';
+$messages['errortitle'] = 'An error occured.';
$messages['loginfailed'] = 'Login failed.';
$messages['cookiesdisabled'] = 'Your browser does not accept cookies.';
$messages['sessionerror'] = 'Your session is invalid or has expired.';
@@ -28,8 +26,6 @@ $messages['dberror'] = 'Database Error!';
$messages['requesttimedout'] = 'Request timed out';
$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'Invalid request! No data was saved.';
$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'No messages found in this mailbox.';
@@ -56,8 +52,6 @@ $messages['contactnotfound'] = 'The requested contact was not found.';
$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'Failed to send message.';
$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
-$messages['errorsavingsent'] = 'An error occurred while saving sent message.';
-$messages['errorsaving'] = 'An error occurred while saving.';
$messages['errormoving'] = 'Could not move the message(s).';
$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'Could not delete the message(s).';
@@ -101,16 +95,11 @@ $messages['converting'] = 'Removing formatting...';
$messages['messageopenerror'] = 'Could not load message from server.';
$messages['fileuploaderror'] = 'File upload failed.';
$messages['filesizeerror'] = 'The uploaded file exceeds the maximum size of $size.';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'This address book is read-only.';
$messages['errorsavingcontact'] = 'Could not save the contact address.';
$messages['movingmessage'] = 'Moving message(s)...';
$messages['copyingmessage'] = 'Copying message(s)...';
$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'Deleting message(s)...';
$messages['markingmessage'] = 'Marking message(s)...';
$messages['addingmember'] = 'Adding contact(s) to the group...';
@@ -129,8 +118,6 @@ $messages['importwait'] = 'Importing, please wait...';
$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'Operation not permitted!';
$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
@@ -144,7 +131,6 @@ $messages['smtperror'] = 'SMTP Error: $msg';
$messages['emailformaterror'] = 'Incorrect e-mail address: $email';
$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occurred. Please try again.';
$messages['contactdelerror'] = 'Could not delete contact(s).';
$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
@@ -172,5 +158,4 @@ $messages['parentnotwritable'] = 'Unable to create/move folder into selected par
$messages['messagetoobig'] = 'The message part is too big to process it.';
$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/en_US/labels.inc b/program/localization/en_US/labels.inc
index 840c9358c..61890a642 100644
--- a/program/localization/en_US/labels.inc
+++ b/program/localization/en_US/labels.inc
@@ -64,6 +64,7 @@ $labels['fromtoshort'] = '$from – $to of $count';
$labels['copy'] = 'Copy';
$labels['move'] = 'Move';
$labels['moveto'] = 'Move to...';
+$labels['copyto'] = 'Copy to...';
$labels['download'] = 'Download';
$labels['open'] = 'Open';
$labels['showattachment'] = 'Show';
@@ -232,6 +233,18 @@ $labels['checkspelling'] = 'Check spelling';
$labels['resumeediting'] = 'Resume editing';
$labels['revertto'] = 'Revert to';
+$labels['restore'] = 'Restore';
+$labels['restoremessage'] = 'Restore message?';
+
+$labels['responses'] = 'Responses';
+$labels['insertresponse'] = 'Insert a response';
+$labels['manageresponses'] = 'Manage responses';
+$labels['savenewresponse'] = 'Save new response';
+$labels['editresponses'] = 'Edit responses';
+$labels['editresponse'] = 'Edit response';
+$labels['responsename'] = 'Name';
+$labels['responsetext'] = 'Response Text';
+
$labels['attach'] = 'Attach';
$labels['attachments'] = 'Attachments';
$labels['upload'] = 'Upload';
@@ -484,6 +497,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/en_US/messages.inc b/program/localization/en_US/messages.inc
index 9733109ad..a36d9ab62 100644
--- a/program/localization/en_US/messages.inc
+++ b/program/localization/en_US/messages.inc
@@ -46,6 +46,8 @@ $messages['messagesent'] = 'Message sent successfully.';
$messages['savingmessage'] = 'Saving message...';
$messages['messagesaved'] = 'Message saved to Drafts.';
$messages['successfullysaved'] = 'Successfully saved.';
+$messages['savingresponse'] = 'Saving response text...';
+$messages['deleteresponseconfirm'] = 'Do you really want to delete this response text?';
$messages['addedsuccessfully'] = 'Contact added successfully to address book.';
$messages['contactexists'] = 'A contact with the same e-mail address already exists.';
$messages['contactnameexists'] = 'A contact with the same name already exists.';
@@ -82,6 +84,7 @@ $messages['norecipientwarning'] = 'Please enter at least one recipient.';
$messages['nosubjectwarning'] = 'The "Subject" field is empty. Would you like to enter one now?';
$messages['nobodywarning'] = 'Send this message without text?';
$messages['notsentwarning'] = 'Message has not been sent. Do you want to discard your message?';
+$messages['restoresavedcomposedata'] = 'A previously composed but unsent message was found.\n\nSubject: $subject\nSaved: $date\n\nDo you want to restore this message?';
$messages['noldapserver'] = 'Please select an ldap server to search.';
$messages['nosearchname'] = 'Please enter a contact name or email address.';
$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
diff --git a/program/localization/eo/labels.inc b/program/localization/eo/labels.inc
index 3c2930c89..0a55d36ae 100644
--- a/program/localization/eo/labels.inc
+++ b/program/localization/eo/labels.inc
@@ -15,34 +15,23 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Bonvenon al $product';
$labels['username'] = 'Uzantnomo';
$labels['password'] = 'Pasvorto';
$labels['server'] = 'Servilo';
$labels['login'] = 'Ensaluti';
-
-// taskbar
$labels['logout'] = 'Elsaluti';
$labels['mail'] = 'RetpoÅto';
$labels['settings'] = 'Agordoj';
$labels['addressbook'] = 'Adresaro';
-
-// mailbox names
$labels['inbox'] = 'Ricevitujo';
$labels['drafts'] = 'Malnetujo';
$labels['sent'] = 'Senditujo';
$labels['trash'] = 'Rubujo';
$labels['junk'] = 'Spamujo';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Temo';
$labels['from'] = 'Sendanto';
-$labels['sender'] = 'Sender';
+$labels['sender'] = 'Sendinto';
$labels['to'] = 'Ricevanto';
$labels['cc'] = 'Kopio';
$labels['bcc'] = 'Blindkopio';
@@ -54,27 +43,20 @@ $labels['priority'] = 'Prioritato';
$labels['organization'] = 'Organizo';
$labels['readstatus'] = 'Legis statuson';
$labels['listoptions'] = 'List-agordoj...';
-
$labels['mailboxlist'] = 'Dosierujoj';
$labels['messagesfromto'] = 'MesaÄoj ekde $from Äis $to de $count';
$labels['threadsfromto'] = 'Fadenoj $from al $to de $count';
$labels['messagenrof'] = 'MesaÄo $nr-a de $count';
$labels['fromtoshort'] = '$from - $to de $count';
-
$labels['copy'] = 'Kopii';
$labels['move'] = 'Movi';
$labels['moveto'] = 'transloku al...';
$labels['download'] = 'elÅutu';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
+$labels['showattachment'] = 'Montri';
+$labels['showanyway'] = 'Tamen montri Äin';
$labels['filename'] = 'Dosiernomo';
$labels['filesize'] = 'Dosiergrando';
-
$labels['addtoaddressbook'] = 'Aldonu al adresaro';
-
-// weekdays short
$labels['sun'] = 'Dim';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Mar';
@@ -82,8 +64,6 @@ $labels['wed'] = 'Mer';
$labels['thu'] = 'Ä´aÅ­';
$labels['fri'] = 'Ven';
$labels['sat'] = 'Sab';
-
-// weekdays long
$labels['sunday'] = 'Dimanĉo';
$labels['monday'] = 'Lundo';
$labels['tuesday'] = 'Mardo';
@@ -91,8 +71,6 @@ $labels['wednesday'] = 'Merkredo';
$labels['thursday'] = 'Ä´aÅ­do';
$labels['friday'] = 'Vendredo';
$labels['saturday'] = 'Sabato';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +83,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
-
-// months long
$labels['longjan'] = 'Januaro';
$labels['longfeb'] = 'Februaro';
$labels['longmar'] = 'Marto';
@@ -119,10 +95,7 @@ $labels['longsep'] = 'Septembro';
$labels['longoct'] = 'Oktobro';
$labels['longnov'] = 'Novembro';
$labels['longdec'] = 'Decembro';
-
$labels['today'] = 'HodiaÅ­';
-
-// toolbar buttons
$labels['refresh'] = 'Aktualigi';
$labels['checkmail'] = 'Kontroli por novaj mesaÄoj';
$labels['compose'] = 'Verki';
@@ -155,7 +128,6 @@ $labels['moreactions'] = 'Pliaj agoj';
$labels['more'] = 'Pli';
$labels['back'] = 'MalantaÅ­en';
$labels['options'] = 'Agordoj';
-
$labels['select'] = 'Elektu';
$labels['all'] = 'Ĉion';
$labels['none'] = 'Nenion';
@@ -163,9 +135,8 @@ $labels['currpage'] = 'Nuna paÄo';
$labels['unread'] = 'Nelegitan';
$labels['flagged'] = 'Markita';
$labels['unanswered'] = 'Nerespondita';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'Forigita';
-$labels['undeleted'] = 'Not deleted';
+$labels['undeleted'] = 'Ne forigita';
$labels['invert'] = 'Inversigu';
$labels['filter'] = 'Filtru';
$labels['list'] = 'Listo';
@@ -174,7 +145,6 @@ $labels['expand-all'] = 'Malfaldi ĉion';
$labels['expand-unread'] = 'Malfaldi Nelegitajn';
$labels['collapse-all'] = 'Faldi ĉion';
$labels['threaded'] = 'Fadenita';
-
$labels['autoexpand_threads'] = 'Malfaldi mesaÄ-fadenojn';
$labels['do_expand'] = 'Ĉiuj fadenoj';
$labels['expand_only_unread'] = 'Nur kun nelegitaj mesaÄoj';
@@ -189,32 +159,21 @@ $labels['desc'] = 'malkreskante';
$labels['listcolumns'] = 'List-rubrikoj';
$labels['listsorting'] = 'Ordig-rubriko';
$labels['listorder'] = 'Ordig-ordo';
-$labels['listmode'] = 'List view mode';
-
+$labels['listmode'] = 'Lista vido';
$labels['folderactions'] = 'Dosierujo-agoj';
$labels['compact'] = 'Kompakta';
$labels['empty'] = 'Malplena';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Diskuzo';
$labels['unknown'] = 'nekonata';
$labels['unlimited'] = 'senlima';
-
$labels['quicksearch'] = 'Rapida serĉo';
$labels['resetsearch'] = 'Vakigu serĉon';
$labels['searchmod'] = 'Serĉ-opcioj';
$labels['msgtext'] = 'Tuta mesaÄo';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'Malfermu en nova fenestro';
$labels['emlsave'] = 'ElÅutu (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'Redaktu kiel nova';
-$labels['send'] = 'Send';
+$labels['send'] = 'Sendi';
$labels['sendmessage'] = 'Sendu mesaÄon';
$labels['savemessage'] = 'Savu ĉi tiun malneton';
$labels['addattachment'] = 'Alfiksu dosieron';
@@ -224,52 +183,42 @@ $labels['returnreceipt'] = 'Return receipt';
$labels['dsn'] = 'Ricev-status-konfirmo';
$labels['mailreplyintro'] = 'Je $date, $sender skribis:';
$labels['originalmessage'] = 'Originala mesaÄo';
-
$labels['editidents'] = 'Redaktu identojn';
$labels['spellcheck'] = 'Literumu';
$labels['checkspelling'] = 'Kontrolu literumadon';
$labels['resumeediting'] = 'Rekomencu redaktadon';
$labels['revertto'] = 'Reiru al';
-
$labels['attach'] = 'Alfiksu';
$labels['attachments'] = 'Alfiksaĵoj';
$labels['upload'] = 'AlÅutu';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Fermi';
$labels['messageoptions'] = 'MesaÄ-agordoj...';
-
$labels['low'] = 'Malalta';
$labels['lowest'] = 'Plej malalta';
$labels['normal'] = 'Normala';
$labels['high'] = 'Alta';
$labels['highest'] = 'Plej alta';
-
$labels['nosubject'] = '(sen temo)';
$labels['showimages'] = 'Montru bildojn';
$labels['alwaysshow'] = 'Ĉiam montru bildojn de $sender';
$labels['isdraft'] = 'Ĉi-mesaÄo estas malneto';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
+$labels['andnmore'] = '$nr pli';
+$labels['togglemoreheaders'] = 'Montri pli multajn mesaÄtitolojn';
+$labels['togglefullheaders'] = 'Maligi ĉu mesaÄaj titoloj nudu';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Plata teksto';
$labels['savesentmessagein'] = 'Konservu senditan mesaÄon en';
$labels['dontsave'] = 'Ne konservu';
$labels['maxuploadsize'] = 'Maksimuma permesata dosier-grando estas $size';
-
$labels['addcc'] = 'Aldonu kopi-ricevanton';
$labels['addbcc'] = 'Aldonu blindan kopi-ricevanton';
$labels['addreplyto'] = 'Aldonu Respondu-Al';
$labels['addfollowupto'] = 'Aldonu Respondu-Al';
-
-// mdn
$labels['mdnrequest'] = 'La sendinto de ĉi tiu mesaÄo petis sciigon de kiam vi legas Äin. Ĉu volas sciigi la sendinton?';
$labels['receiptread'] = 'Legokonfirmo';
$labels['yourmessage'] = 'Jen estas legokonfirmo de via mesaÄo';
$labels['receiptnote'] = 'Notu: Ĉi tiu konfirmo nur asertas ke la mesaÄo estis malfermita je la komputilo de la ricevinto. Ne estas garantio ke la ricevinto legis aÅ­ komprenis la enhavon.';
-
-// address boook
$labels['name'] = 'Nomo';
$labels['firstname'] = 'AntaÅ­nomo';
$labels['surname'] = 'Familia nomo';
@@ -280,7 +229,7 @@ $labels['nickname'] = 'Kromnomo';
$labels['jobtitle'] = 'Postena titolo';
$labels['department'] = 'Departemento';
$labels['gender'] = 'Sekso';
-$labels['maidenname'] = 'Maiden Name';
+$labels['maidenname'] = 'FraÅ­la nomo';
$labels['email'] = 'RetpoÅto';
$labels['phone'] = 'Telefono';
$labels['address'] = 'Adreso';
@@ -304,7 +253,6 @@ $labels['search'] = 'Serĉu';
$labels['advsearch'] = 'Detala sercô';
$labels['advanced'] = 'Altnivela';
$labels['other'] = 'Alia';
-
$labels['typehome'] = 'Hejmo';
$labels['typework'] = 'Laboro';
$labels['typeother'] = 'Alia';
@@ -314,19 +262,16 @@ $labels['typehomefax'] = 'Hejma faksilo';
$labels['typeworkfax'] = 'Laboreja faksilo';
$labels['typecar'] = 'AÅ­tomobilo';
$labels['typepager'] = 'Televokilo';
-$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Asistanto';
$labels['typehomepage'] = 'HejmpaÄo';
$labels['typeblog'] = 'Blogo';
$labels['typeprofile'] = 'Profilo';
-
$labels['addfield'] = 'Aldonu kampon...';
$labels['addcontact'] = 'Aldonu kontakton';
$labels['editcontact'] = 'Redaktu kontakton';
$labels['contacts'] = 'Kontaktoj';
$labels['contactproperties'] = 'Kontakt-informoj';
$labels['personalinfo'] = 'Personaj informoj';
-
$labels['edit'] = 'Redaktu';
$labels['cancel'] = 'Nuligi';
$labels['save'] = 'Konservi';
@@ -335,78 +280,38 @@ $labels['rename'] = 'Alinomu';
$labels['addphoto'] = 'Aldonu';
$labels['replacephoto'] = 'AnstataÅ­u';
$labels['uploadphoto'] = 'AlÅutu bildon';
-
$labels['newcontact'] = 'Kreu novan kontakton';
$labels['deletecontact'] = 'Forigu elektatajn kontaktojn';
$labels['composeto'] = 'Verku mesaÄon al';
$labels['contactsfromto'] = 'Kontaktoj ekde $from Äis $to de $count';
$labels['print'] = 'Presi';
$labels['export'] = 'Elporti';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
-$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'Montru auntaÅ­an';
$labels['firstpage'] = 'Montru unuan';
$labels['nextpage'] = 'Montru sekvan';
$labels['lastpage'] = 'Montru lastan';
-
-$labels['group'] = 'Group';
$labels['groups'] = 'Grupoj';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Persona Adresoj';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
-$labels['import'] = 'Import';
-$labels['importcontacts'] = 'Import contacts';
-$labels['importfromfile'] = 'Import from file:';
-$labels['importtarget'] = 'Add new contacts to address book:';
-$labels['importreplace'] = 'Replace the entire address book';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
-$labels['done'] = 'Done';
-
-// settings
$labels['settingsfor'] = 'Preferoj de';
-$labels['about'] = 'About';
$labels['preferences'] = 'Preferoj';
$labels['userpreferences'] = 'Uzant-preferoj';
$labels['editpreferences'] = 'Redaktu uzant-preferojn';
-
$labels['identities'] = 'Identoj';
$labels['manageidentities'] = 'Administru identojn de ĉi tiu konto';
$labels['newidentity'] = 'Nova idento';
-
$labels['newitem'] = 'Nova ero';
$labels['edititem'] = 'Redaktu eron';
-
$labels['preferhtml'] = 'Montru HTML';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'HTML MesaÄo';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'Agrablaj Datoj';
$labels['setdefault'] = 'Agordu kiel norma';
-$labels['autodetect'] = 'Auto';
$labels['language'] = 'Lingvo';
$labels['timezone'] = 'Tempzono';
$labels['pagesize'] = 'MesaÄoj po paÄo';
$labels['signature'] = 'Subskribo';
$labels['dstactive'] = 'Taglumsavado';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'Uzado de HTML-redaktilo';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'HTML subskribo';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Montru antaÅ­rigardejon';
$labels['skin'] = 'Interfaco-etoso';
$labels['logoutclear'] = 'Malplenigu rubujon je eliro';
@@ -417,70 +322,14 @@ $labels['mailboxview'] = 'Ricevitujo vido';
$labels['mdnrequests'] = 'Sendanto-sciigoj';
$labels['askuser'] = 'demandu';
$labels['autosend'] = 'sendu aÅ­tomate';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['ignore'] = 'malatentu';
$labels['readwhendeleted'] = 'Marku mesaÄon kiel legita kiam forigata';
$labels['flagfordeletion'] = 'Marku mesaÄon kiel forigita anstataÅ­ forigi';
-$labels['skipdeleted'] = 'Do not show deleted messages';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
-$labels['always'] = 'always';
$labels['showinlineimages'] = 'Montru alfiksitajn bildojn sub la mesaÄo';
$labels['autosavedraft'] = 'AÅ­tomate savu malneton';
-$labels['everynminutes'] = 'every $n minute(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'neniam';
-$labels['immediately'] = 'immediately';
$labels['messagesdisplaying'] = 'MesaÄoj vidigante';
$labels['messagescomposition'] = 'MesaÄo-verkado';
-$labels['mimeparamfolding'] = 'Attachment names';
-$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
-$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (other)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
-$labels['advancedoptions'] = 'Advanced options';
-$labels['focusonnewmessage'] = 'Focus browser window on new message';
-$labels['checkallfolders'] = 'Check all folders for new messages';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
-$labels['section'] = 'Section';
-$labels['maintenance'] = 'Maintenance';
-$labels['newmessage'] = 'New Message';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
-$labels['autoaddsignature'] = 'Automatically add signature';
-$labels['newmessageonly'] = 'new message only';
-$labels['replyandforwardonly'] = 'replies and forwards only';
-$labels['insertsignature'] = 'Insert signature';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'Dosierujo';
$labels['folders'] = 'Dosierujoj';
$labels['foldername'] = 'Dosierujo-nomo';
@@ -489,55 +338,7 @@ $labels['messagecount'] = 'MesaÄoj';
$labels['create'] = 'Krei';
$labels['createfolder'] = 'Kreu novan dosierujon';
$labels['managefolders'] = 'Administru dosierujon';
-$labels['specialfolders'] = 'Special Folders';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'Ordigu per';
$labels['sortasc'] = 'Ordigu kreskante';
$labels['sortdesc'] = 'Ordigu malkreskante';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
-$labels['B'] = 'B';
-$labels['KB'] = 'KB';
-$labels['MB'] = 'MB';
-$labels['GB'] = 'GB';
-
-// character sets
-$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/eo/messages.inc b/program/localization/eo/messages.inc
index a7765e442..17e3f1719 100644
--- a/program/localization/eo/messages.inc
+++ b/program/localization/eo/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Eraro okazis!';
$messages['loginfailed'] = 'Malsukcesis ensaluti';
$messages['cookiesdisabled'] = 'Via foliumilo ne akceptas kuketojn';
@@ -25,20 +23,13 @@ $messages['storageerror'] = 'Konekto kun IMAP-servilo malsukcesis';
$messages['servererror'] = 'Servil-eraro!';
$messages['servererrormsg'] = 'Servil-eraro: $msg';
$messages['dberror'] = 'Datumbaz-eraro!';
-$messages['requesttimedout'] = 'Request timed out';
$messages['errorreadonly'] = 'Ne povis fari agon. Dosierujo estas nurlega';
$messages['errornoperm'] = 'Ne povis fari agon. Ne havas permeson.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'Nevalida peto';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'Neniu mesaÄo en ĉi tiu dosierujo';
$messages['loggedout'] = 'Vi sukcese finis la seancon. Äœis!';
$messages['mailboxempty'] = 'Dosierujo estas malplena';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'Åœarganta...';
-$messages['uploading'] = 'Uploading file...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'Åœarganta datumojn...';
$messages['checkingmail'] = 'Kontrolanta, ĉu novaj mesaÄoj...';
$messages['sendingmessage'] = 'Sedanta mesaÄon...';
@@ -48,129 +39,43 @@ $messages['messagesaved'] = 'MesaÄo savita en Malnetujo';
$messages['successfullysaved'] = 'Sukcese savis';
$messages['addedsuccessfully'] = 'Sukcese aldonis kontakton al adresaro';
$messages['contactexists'] = 'Kontakto kun ĉi tiu adreso jam ekzistas';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'Por protekti vian privatecon, foraj bildoj estas blokitaj en ĉi tiu mesaÄo.';
$messages['encryptedmessage'] = 'Ĉi tiu mesaÄo estas ĉifrata kaj ne estas montrebla. Pardonu!';
$messages['nocontactsfound'] = 'Trovis neniun kontakton';
$messages['contactnotfound'] = 'La petita kontakto ne trovis';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'Ne sukcesis sendi mesaÄon';
-$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
-$messages['errorsavingsent'] = 'An error occured while saving sent message.';
-$messages['errorsaving'] = 'Okazis eraro dum savo de mesaÄo';
$messages['errormoving'] = 'Ne povis transloki mesaÄon';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'Ne povis forigi mesaÄon';
-$messages['errormarking'] = 'Could not mark the message(s).';
$messages['deletecontactconfirm'] = 'Ĉu vi vere volas forigi la elektata(j)n kontakto(j)n?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'Ĉu vi vere volas forigi la elektata(j)n mesaÄo(j)n?';
$messages['deletefolderconfirm'] = 'Ĉu vi vere volas forigi la elektatan dosierujon?';
$messages['purgefolderconfirm'] = 'Ĉu vi vere volas forigi ĉiun mesaÄon el ĉi tiu dosierujo?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
-$messages['folderdeleting'] = 'Deleting folder...';
-$messages['foldermoving'] = 'Moving folder...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'La formularo ne estis kompletigita';
$messages['noemailwarning'] = 'Bonvolu enmeti validan retpoÅt-adreson';
$messages['nonamewarning'] = 'Bonvulu enmeti nomon';
$messages['nopagesizewarning'] = 'Bonvolu enmeti paÄ-grando';
-$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
$messages['norecipientwarning'] = 'Bonvolu enmeti minumume unu ricevonto';
$messages['nosubjectwarning'] = 'La temkampo estas malplena. Ĉu vi volas skribi temon nun?';
$messages['nobodywarning'] = 'Ĉu sendi ĉi tiun mesaÄon sen teksto?';
$messages['notsentwarning'] = 'MesaÄo ne estas sendita. Ĉu vi volas forigi vian mesaÄon?';
$messages['noldapserver'] = 'Bonvolu elekti ldap-servilon por serĉado';
$messages['nosearchname'] = 'Bonvolu enmeti kontakt-nomon aÅ­ retpoÅt-adreson.';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = 'trovis $nr mesaÄojn';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'Serĉo donis nenion';
$messages['searching'] = 'Serĉanta...';
$messages['checking'] = 'Kontrolanta...';
$messages['nospellerrors'] = 'Neniujn literumada eraro trovita';
$messages['folderdeleted'] = 'Forigis dosierujon sukcese';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'Sukcese forigis';
$messages['converting'] = 'Foriganta formatan de mesaÄo...';
$messages['messageopenerror'] = 'Ne povis Åargi mesaÄon de servilo';
$messages['fileuploaderror'] = 'Malsukcesis alÅuti dosieron';
$messages['filesizeerror'] = 'La alÅutita dosiero superas la maksimuman grandon de $size';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Ĉi tiu adres-fonto estas nurlegebla';
$messages['errorsavingcontact'] = 'Ne povis savi la kontakt-adreson';
$messages['movingmessage'] = 'Translokanta mesaÄon...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'Sukcese sendis konfirmon';
$messages['errorsendingreceipt'] = 'Ne povis sendi konfirmon';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'Vi ne povas forigi ĉi tiun identon, ĉar Äi estas la lasta';
$messages['forbiddencharacter'] = 'Dosierujo-nomo enhavas malpermesitan karaktron';
-$messages['selectimportfile'] = 'Please select a file to upload.';
-$messages['addresswriterror'] = 'The selected address book is not writeable.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
-$messages['importwait'] = 'Importing, please wait...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operation not permitted!';
-$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/es_419/labels.inc b/program/localization/es_419/labels.inc
new file mode 100644
index 000000000..437295bf1
--- /dev/null
+++ b/program/localization/es_419/labels.inc
@@ -0,0 +1,423 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/<lang>/labels.inc |
+ | |
+ | Localization file of the Roundcube Webmail client |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
+*/
+$labels['welcome'] = 'Bienvenido a $product';
+$labels['username'] = 'Usuario';
+$labels['password'] = 'Contraseña';
+$labels['server'] = 'Servidor';
+$labels['login'] = 'Login';
+$labels['logout'] = 'Salir';
+$labels['mail'] = 'Correo';
+$labels['settings'] = 'Configuración';
+$labels['addressbook'] = 'Libreta de Direcciones';
+$labels['inbox'] = 'Bandeja de Entrada';
+$labels['drafts'] = 'Borradores';
+$labels['sent'] = 'Enviados';
+$labels['trash'] = 'Papelera';
+$labels['show_real_foldernames'] = 'Mostrar el nombre real para carpetas especiales';
+$labels['subject'] = 'Tema';
+$labels['from'] = 'De';
+$labels['sender'] = 'Remitente';
+$labels['to'] = 'Para';
+$labels['cc'] = 'Cc';
+$labels['bcc'] = 'Bcc';
+$labels['replyto'] = 'Responder-a';
+$labels['date'] = 'Fecha';
+$labels['size'] = 'Tamaño';
+$labels['priority'] = 'Prioridad';
+$labels['organization'] = 'Organización';
+$labels['readstatus'] = 'Leer estado';
+$labels['listoptions'] = 'Listar opciones';
+$labels['mailboxlist'] = 'Carpetas';
+$labels['messagesfromto'] = 'Mensajes $from a $to de $count';
+$labels['threadsfromto'] = 'Hilo $from hasta $to de $count';
+$labels['messagenrof'] = 'Mensaje $nr de $count';
+$labels['fromtoshort'] = '$from - $to de $count';
+$labels['copy'] = 'Copiar';
+$labels['move'] = 'Mover';
+$labels['moveto'] = 'Mover a...';
+$labels['download'] = 'Descargar';
+$labels['open'] = 'Abrir';
+$labels['showattachment'] = 'Mostrar';
+$labels['showanyway'] = 'Mostrar de todos modos';
+$labels['filename'] = 'Nombre del archivo';
+$labels['filesize'] = 'Tamaño del archivo';
+$labels['addtoaddressbook'] = 'Agregar a la libreta de direcciones';
+$labels['sun'] = 'Dom';
+$labels['mon'] = 'Lun';
+$labels['tue'] = 'Mar';
+$labels['wed'] = 'Mié';
+$labels['thu'] = 'Jue';
+$labels['fri'] = 'Vie';
+$labels['sat'] = 'Sáb';
+$labels['sunday'] = 'Domingo';
+$labels['monday'] = 'Lunes';
+$labels['tuesday'] = 'Martes';
+$labels['wednesday'] = 'Miércoles';
+$labels['thursday'] = 'Jueves';
+$labels['friday'] = 'Viernes';
+$labels['saturday'] = 'Sábado';
+$labels['jan'] = 'Ene';
+$labels['feb'] = 'Feb';
+$labels['mar'] = 'Mar';
+$labels['apr'] = 'Abr';
+$labels['may'] = 'May';
+$labels['jun'] = 'Jun';
+$labels['jul'] = 'Jul';
+$labels['aug'] = 'Ago';
+$labels['sep'] = 'Sep';
+$labels['oct'] = 'Oct';
+$labels['nov'] = 'Nov';
+$labels['dec'] = 'Dec';
+$labels['longjan'] = 'Enero';
+$labels['longfeb'] = 'Febrero';
+$labels['longmar'] = 'Marzo';
+$labels['longapr'] = 'Abril';
+$labels['longmay'] = 'Mayo';
+$labels['longjun'] = 'Junio';
+$labels['longjul'] = 'Julio';
+$labels['longaug'] = 'Agosto';
+$labels['longsep'] = 'Septiembre';
+$labels['longoct'] = 'Octubre';
+$labels['longnov'] = 'Noviembre';
+$labels['longdec'] = 'Diciembre';
+$labels['today'] = 'Hoy';
+$labels['refresh'] = 'Actualizar';
+$labels['checkmail'] = 'Revisar si hay nuevos mensajes';
+$labels['compose'] = 'Escribir';
+$labels['writenewmessage'] = 'Crear mensaje nuevo';
+$labels['reply'] = 'Responder';
+$labels['replytomessage'] = 'Responder a remitente';
+$labels['replytoallmessage'] = 'Responder a la lista o al remittente y todos los destinatarios';
+$labels['replyall'] = 'Responder a todos';
+$labels['replylist'] = 'Responder a la lista';
+$labels['forward'] = 'Re-enviar';
+$labels['forwardinline'] = 'Reenviar en linea';
+$labels['forwardattachment'] = 'Re-enviar como archivo adjunto';
+$labels['forwardmessage'] = 'Re-enviar el mensaje';
+$labels['deletemessage'] = 'Eliminar el mensaje';
+$labels['movemessagetotrash'] = 'Mover a la papelera';
+$labels['printmessage'] = 'Imprimir este mensaje';
+$labels['previousmessage'] = 'Mostrar mensaje anterior';
+$labels['firstmessage'] = 'Mostrar primer mensaje';
+$labels['nextmessage'] = 'Mostrar el siguiente mensaje ';
+$labels['lastmessage'] = 'Mostrar el último mensaje';
+$labels['backtolist'] = 'Volver a la lista de mensajes';
+$labels['viewsource'] = 'Mostrar fuente';
+$labels['mark'] = 'Marcar';
+$labels['markmessages'] = 'Macar mensajes';
+$labels['markread'] = 'Como leido';
+$labels['markunread'] = 'Como no leido';
+$labels['markflagged'] = 'Como marcado';
+$labels['markunflagged'] = 'Como no marcado';
+$labels['moreactions'] = 'Más acciones...';
+$labels['more'] = 'Más';
+$labels['back'] = 'Atrás';
+$labels['options'] = 'Opciones';
+$labels['select'] = 'Seleccionar';
+$labels['all'] = 'Todos';
+$labels['none'] = 'Ninguno';
+$labels['currpage'] = 'Página actual';
+$labels['unread'] = 'No leido';
+$labels['flagged'] = 'Marcado';
+$labels['unanswered'] = 'No respondido';
+$labels['withattachment'] = 'Con archivo adjunto';
+$labels['deleted'] = 'Eliminado';
+$labels['undeleted'] = 'No eliminado';
+$labels['invert'] = 'Invertir';
+$labels['filter'] = 'Filtrar';
+$labels['list'] = 'Enumerar';
+$labels['threads'] = 'Hilos';
+$labels['expand-all'] = 'Expandir todos';
+$labels['expand-unread'] = 'Espandir no leidos';
+$labels['collapse-all'] = 'Colapsar todos';
+$labels['threaded'] = 'En hilo';
+$labels['autoexpand_threads'] = 'Expandir hilos';
+$labels['do_expand'] = 'todos los hilos';
+$labels['expand_only_unread'] = 'solo con mensajes no leidos';
+$labels['fromto'] = 'De/Para';
+$labels['flag'] = 'Marcar';
+$labels['attachment'] = 'Archivo adjunto';
+$labels['nonesort'] = 'Ninguno';
+$labels['sentdate'] = 'Fecha de envío';
+$labels['arrival'] = 'Fecha de recepción';
+$labels['asc'] = 'ascendiente';
+$labels['desc'] = 'descendiente';
+$labels['listcolumns'] = 'Enumerar columnas';
+$labels['listsorting'] = 'Ordenar columnas';
+$labels['listorder'] = 'Ordenado por';
+$labels['folderactions'] = 'Acciones de carpeta';
+$labels['compact'] = 'Comprimir';
+$labels['empty'] = 'Vaciar';
+$labels['importmessages'] = 'Importar mensajes';
+$labels['quota'] = 'Uso de disco';
+$labels['unknown'] = 'desconocido';
+$labels['unlimited'] = 'ilimitado';
+$labels['quicksearch'] = 'Búsqueda rápida';
+$labels['searchmod'] = 'Modificadores de búsqueda';
+$labels['msgtext'] = 'Mensaje completo';
+$labels['body'] = 'Cuerpo';
+$labels['type'] = 'Tipo';
+$labels['namex'] = 'Nombre';
+$labels['openinextwin'] = 'Abrir en una ventana nueva';
+$labels['emlsave'] = 'Descargar (.eml)';
+$labels['changeformattext'] = 'Mostrar en texto plano';
+$labels['changeformathtml'] = 'Mostrar en formato HTML';
+$labels['editasnew'] = 'Editar como nuevo';
+$labels['send'] = 'Enviar';
+$labels['sendmessage'] = 'Enviar mensaje';
+$labels['savemessage'] = 'Guardar como borrador';
+$labels['addattachment'] = 'Adjuntar archivo';
+$labels['editortype'] = 'Tipo de editor';
+$labels['mailreplyintro'] = 'El $date, $sender escribió:';
+$labels['originalmessage'] = 'Mensaje Original';
+$labels['editidents'] = 'Editar identidades';
+$labels['resumeediting'] = 'Resumir edición';
+$labels['revertto'] = 'Revertir a';
+$labels['restore'] = 'Restaurar';
+$labels['restoremessage'] = '¿Restaurar mensaje?';
+$labels['responses'] = 'Respuestas';
+$labels['insertresponse'] = 'Insertar una respuesta';
+$labels['manageresponses'] = 'Administrar respuestas';
+$labels['savenewresponse'] = 'Guardar nueva respuesta';
+$labels['editresponses'] = 'Editar respuestas';
+$labels['editresponse'] = 'Editar respuesta';
+$labels['responsename'] = 'Nombre';
+$labels['attach'] = 'Adjuntar';
+$labels['attachments'] = 'Archivos adjuntos';
+$labels['uploadprogress'] = '$percent ($current de $total)';
+$labels['close'] = 'Cerrar';
+$labels['messageoptions'] = 'Opciones de mensaje';
+$labels['low'] = 'Bajo';
+$labels['lowest'] = 'Más bajo';
+$labels['normal'] = 'Normal';
+$labels['high'] = 'Alto';
+$labels['highest'] = 'Más alto';
+$labels['nosubject'] = '(sin título)';
+$labels['showimages'] = 'Mostrar imágenes';
+$labels['alwaysshow'] = 'Mostrar siempre las imagenes de $sender';
+$labels['isdraft'] = 'Este mensaje es un borrador.';
+$labels['andnmore'] = '$nr more...';
+$labels['htmltoggle'] = 'HTML';
+$labels['plaintoggle'] = 'Texto plano';
+$labels['savesentmessagein'] = 'Guardar mensaje enviado en ';
+$labels['dontsave'] = 'No guardar';
+$labels['maxuploadsize'] = 'El tamaño máximo permitido por archivo es $size';
+$labels['addcc'] = 'Y Cc';
+$labels['addbcc'] = 'Y Bcc';
+$labels['addreplyto'] = 'Agregar Responder-a';
+$labels['mdnrequest'] = 'El remitente de este mensaje a pedido ser notificado cuando leas el mensaje. ¿Quieres notificar al remitente?';
+$labels['name'] = 'Nombre de pantalla';
+$labels['firstname'] = 'Primer nombre';
+$labels['surname'] = 'Apellido';
+$labels['middlename'] = 'Segundo Nombre';
+$labels['nameprefix'] = 'Prefijo';
+$labels['namesuffix'] = 'Sufijo';
+$labels['nickname'] = 'Sobrenombre';
+$labels['jobtitle'] = 'Puesto';
+$labels['department'] = 'Departamento';
+$labels['maidenname'] = 'Apellido de soltera';
+$labels['email'] = 'Email';
+$labels['phone'] = 'Teléfono';
+$labels['address'] = 'Dirección';
+$labels['street'] = 'Calle';
+$labels['locality'] = 'Ciudad';
+$labels['zipcode'] = 'Código Postal';
+$labels['region'] = 'Estado/Provincia';
+$labels['country'] = 'Pais';
+$labels['birthday'] = 'Cumpleaños';
+$labels['anniversary'] = 'Aniversario';
+$labels['website'] = 'Sitio Web';
+$labels['instantmessenger'] = 'IM';
+$labels['notes'] = 'Notas';
+$labels['male'] = 'masculino';
+$labels['female'] = 'femenino';
+$labels['manager'] = 'Administrador';
+$labels['assistant'] = 'Asistente';
+$labels['spouse'] = 'Conjuge';
+$labels['allfields'] = 'Todos los campos';
+$labels['search'] = 'Buscar';
+$labels['advsearch'] = 'Busqueda Avanzada';
+$labels['advanced'] = 'Avanzado';
+$labels['other'] = 'Otro';
+$labels['typehome'] = 'Casa';
+$labels['typework'] = 'Trabajo';
+$labels['typeother'] = 'Otro';
+$labels['typemobile'] = 'Móvil';
+$labels['typemain'] = 'Principal';
+$labels['typehomefax'] = 'Fax Casa';
+$labels['typeworkfax'] = 'Fax Oficina';
+$labels['typecar'] = 'Auto';
+$labels['typevideo'] = 'Video';
+$labels['typeassistant'] = 'Assistente';
+$labels['typehomepage'] = 'Página Web';
+$labels['typeblog'] = 'Blog';
+$labels['typeprofile'] = 'Perfil';
+$labels['addfield'] = 'Agregar campo...';
+$labels['addcontact'] = 'Agregar nuevo contacto';
+$labels['editcontact'] = 'Editar contacto';
+$labels['contacts'] = 'Contactos';
+$labels['contactproperties'] = 'Propiedades del contacto';
+$labels['personalinfo'] = 'Información Personal';
+$labels['edit'] = 'Editar';
+$labels['cancel'] = 'Cancelar';
+$labels['save'] = 'Guardar';
+$labels['delete'] = 'Eliminar';
+$labels['rename'] = 'Renombrar';
+$labels['addphoto'] = 'Agregar';
+$labels['replacephoto'] = 'Remplazar';
+$labels['uploadphoto'] = 'Subir foto';
+$labels['newcontact'] = 'Crear nueva tarjeta de contacto';
+$labels['deletecontact'] = 'Eliminar contactos seleccionados';
+$labels['composeto'] = 'Escribir mail a ';
+$labels['contactsfromto'] = 'Contactos $from hasta $to de $count';
+$labels['print'] = 'Imprimir';
+$labels['export'] = 'Exportar';
+$labels['exportall'] = 'Exportar todo';
+$labels['exportsel'] = 'Exportar los seleccionados';
+$labels['exportvcards'] = 'Exportar contactos en formato vCard';
+$labels['newcontactgroup'] = 'Crear grupo de contactos nuevo';
+$labels['grouprename'] = 'Renombrar grupo';
+$labels['groupdelete'] = 'Eliminar grupo';
+$labels['groupremoveselected'] = 'Eliminar contactos seleccionados del grupo';
+$labels['previouspage'] = 'Mostrar página anterior';
+$labels['firstpage'] = 'Mostrar primera página';
+$labels['nextpage'] = 'Mostrar página siguiente';
+$labels['lastpage'] = 'Mostrar última página';
+$labels['group'] = 'Grupo';
+$labels['groups'] = 'Grupos';
+$labels['listgroup'] = 'Mostrar miembros del grupo';
+$labels['personaladrbook'] = 'Direcciones personales';
+$labels['searchsave'] = 'Guardar búsqueda';
+$labels['searchdelete'] = 'Eliminar busqueda';
+$labels['import'] = 'Importar';
+$labels['importcontacts'] = 'Importar contactos';
+$labels['importfromfile'] = 'Importar desde archivo';
+$labels['importtarget'] = 'Agregar contactos a';
+$labels['importreplace'] = 'Remplazar la libreta de direcciones completa';
+$labels['importgroups'] = 'Importar tareas del grupo';
+$labels['importgroupsall'] = 'Todo (crear grupos si es necesario)';
+$labels['done'] = 'Listo';
+$labels['about'] = 'Sobre';
+$labels['preferences'] = 'Preferencias';
+$labels['userpreferences'] = 'Preferencias de usuario ';
+$labels['editpreferences'] = 'Editar preferencias de usuario ';
+$labels['identities'] = 'identidades';
+$labels['manageidentities'] = 'Administrar identidades para esta cuenta ';
+$labels['newidentity'] = 'Identidad nueva ';
+$labels['newitem'] = 'Elemento nuevo ';
+$labels['edititem'] = 'Editar elemento ';
+$labels['preferhtml'] = 'Mostrar HTML ';
+$labels['htmlmessage'] = 'Mensaje HTML ';
+$labels['digitalsig'] = 'Firma digital';
+$labels['dateformat'] = 'Formato de fecha';
+$labels['timeformat'] = 'Formato de hora';
+$labels['setdefault'] = 'Predeterminar';
+$labels['autodetect'] = 'Automático';
+$labels['language'] = 'Idioma';
+$labels['timezone'] = 'Zona horaria';
+$labels['pagesize'] = 'Columnas por página ';
+$labels['signature'] = 'Firma';
+$labels['showinextwin'] = 'Abrir mensaje en una ventana nueva ';
+$labels['composeextwin'] = 'Escribir en una ventana nueva ';
+$labels['htmleditor'] = 'Escribir mensajes HTML';
+$labels['htmlsignature'] = 'Firma HTML ';
+$labels['showemail'] = 'Mostrar dirección de email junto al nombre de pantalla';
+$labels['previewpane'] = 'Mostrar vista previa ';
+$labels['logoutclear'] = 'Vaciar la papelera al salir';
+$labels['logoutcompact'] = 'Comprimir la bandeja de entrada al salir';
+$labels['uisettings'] = 'Interfaz de usuario';
+$labels['ignore'] = 'ignorar';
+$labels['readwhendeleted'] = 'Marcar mensaje como leído al elimiarlo ';
+$labels['skipdeleted'] = 'No mostrar mensajes eliminados ';
+$labels['always'] = 'siempre ';
+$labels['showinlineimages'] = 'Mostrar imágenes adjuntas debajo del mensaje';
+$labels['autosavedraft'] = 'Guardar borrador automáticamente';
+$labels['everynminutes'] = 'cada $n minuto(s)';
+$labels['never'] = 'nunca';
+$labels['immediately'] = 'inmediatamente';
+$labels['messagesdisplaying'] = 'Mostrando mensajes';
+$labels['messagescomposition'] = 'Escribiendo mensajes';
+$labels['advancedoptions'] = 'Opciones avanzadas';
+$labels['mainoptions'] = 'Opciones Principales';
+$labels['browseroptions'] = 'Opciones del Navagador';
+$labels['section'] = 'Sección';
+$labels['maintenance'] = 'Mantenimiento';
+$labels['newmessage'] = 'Mensaje Nuevo';
+$labels['signatureoptions'] = 'Opciones de Firma';
+$labels['whenreplying'] = 'Al responder';
+$labels['replyempty'] = 'No citar el mensaje original ';
+$labels['replytopposting'] = 'comenzar mensaje nuevo arriba de la cita';
+$labels['replybottomposting'] = 'comenzar mensaje nuevo debajo de la cita';
+$labels['replyremovesignature'] = 'Al responder borrar la firma original del mensaje';
+$labels['autoaddsignature'] = 'Agregar firma automáticamente';
+$labels['newmessageonly'] = 'solo mensajes nuevos';
+$labels['insertsignature'] = 'insertar firma';
+$labels['spellcheckignoresyms'] = 'Ignorar palabras con símbolos';
+$labels['spellcheckignorenums'] = 'Ignorar palabras con números';
+$labels['addtodict'] = 'Agregar al diccionario';
+$labels['standardwindows'] = 'Tratar popups como ventanas comunes';
+$labels['asattachment'] = 'como adjunto';
+$labels['replyalldefault'] = 'responder a todos';
+$labels['folder'] = 'Carpeta';
+$labels['folders'] = 'Carpetas';
+$labels['foldername'] = 'Nombre de carpeta';
+$labels['messagecount'] = 'Mensajes';
+$labels['create'] = 'Crear';
+$labels['createfolder'] = 'Crear carpeta nueva';
+$labels['managefolders'] = 'Administrar carpetas';
+$labels['specialfolders'] = 'Capetas Especiales';
+$labels['properties'] = 'Propiedades';
+$labels['location'] = 'Ubicación';
+$labels['info'] = 'Información';
+$labels['getfoldersize'] = 'Click para ver el tamaño de la carpeta';
+$labels['changesubscription'] = 'Click para cambiar la subscripción';
+$labels['foldertype'] = 'Tipo de Carpeta';
+$labels['personalfolder'] = 'Carpeta Privada';
+$labels['otherfolder'] = 'Carpeta de otro usuario';
+$labels['sharedfolder'] = 'Carpeta pública';
+$labels['sortby'] = 'Ordenar por';
+$labels['sortasc'] = 'Ordenar ascendientemente';
+$labels['sortdesc'] = 'Ordenar descendientemente';
+$labels['undo'] = 'Deshacer';
+$labels['installedplugins'] = 'Extensiones instaladas';
+$labels['plugin'] = 'Extensión';
+$labels['version'] = 'Versión';
+$labels['source'] = 'Fuente';
+$labels['license'] = 'Licencia';
+$labels['B'] = 'B';
+$labels['KB'] = 'KB';
+$labels['MB'] = 'MB';
+$labels['GB'] = 'GB';
+$labels['unicode'] = 'Unicode';
+$labels['english'] = 'Inglés';
+$labels['westerneuropean'] = 'Europeo Occidental';
+$labels['easterneuropean'] = 'Europeo Oriental';
+$labels['southeasterneuropean'] = 'Europeo Sur-Oriental';
+$labels['baltic'] = 'Baltico';
+$labels['arabic'] = 'Arabigo';
+$labels['greek'] = 'Griego';
+$labels['hebrew'] = 'Hebreo';
+$labels['turkish'] = 'Turko';
+$labels['nordic'] = 'Nordico';
+$labels['thai'] = 'Thai';
+$labels['celtic'] = 'Celta';
+$labels['vietnamese'] = 'Vietnamese';
+$labels['japanese'] = 'Japonés';
+$labels['korean'] = 'Koreano';
+$labels['chinese'] = 'Chino';
+?>
diff --git a/program/localization/es_419/messages.inc b/program/localization/es_419/messages.inc
new file mode 100644
index 000000000..f9f243422
--- /dev/null
+++ b/program/localization/es_419/messages.inc
@@ -0,0 +1,26 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/<lang>/messages.inc |
+ | |
+ | Localization file of the Roundcube Webmail client |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
+*/
+$messages['errortitle'] = '¡Ha ocurrido un error!';
+$messages['loginfailed'] = 'Falló el Login';
+$messages['cookiesdisabled'] = 'Su navegador no acepta cookies.';
+$messages['sessionerror'] = 'Su sesión es inválida o ha expirado.';
+$messages['storageerror'] = 'Ha fallado la conexión al servidor de almacenamiento.';
+$messages['servererror'] = '¡Error del servidor!';
+$messages['servererrormsg'] = 'Error del servidor: $msg';
+$messages['dberror'] = 'Error en la base de datos';
+?>
diff --git a/program/localization/es_AR/labels.inc b/program/localization/es_AR/labels.inc
index 5bc53f7f0..eb4630ed4 100644
--- a/program/localization/es_AR/labels.inc
+++ b/program/localization/es_AR/labels.inc
@@ -15,31 +15,20 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Bienvenido a $product';
$labels['username'] = 'Nombre de usuario';
$labels['password'] = 'Contraseña';
$labels['server'] = 'Servidor';
$labels['login'] = 'Entrar';
-
-// taskbar
$labels['logout'] = 'Cerrar sesión';
$labels['mail'] = 'Correo';
$labels['settings'] = 'Configuración';
$labels['addressbook'] = 'Contactos';
-
-// mailbox names
$labels['inbox'] = 'Entrada';
$labels['drafts'] = 'Borradores';
$labels['sent'] = 'Enviados';
$labels['trash'] = 'Papelera';
$labels['junk'] = 'Basura';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Asunto';
$labels['from'] = 'Remitente';
$labels['sender'] = 'Remitente';
@@ -47,34 +36,25 @@ $labels['to'] = 'Destinatario';
$labels['cc'] = 'Copia';
$labels['bcc'] = 'Cco';
$labels['replyto'] = 'Responder a';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Fecha';
$labels['size'] = 'Tamaño';
$labels['priority'] = 'Prioridad';
$labels['organization'] = 'Organización';
-$labels['readstatus'] = 'Read status';
$labels['listoptions'] = 'Listar opciones...';
-
$labels['mailboxlist'] = 'Carpetas';
$labels['messagesfromto'] = 'Mensajes $from a $to de $count';
$labels['threadsfromto'] = '$from a $to de $count conversaciones';
$labels['messagenrof'] = 'Mensaje $nr de $count';
$labels['fromtoshort'] = '$from – $to de $count';
-
$labels['copy'] = 'Copiar';
$labels['move'] = 'Mover';
$labels['moveto'] = 'Mover a...';
$labels['download'] = 'Descargar';
-$labels['open'] = 'Open';
$labels['showattachment'] = 'Mostrar';
$labels['showanyway'] = 'Mostrar esto siempre';
-
$labels['filename'] = 'Nombre del archivo';
$labels['filesize'] = 'Tamaño del archivo';
-
$labels['addtoaddressbook'] = 'Añadir a contactos';
-
-// weekdays short
$labels['sun'] = 'Dom';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Mar';
@@ -82,8 +62,6 @@ $labels['wed'] = 'Mié';
$labels['thu'] = 'Jue';
$labels['fri'] = 'Vie';
$labels['sat'] = 'Sáb';
-
-// weekdays long
$labels['sunday'] = 'Domingo';
$labels['monday'] = 'Lunes';
$labels['tuesday'] = 'Martes';
@@ -91,8 +69,6 @@ $labels['wednesday'] = 'Miércoles';
$labels['thursday'] = 'Jueves';
$labels['friday'] = 'Viernes';
$labels['saturday'] = 'Sábado';
-
-// months short
$labels['jan'] = 'Ene';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +81,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Oct';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dic';
-
-// months long
$labels['longjan'] = 'Enero';
$labels['longfeb'] = 'Febrero';
$labels['longmar'] = 'Marzo';
@@ -119,10 +93,7 @@ $labels['longsep'] = 'Septiembre';
$labels['longoct'] = 'Octubre';
$labels['longnov'] = 'Noviembre';
$labels['longdec'] = 'Diciembre';
-
$labels['today'] = 'Hoy';
-
-// toolbar buttons
$labels['refresh'] = 'Actualizar';
$labels['checkmail'] = 'Revisar si hay nuevos mensajes';
$labels['compose'] = 'Escribir un mensaje';
@@ -155,7 +126,6 @@ $labels['moreactions'] = 'Mas acciones...';
$labels['more'] = 'Más';
$labels['back'] = 'Atrás';
$labels['options'] = 'Opciones';
-
$labels['select'] = 'Elija';
$labels['all'] = 'Todos';
$labels['none'] = 'Ninguno';
@@ -163,7 +133,6 @@ $labels['currpage'] = 'Página actual';
$labels['unread'] = 'Sin leer';
$labels['flagged'] = 'Marcado';
$labels['unanswered'] = 'Sin respuesta';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'Eliminado';
$labels['undeleted'] = 'No eliminado';
$labels['invert'] = 'Invertir';
@@ -174,7 +143,6 @@ $labels['expand-all'] = 'Expandir Todos';
$labels['expand-unread'] = 'Expandir No Leidos';
$labels['collapse-all'] = 'Colapsar Todos';
$labels['threaded'] = 'Como conversaciones';
-
$labels['autoexpand_threads'] = 'Expandir mensajes en conversación';
$labels['do_expand'] = 'todas las conversaciones';
$labels['expand_only_unread'] = 'solo con mensajes no leídos';
@@ -189,30 +157,18 @@ $labels['desc'] = 'Descendente';
$labels['listcolumns'] = 'Listar columnas';
$labels['listsorting'] = 'Ordenar por';
$labels['listorder'] = 'Ordenado por';
-$labels['listmode'] = 'List view mode';
-
$labels['folderactions'] = 'Acciones de carpeta...';
$labels['compact'] = 'Compactar';
$labels['empty'] = 'Vaciar';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Uso de disco';
$labels['unknown'] = 'desconocido';
$labels['unlimited'] = 'sin límite';
-
$labels['quicksearch'] = 'Búsqueda rápida';
$labels['resetsearch'] = 'Reajustar la búsqueda';
$labels['searchmod'] = 'Opciones de búsqueda';
$labels['msgtext'] = 'Mensaje completo';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'Abrir en ventana nueva';
$labels['emlsave'] = 'Guardar (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'Editar como nuevo';
$labels['send'] = 'Enviar';
$labels['sendmessage'] = 'Enviar ahora el mensaje';
@@ -224,52 +180,40 @@ $labels['returnreceipt'] = 'Acuse de recibo';
$labels['dsn'] = 'Notificación de estado del envío';
$labels['mailreplyintro'] = 'El $date, $sender escribió:';
$labels['originalmessage'] = 'Mensaje original';
-
$labels['editidents'] = 'Editar identidades';
$labels['spellcheck'] = 'Gramática';
$labels['checkspelling'] = 'Revisar ortografía';
$labels['resumeediting'] = 'Continuar edición';
$labels['revertto'] = 'Revertir a';
-
$labels['attach'] = 'Adjuntar';
$labels['attachments'] = 'Adjuntos';
$labels['upload'] = 'Agregar';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Cerrar';
$labels['messageoptions'] = 'Opciones de mensaje...';
-
$labels['low'] = 'Bajo';
$labels['lowest'] = 'Bajísimo';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alto';
$labels['highest'] = 'Altísimo';
-
$labels['nosubject'] = '(sin asunto)';
$labels['showimages'] = 'Mostrar imágenes';
$labels['alwaysshow'] = 'Siempre mostrar imágenes de $sender';
$labels['isdraft'] = 'Este es un borrador.';
$labels['andnmore'] = '$nr más...';
$labels['togglemoreheaders'] = 'Mostrarme más encabezados de mensaje';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Texto';
$labels['savesentmessagein'] = 'Guardar mensaje enviado en';
$labels['dontsave'] = 'no guardar';
$labels['maxuploadsize'] = 'El tamaño maximo permitido por archivo es $size';
-
$labels['addcc'] = 'Añadir Cc';
$labels['addbcc'] = 'Añadir Cco';
$labels['addreplyto'] = 'Añadir Respuesta a';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'El emisor de este mensaje desea ser notificado cuando usted lo lea. ¿Quiere enviar esta notificación?';
$labels['receiptread'] = 'Notificación de lectura';
$labels['yourmessage'] = 'Esta es una notificación de lectura de su mensaje';
$labels['receiptnote'] = 'Nota: Esta notificación sólo significa que su mensaje fue mostrado en la computadora del receptor. No hay garantía de que el receptor haya leído o entendido el contenido del mensaje.';
-
-// address boook
$labels['name'] = 'Nombre completo';
$labels['firstname'] = 'Nombre';
$labels['surname'] = 'Apellido';
@@ -304,7 +248,6 @@ $labels['search'] = 'Buscar';
$labels['advsearch'] = 'Búsqueda Avanzada';
$labels['advanced'] = 'Avanzado';
$labels['other'] = 'Otro';
-
$labels['typehome'] = 'Particular';
$labels['typework'] = 'Laboral';
$labels['typeother'] = 'Otro';
@@ -319,14 +262,12 @@ $labels['typeassistant'] = 'Asistente';
$labels['typehomepage'] = 'Página Personal';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Perfil';
-
$labels['addfield'] = 'Agregar campo...';
$labels['addcontact'] = 'Añadir nuevo contacto';
$labels['editcontact'] = 'Editar contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Propiedades del contacto';
$labels['personalinfo'] = 'Información personal';
-
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Guardar';
@@ -335,61 +276,45 @@ $labels['rename'] = 'Renombrar';
$labels['addphoto'] = 'Agregar';
$labels['replacephoto'] = 'Reemplazar';
$labels['uploadphoto'] = 'Subir foto';
-
$labels['newcontact'] = 'Añadir nuevo contacto';
$labels['deletecontact'] = 'Eliminar contactos seleccionados';
$labels['composeto'] = 'Enviar mensaje a';
$labels['contactsfromto'] = 'Contactos $from a $to de $count';
$labels['print'] = 'Imprimir';
$labels['export'] = 'Exportar';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'Exportar contactos en format vCard';
$labels['newcontactgroup'] = 'Crear Nuevo Grupo de Contacto';
$labels['grouprename'] = 'Renombrar grupo';
$labels['groupdelete'] = 'Eliminar grupo';
$labels['groupremoveselected'] = 'Remover del grupo los contactos seleccionados';
-
$labels['previouspage'] = 'Mostrar grupo anterior';
$labels['firstpage'] = 'Mostrar primer grupo';
$labels['nextpage'] = 'Mostrar siguiente grupo';
$labels['lastpage'] = 'Mostrar último grupo';
-
$labels['group'] = 'Grupo';
$labels['groups'] = 'Grupos';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Direcciones personales';
-
$labels['searchsave'] = 'Guardar búsqueda';
$labels['searchdelete'] = 'Eliminar búsqueda';
-
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contactos';
$labels['importfromfile'] = 'Importar desde el archivo:';
-$labels['importtarget'] = 'Agregar nuevos contactos a la libreta de direcciones:';
$labels['importreplace'] = 'Reemplazar completamente la lista de contactos';
$labels['importdesc'] = 'Puedes subir contactos desde una libreta de direcciones existente.<br/>Actualmente soportamos la importación de direcciones utilizando el formato <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> o CSV (Valores Separados por Coma).';
$labels['done'] = 'Hecho';
-
-// settings
$labels['settingsfor'] = 'Configuración para';
$labels['about'] = 'Acerca de';
$labels['preferences'] = 'Preferencias';
$labels['userpreferences'] = 'Preferencias de usuario';
$labels['editpreferences'] = 'Editar preferencias de usuario';
-
$labels['identities'] = 'Identidades';
$labels['manageidentities'] = 'Gestionar identidades para esta cuenta';
$labels['newidentity'] = 'Nueva identidad';
-
$labels['newitem'] = 'Nuevo';
$labels['edititem'] = 'Editar';
-
$labels['preferhtml'] = 'Prefiero HTML';
$labels['defaultcharset'] = 'Juego de Caracteres por Defecto';
$labels['htmlmessage'] = 'Mensaje HTML';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
$labels['dateformat'] = 'Formato de fecha';
$labels['timeformat'] = 'Formato de tiempo';
$labels['prettydate'] = 'Fecha detallada';
@@ -406,7 +331,6 @@ $labels['htmleditor'] = 'Componer mensaje en HTML';
$labels['htmlonreply'] = 'al responder un mensaje HTML';
$labels['htmlonreplyandforward'] = 'al reenviar o responder un mensaje HTML';
$labels['htmlsignature'] = 'Firma HTML';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Mostrar vista preliminar';
$labels['skin'] = 'Apariencia de la interfaz';
$labels['logoutclear'] = 'Vaciar papelera al cerrar sesión';
@@ -417,21 +341,17 @@ $labels['mailboxview'] = 'Vista de buzón';
$labels['mdnrequests'] = 'Notificaciones de envío';
$labels['askuser'] = 'preguntar al usuario';
$labels['autosend'] = 'enviar automáticamente';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['ignore'] = 'ignorar';
$labels['readwhendeleted'] = 'Marcar el mensage como leído al borrarlo';
$labels['flagfordeletion'] = 'Marcar el mensage para borrarse en vez de borrarlo';
$labels['skipdeleted'] = 'No mostrar mensajes eliminados';
$labels['deletealways'] = 'Cuando no se pueda mover un mensaje a la papelera, eliminarlo';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
$labels['showremoteimages'] = 'Mostrar imágenes remotas';
$labels['fromknownsenders'] = 'de remitentes conocidos';
$labels['always'] = 'siempre';
$labels['showinlineimages'] = 'Mostrar imágenes adjuntas debajo del mensaje';
$labels['autosavedraft'] = 'Guardar borrador automáticamente';
$labels['everynminutes'] = 'cada $n minuto(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'nunca';
$labels['immediately'] = 'inmediatamente';
$labels['messagesdisplaying'] = 'Vista de mensajes';
@@ -445,15 +365,12 @@ $labels['advancedoptions'] = 'Opciones Avanzadas';
$labels['focusonnewmessage'] = 'Traer al frente la ventana del navegador cuando haya nuevos mensajes';
$labels['checkallfolders'] = 'Verificar todas las carpetas por nuevos mensajes';
$labels['displaynext'] = 'Luedo de eliminar/mover, mostrar el próximo mensaje';
-$labels['defaultfont'] = 'Default font of HTML message';
$labels['mainoptions'] = 'Opciones Principales';
-$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'Selección';
$labels['maintenance'] = 'Mantenimiento';
$labels['newmessage'] = 'Nuevo Mensaje';
$labels['signatureoptions'] = 'Opciones de Firma';
$labels['whenreplying'] = 'Al Responder';
-$labels['replyempty'] = 'do not quote the original message';
$labels['replytopposting'] = 'iniciar el nuevo mensaje sobre el original';
$labels['replybottomposting'] = 'iniciar el nuevo mensaje debajo del original';
$labels['replyremovesignature'] = 'Al responder, eliminar la firma del mensaje original';
@@ -463,24 +380,6 @@ $labels['replyandforwardonly'] = 'respuestas o reenvios solamente';
$labels['insertsignature'] = 'Insertar firma';
$labels['previewpanemarkread'] = 'Marcar mensajes previsualizados como leidos';
$labels['afternseconds'] = 'despues de $n segundos';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'Carpeta';
$labels['folders'] = 'Carpetas';
$labels['foldername'] = 'Nombre de carpeta';
@@ -490,37 +389,13 @@ $labels['create'] = 'Crear';
$labels['createfolder'] = 'Crear nueva carpeta';
$labels['managefolders'] = 'Administrar carpetas';
$labels['specialfolders'] = 'Carpetas Especiales';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Orden ascendente';
$labels['sortdesc'] = 'Orden descendente';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Ingles';
$labels['westerneuropean'] = 'Europa Occidental';
@@ -539,5 +414,4 @@ $labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonés';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chino';
-
?>
diff --git a/program/localization/es_AR/messages.inc b/program/localization/es_AR/messages.inc
index 1a0240222..1c442c189 100644
--- a/program/localization/es_AR/messages.inc
+++ b/program/localization/es_AR/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Ha ocurrido un error!';
$messages['loginfailed'] = 'Contraseña o nombre de usuario incorrecto';
$messages['cookiesdisabled'] = 'Su navegador no acepta cookies';
@@ -28,8 +26,6 @@ $messages['dberror'] = 'Error en base de datos!';
$messages['requesttimedout'] = 'Tiempo de espera agotado';
$messages['errorreadonly'] = 'No se pudo realizar la operación. La carpeta es de sólo lectura.';
$messages['errornoperm'] = 'No se pudo realizar la operación. Permiso denegado.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'Peteción invalida! No se guardó nada.';
$messages['invalidhost'] = 'Nombre de servidor inválido.';
$messages['nomessagesfound'] = 'No se han encontrado mensajes en esta casilla';
@@ -56,8 +52,6 @@ $messages['contactnotfound'] = 'El contacto solicitado no existe';
$messages['contactsearchonly'] = 'Ingresá algún término de búsqueda para encontrar contactos';
$messages['sendingfailed'] = 'Error al enviar mensaje';
$messages['senttooquickly'] = 'Por favor, espere $sec segundo(s) antes de enviar este mensaje';
-$messages['errorsavingsent'] = 'Ocurrió un error al guardar el mensaje enviado';
-$messages['errorsaving'] = 'Ocurrió un error al guardar';
$messages['errormoving'] = 'No se pudo mover el mensaje';
$messages['errorcopying'] = 'No se pudo copiar el mensaje';
$messages['errordeleting'] = 'No se ha podido eliminar el mensaje';
@@ -101,16 +95,11 @@ $messages['converting'] = 'Removiendo el formato del mensaje...';
$messages['messageopenerror'] = 'No puedo descargar el mensaje del servidor';
$messages['fileuploaderror'] = 'Error al subir archivos';
$messages['filesizeerror'] = 'El archivo excede el tamaño maximo ($size)';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Esta dirección es de sólo-lectura';
$messages['errorsavingcontact'] = 'No se pudo guardar la dirección de contacto';
$messages['movingmessage'] = 'Moviendo mensaje...';
$messages['copyingmessage'] = 'Copiando mensaje...';
$messages['copyingcontact'] = 'Copiando contacto(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'Eliminando contacto(s)...';
$messages['markingmessage'] = 'Marcando mensaje(s)...';
$messages['addingmember'] = 'Agregando contacto(s) al grupo...';
@@ -129,8 +118,6 @@ $messages['importwait'] = 'Importando, aguarde por favor...';
$messages['importformaterror'] = 'Importación fallida! El archivo subido no es un archivo de importación de datos válido.';
$messages['importconfirm'] = '<b>Se importaron $inserted contactos correctamente. $skipped ya existentes fueron ignorados</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>Se ignoraron $skipped entradas ya existentes</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'Operación no permitida!';
$messages['nofromaddress'] = 'El contacto seleccionado no tiene dirección de e-mail';
$messages['editorwarning'] = 'Si cambia a texto plano se perderán todas las opciones de formato. ¿Desea continuar?';
@@ -144,7 +131,6 @@ $messages['smtperror'] = 'Error SMTP: $msg';
$messages['emailformaterror'] = 'La dirección $email no es válida';
$messages['toomanyrecipients'] = 'Demasiados destinatarios. Reduzca la cantidad a un máximo de $max.';
$messages['maxgroupmembersreached'] = 'El número de miembros del grupo excede el máximo de $max';
-$messages['internalerror'] = 'Ocurrió un error interno. Por favor, intentá de nuevo.';
$messages['contactdelerror'] = 'No se pudo eliminar el/los contactos(s).';
$messages['contactdeleted'] = 'Contacto(s) eliminado/s exitosamente.';
$messages['contactrestoreerror'] = 'No se pudo recuperar el/los contacto/s eliminado(s).';
@@ -172,5 +158,4 @@ $messages['parentnotwritable'] = 'No se pudo crear/mover la carpeta dentro de la
$messages['messagetoobig'] = 'El mensaje es demasiado grande para ser procesado.';
$messages['attachmentvalidationerror'] = 'Advertencia! Este archivo adjunto es sospechoso porque su tipo no concuerda con el tipo declarado en el mensaje. Si no confias en el remitente, no deberías abrirlo en el navegador porque puede contener código malicioso.<br/><br/><em>Se esperaba: $expected; Se encontró: $detected</em>';
$messages['noscriptwarning'] = 'Advertencia: Este servicio de webmail requiere Javascript! Para usarlo, por favor, habilite Javascript en las preferencia de tu navegador.';
-
?>
diff --git a/program/localization/es_ES/labels.inc b/program/localization/es_ES/labels.inc
index 11d14fa08..11cf6174d 100644
--- a/program/localization/es_ES/labels.inc
+++ b/program/localization/es_ES/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Bienvenido a $product';
$labels['username'] = 'Nombre de usuario';
$labels['password'] = 'Contraseña';
$labels['server'] = 'Servidor';
$labels['login'] = 'Iniciar sesión';
-
-// taskbar
$labels['logout'] = 'Cerrar sesión';
$labels['mail'] = 'Correo';
$labels['settings'] = 'Configuración';
$labels['addressbook'] = 'Contactos';
-
-// mailbox names
$labels['inbox'] = 'Entrada';
$labels['drafts'] = 'Borradores';
$labels['sent'] = 'Enviados';
$labels['trash'] = 'Papelera';
$labels['junk'] = 'SPAM';
$labels['show_real_foldernames'] = 'Mostrar nombres reales para carpetas especiales';
-
-// message listing
$labels['subject'] = 'Asunto';
$labels['from'] = 'Remitente';
$labels['sender'] = 'Remitente';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Prioridad';
$labels['organization'] = 'Organización';
$labels['readstatus'] = 'Leer estado';
$labels['listoptions'] = 'Lista de opciones...';
-
$labels['mailboxlist'] = 'Carpetas';
$labels['messagesfromto'] = 'Mensajes $from a $to de $count';
$labels['threadsfromto'] = 'Hilos $from a $to de $count';
$labels['messagenrof'] = 'Mensaje $nr de $count';
$labels['fromtoshort'] = '$from – $to de $count';
-
$labels['copy'] = 'Copiar';
$labels['move'] = 'Mover';
$labels['moveto'] = 'Mover a…';
@@ -68,13 +56,9 @@ $labels['download'] = 'Descargar';
$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Mostrar';
$labels['showanyway'] = 'Mostrarlo de todos modos';
-
$labels['filename'] = 'Nombre del archivo';
$labels['filesize'] = 'Tamaño del archivo';
-
$labels['addtoaddressbook'] = 'Añadir a contactos';
-
-// weekdays short
$labels['sun'] = 'Dom';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Mar';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Mié';
$labels['thu'] = 'Jue';
$labels['fri'] = 'Vie';
$labels['sat'] = 'Sáb';
-
-// weekdays long
$labels['sunday'] = 'Domingo';
$labels['monday'] = 'Lunes';
$labels['tuesday'] = 'Martes';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Miércoles';
$labels['thursday'] = 'Jueves';
$labels['friday'] = 'Viernes';
$labels['saturday'] = 'Sábado';
-
-// months short
$labels['jan'] = 'Ene';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Oct';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dic';
-
-// months long
$labels['longjan'] = 'Enero';
$labels['longfeb'] = 'Febrero';
$labels['longmar'] = 'Marzo';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Septiembre';
$labels['longoct'] = 'Octubre';
$labels['longnov'] = 'Noviembre';
$labels['longdec'] = 'Diciembre';
-
$labels['today'] = 'Hoy';
-
-// toolbar buttons
$labels['refresh'] = 'Actualizar';
$labels['checkmail'] = 'Revisar si hay mensajes nuevos';
$labels['compose'] = 'Redactar';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Más acciones…';
$labels['more'] = 'Más';
$labels['back'] = 'Volver';
$labels['options'] = 'Opciones';
-
$labels['select'] = 'Elija';
$labels['all'] = 'Todos';
$labels['none'] = 'Ninguno';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Expandir todos';
$labels['expand-unread'] = 'Expandir no leídos';
$labels['collapse-all'] = 'Colapsar todos';
$labels['threaded'] = 'Encadenados';
-
$labels['autoexpand_threads'] = 'Expandir hilos de mensajes';
$labels['do_expand'] = 'todos los hilos';
$labels['expand_only_unread'] = 'solo con mensajes no leídos';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Listar columnas';
$labels['listsorting'] = 'Columna de listado';
$labels['listorder'] = 'Orden de listado';
$labels['listmode'] = 'Modo de vista de lista';
-
$labels['folderactions'] = 'Acciones de bandeja...';
$labels['compact'] = 'Compactar';
$labels['empty'] = 'Vaciar';
$labels['importmessages'] = 'Importar mensajes';
-
$labels['quota'] = 'Uso de disco';
$labels['unknown'] = 'desconocido';
$labels['unlimited'] = 'sin límite';
-
$labels['quicksearch'] = 'Búsqueda rápida';
$labels['resetsearch'] = 'Reiniciar la búsqueda';
$labels['searchmod'] = 'Opciones de búsqueda';
$labels['msgtext'] = 'Mensaje completo';
$labels['body'] = 'Cuerpo';
$labels['type'] = 'Tipo';
-
+$labels['namex'] = 'Nombre';
$labels['openinextwin'] = 'Abrir en nueva ventana';
$labels['emlsave'] = 'Descargar (.eml)';
$labels['changeformattext'] = 'Mostrar en formato de texto sencillo';
$labels['changeformathtml'] = 'Mostrar en formato HTML';
-
-// message compose
$labels['editasnew'] = 'Editar como nuevo';
$labels['send'] = 'Enviar';
$labels['sendmessage'] = 'Enviar ahora el mensaje';
@@ -224,26 +192,30 @@ $labels['returnreceipt'] = 'Acuse de recibo';
$labels['dsn'] = 'Entrega de notificaciones de estado';
$labels['mailreplyintro'] = 'El $date, $sender escribió:';
$labels['originalmessage'] = 'Mensaje original';
-
$labels['editidents'] = 'Editar identidades';
$labels['spellcheck'] = 'Corrector ortográfico';
$labels['checkspelling'] = 'Revisar ortografía';
$labels['resumeediting'] = 'Continuar edición';
$labels['revertto'] = 'Revertir a';
-
+$labels['responses'] = 'Respuestas';
+$labels['insertresponse'] = 'Insertar una respuesta';
+$labels['manageresponses'] = 'Gestionar respuestas';
+$labels['savenewresponse'] = 'Guardar nueva respuesta';
+$labels['editresponses'] = 'Editar respuestas';
+$labels['editresponse'] = 'Editar respuesta';
+$labels['responsename'] = 'Nombre';
+$labels['responsetext'] = 'Texto de respuesta';
$labels['attach'] = 'Adjuntar';
$labels['attachments'] = 'Adjuntos';
$labels['upload'] = 'Subir';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Cerrar';
$labels['messageoptions'] = 'Opciones de mensaje...';
-
$labels['low'] = 'Bajo';
$labels['lowest'] = 'Bajísimo';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alto';
$labels['highest'] = 'Altísimo';
-
$labels['nosubject'] = '(sin asunto)';
$labels['showimages'] = 'Mostrar imágenes';
$labels['alwaysshow'] = 'Mostrar siempre imágenes de $sender';
@@ -251,25 +223,19 @@ $labels['isdraft'] = 'Este mensaje es un borrador';
$labels['andnmore'] = '$nr más…';
$labels['togglemoreheaders'] = 'Mostrar más encabezados del mensaje';
$labels['togglefullheaders'] = 'Mostrar u ocultar encabezados de mensajes';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Sólo texto';
$labels['savesentmessagein'] = 'Guardar mensaje enviado en';
$labels['dontsave'] = 'No guardar';
$labels['maxuploadsize'] = 'Tamaño de archivo máximo permitido: $size';
-
$labels['addcc'] = 'Añadir Cc';
$labels['addbcc'] = 'Añadir Cco';
$labels['addreplyto'] = 'Añadir Responder a';
$labels['addfollowupto'] = 'Añadir Seguir a';
-
-// mdn
$labels['mdnrequest'] = 'El emisor de este mensaje desea ser notificado cuando usted lo lea. ¿Quiere enviar esta notificación?';
$labels['receiptread'] = 'Notificación de lectura';
$labels['yourmessage'] = 'Esto es un acuse de recibo de su mensaje';
$labels['receiptnote'] = 'Nota: Esta notificación sólo significa que su mensaje fue abierto en el ordenador del destinatario. Eso no garantiza que el destinatario haya leído o entendido el contenido del mensaje.';
-
-// address boook
$labels['name'] = 'Nombre para mostrar';
$labels['firstname'] = 'Nombre';
$labels['surname'] = 'Apellido';
@@ -304,7 +270,6 @@ $labels['search'] = 'Buscar';
$labels['advsearch'] = 'Búsqueda avanzada';
$labels['advanced'] = 'Avanzadas';
$labels['other'] = 'Otro';
-
$labels['typehome'] = 'Casa';
$labels['typework'] = 'Trabajo';
$labels['typeother'] = 'Otro';
@@ -319,14 +284,12 @@ $labels['typeassistant'] = 'Auxiliar';
$labels['typehomepage'] = 'Inicio';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Perfil';
-
$labels['addfield'] = 'Añadir campo...';
$labels['addcontact'] = 'Añadir nuevo contacto';
$labels['editcontact'] = 'Editar contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Propiedades del contacto';
$labels['personalinfo'] = 'Información personal';
-
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Guardar';
@@ -335,7 +298,6 @@ $labels['rename'] = 'Renombrar';
$labels['addphoto'] = 'Añadir';
$labels['replacephoto'] = 'Reemplazar';
$labels['uploadphoto'] = 'Subir foto';
-
$labels['newcontact'] = 'Crear nueva tarjeta de contacto';
$labels['deletecontact'] = 'Eliminar contactos seleccionados';
$labels['composeto'] = 'Escribir mensaje a';
@@ -349,42 +311,36 @@ $labels['newcontactgroup'] = 'Crear un nuevo grupo de contactos';
$labels['grouprename'] = 'Renombrar grupo';
$labels['groupdelete'] = 'Borrar grupo';
$labels['groupremoveselected'] = 'Eliminar los contactos seleccionados del grupo';
-
$labels['previouspage'] = 'Mostrar grupo anterior';
$labels['firstpage'] = 'Mostrar primer grupo';
$labels['nextpage'] = 'Mostrar grupo siguiente';
$labels['lastpage'] = 'Mostrar último grupo';
-
$labels['group'] = 'Grupo';
$labels['groups'] = 'Grupos';
$labels['listgroup'] = 'Listar miembros del grupo';
$labels['personaladrbook'] = 'Direcciones personales';
-
$labels['searchsave'] = 'Guardar búsqueda';
$labels['searchdelete'] = 'Borrar búsqueda';
-
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contactos';
$labels['importfromfile'] = 'Importar desde archivo:';
-$labels['importtarget'] = 'Añadir un nuevo contacto a la los contactos:';
+$labels['importtarget'] = 'Agregar contactos a';
$labels['importreplace'] = 'Reemplazar toda la lista de contactos';
+$labels['importgroups'] = 'Importar asignaciones de grupo';
+$labels['importgroupsall'] = 'Todos (crear grupos si es necesario)';
+$labels['importgroupsexisting'] = 'Sólo para los grupos existentes';
$labels['importdesc'] = 'Puede subir contactos desde una libreta de direcciones existente.<br/>Actualmente permitimos la importación desde los formatos de datos <a href="http://es.wikipedia.org/wiki/VCard">vCard</a> o CSV (separados por comas).';
$labels['done'] = 'Hecho';
-
-// settings
$labels['settingsfor'] = 'Configuración para';
$labels['about'] = 'Acerca de';
$labels['preferences'] = 'Preferencias';
$labels['userpreferences'] = 'Preferencias de usuario';
$labels['editpreferences'] = 'Editar preferencias de usuario';
-
$labels['identities'] = 'Identidades';
$labels['manageidentities'] = 'Gestionar identidades para esta cuenta';
$labels['newidentity'] = 'Nueva identidad';
-
$labels['newitem'] = 'Nuevo';
$labels['edititem'] = 'Editar';
-
$labels['preferhtml'] = 'Prefiero HTML';
$labels['defaultcharset'] = 'Juego de caracteres predeterminado';
$labels['htmlmessage'] = 'Mensaje HTML';
@@ -480,7 +436,9 @@ $labels['standardwindows'] = 'Gestionar ventanas emergentes como ventanas están
$labels['forwardmode'] = 'Reenvío de mensajes';
$labels['inline'] = 'en línea';
$labels['asattachment'] = 'como adjunto';
-
+$labels['replyallmode'] = 'Acción predeterminada del botón [Responder a todos]';
+$labels['replyalldefault'] = 'responder a todos';
+$labels['replyalllist'] = 'responder sólo a la lista de correo (si se encuentra)';
$labels['folder'] = 'Bandeja';
$labels['folders'] = 'Carpetas';
$labels['foldername'] = 'Nombre de bandeja';
@@ -501,26 +459,20 @@ $labels['foldertype'] = 'Tipo de bandeja';
$labels['personalfolder'] = 'Bandeja privada';
$labels['otherfolder'] = 'Bandeja de otro usuario';
$labels['sharedfolder'] = 'Bandeja pública';
-
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Orden ascendente';
$labels['sortdesc'] = 'Orden descendente';
$labels['undo'] = 'Deshacer';
-
$labels['installedplugins'] = 'Complementos instalados';
$labels['plugin'] = 'Complemento';
$labels['version'] = 'Versión';
$labels['source'] = 'Origen';
$labels['license'] = 'Licencia';
$labels['support'] = 'Obtener soporte';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inglés';
$labels['westerneuropean'] = 'Europeo occidental';
@@ -539,5 +491,4 @@ $labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonés';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chino';
-
?>
diff --git a/program/localization/es_ES/messages.inc b/program/localization/es_ES/messages.inc
index d4bd81402..4daa7a97a 100644
--- a/program/localization/es_ES/messages.inc
+++ b/program/localization/es_ES/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = '¡Ha ocurrido un error!';
$messages['loginfailed'] = 'Contraseña o nombre de usuario incorrecto.';
$messages['cookiesdisabled'] = 'Su navegador no acepta cookies.';
@@ -46,6 +44,8 @@ $messages['messagesent'] = 'Mensaje enviado correctamente.';
$messages['savingmessage'] = 'Guardando mensaje...';
$messages['messagesaved'] = 'Mensaje guardado en borradores.';
$messages['successfullysaved'] = 'Guardado correctamente.';
+$messages['savingresponse'] = 'Guardando texto de respuesta...';
+$messages['deleteresponseconfirm'] = '¿Realmente quieres borrar este texto de respuesta?';
$messages['addedsuccessfully'] = 'Contacto añadido correctamente a la libreta de direcciones.';
$messages['contactexists'] = 'Ya existe un contacto con esta dirección de correo.';
$messages['contactnameexists'] = 'Ya existe un contacto con el mismo nombre.';
@@ -57,7 +57,7 @@ $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'] = 'Ocurrió un error mientras se guardaba.';
+$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).';
@@ -101,13 +101,16 @@ $messages['converting'] = 'Quitando el formato del mensaje...';
$messages['messageopenerror'] = 'No puedo descargar el mensaje del servidor.';
$messages['fileuploaderror'] = 'Error al subir archivos.';
$messages['filesizeerror'] = 'El archivo excede el tamaño máximo ($size).';
-$messages['copysuccess'] = '$nr direcciones copiadas correctamente.';
-$messages['copyerror'] = 'No se pudo copiar ninguna dirección.';
+$messages['copysuccess'] = '$nr contactos copiados correctamente.';
+$messages['movesuccess'] = '$nr contactos movidos correctamente.';
+$messages['copyerror'] = 'No se ha podido copiar ningún contacto.';
+$messages['moveerror'] = 'No se ha podido mover ningún contacto.';
$messages['sourceisreadonly'] = 'Esta dirección es de sólo lectura.';
$messages['errorsavingcontact'] = 'No se pudo guardar la dirección de contacto.';
$messages['movingmessage'] = 'Moviendo mensaje(s)...';
$messages['copyingmessage'] = 'Copiando mensaje(s)...';
$messages['copyingcontact'] = 'Copiando contacto(s)…';
+$messages['movingcontact'] = 'Moviendo contacto(s)...';
$messages['deletingmessage'] = 'Eliminando mensaje(s)...';
$messages['markingmessage'] = 'Marcando mensaje(s)...';
$messages['addingmember'] = 'Añadiendo contacto(s) al grupo…';
@@ -141,7 +144,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'] = 'Ocurrió un error interno. Por favor, inténtelo de nuevo.';
+$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.';
@@ -169,5 +172,4 @@ $messages['parentnotwritable'] = 'No se puede crear/mover la carpeta a la carpet
$messages['messagetoobig'] = 'Esta parte del mensaje es demasiada grande para procesarla.';
$messages['attachmentvalidationerror'] = '¡ATENCIÓN! Este adjunto es sospechoso porque su tipo no coincide con el tipo declarado en el mensaje. Si no confía en su remitente, no debería abrirlo en su navegador porque podría tener contenido malicioso.<br/<br/> <em>Esperado: $expected; encontrado: $detected</em>';
$messages['noscriptwarning'] = 'Advertencia: ¡este servicio de webmail necesita Javascript! Para poder usarlo habilite el soporte de Javascript en su navegador, por favor.';
-
?>
diff --git a/program/localization/et_EE/labels.inc b/program/localization/et_EE/labels.inc
index a8bc28403..42a268dd2 100644
--- a/program/localization/et_EE/labels.inc
+++ b/program/localization/et_EE/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Tere tulemast! See on $product.';
$labels['username'] = 'Kasutajanimi';
$labels['password'] = 'Parool';
$labels['server'] = 'Server';
$labels['login'] = 'Logi sisse';
-
-// taskbar
$labels['logout'] = 'Logi välja';
$labels['mail'] = 'Postkast';
$labels['settings'] = 'Seaded';
$labels['addressbook'] = 'Aadressiraamat';
-
-// mailbox names
$labels['inbox'] = 'Saabuvad';
$labels['drafts'] = 'Mustandid';
$labels['sent'] = 'Saadetud';
$labels['trash'] = 'Prügikast';
$labels['junk'] = 'Rämps';
$labels['show_real_foldernames'] = 'Näita eriliste kaustade päris nimesid';
-
-// message listing
$labels['subject'] = 'Pealkiri';
$labels['from'] = 'Saatja';
$labels['sender'] = 'Saatja';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Tähtsus';
$labels['organization'] = 'Organisatsioon';
$labels['readstatus'] = 'Lugemise staatus';
$labels['listoptions'] = 'Nimekirja valikud…';
-
$labels['mailboxlist'] = 'Kaustad';
$labels['messagesfromto'] = 'Kirjed $from kuni $to, kokku $count';
$labels['threadsfromto'] = 'Lõimed $from kuni $to, kokku $count';
$labels['messagenrof'] = 'Kiri $nr, kokku $count';
$labels['fromtoshort'] = '$from – $to kokku $count';
-
$labels['copy'] = 'Kopeeri';
$labels['move'] = 'Liiguta';
$labels['moveto'] = 'liiguta kausta...';
@@ -68,13 +56,9 @@ $labels['download'] = 'laadi arvutisse';
$labels['open'] = 'Ava';
$labels['showattachment'] = 'Näita';
$labels['showanyway'] = 'Näita ikka';
-
$labels['filename'] = 'Faili nimi';
$labels['filesize'] = 'Faili suurus';
-
$labels['addtoaddressbook'] = 'Lisa aadressiraamatusse';
-
-// weekdays short
$labels['sun'] = 'P';
$labels['mon'] = 'E';
$labels['tue'] = 'T';
@@ -82,8 +66,6 @@ $labels['wed'] = 'K';
$labels['thu'] = 'N';
$labels['fri'] = 'R';
$labels['sat'] = 'L';
-
-// weekdays long
$labels['sunday'] = 'Pühapäev';
$labels['monday'] = 'Esmaspäev';
$labels['tuesday'] = 'Teisipäev';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Kolmapäev';
$labels['thursday'] = 'Neljapäev';
$labels['friday'] = 'Reede';
$labels['saturday'] = 'Laupäev';
-
-// months short
$labels['jan'] = 'jaan';
$labels['feb'] = 'veebr';
$labels['mar'] = 'märts';
@@ -105,8 +85,6 @@ $labels['sep'] = 'sept';
$labels['oct'] = 'okt';
$labels['nov'] = 'nov';
$labels['dec'] = 'dets';
-
-// months long
$labels['longjan'] = 'Jaanuar';
$labels['longfeb'] = 'Veebruar';
$labels['longmar'] = 'Märts';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'September';
$labels['longoct'] = 'Oktoober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Detsember';
-
$labels['today'] = 'Täna';
-
-// toolbar buttons
$labels['refresh'] = 'Värskenda';
$labels['checkmail'] = 'Kontrolli uusi kirju';
$labels['compose'] = 'Koosta kiri';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Muud toimingud...';
$labels['more'] = 'Rohkem';
$labels['back'] = 'Tagasi';
$labels['options'] = 'Valikud';
-
$labels['select'] = 'Vali';
$labels['all'] = 'kõik';
$labels['none'] = 'Puudub';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Laienda kõik';
$labels['expand-unread'] = 'Laienda lugemata';
$labels['collapse-all'] = 'Pane kõik kokku';
$labels['threaded'] = 'Lõimedena';
-
$labels['autoexpand_threads'] = 'Laienda kirjade lõimed';
$labels['do_expand'] = 'kõik lõimed';
$labels['expand_only_unread'] = 'ainult lugemata kirjadega';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Näita veerge';
$labels['listsorting'] = 'Järjestus veerg';
$labels['listorder'] = 'Järjestus suund';
$labels['listmode'] = 'Nimekirja vaatamise režiim';
-
$labels['folderactions'] = 'Kausta tegevused...';
$labels['compact'] = 'Tihenda';
$labels['empty'] = 'Tühjenda';
$labels['importmessages'] = 'Impordi kirju';
-
$labels['quota'] = 'Kettakasutus';
$labels['unknown'] = 'teadmata';
$labels['unlimited'] = 'piiramatu';
-
$labels['quicksearch'] = 'Kiirotsing';
$labels['resetsearch'] = 'Lähtesta otsing';
$labels['searchmod'] = 'Otsingu laiendid';
$labels['msgtext'] = 'Kogu kirjast';
$labels['body'] = 'Keha';
-$labels['type'] = 'Type';
-
+$labels['type'] = 'Tüüp';
+$labels['namex'] = 'Nimi';
$labels['openinextwin'] = 'Ava uues aknas';
$labels['emlsave'] = 'Salvesta (.eml)';
$labels['changeformattext'] = 'Näita lihttekstina';
$labels['changeformathtml'] = 'Näita HTMLis';
-
-// message compose
$labels['editasnew'] = 'Kasuta uue kirja põhjana';
$labels['send'] = 'Saada';
$labels['sendmessage'] = 'Saada kiri kohe';
@@ -224,26 +192,22 @@ $labels['returnreceipt'] = 'Kättesaamiskinnitus';
$labels['dsn'] = 'Kohalejõudmise teavitus';
$labels['mailreplyintro'] = '$date kirjutas $sender:';
$labels['originalmessage'] = 'Esialgne kiri';
-
$labels['editidents'] = 'Muuda Identiteete';
$labels['spellcheck'] = 'Õigekiri';
$labels['checkspelling'] = 'Kontrolli õigekirja';
$labels['resumeediting'] = 'Jätka muutmist';
$labels['revertto'] = 'Pööra tagasi';
-
$labels['attach'] = 'Manusta';
$labels['attachments'] = 'Manused';
$labels['upload'] = 'Kinnita manus';
$labels['uploadprogress'] = '$percent ($current, kokku $total)';
$labels['close'] = 'Sulge';
$labels['messageoptions'] = 'Kirja valikud...';
-
$labels['low'] = 'Madal';
$labels['lowest'] = 'Madalaim';
$labels['normal'] = 'Tavaline';
$labels['high'] = 'Kõrge';
$labels['highest'] = 'Kõrgeim';
-
$labels['nosubject'] = '(teema puudub)';
$labels['showimages'] = 'Näita pilte';
$labels['alwaysshow'] = 'Näita alati $sender saadetud pilte';
@@ -251,25 +215,19 @@ $labels['isdraft'] = 'See on mustand.';
$labels['andnmore'] = '$nr veel…';
$labels['togglemoreheaders'] = 'Näita rohkem kirja päiseid';
$labels['togglefullheaders'] = 'Näita/peida algseid päiseid';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Lihttekst';
$labels['savesentmessagein'] = 'Salvesta saadetud kirjad kausta';
$labels['dontsave'] = 'ära salvesta';
$labels['maxuploadsize'] = 'Faili maksimaalne lubatud suurus on $size';
-
$labels['addcc'] = 'Lisa koopia';
$labels['addbcc'] = 'Lisa pimekoopia';
$labels['addreplyto'] = 'Lisa vastus aadressile';
$labels['addfollowupto'] = 'Lisa Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Selle kirja saatja soovib saada kinnitust kirja lugemise kohta. Kas soovid kinnituse saata?';
$labels['receiptread'] = 'Kättesaamiskinnitus (leotud)';
$labels['yourmessage'] = 'See on sinu saadetud kirja kättesaamiskinnitus';
$labels['receiptnote'] = 'Märkus: Kättesaamiskinnituse saamine tähendab ainult seda, et saaja on kirja avanud. Pole mingit garantiid, et ta kirja tegelikult luges ja selle sisust aru sai.';
-
-// address boook
$labels['name'] = 'Näidatav nimi';
$labels['firstname'] = 'Eesnimi';
$labels['surname'] = 'Perekonnanimi';
@@ -304,7 +262,6 @@ $labels['search'] = 'Otsi';
$labels['advsearch'] = 'Täpsem otsing';
$labels['advanced'] = 'Edasijõudnutele';
$labels['other'] = 'Muu';
-
$labels['typehome'] = 'Kodu';
$labels['typework'] = 'Töö';
$labels['typeother'] = 'Muu';
@@ -319,14 +276,12 @@ $labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Veebileht';
$labels['typeblog'] = 'Ajaveeb';
$labels['typeprofile'] = 'Profiil';
-
$labels['addfield'] = 'Lisa väli...';
$labels['addcontact'] = 'Uue kontakti lisamine';
$labels['editcontact'] = 'Muuda kontakti';
$labels['contacts'] = 'Kontaktid';
$labels['contactproperties'] = 'Kontakti omadused';
$labels['personalinfo'] = 'Isiklik info';
-
$labels['edit'] = 'Muuda';
$labels['cancel'] = 'Katkesta';
$labels['save'] = 'Salvesta';
@@ -335,7 +290,6 @@ $labels['rename'] = 'Nimeta ümber';
$labels['addphoto'] = 'Lisa';
$labels['replacephoto'] = 'Asenda';
$labels['uploadphoto'] = 'Lisa foto';
-
$labels['newcontact'] = 'Uue sissekande loomine';
$labels['deletecontact'] = 'Kustuta märgistatud kontaktid';
$labels['composeto'] = 'Kirjuta kiri';
@@ -349,42 +303,32 @@ $labels['newcontactgroup'] = 'Loo uus kontaktigrupp';
$labels['grouprename'] = 'Nimeta grupp ümber';
$labels['groupdelete'] = 'Kustuta grupp';
$labels['groupremoveselected'] = 'Eemalda valitud kontaktid grupist';
-
$labels['previouspage'] = 'Näita eelmist lehte';
$labels['firstpage'] = 'Näita esimest komplekti';
$labels['nextpage'] = 'Näita järgmist lehte';
$labels['lastpage'] = 'Näita viimast komplekti';
-
$labels['group'] = 'Grupp';
$labels['groups'] = 'Grupid';
$labels['listgroup'] = 'Näita grupi liikmeid';
$labels['personaladrbook'] = 'Isiklikud aadressid';
-
$labels['searchsave'] = 'Salvesta otsing';
$labels['searchdelete'] = 'Kustuta otsing';
-
$labels['import'] = 'Impordi';
$labels['importcontacts'] = 'Impordi kontakte';
$labels['importfromfile'] = 'Impordi failist:';
-$labels['importtarget'] = 'Lisa uued kontaktid aadressiraamatusse:';
$labels['importreplace'] = 'Asenda kogu aadressiraamat';
$labels['importdesc'] = 'Sa saad laadida kontakte olemasolevast aadressiraamatust.<br/>Praegu on võimalik importida <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> või CSV (komaga eraldatud) formaadis andmeid. ';
$labels['done'] = 'Valmis';
-
-// settings
$labels['settingsfor'] = 'Kasutajaeelistused kontole';
$labels['about'] = 'Programmist lähemalt';
$labels['preferences'] = 'Eelistused';
$labels['userpreferences'] = 'Kasutaja eelistused';
$labels['editpreferences'] = 'Muuda kasutaja eelistusi';
-
$labels['identities'] = 'Identiteedid';
$labels['manageidentities'] = 'Halda selle konto identiteete';
$labels['newidentity'] = 'Uus identiteet';
-
$labels['newitem'] = 'Uus sissekanne';
$labels['edititem'] = 'Muuda sissekannet';
-
$labels['preferhtml'] = 'Eelista HTMLi';
$labels['defaultcharset'] = 'Vaikimisi märgistik';
$labels['htmlmessage'] = 'HTML kirjad';
@@ -480,7 +424,6 @@ $labels['standardwindows'] = 'Käsitle hüpikaknaid tavaliste akendena';
$labels['forwardmode'] = 'Kirja edastamine';
$labels['inline'] = 'kirja sees';
$labels['asattachment'] = 'manusena';
-
$labels['folder'] = 'Kaust';
$labels['folders'] = 'Kaustad';
$labels['foldername'] = 'Kausta nimi';
@@ -501,26 +444,20 @@ $labels['foldertype'] = 'Kausta tüüp';
$labels['personalfolder'] = 'Isiklik kaust';
$labels['otherfolder'] = 'Teiste kasutajate kaust';
$labels['sharedfolder'] = 'Avalik kaust';
-
$labels['sortby'] = 'Järjesta';
$labels['sortasc'] = 'Järjesta kasvavalt';
$labels['sortdesc'] = 'Järjesta kahanevalt';
$labels['undo'] = 'Võta tagasi';
-
$labels['installedplugins'] = 'Paigaldatud pluginad';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Versioon';
$labels['source'] = 'Allikas';
$labels['license'] = 'Litsents';
$labels['support'] = 'Küsi abi';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KiB';
$labels['MB'] = 'MiB';
$labels['GB'] = 'GiB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'inglise';
$labels['westerneuropean'] = 'Lääne-Euroopa';
@@ -539,5 +476,4 @@ $labels['vietnamese'] = 'vietnami';
$labels['japanese'] = 'jaapani';
$labels['korean'] = 'korea';
$labels['chinese'] = 'hiina';
-
?>
diff --git a/program/localization/et_EE/messages.inc b/program/localization/et_EE/messages.inc
index 4d58b0a75..0d2c79b5a 100644
--- a/program/localization/et_EE/messages.inc
+++ b/program/localization/et_EE/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Ilmnes tõrge!';
$messages['loginfailed'] = 'Sisselogimine ebaõnnestus';
$messages['cookiesdisabled'] = 'Sinu veebilehitseja ei võta präänikuid vastu';
@@ -56,8 +54,6 @@ $messages['contactnotfound'] = 'Otsitud kontakti ei leitud';
$messages['contactsearchonly'] = 'Sisesta otsingusõna kontaktide leidmiseks';
$messages['sendingfailed'] = 'Kirja saatmine ebaõnnestus';
$messages['senttooquickly'] = 'Palun oota enne selle kirja saatmist $sec sekundit.';
-$messages['errorsavingsent'] = 'Saadetud kirja salvestamisel ilmnes tõrge';
-$messages['errorsaving'] = 'Salvestamise ajal ilmnes viga';
$messages['errormoving'] = 'Ei suutnud seda kirja liigutada';
$messages['errorcopying'] = 'Kirju ei õnnestunud kopeerida';
$messages['errordeleting'] = 'Ei suutnud seda kirja kustutada';
@@ -101,13 +97,16 @@ $messages['converting'] = 'Eemaldan kirjast vormindust...';
$messages['messageopenerror'] = 'Kirjade serverist laadimine ebaõnnestus';
$messages['fileuploaderror'] = 'Faili üleslaadimine ebaõnnestus';
$messages['filesizeerror'] = 'Üleslaetava faili suurus ületab maksimaalse suuruse $size';
-$messages['copysuccess'] = '$nr aadressi edukalt kopeeritud';
-$messages['copyerror'] = 'Ühegi aadressi kopeerimine ei õnnestunud';
+$messages['copysuccess'] = '$nr kontakti edukalt kopeeritud.';
+$messages['movesuccess'] = '$nr kontakti edukalt liigutatud.';
+$messages['copyerror'] = 'Ühegi kontakti kopeerimine ei õnnestunud.';
+$messages['moveerror'] = 'Ühegi kontakti liigutamine ei õnnestunud.';
$messages['sourceisreadonly'] = 'Aadressi asukohas puuduvad kirjutusõigused';
$messages['errorsavingcontact'] = 'Kontakti aadressi salvestamine ebaõnnestus';
$messages['movingmessage'] = 'Liigutan kirja...';
$messages['copyingmessage'] = 'Kopeerin kirja...';
$messages['copyingcontact'] = 'Kontakti(de) kopeerimine…';
+$messages['movingcontact'] = 'Kontakti(de) liigutamine…';
$messages['deletingmessage'] = 'Kustutan kirja...';
$messages['markingmessage'] = 'Märgin kirja...';
$messages['addingmember'] = 'Kontakti(de) gruppi lisamine…';
@@ -141,7 +140,6 @@ $messages['smtperror'] = 'SMTP tõrge: $msg';
$messages['emailformaterror'] = 'Lubamatu e-posti aadress: $email';
$messages['toomanyrecipients'] = 'Liiga palju adressaate. Vähenda kirja saajate hulka $max-ni.';
$messages['maxgroupmembersreached'] = 'Grupi liikmete arv ületab suurima lubatud $max';
-$messages['internalerror'] = 'Ilmnes sisemine tõrge. Palun proovi uuesti.';
$messages['contactdelerror'] = 'Kontaktide kustutamine nurjus';
$messages['contactdeleted'] = 'Kontaktide kustutamine õnnestus';
$messages['contactrestoreerror'] = 'Kustutatud kontakti(de) taastamine nurjus.';
@@ -169,5 +167,4 @@ $messages['parentnotwritable'] = 'Kasuta loomine/liigutamine valitud kausta nurj
$messages['messagetoobig'] = 'Kiri on töötlemiseks liiga suur.';
$messages['attachmentvalidationerror'] = 'HOIATUS! See manus on kahtlane, sest selle tüüp ei ole vastavuses kirjas määratuga. Kui sa ei usalda kirja saatjat, siis ei tohiks seda brauseris avada, sest see võib sisaldada pahavara.<br/><br/><em>Oodati: $expected; leiti: $detected</em>';
$messages['noscriptwarning'] = 'Hoiatus: see veebimaili teenus vajab Javascripti! Teenuse kasutamiseks luba Javascript oma brauseri seadetes.';
-
?>
diff --git a/program/localization/eu_ES/labels.inc b/program/localization/eu_ES/labels.inc
index fedce7de5..bbfd0c6ac 100644
--- a/program/localization/eu_ES/labels.inc
+++ b/program/localization/eu_ES/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Ongi etorri $product';
$labels['username'] = 'Erabiltzailea';
$labels['password'] = 'Pasahitza';
$labels['server'] = 'Zerbitzaria';
$labels['login'] = 'Saio hasiera';
-
-// taskbar
$labels['logout'] = 'Irten';
$labels['mail'] = 'ePosta';
$labels['settings'] = 'Ezarpen Pertsonalak';
$labels['addressbook'] = 'Helbide Liburua';
-
-// mailbox names
$labels['inbox'] = 'Sarrera';
$labels['drafts'] = 'Zirriborroak';
$labels['sent'] = 'Bidalitakoak';
$labels['trash'] = 'Zakarrontzia';
$labels['junk'] = 'Zabor-posta';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
+$labels['show_real_foldernames'] = 'Erakutsi karpeta berezien benetako izenak';
$labels['subject'] = 'Gaia';
$labels['from'] = 'Nork';
$labels['sender'] = 'Igorlea';
@@ -54,27 +44,21 @@ $labels['priority'] = 'Lehentasuna';
$labels['organization'] = 'Erakundea';
$labels['readstatus'] = 'Irakurketaren egoera';
$labels['listoptions'] = 'Zerrendaren aukerak...';
-
$labels['mailboxlist'] = 'Karpetak';
$labels['messagesfromto'] = '$from -tik $to -ra $count mezuetatik';
$labels['threadsfromto'] = '$from -etik $to -rako gaiak (guztira $count)';
$labels['messagenrof'] = '$nr mezua $count -tik';
$labels['fromtoshort'] = '$from - $to , guztira $count';
-
$labels['copy'] = 'Kopia';
$labels['move'] = 'Mugitu';
$labels['moveto'] = 'mugitu hona...';
$labels['download'] = 'deskargatu';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
+$labels['open'] = 'Ireki';
+$labels['showattachment'] = 'Erakutsi';
+$labels['showanyway'] = 'Erakutsi edonola';
$labels['filename'] = 'Fitxategi Izena';
$labels['filesize'] = 'Fitxategi Tamaina';
-
$labels['addtoaddressbook'] = 'Helbide liburura gehitu';
-
-// weekdays short
$labels['sun'] = 'Iga';
$labels['mon'] = 'Al';
$labels['tue'] = 'As';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Azt';
$labels['thu'] = 'Og';
$labels['fri'] = 'Or';
$labels['sat'] = 'Lar';
-
-// weekdays long
$labels['sunday'] = 'Igandea';
$labels['monday'] = 'Astelehena';
$labels['tuesday'] = 'Asteartea';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Asteazkena';
$labels['thursday'] = 'Osteguna';
$labels['friday'] = 'Ostirala';
$labels['saturday'] = 'Larunbata';
-
-// months short
$labels['jan'] = 'Urt';
$labels['feb'] = 'Ots';
$labels['mar'] = 'Mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Ira';
$labels['oct'] = 'Urr';
$labels['nov'] = 'Aza';
$labels['dec'] = 'Abe';
-
-// months long
$labels['longjan'] = 'Urtarrila';
$labels['longfeb'] = 'Otsaila';
$labels['longmar'] = 'Martxoa';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Iraila';
$labels['longoct'] = 'Urria';
$labels['longnov'] = 'Azaroa';
$labels['longdec'] = 'Abendua';
-
$labels['today'] = 'Gaur';
-
-// toolbar buttons
$labels['refresh'] = 'Eguneratu';
$labels['checkmail'] = 'Mezu berrien bila arakatu';
$labels['compose'] = 'Mezu bat sortu';
@@ -133,7 +108,7 @@ $labels['replytoallmessage'] = 'Bidaltzaile eta hartzaile guztiei erantzun';
$labels['replyall'] = 'Guztiei erantzun';
$labels['replylist'] = 'Erantzun zerrenda';
$labels['forward'] = 'Berbidali';
-$labels['forwardinline'] = 'Forward inline';
+$labels['forwardinline'] = 'Aurrera barnean';
$labels['forwardattachment'] = 'Erantsi gisa berbidali';
$labels['forwardmessage'] = 'Mezua Birbidali';
$labels['deletemessage'] = 'Mezua ezabatu';
@@ -155,332 +130,301 @@ $labels['moreactions'] = 'Ekintza gehiago...';
$labels['more'] = 'Gehiago';
$labels['back'] = 'Atzera';
$labels['options'] = 'Aukerak';
-
$labels['select'] = 'Hautatu';
$labels['all'] = 'Denak';
$labels['none'] = 'Bat ere ez';
$labels['currpage'] = 'Uneko orrialdea';
$labels['unread'] = 'Irakurri gabeak';
$labels['flagged'] = 'Banderaduna';
-$labels['unanswered'] = 'Unanswered';
-$labels['withattachment'] = 'With attachment';
+$labels['unanswered'] = 'Erantzun gabea';
+$labels['withattachment'] = 'Eranskinarekin';
$labels['deleted'] = 'Ezabatuak';
$labels['undeleted'] = 'Ezabatu gabeak';
-$labels['invert'] = 'Invert';
-$labels['filter'] = 'Filter';
-$labels['list'] = 'List';
-$labels['threads'] = 'Threads';
-$labels['expand-all'] = 'Expand All';
-$labels['expand-unread'] = 'Expand Unread';
-$labels['collapse-all'] = 'Collapse All';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
+$labels['invert'] = 'Alderantzizkatu';
+$labels['filter'] = 'Iragazkia';
+$labels['list'] = 'Zerrenda';
+$labels['threads'] = 'Hariak';
+$labels['expand-all'] = 'Irekin denak';
+$labels['expand-unread'] = 'Ireki irakurri gabeak';
+$labels['collapse-all'] = 'Tolestu guztiak';
+$labels['threaded'] = 'Harian';
+$labels['autoexpand_threads'] = 'Irekin mezu-hariak';
+$labels['do_expand'] = 'hari guztiak';
+$labels['expand_only_unread'] = 'soilik irakurri gabeko mezuak dutenak';
$labels['fromto'] = 'Nork/Nori';
-$labels['flag'] = 'Flag';
-$labels['attachment'] = 'Attachment';
+$labels['flag'] = 'Bandera';
+$labels['attachment'] = 'Eranskina';
$labels['nonesort'] = 'Bat ere ez';
-$labels['sentdate'] = 'Sent date';
-$labels['arrival'] = 'Arrival date';
-$labels['asc'] = 'ascending';
-$labels['desc'] = 'descending';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
+$labels['sentdate'] = 'Bidalketa-data';
+$labels['arrival'] = 'Jasotze-data';
+$labels['asc'] = 'gora';
+$labels['desc'] = 'behera';
+$labels['listcolumns'] = 'Zerrenda-zutabeak';
+$labels['listsorting'] = 'Zutabea ordenatzen';
+$labels['listorder'] = 'Ordenatze era';
+$labels['listmode'] = 'Zerrenda ikuspegia';
+$labels['folderactions'] = 'Karpeta-ekintzak...';
$labels['compact'] = 'Trinkotu';
$labels['empty'] = 'Hustu';
-$labels['importmessages'] = 'Import messages';
-
+$labels['importmessages'] = 'Inportatu mezuak';
$labels['quota'] = 'Disko erabilera';
$labels['unknown'] = 'ezezaguna';
$labels['unlimited'] = 'mugagabea';
-
$labels['quicksearch'] = 'Bilaketa azkarra';
$labels['resetsearch'] = 'Bilaketa berrabiarazi';
-$labels['searchmod'] = 'Search modifiers';
-$labels['msgtext'] = 'Entire message';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
+$labels['searchmod'] = 'Bilatu modifikadoreak';
+$labels['msgtext'] = 'Mezu osoa';
+$labels['body'] = 'Gorputza';
+$labels['type'] = 'Mota';
+$labels['namex'] = 'Izena';
$labels['openinextwin'] = 'Lehio berrian ireki';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
-$labels['editasnew'] = 'Edit as new';
-$labels['send'] = 'Send';
+$labels['emlsave'] = 'Deskargatu (.eml)';
+$labels['changeformattext'] = 'Bistaratu testua formaturik gabe';
+$labels['changeformathtml'] = 'Bistaratu HTML formatuan';
+$labels['editasnew'] = 'Editatu berri bezala';
+$labels['send'] = 'Bidali';
$labels['sendmessage'] = 'Mezua orain bidali';
$labels['savemessage'] = 'Zirriborro hau gorde';
$labels['addattachment'] = 'Fitxategia erantsi';
$labels['charset'] = 'Karaktere jokoa';
$labels['editortype'] = 'Editore mota';
-$labels['returnreceipt'] = 'Bidaltzaileari itzuli';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
+$labels['returnreceipt'] = 'Bidali jasotze-agiria';
+$labels['dsn'] = 'Entrega-egoeraren jakinarazpena';
+$labels['mailreplyintro'] = '$date egunean, $sender-(e)k idatzi du:';
$labels['originalmessage'] = 'Jatorrizko mezua';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
+$labels['editidents'] = 'Editatu identitateak';
+$labels['spellcheck'] = 'Ortografia-egiaztatu';
$labels['checkspelling'] = 'Egiaztaketa ortografikoa';
$labels['resumeediting'] = 'Editatzen jarraitu';
$labels['revertto'] = 'Itzuli hona';
-
-$labels['attach'] = 'Attach';
+$labels['attach'] = 'Erantsi';
$labels['attachments'] = 'Eranskinak';
$labels['upload'] = 'Igo';
-$labels['uploadprogress'] = '$percent ($current from $total)';
+$labels['uploadprogress'] = '$percent ($current/$total)';
$labels['close'] = 'Itxi';
-$labels['messageoptions'] = 'Message options...';
-
+$labels['messageoptions'] = 'Mezu-aukerak';
$labels['low'] = 'Baxua';
$labels['lowest'] = 'Baxuena';
$labels['normal'] = 'Normala';
$labels['high'] = 'Altua';
$labels['highest'] = 'Altuena';
-
$labels['nosubject'] = '(gairik gabea)';
$labels['showimages'] = 'Irudiak bistarazi';
$labels['alwaysshow'] = 'Beti ikusi $sender -en irudiak';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
+$labels['isdraft'] = 'Hau zirriborro bat da';
+$labels['andnmore'] = '$nr gehiago...';
+$labels['togglemoreheaders'] = 'Erakutsi mezu mezu-goiburu gehiago';
+$labels['togglefullheaders'] = 'Aldatu mezu gordinen goiburuak';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Testu laua';
$labels['savesentmessagein'] = 'Gorde mezua hemen';
$labels['dontsave'] = 'ez gorde';
-$labels['maxuploadsize'] = 'Maximum allowed file size is $size';
-
+$labels['maxuploadsize'] = 'Baimendutako gehienezko fitxategi tamaina: $size';
$labels['addcc'] = 'Gehitu Cc (kopia)';
$labels['addbcc'] = 'Gehitu Bcc (kopia ezkutua)';
$labels['addreplyto'] = 'Gehitu erantzun-honi';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
+$labels['addfollowupto'] = 'Gehitu Jarraitu honi';
$labels['mdnrequest'] = 'Mezu honen bidaltzaileak mezua irakurtzen duzunean jakinaraztea eskatu du. Bidaltzailea ohartu nahi duzu?';
-$labels['receiptread'] = 'Itzulketa agiria (irakurria)';
-$labels['yourmessage'] = 'Hau zure mezuaren Itzulketa Agiria da';
-$labels['receiptnote'] = 'Oharra: Agiri honek hartzailearen ordenagailuan mezua ikusi dala adierazten du besterik gabe. Honek ez du esan nahi hartzaileak mezua irakurri edo/eta ulertu duenik:';
-
-// address boook
+$labels['receiptread'] = 'Bidali jasotze-agiria (irakurria)';
+$labels['yourmessage'] = 'Hau zure mezuaren jasotze-agiria da';
+$labels['receiptnote'] = 'Oharra: jasotze-agiri honek hartzailearen ordenagailuan mezua ikusi dala adierazten du besterik gabe. Honek ez du esan nahi hartzaileak mezua irakurri edo/eta ulertu duenik:';
$labels['name'] = 'Izena bistarazi';
$labels['firstname'] = 'Izena';
$labels['surname'] = 'Abizena';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
+$labels['middlename'] = 'Izenaren bigarren partea';
+$labels['nameprefix'] = 'Aurrizkia';
+$labels['namesuffix'] = 'Atzizkia';
$labels['nickname'] = 'Ezizena';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
+$labels['jobtitle'] = 'Lanpostua ';
+$labels['department'] = 'Departamentoa';
+$labels['gender'] = 'Generoa';
+$labels['maidenname'] = 'Ezkondu aurreko izena';
$labels['email'] = 'ePosta';
-$labels['phone'] = 'Phone';
+$labels['phone'] = 'Telefonoa';
$labels['address'] = 'Helbidea';
$labels['street'] = 'Kalea';
-$labels['locality'] = 'City';
+$labels['locality'] = 'Herria';
$labels['zipcode'] = 'Posta kodea';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
+$labels['region'] = 'Estatua/Probintzia';
+$labels['country'] = 'Herrialdea';
+$labels['birthday'] = 'Urtebetetze-eguna';
+$labels['anniversary'] = 'Urteurren-eguna';
+$labels['website'] = 'Webgunea';
+$labels['instantmessenger'] = 'Txata';
+$labels['notes'] = 'Oharrak';
+$labels['male'] = 'gizon';
+$labels['female'] = 'emakume';
+$labels['manager'] = 'Kudeatzailea';
+$labels['assistant'] = 'Laguntzailea';
+$labels['spouse'] = 'Ezkontidea';
+$labels['allfields'] = 'Eremu guztiak';
+$labels['search'] = 'Bilatu';
+$labels['advsearch'] = 'Bilaketa aurreratua';
+$labels['advanced'] = 'Aurreratua';
+$labels['other'] = 'Beste';
+$labels['typehome'] = 'Etxekoa';
+$labels['typework'] = 'Lanekoa';
+$labels['typeother'] = 'Beste';
$labels['typemobile'] = 'Mugikorra';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
-$labels['addcontact'] = 'Txartel berria gehitu';
-$labels['editcontact'] = 'Txartela editatu';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
+$labels['typemain'] = 'Nagusia';
+$labels['typehomefax'] = 'Etxeko faxa';
+$labels['typeworkfax'] = 'Laneko faxa';
+$labels['typecar'] = 'Autoa';
+$labels['typepager'] = 'Bilagailua';
+$labels['typevideo'] = 'Bideo';
+$labels['typeassistant'] = 'Laguntzailea';
+$labels['typehomepage'] = 'Etxeko orria';
+$labels['typeblog'] = 'Bloga';
+$labels['typeprofile'] = 'Profila';
+$labels['addfield'] = 'Gehitu eremua...';
+$labels['addcontact'] = 'Gehitu kontaktu berria';
+$labels['editcontact'] = 'Editatu kontaktua';
+$labels['contacts'] = 'Kontaktuak';
+$labels['contactproperties'] = 'Kontaktuen ezaugarriak';
$labels['personalinfo'] = 'Informazio pertsonala';
-
$labels['edit'] = 'Editatu';
$labels['cancel'] = 'Utzi';
$labels['save'] = 'Gorde';
$labels['delete'] = 'Ezabatu';
-$labels['rename'] = 'Rename';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
-$labels['newcontact'] = 'Helbide liburu txartel berria sortu';
-$labels['deletecontact'] = 'Aukeraturiko txartelak ezabatu';
-$labels['composeto'] = 'Bidali mezua honi:';
-$labels['contactsfromto'] = '$from -tik $to -ra $count txarteletatik';
+$labels['rename'] = 'Berrizendatu';
+$labels['addphoto'] = 'Gehitu';
+$labels['replacephoto'] = 'Ordeztu';
+$labels['uploadphoto'] = 'Kargatu argazkia';
+$labels['newcontact'] = 'Sortu kontaktu-txartel berria';
+$labels['deletecontact'] = 'Ezabatu hautatutako kontaktuak';
+$labels['composeto'] = 'Idatzi mezua honi:';
+$labels['contactsfromto'] = '$from -tik $to -ra $count kontaktuak';
$labels['print'] = 'Inprimatu';
$labels['export'] = 'Esportatu';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
-$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
-$labels['previouspage'] = 'Aurreko sorta ikusi';
-$labels['firstpage'] = 'Lehenengo sorta ikusi';
-$labels['nextpage'] = 'Hurrengo sorta ikusi';
-$labels['lastpage'] = 'Azken sorta ikusi';
-
-$labels['group'] = 'Group';
+$labels['exportall'] = 'Esportatu dena';
+$labels['exportsel'] = 'Esportatu hautaketa';
+$labels['exportvcards'] = 'Esportatu kontaktuak vCard formatuan';
+$labels['newcontactgroup'] = 'Sortu kontaktu-talde berria';
+$labels['grouprename'] = 'Berrizendatu taldea';
+$labels['groupdelete'] = 'Ezabatu taldea';
+$labels['groupremoveselected'] = 'Ezabatu taldetik hautatutako kontaktuak';
+$labels['previouspage'] = 'Aurreko orria ikusi';
+$labels['firstpage'] = 'Lehenengo orria ikusi';
+$labels['nextpage'] = 'Hurrengo orria ikusi';
+$labels['lastpage'] = 'Azken orria ikusi';
+$labels['group'] = 'Taldea';
$labels['groups'] = 'Taldeak';
-$labels['listgroup'] = 'List group members';
+$labels['listgroup'] = 'Zerrendatu taldeko partaideak';
$labels['personaladrbook'] = 'Helbide pertsonalak';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
-$labels['import'] = 'Import';
-$labels['importcontacts'] = 'Import contacts';
-$labels['importfromfile'] = 'Import from file:';
-$labels['importtarget'] = 'Add new contacts to address book:';
-$labels['importreplace'] = 'Replace the entire address book';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
-$labels['done'] = 'Done';
-
-// settings
+$labels['searchsave'] = 'Gorde bilaketa';
+$labels['searchdelete'] = 'Ezabatu bilaketa';
+$labels['import'] = 'Inportatu';
+$labels['importcontacts'] = 'Inportatu kontaktoak';
+$labels['importfromfile'] = 'Inportatu fitxategi honetatik:';
+$labels['importreplace'] = 'Ordezkatu helbide-liburu osoa';
+$labels['importdesc'] = 'Gehitzen ahal duzu kontaktuak dagoen helbide-liburu batetik.<br/>Inportatzeko onartzen diren formatuak: <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> eta CSV (komaz banandutakoak).';
+$labels['done'] = 'Egina';
$labels['settingsfor'] = 'Honen ezarpenak:';
-$labels['about'] = 'About';
+$labels['about'] = 'Honi buruz';
$labels['preferences'] = 'Hobespenak';
$labels['userpreferences'] = 'Erabiltzaile hobespenak';
$labels['editpreferences'] = 'Erabiltzaile hobespenak editatu';
-
$labels['identities'] = 'Identitateak';
$labels['manageidentities'] = 'Kontu honetako identitateak kudeatu';
$labels['newidentity'] = 'Identitate berria';
-
$labels['newitem'] = 'Elementu berria';
$labels['edititem'] = 'Elementua Editatu';
-
$labels['preferhtml'] = 'HTML nahiago';
-$labels['defaultcharset'] = 'Default Character Set';
-$labels['htmlmessage'] = 'HTML Mezua';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
+$labels['defaultcharset'] = 'Lehenetsitako karaktere-jokoa';
+$labels['htmlmessage'] = 'HTML mezua';
+$labels['messagepart'] = 'Zatia';
+$labels['digitalsig'] = 'Sinadura digitala';
+$labels['dateformat'] = 'Data-formatua';
+$labels['timeformat'] = 'Ordu-formatua';
$labels['prettydate'] = 'Data politak';
$labels['setdefault'] = 'Lehenespenak ezarri';
-$labels['autodetect'] = 'Auto';
+$labels['autodetect'] = 'Automatikoa';
$labels['language'] = 'Hizkuntza';
$labels['timezone'] = 'Ordu zonaldea';
$labels['pagesize'] = 'Lerro orrialdeko';
$labels['signature'] = 'Sinadura';
$labels['dstactive'] = 'Eguneko gordeketak';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
-$labels['htmleditor'] = 'HTML mezuak sortu';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
+$labels['showinextwin'] = 'Ireki mezua leiho berrian';
+$labels['composeextwin'] = 'Idatzi leiho berrian';
+$labels['htmleditor'] = 'Idatzi HTML mezuak';
+$labels['htmlonreply'] = 'HTML mezua erantzuteko';
+$labels['htmlonreplyandforward'] = 'HTML mezua erantzuteko edo birbidaltzeko';
$labels['htmlsignature'] = 'HTML sinadura';
-$labels['showemail'] = 'Show email address with display name';
+$labels['showemail'] = 'Erakutsi helbide elektronikoak bere pantaila izenarekin';
$labels['previewpane'] = 'Aurrebista panela ikusi';
$labels['skin'] = 'Azal-interfazea';
$labels['logoutclear'] = 'Garbitu Zakarronzia irtetean';
$labels['logoutcompact'] = 'Trinkotu Sarrera irtetean';
$labels['uisettings'] = 'Erabiltzaile-interfazea';
$labels['serversettings'] = 'Zerbitzariaren ezarpenak';
-$labels['mailboxview'] = 'Postakutxatilaren ikuspegia';
+$labels['mailboxview'] = 'Posta-kutxatila ikuspegia';
$labels['mdnrequests'] = 'Bidaltzailearen jakinarazpena';
$labels['askuser'] = 'galdetu erabiltzaileari';
-$labels['autosend'] = 'bidali automatikoki';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
-$labels['ignore'] = 'ezikusi';
+$labels['autosend'] = 'bidali jasotze-agiria';
+$labels['autosendknown'] = 'bidali jasotze-agiria nire kontaktuei, bestela galdetu niri';
+$labels['autosendknownignore'] = 'bidali jasotze-agiria nire kontaktuei, bestela ez ikusi egin';
+$labels['ignore'] = 'ez ikusi';
$labels['readwhendeleted'] = 'Markatu mezua irakurrita bezala ezabatzerakoan';
$labels['flagfordeletion'] = 'Markatu mezua ezabatzeko ezabatu beharrean';
-$labels['skipdeleted'] = 'Do not show deleted messages';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
-$labels['always'] = 'always';
+$labels['skipdeleted'] = 'Ez erakutsi ezabatutako mezuak';
+$labels['deletealways'] = 'Zakarrontzira bidaltzeak huts egiten badu, ezabatu';
+$labels['deletejunk'] = 'Ezabatu zuzenean
+zabor-mezuak';
+$labels['showremoteimages'] = 'Erakutsi konektatutako urrutiko irudiak';
+$labels['fromknownsenders'] = 'bidaltzaile ezagunengandik';
+$labels['always'] = 'beti';
$labels['showinlineimages'] = 'Erakutsi erantzitako irudiak mezuaren azpian';
$labels['autosavedraft'] = 'Zirriborroa automatikoki gorde';
-$labels['everynminutes'] = 'every $n minute(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
+$labels['everynminutes'] = '$n minuturo';
+$labels['refreshinterval'] = 'Freskatu (bilatu mezu berriak eta abar)';
$labels['never'] = 'inoiz ez';
-$labels['immediately'] = 'immediately';
-$labels['messagesdisplaying'] = 'Mezuak ikusi';
-$labels['messagescomposition'] = 'Mezuak sortu';
-$labels['mimeparamfolding'] = 'Attachment names';
+$labels['immediately'] = 'berehala';
+$labels['messagesdisplaying'] = 'Mezuak bistaratzen';
+$labels['messagescomposition'] = 'Mezuak idazten';
+$labels['mimeparamfolding'] = 'Eranskinen izenak';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (other)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
-$labels['advancedoptions'] = 'Advanced options';
-$labels['focusonnewmessage'] = 'Focus browser window on new message';
-$labels['checkallfolders'] = 'Check all folders for new messages';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
-$labels['section'] = 'Section';
-$labels['maintenance'] = 'Maintenance';
-$labels['newmessage'] = 'New Message';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
-$labels['autoaddsignature'] = 'Automatically add signature';
-$labels['newmessageonly'] = 'new message only';
-$labels['replyandforwardonly'] = 'replies and forwards only';
-$labels['insertsignature'] = 'Insert signature';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
+$labels['2047folding'] = 'Full RFC 2047 (beste batzuk)';
+$labels['force7bit'] = 'Erabili MIME kodeketa 8 bitekok karakterentzat';
+$labels['advancedoptions'] = 'Aukera aurreratuak';
+$labels['focusonnewmessage'] = 'Fokatu leihoa mezu berrian';
+$labels['checkallfolders'] = 'Egiaztatu karpeta guztiak mezu berrien bila';
+$labels['displaynext'] = 'Mezu bat ezabatu/mugitzean erakutsi hurrengo mezua';
+$labels['defaultfont'] = 'Lehenetsitako letra-mota HTML mezuetarako';
+$labels['mainoptions'] = 'Aukera nagusiak';
+$labels['browseroptions'] = 'Nabigatze-aukerak';
+$labels['section'] = 'Atala';
+$labels['maintenance'] = 'Mantenua';
+$labels['newmessage'] = 'Mezu berria';
+$labels['signatureoptions'] = 'Sinadura-aukerak';
+$labels['whenreplying'] = 'Erantzutean';
+$labels['replyempty'] = 'ez aipatu jatorrizko mezua';
+$labels['replytopposting'] = 'hasi mezu berria aipamenaren gainean';
+$labels['replybottomposting'] = 'hasi mezu berria aipamenaren azpian';
+$labels['replyremovesignature'] = 'Erantzutean ezabatu mezuaren jatorrizko sinadura';
+$labels['autoaddsignature'] = 'Gehitu sinadura automatikoki';
+$labels['newmessageonly'] = 'bakarrik mezu berria';
+$labels['replyandforwardonly'] = 'bakarri erantzun eta birbidalketak';
+$labels['insertsignature'] = 'Txertatu sinadura';
+$labels['previewpanemarkread'] = 'Markatu ikusitako mezuak irakurrita bezala';
+$labels['afternseconds'] = '$n segundo eta gero';
+$labels['reqmdn'] = 'Eskatu beti jasotze-agiria';
+$labels['reqdsn'] = 'Eskatu beti entrega-egoeraren jakinarazpena';
+$labels['replysamefolder'] = 'Kokatu erantzunak erantzuten ari den mezuarenkarpeta berean';
+$labels['defaultabook'] = 'Lehenetsitako helbide-liburua';
+$labels['autocompletesingle'] = 'Saltatu helbide elektroniko alternatiboak osatze automatikoan';
+$labels['listnamedisplay'] = 'Zerrendatu kontaktuak honela';
+$labels['spellcheckbeforesend'] = 'Egiaztatu ortografia mezua bidali aurretik';
+$labels['spellcheckoptions'] = 'Ortografia-egiaztatzearen aukerak';
+$labels['spellcheckignoresyms'] = 'Ez ikusi sinboloak dituzten hitzak';
+$labels['spellcheckignorenums'] = 'Ez ikusi zenbakiak dituzten hitzak';
+$labels['spellcheckignorecaps'] = 'Ez ikusi letra kapitalak dituzten hitzak';
+$labels['addtodict'] = 'Gehitu hiztegira';
+$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: estekak';
+$labels['standardwindows'] = 'Tratatu laster-leihoak leiho estandar bezala';
+$labels['forwardmode'] = 'Mezuak birbidaltzen';
+$labels['inline'] = 'Konektatua';
+$labels['asattachment'] = 'eranskin moduan';
$labels['folder'] = 'Karpeta';
$labels['folders'] = 'Karpetak';
$labels['foldername'] = 'Karpeta izena';
@@ -490,54 +434,47 @@ $labels['create'] = 'Sortu';
$labels['createfolder'] = 'Karpeta berria sortu';
$labels['managefolders'] = 'Karpeta kudeaketa';
$labels['specialfolders'] = 'Karpeta bereziak';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
+$labels['properties'] = 'Ezaugarriak';
+$labels['folderproperties'] = 'Karpeta-ezaugarriak';
+$labels['parentfolder'] = 'Goragoko karpeta';
+$labels['location'] = 'Kokalekua';
+$labels['info'] = 'Informazioa';
+$labels['getfoldersize'] = 'Klikatu ikusteko karpetaren tamaina';
+$labels['changesubscription'] = 'Klikatu harpidetza aldatzeko';
+$labels['foldertype'] = 'Karpeta mota';
+$labels['personalfolder'] = 'Karpeta pribatua';
+$labels['otherfolder'] = 'Beste erabiltzaileen karpetak';
+$labels['sharedfolder'] = 'Karpeta publikoa';
$labels['sortby'] = 'Honela ordenatu';
$labels['sortasc'] = 'Goraka ordenatu';
$labels['sortdesc'] = 'Beheraka ordenatu';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
+$labels['undo'] = 'Desegin';
+$labels['installedplugins'] = 'Instalatutako plugin-ak';
$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
+$labels['version'] = 'Bertsioa';
+$labels['source'] = 'Iturria';
+$labels['license'] = 'Lizentzia';
+$labels['support'] = 'Eskuratu laguntza';
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
+$labels['english'] = 'Ingelesa';
+$labels['westerneuropean'] = 'Mendebaldeko Europearra';
+$labels['easterneuropean'] = 'Ekialdeko europearra';
+$labels['southeasterneuropean'] = 'Hego-ekialdeko europearra';
+$labels['baltic'] = 'Baltikoa';
+$labels['cyrillic'] = 'Zirilikoa';
+$labels['arabic'] = 'Arabiarra';
+$labels['greek'] = 'Grekoa';
+$labels['hebrew'] = 'Hebrearra';
+$labels['turkish'] = 'Turkiarra';
+$labels['nordic'] = 'Nordikoa';
$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
+$labels['celtic'] = 'Zeltiar';
+$labels['vietnamese'] = 'Vietnamdarra';
+$labels['japanese'] = 'Japoniarra';
+$labels['korean'] = 'Korearra';
+$labels['chinese'] = 'Txinatarra';
?>
diff --git a/program/localization/eu_ES/messages.inc b/program/localization/eu_ES/messages.inc
index 6dd781530..7d2025804 100644
--- a/program/localization/eu_ES/messages.inc
+++ b/program/localization/eu_ES/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Errore bat gertatu da!';
$messages['loginfailed'] = 'Saio hasierak huts egin du.';
$messages['cookiesdisabled'] = 'Zure nabigatzaileak ez ditu cookie-rik onartzen';
@@ -56,8 +54,6 @@ $messages['contactnotfound'] = 'Eskatutako txartela ez da aurkitu';
$messages['contactsearchonly'] = 'Sartu kontaktua aurkitzeko bilaketa daturen bat.';
$messages['sendingfailed'] = 'Huts mezua bidaltzerakoan';
$messages['senttooquickly'] = 'Itxaron $sec segundo mezua bidali aurretik, mesedez.';
-$messages['errorsavingsent'] = 'Errorea gertatu da bidalitako mezua gordetzean';
-$messages['errorsaving'] = 'Errore bat gertatu da gordetzean';
$messages['errormoving'] = 'Ezin da mezua mugitu';
$messages['errorcopying'] = 'Ezin d(ir)a kopiatu mezua(k).';
$messages['errordeleting'] = 'Ezin da mezua ezabatu';
@@ -144,7 +140,6 @@ $messages['smtperror'] = 'SMTP errorea: $msg';
$messages['emailformaterror'] = 'Helbide elektronikoa ez da baliozkoa: $email';
$messages['toomanyrecipients'] = 'Hartzaile gehiegi. Txikitu hartzaile kopura hona $max.';
$messages['maxgroupmembersreached'] = 'Taldeko partaideen kopurua $max -ko maximoa gainditzen du:';
-$messages['internalerror'] = 'Barne akatsa. Saiatu berriz, mesedez.';
$messages['contactdelerror'] = 'Ezin d(ir)a kontaktua(k) ezabatu.';
$messages['contactdeleted'] = 'Kontaktua(k) ongi ezabatu dira.';
$messages['contactrestoreerror'] = 'Ezin d(ir)a ezabatutako kontaktua(k) leheneratu.';
@@ -172,5 +167,4 @@ $messages['parentnotwritable'] = 'Ezin da karpeta sortu/mugi hautatutako goragok
$messages['messagetoobig'] = 'Mezu-zatia handiegia da prozesatzeko.';
$messages['attachmentvalidationerror'] = 'KONTUZ! Eranskin hau susmagarria da zeren bere izaera ez dator bat mezuan deklaratutakoarekin. Bidaltzailearekin fidatzen ez bazara ez zenuke nabigatzailean ireki behar eduki maltzurra izan dezakeelako.<br/><br/><em>Deklaratua: $expected; erreala: $detected</em>';
$messages['noscriptwarning'] = 'Kontuz: web-posta zerbitzu honek Javascript behar du! Erabili nahi baduzu gaitu Javascript zure nabigatzailearen hobespenetan.';
-
?>
diff --git a/program/localization/fa_AF/labels.inc b/program/localization/fa_AF/labels.inc
index 38154c23c..4abf65245 100644
--- a/program/localization/fa_AF/labels.inc
+++ b/program/localization/fa_AF/labels.inc
@@ -15,66 +15,39 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'به اين پروژه خوش امديد';
$labels['username'] = 'نام کاربر';
$labels['password'] = 'Ø´Ùر';
$labels['server'] = 'سرور';
$labels['login'] = 'داخل شدن';
-
-// taskbar
$labels['logout'] = 'خروج';
$labels['mail'] = 'ايميل';
$labels['settings'] = 'تنظیمات شخصی';
$labels['addressbook'] = 'کتاب ادرس';
-
-// mailbox names
$labels['inbox'] = 'نامه های ارسالي';
$labels['drafts'] = 'نامه های ناتکمیل';
$labels['sent'] = 'ارسال شده';
$labels['trash'] = 'اشغال دانی';
$labels['junk'] = 'بیکاره';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'مضمون';
$labels['from'] = 'ارسال کننده';
-$labels['sender'] = 'Sender';
$labels['to'] = 'ګيرينده';
$labels['cc'] = 'تکثیر';
$labels['bcc'] = 'تکثیر پنهان';
$labels['replyto'] = 'جواب نامه';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'تاريخ';
$labels['size'] = 'اندازه';
$labels['priority'] = 'اولویت';
$labels['organization'] = 'تنظیمات';
-$labels['readstatus'] = 'Read status';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'پوشه ها';
$labels['messagesfromto'] = 'از مقدار پيغام به مقدار حساب شده';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = 'از شمار پيغام های حساب شده';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'تکثیر';
-$labels['move'] = 'Move';
$labels['moveto'] = 'انتقال بدهید به ...';
$labels['download'] = 'داونلود کردن';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'نام Ùايل';
$labels['filesize'] = 'اندازه Ùايل';
-
$labels['addtoaddressbook'] = 'در کتاب ادرس علاوه نماييد';
-
-// weekdays short
$labels['sun'] = 'يکشنپبه';
$labels['mon'] = 'دوشنبه';
$labels['tue'] = 'سه شنبه';
@@ -82,8 +55,6 @@ $labels['wed'] = 'چهارشنبه';
$labels['thu'] = 'پنج شنبه';
$labels['fri'] = 'جمعه';
$labels['sat'] = 'شنبه';
-
-// weekdays long
$labels['sunday'] = 'يکشنبه';
$labels['monday'] = 'دوشنبه';
$labels['tuesday'] = 'سه شنبه';
@@ -91,8 +62,6 @@ $labels['wednesday'] = 'چهارشنبه';
$labels['thursday'] = 'پنج شنبه';
$labels['friday'] = 'جمعه';
$labels['saturday'] = 'شنبه';
-
-// months short
$labels['jan'] = 'جنوری';
$labels['feb'] = 'Ùبروری';
$labels['mar'] = 'مارچ';
@@ -105,8 +74,6 @@ $labels['sep'] = 'سپتمبر';
$labels['oct'] = 'اکتوبر';
$labels['nov'] = 'نومبر';
$labels['dec'] = 'دسمبر';
-
-// months long
$labels['longjan'] = 'جنوری';
$labels['longfeb'] = 'Ùبروری';
$labels['longmar'] = 'مارچ';
@@ -119,22 +86,12 @@ $labels['longsep'] = 'سپتمبر';
$labels['longoct'] = 'اکتوبر';
$labels['longnov'] = 'نومبر';
$labels['longdec'] = 'دسمبر';
-
$labels['today'] = 'امروز';
-
-// toolbar buttons
-$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'بررسي کردن پيغام های جديد';
$labels['compose'] = 'نوشتن پیام حدید';
$labels['writenewmessage'] = 'ساختن پيغام جديد';
-$labels['reply'] = 'Reply';
$labels['replytomessage'] = 'جواب دادن به پيغام';
$labels['replytoallmessage'] = 'به Ùرستنده Ùˆ تمام گيرينده ها جواب بدهيد';
-$labels['replyall'] = 'Reply all';
-$labels['replylist'] = 'Reply list';
-$labels['forward'] = 'Forward';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'Ùرستادن این پیام به دیگران / Ùارورد';
$labels['deletemessage'] = 'حذ٠کردن پيغام';
$labels['movemessagetotrash'] = 'پيغام را به اشيآيي حذ٠شده منتقل نماييد';
@@ -145,253 +102,98 @@ $labels['nextmessage'] = 'پيغام بعدي رانشان دهيد';
$labels['lastmessage'] = 'پيغام اخير را نشان دهيد';
$labels['backtolist'] = 'بازگشتن به لست پيغام';
$labels['viewsource'] = 'منبع / کود را نشان دهيد';
-$labels['mark'] = 'Mark';
$labels['markmessages'] = 'پيغام ها را نشاني کنيد';
$labels['markread'] = 'مانند خوانده شده';
$labels['markunread'] = 'مانند خوانده نشده';
$labels['markflagged'] = 'مانند نشانی شده';
$labels['markunflagged'] = 'مانند نشانی ناشده';
-$labels['moreactions'] = 'More actions...';
-$labels['more'] = 'More';
-$labels['back'] = 'Back';
-$labels['options'] = 'Options';
-
$labels['select'] = 'انتخاب کردن';
$labels['all'] = 'تمام';
$labels['none'] = 'هيچ کدام';
-$labels['currpage'] = 'Current page';
$labels['unread'] = 'ناخوانده';
$labels['flagged'] = 'نشانی شده';
$labels['unanswered'] = 'پیامهای جواب نداده شده';
-$labels['withattachment'] = 'With attachment';
-$labels['deleted'] = 'Deleted';
-$labels['undeleted'] = 'Not deleted';
-$labels['invert'] = 'Invert';
$labels['filter'] = 'تصÙیه کردن';
-$labels['list'] = 'List';
-$labels['threads'] = 'Threads';
-$labels['expand-all'] = 'Expand All';
-$labels['expand-unread'] = 'Expand Unread';
-$labels['collapse-all'] = 'Collapse All';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
-$labels['fromto'] = 'From/To';
-$labels['flag'] = 'Flag';
-$labels['attachment'] = 'Attachment';
$labels['nonesort'] = 'هيچ کدام';
-$labels['sentdate'] = 'Sent date';
-$labels['arrival'] = 'Arrival date';
-$labels['asc'] = 'ascending';
-$labels['desc'] = 'descending';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'خلاصه';
$labels['empty'] = 'خالي';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = '‌طريقه استعمال ديسک';
$labels['unknown'] = 'نامعلوم';
$labels['unlimited'] = 'نامعين/ نامحدود';
-
$labels['quicksearch'] = 'جستجوی سریع';
$labels['resetsearch'] = 'بازنشاندن جستجو';
-$labels['searchmod'] = 'Search modifiers';
-$labels['msgtext'] = 'Entire message';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'در پینجره ای جدید باز کنید';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
-$labels['editasnew'] = 'Edit as new';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'پيغام را همين حالا ارسال کنيد';
$labels['savemessage'] = 'این پیش نویس را Ø­Ùظ نمایید';
$labels['addattachment'] = 'ضميمه نمودن ÙŠÚ© Ùايل';
$labels['charset'] = 'ست کرکتر ها';
$labels['editortype'] = 'روش تصحیح کننده / نوشتاری';
$labels['returnreceipt'] = 'رسید برای مراجعت نامه';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'املا را بررسي کنيد';
$labels['resumeediting'] = 'ادامه / بازگشت به تصحیی کردن / نوشتن';
$labels['revertto'] = 'رجوع کردن به';
-
-$labels['attach'] = 'Attach';
$labels['attachments'] = 'ضميمه ها';
$labels['upload'] = 'اپلود کردن';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'بستن';
-$labels['messageoptions'] = 'Message options...';
-
$labels['low'] = 'Ú©Ù…';
$labels['lowest'] = 'کمترین';
$labels['normal'] = 'عادی';
$labels['high'] = 'عالي';
$labels['highest'] = 'عاليترين';
-
$labels['nosubject'] = 'مضمون ندارد';
$labels['showimages'] = 'نمايش دادن تصاوير';
$labels['alwaysshow'] = 'همیشه نشان بده تصاویر را از این Ùرسیتنده﷼';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'ایچ تی ام ایل';
$labels['plaintoggle'] = 'متن ساده';
$labels['savesentmessagein'] = 'پیام ارسال شده را ذخیره کن در';
$labels['dontsave'] = 'ذخیره نکنید';
$labels['maxuploadsize'] = '$sizeزیاد ترین اندازه اجازه داده شده Ùایل عبارت است از';
-
$labels['addcc'] = 'نسخیه دوم را علاوه کنید';
$labels['addbcc'] = 'نسخه پنهان را علاوه کنید';
$labels['addreplyto'] = 'علاوه کردن';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Ùرستانده این پیام خواهش نموده زمانیکه شما نامه را خواندید براش آگاهی داده شود آيا شما ميخواهيد Ú©Ù‡ Ùرستنده را آګاه سازيد';
$labels['receiptread'] = 'بازگشت رسید (خوانده شده)';
$labels['yourmessage'] = 'برای پيغام شما اين يک رسید بازگشت است';
$labels['receiptnote'] = 'يادداشت : اين رسيد شما را Ùقط اګاه ميسازد Ú©Ù‡ پيغام به کامپیوتر گیرنده نمایش داده شده است هیچ گارنتی وجود ندارد Ú©Ù‡ گیرنده پیام این پیام را خوانده Ùˆ یا مطالب آن را درک کرده باشد.';
-
-// address boook
$labels['name'] = 'نشان دادن نام';
$labels['firstname'] = 'اسم/ نام';
$labels['surname'] = 'اسم Ùاميلي / تخلص';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'ايميل';
-$labels['phone'] = 'Phone';
-$labels['address'] = 'Address';
-$labels['street'] = 'Street';
-$labels['locality'] = 'City';
-$labels['zipcode'] = 'ZIP Code';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
-$labels['typemobile'] = 'Mobile';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'آدرس جديد را علاوه کنيد';
$labels['editcontact'] = 'آدرس جدید را تصحیح کنید';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
-$labels['personalinfo'] = 'Personal information';
-
$labels['edit'] = 'تصحيح کردن';
$labels['cancel'] = 'لغو کردن/ حذ٠کردن';
$labels['save'] = 'Ø­Ùظ کردن';
$labels['delete'] = 'حذ٠کردن';
-$labels['rename'] = 'Rename';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'کارت تماس جديد را بسازيد';
$labels['deletecontact'] = 'آدرس های انتخاب شده را حذ٠کنيد';
$labels['composeto'] = 'ايمیل را نوشته کنيد به';
$labels['contactsfromto'] = 'از$count$to به $from آدرس ها از';
$labels['print'] = 'چاپ کردن';
$labels['export'] = 'صادر کردن';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'صادر نماییدVcardآدرس ها را به Ùرمت';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'بسته قبلي را نشان دهيد';
$labels['firstpage'] = 'بسته اولي را نشان دهيد';
$labels['nextpage'] = 'بسته بعدي را نشان دهيد';
$labels['lastpage'] = 'بسته اخير را نشان دهيد';
-
-$labels['group'] = 'Group';
$labels['groups'] = 'گروه ها';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'ادرس های شخصي';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
$labels['import'] = 'وارد کردن';
$labels['importcontacts'] = 'آدرس ها را وارد نمایید';
$labels['importfromfile'] = 'از یک Ùایل وارد نمایید';
-$labels['importtarget'] = 'Add new contacts to address book:';
$labels['importreplace'] = 'تمام کتاب آدرس ها را عوض نمایید';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'اجرا شد';
-
-// settings
$labels['settingsfor'] = 'تنظیمات برای';
-$labels['about'] = 'About';
$labels['preferences'] = 'ترجيحات';
$labels['userpreferences'] = 'ترجيحات کاربر';
$labels['editpreferences'] = 'تصحيح کردن ترجيحات کاربر';
-
$labels['identities'] = 'شناخت ها';
$labels['manageidentities'] = 'اداره کردن شناسای ها برای اين آدرس';
$labels['newidentity'] = 'شناخت جديد';
-
$labels['newitem'] = 'Ùقره جديد';
$labels['edititem'] = 'تصحيح کردن Ùقره';
-
$labels['preferhtml'] = 'نشان دادن ايچ ټي ام ايل';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'پيغام ايچ ټي‌ام ايل';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'تاريخ های مهم';
$labels['setdefault'] = 'بطور همیشگی انتخاب نمایید';
$labels['autodetect'] = 'اتومات';
@@ -400,13 +202,8 @@ $labels['timezone'] = 'ناحيه زمانی';
$labels['pagesize'] = 'تعداد سطر ها در صÙحه';
$labels['signature'] = 'امضا';
$labels['dstactive'] = 'Daylight saving time';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'پيغام ايچ ټي ام ايل رانوشته کنيد';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'امضای حساب ایمیل بشکل ایچ تی ام ال';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'چوکات پیشنما را نشان دهید';
$labels['skin'] = 'تمپلیت محیط کاربری';
$labels['logoutclear'] = 'Clear Trash on logout';
@@ -417,70 +214,26 @@ $labels['mailboxview'] = 'طرز نمایش صندوق پستی';
$labels['mdnrequests'] = 'آگاهی های ارسال کننده';
$labels['askuser'] = 'از کاربر بپرسید';
$labels['autosend'] = 'پیام را بطور خودکار روان کنید';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['ignore'] = 'رد کردن';
$labels['readwhendeleted'] = 'در هنگام Ø­Ùظ پیام را خوانده شده نشانی کنید';
$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
$labels['skipdeleted'] = 'پیام های حذ٠شده را نمایش ندهید';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
$labels['showremoteimages'] = 'Display remote inline images';
$labels['fromknownsenders'] = 'نامه های از آدرس های شناخته شده';
$labels['always'] = 'همیشه';
$labels['showinlineimages'] = 'تصاویر ضمیمه شده را در پایین پیام نشان دهید.';
$labels['autosavedraft'] = 'بصورت خودکار پیش نويس را Ø­Ùظ کنيد';
$labels['everynminutes'] = 'دقیÙÙ‡$n هر';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'هیچگاه';
-$labels['immediately'] = 'immediately';
$labels['messagesdisplaying'] = 'نمایش دادن پیام ها';
$labels['messagescomposition'] = 'ایجاد کردن پیام جدید';
$labels['mimeparamfolding'] = 'نام های ضمیمه ها';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (دیگر ها)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
$labels['advancedoptions'] = 'انتخاب های پیشرÙته';
$labels['focusonnewmessage'] = 'Ùوکس دادن پینجره مرورگر به پیام جدید';
$labels['checkallfolders'] = 'تمام پوشه ها را بخاطر پیام های جدید بررسی کنید';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
-$labels['section'] = 'Section';
-$labels['maintenance'] = 'Maintenance';
-$labels['newmessage'] = 'New Message';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
-$labels['autoaddsignature'] = 'Automatically add signature';
-$labels['newmessageonly'] = 'new message only';
-$labels['replyandforwardonly'] = 'replies and forwards only';
-$labels['insertsignature'] = 'Insert signature';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'پوشه';
$labels['folders'] = 'پوشه ها';
$labels['foldername'] = 'نام پوشه';
@@ -490,54 +243,11 @@ $labels['create'] = 'ایجاد کردن';
$labels['createfolder'] = 'ایجاد پوشه جدید';
$labels['managefolders'] = 'اداره کردن پوشه ها';
$labels['specialfolders'] = 'پوشه های مخصوص';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'Ùهرست کردن توسط';
$labels['sortasc'] = 'Ùهرست کردن از طر٠بالا به پايين';
$labels['sortdesc'] = 'Ùهرست کردن از طر٠پايين به بالا';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
$labels['B'] = 'بایت';
$labels['KB'] = 'کیلو بایت';
$labels['MB'] = 'میگا بایت';
$labels['GB'] = 'گیگا بایت';
-
-// character sets
-$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/fa_AF/messages.inc b/program/localization/fa_AF/messages.inc
index 51ad5b717..643a9f7db 100644
--- a/program/localization/fa_AF/messages.inc
+++ b/program/localization/fa_AF/messages.inc
@@ -15,22 +15,14 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'خطا رخ داد';
$messages['loginfailed'] = 'خطا در ورود به سیستم';
$messages['cookiesdisabled'] = 'جستجوگر شما cookies را قبول نميکند';
$messages['sessionerror'] = 'جلسه شما وجود ندارد و يا هم از زمان معين آن گذشته است';
$messages['storageerror'] = 'وصل شدن به آیمیپ سرور موÙÙ‚ نشد';
-$messages['servererror'] = 'Server Error!';
$messages['servererrormsg'] = 'خطای سرور: $msg';
$messages['dberror'] = 'خطای پایگاه داده';
$messages['requesttimedout'] = 'عدم پاسخگویی در زمان مقرر';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Invalid request! No data was saved.';
$messages['invalidhost'] = 'نام سرور نامعتبر است';
$messages['nomessagesfound'] = 'هيچ پيغامی در اين صندوق پستي درياÙت نه شد';
$messages['loggedout'] = 'جلسه شما بصورت مکمل Ùسخ شده است خدا حاÙظ';
@@ -48,31 +40,23 @@ $messages['messagesaved'] = 'پيغام را به پیش نويس Ø­Ùظ کرد'
$messages['successfullysaved'] = 'Ø­Ùظ پیام موÙقانه صورت گرÙت';
$messages['addedsuccessfully'] = 'آدرس بصورت مکمل در کتاب ادرس علاوه شد';
$messages['contactexists'] = 'يک آدرس همرا اين ايميل ادرس قبلاً وجود دارد';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'برای Ø­Ùظ استقلال پيغام شما، تصاویر اجنبی این پیام بلاک شده اند';
$messages['encryptedmessage'] = 'اين ÙŠÚ© پيغام مخÙÙŠ است Ùˆ اشکار شده نميتواند معذرت ميخواهيم';
$messages['nocontactsfound'] = 'هيچ آدرسی درياÙت نه شد';
$messages['contactnotfound'] = 'آدرس خواسته شده درياÙت نه شد';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'Ùرستادن پيغام موÙÙ‚ نه شد';
$messages['senttooquickly'] = 'ثانیه منتظر باشید$secلطÙا مدت قبل از ارسال این پیام';
-$messages['errorsavingsent'] = 'در جريان Ø­Ùظ کردن پیام ارسال شده يکاشتباه به وجود امد';
-$messages['errorsaving'] = 'در جريان Ø­Ùظ کردن يکاشتباه به وجود امد';
$messages['errormoving'] = 'پيغام نقل مکان شده نتوانست';
$messages['errorcopying'] = 'امکان کپی پیام (ها) وجود ندارد';
$messages['errordeleting'] = 'پيغام حذ٠شده نتوانست';
$messages['errormarking'] = 'امکان انتخاب پیام (ها) وجود ندارد';
$messages['deletecontactconfirm'] = 'آيا واقعاً شما ميخواهيد که آدرس های انتخاب شده را حذ٠کنيد؟';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'آيا واقعاً شما ميخواهيد که پيغام هاي انتخاب شده را حذ٠کنيد؟';
$messages['deletefolderconfirm'] = 'آيا واقعاً شما ميخواهيد که اين پوشه را حذ٠کنيد؟';
$messages['purgefolderconfirm'] = 'آيا واقعاً شما ميخواهيد تمام پيغام های که در اين پوشه وجود دارد حذ٠کنيد؟';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
$messages['groupdeleting'] = 'در حال حذ٠گروه...';
$messages['folderdeleting'] = 'در حال حذ٠پوشه';
$messages['foldermoving'] = 'در حال انتقال پوشه';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'Ùورمه بصورت مکمل خانه پري نه شده است';
$messages['noemailwarning'] = 'لطÙاً ÙŠÚ© ايميل ادرس موجود را داخل کنيد';
$messages['nonamewarning'] = 'لطÙاً ÙŠÚ© نام وارد کنيد';
@@ -84,7 +68,6 @@ $messages['nobodywarning'] = 'اين پيغام را بدون متن بÙرستÛ
$messages['notsentwarning'] = 'پيغام ارسال نه شده است آیا میخواهید که از این نامه صر٠نظر نمایید';
$messages['noldapserver'] = 'لطÙاً ÙŠÚ© ايل دپ سرور را بخاطر جستجو انتخاب کنيد';
$messages['nosearchname'] = 'لطÙاً ÙŠÚ© نام تماس Ùˆ يا هم ÙŠÚ© ايميل ادرس را داخل کنيد';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = '$nr پیام یاÙت شد';
$messages['contactsearchsuccessful'] = '$nr حساب کاربری یاÙت شد';
$messages['searchnomatch'] = 'جستجو گر موÙÙ‚ به دریاÙت هیچ گونه اثری نشد';
@@ -92,85 +75,24 @@ $messages['searching'] = 'در حال جستجو..';
$messages['checking'] = 'در حال بررسی';
$messages['nospellerrors'] = 'هيچ اشتباه املايي را درياÙت نه کرد';
$messages['folderdeleted'] = 'پوشه موÙقانه از بين رÙت/ حذ٠گرديد';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
$messages['folderpurged'] = 'محتوای پوشه ها با موÙقیت پاک شدند';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'با موÙقیت حذ٠شد';
$messages['converting'] = 'در حال پاک کردن ساختار';
$messages['messageopenerror'] = 'پيغام از سرور جريان کرده نتوانست';
$messages['fileuploaderror'] = 'بارگزاری Ùايل با خطا مواجه شد.';
$messages['filesizeerror'] = 'تثبیت شده میباشد$size حجم Ùایل آپلود شده بیشتر از حجم Ú©Ù„ÛŒ';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'اجازه نمامه کود / منبع این آدرس Ù‚ÙØ· خواندنی است';
$messages['errorsavingcontact'] = 'ادرس این پیام را Ø­Ùظکرده نتوانست';
$messages['movingmessage'] = 'ذر حال انتقال پیام...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'یک رسید برای ارسال کننده این پیام Ùرستاده شد.';
$messages['errorsendingreceipt'] = 'رسيد ارسال شده نتوانست';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'شما این شناخت نامه را حذ٠کرده نمیتوانید. این آخرین شناخت نامه شما است.';
$messages['forbiddencharacter'] = 'نام پوشه دارای یک کرکتر ممنوعه است.';
$messages['selectimportfile'] = 'لطÙاً یک Ùایل را برای آپلود کردن انتخاب نمایید.';
$messages['addresswriterror'] = 'کتابچه آدرس انتخاب شده دارای اجازه نامه نوشتاری نیست.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'در حال وارد کردن لطÙا صبر کنید.';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
$messages['importconfirm'] = '<b>Successfully imported $inserted contacts, $skipped existing entries skipped</b>:<p><em>$names</em></p>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'اجازه این عملکرد را ندارید';
$messages['nofromaddress'] = 'بخش ایمیل آدرس در شناخت نامه انتخاب شده Ù…Ùقود است.';
$messages['editorwarning'] = 'استÙاده از تصحیح کننده متن ساده تمام Ùرمت Ùˆ ساختار داده شده را از بین خواهد برد. آیا میخواهید Ú©Ù‡ ادامه بدهید.';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/fa_IR/labels.inc b/program/localization/fa_IR/labels.inc
index 79bfbbe9d..14f6f8621 100644
--- a/program/localization/fa_IR/labels.inc
+++ b/program/localization/fa_IR/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'به $product خوش آمدید';
$labels['username'] = 'نام کاربری';
$labels['password'] = 'گذرواژه';
-$labels['server'] = 'سرویس‌دهنده';
+$labels['server'] = 'سرور';
$labels['login'] = 'ورود';
-
-// taskbar
-$labels['logout'] = 'برون‌رÙت';
+$labels['logout'] = 'خروج';
$labels['mail'] = 'نامه';
$labels['settings'] = 'تنظیمات';
$labels['addressbook'] = 'دÙتر نشانی';
-
-// mailbox names
$labels['inbox'] = 'صندوق ورودی';
$labels['drafts'] = 'پیش‌نویس‌ها';
$labels['sent'] = 'Ùرستاده شده';
-$labels['trash'] = 'سطل آشغال';
+$labels['trash'] = 'زباله‌دان';
$labels['junk'] = 'بنجل';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
+$labels['show_real_foldernames'] = 'نمایش نام واقعی برای پوشه‌های ویژه';
$labels['subject'] = 'موضوع';
$labels['from'] = 'از';
$labels['sender'] = 'Ùرستنده';
@@ -54,13 +44,11 @@ $labels['priority'] = 'اولویت';
$labels['organization'] = 'سازمان';
$labels['readstatus'] = 'وضعیت خوانده شدن';
$labels['listoptions'] = 'Ùهرست گزینه‌ها...';
-
$labels['mailboxlist'] = 'پوشه‌ها';
$labels['messagesfromto'] = 'پیغام‌ها $from تا $to از $count';
$labels['threadsfromto'] = 'رشته‌ها $from تا $to از $count';
$labels['messagenrof'] = 'پیغام $nr از $count';
$labels['fromtoshort'] = '$from - $to از $count';
-
$labels['copy'] = 'رونوشت';
$labels['move'] = 'انتقال';
$labels['moveto'] = 'انتقال به...';
@@ -68,13 +56,9 @@ $labels['download'] = 'بارگیری';
$labels['open'] = 'باز کردن';
$labels['showattachment'] = 'نمایش';
$labels['showanyway'] = 'نمایش آن در هر صورت';
-
$labels['filename'] = 'نام پرونده';
$labels['filesize'] = 'اندازه پرونده';
-
$labels['addtoaddressbook'] = 'اÙزودن به دÙتر نشانی‌ها';
-
-// weekdays short
$labels['sun'] = '۱ش';
$labels['mon'] = '۲ش';
$labels['tue'] = '۳ش';
@@ -82,17 +66,13 @@ $labels['wed'] = 'Û´Ø´';
$labels['thu'] = '۵ش';
$labels['fri'] = 'جم';
$labels['sat'] = 'Ø´';
-
-// weekdays long
$labels['sunday'] = 'یک‌شنبه';
$labels['monday'] = 'دوشنبه';
$labels['tuesday'] = 'سه‌شنبه';
$labels['wednesday'] = 'چهارشنبه';
$labels['thursday'] = 'پنج‌شنبه';
-$labels['friday'] = 'جمعه';
+$labels['friday'] = 'آدینه';
$labels['saturday'] = 'شنبه';
-
-// months short
$labels['jan'] = 'ژان';
$labels['feb'] = 'Ùور';
$labels['mar'] = 'مار';
@@ -105,8 +85,6 @@ $labels['sep'] = 'سپت';
$labels['oct'] = 'اÙکت';
$labels['nov'] = 'نوا';
$labels['dec'] = 'دسا';
-
-// months long
$labels['longjan'] = 'ژانویه';
$labels['longfeb'] = 'Ùوریه';
$labels['longmar'] = 'مارس';
@@ -119,23 +97,20 @@ $labels['longsep'] = 'سپتامبر';
$labels['longoct'] = 'اکتبر';
$labels['longnov'] = 'نوامبر';
$labels['longdec'] = 'دسامبر';
-
$labels['today'] = 'امروز';
-
-// toolbar buttons
-$labels['refresh'] = 'نوسازی';
+$labels['refresh'] = 'بازخوانی';
$labels['checkmail'] = 'بررسی پیغام‌های جدید';
-$labels['compose'] = 'نوشتن پیغام';
+$labels['compose'] = 'نوشتن';
$labels['writenewmessage'] = 'ایجاد پیغام جدید';
$labels['reply'] = 'پاسخ';
$labels['replytomessage'] = 'پاسخ به Ùرستنده';
$labels['replytoallmessage'] = 'پاسخ به Ùهرست یا به Ùرستنده Ùˆ تمام گیرنده‌ها';
$labels['replyall'] = 'پاسخ به همه';
$labels['replylist'] = 'پاسخ به Ùهرست';
-$labels['forward'] = 'ارجاع';
-$labels['forwardinline'] = 'ارجاع خطی';
-$labels['forwardattachment'] = 'ارجاع به صورت پیوست';
-$labels['forwardmessage'] = 'ارجاع پیغام';
+$labels['forward'] = 'باز ارسال';
+$labels['forwardinline'] = 'باز ارسال خطی';
+$labels['forwardattachment'] = 'باز ارسال به صورت پیوست';
+$labels['forwardmessage'] = 'باز ارسال پیغام';
$labels['deletemessage'] = 'حذ٠پیغام';
$labels['movemessagetotrash'] = 'انتقال پیغام به زباله‌دان';
$labels['printmessage'] = 'چاپ این پیغام';
@@ -154,8 +129,7 @@ $labels['markunflagged'] = 'به عنوان نشانه‌گذاری نشده'
$labels['moreactions'] = 'کارهای دیگر...';
$labels['more'] = 'بيشتر';
$labels['back'] = 'بازگشت';
-$labels['options'] = 'تنظیمات';
-
+$labels['options'] = 'گزینه‌ها';
$labels['select'] = 'انتخاب';
$labels['all'] = 'همه';
$labels['none'] = 'هیچ‌کدام';
@@ -163,7 +137,7 @@ $labels['currpage'] = 'صÙحه جاری';
$labels['unread'] = 'خوانده‌نشده';
$labels['flagged'] = 'پرچم‌دار';
$labels['unanswered'] = 'پاسخ داده نشده';
-$labels['withattachment'] = 'With attachment';
+$labels['withattachment'] = 'با پیوست';
$labels['deleted'] = 'حذ٠شده';
$labels['undeleted'] = 'حذ٠نشده';
$labels['invert'] = 'وارونه';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'باز کردن همه';
$labels['expand-unread'] = 'بازکردن خوانده نشده‌ها';
$labels['collapse-all'] = 'جمع کردن همه';
$labels['threaded'] = 'رشته شده';
-
$labels['autoexpand_threads'] = 'باز کردن رشته‌های پیغام';
$labels['do_expand'] = 'همه رشته‌ها';
$labels['expand_only_unread'] = 'Ùقط با پیغام‌های خوانده نشده';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'ستون‌های Ùهرست';
$labels['listsorting'] = 'ستون مرتب‌سازی';
$labels['listorder'] = 'ترتیب مرتب‌سازی';
$labels['listmode'] = 'نوع مشاهده Ùهرست';
-
$labels['folderactions'] = 'اعمال پوشه...';
$labels['compact'] = 'Ùشرده';
$labels['empty'] = 'خالی';
-$labels['importmessages'] = 'Import messages';
-
+$labels['importmessages'] = 'وارد کردن پیغام‌ها';
$labels['quota'] = 'Ùضای استÙاده شده';
$labels['unknown'] = 'ناشناخته';
$labels['unlimited'] = 'نامحدود';
-
$labels['quicksearch'] = 'جستجوی سریع';
$labels['resetsearch'] = 'جستجوی دوباره';
$labels['searchmod'] = 'اصلاحات جستجو';
$labels['msgtext'] = 'کل پیغام';
$labels['body'] = 'بدنه';
-$labels['type'] = 'Type';
-
+$labels['type'] = 'نوع';
+$labels['namex'] = 'نام';
$labels['openinextwin'] = 'باز کردن در پنجره‌ی جدید';
$labels['emlsave'] = 'بارگیری (.eml)';
$labels['changeformattext'] = 'نمایش در قالب متنی';
$labels['changeformathtml'] = 'نمایش در قالب اچ‌تی‌ام‌ال';
-
-// message compose
$labels['editasnew'] = 'ویرایش به عنوان جدید';
$labels['send'] = 'ارسال';
$labels['sendmessage'] = 'ارسال پیغام';
@@ -224,26 +192,30 @@ $labels['returnreceipt'] = 'رسید دریاÙت';
$labels['dsn'] = 'اعلام وضعیت دریاÙت';
$labels['mailreplyintro'] = 'در $date، $sender نوشته است:';
$labels['originalmessage'] = 'پیغام اصلی';
-
$labels['editidents'] = 'ویرایش شناسه‌ها';
$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['uploadprogress'] = '$percent ($current از$total)';
$labels['close'] = 'بستن';
$labels['messageoptions'] = 'گزینه‌های پیغام...';
-
$labels['low'] = 'Ú©Ù…';
$labels['lowest'] = 'کم‌ترین';
$labels['normal'] = 'معمولی';
$labels['high'] = 'زیاد';
$labels['highest'] = 'بیش‌ترین';
-
$labels['nosubject'] = '(بدون موضوع)';
$labels['showimages'] = 'نمایش عکس‌ها';
$labels['alwaysshow'] = 'همیشه عکس‌های دریاÙتی از $sender را نمایش داده شود';
@@ -251,25 +223,19 @@ $labels['isdraft'] = 'این یک پیغام پیش‌نویس است.';
$labels['andnmore'] = '$nr بیشتر...';
$labels['togglemoreheaders'] = 'نمایش سربرگ‌های بیشتر پیغام';
$labels['togglefullheaders'] = 'تعویض سربرگ‌های پیغام خام';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'متن ساده';
$labels['savesentmessagein'] = 'ذخیره پیغام ارسالی در';
$labels['dontsave'] = 'ذخیره نکن';
$labels['maxuploadsize'] = 'حجم پرونده حداکثر تا میزان $size می‌باشد';
-
$labels['addcc'] = 'اÙزودن رونوشت';
$labels['addbcc'] = 'اÙزودن رونوشت مخÙÛŒ';
$labels['addreplyto'] = 'اÙزودن پاسخ-به';
$labels['addfollowupto'] = 'اÙزودن پیگیری-به';
-
-// mdn
$labels['mdnrequest'] = 'Ùرستنده‌ی این پیغام خواسته است Ú©Ù‡ وقتی شما این پیغام را می‌خوانید، آگاه شود. آیا مایلید Ùرستنده را آگاه سازید؟';
$labels['receiptread'] = 'رسید دریاÙت (خواندن)';
$labels['yourmessage'] = 'این یک رسید دریاÙت برای پیغام شماست';
$labels['receiptnote'] = 'تذکر: این رسید Ùقط تصدیق می‌کند Ú©Ù‡ پیغام، روی رایانه گیرنده نمایش داده شده است. هیچ تضمینی نیست Ú©Ù‡ گیرنده، محتوای پیغام را خوانده یا Ùهمیده باشد.';
-
-// address boook
$labels['name'] = 'نمایش نام';
$labels['firstname'] = 'نام';
$labels['surname'] = 'نام خانوادگی';
@@ -304,7 +270,6 @@ $labels['search'] = 'جستجو';
$labels['advsearch'] = 'جستجوی پیشرÙته';
$labels['advanced'] = 'پیشرÙته';
$labels['other'] = 'سایر';
-
$labels['typehome'] = 'منزل';
$labels['typework'] = 'کار';
$labels['typeother'] = 'سایر';
@@ -319,14 +284,12 @@ $labels['typeassistant'] = 'دستیار';
$labels['typehomepage'] = 'صÙحه خانگی';
$labels['typeblog'] = 'بلاگ';
$labels['typeprofile'] = 'نمایه';
-
$labels['addfield'] = 'اÙزودن زمینه...';
$labels['addcontact'] = 'اÙزودن تماس جدید';
$labels['editcontact'] = 'ویرایش تماس';
$labels['contacts'] = 'تماس‌ها';
$labels['contactproperties'] = 'خصوصیات تماس';
$labels['personalinfo'] = 'اطلاعات شخصی';
-
$labels['edit'] = 'ویرایش';
$labels['cancel'] = 'لغو';
$labels['save'] = 'ذخیره';
@@ -335,7 +298,6 @@ $labels['rename'] = 'تغییر نام';
$labels['addphoto'] = 'اÙزودن';
$labels['replacephoto'] = 'جایگزینی';
$labels['uploadphoto'] = 'بارگذاری تصویر';
-
$labels['newcontact'] = 'ایجاد کارت تماس جدید';
$labels['deletecontact'] = 'حذ٠تماس‌های انتخاب شده';
$labels['composeto'] = 'نوشتن پیغام به';
@@ -349,42 +311,36 @@ $labels['newcontactgroup'] = 'اÙزودن گروه تماس جدید';
$labels['grouprename'] = 'تغییر نام گروه';
$labels['groupdelete'] = 'حذ٠گروه';
$labels['groupremoveselected'] = 'حذ٠نشانی‌های انتخاب شده از گروه';
-
$labels['previouspage'] = 'نمایش صÙحه قبلی';
$labels['firstpage'] = 'نمایش صÙحه اول';
$labels['nextpage'] = 'نمایش صÙحه بعدی';
$labels['lastpage'] = 'نمایش صÙحه آخر';
-
$labels['group'] = 'گروه';
$labels['groups'] = 'گروه‌ها';
-$labels['listgroup'] = 'List group members';
+$labels['listgroup'] = 'Ùهرست اعضاء گروه';
$labels['personaladrbook'] = 'نشانی‌های شخصی';
-
$labels['searchsave'] = 'ذخیره جستجو';
$labels['searchdelete'] = 'حذ٠جستجو';
-
$labels['import'] = 'وارد کردن';
$labels['importcontacts'] = 'وارد کردن تماس‌ها';
$labels['importfromfile'] = 'وارد کردن از پرونده‌ی:';
-$labels['importtarget'] = 'اÙزودن تماس‌های جدید به دÙتر نشانی:';
+$labels['importtarget'] = 'اÙزودن تماس‌ها به';
$labels['importreplace'] = 'جایگیزینی کامل دÙتر نشانی';
+$labels['importgroups'] = 'وارد کردن وظای٠گروه';
+$labels['importgroupsall'] = 'همه (ایجاد گروه‌ها در صورت نیاز)';
+$labels['importgroupsexisting'] = 'Ùقط برای گروه‌های موجود';
$labels['importdesc'] = 'شما می‌توانید تماس‌ها را از یک دÙتر نشانی موجود بارگذاری نمایید.<br/> هم اکنون ما وارد کردن آدرس‌ها را از <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> یا قالب داده CVS (جدا شده با کاما) پشتیبانی می‌کنیم.';
$labels['done'] = 'انجام شد';
-
-// settings
$labels['settingsfor'] = 'تنظیمات برای';
$labels['about'] = 'درباره';
$labels['preferences'] = 'ترجیحات';
$labels['userpreferences'] = 'ترجیحات کاربر';
$labels['editpreferences'] = 'ویرایش ترجیحات کاربر';
-
$labels['identities'] = 'شناسه‌ها';
$labels['manageidentities'] = 'مدیریت شناسه‌ها برای این حساب';
$labels['newidentity'] = 'شناسه جدید';
-
$labels['newitem'] = 'مورد جدید';
$labels['edititem'] = 'ویرایش مورد';
-
$labels['preferhtml'] = 'HTML نمایش';
$labels['defaultcharset'] = 'مجموعه نمایه پیش‌Ùرض';
$labels['htmlmessage'] = 'HTML پیغام';
@@ -406,7 +362,7 @@ $labels['htmleditor'] = 'HTML ‌نوشتن پیغام‌های';
$labels['htmlonreply'] = 'Ùقط در پاسخ به پیغام HTML';
$labels['htmlonreplyandforward'] = 'در بازگردانی یا پاسخ به پیغام‌های HTML';
$labels['htmlsignature'] = 'HTML امضای';
-$labels['showemail'] = 'Show email address with display name';
+$labels['showemail'] = 'نمایش آدرس ایمیل با نام نمایشی';
$labels['previewpane'] = 'نمایش قاب پیش‌نمایش';
$labels['skin'] = 'پوسته ظاهری';
$labels['logoutclear'] = 'تمیز کردن زباله دان هنگام برون‌رÙت';
@@ -476,11 +432,10 @@ $labels['spellcheckignorenums'] = 'نادیده گرÙتن کلمات دارای
$labels['spellcheckignorecaps'] = 'نادیده گرÙتن کلمات با حرو٠بزرگ';
$labels['addtodict'] = 'اضاÙÙ‡ کردن به واژه‌نامه';
$labels['mailtoprotohandler'] = 'ثبت نگه‌دارنده پروتوکل برای mailto: پیوندها';
-$labels['standardwindows'] = 'Handle popups as standard windows';
+$labels['standardwindows'] = 'بکار بردن پاپ‌آپ‌ها به صورت پنجره‌ی استاندارد';
$labels['forwardmode'] = 'بازگردانی پیغام';
$labels['inline'] = 'خطی';
$labels['asattachment'] = 'به عنوان پیوست';
-
$labels['folder'] = 'پوشه';
$labels['folders'] = 'پوشه‌ها';
$labels['foldername'] = 'نام پوشه';
@@ -501,26 +456,20 @@ $labels['foldertype'] = 'نوع پوشه';
$labels['personalfolder'] = 'پوشه خصوصی';
$labels['otherfolder'] = 'پوشه کاربران دیگر';
$labels['sharedfolder'] = 'پوشه عمومی';
-
$labels['sortby'] = 'مرتب‌سازی بر اساس';
$labels['sortasc'] = 'مرتب‌سازی صعودی';
$labels['sortdesc'] = 'مرتب‌سازی نزولی';
$labels['undo'] = 'برگردان';
-
$labels['installedplugins'] = 'اÙزونه‌های نصب شده';
$labels['plugin'] = 'اÙزونه';
$labels['version'] = 'نسخه';
$labels['source'] = 'منبع';
$labels['license'] = 'گواهینامه';
$labels['support'] = 'پشتیبانی';
-
-// units
$labels['B'] = 'بایت';
$labels['KB'] = 'کیلوبایت';
$labels['MB'] = 'مگابایت';
$labels['GB'] = 'گیگابایت';
-
-// character sets
$labels['unicode'] = 'یونیکد';
$labels['english'] = 'انگلیسی';
$labels['westerneuropean'] = 'اروپای غربی';
@@ -539,5 +488,4 @@ $labels['vietnamese'] = 'ویتنامی';
$labels['japanese'] = 'ژاپنی';
$labels['korean'] = 'کره‌ای';
$labels['chinese'] = 'چینی';
-
?>
diff --git a/program/localization/fa_IR/messages.inc b/program/localization/fa_IR/messages.inc
index 3f3f861d6..502b0445a 100644
--- a/program/localization/fa_IR/messages.inc
+++ b/program/localization/fa_IR/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'خطایی رخ داد!';
$messages['loginfailed'] = 'ورود ناموÙÙ‚ بود.';
$messages['cookiesdisabled'] = 'مرورگر شما کوکی‌ها را قبول نمی‌کند.';
@@ -56,8 +54,8 @@ $messages['contactnotfound'] = 'مخاطب درخواست شده پیدا نشد
$messages['contactsearchonly'] = 'برای یاÙتن مخاطب عبارتی را جستجو کنید';
$messages['sendingfailed'] = 'ارسال پیغام ناموÙÙ‚ بود.';
$messages['senttooquickly'] = 'لطÙا قبل از ارسال این پیغام $sec ثانیه صبر کنید.';
-$messages['errorsavingsent'] = 'در لحظه ذخیره پیغام ارسال شده، مشکلی رخ داد.';
-$messages['errorsaving'] = 'هنگام ذخیره‌سازی، مشکلی رخ داد.';
+$messages['errorsavingsent'] = 'خطایی رخ داده است پیام ارسالی ذخیره می گردد.';
+$messages['errorsaving'] = 'خطایی در ذخیره کردن رخ داده است.';
$messages['errormoving'] = 'پیغام(ها) منتقل نشدند.';
$messages['errorcopying'] = 'پیغام(ها) کپی نشدند.';
$messages['errordeleting'] = 'پیغام(ها) حذ٠نشدند.';
@@ -144,7 +142,7 @@ $messages['smtperror'] = 'خطای SMTP: $msg';
$messages['emailformaterror'] = 'پست الکترونیکی نامعتبر: $email';
$messages['toomanyrecipients'] = 'گیرنده‌های بیش از اندازه: تعداد گیرنده ها را به $max کاهش دهید.';
$messages['maxgroupmembersreached'] = 'تعداد اعضای گروه بیشتر از $max است.';
-$messages['internalerror'] = 'خطای داخلی رخ داد. لطÙا دوباره امتحان کنید.';
+$messages['internalerror'] = 'یک خطای داخلی رخ داده است. لطÙا دوباره سعی کنید.';
$messages['contactdelerror'] = 'حذ٠مخاطب(ها) انجام شد.';
$messages['contactdeleted'] = 'مخاطب(ها) با موÙقیت حذ٠شدند.';
$messages['contactrestoreerror'] = 'مخاطب(های) حذ٠شده بازگردانی نخواهند شد.';
@@ -172,5 +170,4 @@ $messages['parentnotwritable'] = 'به دلیل نداشتن حق دسترسی،
$messages['messagetoobig'] = 'بخش پیغام برای پردازش آن خیلی بزرگ است.';
$messages['attachmentvalidationerror'] = 'هشدار! این پیوست مشکوک است زیرا نوع آن با نوعی Ú©Ù‡ در پیغام اشاره شده مطابقت ندارد. اگر شما به Ùرستنده اطمینان ندارید، نباید آن را در مرورگر باز نمایید زیرا ممکن است Ú©Ù‡ شامل محتوای مخرب باشد.<br><br><em>مورد انتظار: $expected; یاÙت شده: $detected</em>';
$messages['noscriptwarning'] = 'هشدار: این برنامه به جاوااسکریپت نیاز دارد! برای استÙاده از این برنامه لطÙا جاوااسکریپت را در تنظیمات مرورگر خود Ùعال نمایید.';
-
?>
diff --git a/program/localization/fi_FI/labels.inc b/program/localization/fi_FI/labels.inc
index ef0f0bff0..2638bd093 100644
--- a/program/localization/fi_FI/labels.inc
+++ b/program/localization/fi_FI/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Tervetuloa $product -käyttäjäksi';
$labels['username'] = 'Käyttäjätunnus';
$labels['password'] = 'Salasana';
$labels['server'] = 'Palvelin';
$labels['login'] = 'Kirjaudu';
-
-// taskbar
$labels['logout'] = 'Kirjaudu ulos';
$labels['mail'] = 'Sähköposti';
$labels['settings'] = 'Asetukset';
$labels['addressbook'] = 'Osoitekirja';
-
-// mailbox names
$labels['inbox'] = 'Saapuneet';
$labels['drafts'] = 'Luonnokset';
$labels['sent'] = 'Lähetetyt';
$labels['trash'] = 'Roskakori';
$labels['junk'] = 'Roskaposti';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
+$labels['show_real_foldernames'] = 'Näytä erikoiskansioiden oikeat nimet';
$labels['subject'] = 'Aihe';
$labels['from'] = 'Lähettäjä';
$labels['sender'] = 'Lähettäjä';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Tärkeys';
$labels['organization'] = 'Organisaatio';
$labels['readstatus'] = 'Luettu';
$labels['listoptions'] = 'Listaa valinnat...';
-
$labels['mailboxlist'] = 'Kansiot';
$labels['messagesfromto'] = 'Viestit $from-$to/$count';
$labels['threadsfromto'] = 'Viestiketjut $from-$to/$count';
$labels['messagenrof'] = 'Viesti $nr/$count';
$labels['fromtoshort'] = '$from - $to (yhteensä $count)';
-
$labels['copy'] = 'Kopioi';
$labels['move'] = 'Siirrä';
$labels['moveto'] = 'siirrä kansioon...';
@@ -68,13 +56,9 @@ $labels['download'] = 'lataa';
$labels['open'] = 'Avaa';
$labels['showattachment'] = 'Näytä';
$labels['showanyway'] = 'Näytä silti';
-
$labels['filename'] = 'Tiedoston nimi';
$labels['filesize'] = 'Tiedoston koko';
-
$labels['addtoaddressbook'] = 'Lisää osoitekirjaan';
-
-// weekdays short
$labels['sun'] = 'Su';
$labels['mon'] = 'Ma';
$labels['tue'] = 'Ti';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Ke';
$labels['thu'] = 'To';
$labels['fri'] = 'Pe';
$labels['sat'] = 'La';
-
-// weekdays long
$labels['sunday'] = 'Sunnuntai';
$labels['monday'] = 'Maanantai';
$labels['tuesday'] = 'Tiistai';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Keskiviikko';
$labels['thursday'] = 'Torstai';
$labels['friday'] = 'Perjantai';
$labels['saturday'] = 'Lauantai';
-
-// months short
$labels['jan'] = 'Tammi';
$labels['feb'] = 'Helmi';
$labels['mar'] = 'Maalis';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Syys';
$labels['oct'] = 'Loka';
$labels['nov'] = 'Marras';
$labels['dec'] = 'Joulu';
-
-// months long
$labels['longjan'] = 'Tammikuu';
$labels['longfeb'] = 'Helmikuu';
$labels['longmar'] = 'Maaliskuu';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Syyskuu';
$labels['longoct'] = 'Lokakuu';
$labels['longnov'] = 'Marraskuu';
$labels['longdec'] = 'Joulukuu';
-
$labels['today'] = 'Tänään';
-
-// toolbar buttons
$labels['refresh'] = 'Päivitä';
$labels['checkmail'] = 'Tarkista saapuneet viestit';
$labels['compose'] = 'Viestin kirjoitus';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Lisää toimintoja...';
$labels['more'] = 'Lisää';
$labels['back'] = 'Takaisin';
$labels['options'] = 'Asetukset';
-
$labels['select'] = 'Valitse';
$labels['all'] = 'Kaikki';
$labels['none'] = 'Ei mikään';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Laajenna kaikki';
$labels['expand-unread'] = 'Laajenna lukemattomat';
$labels['collapse-all'] = 'Kutista kaikki';
$labels['threaded'] = 'Säikeet';
-
$labels['autoexpand_threads'] = 'Laajenna viestiketjut automaattisesti';
$labels['do_expand'] = 'kaikki viestiketjut';
$labels['expand_only_unread'] = 'vain ne joissa lukemattomia viestejä';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Näkyvät kentät';
$labels['listsorting'] = 'Lajittelu kenttä';
$labels['listorder'] = 'Lajittelu järjestys';
$labels['listmode'] = 'Listausnäkymä';
-
$labels['folderactions'] = 'Kansiotoiminnot...';
$labels['compact'] = 'Tiivistä';
$labels['empty'] = 'Tyhjennä';
$labels['importmessages'] = 'Tuo viestejä';
-
$labels['quota'] = 'Levytila';
$labels['unknown'] = 'tuntematon';
$labels['unlimited'] = 'rajoittamaton';
-
$labels['quicksearch'] = 'Pikahaku';
$labels['resetsearch'] = 'Nollaa haku';
$labels['searchmod'] = 'Hakukriteerit';
$labels['msgtext'] = 'Koko viesti';
$labels['body'] = 'Runko';
$labels['type'] = 'Tyyppi';
-
+$labels['namex'] = 'Nimi';
$labels['openinextwin'] = 'Avaa uudessa ikkunassa';
$labels['emlsave'] = 'Tallenna (.eml)';
$labels['changeformattext'] = 'Näytä raakatekstimuodossa';
$labels['changeformathtml'] = 'Näytä HTML-muodossa';
-
-// message compose
$labels['editasnew'] = 'Muokkaa uutena';
$labels['send'] = 'Lähetä';
$labels['sendmessage'] = 'Lähetä viesti';
@@ -224,52 +192,51 @@ $labels['returnreceipt'] = 'Perillesaapumisilmoitus';
$labels['dsn'] = 'Toimituksen tilailmoitus';
$labels['mailreplyintro'] = '$sender kirjoitti $date:';
$labels['originalmessage'] = 'Alkuperäinen viesti';
-
$labels['editidents'] = 'Muokkaa identiteettejä';
$labels['spellcheck'] = 'Oikeinkirjoitus';
$labels['checkspelling'] = 'Tarkista oikeinkirjoitus';
$labels['resumeediting'] = 'Jatka muokkausta';
$labels['revertto'] = 'Muuta takaisin';
-
+$labels['restore'] = 'Palauta';
+$labels['restoremessage'] = 'Palautetaanko viesti?';
+$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ää';
$labels['uploadprogress'] = '$percent ($current, yhteensä $total)';
$labels['close'] = 'Sulje';
$labels['messageoptions'] = 'Viestin asetukset...';
-
$labels['low'] = 'Matala';
$labels['lowest'] = 'Matalin';
$labels['normal'] = 'Normaali';
$labels['high'] = 'Korkea';
$labels['highest'] = 'Korkein';
-
-$labels['nosubject'] = '(ei otsikkoa)';
+$labels['nosubject'] = '(ei aihetta)';
$labels['showimages'] = 'Näytä kuvat';
$labels['alwaysshow'] = 'Näytä aina lähettäjältä $sender saapuneet kuvat';
$labels['isdraft'] = 'Tämä on luonnosviesti.';
$labels['andnmore'] = '$nr lisää...';
$labels['togglemoreheaders'] = 'Näytä lisää viestiotsakkeita';
$labels['togglefullheaders'] = 'Viestin otsakkeet päällä/pois';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Tavallinen teksti';
$labels['savesentmessagein'] = 'Tallenna lähetetty viesti kansioon';
$labels['dontsave'] = 'Älä tallenna';
$labels['maxuploadsize'] = 'Suurin sallittu tiedostokoko on $size';
-
$labels['addcc'] = 'Lisää kopio';
$labels['addbcc'] = 'Lisää piilokopio';
$labels['addreplyto'] = 'Lisää vastausosoite';
$labels['addfollowupto'] = 'Lisää keskustelunsiirto';
-
-// mdn
$labels['mdnrequest'] = 'Viestin lähettäjä on pyytänyt kuittauksen siitä että olet lukenut viestin. Haluatko lähettää kuittauksen?';
$labels['receiptread'] = 'Lukukuittaus';
$labels['yourmessage'] = 'Tämä viesti on kuittaus lähettämällesi viestille';
$labels['receiptnote'] = 'Huom! Kuittaus tarkoittaa vain sitä, että viesti on avattu vastaanottajan tietokoneella. Se ei tarkoita että vastaanottaja on myös lukenut tai ymmärtänyt viestin.';
-
-// address boook
$labels['name'] = 'Näkyvä nimi';
$labels['firstname'] = 'Etunimi';
$labels['surname'] = 'Sukunimi';
@@ -304,7 +271,6 @@ $labels['search'] = 'Haku';
$labels['advsearch'] = 'Tarkennettu haku';
$labels['advanced'] = 'Lisäasetukset';
$labels['other'] = 'Muu';
-
$labels['typehome'] = 'Koti';
$labels['typework'] = 'Työ';
$labels['typeother'] = 'Muu';
@@ -319,14 +285,12 @@ $labels['typeassistant'] = 'Avustaja';
$labels['typehomepage'] = 'Kotisivu';
$labels['typeblog'] = 'Blogi';
$labels['typeprofile'] = 'Profiili';
-
$labels['addfield'] = 'Lisää kenttä...';
$labels['addcontact'] = 'Lisää uusi yhteystieto';
$labels['editcontact'] = 'Muokkaa yhteystietoa';
$labels['contacts'] = 'Yhteystiedot';
$labels['contactproperties'] = 'Yhteystiedon ominaisuudet';
$labels['personalinfo'] = 'Henkilökohtaiset tiedot';
-
$labels['edit'] = 'Muokkaa';
$labels['cancel'] = 'Peruuta';
$labels['save'] = 'Tallenna';
@@ -335,7 +299,6 @@ $labels['rename'] = 'Nimeä uudelleen';
$labels['addphoto'] = 'Lisää';
$labels['replacephoto'] = 'Korvaa';
$labels['uploadphoto'] = 'Lähetä kuva';
-
$labels['newcontact'] = 'Luo uusi yhteystieto';
$labels['deletecontact'] = 'Poista valitut yhteystiedot';
$labels['composeto'] = 'Kirjoita viesti yhteystiedolle';
@@ -349,46 +312,35 @@ $labels['newcontactgroup'] = 'Luo uusi yhteystietoryhmä';
$labels['grouprename'] = 'Nimeä ryhmä uudelleen';
$labels['groupdelete'] = 'Poista ryhmä';
$labels['groupremoveselected'] = 'Poista valitut yhteystiedot ryhmästä';
-
$labels['previouspage'] = 'Näytä edellinen luettelo';
$labels['firstpage'] = 'Näytä ensimmäinen luettelo';
$labels['nextpage'] = 'Näytä seuraava luettelo';
$labels['lastpage'] = 'Näytä viimeinen luettelo';
-
$labels['group'] = 'Ryhmä';
$labels['groups'] = 'Ryhmät';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Henkilökohtaiset osoitteet';
-
$labels['searchsave'] = 'Tallenna haku';
$labels['searchdelete'] = 'Poista haku';
-
$labels['import'] = 'Tuo';
$labels['importcontacts'] = 'Tuo yhteystiedot';
$labels['importfromfile'] = 'Tuo tiedostosta:';
-$labels['importtarget'] = 'Lisää uudet yhteystiedot osoitekirjaan:';
$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';
-
-// settings
$labels['settingsfor'] = 'Asetukset';
$labels['about'] = 'Tietoja';
$labels['preferences'] = 'Asetukset';
$labels['userpreferences'] = 'Käyttäjän asetukset';
$labels['editpreferences'] = 'Muokkaa käyttäjän asetuksia';
-
$labels['identities'] = 'Identiteetit';
$labels['manageidentities'] = 'Muokkaa tunnuksen identiteettejä';
$labels['newidentity'] = 'Uusi identiteetti';
-
$labels['newitem'] = 'Uusi';
$labels['edititem'] = 'Muokkaa';
-
$labels['preferhtml'] = 'Käytä HTML:aa';
$labels['defaultcharset'] = 'Oletusmerkistökoodaus';
$labels['htmlmessage'] = 'HTML-viesti';
-$labels['messagepart'] = 'Part';
$labels['digitalsig'] = 'Digitaalinen allekirjoitus';
$labels['dateformat'] = 'Päiväyksen muoto';
$labels['timeformat'] = 'Ajan muoto';
@@ -478,9 +430,10 @@ $labels['addtodict'] = 'Lisää sanakirjaan';
$labels['mailtoprotohandler'] = 'Rekisteröi mailto:-linkkien protokollakäsitteljä';
$labels['standardwindows'] = 'Käsittele popup-ikkunoita tavallisina ikkunoina';
$labels['forwardmode'] = 'Viestin välitys';
-$labels['inline'] = 'inline';
$labels['asattachment'] = 'liitteenä';
-
+$labels['replyallmode'] = 'Oletustoiminto [Vastaa kaikille]-painikkeelle';
+$labels['replyalldefault'] = 'vastaa kaikille';
+$labels['replyalllist'] = 'vastaa pelkälle postituslistalle (jos havaittu)';
$labels['folder'] = 'Kansio';
$labels['folders'] = 'Kansiot';
$labels['foldername'] = 'Kansion nimi';
@@ -501,26 +454,20 @@ $labels['foldertype'] = 'Kansion tyyppi';
$labels['personalfolder'] = 'Yksityinen kansio';
$labels['otherfolder'] = 'Toisen käyttäjän kansio';
$labels['sharedfolder'] = 'Julkinen kansio';
-
$labels['sortby'] = 'Järjestä';
$labels['sortasc'] = 'Järjestä nousevasti (a-ö)';
$labels['sortdesc'] = 'Järjestä laskevasti (ö-a)';
$labels['undo'] = 'Kumoa';
-
$labels['installedplugins'] = 'Asennetut lisäosat';
$labels['plugin'] = 'Liitännäinen';
$labels['version'] = 'Versio';
$labels['source'] = 'Lähde';
$labels['license'] = 'Lisenssi';
$labels['support'] = 'Hanki tukea';
-
-// units
$labels['B'] = 't';
$labels['KB'] = 'Kt';
$labels['MB'] = 'Mt';
$labels['GB'] = 'Gt';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Englantilainen';
$labels['westerneuropean'] = 'Länsieurooppalainen';
@@ -539,5 +486,4 @@ $labels['vietnamese'] = 'Vietnamilainen';
$labels['japanese'] = 'Japanilainen';
$labels['korean'] = 'Korealainen';
$labels['chinese'] = 'Kiinalainen';
-
?>
diff --git a/program/localization/fi_FI/messages.inc b/program/localization/fi_FI/messages.inc
index adcb36607..25dc0dc0d 100644
--- a/program/localization/fi_FI/messages.inc
+++ b/program/localization/fi_FI/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Virhe havaittu.';
$messages['loginfailed'] = 'Sisäänkirjautuminen epäonnistui';
$messages['cookiesdisabled'] = 'Selaimesi ei hyväksy evästeitä';
@@ -28,6 +26,8 @@ $messages['dberror'] = 'Tietokantavirhe!';
$messages['requesttimedout'] = 'Pyyntö aikakatkaistiin';
$messages['errorreadonly'] = 'Toiminnon suoritus ei onnistu, koska hakemisto on vain lukutilassa.';
$messages['errornoperm'] = 'Toimintoa ei voitu suorittaa. Ei oikeuksia.';
+$messages['erroroverquota'] = 'Toiminnon suoritus epäonnistui. Levytila on loppu.';
+$messages['erroroverquotadelete'] = 'Levytila on loppu. Paina SHIFT+DEL poistaaksesi viestin.';
$messages['invalidrequest'] = 'Virheellinen pyyntö! Tietoa ei tallennettu.';
$messages['invalidhost'] = 'Virheellinen palvelinnimi.';
$messages['nomessagesfound'] = 'Kansiossa ei ole sähköpostiviestejä';
@@ -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';
@@ -54,8 +56,8 @@ $messages['contactnotfound'] = 'Pyydettyä yhteystietoa ei löytynyt';
$messages['contactsearchonly'] = 'Anna hakusanoja, joilla yhteystietoja haetaan';
$messages['sendingfailed'] = 'Viestin lähetys epäonnistui';
$messages['senttooquickly'] = 'Odota $sec sekunti(a) ennen viestin lähettämistä';
-$messages['errorsavingsent'] = 'Lähetetyn viestin tallennuksessa tapahtui virhe';
-$messages['errorsaving'] = 'Tallennuksessa tapahtui virhe';
+$messages['errorsavingsent'] = 'Virhe tallennettaessa lähetettyä viestiä.';
+$messages['errorsaving'] = 'Virhe tallennettaessa.';
$messages['errormoving'] = 'Viestiä ei voitu siirtää';
$messages['errorcopying'] = 'Viestiä ei voitu kopioida';
$messages['errordeleting'] = 'Viestiä ei voitu poistaa';
@@ -77,9 +79,10 @@ $messages['nonamewarning'] = 'Anna nimi';
$messages['nopagesizewarning'] = 'Anna sivukoko';
$messages['nosenderwarning'] = 'Anna lähettäjän sähköpostiosoite';
$messages['norecipientwarning'] = 'Anna ainakin yksi vastaanottaja';
-$messages['nosubjectwarning'] = '"Otsikko"-kenttä on tyhjä. Haluatko kirjoittaa viestillesi otsikon?';
+$messages['nosubjectwarning'] = '"Aihe"-kenttä on tyhjä. Haluatko kirjoittaa viestillesi aiheen?';
$messages['nobodywarning'] = 'Lähetetäänkö viesti ilman tekstiä?';
$messages['notsentwarning'] = 'Viestiä ei lähetetty. Haluatko poistaa viestin?';
+$messages['restoresavedcomposedata'] = 'Löydettiin aiemmin luotu, mutta lähettämätön viesti.\n\nAihe: $subject\nTallennettu: $date\n\nHaluatko palauttaa tämän viestin?';
$messages['noldapserver'] = 'Valitse LDAP-palvelin';
$messages['nosearchname'] = 'Anna yhteystiedon nimi tai sähköpostiosoite';
$messages['notuploadedwarning'] = 'Kaikkia liitteitä ei ole vielä ladattu palvelimelle. Odota tai peruuta lataus.';
@@ -88,7 +91,7 @@ $messages['contactsearchsuccessful'] = 'Löydetty $nr yhteystietoa';
$messages['searchnomatch'] = 'Haku ei tuottanut tuloksia';
$messages['searching'] = 'Etsitään...';
$messages['checking'] = 'Tarkistetaan...';
-$messages['nospellerrors'] = 'Kirjoitusvirheitä ei löytynyt';
+$messages['nospellerrors'] = 'Kirjoitusvirheitä ei löytynyt.';
$messages['folderdeleted'] = 'Kansio poistettu onnistuneesti';
$messages['foldersubscribed'] = 'Kansio tilattu onnistuneesti.';
$messages['folderunsubscribed'] = 'Kansion tilaus poistettu onnistuneesti.';
@@ -99,13 +102,16 @@ $messages['converting'] = 'Poistetaan asettelu viestistä...';
$messages['messageopenerror'] = 'Virhe kopioitaessa viestiä palvelimelta';
$messages['fileuploaderror'] = 'Tiedoston lähettäminen epäonnistui';
$messages['filesizeerror'] = 'Lähetettävä tiedosto ylittää sallitun enimmäiskoon $size';
-$messages['copysuccess'] = 'Kopioitu $nr osoitetta onnistuneesti';
-$messages['copyerror'] = 'Yhtään osoitetta ei voitu kopioida';
+$messages['copysuccess'] = '$nr yhteystietoa kopioitiin onnistuneesti.';
+$messages['movesuccess'] = '$nr yhteystietoa siirrettiin onnistuneesti.';
+$messages['copyerror'] = 'Yhdenkään yhteystiedon kopiointi ei onnistunut.';
+$messages['moveerror'] = 'Minkään yhteystiedon siirto ei onnistunut.';
$messages['sourceisreadonly'] = 'Tämän osoitteen lähde on kirjoitussuojattu';
$messages['errorsavingcontact'] = 'Yhteystietoa ei voitu tallentaa';
$messages['movingmessage'] = 'Siirretään viestiä...';
$messages['copyingmessage'] = 'Kopioidaan viestiä...';
$messages['copyingcontact'] = 'Kopioidaan yhteystietoja...';
+$messages['movingcontact'] = 'Siirretään yhteystieto(j)a...';
$messages['deletingmessage'] = 'Poistetaan viestejä...';
$messages['markingmessage'] = 'Merkitään viestejä...';
$messages['addingmember'] = 'Lisätään yhteystietoja ryhmään...';
@@ -119,11 +125,12 @@ $messages['selectimportfile'] = 'Valitse lähetettävä tiedosto';
$messages['addresswriterror'] = 'Valittuun osoitekirjaan ei voi kirjoittaa';
$messages['contactaddedtogroup'] = 'Yhteystiedot lisätty ryhmään';
$messages['contactremovedfromgroup'] = 'Yhteystiedot poistettu ryhmästä';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'Tuodaan, odota...';
$messages['importformaterror'] = 'Tuonti epäonnistui! Lähetetty tiedosto ei ole kelvollinen tuontitiedosto.';
$messages['importconfirm'] = '<b>$inserted yhteystietoa tuotu onnistuneesti</b>';
$messages['importconfirmskipped'] = '<b>Ohitettu $skipped olemassa olevaa merkintää</b>';
+$messages['importmessagesuccess'] = '$nr viestiä tuotiin onnistuneesti';
+$messages['importmessageerror'] = 'Tuonti epäonnistui! Lähetetty tiedosto ei ole kelvollinen viesti tai mailbox-tiedosto';
$messages['opnotpermitted'] = 'Toiminto ei ole sallittu!';
$messages['nofromaddress'] = 'Valittu identiteetti ei sisällä sähköpostiosoitetta';
$messages['editorwarning'] = 'Vaihtaminen tekstieditoriin aiheuttaa viestin muotoilun katoamisen. Haluatko jatkaa?';
@@ -132,12 +139,12 @@ $messages['smtpconnerror'] = 'SMTP-virhe ($code): Palvelimelle yhdistäminen epÃ
$messages['smtpautherror'] = 'SMTP-virhe ($code): Tunnistus epäonnistui';
$messages['smtpfromerror'] = 'SMTP-virhe ($code): Lähettäjän "$from" asettaminen epäonnistui ($msg)';
$messages['smtptoerror'] = 'SMTP-virhe ($code): Vastaanottajan "$to" lisääminen epäonnistui ($msg)';
-$messages['smtprecipientserror'] = 'SMTP-virhe: Ei voida jäsentää vastaanottajien listaa';
+$messages['smtprecipientserror'] = 'SMTP-virhe: Ei voida jäsentää vastaanottajien listaa.';
$messages['smtperror'] = 'SMTP-virhe: $msg';
$messages['emailformaterror'] = 'Virheellinen sähköpostiosoite: $email';
$messages['toomanyrecipients'] = 'Liikaa vastaanottajia. Vähennä vastaanottajien määrä maksimiin $max.';
$messages['maxgroupmembersreached'] = 'Ryhmän jäsenten määrä ylittää maksimin $max';
-$messages['internalerror'] = 'Ilmeni sisäinen virhe. Yritä uudelleen.';
+$messages['internalerror'] = 'Sisäinen virhe. Yritä uudelleen.';
$messages['contactdelerror'] = 'Yhteystietoja ei voitu poistaa.';
$messages['contactdeleted'] = 'Yhteystiedot poistettu onnistuneesti.';
$messages['contactrestoreerror'] = 'Poistettujen yhteystietojen palautus epäonnistui.';
@@ -163,7 +170,6 @@ $messages['invalidimageformat'] = 'Virheellinen kuvamuoto.';
$messages['mispellingsfound'] = 'Viestissä havaittiin kielioppivirheitä.';
$messages['parentnotwritable'] = 'Kansiota ei voitu siirtää tai luoda valittuun yläkansioon. Ei käyttöoikeutta.';
$messages['messagetoobig'] = 'Viestiosa on liian suuri prosessoitavaksi.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
+$messages['attachmentvalidationerror'] = 'Varoitus! Tämä liitetiedosto on epäilyttävä, koska se ei vastaa ilmoitettua tiedostotyyppiä. Jos et luoda lähettäjään, älä avaa liitetiedostoa välttääksesi mahdollista vahingollista aineistoa.<br/><br/><em>Odotettu: $expected; löydetty: $detected</em>';
$messages['noscriptwarning'] = 'Varoitus: Tämä verkkopohjainen sähköpostipalvelu vaatii Javascriptin toimiakseen. Ota Javascript käyttöön selaimesi asetuksista.';
-
?>
diff --git a/program/localization/fr_FR/csv2vcard.inc b/program/localization/fr_FR/csv2vcard.inc
index bb77001b5..d28df7a8a 100644
--- a/program/localization/fr_FR/csv2vcard.inc
+++ b/program/localization/fr_FR/csv2vcard.inc
@@ -15,14 +15,7 @@
| Author: Aleksander Machniak <alec@alec.pl> |
+-----------------------------------------------------------------------+
*/
-
-// This is a list of CSV column names specified in CSV file header
-// These must be original texts used in Outlook/Thunderbird exported csv files
-// Encoding UTF-8
-
$map = array();
-
-// MS Outlook 2010
$map['anniversary'] = "Anniversaire de mariage ou fête";
$map['assistants_name'] = "Nom de l''assistant(e)";
$map['assistants_phone'] = "Téléphone de l''assistant(e)";
@@ -69,8 +62,6 @@ $map['spouse'] = "Conjoint(e)";
$map['suffix'] = "Suffixe";
$map['title'] = "Titre";
$map['web_page'] = "Page Web";
-
-// Thunderbird
$map['birth_day'] = "Jour";
$map['birth_month'] = "Mois";
$map['birth_year'] = "Année de naissance";
@@ -91,6 +82,4 @@ $map['work_phone'] = "Tél. professionnel";
$map['work_address'] = "Adresse professionnelle";
$map['work_country'] = "Région";
$map['work_zipcode'] = "Code postal";
-
-// Other
$map['_home_city'] = "Ville";
diff --git a/program/localization/fr_FR/labels.inc b/program/localization/fr_FR/labels.inc
index 3dc0e5ef8..f846471c2 100644
--- a/program/localization/fr_FR/labels.inc
+++ b/program/localization/fr_FR/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Bienvenue sur $product';
$labels['username'] = 'Utilisateur';
$labels['password'] = 'Mot de passe';
$labels['server'] = 'Serveur';
$labels['login'] = 'Connexion';
-
-// taskbar
$labels['logout'] = 'Déconnexion';
$labels['mail'] = 'Courriel';
$labels['settings'] = 'Paramètres';
$labels['addressbook'] = 'Carnet d\'adresses';
-
-// mailbox names
$labels['inbox'] = 'Messages reçus';
$labels['drafts'] = 'Brouillons';
$labels['sent'] = 'Messages envoyés';
$labels['trash'] = 'Corbeille';
$labels['junk'] = 'Indésirables';
$labels['show_real_foldernames'] = 'Montrer les noms réels pour les dossiers spéciaux';
-
-// message listing
$labels['subject'] = 'Objet';
$labels['from'] = 'De';
$labels['sender'] = 'Expéditeur';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Priorité';
$labels['organization'] = 'Organisation';
$labels['readstatus'] = 'Statut de lecture';
$labels['listoptions'] = 'Lister les options...';
-
$labels['mailboxlist'] = 'Dossiers';
$labels['messagesfromto'] = 'Messages de $from à $to sur $count';
$labels['threadsfromto'] = 'Fil de $from à $to sur $count';
$labels['messagenrof'] = 'Message $nr sur $count';
$labels['fromtoshort'] = '$from – $to de $count';
-
$labels['copy'] = 'Copier';
$labels['move'] = 'Déplacer';
$labels['moveto'] = 'Déplacer vers...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Télécharger';
$labels['open'] = 'Ouvrir';
$labels['showattachment'] = 'Afficher';
$labels['showanyway'] = 'Afficher quand même';
-
$labels['filename'] = 'Nom du fichier';
$labels['filesize'] = 'Taille du fichier';
-
$labels['addtoaddressbook'] = 'Ajouter au carnet d\'adresses';
-
-// weekdays short
$labels['sun'] = 'Dim';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Mar';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Mer';
$labels['thu'] = 'Jeu';
$labels['fri'] = 'Ven';
$labels['sat'] = 'Sam';
-
-// weekdays long
$labels['sunday'] = 'Dimanche';
$labels['monday'] = 'Lundi';
$labels['tuesday'] = 'Mardi';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Mercredi';
$labels['thursday'] = 'Jeudi';
$labels['friday'] = 'Vendredi';
$labels['saturday'] = 'Samedi';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Fév';
$labels['mar'] = 'Mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Oct';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Déc';
-
-// months long
$labels['longjan'] = 'Janvier';
$labels['longfeb'] = 'Février';
$labels['longmar'] = 'Mars';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Septembre';
$labels['longoct'] = 'Octobre';
$labels['longnov'] = 'Novembre';
$labels['longdec'] = 'Décembre';
-
$labels['today'] = 'Aujourd\'hui';
-
-// toolbar buttons
$labels['refresh'] = 'Actualiser';
$labels['checkmail'] = 'Vérification des nouveaux messages';
$labels['compose'] = 'Composer un nouveau message';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Plus d\'actions...';
$labels['more'] = 'Plus';
$labels['back'] = 'Retour';
$labels['options'] = 'Paramètres';
-
$labels['select'] = 'Sélectionner';
$labels['all'] = 'Tous';
$labels['none'] = 'Aucun';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Tout afficher';
$labels['expand-unread'] = 'Afficher non-lu(s)';
$labels['collapse-all'] = 'Fermer tous';
$labels['threaded'] = 'Par sujet';
-
$labels['autoexpand_threads'] = 'Développer les sujets';
$labels['do_expand'] = 'Tous les sujets';
$labels['expand_only_unread'] = 'uniquement avec des messages non-lus';
@@ -190,16 +163,13 @@ $labels['listcolumns'] = 'Lister les colonnes';
$labels['listsorting'] = 'Colonne de tri';
$labels['listorder'] = 'Ordre de tri';
$labels['listmode'] = 'Mode d\'affichage de la liste';
-
$labels['folderactions'] = 'Actions du dossier...';
$labels['compact'] = 'Compacter';
$labels['empty'] = 'Vider';
$labels['importmessages'] = 'Importer des messages';
-
$labels['quota'] = 'Occupation disque';
$labels['unknown'] = 'inconnue';
$labels['unlimited'] = 'illimitée';
-
$labels['quicksearch'] = 'Recherche rapide';
$labels['resetsearch'] = 'Réinitialiser la recherche';
$labels['searchmod'] = 'Portée de la recherche';
@@ -207,13 +177,10 @@ $labels['msgtext'] = 'Message entier';
$labels['body'] = 'Corps';
$labels['type'] = 'Type';
$labels['namex'] = 'Nom';
-
$labels['openinextwin'] = 'Ouvrir dans une nouvelle fenêtre';
$labels['emlsave'] = 'Télécharger (.eml)';
$labels['changeformattext'] = 'Afficher au format texte';
$labels['changeformathtml'] = 'Afficher au format HTML';
-
-// message compose
$labels['editasnew'] = 'Éditer en tant que nouveau message';
$labels['send'] = 'Envoyer';
$labels['sendmessage'] = 'Envoyer un message';
@@ -225,26 +192,32 @@ $labels['returnreceipt'] = 'Accusé de réception';
$labels['dsn'] = 'Notification d\'état de distribution';
$labels['mailreplyintro'] = 'Le $date, $sender a écrit :';
$labels['originalmessage'] = 'Message original';
-
$labels['editidents'] = 'Modifier les identités';
$labels['spellcheck'] = 'Orthographe';
$labels['checkspelling'] = 'Vérifier l\'orthographe';
$labels['resumeediting'] = 'Retourner à l\'édition';
$labels['revertto'] = 'Revenir à';
-
+$labels['restore'] = 'Restaurer';
+$labels['restoremessage'] = 'Restaurer le message ?';
+$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';
$labels['uploadprogress'] = '$percent ($current sur $total)';
$labels['close'] = 'Fermer';
$labels['messageoptions'] = 'Options du message';
-
$labels['low'] = 'Basse';
$labels['lowest'] = 'La plus basse';
$labels['normal'] = 'Normale';
$labels['high'] = 'Élevée';
$labels['highest'] = 'La plus élevée';
-
$labels['nosubject'] = '(pas de sujet)';
$labels['showimages'] = 'Afficher les images';
$labels['alwaysshow'] = 'Toujours afficher les images de $sender';
@@ -252,25 +225,19 @@ $labels['isdraft'] = 'Ceci est un brouillon.';
$labels['andnmore'] = 'Plus de $nr...';
$labels['togglemoreheaders'] = 'Afficher plus d\'en-têtes du message';
$labels['togglefullheaders'] = 'Afficher/Cacher l\'entête du message';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Texte brut';
$labels['savesentmessagein'] = 'Enregistrer le message envoyé dans';
$labels['dontsave'] = 'ne pas enregistrer';
$labels['maxuploadsize'] = 'La taille maximum autorisée pour un fichier est $size';
-
$labels['addcc'] = 'Ajouter Cc';
$labels['addbcc'] = 'Ajouter Cci';
$labels['addreplyto'] = 'Ajouter Répondre à';
$labels['addfollowupto'] = 'Ajouter Faire suivre à';
-
-// mdn
$labels['mdnrequest'] = 'L\'expéditeur de ce message a demandé d\'être prévenu quand vous lirez ce message. Souhaitez-vous prévenir l\'expéditeur ?';
$labels['receiptread'] = 'Accusé de réception (lu)';
$labels['yourmessage'] = 'Ceci est un accusé de réception pour votre message';
$labels['receiptnote'] = 'Note : Cet accusé de réception indique seulement que le message a été affiché sur l\'ordinateur du destinataire. Il n\'y a aucune garantie que le destinataire ait lu ou compris le contenu du message.';
-
-// address boook
$labels['name'] = 'Nom à afficher';
$labels['firstname'] = 'Prénom';
$labels['surname'] = 'Nom';
@@ -305,7 +272,6 @@ $labels['search'] = 'Rechercher';
$labels['advsearch'] = 'Recherche avancée';
$labels['advanced'] = 'Détails';
$labels['other'] = 'Autre';
-
$labels['typehome'] = 'Domicile';
$labels['typework'] = 'Travail';
$labels['typeother'] = 'Autre';
@@ -320,14 +286,12 @@ $labels['typeassistant'] = 'Assistante';
$labels['typehomepage'] = 'Accueil';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Ajouter un champ...';
$labels['addcontact'] = 'Ajouter le contact sélectionné à votre carnet d\'adresses';
$labels['editcontact'] = 'Modifier le contact';
$labels['contacts'] = 'Contacts';
$labels['contactproperties'] = 'Propriétés du contact';
$labels['personalinfo'] = 'Informations personnelles';
-
$labels['edit'] = 'Modifier';
$labels['cancel'] = 'Annuler';
$labels['save'] = 'Enregistrer';
@@ -336,7 +300,6 @@ $labels['rename'] = 'Renommer';
$labels['addphoto'] = 'Ajouter';
$labels['replacephoto'] = 'Remplacer';
$labels['uploadphoto'] = 'Transférer une photo';
-
$labels['newcontact'] = 'Créer un nouveau contact';
$labels['deletecontact'] = 'Supprimer les contacts sélectionnés';
$labels['composeto'] = 'Écrire un message à';
@@ -350,20 +313,16 @@ $labels['newcontactgroup'] = 'Créer un nouveau groupe de contacts';
$labels['grouprename'] = 'Renommer le groupe';
$labels['groupdelete'] = 'Supprimer le groupe';
$labels['groupremoveselected'] = 'Retirer les contacts sélectionnés du groupe';
-
$labels['previouspage'] = 'Montrer page précédente';
$labels['firstpage'] = 'Voir la première page';
$labels['nextpage'] = 'Montrer page suivante';
$labels['lastpage'] = 'Voir la dernière page';
-
$labels['group'] = 'Groupe';
$labels['groups'] = 'Groupes';
$labels['listgroup'] = 'Liste des membres du groupe';
$labels['personaladrbook'] = 'Adresses personnelles';
-
$labels['searchsave'] = 'Enregistrer la recherche';
$labels['searchdelete'] = 'Supprimer la recherche';
-
$labels['import'] = 'Importer';
$labels['importcontacts'] = 'Importer les contacts';
$labels['importfromfile'] = 'Importer depuis un fichier :';
@@ -374,21 +333,16 @@ $labels['importgroupsall'] = 'Tous (créer les groupes si nécessaire)';
$labels['importgroupsexisting'] = 'Uniquement pour les groupes existants';
$labels['importdesc'] = 'Vous pouvez transférer des contacts à partir d\'un carnet d\'adresses existant.<br/>Nous supportons actuellement l\'importation d\'adresses à partir des format de données <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> ou CSV (champs séparés par une virgule).';
$labels['done'] = 'Terminé';
-
-// settings
$labels['settingsfor'] = 'Paramètres pour';
$labels['about'] = 'A propos';
$labels['preferences'] = 'Préférences';
$labels['userpreferences'] = 'Préférences utilisateur';
$labels['editpreferences'] = 'Modifier les préférences utilisateur';
-
$labels['identities'] = 'Identités';
$labels['manageidentities'] = 'Gérer les identités pour ce compte';
$labels['newidentity'] = 'Nouvelle identité';
-
$labels['newitem'] = 'Nouvel élément';
$labels['edititem'] = 'Modifier l\'élément';
-
$labels['preferhtml'] = 'Afficher en HTML';
$labels['defaultcharset'] = 'Encodage par défaut';
$labels['htmlmessage'] = 'Message en HTML';
@@ -484,7 +438,8 @@ $labels['standardwindows'] = 'Manipuler les menus surgissants comme des fenêtre
$labels['forwardmode'] = 'Transfert des messages';
$labels['inline'] = 'dans le corps';
$labels['asattachment'] = 'en pièce jointe';
-
+$labels['replyalldefault'] = 'Répondre à tous';
+$labels['replyalllist'] = 'Répondre uniquement à la liste de diffusion (si trouvée)';
$labels['folder'] = 'Dossier';
$labels['folders'] = 'Dossiers';
$labels['foldername'] = 'Nom du dossier';
@@ -505,26 +460,20 @@ $labels['foldertype'] = 'Type de répertoire';
$labels['personalfolder'] = 'Répertoire privé';
$labels['otherfolder'] = 'Répertoire d\'autres utilisateurs';
$labels['sharedfolder'] = 'Répertoire public';
-
$labels['sortby'] = 'Trier par';
$labels['sortasc'] = 'Tri ascendant';
$labels['sortdesc'] = 'Tri descendant';
$labels['undo'] = 'Annuler';
-
$labels['installedplugins'] = 'Extensions installées';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Version';
$labels['source'] = 'Source';
$labels['license'] = 'Licence';
$labels['support'] = 'Obtenir un support technique';
-
-// units
$labels['B'] = 'o';
$labels['KB'] = 'ko';
$labels['MB'] = 'Mo';
$labels['GB'] = 'Go';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Anglais';
$labels['westerneuropean'] = 'Europe de l\'Ouest';
@@ -543,5 +492,4 @@ $labels['vietnamese'] = 'Vietnamien';
$labels['japanese'] = 'Japonais';
$labels['korean'] = 'Coréen';
$labels['chinese'] = 'Chinois';
-
?>
diff --git a/program/localization/fr_FR/messages.inc b/program/localization/fr_FR/messages.inc
index a736e103e..fcf9eaf92 100644
--- a/program/localization/fr_FR/messages.inc
+++ b/program/localization/fr_FR/messages.inc
@@ -15,157 +15,159 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Une erreur est survenue !';
-$messages['loginfailed'] = 'L\'authentification a échoué';
-$messages['cookiesdisabled'] = 'Votre navigateur n\'accepte pas les cookies';
-$messages['sessionerror'] = 'Votre session est invalide ou a expiré';
-$messages['storageerror'] = 'Erreur de connexion au serveur IMAP';
+$messages['loginfailed'] = 'L\'authentification a échoué.';
+$messages['cookiesdisabled'] = 'Votre navigateur n\'accepte pas les cookies.';
+$messages['sessionerror'] = 'Votre session est invalide ou a expiré.';
+$messages['storageerror'] = 'Erreur de connexion au serveur IMAP.';
$messages['servererror'] = 'Erreur Serveur !';
-$messages['servererrormsg'] = 'Erreur du serveur: $msg';
-$messages['dberror'] = 'Erreur avec la base de donnée!';
+$messages['servererrormsg'] = 'Erreur du serveur : $msg';
+$messages['dberror'] = 'Erreur avec la base de données !';
$messages['requesttimedout'] = 'Délai de la requête expiré';
-$messages['errorreadonly'] = 'Impossible d\'effectuer cette opération. Le dossier est en lecture seule';
-$messages['errornoperm'] = 'Impossible d\'effectuer cette opération. Permission refusée';
+$messages['errorreadonly'] = 'Impossible d\'effectuer cette opération. Le dossier est en lecture seule.';
+$messages['errornoperm'] = 'Impossible d\'effectuer cette opération. Permission refusée.';
$messages['erroroverquota'] = 'Impossible d\'effectuer cette opération. Plus d\'espace libre.';
$messages['erroroverquotadelete'] = 'Plus d\'espace libre. Utilisez SHIFT+DEL pour supprimer un message.';
$messages['invalidrequest'] = 'Requête invalide ! Aucune donnée n\'a été sauvegardée.';
$messages['invalidhost'] = 'Nom du serveur invalide.';
$messages['nomessagesfound'] = 'Cette boîte aux lettres ne contient aucun message.';
-$messages['loggedout'] = 'Vous venez de vous déconnecter avec succès. Au revoir !';
+$messages['loggedout'] = 'Vous vous êtes correctement déconnecté. Au revoir !';
$messages['mailboxempty'] = 'La boîte aux lettres est vide.';
$messages['refreshing'] = 'Rafraîchissement en cours...';
-$messages['loading'] = 'Chargement...';
-$messages['uploading'] = 'Envoi du fichier...';
-$messages['uploadingmany'] = 'Envoi des fichiers ...';
-$messages['loadingdata'] = 'Chargement des données...';
+$messages['loading'] = 'Chargement en cours...';
+$messages['uploading'] = 'Transfert du fichier en cours...';
+$messages['uploadingmany'] = 'Transfert des fichiers en cours...';
+$messages['loadingdata'] = 'Chargement des données en cours...';
$messages['checkingmail'] = 'Vérification des nouveaux messages...';
-$messages['sendingmessage'] = 'Expédition du message...';
-$messages['messagesent'] = 'Message expédié.';
-$messages['savingmessage'] = 'Sauvegarde du message...';
-$messages['messagesaved'] = 'Message sauvegardé dans Brouillons';
-$messages['successfullysaved'] = 'Sauvegarde effectuée';
-$messages['addedsuccessfully'] = 'Contact ajouté dans le carnet d\'adresses';
-$messages['contactexists'] = 'Cette adresse courriel est utilisée par un autre contact';
+$messages['sendingmessage'] = 'Envoi du message en cours...';
+$messages['messagesent'] = 'Le message a bien été expédié.';
+$messages['savingmessage'] = 'Sauvegarde du message en cours...';
+$messages['messagesaved'] = 'Message sauvegardé dans Brouillons.';
+$messages['successfullysaved'] = 'La sauvegarde a bien été effectuée.';
+$messages['addedsuccessfully'] = 'Le contact a bien été ajouté dans le carnet d\'adresses.';
+$messages['contactexists'] = 'Cette adresse courriel est utilisée par un autre contact.';
$messages['contactnameexists'] = 'Il existe déjà un contact nommé ainsi.';
$messages['blockedimages'] = 'Les images distantes sont bloquées pour protéger votre vie privée.';
$messages['encryptedmessage'] = 'Désolé, ce message est chiffré et ne peut être affiché.';
-$messages['nocontactsfound'] = 'Aucun contact n\'a pu être trouvé';
+$messages['nocontactsfound'] = 'Aucun contact n\'a pu être trouvé.';
$messages['contactnotfound'] = 'Le contact demandé n\'a pas été trouvé.';
-$messages['contactsearchonly'] = 'Entrez un ou plusieurs mots clés pour trouver des contacts';
-$messages['sendingfailed'] = 'L\'envoi du message a échoué';
-$messages['senttooquickly'] = 'Vous devez attendre $sec s. pour envoyer le message';
-$messages['errorsavingsent'] = 'Une erreur est survenue pendant la sauvegarde du message envoyé';
-$messages['errorsaving'] = 'Une erreur a empêché la sauvegarde';
-$messages['errormoving'] = 'Impossible de déplacer le message';
-$messages['errorcopying'] = 'La copie de ce(s) message(s) a échoué.';
-$messages['errordeleting'] = 'Impossible d\'effacer le message';
-$messages['errormarking'] = 'Impossible de marquer le message';
+$messages['contactsearchonly'] = 'Entrez un ou plusieurs mots clés pour trouver des contacts.';
+$messages['sendingfailed'] = 'L\'envoi du message a échoué.';
+$messages['senttooquickly'] = 'Veuillez patienter $sec s. pour envoyer ce message.';
+$messages['errorsavingsent'] = 'Une erreur est apparue durant l\'enregistrement du message envoyé.';
+$messages['errorsaving'] = 'Une erreur est apparue durant l\'enregistrement.';
+$messages['errormoving'] = 'Impossible de déplacer le(s) message(s).';
+$messages['errorcopying'] = 'Impossible de copier le(s) message(s).';
+$messages['errordeleting'] = 'Impossible de supprimer le(s) message(s).';
+$messages['errormarking'] = 'Impossible de marquer le(s) message(s).';
$messages['deletecontactconfirm'] = 'Êtes-vous sûr de vouloir supprimer le(s) contact(s) sélectionné(s) ?';
$messages['deletegroupconfirm'] = 'Êtes-vous sûr de vouloir supprimer le groupe sélectionné ?';
$messages['deletemessagesconfirm'] = 'Êtes-vous sûr de vouloir supprimer le(s) message(s) sélectionné(s) ?';
$messages['deletefolderconfirm'] = 'Êtes-vous sûr de vouloir supprimer ce dossier ?';
$messages['purgefolderconfirm'] = 'Êtes-vous sûr de vouloir supprimer tous les messages de ce dossier ?';
-$messages['contactdeleting'] = 'Suppression de contact(s)...';
-$messages['groupdeleting'] = 'Suppression du groupe ...';
+$messages['contactdeleting'] = 'Suppression de contact(s) en cours...';
+$messages['groupdeleting'] = 'Suppression du groupe...';
$messages['folderdeleting'] = 'Suppression du dossier...';
$messages['foldermoving'] = 'Déplacement du dossier...';
$messages['foldersubscribing'] = 'Inscription du dossier...';
$messages['folderunsubscribing'] = 'Désinscription du dossier...';
-$messages['formincomplete'] = 'Le formulaire n\'a pas été entièrement rempli';
-$messages['noemailwarning'] = 'Veuillez spécifier un courriel valide';
-$messages['nonamewarning'] = 'Veuillez fournir un nom';
-$messages['nopagesizewarning'] = 'Veuillez indiquer une taille de page';
-$messages['nosenderwarning'] = 'Veuillez renseigner l\'adresse d\'expéditeur';
-$messages['norecipientwarning'] = 'Veuillez ajouter au moins un destinataire';
+$messages['formincomplete'] = 'Le formulaire n\'a pas été entièrement rempli.';
+$messages['noemailwarning'] = 'Veuillez spécifier un courriel valide.';
+$messages['nonamewarning'] = 'Veuillez fournir un nom.';
+$messages['nopagesizewarning'] = 'Veuillez indiquer une taille de page.';
+$messages['nosenderwarning'] = 'Veuillez renseigner l\'adresse d\'expéditeur.';
+$messages['norecipientwarning'] = 'Veuillez ajouter au moins un destinataire.';
$messages['nosubjectwarning'] = 'Le champ «Objet» est vide. Souhaitez-vous le renseigner maintenant ?';
$messages['nobodywarning'] = 'Envoyer ce message sans texte ?';
$messages['notsentwarning'] = 'Le message n\'a pas été envoyé. Voulez-vous abandonner ce message ?';
-$messages['noldapserver'] = 'Choisissez un serveur LDAP pour la recherche';
-$messages['nosearchname'] = 'Entrez un nom de contact ou un courriel';
-$messages['notuploadedwarning'] = 'Certaines pièces jointes sont en cours d\'expédition : attendez ou annulez l\'envoi.';
-$messages['searchsuccessful'] = '$nr messages trouvés';
+$messages['noldapserver'] = 'Choisissez un serveur LDAP pour la recherche.';
+$messages['nosearchname'] = 'Entrez un nom de contact ou un courriel.';
+$messages['notuploadedwarning'] = 'Toutes les pièces jointes n\'ont pas encore été transférées. Veuillez patienter ou annuler cette opération.';
+$messages['searchsuccessful'] = '$nr message(s) trouvé(s).';
$messages['contactsearchsuccessful'] = '$nr contact(s) trouvé(s).';
-$messages['searchnomatch'] = 'La recherche ne donne aucun résultat';
-$messages['searching'] = 'En cours de recherche...';
-$messages['checking'] = 'Vérification...';
-$messages['nospellerrors'] = 'Aucune faute trouvée';
-$messages['folderdeleted'] = 'Dossier effacé';
-$messages['foldersubscribed'] = 'Le dossier a bien été inscrit';
-$messages['folderunsubscribed'] = 'Le dossier a bien été désinscrit';
-$messages['folderpurged'] = 'Le dossier a bien été vidé';
-$messages['folderexpunged'] = 'Le dossier a bien été compacté';
-$messages['deletedsuccessfully'] = 'Supprimé(s) avec succès';
+$messages['searchnomatch'] = 'La recherche n\'a donné aucun résultat.';
+$messages['searching'] = 'Recherche en cours...';
+$messages['checking'] = 'Vérification en cours...';
+$messages['nospellerrors'] = 'Aucune faute d\'orthographe trouvée.';
+$messages['folderdeleted'] = 'Le dossier a bien été effacé.';
+$messages['foldersubscribed'] = 'Le dossier a bien été inscrit.';
+$messages['folderunsubscribed'] = 'Le dossier a bien été désinscrit.';
+$messages['folderpurged'] = 'Le dossier a bien été vidé.';
+$messages['folderexpunged'] = 'Le dossier a bien été compacté.';
+$messages['deletedsuccessfully'] = 'Correctement supprimé(s).';
$messages['converting'] = 'Suppression de la mise en forme...';
-$messages['messageopenerror'] = 'Impossible de charger le message depuis serveur';
+$messages['messageopenerror'] = 'Impossible de charger le message depuis serveur.';
$messages['fileuploaderror'] = 'Transfert du fichier échoué';
-$messages['filesizeerror'] = 'Le fichier transféré dépasse la taille maximale de $size';
-$messages['copysuccess'] = 'Succès de la copie des $nr adresses';
-$messages['copyerror'] = 'Ne peut pas copier les adresses';
-$messages['sourceisreadonly'] = 'Cette source d\'adresse est en lecture seule';
-$messages['errorsavingcontact'] = 'Ne peut pas enregistrer l\'adresse du contact';
-$messages['movingmessage'] = 'Déplacement du message...';
-$messages['copyingmessage'] = 'Copie du message ...';
-$messages['copyingcontact'] = 'Copie des contacts ...';
-$messages['deletingmessage'] = 'Suppression des messages...';
-$messages['markingmessage'] = 'Marquage des messages...';
-$messages['addingmember'] = 'Ajout des contacts dans le groupe ...';
-$messages['removingmember'] = 'Suppression des contacts du groupe ...';
-$messages['receiptsent'] = 'L\'accusé de réception a bien été envoyé';
-$messages['errorsendingreceipt'] = 'L\'accusé de réception n\'a pas pu être envoyé';
-$messages['deleteidentityconfirm'] = 'Voulez vous vraiment supprimer cette identités ?';
+$messages['filesizeerror'] = 'Le fichier transféré dépasse la taille maximale de $size.';
+$messages['copysuccess'] = '$nr contacts correctement copiés.';
+$messages['movesuccess'] = '$nr contacts correctement déplacés.';
+$messages['copyerror'] = 'Aucun contact n\'a pu être copié.';
+$messages['moveerror'] = 'Aucun contact n\'a pu être déplacé.';
+$messages['sourceisreadonly'] = 'Cette source d\'adresse est en lecture seule.';
+$messages['errorsavingcontact'] = 'Impossible de sauvegarder l\'adresse du contact.';
+$messages['movingmessage'] = 'Message(s) en cours de déplacement...';
+$messages['copyingmessage'] = 'Message(s) en cours de copie...';
+$messages['copyingcontact'] = 'Contact(s) en cours de copie...';
+$messages['movingcontact'] = 'Contact(s) en cours de déplacement...';
+$messages['deletingmessage'] = 'Message(s) en cours de suppression...';
+$messages['markingmessage'] = 'Message(s) en cours de marquage...';
+$messages['addingmember'] = 'Contact(s) en cours d\'ajout dans le groupe...';
+$messages['removingmember'] = 'Contact(s) en cours de suppression du groupe...';
+$messages['receiptsent'] = 'L\'accusé de réception a bien été envoyé.';
+$messages['errorsendingreceipt'] = 'Impossible d\'envoyer l\'accusé de réception.';
+$messages['deleteidentityconfirm'] = 'Voulez vous vraiment supprimer cette identité ?';
$messages['nodeletelastidentity'] = 'Vous ne pouvez pas effacer votre seule identité.';
-$messages['forbiddencharacter'] = 'Le nom du dossier contient un caractère interdit';
-$messages['selectimportfile'] = 'Veuillez sélectionner un fichier à envoyer';
-$messages['addresswriterror'] = 'Impossible d\'écrire dans le carnet d\'adresse sélectionné';
-$messages['contactaddedtogroup'] = 'Les contacts ont bien été ajoutés à ce groupe';
-$messages['contactremovedfromgroup'] = 'Les contacts ont bien été supprimés de ce groupe';
+$messages['forbiddencharacter'] = 'Le nom du dossier contient un caractère interdit.';
+$messages['selectimportfile'] = 'Veuillez sélectionner un fichier à transférer.';
+$messages['addresswriterror'] = 'Impossible d\'écrire dans le carnet d\'adresse sélectionné.';
+$messages['contactaddedtogroup'] = 'Les contacts ont bien été ajoutés à ce groupe.';
+$messages['contactremovedfromgroup'] = 'Les contacts ont bien été supprimés de ce groupe.';
$messages['nogroupassignmentschanged'] = 'Appartenance aux groupes inchangée.';
-$messages['importwait'] = 'Importation, veuillez patienter...';
-$messages['importformaterror'] = 'Echec de l\'import ! Le fichier n\'est pas un fichier d\'import de données valide.';
-$messages['importconfirm'] = '<b>$inserted contacts importés avec succès, $skipped entrées existantes ignorées</b>:<p><em>$names</em></p>';
+$messages['importwait'] = 'Import en cours, veuillez patienter...';
+$messages['importformaterror'] = 'L\'import a échoué ! Le fichier transféré n\'est pas un fichier d\'import de données valide.';
+$messages['importconfirm'] = '<b>Les $inserted contacts ont bien été importés</b>';
$messages['importconfirmskipped'] = '<b>$skipped entrée(s) déjà existante(s)</b>';
+$messages['importmessagesuccess'] = 'Importation de $nr messages avec succès';
+$messages['importmessageerror'] = 'L\'importation a échoué! Le fichier envoyé n\'est pas un message valide ou un fichier au format mailbox';
$messages['opnotpermitted'] = 'Cette opération n\'est pas permise !';
-$messages['nofromaddress'] = 'Il manque une adresse e-mail dans l\'identité sélectionnée';
-$messages['editorwarning'] = 'Passer à l\'éditeur texte seul causera la perte du formatage du texte. Voulez-vous continuer ?';
+$messages['nofromaddress'] = 'Courriel manquant dans l\'identité sélectionnée.';
+$messages['editorwarning'] = 'Passer à l\'éditeur de texte brut causera la perte du formatage du texte. Souhaitez-vous continuer ?';
$messages['httpreceivedencrypterror'] = 'Une erreur fatale de configuration est survenue. Veuillez contacter votre administrateur immédiatement. <b>Votre message n\'a pas pu être envoyé.</b>';
-$messages['smtpconnerror'] = 'Erreur SMTP ($code): Echec de la connexion au serveur';
-$messages['smtpautherror'] = 'Erreur SMTP ($code): Echec de l\'authentification';
-$messages['smtpfromerror'] = 'Erreur SMTP ($code): Impossible de définir l\'expéditeur "$from" ($msg)';
-$messages['smtptoerror'] = 'Erreur SMTP ($code): Impossible d\'ajouter le destinataire "$to" ($msg)';
-$messages['smtprecipientserror'] = 'Erreur SMTP: Impossible de lire la liste des destinataires';
-$messages['smtperror'] = 'Erreur SMTP: $msg';
-$messages['emailformaterror'] = 'Adresse email incorrecte: $email';
+$messages['smtpconnerror'] = 'Erreur SMTP ($code) : Échec de la connexion au serveur.';
+$messages['smtpautherror'] = 'Erreur SMTP ($code) : Échec de l\'authentification.';
+$messages['smtpfromerror'] = 'Erreur SMTP ($code) : Impossible de définir l\'expéditeur "$from" ($msg)';
+$messages['smtptoerror'] = 'Erreur SMTP ($code) : Impossible d\'ajouter le destinataire "$to" ($msg)';
+$messages['smtprecipientserror'] = 'Erreur SMTP : Impossible de lire la liste des destinataires.';
+$messages['smtperror'] = 'Erreur SMTP : $msg';
+$messages['emailformaterror'] = 'Courriel incorrect : $email';
$messages['toomanyrecipients'] = 'Trop de destinataires. Réduisez leur nombre à $max maximum.';
$messages['maxgroupmembersreached'] = 'Le nombre de membres du groupe dépasse le maximum de $max.';
-$messages['internalerror'] = 'Une erreur interne est survenue. Merci de réessayer';
-$messages['contactdelerror'] = 'Les contacts n\'ont pas pu être supprimés';
-$messages['contactdeleted'] = 'Les contacts ont bien été supprimés';
-$messages['contactrestoreerror'] = 'Impossible de restaurer les contacts supprimés.';
-$messages['contactrestored'] = 'Les contacts ont bien été restaurés.';
-$messages['groupdeleted'] = 'Le groupe a bien été supprimé';
-$messages['grouprenamed'] = 'Le groupe a bien été renommé';
-$messages['groupcreated'] = 'Le groupe a bien été créé';
+$messages['internalerror'] = 'Une erreur interne est apparue. Merci de ré-essayer.';
+$messages['contactdelerror'] = 'Impossible de supprimer le(s) contact(s).';
+$messages['contactdeleted'] = 'Contact(s) correctement supprimé(s).';
+$messages['contactrestoreerror'] = 'Impossible de restaurer le(s) contact(s) supprimé(s).';
+$messages['contactrestored'] = 'Contact(s) correctement restauré(s).';
+$messages['groupdeleted'] = 'Le groupe a bien été supprimé.';
+$messages['grouprenamed'] = 'Le groupe a bien été renommé.';
+$messages['groupcreated'] = 'Le groupe a bien été créé.';
$messages['savedsearchdeleted'] = 'La recherche enregistrée a bien été supprimée.';
$messages['savedsearchdeleteerror'] = 'Impossible de supprimer la recherche enregistrée.';
-$messages['savedsearchcreated'] = 'La recherche enregistrée a bien été crée.';
+$messages['savedsearchcreated'] = 'La recherche enregistrée a bien été créée.';
$messages['savedsearchcreateerror'] = 'Impossible de créer la recherche enregistrée.';
-$messages['messagedeleted'] = 'Les messages ont bien été supprimés';
-$messages['messagemoved'] = 'Les messages ont bien été déplacés';
-$messages['messagecopied'] = 'Les messages ont bien été copiés';
-$messages['messagemarked'] = 'Les messages ont bien été marqués';
-$messages['autocompletechars'] = 'Entrez au moins $min caractères pour l\'auto-complétion';
-$messages['autocompletemore'] = 'Plusieurs entrées trouvées. Tapez plus de caractères.';
-$messages['namecannotbeempty'] = 'Le nom ne peut pas être vide';
-$messages['nametoolong'] = 'Le nom est trop long';
-$messages['folderupdated'] = 'Le dossier a bien été mis à jour';
-$messages['foldercreated'] = 'Le dossier a bien été créé';
-$messages['invalidimageformat'] = 'Format d\'image invalide';
+$messages['messagedeleted'] = 'Message(s) correctement supprimé(s).';
+$messages['messagemoved'] = 'Message(s) correctement déplacé(s).';
+$messages['messagecopied'] = 'Message(s) correctement copié(s).';
+$messages['messagemarked'] = 'Message(s) correctement marqué(s).';
+$messages['autocompletechars'] = 'Entrez au moins $min caractères pour l\'auto-complétion.';
+$messages['autocompletemore'] = 'Plusieurs entrées trouvées. Veuillez taper plus de caractères.';
+$messages['namecannotbeempty'] = 'Le nom ne peut pas être vide.';
+$messages['nametoolong'] = 'Le nom est trop long.';
+$messages['folderupdated'] = 'Le dossier a bien été mis à jour.';
+$messages['foldercreated'] = 'Le dossier a bien été créé.';
+$messages['invalidimageformat'] = 'Format d\'image invalide.';
$messages['mispellingsfound'] = 'Des fautes d\'orthographe ont été détectées dans le message.';
$messages['parentnotwritable'] = 'Impossible de créer/déplacer le dossier dans le dossier parent sélectionné. Aucun droit d\'accès.';
$messages['messagetoobig'] = 'Le message est trop gros pour être traité.';
$messages['attachmentvalidationerror'] = 'ATTENTION ! Cette pièce jointe est suspecte car son type ne correspond pas au type déclaré dans ce message. Si vous ne faites pas confiance à l\'expéditeur, vous ne devriez pas l\'ouvrir dans le navigateur, car il peut contenir des contenus malveillants.<br/><br/><em>Attendu : $expected; trouvé : $detected</em>';
$messages['noscriptwarning'] = 'Atention : Ce service de webmail nécessite Javascript ! Pour pouvoir l\'utiliser, merci d\'activer Javascript dans les préférences de votre navigateur.';
-
?>
diff --git a/program/localization/fy_NL/labels.inc b/program/localization/fy_NL/labels.inc
index 5ffd906eb..dc1e57969 100644
--- a/program/localization/fy_NL/labels.inc
+++ b/program/localization/fy_NL/labels.inc
@@ -15,66 +15,32 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
-$labels['welcome'] = 'Welcome to $product';
$labels['username'] = 'Brûkersnamme';
$labels['password'] = 'Wachtwurd';
$labels['server'] = 'Server';
$labels['login'] = 'Ynlogge';
-
-// taskbar
$labels['logout'] = 'Ôfmelde';
$labels['mail'] = 'Mail';
$labels['settings'] = 'Ynstellingen';
$labels['addressbook'] = 'Adresboek';
-
-// mailbox names
-$labels['inbox'] = 'Inbox';
$labels['drafts'] = 'Konsepten';
$labels['sent'] = 'Stjoerd';
$labels['trash'] = 'Jiskefet';
-$labels['junk'] = 'Junk';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Ûnderwerp';
$labels['from'] = 'Fan';
-$labels['sender'] = 'Sender';
$labels['to'] = 'Oan';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Antwurd oan';
$labels['followupto'] = 'Oanslutend oan';
$labels['date'] = 'Datum';
-$labels['size'] = 'Size';
-$labels['priority'] = 'Priority';
$labels['organization'] = 'Organisaasje';
-$labels['readstatus'] = 'Read status';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'Mappen';
-$labels['messagesfromto'] = 'Messages $from to $to of $count';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
-$labels['messagenrof'] = 'Message $nr of $count';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'Kopieare';
$labels['move'] = 'Ferplaatse';
-$labels['moveto'] = 'Move to...';
$labels['download'] = 'Delhelje';
-$labels['open'] = 'Open';
$labels['showattachment'] = 'Toane';
-$labels['showanyway'] = 'Show it anyway';
-
-$labels['filename'] = 'File name';
$labels['filesize'] = 'Triemgrutte';
-
-$labels['addtoaddressbook'] = 'Add to address book';
-
-// weekdays short
$labels['sun'] = 'sne';
$labels['mon'] = 'moa';
$labels['tue'] = 'tii';
@@ -82,8 +48,6 @@ $labels['wed'] = 'woa';
$labels['thu'] = 'toa';
$labels['fri'] = 'fre';
$labels['sat'] = 'sno';
-
-// weekdays long
$labels['sunday'] = 'snein';
$labels['monday'] = 'moandei';
$labels['tuesday'] = 'tiisdei';
@@ -91,8 +55,6 @@ $labels['wednesday'] = 'woansdei';
$labels['thursday'] = 'tongersdei';
$labels['friday'] = 'freed';
$labels['saturday'] = 'sneon';
-
-// months short
$labels['jan'] = 'jan';
$labels['feb'] = 'feb';
$labels['mar'] = 'mrt';
@@ -105,8 +67,6 @@ $labels['sep'] = 'sep';
$labels['oct'] = 'okt';
$labels['nov'] = 'nov';
$labels['dec'] = 'des';
-
-// months long
$labels['longjan'] = 'jannewaris';
$labels['longfeb'] = 'febrewaris';
$labels['longmar'] = 'maart';
@@ -119,425 +79,8 @@ $labels['longsep'] = 'septimber';
$labels['longoct'] = 'oktober';
$labels['longnov'] = 'novimber';
$labels['longdec'] = 'desimber';
-
$labels['today'] = 'Hjoed';
-
-// toolbar buttons
$labels['refresh'] = 'Ferfarskje';
-$labels['checkmail'] = 'Check for new messages';
-$labels['compose'] = 'Compose';
-$labels['writenewmessage'] = 'Create a new message';
$labels['reply'] = 'Beäntwurdzje';
-$labels['replytomessage'] = 'Reply to sender';
-$labels['replytoallmessage'] = 'Reply to list or to sender and all recipients';
-$labels['replyall'] = 'Reply all';
-$labels['replylist'] = 'Reply list';
-$labels['forward'] = 'Forward';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
-$labels['forwardmessage'] = 'Forward the message';
-$labels['deletemessage'] = 'Delete message';
-$labels['movemessagetotrash'] = 'Move message to trash';
-$labels['printmessage'] = 'Print this message';
-$labels['previousmessage'] = 'Show previous message';
-$labels['firstmessage'] = 'Show first message';
-$labels['nextmessage'] = 'Show next message';
-$labels['lastmessage'] = 'Show last message';
-$labels['backtolist'] = 'Back to message list';
-$labels['viewsource'] = 'Show source';
-$labels['mark'] = 'Mark';
-$labels['markmessages'] = 'Mark messages';
-$labels['markread'] = 'As read';
-$labels['markunread'] = 'As unread';
-$labels['markflagged'] = 'As flagged';
-$labels['markunflagged'] = 'As unflagged';
-$labels['moreactions'] = 'More actions...';
-$labels['more'] = 'More';
-$labels['back'] = 'Back';
-$labels['options'] = 'Options';
-
-$labels['select'] = 'Select';
-$labels['all'] = 'All';
-$labels['none'] = 'None';
-$labels['currpage'] = 'Current page';
-$labels['unread'] = 'Unread';
-$labels['flagged'] = 'Flagged';
-$labels['unanswered'] = 'Unanswered';
-$labels['withattachment'] = 'With attachment';
-$labels['deleted'] = 'Deleted';
-$labels['undeleted'] = 'Not deleted';
-$labels['invert'] = 'Invert';
-$labels['filter'] = 'Filter';
-$labels['list'] = 'List';
-$labels['threads'] = 'Threads';
-$labels['expand-all'] = 'Expand All';
-$labels['expand-unread'] = 'Expand Unread';
-$labels['collapse-all'] = 'Collapse All';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
-$labels['fromto'] = 'From/To';
-$labels['flag'] = 'Flag';
-$labels['attachment'] = 'Attachment';
-$labels['nonesort'] = 'None';
-$labels['sentdate'] = 'Sent date';
-$labels['arrival'] = 'Arrival date';
-$labels['asc'] = 'ascending';
-$labels['desc'] = 'descending';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
-$labels['compact'] = 'Compact';
-$labels['empty'] = 'Empty';
-$labels['importmessages'] = 'Import messages';
-
-$labels['quota'] = 'Disk usage';
-$labels['unknown'] = 'unknown';
-$labels['unlimited'] = 'unlimited';
-
-$labels['quicksearch'] = 'Quick search';
-$labels['resetsearch'] = 'Reset search';
-$labels['searchmod'] = 'Search modifiers';
-$labels['msgtext'] = 'Entire message';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
-$labels['openinextwin'] = 'Open in new window';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
-$labels['editasnew'] = 'Edit as new';
-$labels['send'] = 'Send';
-$labels['sendmessage'] = 'Send message';
-$labels['savemessage'] = 'Save as draft';
-$labels['addattachment'] = 'Attach a file';
-$labels['charset'] = 'Charset';
-$labels['editortype'] = 'Editor type';
-$labels['returnreceipt'] = 'Return receipt';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
-$labels['checkspelling'] = 'Check spelling';
-$labels['resumeediting'] = 'Resume editing';
-$labels['revertto'] = 'Revert to';
-
-$labels['attach'] = 'Attach';
-$labels['attachments'] = 'Attachments';
-$labels['upload'] = 'Upload';
-$labels['uploadprogress'] = '$percent ($current from $total)';
-$labels['close'] = 'Close';
-$labels['messageoptions'] = 'Message options...';
-
-$labels['low'] = 'Low';
-$labels['lowest'] = 'Lowest';
-$labels['normal'] = 'Normal';
-$labels['high'] = 'High';
-$labels['highest'] = 'Highest';
-
-$labels['nosubject'] = '(no subject)';
-$labels['showimages'] = 'Display images';
-$labels['alwaysshow'] = 'Always show images from $sender';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
-$labels['htmltoggle'] = 'HTML';
-$labels['plaintoggle'] = 'Plain text';
-$labels['savesentmessagein'] = 'Save sent message in';
-$labels['dontsave'] = 'don\'t save';
-$labels['maxuploadsize'] = 'Maximum allowed file size is $size';
-
-$labels['addcc'] = 'Add Cc';
-$labels['addbcc'] = 'Add Bcc';
-$labels['addreplyto'] = 'Add Reply-To';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
-$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
-$labels['receiptread'] = 'Return Receipt (read)';
-$labels['yourmessage'] = 'This is a Return Receipt for your message';
-$labels['receiptnote'] = 'Note: This receipt only acknowledges that the message was displayed on the recipient\'s computer. There is no guarantee that the recipient has read or understood the message contents.';
-
-// address boook
-$labels['name'] = 'Display Name';
-$labels['firstname'] = 'First Name';
-$labels['surname'] = 'Last Name';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
-$labels['email'] = 'Email';
-$labels['phone'] = 'Phone';
-$labels['address'] = 'Address';
-$labels['street'] = 'Street';
-$labels['locality'] = 'City';
-$labels['zipcode'] = 'ZIP Code';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
-$labels['typemobile'] = 'Mobile';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
-$labels['addcontact'] = 'Add new contact';
-$labels['editcontact'] = 'Edit contact';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
-$labels['personalinfo'] = 'Personal information';
-
-$labels['edit'] = 'Edit';
-$labels['cancel'] = 'Cancel';
-$labels['save'] = 'Save';
-$labels['delete'] = 'Delete';
-$labels['rename'] = 'Rename';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
-$labels['newcontact'] = 'Create new contact card';
-$labels['deletecontact'] = 'Delete selected contacts';
-$labels['composeto'] = 'Compose mail to';
-$labels['contactsfromto'] = 'Contacts $from to $to of $count';
-$labels['print'] = 'Print';
-$labels['export'] = 'Export';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
-$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
-$labels['previouspage'] = 'Show previous page';
-$labels['firstpage'] = 'Show first page';
-$labels['nextpage'] = 'Show next page';
-$labels['lastpage'] = 'Show last page';
-
-$labels['group'] = 'Group';
-$labels['groups'] = 'Groups';
-$labels['listgroup'] = 'List group members';
-$labels['personaladrbook'] = 'Personal Addresses';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
-$labels['import'] = 'Import';
-$labels['importcontacts'] = 'Import contacts';
-$labels['importfromfile'] = 'Import from file:';
-$labels['importtarget'] = 'Add new contacts to address book:';
-$labels['importreplace'] = 'Replace the entire address book';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
-$labels['done'] = 'Done';
-
-// settings
-$labels['settingsfor'] = 'Settings for';
-$labels['about'] = 'About';
-$labels['preferences'] = 'Preferences';
-$labels['userpreferences'] = 'User preferences';
-$labels['editpreferences'] = 'Edit user preferences';
-
-$labels['identities'] = 'Identities';
-$labels['manageidentities'] = 'Manage identities for this account';
-$labels['newidentity'] = 'New identity';
-
-$labels['newitem'] = 'New item';
-$labels['edititem'] = 'Edit item';
-
-$labels['preferhtml'] = 'Display HTML';
-$labels['defaultcharset'] = 'Default Character Set';
-$labels['htmlmessage'] = 'HTML Message';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
-$labels['prettydate'] = 'Pretty dates';
-$labels['setdefault'] = 'Set default';
-$labels['autodetect'] = 'Auto';
-$labels['language'] = 'Language';
-$labels['timezone'] = 'Time zone';
-$labels['pagesize'] = 'Rows per page';
-$labels['signature'] = 'Signature';
-$labels['dstactive'] = 'Daylight saving time';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
-$labels['htmleditor'] = 'Compose HTML messages';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
-$labels['htmlsignature'] = 'HTML signature';
-$labels['showemail'] = 'Show email address with display name';
-$labels['previewpane'] = 'Show preview pane';
-$labels['skin'] = 'Interface skin';
-$labels['logoutclear'] = 'Clear Trash on logout';
-$labels['logoutcompact'] = 'Compact Inbox on logout';
-$labels['uisettings'] = 'User Interface';
-$labels['serversettings'] = 'Server Settings';
-$labels['mailboxview'] = 'Mailbox View';
-$labels['mdnrequests'] = 'On request for return receipt';
-$labels['askuser'] = 'ask me';
-$labels['autosend'] = 'send receipt';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
-$labels['ignore'] = 'ignore';
-$labels['readwhendeleted'] = 'Mark the message as read on delete';
-$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
-$labels['skipdeleted'] = 'Do not show deleted messages';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
-$labels['always'] = 'always';
-$labels['showinlineimages'] = 'Display attached images below the message';
-$labels['autosavedraft'] = 'Automatically save draft';
-$labels['everynminutes'] = 'every $n minute(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
-$labels['never'] = 'never';
-$labels['immediately'] = 'immediately';
-$labels['messagesdisplaying'] = 'Displaying Messages';
-$labels['messagescomposition'] = 'Composing Messages';
-$labels['mimeparamfolding'] = 'Attachment names';
-$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
-$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (other)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
-$labels['advancedoptions'] = 'Advanced options';
-$labels['focusonnewmessage'] = 'Focus browser window on new message';
-$labels['checkallfolders'] = 'Check all folders for new messages';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
-$labels['section'] = 'Section';
-$labels['maintenance'] = 'Maintenance';
-$labels['newmessage'] = 'New Message';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
-$labels['autoaddsignature'] = 'Automatically add signature';
-$labels['newmessageonly'] = 'new message only';
-$labels['replyandforwardonly'] = 'replies and forwards only';
-$labels['insertsignature'] = 'Insert signature';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
-$labels['folder'] = 'Folder';
$labels['folders'] = 'Mappen';
-$labels['foldername'] = 'Folder name';
-$labels['subscribed'] = 'Subscribed';
-$labels['messagecount'] = 'Messages';
-$labels['create'] = 'Create';
-$labels['createfolder'] = 'Create new folder';
-$labels['managefolders'] = 'Manage folders';
-$labels['specialfolders'] = 'Special Folders';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
-$labels['sortby'] = 'Sort by';
-$labels['sortasc'] = 'Sort ascending';
-$labels['sortdesc'] = 'Sort descending';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
-$labels['B'] = 'B';
-$labels['KB'] = 'KB';
-$labels['MB'] = 'MB';
-$labels['GB'] = 'GB';
-
-// character sets
-$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/fy_NL/messages.inc b/program/localization/fy_NL/messages.inc
index 16f4c67bf..da4e39679 100644
--- a/program/localization/fy_NL/messages.inc
+++ b/program/localization/fy_NL/messages.inc
@@ -15,159 +15,4 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
-$messages['loginfailed'] = 'Login failed.';
-$messages['cookiesdisabled'] = 'Your browser does not accept cookies.';
-$messages['sessionerror'] = 'Your session is invalid or expired.';
-$messages['storageerror'] = 'Connection to storage server failed.';
-$messages['servererror'] = 'Server Error!';
-$messages['servererrormsg'] = 'Server Error: $msg';
-$messages['dberror'] = 'Database Error!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Invalid request! No data was saved.';
-$messages['invalidhost'] = 'Invalid server name.';
-$messages['nomessagesfound'] = 'No messages found in this mailbox.';
-$messages['loggedout'] = 'You have successfully terminated the session. Good bye!';
-$messages['mailboxempty'] = 'Mailbox is empty.';
-$messages['refreshing'] = 'Refreshing...';
-$messages['loading'] = 'Loading...';
-$messages['uploading'] = 'Uploading file...';
-$messages['uploadingmany'] = 'Uploading files...';
-$messages['loadingdata'] = 'Loading data...';
-$messages['checkingmail'] = 'Checking for new messages...';
-$messages['sendingmessage'] = 'Sending message...';
-$messages['messagesent'] = 'Message sent successfully.';
-$messages['savingmessage'] = 'Saving message...';
-$messages['messagesaved'] = 'Message saved to Drafts.';
-$messages['successfullysaved'] = 'Successfully saved.';
-$messages['addedsuccessfully'] = 'Contact added successfully to address book.';
-$messages['contactexists'] = 'A contact with the same e-mail address already exists.';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
-$messages['blockedimages'] = 'To protect your privacy, remote images are blocked in this message.';
-$messages['encryptedmessage'] = 'This is an encrypted message and can not be displayed. Sorry!';
-$messages['nocontactsfound'] = 'No contacts found.';
-$messages['contactnotfound'] = 'The requested contact was not found.';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
-$messages['sendingfailed'] = 'Failed to send message.';
-$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
-$messages['errorsavingsent'] = 'An error occured while saving sent message.';
-$messages['errorsaving'] = 'An error occured while saving.';
-$messages['errormoving'] = 'Could not move the message(s).';
-$messages['errorcopying'] = 'Could not copy the message(s).';
-$messages['errordeleting'] = 'Could not delete the message(s).';
-$messages['errormarking'] = 'Could not mark the message(s).';
-$messages['deletecontactconfirm'] = 'Do you really want to delete selected contact(s)?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
-$messages['deletemessagesconfirm'] = 'Do you really want to delete selected message(s)?';
-$messages['deletefolderconfirm'] = 'Do you really want to delete this folder?';
-$messages['purgefolderconfirm'] = 'Do you really want to delete all messages in this folder?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
-$messages['folderdeleting'] = 'Deleting folder...';
-$messages['foldermoving'] = 'Moving folder...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
-$messages['formincomplete'] = 'The form was not completely filled out.';
-$messages['noemailwarning'] = 'Please enter a valid email address.';
-$messages['nonamewarning'] = 'Please enter a name.';
-$messages['nopagesizewarning'] = 'Please enter a page size.';
-$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
-$messages['norecipientwarning'] = 'Please enter at least one recipient.';
-$messages['nosubjectwarning'] = 'The "Subject" field is empty. Would you like to enter one now?';
-$messages['nobodywarning'] = 'Send this message without text?';
-$messages['notsentwarning'] = 'Message has not been sent. Do you want to discard your message?';
-$messages['noldapserver'] = 'Please select an ldap server to search.';
-$messages['nosearchname'] = 'Please enter a contact name or email address.';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
-$messages['searchsuccessful'] = '$nr messages found.';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
-$messages['searchnomatch'] = 'Search returned no matches.';
-$messages['searching'] = 'Searching...';
-$messages['checking'] = 'Checking...';
-$messages['nospellerrors'] = 'No spelling errors found.';
-$messages['folderdeleted'] = 'Folder successfully deleted.';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
-$messages['deletedsuccessfully'] = 'Successfully deleted.';
-$messages['converting'] = 'Removing formatting...';
-$messages['messageopenerror'] = 'Could not load message from server.';
-$messages['fileuploaderror'] = 'File upload failed.';
-$messages['filesizeerror'] = 'The uploaded file exceeds the maximum size of $size.';
-$messages['copysuccess'] = 'Successfully copied $nr addresses.';
-$messages['copyerror'] = 'Could not copy any addresses.';
-$messages['sourceisreadonly'] = 'This address source is read only.';
-$messages['errorsavingcontact'] = 'Could not save the contact address.';
-$messages['movingmessage'] = 'Moving message(s)...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
-$messages['receiptsent'] = 'Successfully sent a read receipt.';
-$messages['errorsendingreceipt'] = 'Could not send the receipt.';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
-$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
-$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
-$messages['selectimportfile'] = 'Please select a file to upload.';
-$messages['addresswriterror'] = 'The selected address book is not writeable.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
-$messages['importwait'] = 'Importing, please wait...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operation not permitted!';
-$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/ga_IE/labels.inc b/program/localization/ga_IE/labels.inc
index 9fffaf42a..dc33d008d 100755..100644
--- a/program/localization/ga_IE/labels.inc
+++ b/program/localization/ga_IE/labels.inc
@@ -15,66 +15,40 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Fáilte go $product';
$labels['username'] = 'Úsáideoir';
$labels['password'] = 'Pasfhocal';
$labels['server'] = 'Freastalaí';
$labels['login'] = 'Logáil isteach';
-
-// taskbar
$labels['logout'] = 'Logáil amach';
$labels['mail'] = 'Postas';
$labels['settings'] = 'Socruithe Pearsanta';
$labels['addressbook'] = 'Leabhair Seoltaí';
-
-// mailbox names
$labels['inbox'] = 'Isteach';
$labels['drafts'] = 'Dréachtaí';
$labels['sent'] = 'Amach';
$labels['trash'] = 'Bosca bruscair';
$labels['junk'] = 'Dramhaíl';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Ãbhair';
$labels['from'] = 'Seolaí';
-$labels['sender'] = 'Sender';
$labels['to'] = 'Faighteoir';
$labels['cc'] = 'Cóipeáil';
$labels['bcc'] = 'Cóip cheilte';
$labels['replyto'] = 'Freagair go';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Dáta';
$labels['size'] = 'Méid';
$labels['priority'] = 'Tosaíocht';
$labels['organization'] = 'Eagraíocht';
-$labels['readstatus'] = 'Read status';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'Fillteán';
$labels['messagesfromto'] = 'Teachtaireachta as $from go $to as $count';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = 'Teachtaireacht $nr as $count';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'Cóipeáil';
$labels['move'] = 'Bog';
$labels['moveto'] = 'bog go...';
$labels['download'] = 'síos-luchtú';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'Comhad';
$labels['filesize'] = 'Toirt';
-
$labels['addtoaddressbook'] = 'Sábháil i mo leabhair seoltaí';
-
-// weekdays short
$labels['sun'] = 'Do';
$labels['mon'] = 'Lu';
$labels['tue'] = 'Mh';
@@ -82,8 +56,6 @@ $labels['wed'] = 'Ch';
$labels['thu'] = 'Dé';
$labels['fri'] = 'Ao';
$labels['sat'] = 'Sa';
-
-// weekdays long
$labels['sunday'] = 'Domhnach';
$labels['monday'] = 'An Luan';
$labels['tuesday'] = 'An Mháirt';
@@ -91,8 +63,6 @@ $labels['wednesday'] = 'An Chéadaoin';
$labels['thursday'] = 'An Déardaoin';
$labels['friday'] = 'Aoine';
$labels['saturday'] = 'An Satharn';
-
-// months short
$labels['jan'] = 'Ean';
$labels['feb'] = 'Fea';
$labels['mar'] = 'Már';
@@ -101,12 +71,8 @@ $labels['may'] = 'Bea';
$labels['jun'] = 'Mei';
$labels['jul'] = 'Iúi';
$labels['aug'] = 'Lún';
-$labels['sep'] = 'Sep';
-$labels['oct'] = 'Oct';
$labels['nov'] = 'Sam';
$labels['dec'] = 'Nol';
-
-// months long
$labels['longjan'] = 'Eanáir';
$labels['longfeb'] = 'Feabhra';
$labels['longmar'] = 'Márta';
@@ -119,25 +85,15 @@ $labels['longsep'] = 'Meán Fómhair';
$labels['longoct'] = 'Deireadh Fómhair';
$labels['longnov'] = 'Samhain';
$labels['longdec'] = 'Nollag';
-
$labels['today'] = 'Inniu';
-
-// toolbar buttons
-$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'Seiceáil chun teachtaireacht nua';
$labels['compose'] = 'Scríobh teachtaireacht';
$labels['writenewmessage'] = 'Scríobh teachtaireacht nua';
-$labels['reply'] = 'Reply';
$labels['replytomessage'] = 'Scríobh freagra chun an seolaí';
$labels['replytoallmessage'] = 'Scríobh freagra chun an seolaí agus na faighteoir';
$labels['replyall'] = 'Freagra gach';
-$labels['replylist'] = 'Reply list';
-$labels['forward'] = 'Forward';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'Seol ar aghaidh an teachtaireacht';
$labels['deletemessage'] = 'Chuir an teachtaireacht i mo bosca bruscair';
-$labels['movemessagetotrash'] = 'Move message to trash';
$labels['printmessage'] = 'Priontáil an teachtaireacht seo';
$labels['previousmessage'] = 'Taispeáin an teachtaireacht roimhe seo';
$labels['firstmessage'] = 'Taispeáin an cead teachtaireacht';
@@ -145,399 +101,92 @@ $labels['nextmessage'] = 'Taispeáin an teachtaireacht ina dhiaidh sin';
$labels['lastmessage'] = 'Taispeáin an teachtaireacht deireanach';
$labels['backtolist'] = 'Téigh ar ais go dtí an liosta teachtaireachta';
$labels['viewsource'] = 'Éiriú bunchód';
-$labels['mark'] = 'Mark';
-$labels['markmessages'] = 'Mark messages';
-$labels['markread'] = 'As read';
-$labels['markunread'] = 'As unread';
-$labels['markflagged'] = 'As flagged';
-$labels['markunflagged'] = 'As unflagged';
-$labels['moreactions'] = 'More actions...';
-$labels['more'] = 'More';
-$labels['back'] = 'Back';
-$labels['options'] = 'Options';
-
$labels['select'] = 'Togh';
$labels['all'] = 'An uile';
$labels['none'] = 'Aon cheann';
-$labels['currpage'] = 'Current page';
$labels['unread'] = 'Na rudaí nach bhuil corraithe';
-$labels['flagged'] = 'Flagged';
-$labels['unanswered'] = 'Unanswered';
-$labels['withattachment'] = 'With attachment';
-$labels['deleted'] = 'Deleted';
-$labels['undeleted'] = 'Not deleted';
-$labels['invert'] = 'Invert';
-$labels['filter'] = 'Filter';
-$labels['list'] = 'List';
-$labels['threads'] = 'Threads';
-$labels['expand-all'] = 'Expand All';
-$labels['expand-unread'] = 'Expand Unread';
-$labels['collapse-all'] = 'Collapse All';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
-$labels['fromto'] = 'From/To';
-$labels['flag'] = 'Flag';
-$labels['attachment'] = 'Attachment';
$labels['nonesort'] = 'Aon cheann';
-$labels['sentdate'] = 'Sent date';
-$labels['arrival'] = 'Arrival date';
-$labels['asc'] = 'ascending';
-$labels['desc'] = 'descending';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'Comhbhrúigh';
$labels['empty'] = 'Folmhaigh';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Toilleadh diosca atá athláimhe';
$labels['unknown'] = 'gan aithne';
$labels['unlimited'] = 'gan teorainn';
-
$labels['quicksearch'] = 'Mearcuardaigh';
$labels['resetsearch'] = 'Athshocraigh an cuardach';
-$labels['searchmod'] = 'Search modifiers';
-$labels['msgtext'] = 'Entire message';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
-$labels['openinextwin'] = 'Open in new window';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
-$labels['editasnew'] = 'Edit as new';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'Seol mo teachtaireacht láithreach bonn';
$labels['savemessage'] = 'Sábháil an dréachta seo';
$labels['addattachment'] = 'Suimigh Iatán';
$labels['charset'] = 'Foireann carachtar';
$labels['editortype'] = 'Sort eagarthóir';
$labels['returnreceipt'] = 'Admháil léite';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'Fiosrú ar mo litriú';
$labels['resumeediting'] = 'Athdhúisigh eagarthóireacht';
$labels['revertto'] = 'Filleadh ar';
-
-$labels['attach'] = 'Attach';
$labels['attachments'] = 'Iatání';
$labels['upload'] = 'Aistriú suas';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'Dún';
-$labels['messageoptions'] = 'Message options...';
-
$labels['low'] = 'Ãseal';
$labels['lowest'] = 'Is Ãsle';
$labels['normal'] = 'Gnách';
$labels['high'] = 'Ard';
$labels['highest'] = 'Is Airde';
-
$labels['nosubject'] = '(Níl aon Ãbhair)';
$labels['showimages'] = 'Taispeáin na híomhánna';
-$labels['alwaysshow'] = 'Always show images from $sender';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Téacs amháin';
-$labels['savesentmessagein'] = 'Save sent message in';
-$labels['dontsave'] = 'don\'t save';
-$labels['maxuploadsize'] = 'Maximum allowed file size is $size';
-
-$labels['addcc'] = 'Add Cc';
-$labels['addbcc'] = 'Add Bcc';
-$labels['addreplyto'] = 'Add Reply-To';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
-$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
-$labels['receiptread'] = 'Return Receipt (read)';
-$labels['yourmessage'] = 'This is a Return Receipt for your message';
-$labels['receiptnote'] = 'Note: This receipt only acknowledges that the message was displayed on the recipient\'s computer. There is no guarantee that the recipient has read or understood the message contents.';
-
-// address boook
$labels['name'] = 'Leasainm';
$labels['firstname'] = 'Ainm baiste';
$labels['surname'] = 'Sloinne';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'Ríomhphost';
-$labels['phone'] = 'Phone';
-$labels['address'] = 'Address';
-$labels['street'] = 'Street';
-$labels['locality'] = 'City';
-$labels['zipcode'] = 'ZIP Code';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
-$labels['typemobile'] = 'Mobile';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'Sábháil duine nua';
$labels['editcontact'] = 'Chuir chara in eagar';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
-$labels['personalinfo'] = 'Personal information';
-
$labels['edit'] = 'Athraigh';
$labels['cancel'] = 'Cealaigh';
$labels['save'] = 'Sábháil';
$labels['delete'] = 'Scrios';
-$labels['rename'] = 'Rename';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'Scríobh carta teagmháil nua';
$labels['deletecontact'] = 'Scrios na daoine seo';
$labels['composeto'] = 'Scríobh teachtaireacht go';
$labels['contactsfromto'] = 'Daoine as $from to $to as $count';
$labels['print'] = 'Priontáil';
$labels['export'] = 'Easportáil';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
-$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'Taispeáin an foireann roimhe seo';
$labels['firstpage'] = 'Taispeáin an céad foireann';
$labels['nextpage'] = 'Taispeáin an foireann ina dhiaidh sin';
$labels['lastpage'] = 'Taispeáin an foireann deireanach';
-
-$labels['group'] = 'Group';
$labels['groups'] = 'Grúpaí';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Seoltaí Pearsanta';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
-$labels['import'] = 'Import';
-$labels['importcontacts'] = 'Import contacts';
-$labels['importfromfile'] = 'Import from file:';
-$labels['importtarget'] = 'Add new contacts to address book:';
-$labels['importreplace'] = 'Replace the entire address book';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
-$labels['done'] = 'Done';
-
-// settings
$labels['settingsfor'] = 'Socruithe chun';
-$labels['about'] = 'About';
$labels['preferences'] = 'Tosaíocht';
$labels['userpreferences'] = 'Tosaíocht Pearsanta';
$labels['editpreferences'] = 'Athraigh tosaíocht pearsanta';
-
$labels['identities'] = 'Céannachtaí';
$labels['manageidentities'] = 'Stiúir céannachtaí i cuntas seo';
$labels['newidentity'] = 'Céannacht nua';
-
$labels['newitem'] = 'Mír nua';
$labels['edititem'] = 'Athraigh mhír';
-
$labels['preferhtml'] = 'Taispeáin an HTML';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'Teachtaireacht HTML';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'Dátaí Dheas';
$labels['setdefault'] = 'Socraigh an réamhshocraithe';
-$labels['autodetect'] = 'Auto';
$labels['language'] = 'Teanga';
$labels['timezone'] = 'Crios ama';
$labels['pagesize'] = 'Rónna in aghaidh gach leathanach';
$labels['signature'] = 'Mana clabhsúir';
$labels['dstactive'] = 'Laethúil um shamhradh';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'Scríobh teachtaireachta HTML';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'Mana clabhsúir HTML';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Taispeáin an pána réamhamharc';
-$labels['skin'] = 'Interface skin';
-$labels['logoutclear'] = 'Clear Trash on logout';
-$labels['logoutcompact'] = 'Compact Inbox on logout';
-$labels['uisettings'] = 'User Interface';
-$labels['serversettings'] = 'Server Settings';
-$labels['mailboxview'] = 'Mailbox View';
-$labels['mdnrequests'] = 'On request for return receipt';
-$labels['askuser'] = 'ask me';
-$labels['autosend'] = 'send receipt';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
-$labels['ignore'] = 'ignore';
-$labels['readwhendeleted'] = 'Mark the message as read on delete';
-$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
-$labels['skipdeleted'] = 'Do not show deleted messages';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
-$labels['always'] = 'always';
-$labels['showinlineimages'] = 'Display attached images below the message';
$labels['autosavedraft'] = 'Sábháil dréachta go huathoibríoch';
-$labels['everynminutes'] = 'every $n minute(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'riamh';
-$labels['immediately'] = 'immediately';
-$labels['messagesdisplaying'] = 'Displaying Messages';
-$labels['messagescomposition'] = 'Composing Messages';
-$labels['mimeparamfolding'] = 'Attachment names';
-$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
-$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (other)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
-$labels['advancedoptions'] = 'Advanced options';
-$labels['focusonnewmessage'] = 'Focus browser window on new message';
-$labels['checkallfolders'] = 'Check all folders for new messages';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
-$labels['section'] = 'Section';
-$labels['maintenance'] = 'Maintenance';
-$labels['newmessage'] = 'New Message';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
-$labels['autoaddsignature'] = 'Automatically add signature';
-$labels['newmessageonly'] = 'new message only';
-$labels['replyandforwardonly'] = 'replies and forwards only';
-$labels['insertsignature'] = 'Insert signature';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'Fillteán';
$labels['folders'] = 'Fillteán';
$labels['foldername'] = 'Ainm fillteán';
$labels['subscribed'] = 'Síntiú';
-$labels['messagecount'] = 'Messages';
$labels['create'] = 'Cruthaigh';
$labels['createfolder'] = 'Cruthaigh fillteán nua';
$labels['managefolders'] = 'Stiúir na fillteán';
-$labels['specialfolders'] = 'Special Folders';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'Sórtáil trí';
$labels['sortasc'] = 'Sórtáil in ord méadaitheach';
$labels['sortdesc'] = 'Sórtáil in ord neartaitheach';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
-$labels['B'] = 'B';
-$labels['KB'] = 'KB';
-$labels['MB'] = 'MB';
-$labels['GB'] = 'GB';
-
-// character sets
-$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/ga_IE/messages.inc b/program/localization/ga_IE/messages.inc
index b837c9d16..b52fbe657 100755..100644
--- a/program/localization/ga_IE/messages.inc
+++ b/program/localization/ga_IE/messages.inc
@@ -15,30 +15,14 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'Theip an iarraidh chun logáil tú isteach';
$messages['cookiesdisabled'] = 'Níor glac do sracléitheoir an fianán seisiúin';
$messages['sessionerror'] = 'Tá an seisiúin neamhbhailí nó as feidhm';
$messages['storageerror'] = 'Theip an iarraidh chun nasc go dtí an freastalaí Prótacal Rochtana Teachtaireachtaí Idirlín (IMAP)';
-$messages['servererror'] = 'Server Error!';
-$messages['servererrormsg'] = 'Server Error: $msg';
-$messages['dberror'] = 'Database Error!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Invalid request! No data was saved.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'Ní bhfuair mé aon teachtaireacht i bosca postas seo';
$messages['loggedout'] = 'D\'éirigh tú logáil amach. Slán Leat!';
$messages['mailboxempty'] = 'Tá an bosca postas folamh';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'Fan nóiméad, ag lódáil...';
-$messages['uploading'] = 'Uploading file...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'Ag lódáil sonraí...';
$messages['checkingmail'] = 'Ag seiceáil chun teachtaireacht nua...';
$messages['sendingmessage'] = 'Ag seol mo teachtaireacht láithreach bonn...';
@@ -48,129 +32,38 @@ $messages['messagesaved'] = 'Sábháil mé an teachtaireacht i dréachtaí';
$messages['successfullysaved'] = 'D\'éirigh mé agus sábháil mé';
$messages['addedsuccessfully'] = 'D\'éirigh mé agus shábháil mé duine nua go dtí an Leabhair Seoltaí';
$messages['contactexists'] = 'Tá duine i do Leabhair Seoltaí agus tá an seoladh ríomhphost seo aige';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'Chun do príobháide a cosain, choiscinn na híomhánna san teachtaireacht seo';
$messages['encryptedmessage'] = 'Tá an teachtaireacht seo i criptiúchán, Níl an cumas agam chun é a tionscail';
$messages['nocontactsfound'] = 'Ní raibh aon buine san Leabhair Seoltaí seo';
$messages['contactnotfound'] = 'Ní bhfuair mé an duine seo';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'Theip an iarraidh chun an teachtaireacht a seol';
-$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
-$messages['errorsavingsent'] = 'An error occured while saving sent message.';
-$messages['errorsaving'] = 'Theip mé agus ní shábháil';
$messages['errormoving'] = 'Theip mé agus ní bog an teachtaireacht';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'Theip mé agus níor scrios me an teachtaireacht';
-$messages['errormarking'] = 'Could not mark the message(s).';
$messages['deletecontactconfirm'] = 'Ar mhaith leat scrios na daoine seo?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'Ar mhaith leat scrios na teachtaireacht seo?';
$messages['deletefolderconfirm'] = 'Ar mhaith leat scrios an fillteán seo?';
$messages['purgefolderconfirm'] = 'Ar mhaith leat scrios gach teachtaireacht san fillteán seo?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
-$messages['folderdeleting'] = 'Deleting folder...';
-$messages['foldermoving'] = 'Moving folder...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'Níor chríochnaigh tú an foirm';
$messages['noemailwarning'] = 'Abair liom seoladh ríomhphost nach bfhuil neamhbhaillí';
$messages['nonamewarning'] = 'Abair liom do ainm';
$messages['nopagesizewarning'] = 'Abair liom saghas leathanaigh';
-$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
$messages['norecipientwarning'] = 'Abair liom faighteoir amhain ar a laghad';
$messages['nosubjectwarning'] = 'Níl aon ábhair ar an teachtaireacht, ba mhaith tú déarfaidh mé ábair?';
$messages['nobodywarning'] = 'Níl aon teacs san teachtaireacht, ba mhaith tú déarfaidh mé teachtaireacht ar bith?';
$messages['notsentwarning'] = 'Theip an iarraidh chun an teachtaireacht a seo. ba mhaith tú scrios do teachtaireacht?';
$messages['noldapserver'] = 'Abair liom eolaire LDAP chun é a cuardaigh';
$messages['nosearchname'] = 'Abair liom ainm duine nó seoladh ríomhphost';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = 'Fuair mé $n teachtaireacht';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'Ní bhfuair mé aon rud as an ceist seo';
$messages['searching'] = 'Ag tástáil...';
$messages['checking'] = 'Bím ag dhéanamh na mhaoirseachtí...';
$messages['nospellerrors'] = 'Ní bhfuair mé aon earráidí i teachtaireacht seo';
$messages['folderdeleted'] = 'D\'éirigh mé, Scrios mé an fillteán';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'D\'éirigh mé, Scrios mé';
$messages['converting'] = 'Scrios mé formáidithe as an teachtaireacht seo';
$messages['messageopenerror'] = 'Theip orm chun an teachtaireacht seo a tarrtháil as an freastalaí';
$messages['fileuploaderror'] = 'Theip an suas-luchtú';
$messages['filesizeerror'] = 'Beigh an comhad ró-mhor. Is ea $size uas-saghas chun admháil léite';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Tá an foinse seolaigh seo inléite amháin';
$messages['errorsavingcontact'] = 'Theip mé, Níl an cumas agam an seolagh seo a sábháil';
-$messages['movingmessage'] = 'Moving message(s)...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
-$messages['receiptsent'] = 'Successfully sent a read receipt.';
-$messages['errorsendingreceipt'] = 'Could not send the receipt.';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
-$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
-$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
-$messages['selectimportfile'] = 'Please select a file to upload.';
-$messages['addresswriterror'] = 'The selected address book is not writeable.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
-$messages['importwait'] = 'Importing, please wait...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operation not permitted!';
-$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/gl_ES/labels.inc b/program/localization/gl_ES/labels.inc
index c624c462e..899f35c5e 100644
--- a/program/localization/gl_ES/labels.inc
+++ b/program/localization/gl_ES/labels.inc
@@ -15,66 +15,50 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
-$labels['welcome'] = 'Benvido a $product';
-$labels['username'] = 'Nome de usuario';
+$labels['welcome'] = 'Dámosche a benvida a $product';
+$labels['username'] = 'Nome de utente';
$labels['password'] = 'Contrasinal';
$labels['server'] = 'Servidor';
$labels['login'] = 'Acceder';
-
-// taskbar
$labels['logout'] = 'Saír';
$labels['mail'] = 'Caixa de entrada';
$labels['settings'] = 'Axustes persoais';
-$labels['addressbook'] = 'Caderno de enderezos';
-
-// mailbox names
+$labels['addressbook'] = 'Axenda de enderezos';
$labels['inbox'] = 'Caixa de entrada';
$labels['drafts'] = 'Borradores';
$labels['sent'] = 'Enviados';
-$labels['trash'] = 'Cubo do lixo';
+$labels['trash'] = 'Lixo';
$labels['junk'] = 'Correo lixo';
-$labels['show_real_foldernames'] = 'Amosar nomes reáis para cartafois especiáis';
-
-// message listing
+$labels['show_real_foldernames'] = 'Amosar nomes reais para cartafois especiais';
$labels['subject'] = 'Asunto';
$labels['from'] = 'Remitente';
$labels['sender'] = 'Remitente';
-$labels['to'] = 'Destinatario';
+$labels['to'] = 'Destinatario(a)';
$labels['cc'] = 'Copia (Cc)';
$labels['bcc'] = 'Copia oculta (Cco)';
-$labels['replyto'] = 'Respostar a (Reply-To)';
-$labels['followupto'] = 'Respostar a todos (Followup-To)';
+$labels['replyto'] = 'Responder a';
+$labels['followupto'] = 'Responder a todos';
$labels['date'] = 'Data';
$labels['size'] = 'Tamaño';
$labels['priority'] = 'Prioridade';
$labels['organization'] = 'Organización';
$labels['readstatus'] = 'Estado da lectura';
$labels['listoptions'] = 'Opcións de lista...';
-
$labels['mailboxlist'] = 'Cartafoles';
-$labels['messagesfromto'] = 'Mensaxes da $from á $to de $count';
-$labels['threadsfromto'] = 'Fíos do $from ao $to de $count';
+$labels['messagesfromto'] = 'Mensaxes de $from para $to de $count';
+$labels['threadsfromto'] = 'Fíos do $from para $to de $count';
$labels['messagenrof'] = 'Mensaxe $nr de $count';
$labels['fromtoshort'] = '$from - $to de $count';
-
$labels['copy'] = 'Copiar';
$labels['move'] = 'Mover';
-$labels['moveto'] = 'Mover a...';
+$labels['moveto'] = 'Mover para...';
$labels['download'] = 'Descargar';
$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Amosar';
-$labels['showanyway'] = 'Amosala de tódolos xeitos';
-
-$labels['filename'] = 'Nome de ficheiro';
-$labels['filesize'] = 'Tamaño de ficheiro';
-
-$labels['addtoaddressbook'] = 'Engadir ao caderno de enderezos';
-
-// weekdays short
+$labels['showanyway'] = 'Amosar de todos os xeitos';
+$labels['filename'] = 'Nome do ficheiro';
+$labels['filesize'] = 'Tamaño do ficheiro';
+$labels['addtoaddressbook'] = 'Engadir á Axenda de enderezos';
$labels['sun'] = 'Dom';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Mar';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Mér';
$labels['thu'] = 'Xov';
$labels['fri'] = 'Ven';
$labels['sat'] = 'Sáb';
-
-// weekdays long
$labels['sunday'] = 'Domingo';
$labels['monday'] = 'Luns';
$labels['tuesday'] = 'Martes';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Mércores';
$labels['thursday'] = 'Xoves';
$labels['friday'] = 'Venres';
$labels['saturday'] = 'Sábado';
-
-// months short
$labels['jan'] = 'Xan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Set';
$labels['oct'] = 'Out';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
-
-// months long
$labels['longjan'] = 'Xaneiro';
$labels['longfeb'] = 'Febreiro';
$labels['longmar'] = 'Marzo';
@@ -119,25 +97,22 @@ $labels['longsep'] = 'Setembro';
$labels['longoct'] = 'Outubro';
$labels['longnov'] = 'Novembro';
$labels['longdec'] = 'Decembro';
-
$labels['today'] = 'Hoxe';
-
-// toolbar buttons
$labels['refresh'] = 'Actualizar';
$labels['checkmail'] = 'Procurar novas mensaxes';
$labels['compose'] = 'Redactar unha mensaxe';
-$labels['writenewmessage'] = 'Redactar unha mensaxe nova';
+$labels['writenewmessage'] = 'Redactar unha nova mensaxe';
$labels['reply'] = 'Responder';
-$labels['replytomessage'] = 'Respostar a mensaxe';
-$labels['replytoallmessage'] = 'Respostar á lista ou ao remitente e a tódolos destinatarios';
-$labels['replyall'] = 'Respostar a todos';
-$labels['replylist'] = 'Respostar á lista de correo';
+$labels['replytomessage'] = 'Responder a mensaxe';
+$labels['replytoallmessage'] = 'Responder á persoa remitente e a todas as destinatarias';
+$labels['replyall'] = 'Responder a todos';
+$labels['replylist'] = 'Responder á lista de correo';
$labels['forward'] = 'Reenviar';
-$labels['forwardinline'] = 'Reenviar inserido';
+$labels['forwardinline'] = 'Reenviar en liña';
$labels['forwardattachment'] = 'Reenviar como anexo';
$labels['forwardmessage'] = 'Reenviar a mensaxe';
$labels['deletemessage'] = 'Eliminar a mensaxe';
-$labels['movemessagetotrash'] = 'Mover a mensaxe ao cubo do lixo';
+$labels['movemessagetotrash'] = 'Mover a mensaxe para o lixo';
$labels['printmessage'] = 'Imprimir esta mensaxe';
$labels['previousmessage'] = 'Amosar a mensaxe anterior';
$labels['firstmessage'] = 'Amosar a primeira mensaxe';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Máis accións...';
$labels['more'] = 'Máis';
$labels['back'] = 'Atrás';
$labels['options'] = 'Opcións';
-
$labels['select'] = 'Seleccionar';
$labels['all'] = 'Todas';
$labels['none'] = 'Ningunha';
@@ -174,11 +148,10 @@ $labels['expand-all'] = 'Expandir todos';
$labels['expand-unread'] = 'Expandir os non lidos';
$labels['collapse-all'] = 'Contraer todos';
$labels['threaded'] = 'Agrupar conversas';
-
$labels['autoexpand_threads'] = 'Expandir os fíos de mensaxes';
-$labels['do_expand'] = 'tódolos fíos';
+$labels['do_expand'] = 'todos os fíos';
$labels['expand_only_unread'] = 'só con mensaxes non lidas';
-$labels['fromto'] = 'Remitente/Destinatario';
+$labels['fromto'] = 'De/Para';
$labels['flag'] = 'Marca';
$labels['attachment'] = 'Anexo';
$labels['nonesort'] = 'Ningunha';
@@ -187,32 +160,27 @@ $labels['arrival'] = 'Data de chegada';
$labels['asc'] = 'ascendente';
$labels['desc'] = 'descendente';
$labels['listcolumns'] = 'Enumerar columnas';
-$labels['listsorting'] = 'Ordenar pola columna';
+$labels['listsorting'] = 'Ordenar en columnas';
$labels['listorder'] = 'Ordenación';
$labels['listmode'] = 'Modo de vista da lista';
-
$labels['folderactions'] = 'Accións cos cartafoles';
$labels['compact'] = 'Compactar';
$labels['empty'] = 'Baleirar';
$labels['importmessages'] = 'Importar mensaxes';
-
$labels['quota'] = 'Uso de disco';
$labels['unknown'] = 'descoñecido';
$labels['unlimited'] = 'ilimitado';
-
$labels['quicksearch'] = 'Busca rápida';
-$labels['resetsearch'] = 'Restablecer a busca';
-$labels['searchmod'] = 'Modificadores de busca';
-$labels['msgtext'] = 'Mensaxe enteira';
+$labels['resetsearch'] = 'Restabelecer a pesquisa';
+$labels['searchmod'] = 'Modificadores de pesquisa';
+$labels['msgtext'] = 'Toda a mensaxe';
$labels['body'] = 'Corpo';
-$labels['type'] = 'Type';
-
-$labels['openinextwin'] = 'Abrir nunha nova fiestra';
-$labels['emlsave'] = 'Gardar (.eml)';
+$labels['type'] = 'Tipo';
+$labels['namex'] = 'Nome';
+$labels['openinextwin'] = 'Abrir nunha nova xanela';
+$labels['emlsave'] = 'Descargar (.eml)';
$labels['changeformattext'] = 'Amosar en texto plano';
$labels['changeformathtml'] = 'Amosar en HTML';
-
-// message compose
$labels['editasnew'] = 'Editar como nova';
$labels['send'] = 'Enviar';
$labels['sendmessage'] = 'Enviar a mensaxe agora';
@@ -224,58 +192,58 @@ $labels['returnreceipt'] = 'Notificación da entrega';
$labels['dsn'] = 'Notificación do estado de envío (DSN)';
$labels['mailreplyintro'] = 'O $date, $sender escribiu:';
$labels['originalmessage'] = 'Mensaxe orixinal';
-
$labels['editidents'] = 'Modificar identidades';
$labels['spellcheck'] = 'Ortografía';
$labels['checkspelling'] = 'Revisar a ortografía';
$labels['resumeediting'] = 'Voltar á edición';
$labels['revertto'] = 'Voltar a';
-
+$labels['restore'] = 'Restaurar';
+$labels['restoremessage'] = 'Restaurar mensaxe?';
+$labels['responses'] = 'Respostas';
+$labels['insertresponse'] = 'Inserir unha resposta';
+$labels['manageresponses'] = 'Xestionar respostas';
+$labels['savenewresponse'] = 'Gardar a nova resposta';
+$labels['editresponses'] = 'Editar respostas';
+$labels['editresponse'] = 'Editar resposta ';
+$labels['responsename'] = 'Nome';
+$labels['responsetext'] = 'Texto de resposta';
$labels['attach'] = 'Anexar';
$labels['attachments'] = 'Ficheiros anexos';
$labels['upload'] = 'Cargar';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Pechar';
$labels['messageoptions'] = 'Opcións da mensaxe...';
-
$labels['low'] = 'Baixa';
$labels['lowest'] = 'A máis baixa';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alta';
$labels['highest'] = 'A máis alta';
-
$labels['nosubject'] = '(Sen asunto)';
$labels['showimages'] = 'Amosar as imaxes';
$labels['alwaysshow'] = 'Amosar sempre as imaxes nas mensaxes de $sender';
$labels['isdraft'] = 'Esta mensaxe é un borrador';
$labels['andnmore'] = '$nr máis...';
$labels['togglemoreheaders'] = 'Amosar máis cabecerias';
-$labels['togglefullheaders'] = 'Conmutar cabeceiras en bruto';
-
+$labels['togglefullheaders'] = 'Mudar os encabezados das mensaxes';
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Só texto';
$labels['savesentmessagein'] = 'Gardar a mensaxe enviada en';
$labels['dontsave'] = 'non gardar';
-$labels['maxuploadsize'] = 'O tamaño máximo permitido por ficheiro é de $size';
-
-$labels['addcc'] = 'Engadir copia (CC)';
-$labels['addbcc'] = 'Engadir copia oculta (BCC)';
-$labels['addreplyto'] = 'Engadir respostar a (Reply-To)';
-$labels['addfollowupto'] = 'Engadir respostar a todos (Followup-To)';
-
-// mdn
-$labels['mdnrequest'] = 'O remitente desta mensaxe pediu ser notificado cando vostede a lea. Quere notificar ao remitente?';
+$labels['maxuploadsize'] = 'O tamaño máximo permitido para o ficheiro é de $size';
+$labels['addcc'] = 'Engadir Copia (CC)';
+$labels['addbcc'] = 'Engadir Copia oculta (BCC)';
+$labels['addreplyto'] = 'Engadir Responder a (Reply-To)';
+$labels['addfollowupto'] = 'Engadir Respostar a todos (Followup-To)';
+$labels['mdnrequest'] = 'A persoa remitente pediu ser notificada cando a mensaxe for lida. Queres enviar notificación á persoa remitente?';
$labels['receiptread'] = 'Notificación da entrega da mensaxe (lectura)';
-$labels['yourmessage'] = 'Esta é unha notificación da entrega da súa mensaxe';
-$labels['receiptnote'] = 'Nota: Esta notificación só confirma que a mensaxe se abriu no computador do destinatario. Non asegura que o destinatario a lera ou entendera o seu contido.';
-
-// address boook
+$labels['yourmessage'] = 'Esta é unha notificación da entrega da túa mensaxe';
+$labels['receiptnote'] = 'Nota: Esta notificación só confirma que a mensaxe se abriu no computador da persoa destinataria. Non asegura que a persoa destinataria a lera ou entendera o seu contido.';
$labels['name'] = 'Nome completo';
$labels['firstname'] = 'Nome';
$labels['surname'] = 'Apelidos';
$labels['middlename'] = 'Segundo nome';
-$labels['nameprefix'] = 'Prefixo';
-$labels['namesuffix'] = 'Sufixo';
+$labels['nameprefix'] = 'Forma de tratamento (Prefixo)';
+$labels['namesuffix'] = 'Forma de tratamento (Sufixo)';
$labels['nickname'] = 'Alcume';
$labels['jobtitle'] = 'Titulación';
$labels['department'] = 'Departamento';
@@ -293,18 +261,17 @@ $labels['birthday'] = 'Aniversario';
$labels['anniversary'] = 'Aniversario';
$labels['website'] = 'Sitio web';
$labels['instantmessenger'] = 'Mensaxería instantánea';
-$labels['notes'] = 'Notes';
+$labels['notes'] = 'Anotacións';
$labels['male'] = 'home';
$labels['female'] = 'muller';
$labels['manager'] = 'Xerente';
$labels['assistant'] = 'Asistente';
-$labels['spouse'] = 'Cónxuxe';
-$labels['allfields'] = 'Tódolos campos';
+$labels['spouse'] = 'Parella';
+$labels['allfields'] = 'Todos os campos';
$labels['search'] = 'Procurar';
$labels['advsearch'] = 'Procura avanzada';
$labels['advanced'] = 'Avanzado';
$labels['other'] = 'Outro';
-
$labels['typehome'] = 'Casa';
$labels['typework'] = 'Traballo';
$labels['typeother'] = 'Outro';
@@ -313,20 +280,18 @@ $labels['typemain'] = 'Principal';
$labels['typehomefax'] = 'Fax da casa';
$labels['typeworkfax'] = 'Fax do traballo';
$labels['typecar'] = 'Coche';
-$labels['typepager'] = 'Buscapersonas';
+$labels['typepager'] = 'Buscapersoas';
$labels['typevideo'] = 'Vídeo';
$labels['typeassistant'] = 'Asistente';
$labels['typehomepage'] = 'Páxina principal';
$labels['typeblog'] = 'Blogue';
$labels['typeprofile'] = 'Perfil';
-
-$labels['addfield'] = 'Engadir campo';
+$labels['addfield'] = 'Engadir campo...';
$labels['addcontact'] = 'Engadir novo contacto';
$labels['editcontact'] = 'Modificar este contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Propiedades do contacto';
$labels['personalinfo'] = 'Información persoal';
-
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Gardar';
@@ -335,7 +300,6 @@ $labels['rename'] = 'Mudar o nome';
$labels['addphoto'] = 'Engadir';
$labels['replacephoto'] = 'Substituír';
$labels['uploadphoto'] = 'Subir foto';
-
$labels['newcontact'] = 'Novo contacto';
$labels['deletecontact'] = 'Eliminar os contactos seleccionados';
$labels['composeto'] = 'Redactar mensaxe para';
@@ -349,42 +313,36 @@ $labels['newcontactgroup'] = 'Crear novo grupo de contactos';
$labels['grouprename'] = 'Mudar o nome do grupo';
$labels['groupdelete'] = 'Borrar o grupo';
$labels['groupremoveselected'] = 'Eliminar do grupo os contactos seleccionados';
-
$labels['previouspage'] = 'Amosar o grupo anterior';
$labels['firstpage'] = 'Amosar o primeiro grupo';
$labels['nextpage'] = 'Amosar o seguinte grupo';
$labels['lastpage'] = 'Amosar o último grupo';
-
$labels['group'] = 'Grupo';
$labels['groups'] = 'Grupos';
-$labels['listgroup'] = 'List group members';
+$labels['listgroup'] = 'Lista de integrantes do grupo';
$labels['personaladrbook'] = 'Enderezos persoais';
-
$labels['searchsave'] = 'Gardar procura';
$labels['searchdelete'] = 'Eliminar procura';
-
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contactos';
$labels['importfromfile'] = 'Importar desde ficheiro:';
-$labels['importtarget'] = 'Engadir contactos ao caderno de enderezos:';
-$labels['importreplace'] = 'Substituír completamente o caderno de enderezos';
-$labels['importdesc'] = 'Pode cargar contactos desde un caderno de enderezos preexistente.<br/>Pódense importar enderezos en formato <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> ou CSV (valores separados por comas)';
-$labels['done'] = 'Rematado';
-
-// settings
+$labels['importtarget'] = 'Engadir contactos a';
+$labels['importreplace'] = 'Substituír completamente a Axenda de enderezos';
+$labels['importgroups'] = 'Importar atribucións do grupo';
+$labels['importgroupsall'] = 'Todos (crear grupos, se for necesario)';
+$labels['importgroupsexisting'] = 'Só para os grupos existentes';
+$labels['importdesc'] = 'Podes engadir contactos desde unha axenda de enderezos xa existente.<br/>Pódense importar enderezos en formato <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> ou CSV (valores separados por comas)';
+$labels['done'] = 'Feito!';
$labels['settingsfor'] = 'Axustes de';
$labels['about'] = 'Acerca de';
$labels['preferences'] = 'Preferencias';
-$labels['userpreferences'] = 'Preferencias de usuario';
-$labels['editpreferences'] = 'Editar preferencias de usuario';
-
+$labels['userpreferences'] = 'Preferencias de utente';
+$labels['editpreferences'] = 'Editar preferencias de utente';
$labels['identities'] = 'Identidades';
$labels['manageidentities'] = 'Administrar as identidades desta conta';
$labels['newidentity'] = 'Nova identidade';
-
$labels['newitem'] = 'Novo';
$labels['edititem'] = 'Editar';
-
$labels['preferhtml'] = 'Prefiro HTML';
$labels['defaultcharset'] = 'Xogo de caracteres por omisión';
$labels['htmlmessage'] = 'Mensaxe HTML';
@@ -392,14 +350,14 @@ $labels['messagepart'] = 'Parte';
$labels['digitalsig'] = 'Sinatura dixital';
$labels['dateformat'] = 'Formato da data';
$labels['timeformat'] = 'Formato da hora';
-$labels['prettydate'] = 'Data decorada';
+$labels['prettydate'] = 'Data sinalada';
$labels['setdefault'] = 'Usar como predeterminada';
$labels['autodetect'] = 'Detectar automáticamente';
-$labels['language'] = 'Linguaxe';
+$labels['language'] = 'Lingua';
$labels['timezone'] = 'Zona horaria';
$labels['pagesize'] = 'Liñas por páxina';
$labels['signature'] = 'Sinatura';
-$labels['dstactive'] = 'Cambio de hora según horario de verán';
+$labels['dstactive'] = 'Mudar a hora según horario de verán';
$labels['showinextwin'] = 'Abrir a mensaxe nunha nova xanela';
$labels['composeextwin'] = 'Redactar nunha xanela nova';
$labels['htmleditor'] = 'Redactar mensaxes HTML';
@@ -409,24 +367,24 @@ $labels['htmlsignature'] = 'Sinatura HTML';
$labels['showemail'] = 'Amosar enderezo de correo co nome en pantalla';
$labels['previewpane'] = 'Amosar previsualización';
$labels['skin'] = 'Aspecto da interface';
-$labels['logoutclear'] = 'Baleirar o cubo do lixo ao saír';
+$labels['logoutclear'] = 'Baleirar o lixo ao saír';
$labels['logoutcompact'] = 'Compactar a caixa de entrada ao saír';
-$labels['uisettings'] = 'Interface de usuario';
+$labels['uisettings'] = 'Interface de utente';
$labels['serversettings'] = 'Axustes do servidor';
-$labels['mailboxview'] = 'Vista das caixas de correo';
+$labels['mailboxview'] = 'Vista da caixa de correo';
$labels['mdnrequests'] = 'Cando se solicitan notificacións da entrega';
-$labels['askuser'] = 'preguntarme qué facer';
+$labels['askuser'] = 'preguntarme que facer';
$labels['autosend'] = 'enviar automáticamente';
-$labels['autosendknown'] = 'enviar aos meus contactos, noutros casos preguntarme';
+$labels['autosendknown'] = 'enviar aos meus contactos, noutros casos preguntar';
$labels['autosendknownignore'] = 'enviar aos meus contactos, noutros casos ignorar';
$labels['ignore'] = 'ignorar';
$labels['readwhendeleted'] = 'Marcar a mensaxe como lida ao eliminar';
-$labels['flagfordeletion'] = 'Marcar a mensaxe para eliminar no canto de eliminar';
+$labels['flagfordeletion'] = 'Marcar a mensaxe para eliminar en vez de eliminar';
$labels['skipdeleted'] = 'Non amosar as mensaxes marcadas como eliminadas';
-$labels['deletealways'] = 'Eliminar as mensaxes aínda que non se poidan gardar no cubo do lixo';
+$labels['deletealways'] = 'Se falla Mover mensaxes para o lixo, eliminalas';
$labels['deletejunk'] = 'Borrar automáticamente as mensaxes no cartafol "Correo lixo"';
$labels['showremoteimages'] = 'Amosar as imaxes remotas';
-$labels['fromknownsenders'] = 'de remitentes coñecidos';
+$labels['fromknownsenders'] = 'con remite coñecido';
$labels['always'] = 'sempre';
$labels['showinlineimages'] = 'Amosar as imaxes anexas baixo a mensaxe';
$labels['autosavedraft'] = 'Gardar borrador automáticamente';
@@ -442,27 +400,27 @@ $labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Conforme ao RFC 2047 (outros)';
$labels['force7bit'] = 'Usar MIME para codificar caracteres de 8 bits';
$labels['advancedoptions'] = 'Opcións avanzadas';
-$labels['focusonnewmessage'] = 'Enfocar o navegador se hai mensaxes novas';
-$labels['checkallfolders'] = 'Procurar novas mensaxes en tódolos cartafoles';
+$labels['focusonnewmessage'] = 'Centrar a xanela do navegador en novas mensaxes';
+$labels['checkallfolders'] = 'Procurar novas mensaxes en todos os cartafoles';
$labels['displaynext'] = 'Logo de eliminar ou mover unha mensaxe ir á mensaxe seguinte';
$labels['defaultfont'] = 'Fonte por defecto da mensaxe HTML';
$labels['mainoptions'] = 'Opcións principais';
$labels['browseroptions'] = 'Opcións do navegador';
$labels['section'] = 'Sección';
$labels['maintenance'] = 'Mantemento';
-$labels['newmessage'] = 'Mensaxes novas';
+$labels['newmessage'] = 'Nova mensaxe';
$labels['signatureoptions'] = 'Opcións da firma';
-$labels['whenreplying'] = 'Ao respostar';
+$labels['whenreplying'] = 'Ao responder';
$labels['replyempty'] = 'non citar a mensaxe orixinal';
-$labels['replytopposting'] = 'comezar a nova mensaxe enriba da orixinal';
-$labels['replybottomposting'] = 'comezar a nova mensaxe embaixo da orixinal';
-$labels['replyremovesignature'] = 'Eliminar a firma do remitente ao respostar';
+$labels['replytopposting'] = 'comezar a nova mensaxe antes da orixinal';
+$labels['replybottomposting'] = 'comezar a nova mensaxe despois da orixinal';
+$labels['replyremovesignature'] = 'Eliminar a firma do remite ao respostar';
$labels['autoaddsignature'] = 'Engadir firma automáticamente';
$labels['newmessageonly'] = 'só nas mensaxes novas';
$labels['replyandforwardonly'] = 'só nas respostas e reenvíos';
$labels['insertsignature'] = 'Engadir firma';
$labels['previewpanemarkread'] = 'Marcar como lidas as mensaxes previsualizadas';
-$labels['afternseconds'] = 'logo de $n segundos';
+$labels['afternseconds'] = 'despois de $n segundos';
$labels['reqmdn'] = 'Solicitar sempre unha notificación da entrega';
$labels['reqdsn'] = 'Solicitar sempre unha notificación do estado de envío';
$labels['replysamefolder'] = 'Deixar as respostas no cartafol onde está a mensaxe á que se responde';
@@ -480,11 +438,13 @@ $labels['standardwindows'] = 'Manexar avisos emerxentes como xanelas estándar';
$labels['forwardmode'] = 'Reenvio de mensaxes';
$labels['inline'] = 'inserido';
$labels['asattachment'] = 'coma anexo';
-
+$labels['replyallmode'] = 'Acción dpor defecto do botón [Responder a todos]';
+$labels['replyalldefault'] = 'responder a todos';
+$labels['replyalllist'] = 'responder só para a lista (se for atopada)';
$labels['folder'] = 'Cartafol';
$labels['folders'] = 'Cartafoles';
$labels['foldername'] = 'Nome do cartafol';
-$labels['subscribed'] = 'Subscrito';
+$labels['subscribed'] = 'Subscrito(a)';
$labels['messagecount'] = 'Mensaxes';
$labels['create'] = 'Crear';
$labels['createfolder'] = 'Crear un novo cartafol';
@@ -492,35 +452,29 @@ $labels['managefolders'] = 'Xestionar cartafoles';
$labels['specialfolders'] = 'Cartafoles especiais';
$labels['properties'] = 'Propiedades';
$labels['folderproperties'] = 'Propiedades do cartafol';
-$labels['parentfolder'] = 'Cartafol padre';
+$labels['parentfolder'] = 'Cartafol principal';
$labels['location'] = 'Situación';
$labels['info'] = 'Información';
-$labels['getfoldersize'] = 'Prema para calcular o tamaño do cartafol';
-$labels['changesubscription'] = 'Prema para trocar a subscrición';
+$labels['getfoldersize'] = 'Preme para calcular o tamaño do cartafol';
+$labels['changesubscription'] = 'Preme para mudar a subscrición';
$labels['foldertype'] = 'Tipo do cartafol';
$labels['personalfolder'] = 'Cartafol privado';
-$labels['otherfolder'] = 'Cartafol de outro usuario';
+$labels['otherfolder'] = 'Cartafol de outra persoa usuaria';
$labels['sharedfolder'] = 'Cartafol público';
-
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Orde ascendente';
$labels['sortdesc'] = 'Orde descendente';
$labels['undo'] = 'Desfacer';
-
$labels['installedplugins'] = 'Complementos instalados';
$labels['plugin'] = 'Complemento';
$labels['version'] = 'Versión';
$labels['source'] = 'Fonte';
$labels['license'] = 'Licenza';
$labels['support'] = 'Obter axuda';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KiB';
$labels['MB'] = 'MiB';
$labels['GB'] = 'GiB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inglés';
$labels['westerneuropean'] = 'Europeo Occidental';
@@ -539,5 +493,4 @@ $labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Xaponés';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chinés';
-
?>
diff --git a/program/localization/gl_ES/messages.inc b/program/localization/gl_ES/messages.inc
index 8fc2cb424..069ff5d42 100644
--- a/program/localization/gl_ES/messages.inc
+++ b/program/localization/gl_ES/messages.inc
@@ -15,26 +15,24 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Ocurreu un erro!';
-$messages['loginfailed'] = 'O contrasinal ou o nome de usuario son incorrectos.';
-$messages['cookiesdisabled'] = 'O seu navegador non acepta galletas.';
-$messages['sessionerror'] = 'A súa sesión non é válida ou expirou.';
+$messages['loginfailed'] = 'O contrasinal ou o nome de utente son incorrectos.';
+$messages['cookiesdisabled'] = 'O teu navegador non acepta cookies.';
+$messages['sessionerror'] = 'A tú sesión non é válida ou expirou.';
$messages['storageerror'] = 'Fallou a conexión co servidor IMAP.';
$messages['servererror'] = 'Erro do servidor!';
$messages['servererrormsg'] = 'Erro do servidor: $msg';
$messages['dberror'] = 'Erro na base de datos!';
$messages['requesttimedout'] = 'A petición expirou';
-$messages['errorreadonly'] = 'Non foi posible realizar a operación. O cartafol é de só lectura.';
-$messages['errornoperm'] = 'Non foi posible realizar a operación. Permiso denegado.';
-$messages['erroroverquota'] = 'Non se pode realizar a operación, non hai espacio no disco.';
-$messages['erroroverquotadelete'] = 'Non hai espacio no disco. Utilice Maiúsculas+Supr para borrar unha mensaxe.';
-$messages['invalidrequest'] = 'Petición inválida!. Non se gardou ningún dato.';
+$messages['errorreadonly'] = 'Non foi posíbel realizar a operación. O cartafol é de só lectura.';
+$messages['errornoperm'] = 'Non foi posíbel realizar a operación. Permiso denegado.';
+$messages['erroroverquota'] = 'Non se pode realizar a operación, non hai espazo no disco.';
+$messages['erroroverquotadelete'] = 'Non hai espazo no disco. Usa Maiúsculas+Supr para borrar unha mensaxe.';
+$messages['invalidrequest'] = 'Petición non válida! Non se gardou ningún dato.';
$messages['invalidhost'] = 'O nome do servidor non é válido.';
$messages['nomessagesfound'] = 'Non se atoparon mensaxes nesta caixa de correo.';
-$messages['loggedout'] = 'Rematou correctamente a súa sesión. Ata logo!';
-$messages['mailboxempty'] = 'A caixa de correo está vacía.';
+$messages['loggedout'] = 'Rematou correctamente a tú sesión. Até logo!';
+$messages['mailboxempty'] = 'A caixa de correo está baleira.';
$messages['refreshing'] = 'A refrescar...';
$messages['loading'] = 'Cargando...';
$messages['uploading'] = 'Cargando ficheiro...';
@@ -44,46 +42,49 @@ $messages['checkingmail'] = 'Ã procura de novas mensaxes...';
$messages['sendingmessage'] = 'Enviando mensaxe...';
$messages['messagesent'] = 'A mensaxe enviouse correctamente.';
$messages['savingmessage'] = 'Gardando mensaxe...';
-$messages['messagesaved'] = 'A mensaxe gardouse en "Borradores';
+$messages['messagesaved'] = 'A mensaxe gardouse en "Borradores"';
$messages['successfullysaved'] = 'Gardado correctamente.';
-$messages['addedsuccessfully'] = 'O contacto engadiuse correctamente ao caderno de enderezos.';
+$messages['savingresponse'] = 'Gardar texto de resposta...';
+$messages['deleteresponseconfirm'] = 'Realmente queres borrar este texto de resposta?';
+$messages['addedsuccessfully'] = 'O contacto engadiuse correctamente á Axenda de enderezos.';
$messages['contactexists'] = 'Xa existe un contacto con este enderezo de correo electrónico.';
$messages['contactnameexists'] = 'Xa existe un contacto con este nome.';
-$messages['blockedimages'] = 'Estanse a bloquear as imaxes remotas para protexer a súa privacidade.';
-$messages['encryptedmessage'] = 'Non se pode amosar a mensaxe porque está cifrada.';
+$messages['blockedimages'] = 'Estanse a bloquear as imaxes remotas para protexer a túa privacidade.';
+$messages['encryptedmessage'] = 'Sentímolo! Non se pode amosar a mensaxe porque está cifrada.';
$messages['nocontactsfound'] = 'Non se atoparon contactos.';
$messages['contactnotfound'] = 'Non se atopou o contacto solicitado.';
-$messages['contactsearchonly'] = 'Introduza algún termo para atopar contactos';
+$messages['contactsearchonly'] = 'Introduce algún termo para atopar contactos';
$messages['sendingfailed'] = 'Fallou o envío da mensaxe.';
-$messages['senttooquickly'] = 'Por favor, espere $sec segundos antes de enviar esta mensaxe.';
-$messages['errorsavingsent'] = 'Ocurriu un erro mentres se gardaba a mensaxe enviada.';
-$messages['errorsaving'] = 'Ocurriu un erro mentres se gardaba.';
-$messages['errormoving'] = 'Non foi posible mover a(s) mensaxe(s).';
-$messages['errorcopying'] = 'Non foi posible copiar a(s) mensaxe(s).';
-$messages['errordeleting'] = 'Non foi posible eliminar a(s) mensaxe(s).';
-$messages['errormarking'] = 'Non foi posible marcar a(s) mensaxe(s).';
-$messages['deletecontactconfirm'] = 'Quere eliminar o(s) contacto(s) seleccionado(s)?';
-$messages['deletegroupconfirm'] = 'Quere eliminar o grupo seleccionado?';
-$messages['deletemessagesconfirm'] = 'Quere eliminar a(s) mensaxe(s) seleccionadas?';
-$messages['deletefolderconfirm'] = 'Quere eliminar este cartafol?';
-$messages['purgefolderconfirm'] = 'Quere eliminar tódalas mensaxes neste cartafol?';
+$messages['senttooquickly'] = 'Por favor, espera $sec segundos antes de enviar esta mensaxe.';
+$messages['errorsavingsent'] = 'Houbo un erro ao gardar a mensaxe enviada.';
+$messages['errorsaving'] = 'Houbo un erro ao gardar.';
+$messages['errormoving'] = 'Non foi posíbel mover a(s) mensaxe(s).';
+$messages['errorcopying'] = 'Non foi posíbel copiar a(s) mensaxe(s).';
+$messages['errordeleting'] = 'Non foi posíbel eliminar a(s) mensaxe(s).';
+$messages['errormarking'] = 'Non foi posíbel marcar a(s) mensaxe(s).';
+$messages['deletecontactconfirm'] = 'Queres eliminar o(s) contacto(s) seleccionado(s)?';
+$messages['deletegroupconfirm'] = 'Queres eliminar o grupo seleccionado?';
+$messages['deletemessagesconfirm'] = 'Queres eliminar a(s) mensaxe(s) seleccionadas?';
+$messages['deletefolderconfirm'] = 'Queres eliminar este cartafol?';
+$messages['purgefolderconfirm'] = 'Queres eliminar todas as mensaxes neste cartafol?';
$messages['contactdeleting'] = 'Eliminando o(s) contacto(s)...';
$messages['groupdeleting'] = 'Eliminando o grupo...';
$messages['folderdeleting'] = 'Eliminando o cartafol...';
$messages['foldermoving'] = 'Movendo o cartafol...';
$messages['foldersubscribing'] = 'Subscribindo o cartafol...';
$messages['folderunsubscribing'] = 'Desubscribindo o cartafol...';
-$messages['formincomplete'] = 'Non se cumprimentou completamente o formulario.';
-$messages['noemailwarning'] = 'Por favor, introduza un enderezo de correo electrónico válido.';
-$messages['nonamewarning'] = 'Por favor, introduza un nome.';
-$messages['nopagesizewarning'] = 'Por favor, introduza un tamaño de páxina.';
-$messages['nosenderwarning'] = 'Por favor, introduza o enderezo de correo electrónico do remitente.';
-$messages['norecipientwarning'] = 'Por favor, introduza polo menos un destinatario.';
-$messages['nosubjectwarning'] = 'O campo "Asunto" está baleiro. Desexa completalo?';
-$messages['nobodywarning'] = 'Quere enviar esta mensaxe sen texto?';
-$messages['notsentwarning'] = 'A mensaxe non se enviou. Quere descartala?';
-$messages['noldapserver'] = 'Por favor, elixa un servidor LDAP para buscar.';
-$messages['nosearchname'] = 'Por favor, introduza un nome ou un enderezo de correo electrónico.';
+$messages['formincomplete'] = 'O formulario non foi completamente cuberto.';
+$messages['noemailwarning'] = 'Por favor, engade un enderezo de correo electrónico válido.';
+$messages['nonamewarning'] = 'Por favor, engade un nome.';
+$messages['nopagesizewarning'] = 'Por favor, engade un tamaño de páxina.';
+$messages['nosenderwarning'] = 'Por favor, engade o enderezo de correo electrónico do remite.';
+$messages['norecipientwarning'] = 'Por favor, engade polo menos unha persoa destinataria.';
+$messages['nosubjectwarning'] = 'O campo "Asunto" está baleiro. Queres completalo?';
+$messages['nobodywarning'] = 'Queres enviar esta mensaxe sen texto?';
+$messages['notsentwarning'] = 'A mensaxe non se enviou. Queres descartala?';
+$messages['restoresavedcomposedata'] = 'Foi atopada unha mensaxe que non se enviara.\n\nSubject: $subject\nSaved: $date\n\n¿queres restaurar esta mensaxe?';
+$messages['noldapserver'] = 'Por favor, elixe un servidor LDAP para buscar.';
+$messages['nosearchname'] = 'Por favor, engade un nome ou un enderezo de correo electrónico.';
$messages['notuploadedwarning'] = 'Aínda non se cargaron tódolos ficheiros. Por favor, agarde ou cancele a carga.';
$messages['searchsuccessful'] = 'Atopáronse $nr mensaxes.';
$messages['contactsearchsuccessful'] = 'Atopáronse $nr contactos.';
@@ -91,83 +92,85 @@ $messages['searchnomatch'] = 'A busca non atopou coincidencias.';
$messages['searching'] = 'Buscando...';
$messages['checking'] = 'Comprobando...';
$messages['nospellerrors'] = 'Non hai erros ortográficos.';
-$messages['folderdeleted'] = 'O cartafol eliminouse correctamente.';
-$messages['foldersubscribed'] = 'O cartafol suscribiuse correctamente.';
-$messages['folderunsubscribed'] = 'O cartafol desuscribiuse correctamente.';
+$messages['folderdeleted'] = 'O cartafol foi eliminado correctamente.';
+$messages['foldersubscribed'] = 'O cartafol subscribiuse correctamente.';
+$messages['folderunsubscribed'] = 'O cartafol desubscribiuse correctamente.';
$messages['folderpurged'] = 'O cartafol purgouse correctamente.';
$messages['folderexpunged'] = 'O cartafol baleirouse correctamente.';
$messages['deletedsuccessfully'] = 'Eliminouse correctamente.';
$messages['converting'] = 'Eliminando o formato da mensaxe...';
-$messages['messageopenerror'] = 'Non foi posible cargar a mensaxe desde o servidor.';
+$messages['messageopenerror'] = 'Non foi posíbel cargar a mensaxe desde o servidor.';
$messages['fileuploaderror'] = 'Fallou a carga do ficheiro.';
$messages['filesizeerror'] = 'O ficheiro cargado é máis grande que o tamaño máximo de $size.';
-$messages['copysuccess'] = 'Copiáronse correctamente $nr enderezos.';
-$messages['copyerror'] = 'Non foi posible copiar ningún enderezo.';
-$messages['sourceisreadonly'] = 'A orixe é de só lectura.';
-$messages['errorsavingcontact'] = 'Non foi posible gardar o contacto.';
+$messages['copysuccess'] = 'Copiáronse correctamente $nr contactos.';
+$messages['movesuccess'] = 'Movidos con suceso $nr contactos.';
+$messages['copyerror'] = 'Non foi posíbel copiar contactos.';
+$messages['moveerror'] = 'Non foi posíbel mover contactos.';
+$messages['sourceisreadonly'] = 'Este enderezo de orixe é de só lectura.';
+$messages['errorsavingcontact'] = 'Non foi posíbel gardar o contacto.';
$messages['movingmessage'] = 'Movendo a(s) mensaxe(s)...';
$messages['copyingmessage'] = 'Copiando a(s) mensaxe(s)...';
$messages['copyingcontact'] = 'Copiando o(s) contacto(s)...';
+$messages['movingcontact'] = 'Movendo contacto(s)...';
$messages['deletingmessage'] = 'Eliminando a(s) mensaxe(s)...';
$messages['markingmessage'] = 'Marcando a(s) mensaxe(s)...';
$messages['addingmember'] = 'Engadindo o(s) contacto(s) ao grupo...';
$messages['removingmember'] = 'Eliminando o(s) contacto(s) do grupo...';
$messages['receiptsent'] = 'A notificación da entrega enviouse correctamente.';
-$messages['errorsendingreceipt'] = 'Non foi posible enviar a notificación da entrega.';
-$messages['deleteidentityconfirm'] = 'Quere eliminar esta identidade?';
-$messages['nodeletelastidentity'] = 'Non pode eliminar esta identidade, é a última.';
-$messages['forbiddencharacter'] = 'O nome do cartafol contén un carácter non válido.';
-$messages['selectimportfile'] = 'Por favor, escolla un ficheiro para cargar.';
-$messages['addresswriterror'] = 'Non se pode escribir no caderno de enderezos que escolleu.';
+$messages['errorsendingreceipt'] = 'Non foi posíbel enviar a notificación da entrega.';
+$messages['deleteidentityconfirm'] = 'Queres eliminar esta identidade?';
+$messages['nodeletelastidentity'] = 'Non podes eliminar esta identidade, é a última.';
+$messages['forbiddencharacter'] = 'O nome do cartafol contén un caracter non válido.';
+$messages['selectimportfile'] = 'Por favor, escolle un ficheiro para cargar.';
+$messages['addresswriterror'] = 'Non se pode escribir na Axenda de enderezos que escolleches.';
$messages['contactaddedtogroup'] = 'Engadiuse correctamente o contacto a este grupo.';
$messages['contactremovedfromgroup'] = 'Suprimiuse correctamente o contacto deste grupo.';
$messages['nogroupassignmentschanged'] = 'Non cambiou ningunha asignación de grupo.';
-$messages['importwait'] = 'A importar. Por favor, agarde...';
+$messages['importwait'] = 'A importar. Por favor, agarda...';
$messages['importformaterror'] = 'Fallou a importación! O ficheiro cargado non contén datos válidos.';
-$messages['importconfirm'] = '<b>Importáronse correctamente $inserted contactos. Ignoráronse $skipped contactos que xa existían</b>:<p><em>$names</em></p>';
+$messages['importconfirm'] = '<b>Importáronse correctamente $inserted contactos</b>';
$messages['importconfirmskipped'] = '<b>Ignoráronse $skipped existing entradas</b>';
-$messages['importmessagesuccess'] = 'Importados $nr mensaxes con éxito';
-$messages['importmessageerror'] = 'Fallou a importación! O arquivo subido non é unha mensaxe válida ou un ficheiro de caixa de correo';
+$messages['importmessagesuccess'] = 'Importadas $nr mensaxes con éxito';
+$messages['importmessageerror'] = 'Fallou a importación! O arquivo subido non é unha mensaxe válida ou un ficheiro de correo';
$messages['opnotpermitted'] = 'Operación non permitida!';
-$messages['nofromaddress'] = 'Falta o enderezo de correo electrónico na identidade que escolleu.';
-$messages['editorwarning'] = 'Se troca neste intre ao editor de texto plano, vai perder todo o formato do texto. Quere continuar?';
-$messages['httpreceivedencrypterror'] = 'Produciuse un erro fatal de configuración. Contacte ao administrador inmediatamente. <b>Non se enviou a súa mensaxe.</b>';
+$messages['nofromaddress'] = 'Falta o enderezo de correo electrónico na identidade que escolleches.';
+$messages['editorwarning'] = 'Se mudas agora ao editor de texto plano, vas perder todo o formato do texto. Queres continuar?';
+$messages['httpreceivedencrypterror'] = 'Produciuse un erro fatal de configuración. Contacta coa persoa administradora inmediatamente. <b>Non se enviou a túa mensaxe.</b>';
$messages['smtpconnerror'] = 'Erro SMTP ($code): Fallou a conexión co servidor.';
$messages['smtpautherror'] = 'Erro SMTP ($code): Fallou a autenticación.';
-$messages['smtpfromerror'] = 'Erro SMTP ($code): Non foi posible establecer o remitente "$from" ($msg).';
-$messages['smtptoerror'] = 'Erro SMTP ($code): Non foi posible engadir o destinatario "$to" ($msg).';
-$messages['smtprecipientserror'] = 'Erro SMTP: Non se pode analizar a lista de destinatarios.';
+$messages['smtpfromerror'] = 'Erro SMTP ($code): Non foi posíbel estabelecer o remite "$from" ($msg).';
+$messages['smtptoerror'] = 'Erro SMTP ($code): Non foi posíbel engadir a persoa destinataria "$to" ($msg).';
+$messages['smtprecipientserror'] = 'Erro SMTP: Non se pode analizar a lista de persoas destinatarias.';
$messages['smtperror'] = 'Erro SMTP: $msg';
$messages['emailformaterror'] = 'O enderezo de correo electrónico é incorrecto: $email.';
-$messages['toomanyrecipients'] = 'Especificou destinatarios de máis. Por favor, redúzaos a un máximo de $max.';
-$messages['maxgroupmembersreached'] = 'O número de membros do grupo excede o máximo de $max.';
-$messages['internalerror'] = 'Ocurriu un erro interno. Por favor, probe outra vez.';
-$messages['contactdelerror'] = 'Non foi posible eliminar o(s) contacto(s).';
+$messages['toomanyrecipients'] = 'Especificou persoas destinatarias de máis. Por favor, redúceas a un máximo de $max.';
+$messages['maxgroupmembersreached'] = 'O número de integrantes do grupo excede o máximo de $max.';
+$messages['internalerror'] = 'Produciuse un erro interno. Por favor, téntao de novo.';
+$messages['contactdelerror'] = 'Non foi posíbel eliminar o(s) contacto(s).';
$messages['contactdeleted'] = 'Borráronse correctamente o(s) contacto(s).';
-$messages['contactrestoreerror'] = 'Non foi posible restaurar o(s) contacto(s) borrado(s).';
+$messages['contactrestoreerror'] = 'Non foi posíbel restaurar o(s) contacto(s) borrado(s).';
$messages['contactrestored'] = 'Restauráronse correctamente o(s) contacto(s).';
$messages['groupdeleted'] = 'Borrouse correctamente o grupo.';
$messages['grouprenamed'] = 'Mudouse correctamente o nome do grupo.';
$messages['groupcreated'] = 'Creouse correctamente o grupo.';
-$messages['savedsearchdeleted'] = 'Borrouse correctamente a procura gardada.';
-$messages['savedsearchdeleteerror'] = 'Non foi posible borrar a procura gardada.';
-$messages['savedsearchcreated'] = 'Creouse correctamente a procura gardada.';
-$messages['savedsearchcreateerror'] = 'Non foi posible crear a procura gardada.';
+$messages['savedsearchdeleted'] = 'Borrouse correctamente a busca gardada.';
+$messages['savedsearchdeleteerror'] = 'Non foi posíbel eliminar a busca gardada.';
+$messages['savedsearchcreated'] = 'Creouse correctamente a busca gardada.';
+$messages['savedsearchcreateerror'] = 'Non foi posíbel crear a busca gardada.';
$messages['messagedeleted'] = 'Borráronse correctamente a(s) mensaxe(s).';
$messages['messagemoved'] = 'Movéronse correctamente a(s) mensaxe(s).';
$messages['messagecopied'] = 'Copiáronse correctamente a(s) mensaxe(s).';
$messages['messagemarked'] = 'Marcáronse correctamente a(s) mensaxe(s).';
-$messages['autocompletechars'] = 'Introduza polo menos $min caracteres para autocompletar.';
-$messages['autocompletemore'] = 'Atopáronse máis entradas concidintes. Por favor, introduza máis caracteres.';
+$messages['autocompletechars'] = 'Engade polo menos $min caracteres para autocompletar.';
+$messages['autocompletemore'] = 'Atopáronse máis entradas concidintes. Por favor, engade máis caracteres.';
$messages['namecannotbeempty'] = 'O nome non pode estar baleiro.';
$messages['nametoolong'] = 'O nome é longo de máis.';
$messages['folderupdated'] = 'O cartafol actualizouse correctamente.';
$messages['foldercreated'] = 'O cartafol creouse correctamente.';
$messages['invalidimageformat'] = 'O formato da imaxe non é válido.';
$messages['mispellingsfound'] = 'Atopáronse erros ortográficos na mensaxe.';
-$messages['parentnotwritable'] = 'Non foi posible crear/mover o cartafol no cartafol padre escollido porque non ten permisos.';
+$messages['parentnotwritable'] = 'Non foi posíbel crear/mover o cartafol para o cartafol principal que selecionaches porque non tes permisos.';
$messages['messagetoobig'] = 'A mensaxe é demasiado grande para procesala';
-$messages['attachmentvalidationerror'] = 'ATENCIÓN! Este anexo é sospeitoso porque o seu tipo non coincide o tipo declarado na mensaxe. Se non confía no remitente, non debería abrilo, porque podería conter un virus ou malware.<br/><br/><em>Tipo agardado: $expected; Tipo detectado: $detected</em>';
+$messages['attachmentvalidationerror'] = 'ATENCIÓN! Este anexo é sospeitoso porque o seu tipo non coincide co tipo declarado na mensaxe. Se non confías no remite, non deberías abrilo, porque podería conter un virus ou malware.<br/><br/><em>Tipo agardado: $expected; Tipo detectado: $detected</em>';
$messages['noscriptwarning'] = 'Atención: Este servicio de correo web precisa de Javascript!. Por favor, active javascript nas opción do seu navegador.';
-
?>
diff --git a/program/localization/he_IL/labels.inc b/program/localization/he_IL/labels.inc
index 7ad04ab4a..ad9a91adc 100644
--- a/program/localization/he_IL/labels.inc
+++ b/program/localization/he_IL/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'ברוך בו×ך ×ל $product';
$labels['username'] = '×©× ×ž×©×ª×ž×©';
$labels['password'] = 'סיסמה';
$labels['server'] = 'שרת';
$labels['login'] = 'כניסה';
-
-// taskbar
$labels['logout'] = 'יצי××”';
$labels['mail'] = 'רשימת הודעות';
$labels['settings'] = 'הגדרות ×ישיות';
$labels['addressbook'] = 'פנקס כתובות';
-
-// mailbox names
$labels['inbox'] = 'נכנס';
$labels['drafts'] = 'טיוטות';
$labels['sent'] = 'נשלח';
$labels['trash'] = '×שפה';
$labels['junk'] = 'זבל';
$labels['show_real_foldernames'] = 'הצגת שמות ××ž×™×ª×™×™× ×©×œ תיקיות מיוחדות';
-
-// message listing
$labels['subject'] = 'נוש×';
$labels['from'] = 'מ×ת';
$labels['sender'] = 'השולח';
@@ -54,13 +44,11 @@ $labels['priority'] = 'עדיפות';
$labels['organization'] = '×רגון';
$labels['readstatus'] = 'נקר×';
$labels['listoptions'] = 'הצגת ×פשרויות...';
-
$labels['mailboxlist'] = 'תיקיות';
$labels['messagesfromto'] = 'הודעות $from עד $to מתוך $count';
$labels['threadsfromto'] = 'שרשור $from עד $to מתוך $count';
$labels['messagenrof'] = 'הודעה $nr מתוך $count';
$labels['fromtoshort'] = '$from – $to מתוך $count';
-
$labels['copy'] = 'העתק';
$labels['move'] = 'העבר';
$labels['moveto'] = 'תיוק ב...';
@@ -68,13 +56,9 @@ $labels['download'] = 'הורדה';
$labels['open'] = 'לפתוח';
$labels['showattachment'] = 'הצגה';
$labels['showanyway'] = 'להציג בכל מקרה';
-
$labels['filename'] = '×©× ×§×•×‘×¥';
$labels['filesize'] = 'גודל קובץ';
-
$labels['addtoaddressbook'] = 'הוספה לפנקס כתובות';
-
-// weekdays short
$labels['sun'] = '×™×•× ×';
$labels['mon'] = '×™×•× ×‘';
$labels['tue'] = '×™×•× ×’';
@@ -82,8 +66,6 @@ $labels['wed'] = '×™×•× ×“';
$labels['thu'] = '×™×•× ×”';
$labels['fri'] = '×™×•× ×•';
$labels['sat'] = '×™×•× ×©';
-
-// weekdays long
$labels['sunday'] = 'ר×שון';
$labels['monday'] = 'שני';
$labels['tuesday'] = 'שלישי';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'רביעי';
$labels['thursday'] = 'חמישי';
$labels['friday'] = 'ששי';
$labels['saturday'] = 'שבת';
-
-// months short
$labels['jan'] = 'ינו';
$labels['feb'] = 'פבר';
$labels['mar'] = 'מרץ';
@@ -105,8 +85,6 @@ $labels['sep'] = 'ספט';
$labels['oct'] = '×וק';
$labels['nov'] = 'נוב';
$labels['dec'] = 'דצמ';
-
-// months long
$labels['longjan'] = 'ינו×ר';
$labels['longfeb'] = 'פברו×ר';
$labels['longmar'] = 'מרץ';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'ספטמבר';
$labels['longoct'] = '×וקטובר';
$labels['longnov'] = 'נובמבר';
$labels['longdec'] = 'דצמבר';
-
$labels['today'] = 'היו×';
-
-// toolbar buttons
$labels['refresh'] = 'רענון';
$labels['checkmail'] = 'משיכת הודעות חדשות';
$labels['compose'] = 'כתיבת הודעה';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'פעולות נוספות...';
$labels['more'] = 'עוד';
$labels['back'] = 'חזרה';
$labels['options'] = '×פשרויות';
-
$labels['select'] = 'בחירה';
$labels['all'] = 'הכל';
$labels['none'] = 'כלו×';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'הרחבה כלית';
$labels['expand-unread'] = 'הרחבה ×˜×¨× × ×§×¨×';
$labels['collapse-all'] = 'כינוס כללי';
$labels['threaded'] = 'משורשר';
-
$labels['autoexpand_threads'] = 'הרחבת הודעות משורשרות';
$labels['do_expand'] = 'כל השרשורי×';
$labels['expand_only_unread'] = 'רק ×¢× ×”×•×“×¢×•×ª ×©×˜×¨× × ×§×¨×ו';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'רשימת עמודות';
$labels['listsorting'] = 'המיון לפי העמודה';
$labels['listorder'] = 'סדר מיון';
$labels['listmode'] = '×ופן הצגת רשימה';
-
$labels['folderactions'] = 'פעולות על תיקי×';
$labels['compact'] = 'פינוי שטח ×œ× ×ž× ×•×¦×œ';
$labels['empty'] = 'ריקון';
$labels['importmessages'] = '×™×™×‘×•× ×”×•×“×¢×•×ª';
-
$labels['quota'] = 'ניצול קיבולת';
$labels['unknown'] = '×œ× ×™×“×•×¢';
$labels['unlimited'] = '×œ×œ× ×”×’×‘×œ×”';
-
$labels['quicksearch'] = 'חיפוש מהיר';
$labels['resetsearch'] = 'ניקוי תיבת החיפוש';
$labels['searchmod'] = 'מ×פייני חיפוש';
$labels['msgtext'] = 'כל ההודעה';
$labels['body'] = 'גוף ההודעה';
-$labels['type'] = 'Type';
-
+$labels['type'] = 'סוג';
+$labels['namex'] = 'ש×';
$labels['openinextwin'] = 'פתיחה בחלון חדש';
$labels['emlsave'] = 'הורדת הודעה בפורמט EML';
$labels['changeformattext'] = 'הצגה בפורמט ×œ× ×ž×¢×•×¦×‘';
$labels['changeformathtml'] = 'הצגה בפורמט HTML';
-
-// message compose
$labels['editasnew'] = 'עריכת ההודעה כחדשה';
$labels['send'] = 'שלח';
$labels['sendmessage'] = 'משלוח מיידי';
@@ -224,26 +192,22 @@ $labels['returnreceipt'] = '×ישור קבלה';
$labels['dsn'] = 'הודעה על מצב המסירה';
$labels['mailreplyintro'] = ':כתב $sender, $date בת×ריך';
$labels['originalmessage'] = 'הודעה מקורית';
-
$labels['editidents'] = 'עריכת זהויות';
$labels['spellcheck'] = '×יות';
$labels['checkspelling'] = 'בדיקת ×יות';
$labels['resumeediting'] = 'המשך עריכה';
$labels['revertto'] = 'חזור למצב קוד×';
-
$labels['attach'] = 'צירוף';
$labels['attachments'] = 'צרופות';
$labels['upload'] = 'העל××”';
$labels['uploadprogress'] = '( $total מתוך $current ) $percent';
$labels['close'] = 'סגירה';
$labels['messageoptions'] = '×פשרויות הודעה...';
-
$labels['low'] = 'נמוך';
$labels['lowest'] = 'נמוך ביותר';
$labels['normal'] = 'רגיל';
$labels['high'] = 'גבוה';
$labels['highest'] = 'גבוה ביותר';
-
$labels['nosubject'] = '(×œ×œ× × ×•×©×)';
$labels['showimages'] = 'הצגת תמונות';
$labels['alwaysshow'] = '$sender תמיד להציג תמונות מ×ת';
@@ -251,25 +215,19 @@ $labels['isdraft'] = 'זו טיוטה של הודעה';
$labels['andnmore'] = 'עוד $nr';
$labels['togglemoreheaders'] = 'הר××” נתוני מערכת × ×•×¡×¤×™× ×©×œ ההודעה';
$labels['togglefullheaders'] = 'הר××” / בטל צפיה בנתוני מערכת של ההודעה';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = '×œ×œ× ×¢×™×¦×•×‘';
$labels['savesentmessagein'] = 'היכן לשמור ההודעה?';
$labels['dontsave'] = '×œ×œ× ×©×ž×™×¨×”';
$labels['maxuploadsize'] = 'גודל מקסימלי לקובץ ×”×•× $size';
-
$labels['addcc'] = 'הוספת מכותב לידיעה';
$labels['addbcc'] = 'הוספת מכותב נסתר';
$labels['addreplyto'] = 'הוספת כתובת למענה';
$labels['addfollowupto'] = 'הוספת כתובת להעברת הודעה';
-
-// mdn
$labels['mdnrequest'] = 'השולח ביקש לדעת ×× ×”×”×•×“×¢×” נקר××”. ×”×× ×œ×”×•×“×™×¢ לשולח?';
$labels['receiptread'] = '×ישור קבלה (נקר×)';
$labels['yourmessage'] = '×ישור קבלה להודעתך';
$labels['receiptnote'] = 'הערה: ×”×ישור ×ינו מבטיח שהנמען ×§×¨× ×ו הבין ×ת תוכן ההודעה.';
-
-// address boook
$labels['name'] = '×©× ×œ×”×¦×’×”';
$labels['firstname'] = '×©× ×¤×¨×˜×™';
$labels['surname'] = '×©× ×ž×©×¤×—×”';
@@ -304,7 +262,6 @@ $labels['search'] = 'חיפוש';
$labels['advsearch'] = '×—×™×וש מתקד×';
$labels['advanced'] = 'מתקד×';
$labels['other'] = '×חר';
-
$labels['typehome'] = 'בית';
$labels['typework'] = 'עבודה';
$labels['typeother'] = '×חר';
@@ -319,14 +276,12 @@ $labels['typeassistant'] = 'עוזר/ת';
$labels['typehomepage'] = 'דף הבית';
$labels['typeblog'] = 'יומן רשת';
$labels['typeprofile'] = 'פרופיל';
-
$labels['addfield'] = 'הוסף שדה';
$labels['addcontact'] = 'הוספת ×יש קשר';
$labels['editcontact'] = 'עריכת ×יש קשר';
$labels['contacts'] = '×נשי קשר';
$labels['contactproperties'] = 'מ×פייני ×יש קשר';
$labels['personalinfo'] = 'מידע ×ישי';
-
$labels['edit'] = 'עריכה';
$labels['cancel'] = 'ביטול';
$labels['save'] = 'שמירה';
@@ -335,7 +290,6 @@ $labels['rename'] = 'שינוי ש×';
$labels['addphoto'] = 'הוספה';
$labels['replacephoto'] = 'החלפה';
$labels['uploadphoto'] = 'העל×ת תמונה';
-
$labels['newcontact'] = '×יש קשר חדש';
$labels['deletecontact'] = 'מחיקת ×נשי קשר מסומני×';
$labels['composeto'] = 'יצירת הודעה ×ל';
@@ -349,44 +303,34 @@ $labels['newcontactgroup'] = 'יצירת קבוצה חדשה של ×נשי קש×
$labels['grouprename'] = 'שינוי ×©× ×§×‘×•×¦×”';
$labels['groupdelete'] = 'מחיקת קבוצה';
$labels['groupremoveselected'] = '×נשי הקשר שנבחרו יוסרו מהקבוצה';
-
$labels['previouspage'] = 'הצגת הקבוצה הקודמת';
$labels['firstpage'] = 'הצגת הקבוצה הר×שונה';
$labels['nextpage'] = 'הצגת הקבוצה הב××”';
$labels['lastpage'] = 'הצגת הקבוצה ×”×חרונה';
-
$labels['group'] = 'קבוצה';
$labels['groups'] = 'קבוצות';
-$labels['listgroup'] = 'List group members';
+$labels['listgroup'] = 'רשימה של חברי קבוצה';
$labels['personaladrbook'] = 'כתובות פרטיות';
-
$labels['searchsave'] = 'שמירת החיפוש';
$labels['searchdelete'] = 'מחיקת החיפוש';
-
$labels['import'] = 'ייבו×';
$labels['importcontacts'] = '×™×™×‘×•× ×נשי קשר';
$labels['importfromfile'] = '×™×™×‘×•× ×ž×§×•×‘×¥';
-$labels['importtarget'] = 'הוספת ×נשי קשר לספר הכתובות';
$labels['importreplace'] = 'החלפת כל פנקס הכתובות';
$labels['importdesc'] = 'ניתן לטעון ×נשי קשר מקובץ חיצוני. ×נו ×ª×•×ž×›×™× ×‘×§×‘×¦×™× ×”×¢×¨×•×›×™× ×‘×¦×•×¨×” של
<a href="http://en.wikipedia.org/wiki/VCard">vCard</a> ×ו
CSV המופרד על ידי פסיקי×.';
$labels['done'] = 'בוצע';
-
-// settings
$labels['settingsfor'] = 'הגדרות עבור';
$labels['about'] = '×ודות';
$labels['preferences'] = 'העדפות';
$labels['userpreferences'] = 'העדפות משתמש';
$labels['editpreferences'] = 'עריכה של העדפות משתמש';
-
$labels['identities'] = 'זהויות';
$labels['manageidentities'] = 'ניהול זהויות לחשבון זה';
$labels['newidentity'] = 'זהות חדשה';
-
$labels['newitem'] = 'רשומה חדשה';
$labels['edititem'] = 'עריכת רשומה';
-
$labels['preferhtml'] = 'הצגת HTML';
$labels['defaultcharset'] = 'ברירת מחדל של תווי×';
$labels['htmlmessage'] = 'תוכן HTML';
@@ -482,7 +426,6 @@ $labels['standardwindows'] = 'חלונות ×§×•×¤×¦×™× ×™×˜×•×¤×œ×• כחלונ×
$labels['forwardmode'] = 'הפנית הודעות';
$labels['inline'] = 'חלק מההודעה';
$labels['asattachment'] = 'כצרופה';
-
$labels['folder'] = 'תיק';
$labels['folders'] = 'תיקיות';
$labels['foldername'] = '×©× ×ª×™×§';
@@ -503,26 +446,20 @@ $labels['foldertype'] = 'סוג תיקיה';
$labels['personalfolder'] = 'תיקיה פרטית';
$labels['otherfolder'] = 'תיקית משתמש נוספת';
$labels['sharedfolder'] = 'תיקיה ציבורית';
-
$labels['sortby'] = 'מיון לפי';
$labels['sortasc'] = 'מיון בסדר עולה';
$labels['sortdesc'] = 'מיון בסדר יורד';
$labels['undo'] = 'ביטול שינוי';
-
$labels['installedplugins'] = '×ª×•×¡×¤×™× ×ž×•×ª×§× ×™×';
$labels['plugin'] = 'תוסף תוכנה';
$labels['version'] = 'גירסה';
$labels['source'] = 'מקור';
$labels['license'] = 'רשיון';
$labels['support'] = 'קבלת תמיכה';
-
-// units
$labels['B'] = 'בייט';
$labels['KB'] = 'ק"ב';
$labels['MB'] = 'מ"ב';
$labels['GB'] = 'ג"ב';
-
-// character sets
$labels['unicode'] = 'יוניקוד';
$labels['english'] = '×נגלית';
$labels['westerneuropean'] = 'מערב ×ירופי';
@@ -541,5 +478,4 @@ $labels['vietnamese'] = 'וויטנ×מי';
$labels['japanese'] = 'יפני';
$labels['korean'] = 'קורי×× ×™';
$labels['chinese'] = 'סיני';
-
?>
diff --git a/program/localization/he_IL/messages.inc b/program/localization/he_IL/messages.inc
index 37ebcea01..b7e7d1ae8 100644
--- a/program/localization/he_IL/messages.inc
+++ b/program/localization/he_IL/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'קרתה שגי××” !';
$messages['loginfailed'] = 'הכניסה נכשלה';
$messages['cookiesdisabled'] = 'הדפדפן ×ינו מקבל עוגיות';
@@ -56,8 +54,6 @@ $messages['contactnotfound'] = '×יש הקשר המבוקש ×œ× × ×ž×¦×';
$messages['contactsearchonly'] = 'יש להקיש מפתחות חיפוש כדי ×œ×ž×¦×•× ×נשי קשר';
$messages['sendingfailed'] = 'שליחת ההודעה נכשלה';
$messages['senttooquickly'] = '× × ×œ×”×ž×ª×™×Ÿ $sec שניות לפני מסירת הודעה זו';
-$messages['errorsavingsent'] = 'נגרמה שגי××” במהלך שמירת ההודעה בתיק הודעות יוצ×ות';
-$messages['errorsaving'] = 'נגרמה שגי××” במהלך השמירה';
$messages['errormoving'] = '×œ× × ×™×ª×Ÿ לתייק ×ת ההודעה';
$messages['errorcopying'] = 'העתקת ההודעות נכשלה';
$messages['errordeleting'] = '×œ× × ×™×ª×Ÿ למחוק ×ת ההודעה';
@@ -101,13 +97,16 @@ $messages['converting'] = 'הסרת העיצוב מההודעה';
$messages['messageopenerror'] = '×œ× × ×™×ª×Ÿ לטעון ההודעה מהשרת';
$messages['fileuploaderror'] = 'העל×ת הקובץ נכשלה';
$messages['filesizeerror'] = 'הקובץ לטעינה גדול מהגודל המקסימלי ×©×”×•× $size';
-$messages['copysuccess'] = '$nr כתובות הועתקו בהצלחה';
-$messages['copyerror'] = '×œ× × ×™×ª×Ÿ להעתיק ××£ כתובת';
+$messages['copysuccess'] = '$nr ×נשי קשר הועתקו בהצלחה';
+$messages['movesuccess'] = '$nr ×נשי קשר הועברו בהצלחה';
+$messages['copyerror'] = '×œ× × ×™×ª×Ÿ ×”×™×” להעתיק ×נשי קשר כלשה×';
+$messages['moveerror'] = '×œ× × ×™×ª×Ÿ ×”×™×” להעביר ×נשי קשר כלשה×';
$messages['sourceisreadonly'] = 'המקור לכתובת ×”×•× ×œ×§×¨×™××” בלבד';
$messages['errorsavingcontact'] = '×œ× × ×™×ª×Ÿ לשמור ×ת כתובת ×יש הקשר';
$messages['movingmessage'] = 'תיוק ההודעה...';
$messages['copyingmessage'] = 'הודעת מועתקת...';
$messages['copyingcontact'] = 'העתקת ×נשי קשר...';
+$messages['movingcontact'] = '×נשי קשר עוברי×...';
$messages['deletingmessage'] = 'המחיקה בתהליך...';
$messages['markingmessage'] = 'סימון ההודעה בתהליך...';
$messages['addingmember'] = 'הוספת ×נשי קשר לקבוצה...';
@@ -141,7 +140,6 @@ $messages['smtperror'] = 'SMTP: $msg';
$messages['emailformaterror'] = '$email כתובת דו×"ל שגויה';
$messages['toomanyrecipients'] = 'יותר מדי נמעני×. יש להקטין ×ž×¡×¤×¨× ×œ - $max';
$messages['maxgroupmembersreached'] = '×ž×¡×¤×¨× ×©×œ חברי הקבוצה ×ינו יכול לעבור $max';
-$messages['internalerror'] = 'שגי×ת מערכת. × × ×œ× ×¡×•×ª שנית';
$messages['contactdelerror'] = '×œ× × ×™×ª×Ÿ למחוק ×יש קשר';
$messages['contactdeleted'] = '×יש הקשר נמחק';
$messages['contactrestoreerror'] = '×œ× × ×™×ª×Ÿ לשחזר ×יש קשר שנמחק';
@@ -169,5 +167,4 @@ $messages['parentnotwritable'] = '×œ× × ×™×ª×Ÿ ליצור/להעביר תיקי
$messages['messagetoobig'] = 'ההודעה גדולה מעבר ליכולת העיבוד של התוכנה';
$messages['attachmentvalidationerror'] = 'זהירות ! הצרופה חשודה ×›×™ ××™× ×” מהסוג שצוין בהודעה. ×× ×œ× × ×™×ª×Ÿ לבטוח בשולח ××–×™ להמנע מלפתוח ×ת הקובץ בדפדפן ×›×™ הקובץ יכול להכיל קוד זדוני.<br/><br/><em>Expected: $expected; found: $detected</em>';
$messages['noscriptwarning'] = 'זהירות! תוכנה זו דורשת שימוש בג\'×ווהסקריפט! כדי להשתמש בכלי, יש לבחור ב×פשרות זו בהגדרות הדפדפן.';
-
?>
diff --git a/program/localization/hi_IN/labels.inc b/program/localization/hi_IN/labels.inc
index 303e0b5fb..a8b684c56 100644
--- a/program/localization/hi_IN/labels.inc
+++ b/program/localization/hi_IN/labels.inc
@@ -15,34 +15,22 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = '$product में सà¥à¤µà¤¾à¤—त है';
$labels['username'] = 'यूसरनाम';
$labels['password'] = 'पासवरà¥à¤¡';
$labels['server'] = 'सरà¥à¤µà¤°';
$labels['login'] = 'लॉगिन';
-
-// taskbar
$labels['logout'] = 'लॉगआऊट';
$labels['mail'] = 'ई-मेल';
$labels['settings'] = 'निजी सैटिंग';
$labels['addressbook'] = 'पता खाता';
-
-// mailbox names
$labels['inbox'] = 'इनबॉकà¥à¤¸';
$labels['drafts'] = 'डà¥à¤°à¤¾à¤«à¤¼à¤Ÿ';
$labels['sent'] = 'भेजा गया';
$labels['trash'] = 'रदà¥à¤¦à¥€';
$labels['junk'] = 'सà¥à¤ªà¥ˆà¤®';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'विशय';
$labels['from'] = 'भेजने वाला';
-$labels['sender'] = 'Sender';
$labels['to'] = 'पाने वाला';
$labels['cc'] = 'कारà¥à¤¬à¤¨';
$labels['bcc'] = 'अंधा कारà¥à¤¬à¤¨';
@@ -52,29 +40,16 @@ $labels['date'] = 'तारीख';
$labels['size'] = 'माप';
$labels['priority'] = 'मेल की महतà¥à¤µà¤ªà¥‚रà¥à¤£à¤¤à¤¾';
$labels['organization'] = 'संसà¥à¤¥à¤¾';
-$labels['readstatus'] = 'Read status';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'फ़ोलà¥à¤¡à¤°';
$labels['messagesfromto'] = '$from से ले कर $to, $count मेल में से';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = '$nr नमà¥à¤¬à¤° मेल, $count में से';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'कारà¥à¤¬à¤¨';
$labels['move'] = 'सà¥à¤¥à¤¾à¤¨à¤¾à¤‚तरित करें';
$labels['moveto'] = 'खीसà¥à¤•à¤¾à¤à¤‚...';
$labels['download'] = 'डाऊनलोड';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'फ़ाईल नाम';
$labels['filesize'] = 'फ़ाईल माप';
-
$labels['addtoaddressbook'] = 'पता खाते में जोडें';
-
-// weekdays short
$labels['sun'] = 'रवि';
$labels['mon'] = 'सोम';
$labels['tue'] = 'मंग';
@@ -82,8 +57,6 @@ $labels['wed'] = 'बà¥à¤§';
$labels['thu'] = 'गà¥à¤°à¥';
$labels['fri'] = 'शà¥à¤•à¥à¤°';
$labels['sat'] = 'शनि';
-
-// weekdays long
$labels['sunday'] = 'रविवार';
$labels['monday'] = 'सोमवार';
$labels['tuesday'] = 'मंगलवार';
@@ -91,8 +64,6 @@ $labels['wednesday'] = 'बà¥à¤§à¤µà¤¾à¤°';
$labels['thursday'] = 'गà¥à¤°à¥à¤µà¤¾à¤°';
$labels['friday'] = 'शà¥à¤•à¥à¤°à¤µà¤¾à¤°';
$labels['saturday'] = 'शनिवार';
-
-// months short
$labels['jan'] = 'जनवरी';
$labels['feb'] = 'फ़रवरी';
$labels['mar'] = 'मारà¥à¤š';
@@ -100,13 +71,6 @@ $labels['apr'] = 'अपà¥à¤°à¥‡à¤²';
$labels['may'] = 'मई';
$labels['jun'] = 'जून';
$labels['jul'] = 'जà¥à¤²à¤¾à¤ˆ';
-$labels['aug'] = 'Aug';
-$labels['sep'] = 'Sep';
-$labels['oct'] = 'Oct';
-$labels['nov'] = 'Nov';
-$labels['dec'] = 'Dec';
-
-// months long
$labels['longjan'] = 'जनवरी';
$labels['longfeb'] = 'फ़रवरी';
$labels['longmar'] = 'मारà¥à¤š';
@@ -119,10 +83,7 @@ $labels['longsep'] = 'सितंबर';
$labels['longoct'] = 'अकà¥à¤Ÿà¥‚बर';
$labels['longnov'] = 'नवमà¥à¤¬à¤°';
$labels['longdec'] = 'दिसंबर';
-
$labels['today'] = 'आज';
-
-// toolbar buttons
$labels['refresh'] = 'ताज़ा करें';
$labels['checkmail'] = 'नये मेल लाà¤à¤‚';
$labels['compose'] = 'मेल लिखें';
@@ -130,14 +91,9 @@ $labels['writenewmessage'] = 'मेल लिखें';
$labels['reply'] = 'जवाब';
$labels['replytomessage'] = 'मेल का जवाब दें';
$labels['replytoallmessage'] = 'सभी को जवाब लिखें';
-$labels['replyall'] = 'Reply all';
-$labels['replylist'] = 'Reply list';
$labels['forward'] = 'अगà¥à¤°à¥‡à¤·à¤¿à¤¤ करें';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'आगे भेजें';
$labels['deletemessage'] = 'रदà¥à¤¦ करें';
-$labels['movemessagetotrash'] = 'Move message to trash';
$labels['printmessage'] = 'मेल छापें';
$labels['previousmessage'] = 'पीछे के मेल दिखाà¤à¤‚';
$labels['firstmessage'] = 'पहला मेल दिखाà¤à¤‚';
@@ -146,398 +102,90 @@ $labels['lastmessage'] = 'आखीरी मेल दिखाà¤à¤‚';
$labels['backtolist'] = 'मेल सूची देखें';
$labels['viewsource'] = 'सोरà¥à¤¸ दिखाà¤à¤‚';
$labels['mark'] = 'चिहà¥à¤¨à¤¿à¤¤';
-$labels['markmessages'] = 'Mark messages';
-$labels['markread'] = 'As read';
-$labels['markunread'] = 'As unread';
-$labels['markflagged'] = 'As flagged';
-$labels['markunflagged'] = 'As unflagged';
-$labels['moreactions'] = 'More actions...';
-$labels['more'] = 'More';
-$labels['back'] = 'Back';
-$labels['options'] = 'Options';
-
$labels['select'] = 'चà¥à¤¨à¥‡à¤‚';
$labels['all'] = 'सभी';
$labels['none'] = 'कोई नहीं';
-$labels['currpage'] = 'Current page';
$labels['unread'] = 'अनदेखी';
-$labels['flagged'] = 'Flagged';
-$labels['unanswered'] = 'Unanswered';
-$labels['withattachment'] = 'With attachment';
-$labels['deleted'] = 'Deleted';
-$labels['undeleted'] = 'Not deleted';
-$labels['invert'] = 'Invert';
-$labels['filter'] = 'Filter';
-$labels['list'] = 'List';
-$labels['threads'] = 'Threads';
-$labels['expand-all'] = 'Expand All';
-$labels['expand-unread'] = 'Expand Unread';
-$labels['collapse-all'] = 'Collapse All';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
-$labels['fromto'] = 'From/To';
-$labels['flag'] = 'Flag';
-$labels['attachment'] = 'Attachment';
$labels['nonesort'] = 'कोई नहीं';
-$labels['sentdate'] = 'Sent date';
-$labels['arrival'] = 'Arrival date';
-$labels['asc'] = 'ascending';
-$labels['desc'] = 'descending';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'छोटा करें';
$labels['empty'] = 'मेल रदà¥à¤¦à¥€ में डालें';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'डिसà¥à¤• उपयोग';
$labels['unknown'] = 'अजà¥à¤žà¤¾à¤¤';
$labels['unlimited'] = 'असीम';
-
$labels['quicksearch'] = 'तेज़ खोज';
$labels['resetsearch'] = 'खोज खाली करें';
-$labels['searchmod'] = 'Search modifiers';
-$labels['msgtext'] = 'Entire message';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
-$labels['openinextwin'] = 'Open in new window';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
-$labels['editasnew'] = 'Edit as new';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'मेल भेजें';
$labels['savemessage'] = 'डà¥à¤°à¤¾à¤«à¤¼à¤Ÿ सहेजें';
$labels['addattachment'] = 'फ़ाईल जोडें';
$labels['charset'] = 'कैरेकà¥à¤Ÿà¤° सैट';
$labels['editortype'] = 'समà¥à¤ªà¤¾à¤¦à¤• पà¥à¤°à¤¾à¤•à¤¾à¤°';
$labels['returnreceipt'] = 'मेल रसीद';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'सà¥à¤ªà¥ˆà¤²à¤¿à¤‚ग जाà¤à¤šà¥‡à¤‚';
$labels['resumeediting'] = 'समà¥à¤ªà¤¾à¤¦à¤¨ फिर शà¥à¤°à¥‚ करें';
$labels['revertto'] = 'पहले की सà¥à¤¥à¤¿à¤¤à¥€ पर जाà¤à¤‚';
-
-$labels['attach'] = 'Attach';
$labels['attachments'] = 'जà¥à¤¡à¥‡ फाईल';
$labels['upload'] = 'अपलोड';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'बंद';
-$labels['messageoptions'] = 'Message options...';
-
$labels['low'] = 'कम';
$labels['lowest'] = 'सबसे कम';
$labels['normal'] = 'साधारण';
$labels['high'] = 'उचà¥à¤š';
$labels['highest'] = 'उचà¥à¤šà¤¤à¤®';
-
$labels['nosubject'] = '(कोई विशय नहीं)';
$labels['showimages'] = 'चितà¥à¤° दिखाà¤à¤‚';
-$labels['alwaysshow'] = 'Always show images from $sender';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'à¤à¤š-टी-à¤à¤®-à¤à¤² (HTML)';
$labels['plaintoggle'] = 'सादा पाठ';
-$labels['savesentmessagein'] = 'Save sent message in';
-$labels['dontsave'] = 'don\'t save';
-$labels['maxuploadsize'] = 'Maximum allowed file size is $size';
-
-$labels['addcc'] = 'Add Cc';
-$labels['addbcc'] = 'Add Bcc';
-$labels['addreplyto'] = 'Add Reply-To';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
-$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
-$labels['receiptread'] = 'Return Receipt (read)';
-$labels['yourmessage'] = 'This is a Return Receipt for your message';
-$labels['receiptnote'] = 'Note: This receipt only acknowledges that the message was displayed on the recipient\'s computer. There is no guarantee that the recipient has read or understood the message contents.';
-
-// address boook
$labels['name'] = 'दिखने वाला नाम';
$labels['firstname'] = 'पहला नाम';
$labels['surname'] = 'उपनाम';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'मेल';
-$labels['phone'] = 'Phone';
-$labels['address'] = 'Address';
-$labels['street'] = 'Street';
-$labels['locality'] = 'City';
-$labels['zipcode'] = 'ZIP Code';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
-$labels['typemobile'] = 'Mobile';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'नया पता जोडें';
$labels['editcontact'] = 'पता समà¥à¤ªà¤¾à¤¦';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
-$labels['personalinfo'] = 'Personal information';
-
$labels['edit'] = 'समà¥à¤ªà¤¾à¤¦';
$labels['cancel'] = 'रदà¥à¤¦';
$labels['save'] = 'सहेज';
$labels['delete'] = 'मिटा';
-$labels['rename'] = 'Rename';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'नया पता कारà¥à¤¡ बनाà¤à¤‚';
$labels['deletecontact'] = 'चà¥à¤¨à¥‡ पते मिटाà¤à¤‚';
$labels['composeto'] = 'को मेल भेजें';
$labels['contactsfromto'] = '$from से ले कर $to, $count पते में से';
$labels['print'] = 'छापें';
$labels['export'] = 'à¤à¤•à¥à¤¸à¥à¤ªà¥‹à¤°à¥à¤Ÿ';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
-$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'इससे पहले के बनà¥à¤¡à¤² को दिखाà¤à¤‚';
$labels['firstpage'] = 'पहला बनà¥à¤¡à¤² दिखाà¤à¤‚';
$labels['nextpage'] = 'अगला बनà¥à¤¡à¤² दिखाà¤à¤‚';
$labels['lastpage'] = 'आखिरी बनà¥à¤¡à¤² दिखाà¤à¤‚';
-
-$labels['group'] = 'Group';
-$labels['groups'] = 'Groups';
-$labels['listgroup'] = 'List group members';
-$labels['personaladrbook'] = 'Personal Addresses';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
-$labels['import'] = 'Import';
-$labels['importcontacts'] = 'Import contacts';
-$labels['importfromfile'] = 'Import from file:';
-$labels['importtarget'] = 'Add new contacts to address book:';
-$labels['importreplace'] = 'Replace the entire address book';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
-$labels['done'] = 'Done';
-
-// settings
$labels['settingsfor'] = 'इनके विनà¥à¤¯à¤¾à¤¸:';
-$labels['about'] = 'About';
$labels['preferences'] = 'पसंद';
$labels['userpreferences'] = 'यूसर पसंद';
$labels['editpreferences'] = 'यूसर पसंद समà¥à¤ªà¤¾à¤¦à¥‡à¤‚';
-
$labels['identities'] = 'पहचान';
$labels['manageidentities'] = 'इस खाते के पहचान वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¿à¤¤ करें';
$labels['newidentity'] = 'नया पहचान';
-
$labels['newitem'] = 'नया चीज़';
$labels['edititem'] = 'चीज़ समà¥à¤ªà¤¾à¤¦à¥‡à¤‚';
-
$labels['preferhtml'] = 'à¤à¤š-टी-à¤à¤®-à¤à¤²(HTML) दिखाà¤à¤‚';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'à¤à¤š-टी-à¤à¤®-à¤à¤² (HTML) रूप मेल करें';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'सà¥à¤¨à¤¦à¤° तारीखें';
$labels['setdefault'] = 'तयशà¥à¤¦à¤¾ चà¥à¤¨à¥‡à¤‚';
-$labels['autodetect'] = 'Auto';
$labels['language'] = 'भाषा';
$labels['timezone'] = 'समय कà¥à¤·à¥‡à¤¤à¥à¤°';
$labels['pagesize'] = 'हर पनà¥à¤¨à¥‡ पर इतने';
$labels['signature'] = 'दसà¥à¤¤à¤–त';
$labels['dstactive'] = 'रौशनी बचाव';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'मेल à¤à¤š-टी-à¤à¤®-à¤à¤² (HTML) मे लिखें';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'à¤à¤š-टी-à¤à¤®-à¤à¤² (HTML) दसà¥à¤¤à¤–त';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'à¤à¤²à¤• पटà¥à¤Ÿà¥€ दिखाà¤à¤‚';
-$labels['skin'] = 'Interface skin';
-$labels['logoutclear'] = 'Clear Trash on logout';
-$labels['logoutcompact'] = 'Compact Inbox on logout';
-$labels['uisettings'] = 'User Interface';
-$labels['serversettings'] = 'Server Settings';
-$labels['mailboxview'] = 'Mailbox View';
-$labels['mdnrequests'] = 'On request for return receipt';
-$labels['askuser'] = 'ask me';
-$labels['autosend'] = 'send receipt';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
-$labels['ignore'] = 'ignore';
-$labels['readwhendeleted'] = 'Mark the message as read on delete';
-$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
-$labels['skipdeleted'] = 'Do not show deleted messages';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
-$labels['always'] = 'always';
-$labels['showinlineimages'] = 'Display attached images below the message';
$labels['autosavedraft'] = 'डà¥à¤°à¤¾à¤«à¤¼à¤Ÿ अपने आप सहेजते जाà¤à¤‚';
-$labels['everynminutes'] = 'every $n minute(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'कभी नहाीं';
-$labels['immediately'] = 'immediately';
-$labels['messagesdisplaying'] = 'Displaying Messages';
-$labels['messagescomposition'] = 'Composing Messages';
-$labels['mimeparamfolding'] = 'Attachment names';
-$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
-$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (other)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
-$labels['advancedoptions'] = 'Advanced options';
-$labels['focusonnewmessage'] = 'Focus browser window on new message';
-$labels['checkallfolders'] = 'Check all folders for new messages';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
-$labels['section'] = 'Section';
-$labels['maintenance'] = 'Maintenance';
-$labels['newmessage'] = 'New Message';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
-$labels['autoaddsignature'] = 'Automatically add signature';
-$labels['newmessageonly'] = 'new message only';
-$labels['replyandforwardonly'] = 'replies and forwards only';
-$labels['insertsignature'] = 'Insert signature';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'फ़ोलà¥à¤¡à¤°';
$labels['folders'] = 'फ़ोलà¥à¤¡à¤°';
$labels['foldername'] = 'फ़ोलà¥à¤¡à¤° नाम';
$labels['subscribed'] = 'सबसà¥à¤•à¥à¤°à¤¾à¤ˆà¤¬ किया गया';
-$labels['messagecount'] = 'Messages';
$labels['create'] = 'बनाà¤à¤‚';
$labels['createfolder'] = 'फ़ोलडर बनाà¤à¤‚';
$labels['managefolders'] = 'फ़ोलडर को वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¿à¤¤ करें';
-$labels['specialfolders'] = 'Special Folders';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'à¤à¤¸à¥‡ तय करें';
$labels['sortasc'] = 'पहले से आखीरी तय करें';
$labels['sortdesc'] = 'आखीरी से पहले तय करें';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
-$labels['B'] = 'B';
-$labels['KB'] = 'KB';
-$labels['MB'] = 'MB';
-$labels['GB'] = 'GB';
-
-// character sets
-$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/hi_IN/messages.inc b/program/localization/hi_IN/messages.inc
index ffbc6f436..9cf02696a 100644
--- a/program/localization/hi_IN/messages.inc
+++ b/program/localization/hi_IN/messages.inc
@@ -15,30 +15,14 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'लॉगिन नहीं हो पाया';
$messages['cookiesdisabled'] = 'आपका बà¥à¤°à¤¾à¤Šà¤¸à¤° कà¥à¤•à¥€ सà¥à¤µà¥€à¤•à¤¾à¤° नहीं कर रहा है';
$messages['sessionerror'] = 'सतà¥à¤° समापà¥à¤¤ या अवैदà¥à¤¯';
$messages['storageerror'] = 'आईमैप (IMAP) सरà¥à¤µà¤° से समà¥à¤ªà¤°à¥à¤• नहीं हो पाया';
-$messages['servererror'] = 'Server Error!';
-$messages['servererrormsg'] = 'Server Error: $msg';
-$messages['dberror'] = 'Database Error!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Invalid request! No data was saved.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'इस मेलबॉकà¥à¤¸ में कोई मेल नहीं है';
$messages['loggedout'] = 'सतà¥à¤° समापà¥à¤¤. टा टा!';
$messages['mailboxempty'] = 'मेलबॉकà¥à¤¸ खाली है';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'लोड हो रहा है';
-$messages['uploading'] = 'Uploading file...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'डाटा लोड हो रहा है...';
$messages['checkingmail'] = 'कà¥à¤¯à¤¾ नया मेल है?...';
$messages['sendingmessage'] = 'मेल भेजा जा रहा है...';
@@ -48,129 +32,35 @@ $messages['messagesaved'] = 'मेल डà¥à¤°à¤¾à¤«à¤¼à¥à¤Ÿ फोलà¥à¤¡à
$messages['successfullysaved'] = 'सहेजा गया है';
$messages['addedsuccessfully'] = 'पता खाते में पता जोडा गया है';
$messages['contactexists'] = 'इस ई-मेल पता से à¤à¤• पता पेहले से है';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'आप के पà¥à¤°à¤¾à¤ˆà¤µà¥‡à¤¸à¥€ के लिये और सà¥à¤ªà¥ˆà¤® से बचने के लिये इस मेल में सदूर चितà¥à¤° नहीं दिखाये गये हैं।';
$messages['encryptedmessage'] = 'माफ़ कीजिये, यह मेल कूट रूप में है, इस कारण दिखाया नहीं जा सकता।';
$messages['nocontactsfound'] = 'कोई पता नहीं मिला';
-$messages['contactnotfound'] = 'The requested contact was not found.';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'मेल नहीं भिज पाया';
-$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
-$messages['errorsavingsent'] = 'An error occured while saving sent message.';
-$messages['errorsaving'] = 'सहेजते-सहेजते गडबड हो गया';
$messages['errormoving'] = 'मेल खिसà¥à¤•à¤¾ नहीं';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'मेल मिटा नहीं';
-$messages['errormarking'] = 'Could not mark the message(s).';
$messages['deletecontactconfirm'] = 'चà¥à¤¨à¥‡ गये पते को सचमà¥à¤š मिटाना है ?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'चà¥à¤¨à¥‡ गये मेल को सचमà¥à¤š मिटाना है ?';
$messages['deletefolderconfirm'] = 'फ़ोलà¥à¤¡à¤° को सचमà¥à¤š मिटाà¤à¤‚ ?';
$messages['purgefolderconfirm'] = 'फ़ोलà¥à¤¡à¤° में पडे सारे मेल को सचमà¥à¤š मिटाना है?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
-$messages['folderdeleting'] = 'Deleting folder...';
-$messages['foldermoving'] = 'Moving folder...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'फ़ॉरà¥à¤® पूरी तरह से भरा नहीं';
$messages['noemailwarning'] = 'वैदà¥à¤¯ मेल पता भरें';
$messages['nonamewarning'] = 'नाम भरें';
$messages['nopagesizewarning'] = 'पनà¥à¤¨à¤¾ माप भरें';
-$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
$messages['norecipientwarning'] = 'कम-से-कम à¤à¤• पाने वाले का पता भरें';
$messages['nosubjectwarning'] = 'मेल का कोई विशय नहीं बताया गया है। कà¥à¤¯à¤¾ आप विशय डालना चाहते हैं ?';
$messages['nobodywarning'] = 'बिना कà¥à¤› लिखे मेल भेजें?';
$messages['notsentwarning'] = 'मेल भिजा नहीं. मेल रदà¥à¤¦ करें ?';
$messages['noldapserver'] = 'खोज के लिये à¤à¤• à¤à¤²à¤¡à¥ˆà¤ª सरà¥à¤µà¤° चà¥à¤¨à¥‡à¤‚';
$messages['nosearchname'] = 'पता या पते का नाम भरें';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = '$nr मेल मिले';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'खोज असफ़ल';
$messages['searching'] = 'खोजा रहे हैं...';
$messages['checking'] = 'चाà¤à¤šà¤¾ चा रहा है...';
$messages['nospellerrors'] = 'कोई सà¥à¤ªà¥ˆà¤²à¤¿à¤‚ग गलती नहीं मिली';
$messages['folderdeleted'] = 'फ़ोलà¥à¤¡à¤° मिट गया';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'मिट गया';
$messages['converting'] = 'मेल से फ़ॉरà¥à¤®à¥ˆà¤Ÿà¤¿à¤‚ग निकाला जा रहा है...';
$messages['messageopenerror'] = 'सरà¥à¤µà¤° से मेल लोड नहीं हो पाया';
$messages['fileuploaderror'] = 'फ़ाईल अपलोड नहीं हो पाया';
$messages['filesizeerror'] = 'अपलोड के लिये फ़ाईल हद $size से बड़ा है';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
-$messages['sourceisreadonly'] = 'This address source is read only.';
-$messages['errorsavingcontact'] = 'Could not save the contact address.';
-$messages['movingmessage'] = 'Moving message(s)...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
-$messages['receiptsent'] = 'Successfully sent a read receipt.';
-$messages['errorsendingreceipt'] = 'Could not send the receipt.';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
-$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
-$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
-$messages['selectimportfile'] = 'Please select a file to upload.';
-$messages['addresswriterror'] = 'The selected address book is not writeable.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
-$messages['importwait'] = 'Importing, please wait...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operation not permitted!';
-$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/hr_HR/labels.inc b/program/localization/hr_HR/labels.inc
index 4578fed2b..70d1c1316 100644
--- a/program/localization/hr_HR/labels.inc
+++ b/program/localization/hr_HR/labels.inc
@@ -15,34 +15,22 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Dobrodošli na $product';
$labels['username'] = 'KorisniÄko ime';
$labels['password'] = 'Lozinka';
$labels['server'] = 'Poslužitelj';
$labels['login'] = 'Prijava';
-
-// taskbar
$labels['logout'] = 'Odjava';
$labels['mail'] = 'Pošta';
$labels['settings'] = 'Postavke';
$labels['addressbook'] = 'Imenik';
-
-// mailbox names
$labels['inbox'] = 'Pristigla pošta';
$labels['drafts'] = 'Predlošci';
$labels['sent'] = 'Poslano';
$labels['trash'] = 'Smeće';
$labels['junk'] = 'Spam';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Naslov';
$labels['from'] = 'Od';
-$labels['sender'] = 'Sender';
$labels['to'] = 'Za';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
@@ -53,28 +41,18 @@ $labels['size'] = 'VeliÄina';
$labels['priority'] = 'Prioritet';
$labels['organization'] = 'Organizacija';
$labels['readstatus'] = 'ProÄitano';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'Mape';
$labels['messagesfromto'] = 'Poruke od $from do $to od ukupno $count';
$labels['threadsfromto'] = 'Teme od $from do $to od ukupno $count';
$labels['messagenrof'] = 'Poruka broj $nr od $count';
$labels['fromtoshort'] = '$from - $to od $count';
-
$labels['copy'] = 'Kopiraj';
$labels['move'] = 'Premjesti';
$labels['moveto'] = 'Premjesti u...';
$labels['download'] = 'Preuzmi (download)';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'Ime datoteke';
$labels['filesize'] = 'VeliÄina datoteke';
-
$labels['addtoaddressbook'] = 'Dodaj u imenik';
-
-// weekdays short
$labels['sun'] = 'Ned';
$labels['mon'] = 'Pon';
$labels['tue'] = 'Uto';
@@ -82,8 +60,6 @@ $labels['wed'] = 'Sri';
$labels['thu'] = 'ÄŒet';
$labels['fri'] = 'Pet';
$labels['sat'] = 'Sub';
-
-// weekdays long
$labels['sunday'] = 'Nedjelja';
$labels['monday'] = 'Ponedjeljak';
$labels['tuesday'] = 'Utorak';
@@ -91,8 +67,6 @@ $labels['wednesday'] = 'Srijeda';
$labels['thursday'] = 'ÄŒetvrtak';
$labels['friday'] = 'Petak';
$labels['saturday'] = 'Subota';
-
-// months short
$labels['jan'] = 'Sij';
$labels['feb'] = 'Velj';
$labels['mar'] = 'Ožu';
@@ -105,8 +79,6 @@ $labels['sep'] = 'Ruj';
$labels['oct'] = 'Lis';
$labels['nov'] = 'Stu';
$labels['dec'] = 'Pro';
-
-// months long
$labels['longjan'] = 'SijeÄanj';
$labels['longfeb'] = 'VeljaÄa';
$labels['longmar'] = 'Ožujak';
@@ -119,10 +91,7 @@ $labels['longsep'] = 'Rujan';
$labels['longoct'] = 'Listopad';
$labels['longnov'] = 'Studeni';
$labels['longdec'] = 'Prosinac';
-
$labels['today'] = 'Danas';
-
-// toolbar buttons
$labels['refresh'] = 'Osvježi';
$labels['checkmail'] = 'Provjera novih poruka';
$labels['compose'] = 'Nova poruka';
@@ -155,7 +124,6 @@ $labels['moreactions'] = 'Više akcija';
$labels['more'] = 'Više';
$labels['back'] = 'Natrag';
$labels['options'] = 'Postavke';
-
$labels['select'] = 'Odaberi';
$labels['all'] = 'Sve';
$labels['none'] = 'Ništa';
@@ -163,9 +131,7 @@ $labels['currpage'] = 'Trenutna stranica';
$labels['unread'] = 'NeproÄitane';
$labels['flagged'] = 'OznaÄene';
$labels['unanswered'] = 'Neodgovrene';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'Obrisano';
-$labels['undeleted'] = 'Not deleted';
$labels['invert'] = 'Obrni';
$labels['filter'] = 'Filtriraj';
$labels['list'] = 'Lista';
@@ -174,7 +140,6 @@ $labels['expand-all'] = 'Proširi sve';
$labels['expand-unread'] = 'ProÅ¡iri neproÄitane';
$labels['collapse-all'] = 'Zatvori sve';
$labels['threaded'] = 'Tematski prikaz';
-
$labels['autoexpand_threads'] = 'Proširi teme poruka';
$labels['do_expand'] = 'Sve teme';
$labels['expand_only_unread'] = 'samo s neproÄitanim porukama';
@@ -190,31 +155,19 @@ $labels['listcolumns'] = 'Kolone';
$labels['listsorting'] = 'Sortirajuća kolona';
$labels['listorder'] = 'Sortirajući redoslijed';
$labels['listmode'] = 'Model pregleda listi';
-
$labels['folderactions'] = 'Akcije mapa';
$labels['compact'] = 'Kompresiranje';
$labels['empty'] = 'Isprazni';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Kvota';
$labels['unknown'] = 'nepoznato';
$labels['unlimited'] = 'beskonaÄna';
-
$labels['quicksearch'] = 'Brza pretraga';
$labels['resetsearch'] = 'Prikaži sve poruke';
$labels['searchmod'] = 'Postavke pretrage';
$labels['msgtext'] = 'Cijela poruka';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'Otvori u novom prozoru';
$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'Uredi kao novo';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'Pošalji poruku';
$labels['savemessage'] = 'Spremi u \'Predlošci\'';
$labels['addattachment'] = 'Priloži datoteku';
@@ -224,52 +177,39 @@ $labels['returnreceipt'] = 'Potvrda o primitku poruke';
$labels['dsn'] = 'Potvrda o poslanoj poruci';
$labels['mailreplyintro'] = 'Dana $date, $sender je napisao(la):';
$labels['originalmessage'] = 'Izvorna Poruka';
-
$labels['editidents'] = 'Promijeni identitete';
$labels['spellcheck'] = 'Piši';
$labels['checkspelling'] = 'Provjera pravopisa';
$labels['resumeediting'] = 'Povratak u pisanje';
$labels['revertto'] = 'Vrati na';
-
$labels['attach'] = 'Priloži';
$labels['attachments'] = 'Privitci (Attachments)';
$labels['upload'] = 'Dodaj';
$labels['uploadprogress'] = '$percent ($current od $total)';
$labels['close'] = 'Zatvori';
$labels['messageoptions'] = 'Opcije poruka...';
-
$labels['low'] = 'Nizak';
$labels['lowest'] = 'Najniži';
$labels['normal'] = 'Srednji';
$labels['high'] = 'Visok';
$labels['highest'] = 'Najviši';
-
$labels['nosubject'] = '(bez naslova)';
$labels['showimages'] = 'Prikaži slike';
$labels['alwaysshow'] = 'Uvijek prikaži slike od $sender';
$labels['isdraft'] = 'Ova poruka je skica (draft)';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Samo tekst';
$labels['savesentmessagein'] = 'Spremi poslane poruke u';
$labels['dontsave'] = 'ne spremaj';
$labels['maxuploadsize'] = 'Maksimalna dozvoljena velicina datoteke je $size';
-
$labels['addcc'] = 'Dodaj Cc';
$labels['addbcc'] = 'Dodaj Bcc';
$labels['addreplyto'] = 'Dodaj Odgovori-na';
$labels['addfollowupto'] = 'Dodaj Nastavak-na';
-
-// mdn
$labels['mdnrequest'] = 'Pošiljaoc ove poruke je tražio da bude obaviješten o njenom primitku. Želite li obavijestiti pošiljaoca?';
$labels['receiptread'] = 'Vrati potvrdu (proÄitano)';
$labels['yourmessage'] = 'Ovo je vraćena potvrda vaše poruke';
$labels['receiptnote'] = 'Info: Ova poruka samo potvrÄ‘uje da se poruka prikazala na raÄunalu primaoca. Nema garancije da je primaoc proÄitao ili razumio sadržaj poruke.';
-
-// address boook
$labels['name'] = 'Puno ime';
$labels['firstname'] = 'Ime';
$labels['surname'] = 'Prezime';
@@ -304,7 +244,6 @@ $labels['search'] = 'Pretraga';
$labels['advsearch'] = 'Napredna Pretraga';
$labels['advanced'] = 'Napredno';
$labels['other'] = 'Ostalo';
-
$labels['typehome'] = 'Kućni broj';
$labels['typework'] = 'Poslovni broj';
$labels['typeother'] = 'Ostalo';
@@ -319,14 +258,12 @@ $labels['typeassistant'] = 'Asistent';
$labels['typehomepage'] = 'PoÄetna stranica';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Dodaj polje...';
$labels['addcontact'] = 'Dodaj novi kontakt';
$labels['editcontact'] = 'Izmjeni kontakt';
$labels['contacts'] = 'Kontakti';
$labels['contactproperties'] = 'Svojstva kontakta';
$labels['personalinfo'] = 'Osobni podaci';
-
$labels['edit'] = 'Izmjeni';
$labels['cancel'] = 'Odustani';
$labels['save'] = 'Spremi';
@@ -334,62 +271,43 @@ $labels['delete'] = 'Obriši';
$labels['rename'] = 'Preimenuj';
$labels['addphoto'] = 'Dodaj';
$labels['replacephoto'] = 'Smijeniti';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'Dodaj novi kontakt';
$labels['deletecontact'] = 'Obriši odabrane kontakte';
$labels['composeto'] = 'Napiši mail...';
$labels['contactsfromto'] = 'Kontakti od $from do $to od ukupno $count';
$labels['print'] = 'Print';
$labels['export'] = 'Export';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'Izvezi kontakte u vCard formatu';
$labels['newcontactgroup'] = 'Napravi novu kontaktnu grupu';
$labels['grouprename'] = 'Promijeni ime grupe';
$labels['groupdelete'] = 'Izbriši grupu';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'Prethodna strana';
$labels['firstpage'] = 'Prva strana';
$labels['nextpage'] = 'Slijedeća strana';
$labels['lastpage'] = 'Zadnja strana';
-
$labels['group'] = 'Grupa';
$labels['groups'] = 'Grupe';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Privatna adresa';
-
$labels['searchsave'] = 'Pohrani pretragu';
$labels['searchdelete'] = 'Obriši pretragu';
-
$labels['import'] = 'Uvoz';
$labels['importcontacts'] = 'Uvoz kontakta';
$labels['importfromfile'] = 'Uvezi iz datoteke:';
-$labels['importtarget'] = 'Dodaj nove kontakte u imenik:';
$labels['importreplace'] = 'Prepiši cijeli adresar';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'Završeno';
-
-// settings
$labels['settingsfor'] = 'Postavke za';
$labels['about'] = 'O programu';
$labels['preferences'] = 'Postavke';
$labels['userpreferences'] = 'KorisniÄke postavke';
$labels['editpreferences'] = 'Izmjena postavki';
-
$labels['identities'] = 'Identiteti';
$labels['manageidentities'] = 'Podesi identitete za ovaj nalog';
$labels['newidentity'] = 'Dodaj identitet';
-
$labels['newitem'] = 'Novo';
$labels['edititem'] = 'Uredi';
-
$labels['preferhtml'] = 'HTML format u prednosti';
$labels['defaultcharset'] = 'Zadani skup znakova';
$labels['htmlmessage'] = 'HTML format poruke';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
$labels['dateformat'] = 'Format datuma';
$labels['timeformat'] = 'Format vremena';
$labels['prettydate'] = 'Formatiran datum';
@@ -400,13 +318,9 @@ $labels['timezone'] = 'Vremenska zona';
$labels['pagesize'] = 'Redova po stranici';
$labels['signature'] = 'Potpis';
$labels['dstactive'] = 'Automatska promjena vremena';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'Sastavi HTML poruke';
$labels['htmlonreply'] = 'odgovor samo na HTML poruke';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'HTML potpis';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Prikaži podruÄje pregleda';
$labels['skin'] = 'Tema izgleda';
$labels['logoutclear'] = 'OÄisti smeće pri izlazu';
@@ -424,14 +338,12 @@ $labels['readwhendeleted'] = 'OznaÄi poruku kao proÄitanu pri brisanju';
$labels['flagfordeletion'] = 'OznaÄi poruku za brisanje umjesto brisanja';
$labels['skipdeleted'] = 'Ne prikazivaj pobrisane poruke';
$labels['deletealways'] = 'Ukoliko premještanje poruka u mapu otpad ne uspije, izbrši poruku';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
$labels['showremoteimages'] = 'Prikaži slike s interneta';
$labels['fromknownsenders'] = 'od poznatih pošiljatelja';
$labels['always'] = 'uvijek';
$labels['showinlineimages'] = 'Prikaži slike ispod poruke';
$labels['autosavedraft'] = 'Automatski spremi draft';
$labels['everynminutes'] = 'svakih $n minuta';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'nikada';
$labels['immediately'] = 'odmah';
$labels['messagesdisplaying'] = 'Prikazujem poruke';
@@ -447,13 +359,11 @@ $labels['checkallfolders'] = 'Provjeri nove poruke u svim mapama';
$labels['displaynext'] = 'Nakon brisanja/micanja poruke, prikaži slijedeću';
$labels['defaultfont'] = 'Predodređeni font HTML poruke';
$labels['mainoptions'] = 'Glavne postavke';
-$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'Sekcija';
$labels['maintenance'] = 'Održavanje';
$labels['newmessage'] = 'Nova poruka';
$labels['signatureoptions'] = 'Postavke potpisa';
$labels['whenreplying'] = 'Prilikom odgovora';
-$labels['replyempty'] = 'do not quote the original message';
$labels['replytopposting'] = 'zapoÄni novu poruku iznad originala';
$labels['replybottomposting'] = 'zapoÄni novu poruku ispod originala';
$labels['replyremovesignature'] = 'Kod odgovaranja, makni originalni potpis iz poruke';
@@ -466,21 +376,13 @@ $labels['afternseconds'] = 'nakon $n sekundi';
$labels['reqmdn'] = 'Uvijek zatraži potvrdu o primitku poruke';
$labels['reqdsn'] = 'Uvijek zatraži potvrdu o slanju poruke';
$labels['replysamefolder'] = 'Spremi odgovore u mapu gdje se nalazi poruka';
-$labels['defaultabook'] = 'Default address book';
$labels['autocompletesingle'] = 'PreskoÄi alternativne email adrese u autocomplete prijedlozima';
-$labels['listnamedisplay'] = 'List contacts as';
$labels['spellcheckbeforesend'] = 'Provjeri pravopis prije slanja poruke';
$labels['spellcheckoptions'] = 'Postavke provjere pravopisa';
$labels['spellcheckignoresyms'] = 'Ignoriraj rijeÄi koje sadrže simbole';
$labels['spellcheckignorenums'] = 'Ignoriraj rijeÄi koje sadrže brojeve';
$labels['spellcheckignorecaps'] = 'Ignoriraj rijeÄi sa sa svim velikim slovima';
$labels['addtodict'] = 'Dodaj u rjeÄnik';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'Mapa';
$labels['folders'] = 'Mape';
$labels['foldername'] = 'Ime mape';
@@ -501,26 +403,19 @@ $labels['foldertype'] = 'Vrsta mape';
$labels['personalfolder'] = 'Privatna mapa';
$labels['otherfolder'] = 'Mapa drugih korisnika';
$labels['sharedfolder'] = 'Javna mapa';
-
$labels['sortby'] = 'Sortiraj po';
$labels['sortasc'] = 'Sortiraj rastućim nizom';
$labels['sortdesc'] = 'Sortiraj opadajućim nizom';
$labels['undo'] = 'Poništi';
-
-$labels['installedplugins'] = 'Installed plugins';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'InaÄica';
$labels['source'] = 'Izvor';
$labels['license'] = 'Licenca';
$labels['support'] = 'Podrška';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Engleski';
$labels['westerneuropean'] = 'Zapadno Evropski';
@@ -539,5 +434,4 @@ $labels['vietnamese'] = 'Vijetnamski';
$labels['japanese'] = 'Japanski';
$labels['korean'] = 'Korejski';
$labels['chinese'] = 'Kineski';
-
?>
diff --git a/program/localization/hr_HR/messages.inc b/program/localization/hr_HR/messages.inc
index 0b96c97f2..2e51848eb 100644
--- a/program/localization/hr_HR/messages.inc
+++ b/program/localization/hr_HR/messages.inc
@@ -15,9 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'Prijava neuspješna';
$messages['cookiesdisabled'] = 'VaÅ¡ Web preglednik ne podržava kolaÄiće (cookies)';
$messages['sessionerror'] = 'Morate se ponovno ulogirati';
@@ -25,17 +22,12 @@ $messages['storageerror'] = 'Neuspješna veza na IMAP server';
$messages['servererror'] = 'Greška poslužitelja';
$messages['servererrormsg'] = 'Greška na serveru: $msg';
$messages['dberror'] = 'Greška baze podataka!';
-$messages['requesttimedout'] = 'Request timed out';
$messages['errorreadonly'] = 'Nemoguća izvedba operacije. Mapa je samo za Äitanje.';
$messages['errornoperm'] = 'Nemoguća izvedba operacije. Dozvola odbijena.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'Nepravilan zahtijev! Podaci nisu spremljeni.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'Nema poruka u sanduÄiću';
$messages['loggedout'] = 'Uspješno ste se odjavili. Zbogom!';
$messages['mailboxempty'] = 'SanduÄuć je prazan';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'UÄitavanje...';
$messages['uploading'] = 'Prenosim datoteku...';
$messages['uploadingmany'] = 'Prenosim datoteke...';
@@ -56,8 +48,6 @@ $messages['contactnotfound'] = 'Traženi kontakt nije pronađen';
$messages['contactsearchonly'] = 'Upišite nekoliko pojmova za pretragu imenika';
$messages['sendingfailed'] = 'Greška pri slanju poruke';
$messages['senttooquickly'] = 'Molimo saÄekajte $sec sek. prije slanja ove poruke';
-$messages['errorsavingsent'] = 'Greška pri spremanju poslane poruke';
-$messages['errorsaving'] = 'Greška pri spremanju';
$messages['errormoving'] = 'Greška pri premještanju poruke';
$messages['errorcopying'] = 'Greška pri kopiranju poruke';
$messages['errordeleting'] = 'Greška pri brisanju poruke';
@@ -101,16 +91,11 @@ $messages['converting'] = 'Formatiranje poruke';
$messages['messageopenerror'] = 'UÄitavanje poruke nije uspjelo';
$messages['fileuploaderror'] = 'Prijenos datoteke nije uspio';
$messages['filesizeerror'] = 'Datoteka je prevelika. Maksimalna veliÄina je $size';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Ovaj resurs adresa je samo za Äitanje';
$messages['errorsavingcontact'] = 'Nije uspjelo spremanje adrese kontakta';
$messages['movingmessage'] = 'Premještanje poruke...';
$messages['copyingmessage'] = 'Kopiranje poruke...';
$messages['copyingcontact'] = 'Kopiram kontakt(e)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'Brisanje poruke...';
$messages['markingmessage'] = 'OznaÄavanje poruke...';
$messages['addingmember'] = 'Dodajem kontakt(e) u grupu...';
@@ -124,13 +109,9 @@ $messages['selectimportfile'] = 'Odaberite datoteku za prijenos';
$messages['addresswriterror'] = 'U odabrani adresar nije moguće zapisivat...';
$messages['contactaddedtogroup'] = 'Kontakti uspješno dodani ovoj grupi';
$messages['contactremovedfromgroup'] = 'Kontakti uspješno izbrisani iz ove grupe';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'Uvozim, molimo saÄekajte...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
$messages['importconfirm'] = '<b>UspjeÅ¡no je uvezeno $inserted kontakt(a), preskoÄeno $skipped već postojećih</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>PreskoÄeno $skipped postojećih unosa</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'Operacija nije dozvoljena!';
$messages['nofromaddress'] = 'Nije upisana e-mail adresa u odabrani identitet';
$messages['editorwarning'] = 'Prebacivanje u Äisti tekstualni ureÄ‘ivaÄ Ä‡e prouzrokovati gubljenje formatiranje teksta. Želite li nastaviti?';
@@ -144,7 +125,6 @@ $messages['smtperror'] = 'SMTP Greška: $msg';
$messages['emailformaterror'] = 'Nepravilna e-mail adresa: $email';
$messages['toomanyrecipients'] = 'Previše primatelja. Smanjite broj primatelja na $max.';
$messages['maxgroupmembersreached'] = 'Broj Älanova grupe prelazi preko maximuma od $max';
-$messages['internalerror'] = 'Dogodila se interna greška. Molimo Vas pokušajte ponovo.';
$messages['contactdelerror'] = 'Kontakti ne mogu biti obrisani.';
$messages['contactdeleted'] = 'Kontakti uspješno obrisani.';
$messages['contactrestoreerror'] = 'Ne mogu vratiti obrisan(e) kontakt(e).';
@@ -170,7 +150,4 @@ $messages['invalidimageformat'] = 'Format slike nije ispravan.';
$messages['mispellingsfound'] = 'Greške pravopisa su pronađene u poruci.';
$messages['parentnotwritable'] = 'Nije moguće stvoriti/pomaknuti mapu u odabranu mapu. Nemate prava pristupa.';
$messages['messagetoobig'] = 'Dio poruke je prevelik za procesiranje.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/hu_HU/labels.inc b/program/localization/hu_HU/labels.inc
index 5e09df163..1a2135433 100644
--- a/program/localization/hu_HU/labels.inc
+++ b/program/localization/hu_HU/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Üdvözli a $product';
$labels['username'] = 'Felhasználónév';
$labels['password'] = 'Jelszó';
$labels['server'] = 'Szerver';
$labels['login'] = 'Bejelentkezés';
-
-// taskbar
$labels['logout'] = 'Kijelentkezés';
$labels['mail'] = 'E-mail';
$labels['settings'] = 'Beállítások';
$labels['addressbook'] = 'Címjegyzék';
-
-// mailbox names
$labels['inbox'] = 'Érkezett levelek';
$labels['drafts'] = 'Piszkozatok';
$labels['sent'] = 'Küldött levelek';
$labels['trash'] = 'Törölt elemek';
$labels['junk'] = 'Kéretlen levelek';
$labels['show_real_foldernames'] = 'Az valós nevek megjelenítése a speciális mappáknál.';
-
-// message listing
$labels['subject'] = 'Tárgy';
$labels['from'] = 'Feladó';
$labels['sender'] = 'Feladó';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Sürgősség';
$labels['organization'] = 'Szervezet';
$labels['readstatus'] = 'Olvasott';
$labels['listoptions'] = 'Üzenetlista beállítások...';
-
$labels['mailboxlist'] = 'Mappák';
$labels['messagesfromto'] = 'Ãœzenetek: $from - $to / $count';
$labels['threadsfromto'] = 'Témák ($from - $to, összesen $count)';
$labels['messagenrof'] = '$nr / $count üzenet';
$labels['fromtoshort'] = '$from – $to / $count';
-
$labels['copy'] = 'Másolás';
$labels['move'] = 'Ãthelyezés';
$labels['moveto'] = 'Ãthelyezés...';
@@ -68,13 +56,9 @@ $labels['download'] = 'letöltés';
$labels['open'] = 'Megnyítás';
$labels['showattachment'] = 'Megjelenítés';
$labels['showanyway'] = 'Megjelnités mindenképpen';
-
$labels['filename'] = 'Fájl neve';
$labels['filesize'] = 'Fájl mérete';
-
$labels['addtoaddressbook'] = 'Hozzáadás a címjegyzékhez';
-
-// weekdays short
$labels['sun'] = 'Vas';
$labels['mon'] = 'Hét';
$labels['tue'] = 'Kedd';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Szer';
$labels['thu'] = 'Csüt';
$labels['fri'] = 'Pén';
$labels['sat'] = 'Szom';
-
-// weekdays long
$labels['sunday'] = 'Vasárnap';
$labels['monday'] = 'Hétfő';
$labels['tuesday'] = 'Kedd';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Szerda';
$labels['thursday'] = 'Csütörtök';
$labels['friday'] = 'Péntek';
$labels['saturday'] = 'Szombat';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Febr';
$labels['mar'] = 'Márc';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Szept';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
-
-// months long
$labels['longjan'] = 'Január';
$labels['longfeb'] = 'Február';
$labels['longmar'] = 'Március';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Szeptember';
$labels['longoct'] = 'Október';
$labels['longnov'] = 'November';
$labels['longdec'] = 'December';
-
$labels['today'] = 'Ma';
-
-// toolbar buttons
$labels['refresh'] = 'Frissítés';
$labels['checkmail'] = 'Új üzenetek ellenőrzése';
$labels['compose'] = 'Üzenet létrehozása';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'További műveletek...';
$labels['more'] = 'Még egy';
$labels['back'] = 'Vissza';
$labels['options'] = 'Beállítások';
-
$labels['select'] = 'Kijelölés';
$labels['all'] = 'Összes';
$labels['none'] = 'Nincs';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Összes kibontása';
$labels['expand-unread'] = 'Olvasatlanok kibontása';
$labels['collapse-all'] = 'Összes összecsukása';
$labels['threaded'] = 'Téma nézet';
-
$labels['autoexpand_threads'] = 'Témák kibontása';
$labels['do_expand'] = 'minden téma';
$labels['expand_only_unread'] = 'csak ahol van olvasatlan üzenet';
@@ -190,16 +163,13 @@ $labels['listcolumns'] = 'Oszlopok listája';
$labels['listsorting'] = 'Rendezés oszlopa';
$labels['listorder'] = 'Rendezés sorrendje';
$labels['listmode'] = 'Megjelenítési mód';
-
$labels['folderactions'] = 'Mappaműveletek...';
$labels['compact'] = 'Tömörítés';
$labels['empty'] = 'Kiürítés';
$labels['importmessages'] = 'Üzenetek importálása';
-
$labels['quota'] = 'Helyfoglalás';
$labels['unknown'] = 'ismeretlen';
$labels['unlimited'] = 'korlátlan';
-
$labels['quicksearch'] = 'Gyorskeresés';
$labels['resetsearch'] = 'Alapállapot';
$labels['searchmod'] = 'Keresési opciók';
@@ -207,13 +177,10 @@ $labels['msgtext'] = 'Teljes üzenet';
$labels['body'] = 'Törzs';
$labels['type'] = 'Típus';
$labels['namex'] = 'Név';
-
$labels['openinextwin'] = 'Megnyitás új ablakban';
$labels['emlsave'] = 'Letöltés (.eml)';
$labels['changeformattext'] = 'Megjelenítés sima szöveges formátumban';
$labels['changeformathtml'] = 'Megjelenítés HTML formátumban';
-
-// message compose
$labels['editasnew'] = 'Szerkesztés újként';
$labels['send'] = 'Küldés';
$labels['sendmessage'] = 'Üzenet küldése';
@@ -225,26 +192,32 @@ $labels['returnreceipt'] = 'Olvasási visszaigazolás';
$labels['dsn'] = 'Kézbesítési visszaigazolás';
$labels['mailreplyintro'] = '$date időpontban $sender ezt írta:';
$labels['originalmessage'] = 'Eredeti üzenet';
-
$labels['editidents'] = 'Azonosítók szerkesztése';
$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['restore'] = 'Visszaállítás';
+$labels['restoremessage'] = 'Üzenet visszaállítás';
+$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';
$labels['uploadprogress'] = '$percent ($current / $total)';
$labels['close'] = 'Bezárás';
$labels['messageoptions'] = 'Üzenetbeállítások...';
-
$labels['low'] = 'Alacsony';
$labels['lowest'] = 'Legkisebb';
$labels['normal'] = 'Normál';
$labels['high'] = 'Magas';
$labels['highest'] = 'Legmagasabb';
-
$labels['nosubject'] = '(nincs tárgy)';
$labels['showimages'] = 'Képek megjelenítése';
$labels['alwaysshow'] = 'Képek megjelenítése mindig, ha a feladó $sender';
@@ -252,25 +225,19 @@ $labels['isdraft'] = 'Ez egy piszkozat.';
$labels['andnmore'] = 'további $nr...';
$labels['togglemoreheaders'] = 'Több üzenet fejrész(header) megjelenítése';
$labels['togglefullheaders'] = 'Nyers üzenet fejléc megjelenítés- elrejtés';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Egyszerű szöveg';
$labels['savesentmessagein'] = 'Elküldött üzenet mentése ide';
$labels['dontsave'] = 'nincs mentés';
$labels['maxuploadsize'] = 'A maximális feltölthető fájl mérete $size';
-
$labels['addcc'] = 'Cc (Másolati cím) hozzáadása';
$labels['addbcc'] = 'Bcc (titkos másolati cím) hozzáadása';
$labels['addreplyto'] = 'Válaszcím hozzáadása';
$labels['addfollowupto'] = 'Hírcsoport válasz hozzáadása';
-
-// mdn
$labels['mdnrequest'] = 'Az üzenet küldője értesítést kér arról, hogy elolvasta a levelet. El legyen küldve az olvasási visszaigazolás?';
$labels['receiptread'] = 'Olvasási visszaigazolás (olvasott)';
$labels['yourmessage'] = 'Ez az üzenete olvasási visszaigazolása';
$labels['receiptnote'] = 'Megjegyzés: Ez az olvasási visszaigazolás csak azt igazolja, hogy az üzenet megjelenítésre került a címzett számítógépén. Nincs rá garancia, hogy a címzett elolvasta volna az üzenetet illetve megértette volna annak tartalmát.';
-
-// address boook
$labels['name'] = 'Megjelenített név';
$labels['firstname'] = 'Keresztnév';
$labels['surname'] = 'Vezetéknév';
@@ -305,7 +272,6 @@ $labels['search'] = 'Keresés';
$labels['advsearch'] = 'Részletes keresés';
$labels['advanced'] = 'Haladó';
$labels['other'] = 'Egyéb';
-
$labels['typehome'] = 'Otthon';
$labels['typework'] = 'Munkahely';
$labels['typeother'] = 'Egyéb';
@@ -320,14 +286,12 @@ $labels['typeassistant'] = 'Asszisztens';
$labels['typehomepage'] = 'Weboldal';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Új mező hozzáadása...';
$labels['addcontact'] = 'Új kapcsolat hozzáadása';
$labels['editcontact'] = 'Kapcsolat szerkesztése';
$labels['contacts'] = 'Kapcsolatok';
$labels['contactproperties'] = 'Kapcsolat tulajdonságai';
$labels['personalinfo'] = 'Személyes adatok';
-
$labels['edit'] = 'Szerkesztés';
$labels['cancel'] = 'Mégsem';
$labels['save'] = 'Mentés';
@@ -336,7 +300,6 @@ $labels['rename'] = 'Ãtnevezés';
$labels['addphoto'] = 'Kép hozzáadása';
$labels['replacephoto'] = 'Kép cseréje';
$labels['uploadphoto'] = 'Fotó feltöltése';
-
$labels['newcontact'] = 'Új kapcsolat létrehozása';
$labels['deletecontact'] = 'Kijelölt kapcsolatok törlése';
$labels['composeto'] = 'E-mail küldése erre a címre';
@@ -350,20 +313,16 @@ $labels['newcontactgroup'] = 'Új csoport';
$labels['grouprename'] = 'Csoport átnevezése';
$labels['groupdelete'] = 'Csoport törlése';
$labels['groupremoveselected'] = 'A kijelölt partnerek törlése a csopotból';
-
$labels['previouspage'] = 'Előző oldal';
$labels['firstpage'] = 'Első oldal';
$labels['nextpage'] = 'Következő oldal';
$labels['lastpage'] = 'Utolsó oldal';
-
$labels['group'] = 'Csoport';
$labels['groups'] = 'Csoportok';
$labels['listgroup'] = 'Csoport tagjainak listája';
$labels['personaladrbook'] = 'Személyes címjegyzék';
-
$labels['searchsave'] = 'Keresés mentése';
$labels['searchdelete'] = 'Keresés törlése';
-
$labels['import'] = 'Importálás';
$labels['importcontacts'] = 'Kapcsolatok importálása';
$labels['importfromfile'] = 'Importálás fájlból:';
@@ -374,21 +333,16 @@ $labels['importgroupsall'] = 'Mind(csoport létrehozása amennyiben szükséges)
$labels['importgroupsexisting'] = 'Csak már létező csoportoknak';
$labels['importdesc'] = 'Feltölthetsz partnereket egyébb már létező címjegyzékekből. <br/>Jelenleg a következő két tipusú címjegyzékek importálása lehetséges <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> és a CSV (comma-separated/vesszővel tagolt) formátum.';
$labels['done'] = 'Kész';
-
-// settings
$labels['settingsfor'] = 'Beállítás';
$labels['about'] = 'Névjegy';
$labels['preferences'] = 'Beállítások';
$labels['userpreferences'] = 'Felhasználói beállítások';
$labels['editpreferences'] = 'Felhasználói beállítások szerkesztése';
-
$labels['identities'] = 'Azonosítók';
$labels['manageidentities'] = 'Hozzáférés azonosítóinak kezelése';
$labels['newidentity'] = 'Új azonosító';
-
$labels['newitem'] = 'Új elem';
$labels['edititem'] = 'Elem szerkesztése';
-
$labels['preferhtml'] = 'HTML megjelenítés';
$labels['defaultcharset'] = 'Alapértelmezett karakterkódolás';
$labels['htmlmessage'] = 'HTML üzenet';
@@ -484,7 +438,9 @@ $labels['standardwindows'] = 'A felugró ablakok használata szokásos ablakkén
$labels['forwardmode'] = 'Üzenet továbbítás';
$labels['inline'] = 'beágyazott';
$labels['asattachment'] = 'csatolmányként';
-
+$labels['replyallmode'] = 'Alapértelemezett művelete a [Válasz mindenkinek] gombnak';
+$labels['replyalldefault'] = 'válasz mindenkinek';
+$labels['replyalllist'] = 'válasz a csak a levelező listára(ha levelezőlista)';
$labels['folder'] = 'Mappa';
$labels['folders'] = 'Mappák';
$labels['foldername'] = 'Mappa neve';
@@ -505,26 +461,20 @@ $labels['foldertype'] = 'Mappa típusa';
$labels['personalfolder'] = 'Privát mappa';
$labels['otherfolder'] = 'Más felhasználó(k) mappája';
$labels['sharedfolder'] = 'Megosztott mappa';
-
$labels['sortby'] = 'Rendezés';
$labels['sortasc'] = 'növekvő';
$labels['sortdesc'] = 'csökkenő';
$labels['undo'] = 'Visszavonás';
-
$labels['installedplugins'] = 'Telepített bővítmények';
$labels['plugin'] = 'Bővítmény';
$labels['version'] = 'Verzió';
$labels['source'] = 'Forrás';
$labels['license'] = 'Licensz';
$labels['support'] = 'Támogatás';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Angol';
$labels['westerneuropean'] = 'Nyugat-európai';
@@ -543,5 +493,4 @@ $labels['vietnamese'] = 'Vietnámi';
$labels['japanese'] = 'Japán';
$labels['korean'] = 'Koreai';
$labels['chinese'] = 'Kínai';
-
?>
diff --git a/program/localization/hu_HU/messages.inc b/program/localization/hu_HU/messages.inc
index d54589f42..f7eaa1394 100644
--- a/program/localization/hu_HU/messages.inc
+++ b/program/localization/hu_HU/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Hiba történt!';
$messages['loginfailed'] = 'Sikertelen bejelentkezés.';
$messages['cookiesdisabled'] = 'A böngésző nem támogatja a sütik használatát';
@@ -46,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';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'Legalább egy címzettet adjon meg';
$messages['nosubjectwarning'] = 'A Tárgy mező üres. Szeretné most kitölteni?';
$messages['nobodywarning'] = 'Elküldi az üzenetet üresen?';
$messages['notsentwarning'] = 'Az üzenet még nem lett elküldve. Eldobja az üzenetet?';
+$messages['restoresavedcomposedata'] = 'Egy elkezdett de el nem küldött üzenetet talált a program.\n\Tárgy: $subject\nMentve: $date\n\nSzeretnéd visszaállítani és folytatni ez az üzenetet?';
$messages['noldapserver'] = 'Adjon meg egy LDAP szervert a kereséshez';
$messages['nosearchname'] = 'Adja meg a kapcsolat nevét vagy e-mail címét';
$messages['notuploadedwarning'] = 'Még nem került feltöltésre minden csatolmány. Kérem várjon vagy állítsa le a feltöltést!';
@@ -144,7 +145,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['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';
@@ -172,5 +173,4 @@ $messages['parentnotwritable'] = 'Nem sikerült a mappa létrehozása/mozgatása
$messages['messagetoobig'] = 'Az üzenetrész túl nagy a feldolgozáshoz.';
$messages['attachmentvalidationerror'] = 'FIGYELEM! A csatalmány veszélyes lehet, mert a típusa nem egyezik az üzenetben beállított típussal. Amennyiben nem megbizható az üzenet küldője, ne nyissa meg a csatolmányt a böngészőben mert ártalmas lehet a tartalma.<br/><br/><em>Üzenetben beállított tipus: $expected; az érzékelt típus: $detected</em>';
$messages['noscriptwarning'] = 'FIGYELEM: Ez webmail szolgáltatása igényli a Javascript futtatásának a lehetőségét! Amennyiben használni szeretné, engedélyezze a JavaScript futtatását a böngészőjének a beállatásaiban.';
-
?>
diff --git a/program/localization/hy_AM/labels.inc b/program/localization/hy_AM/labels.inc
index 8ee9316c4..fec95f3cd 100644
--- a/program/localization/hy_AM/labels.inc
+++ b/program/localization/hy_AM/labels.inc
@@ -15,34 +15,22 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Ô²Õ¡Ö€Õ« Õ£Õ¡Õ¬Õ¸Ö‚Õ½Õ¿ $product';
$labels['username'] = 'Õ•Õ£Õ¿Õ¾Õ¸Õ²';
$labels['password'] = 'Ô³Õ¡Õ²Õ¿Õ¶Õ¡Õ¢Õ¡Õ¼';
$labels['server'] = 'ÕÕ¥Ö€Õ¾Õ¥Ö€';
$labels['login'] = 'Õ„Õ¸Ö‚Õ¿Ö„';
-
-// taskbar
$labels['logout'] = 'ÔµÕ¬Ö„';
$labels['mail'] = 'Էլ–փոստ';
$labels['settings'] = 'Õ†Õ¡Õ­Õ¡Õ½Õ«Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€';
$labels['addressbook'] = 'Õ€Õ¡Õ½ÖÕ¥Õ¶Õ¥Ö€';
-
-// mailbox names
$labels['inbox'] = 'Õ“Õ¸Õ½Õ¿Õ¡Ö€Õ¯Õ²';
$labels['drafts'] = 'ÕÖ‡Õ¡Õ£Ö€Õ¥Ö€';
$labels['sent'] = 'ÕˆÖ‚Õ²Õ¡Ö€Õ¯Õ¾Õ¡Õ®';
$labels['trash'] = 'Ô±Õ²Õ¢Õ¡Ö€Õ¯Õ²';
$labels['junk'] = 'Ô¹Õ¡ÖƒÕ¸Õ¶';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'ÕŽÕ¥Ö€Õ¶Õ¡Õ£Õ«Ö€';
$labels['from'] = 'ÕˆÖ‚Õ²Õ¡Ö€Õ¯Õ¸Õ²';
-$labels['sender'] = 'Sender';
$labels['to'] = 'ÕÕ¿Õ¡ÖÕ¸Õ²';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
@@ -54,27 +42,18 @@ $labels['priority'] = 'Ô±Õ¼Õ¡Õ¾Õ¥Õ¬Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶';
$labels['organization'] = 'Ô¿Õ¡Õ¦Õ´Õ¡Õ¯Õ¥Ö€ÕºÕ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶';
$labels['readstatus'] = 'Ô¸Õ¶Õ©Õ¥Ö€ÖÕ´Õ¡Õ¶ Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ«Õ³Õ¡Õ¯';
$labels['listoptions'] = 'Õ‘Õ¸Ö‚ÖÕ¡Õ¯Õ« ընտրանքներ…';
-
$labels['mailboxlist'] = 'Ô´Õ¡Ö€Õ¡Õ¯Õ¶Õ¥Ö€';
$labels['messagesfromto'] = 'Õ†Õ¡Õ´Õ¡Õ¯Õ¶Õ¥Ö€ $fromâ€“Õ«Ö $to–ը Õ¥Õ²Õ¡Õ® $count–իÖ';
$labels['threadsfromto'] = 'Ô¹Õ¥Õ´Õ¡Õ¶Õ¥Ö€ $from-Õ«Ö $to Õ¨Õ¶Õ¤Õ°Õ¡Õ¶Õ¸Ö‚Ö€ $count-Õ«Ö';
$labels['messagenrof'] = 'Õ†Õ¡Õ´Õ¡Õ¯ $nr Õ¥Õ²Õ¡Õ® $count–իÖ';
$labels['fromtoshort'] = '$from-Õ«Ö $to Õ¨Õ¶Õ¤Õ°Õ¡Õ¶Õ¸Ö‚Ö€ $count-Õ«Ö';
-
$labels['copy'] = 'Cc';
$labels['move'] = 'ÕÕ¥Õ²Õ¡ÖƒÕ¸Õ­Õ¥Õ¬';
$labels['moveto'] = 'ÕÕ¥Õ²Õ¡ÖƒÕ¸Õ­Õ¥Õ¬...';
$labels['download'] = 'Õ”Õ¡Õ·Õ¥Õ¬';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'Õ–Õ¡ÕµÕ¬Õ« Õ¡Õ¶Õ¸Ö‚Õ¶';
$labels['filesize'] = 'Õ–Õ¡ÕµÕ¬Õ« Õ¹Õ¡Öƒ';
-
$labels['addtoaddressbook'] = 'Õ€Õ«Õ·Õ¥Õ¬ Õ°Õ¡Õ½ÖÕ¥Õ¶';
-
-// weekdays short
$labels['sun'] = 'Ô¿Õ«Ö€';
$labels['mon'] = 'ÔµÖ€Õ¯';
$labels['tue'] = 'ÔµÖ€Ö„';
@@ -82,8 +61,6 @@ $labels['wed'] = 'Õ‰Ö€Ö„';
$labels['thu'] = 'Õ€Õ¶Õ£';
$labels['fri'] = 'ÕˆÖ‚Ö€Õ¢';
$labels['sat'] = 'Õ‡Õ¢Õ©';
-
-// weekdays long
$labels['sunday'] = 'Ô¿Õ«Ö€Õ¡Õ¯Õ«';
$labels['monday'] = 'ÔµÖ€Õ¯Õ¸Ö‚Õ·Õ¡Õ¢Õ©Õ«';
$labels['tuesday'] = 'ÔµÖ€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«';
@@ -91,8 +68,6 @@ $labels['wednesday'] = 'Õ‰Õ¸Ö€Õ¥Ö„Õ·Õ¡Õ¢Õ©Õ«';
$labels['thursday'] = 'Õ€Õ«Õ¶Õ£Õ·Õ¡Õ¢Õ©Õ«';
$labels['friday'] = 'ÕˆÖ‚Ö€Õ¢Õ¡Õ©';
$labels['saturday'] = 'Õ‡Õ¡Õ¢Õ¡Õ©';
-
-// months short
$labels['jan'] = 'Õ€Õ¶Õ¾';
$labels['feb'] = 'Õ“Õ¥Õ¿';
$labels['mar'] = 'Õ„Õ¡Ö€';
@@ -105,8 +80,6 @@ $labels['sep'] = 'ÕÕ¥Õº';
$labels['oct'] = 'Õ€Õ¸Õ¯';
$labels['nov'] = 'Õ†Õ¸Õµ';
$labels['dec'] = 'Ô´Õ¥Õ¯';
-
-// months long
$labels['longjan'] = 'Õ€Õ¸Ö‚Õ¶Õ¾Õ¡Ö€';
$labels['longfeb'] = 'Õ“Õ¥Õ¿Ö€Õ¾Õ¡Ö€';
$labels['longmar'] = 'Õ„Õ¡Ö€Õ¿';
@@ -119,10 +92,7 @@ $labels['longsep'] = 'ÕÕ¥ÕºÕ¿Õ¥Õ´Õ¢Õ¥Ö€';
$labels['longoct'] = 'Õ€Õ¸Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€';
$labels['longnov'] = 'Õ†Õ¸ÕµÕ¥Õ´Õ¢Õ¥Ö€';
$labels['longdec'] = 'Ô´Õ¥Õ¯Õ¿Õ¥Õ´Õ¢Õ¥Ö€';
-
$labels['today'] = 'Ô±ÕµÕ½Ö…Ö€';
-
-// toolbar buttons
$labels['refresh'] = 'Ô¹Õ¡Ö€Õ´Õ¡ÖÕ¶Õ¥Õ¬';
$labels['checkmail'] = 'ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ Õ¶Õ¸Ö€ Õ¶Õ¡Õ´Õ¡Õ¯Õ¶Õ¥Ö€Õ¨';
$labels['compose'] = 'Ô³Ö€Õ¥Õ¬ Õ¶Õ¡Õ´Õ¡Õ¯';
@@ -155,7 +125,6 @@ $labels['moreactions'] = 'Õ€Õ¡Õ¾Õ¥Õ¬ÕµÕ¡Õ¬ Õ£Õ¸Ö€Õ®Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€
$labels['more'] = 'Ô±Õ¾Õ¥Õ¬Õ«Õ¶';
$labels['back'] = 'ÔµÕ¿';
$labels['options'] = 'Ô¸Õ¶Õ¿Ö€Õ¡Õ¶Ö„Õ¶Õ¥Ö€';
-
$labels['select'] = 'Õ†Õ·Õ¥Õ¬';
$labels['all'] = 'Ô²Õ¸Õ¬Õ¸Ö€Õ¨';
$labels['none'] = 'Õ‰Õ¶Õ·Õ¥Õ¬';
@@ -163,9 +132,7 @@ $labels['currpage'] = 'Ô±Õ¼Õ¯Õ¡ Õ§Õ»';
$labels['unread'] = 'Õ‰Õ¯Õ¡Ö€Õ¤Õ¡ÖÕ¡Õ®Õ¨';
$labels['flagged'] = 'Õ†Õ·Õ¾Õ¡Õ®';
$labels['unanswered'] = 'Ô±Õ¶ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'Õ‹Õ¶Õ»Õ¾Õ¡Õ®';
-$labels['undeleted'] = 'Not deleted';
$labels['invert'] = 'Õ“Õ¸Õ­Õ¡Õ¿Õ¥Õ²Õ¥Õ¬';
$labels['filter'] = 'Ô¶Õ¿Õ«Õ¹';
$labels['list'] = 'Õ‘Õ¸Ö‚ÖÕ¡Õ¯';
@@ -174,7 +141,6 @@ $labels['expand-all'] = 'Ô¸Õ¶Õ¤Õ¬Õ¡ÕµÕ¶Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€Õ¨';
$labels['expand-unread'] = 'Ô¸Õ¶Õ¤Õ¬Õ¡ÕµÕ¶Õ¥Õ¬ Õ¹Õ¯Õ¡Ö€Õ¤Õ¡ÖÕ¾Õ¡Õ®Õ¨';
$labels['collapse-all'] = 'Õ“Õ¬Õ¹Õ¥Õ¬ Õ¢Õ¸Õ¬Õ¸Ö€Õ¨';
$labels['threaded'] = 'Ô¹Õ¥Õ´Õ¡Õ¾Õ¸Ö€Õ¾Õ¡Õ®';
-
$labels['autoexpand_threads'] = 'Ô²Õ¡Ö Õ¡Õ¶Õ¥Õ¬ Õ©Õ¥Õ´Õ¡Õ¶Õ¥Ö€Õ¨';
$labels['do_expand'] = 'Õ¢Õ¸Õ¬Õ¸Ö€ Õ©Õ¥Õ´Õ¡Õ¶Õ¥Ö€Õ¨';
$labels['expand_only_unread'] = 'Õ´Õ«Õ¡ÕµÕ¶ Õ¹Õ¯Õ¡Ö€Õ¤Õ¡ÖÕ¾Õ¡Õ® Õ°Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¸Õ¾';
@@ -190,31 +156,19 @@ $labels['listcolumns'] = 'Õ‘Õ¸Ö‚ÖÕ¡Õ¯Õ« Õ½ÕµÕ¸Ö‚Õ¶ÕµÕ¡Õ¯Õ¶Õ¥Ö€';
$labels['listsorting'] = 'ÕÕ¥Õ½Õ¡Õ¯Õ¡Õ¾Õ¸Ö€Õ´Õ¡Õ¶ Õ½ÕµÕ¸Ö‚Õ¶ÕµÕ¡Õ¯';
$labels['listorder'] = 'ÕÕ¥Õ½Õ¡Õ¯Õ¡Õ¾Õ¸Ö€Õ´Õ¡Õ¶ Õ¯Õ¡Ö€Õ£Õ¨';
$labels['listmode'] = 'Õ‘Õ¸Ö‚ÖÕ¡Õ¯Õ¸Õ¾ Õ¿Õ¥Õ½Ö„Õ« Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯Õ¨';
-
$labels['folderactions'] = 'Պանակի գործողություններ…';
$labels['compact'] = 'ÕÕ¥Õ²Õ´Õ¥Õ¬';
$labels['empty'] = 'Ô´Õ¡Õ¿Õ¡Ö€Õ¯Õ¥Õ¬';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Ô´Õ«Õ½Õ¯Õ¡ÕµÕ«Õ¶ Õ¿Õ¡Ö€Õ¡Õ®Ö„';
$labels['unknown'] = 'Õ¡Õ¶Õ°Õ¡ÕµÕ¿';
$labels['unlimited'] = 'Õ¡Õ¶Õ½Õ¡Õ°Õ´Õ¡Õ¶Õ¡ÖƒÕ¡Õ¯';
-
$labels['quicksearch'] = 'Ô±Ö€Õ¡Õ£ Õ¸Ö€Õ¸Õ¶Õ¸Ö‚Õ´';
$labels['resetsearch'] = 'ÕŽÕ¥Ö€Õ½Õ¯Õ½Õ¥Õ¬ Õ¸Ö€Õ¸Õ¶Õ¸Ö‚Õ´Õ¨';
$labels['searchmod'] = 'ÕˆÖ€Õ¸Õ¶Õ´Õ¡Õ¶ ÖƒÕ¸ÖƒÕ¸Õ­Õ«Õ¹Õ¶Õ¥Ö€';
$labels['msgtext'] = 'ÕˆÕ²Õ» Õ°Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'Ô²Õ¡ÖÕ¥Õ¬ Õ¶Õ¸Ö€ ÕºÕ¡Õ¿Õ¸Ö‚Õ°Õ¡Õ¶Õ¸Ö‚Õ´';
$labels['emlsave'] = 'Õ†Õ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬ (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ¸Ö€ÕºÕ¥Õ½ Õ¶Õ¸Ö€';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'ÕˆÖ‚Õ²Õ¡Ö€Õ¯Õ¥Õ¬';
$labels['savemessage'] = 'Õ€Õ«Õ·Õ¥Õ¬ Õ¸Ö€ÕºÕ¥Õ½ Õ½Ö‡Õ¡Õ£Õ«Ö€';
$labels['addattachment'] = 'Ô¿ÖÕ¥Õ¬ Ö†Õ¡ÕµÕ¬';
@@ -224,52 +178,39 @@ $labels['returnreceipt'] = 'ÕÕ¿Õ¡ÖÕ´Õ¡Õ¶ Õ°Õ¡Õ¾Õ¡Õ½Õ¿Õ¡Õ£Õ«Ö€';
$labels['dsn'] = 'Ô±Õ¼Õ¡Ö„Õ´Õ¡Õ¶ Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ«Õ³Õ¡Õ¯Õ« Õ®Õ¡Õ¶Õ¸Ö‚ÖÕ¸Ö‚Õ´';
$labels['mailreplyintro'] = '$date-Õ«Õ¶, $sender-Õ¨ Õ£Ö€Õ¥Ö.';
$labels['originalmessage'] = 'Ô±Õ¼Õ¡Õ»Õ«Õ¶ Õ°Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨';
-
$labels['editidents'] = 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ«Õ¶Ö„Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€Õ¨';
$labels['spellcheck'] = 'ÕÕ¡Õ¼Õ¡Õ½Õ­Õ¡Õ¬Õ¶Õ¥Ö€';
$labels['checkspelling'] = 'ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ Õ¸Ö‚Õ²Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨';
$labels['resumeediting'] = 'Õ‡Õ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¥Õ¬ Õ­Õ´Õ¢Õ¡Õ£Ö€Õ¸Ö‚Õ´Õ¨';
$labels['revertto'] = 'ÕŽÕ¥Ö€Õ¡Õ¯Õ¡Õ¶Õ£Õ¶Õ¥Õ¬';
-
$labels['attach'] = 'Ô¿ÖÕ¥Õ¬';
$labels['attachments'] = 'Ô¿ÖÕ¸Ö‚Õ´Õ¶Õ¥Ö€';
$labels['upload'] = 'Ô²Õ¥Õ¼Õ¶Õ¥Õ¬';
$labels['uploadprogress'] = '$percent ($current $total-Õ«Ö)';
$labels['close'] = 'Õ“Õ¡Õ¯Õ¥Õ¬';
$labels['messageoptions'] = 'Հաղորդագրության ընտրանքներ…';
-
$labels['low'] = 'Õ‘Õ¡Õ®Ö€';
$labels['lowest'] = 'Õ†Õ¾Õ¡Õ¦Õ¡Õ£Õ¸Ö‚ÕµÕ¶';
$labels['normal'] = 'Õ†Õ¸Ö€Õ´Õ¡Õ¬';
$labels['high'] = 'Ô¿Õ¡Ö€Ö‡Õ¸Ö€';
$labels['highest'] = 'Ô¿Õ¡Ö€Ö‡Õ¸Ö€Õ¡Õ£Õ¸Ö‚ÕµÕ¶';
-
$labels['nosubject'] = '(Õ¡Õ¼Õ¡Õ¶Ö Õ¾Õ¥Ö€Õ¶Õ¡Õ£Ö€Õ«)';
$labels['showimages'] = 'Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¶Õ¯Õ¡Ö€Õ¶Õ¥Ö€Õ¨';
$labels['alwaysshow'] = 'Õ„Õ«Õ·Õ¿ ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¶Õ¥Ö€Õ¨ $sender–իÖ';
$labels['isdraft'] = 'ÕÕ¡ Õ°Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ½Ö‡Õ¡Õ£Õ«Ö€ Õ§';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'ÕŠÕ¡Ö€Õ¦ Õ¿Õ¥Ö„Õ½Õ¿';
$labels['savesentmessagein'] = 'Ô³Ö€Õ¡Õ¶ÖÕ¥Õ¬ Õ¸Ö‚Õ²Õ¡Ö€Õ¯Õ¾Õ¡Õ® Õ¶Õ¡Õ´Õ¡Õ¯Õ¨';
$labels['dontsave'] = 'Õ‰Õ›Õ£Ö€Õ¡Õ¶ÖÕ¥Õ¬';
$labels['maxuploadsize'] = 'Ô±Õ¼Õ¡Õ¾Õ¥Õ¬Õ¡Õ£Õ¸Ö‚ÕµÕ¶ Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¥Õ¬Õ« Ö†Õ¡ÕµÕ¬Õ« Õ¹Õ¡ÖƒÕ¨ $size Õ§';
-
$labels['addcc'] = 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Cc';
$labels['addbcc'] = 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Bcc';
$labels['addreplyto'] = 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Reply-To';
$labels['addfollowupto'] = 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Õ°Õ¡Õ¾Õ¥Õ¬Õ¸Ö‚Õ´';
-
-// mdn
$labels['mdnrequest'] = 'Õ†Õ¡Õ´Õ¡Õ¯Õ« Õ°Õ¥Õ²Õ«Õ¶Õ¡Õ¯Õ¨ Õ­Õ¶Õ¤Ö€Õ¥Õ¬ Õ§ Õ¶Õ¡Õ´Õ¡Õ¯Õ¨ Õ¯Õ¡Ö€Õ¤Õ¡Õ¬Õ¸Ö‚Õ¶ ÕºÕ¥Õ½ Õ¿Õ¥Õ²Õ¥Õ¯Õ¡ÖÕ¶Õ¥Õ¬ Õ«Ö€Õ¥Õ¶Ö‰ Õ‘Õ¡Õ¶Õ¯Õ¡Õ¶Õ¸Ö‚Õ´ Õ§Ö„ ÕÕ¥Õ²Õ¥Õ¯Õ¡ÖÕ¶Õ¥ÕžÕ¬Ö‰';
$labels['receiptread'] = 'Õ†Õ¡Õ´Õ¡Õ¯Õ« Õ¨Õ¶Õ©Õ¥Ö€ÖÕ´Õ¡Õ¶ Õ®Õ¡Õ¶Õ¸Ö‚ÖÕ¡Õ£Õ«Ö€';
$labels['yourmessage'] = 'ÕÕ¡ ÕÕ¥Ö€ Õ¶Õ¡Õ´Õ¡Õ¯Õ« Õ¨Õ¶Õ©Õ¥Ö€ÖÕ´Õ¡Õ¶ Õ®Õ¡Õ¶Õ¸Ö‚ÖÕ¡Õ£Õ«Ö€Õ¶ Õ§';
$labels['receiptnote'] = 'Õ†Õ·Õ¸Ö‚Õ´Õ Ô±ÕµÕ½ Õ®Õ¡Õ¶Õ¸Ö‚ÖÕ¡Õ£Õ«Ö€Õ¨ Õ¨Õ¶Õ¤Õ¡Õ´Õ¥Õ¶Õ¨ Õ¿Õ¥Õ²Õ¥Õ¯Õ¡ÖÕ¶Õ¸Ö‚Õ´ Õ§, Õ¸Ö€ Õ¶Õ¡Õ´Õ¡Õ¯Õ¨ ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¾Õ¥Õ¬ Õ§ Õ°Õ¡Õ½ÖÕ¥Õ¡Õ¿Õ«Ö€Õ¸Õ» Õ°Õ¡Õ´Õ¡Õ¯Õ¡Ö€Õ¹Õ¸Õ¾Ö‰ Õ‰Õ¯Õ¡ Õ¸Ö€Ö‡Õ«ÖÕ¥ Õ¥Ö€Õ¡Õ·Õ­Õ«Ö„, Õ¸Ö€ Õ°Õ¡Õ½ÖÕ¥Õ¡Õ¿Õ¥Ö€Õ¨ Õ«Õ½Õ¯Õ¡ÕºÕ¥Õ½ Õ¯Õ¡Ö€Õ¤Õ¡ÖÕ¥Õ¬ Õ§ Õ¶Õ¡Õ´Õ¡Õ¯Õ¨Ö‰';
-
-// address boook
$labels['name'] = 'Õ„Õ¡Õ¯Õ¡Õ¶Õ¸Ö‚Õ¶';
$labels['firstname'] = 'Ô±Õ¶Õ¸Ö‚Õ¶';
$labels['surname'] = 'Ô±Õ¦Õ£Õ¡Õ¶Õ¸Ö‚Õ¶';
@@ -304,7 +245,6 @@ $labels['search'] = 'ÕˆÖ€Õ¸Õ¶Õ¸Ö‚Õ´';
$labels['advsearch'] = 'Ô½Õ¸Ö€Õ¡ÖÕ¾Õ¡Õ® Õ¸Ö€Õ¸Õ¶Õ¸Ö‚Õ´';
$labels['advanced'] = 'Ô½Õ¸Ö€Õ¡ÖÕ¾Õ¡Õ®';
$labels['other'] = 'Ô±ÕµÕ¬';
-
$labels['typehome'] = 'ÕÕ¸Ö‚Õ¶';
$labels['typework'] = 'Ô±Õ·Õ­Õ¡Õ¿Õ¡Õ¶Ö„';
$labels['typeother'] = 'Ô±ÕµÕ¬';
@@ -319,14 +259,12 @@ $labels['typeassistant'] = 'Õ•Õ£Õ¶Õ¡Õ¯Õ¡Õ¶';
$labels['typehomepage'] = 'ÕÕ¯Õ«Õ¦Õ¢';
$labels['typeblog'] = 'Ô²Õ¬Õ¸Õ£';
$labels['typeprofile'] = 'ÕŠÖ€Õ¸Ö†Õ¡ÕµÕ¬';
-
$labels['addfield'] = 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ դաշտ…';
$labels['addcontact'] = 'Ô³Ö€Õ¡Õ¶ÖÕ¥Õ¬ Õ¶Õ·Õ¡Õ® Õ°Õ¡Õ½ÖÕ¥Õ¶';
$labels['editcontact'] = 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ°Õ¡Õ½ÖÕ¥Õ¶';
$labels['contacts'] = 'Ô¿Õ¡ÕºÕ¸Ö€Õ¤Õ¶Õ¥Ö€';
$labels['contactproperties'] = 'Ô¿Õ¡ÕºÕ¸Ö€Õ¤Õ« Õ°Õ¡Õ¿Õ¯Õ¡Õ¶Õ«Õ·Õ¶Õ¥Ö€';
$labels['personalinfo'] = 'Ô±Õ¶Õ±Õ¶Õ¡Õ¯Õ¡Õ¶ Õ¿Õ¾ÕµÕ¡Õ¬Õ¶Õ¥Ö€';
-
$labels['edit'] = 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬';
$labels['cancel'] = 'Õ‰Õ¥Õ²Õ¡Ö€Õ¯Õ¥Õ¬';
$labels['save'] = 'Õ€Õ«Õ·Õ¥Õ¬';
@@ -335,61 +273,44 @@ $labels['rename'] = 'ÕŽÕ¥Ö€Õ¡Õ¶Õ¾Õ¡Õ¶Õ¥Õ¬';
$labels['addphoto'] = 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬';
$labels['replacephoto'] = 'Õ“Õ¸Õ­Õ¡Ö€Õ«Õ¶Õ¥Õ¬';
$labels['uploadphoto'] = 'ÕŽÕ¥Ö€Õ¢Õ¥Õ¼Õ¶Õ¥Õ¬ Õ¬Õ¸Ö‚Õ½Õ¡Õ¶Õ¯Õ¡Ö€';
-
$labels['newcontact'] = 'ÕÕ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ¶Õ¸Ö€ Õ°Õ¡Õ½ÖÕ¥Ö„Õ¡Ö€Õ¿';
$labels['deletecontact'] = 'Õ‹Õ¶Õ»Õ¥Õ¬ Õ¶Õ·Õ¡Õ® Õ¶Õ¡Õ´Õ¡Õ¯Õ¶Õ¥Ö€Õ¨';
$labels['composeto'] = 'Ô³Ö€Õ¥Õ¬ Õ¶Õ¡Õ´Õ¡Õ¯';
$labels['contactsfromto'] = 'Õ€Õ¡Õ½ÖÕ¥Õ¶Õ¥Ö€ $fromâ€“Õ«Ö $to–ը Õ¥Õ²Õ¡Õ® $count–իÖ';
$labels['print'] = 'ÕÕºÕ¥Õ¬';
$labels['export'] = 'Ô±Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ¥Õ¬';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'Ô±Ö€Õ¿Õ¡Õ°Õ¡Õ¶Õ¥Õ¬ Õ°Õ¡Õ½ÖÕ¥Õ¶Õ¥Ö€Õ¨ vCard Õ¹Õ¡ÖƒÕ¡Õ±Ö‡Õ¸Õ¾';
$labels['newcontactgroup'] = 'ÕÕ¿Õ¥Õ²Õ®Õ¥Õ¬ Õ¯Õ¡ÕºÕ¸Ö€Õ¤Õ¶Õ¥Ö€Õ« Õ¶Õ¸Ö€ Õ­Õ¸Ö‚Õ´Õ¢';
$labels['grouprename'] = 'ÕŽÕ¥Ö€Õ¡Õ¶Õ¾Õ¡Õ¶Õ¥Õ¬ Õ­Õ¸Ö‚Õ´Õ¢Õ¨';
$labels['groupdelete'] = 'Õ‹Õ¶Õ»Õ¥Õ¬ Õ­Õ¸Ö‚Õ´Õ¢Õ¨';
$labels['groupremoveselected'] = 'Õ€Õ¥Õ¼Õ¡ÖÕ¶Õ¥Õ¬ Õ¶Õ·Õ¾Õ¡Õ® Õ¡Õ¶Õ±Õ¡Õ¶Ö Õ­Õ´Õ¢Õ«Ö';
-
$labels['previouspage'] = 'Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¶Õ¡Õ­Õ¸Ö€Õ¤ Õ§Õ»Õ¨';
$labels['firstpage'] = 'Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¡Õ¼Õ¡Õ»Õ«Õ¶ Õ§Õ»Õ¨';
$labels['nextpage'] = 'Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ°Õ¡Õ»Õ¸Ö€Õ¤ Õ§Õ»Õ¨';
$labels['lastpage'] = 'Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¾Õ¥Ö€Õ»Õ«Õ¶ Õ§Õ»Õ¨';
-
$labels['group'] = 'Ô½Õ¸Ö‚Õ´Õ¢';
$labels['groups'] = 'Ô½Õ´Õ¢Õ¥Ö€';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Ô±Õ¶Õ±Õ¶Õ¡Õ¯Õ¡Õ¶ Õ°Õ¡Õ½ÖÕ¥Õ¶Õ¥Ö€';
-
$labels['searchsave'] = 'ÕŠÕ¡Õ°ÕºÕ¡Õ¶Õ¥Õ¬ Õ¸Ö€Õ¸Õ¶Õ¸Ö‚Õ´Õ¨';
$labels['searchdelete'] = 'Õ‹Õ¶Õ»Õ¥Õ¬ Õ¸Ö€Õ¸Õ¶Õ¸Ö‚Õ´Õ¨';
-
$labels['import'] = 'Õ†Õ¥Ö€Õ¯Ö€Õ¥Õ¬';
$labels['importcontacts'] = 'Õ†Õ¥Ö€Õ¯Ö€Õ¥Õ¬ Õ°Õ¡Õ½ÖÕ¥Õ¶Õ¥Ö€';
$labels['importfromfile'] = 'Õ†Õ¥Ö€Õ¯Ö€Õ¥Õ¬ Ö†Õ¡ÕµÕ¬Õ«Ö';
-$labels['importtarget'] = 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Õ¶Õ¸Ö€ Õ¯Õ¡ÕºÕ¸Ö€Õ¤Õ¶Õ¥Ö€ Õ°Õ¡Õ½ÖÕ¥Õ¡Õ£Ö€Ö„Õ¸Ö‚Õ´';
$labels['importreplace'] = 'Õ“Õ¸Õ­Õ¥Õ¬ Õ¸Õ²Õ» Õ°Õ¡Õ½ÖÕ¥Õ¡Õ£Õ«Ö€Ö„Õ¨';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'Ô±Õ¾Õ¡Ö€Õ¿Õ¾Õ¡Õ® Õ§';
-
-// settings
$labels['settingsfor'] = 'Õ†Õ¡Õ­Õ¡Õ½Õ«Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¶Õ¥Ö€';
$labels['about'] = 'Õ†Õ¯Õ¡Ö€Õ¡Õ£Õ«Ö€';
$labels['preferences'] = 'Õ†Õ¡Õ­Õ¨Õ¶Õ¿Ö€Õ¡Õ¶Ö„Õ¶Õ¥Ö€';
$labels['userpreferences'] = 'Õ•Õ£Õ¿Õ¾Õ¸Õ²Õ« Õ¶Õ¡Õ­Õ¨Õ¶Õ¿Ö€Õ¡Õ¶Ö„Õ¶Õ¥Ö€';
$labels['editpreferences'] = 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Ö…Õ£Õ¿Õ¾Õ¸Õ²Õ« Õ¶Õ¡Õ­Õ¨Õ¶Õ¿Ö€Õ¡Õ¶Ö„Õ¶Õ¥Ö€Õ¨';
-
$labels['identities'] = 'Ô±Õ¶Õ±Õ«Ö„';
$labels['manageidentities'] = 'Ô¿Õ¡Ö€Õ£Õ¡Õ¾Õ¸Ö€Õ¥Õ¬ Õ¡Õ¶Õ±Õ¡Õ¶Ö';
$labels['newidentity'] = 'Õ†Õ¸Ö€ Õ¡Õ¶Õ±';
-
$labels['newitem'] = 'Õ†Õ¸Ö€ Õ«Ö€';
$labels['edititem'] = 'Ô½Õ´Õ¢Õ¡Õ£Ö€Õ¥Õ¬ Õ«Ö€Õ¨';
-
$labels['preferhtml'] = 'Ô³Õ¥Ö€Õ¡Õ¤Õ¡Õ½Õ¥Õ¬ HTML';
$labels['defaultcharset'] = 'Ô¼Õ¼Õ¥Õ¬ÕµÕ¡Õ¬ Õ¿Õ¡Õ¼Õ¡Õ·Õ¡Ö€';
$labels['htmlmessage'] = 'HTML Õ¶Õ¡Õ´Õ¡Õ¯';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
$labels['dateformat'] = 'Ô±Õ´Õ½Õ¡Õ©Õ¾Õ« Õ±Ö‡Õ¡Õ¹Õ¡Öƒ';
$labels['timeformat'] = 'ÔºÕ¡Õ´Õ¡Õ¶Õ¡Õ¯Õ« Õ±Ö‡Õ¡Õ¹Õ¡Öƒ';
$labels['prettydate'] = 'ÕŠÕ¡Ö€Õ¦ Õ¡Õ´Õ½Õ¡Õ©Õ¾Õ¥Ö€';
@@ -400,13 +321,9 @@ $labels['timezone'] = 'ÔºÕ¡Õ´Õ¡ÕµÕ«Õ¶ Õ£Õ¸Õ¿Õ«';
$labels['pagesize'] = 'ÕÕ¸Õ²Õ¥Ö€ Õ¡Õ¼ Õ§Õ»';
$labels['signature'] = 'ÕÕ¿Õ¸Ö€Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶';
$labels['dstactive'] = 'Ô±Õ´Õ¡Õ¼Õ¡ÕµÕ«Õ¶ ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'ÕÕ¿Õ¥Õ²Õ®Õ¥Õ¬ HTML Õ¶Õ¡Õ´Õ¡Õ¯Õ¶Õ¥Ö€';
$labels['htmlonreply'] = 'Õ´Õ«Õ¡ÕµÕ¶ HTML Õ°Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶Õ¨ ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶Õ¥Õ¬Õ«Õ½';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'HTML Õ½Õ¿Õ¸Ö€Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ ÕºÕ¡Õ¿Õ¸Ö‚Õ°Õ¡Õ¶Õ¨';
$labels['skin'] = 'ÕÕ¥Õ½Ö„Õ« Õ¿Õ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯';
$labels['logoutclear'] = 'Ô´Õ¸Ö‚Ö€Õ½ Õ£Õ¡Õ¬Õ¸Ö‚Ö Õ¤Õ¡Õ¿Õ¡Ö€Õ¯Õ¥Õ¬ Õ¡Õ²Õ¢Õ¡Ö€Õ¯Õ²Õ¨';
@@ -431,7 +348,6 @@ $labels['always'] = 'Õ´Õ«Õ·Õ¿';
$labels['showinlineimages'] = 'Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯ÖÕ¾Õ¡Õ® ÕºÕ¡Õ¿Õ¯Õ¥Ö€Õ¶Õ¥Ö€Õ¨ Õ°Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¿Õ¡Õ¯';
$labels['autosavedraft'] = 'ÕÖ‡Õ¡Õ£Ö€Õ« Õ¡Õ¾Õ¿Õ¸Õ´Õ¡Õ¿ Õ£Ö€Õ¡Õ¶ÖÕ¸Ö‚Õ´';
$labels['everynminutes'] = 'Õ¡Õ´Õ¥Õ¶ $n Ö€Õ¸ÕºÕ¥Õ¶';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'Õ¥Ö€Õ¢Õ¥Ö„';
$labels['immediately'] = 'Õ¡Õ¶Õ´Õ«Õ»Õ¡ÕºÕ¥Õ½';
$labels['messagesdisplaying'] = 'Õ¶Õ¡Õ´Õ¡Õ¯Õ¶Õ¥Ö€Õ¨ ÖÕ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬Õ«Õ½';
@@ -453,7 +369,6 @@ $labels['maintenance'] = 'ÕÕºÕ¡Õ½Õ¡Ö€Õ¯Õ¸Ö‚Õ´';
$labels['newmessage'] = 'Õ†Õ¸Ö€ Õ°Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶';
$labels['signatureoptions'] = 'ÕÕ¿Õ¸Ö€Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¨Õ¶Õ¿Ö€Õ¡Õ¶Ö„Õ¶Õ¥Ö€';
$labels['whenreplying'] = 'ÕŠÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶Õ¥Õ¬Õ«Õ½';
-$labels['replyempty'] = 'do not quote the original message';
$labels['replytopposting'] = 'Õ½Õ¯Õ½Õ¥Õ¬ Õ¶Õ¸Ö€ Õ°Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¾Õ¥Ö€Ö‡Õ«Ö';
$labels['replybottomposting'] = 'Õ½Õ¯Õ½Õ¥Õ¬ Õ¶Õ¸Ö€ Õ°Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¶Õ¥Ö€Ö„Ö‡Õ«Ö';
$labels['replyremovesignature'] = 'ÕŠÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶Õ¥Õ¬Õ«Õ½ Õ°Õ¥Õ¼Õ¡ÖÕ¶Õ¥Õ¬ Õ°Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ«Ö Õ¶Õ¡Õ­Õ¸Ö€Õ¤ Õ½Õ¿Õ¸Ö€Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨';
@@ -466,7 +381,6 @@ $labels['afternseconds'] = '$n Õ¾Õ¡Ö€Õ¯ÕµÕ¡Õ¶ Õ°Õ¥Õ¿Õ¸';
$labels['reqmdn'] = 'Õ„Õ«Õ·Õ¿ ÕºÕ¡Õ¿Õ¾Õ«Ö€Õ¥Õ¬ Õ½Õ¿Õ¡ÖÕ¡Õ¯Õ¡Õ¶';
$labels['reqdsn'] = 'Õ„Õ«Õ·Õ¿ ÕºÕ¡Õ¿Õ¾Õ«Ö€Õ¥Õ¬ Õ¡Õ¼Õ¡Ö„Õ´Õ¡Õ¶ Õ¯Õ¡Ö€Õ£Õ¡Õ¾Õ«Õ³Õ¡Õ¯Õ« Õ®Õ¡Õ¶Õ¸Ö‚ÖÕ¸Ö‚Õ´';
$labels['replysamefolder'] = 'Õ€Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶ ÕºÕ¡Õ¿Õ¡Õ½Õ­Õ¡Õ¶Õ¶Õ¥Ö€Õ¨ ÕºÕ¡Õ°Õ¥Õ¬ Õ¶Õ¸Ö‚ÕµÕ¶ ÕºÕ¡Õ¶Õ¡Õ¯Õ¸Ö‚Õ´';
-$labels['defaultabook'] = 'Default address book';
$labels['autocompletesingle'] = 'Ô±Õ¾Õ¿Õ¸Õ¬Ö€Õ¡ÖÕ´Õ¡Õ¶ ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯ Õ¢Õ¡ÖÕ¡Õ¼Õ¥Õ¬ Õ¡ÕµÕ¬Õ¨Õ¶Õ¿Ö€Õ¡Õ¶Ö„Õ¡ÕµÕ«Õ¶ Õ§Õ¬ÖƒÕ¸Õ½Õ¿Õ« Õ°Õ¡Õ½ÖÕ¥Õ¶Õ¥Ö€Õ¨';
$labels['listnamedisplay'] = 'Õ‘Õ¸Ö‚ÖÕ¡Õ¤Ö€Õ¥Õ¬ Õ¯Õ¡ÕºÕ¸Ö€Õ¤Õ¶Õ¥Ö€Õ¨ Õ¸Ö€ÕºÕ¥Õ½';
$labels['spellcheckbeforesend'] = 'ÕÕ¿Õ¸Ö‚Õ£Õ¥Õ¬ Õ¿Õ¡Õ¼Õ¡Õ½Õ­Õ¡Õ¬Õ¶Õ¥Ö€Õ¨ Õ°Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¸Ö‚Õ²Õ¡Ö€Õ¯Õ¥Õ¬Õ¸Ö‚Ö Õ¡Õ¼Õ¡Õ»';
@@ -476,11 +390,6 @@ $labels['spellcheckignorenums'] = 'Ô±Õ¶Õ¿Õ¥Õ½Õ¥Õ¬ Õ©Õ¾Õ¥Ö€Õ¸Õ¾ Õ¢Õ¡Õ¼Õ¥Ö€Õ¨';
$labels['spellcheckignorecaps'] = 'Ô±Õ¶Õ¿Õ¥Õ½Õ¥Õ¬ Õ¬Ö€Õ«Õ¾ Õ´Õ¥Õ®Õ¡Õ¿Õ¡Õ¼ Õ¢Õ¡Õ¼Õ¥Ö€Õ¨';
$labels['addtodict'] = 'Ô±Õ¾Õ¥Õ¬Õ¡ÖÕ¶Õ¥Õ¬ Õ¢Õ¡Õ¼Õ¡Ö€Õ¡Õ¶Õ¸Ö‚Õ´';
$labels['mailtoprotohandler'] = 'mailto: Õ°Õ²Õ¸Ö‚Õ´Õ¶Õ¥Ö€Õ« Õ½ÕºÕ¡Õ½Õ¡Ö€Õ¯Õ¸Õ²';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'Ô´Õ¡Ö€Õ¡Õ¯';
$labels['folders'] = 'Ô´Õ¡Ö€Õ¡Õ¯Õ¶Õ¥Ö€';
$labels['foldername'] = 'Ô´Õ¡Ö€Õ¡Õ¯Õ« Õ¡Õ¶Õ¸Ö‚Õ¶';
@@ -501,26 +410,19 @@ $labels['foldertype'] = 'ÕŠÕ¡Õ¶Õ¡Õ¯Õ« Õ¿Õ¥Õ½Õ¡Õ¯';
$labels['personalfolder'] = 'Ô±Õ¶Õ±Õ¶Õ¡Õ¯Õ¡Õ¶ ÕºÕ¡Õ¶Õ¡Õ¯';
$labels['otherfolder'] = 'Ô±ÕµÕ¬ Ö…Õ£Õ¿Õ¾Õ¸Õ²Õ« ÕºÕ¡Õ¶Õ¡Õ¯';
$labels['sharedfolder'] = 'Õ€Õ¡Õ¶Ö€Õ¡ÕµÕ«Õ¶ ÕºÕ¡Õ¶Õ¡Õ¯';
-
$labels['sortby'] = 'Ô´Õ¡Õ½Õ¡Õ¾Õ¸Ö€Õ¥Õ¬';
$labels['sortasc'] = 'Õ¨Õ½Õ¿ Õ¡Õ³Õ´Õ¡Õ¶';
$labels['sortdesc'] = 'Õ¨Õ½Õ¿ Õ¶Õ¾Õ¡Õ¦Õ´Õ¡Õ¶';
$labels['undo'] = 'ÔµÕ¿Õ¡Ö€Õ¯Õ¥Õ¬';
-
-$labels['installedplugins'] = 'Installed plugins';
$labels['plugin'] = 'Ô½Ö€Õ«Õ¹';
$labels['version'] = 'ÕÕ¡Ö€Õ¢Õ¥Ö€Õ¡Õ¯';
$labels['source'] = 'Ô±Õ²Õ¢ÕµÕ¸Ö‚Ö€';
$labels['license'] = 'Ô±Ö€Õ¿Õ¸Õ¶Õ¡Õ£Õ«Ö€';
$labels['support'] = 'ÕÕ¿Õ¡Õ¶Õ¡Õ¬ Ö…Õ£Õ¶Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶';
-
-// units
$labels['B'] = 'Ô²';
$labels['KB'] = 'Ô¿Ô²';
$labels['MB'] = 'Õ„Ô²';
$labels['GB'] = 'Ô³Ô²';
-
-// character sets
$labels['unicode'] = 'Õ…Õ¸Ö‚Õ¶Õ«Õ¯Õ¸Õ¤';
$labels['english'] = 'Ô±Õ¶Õ£Õ¬Õ¥Ö€Õ¥Õ¶';
$labels['westerneuropean'] = 'Ô±Ö€Ö‡Õ´Õ¿Õ¡-ÔµÕ¾Ö€Õ¸ÕºÕ¡Õ¯Õ¡Õ¶';
@@ -539,5 +441,4 @@ $labels['vietnamese'] = 'ÕŽÕ«Õ¥Õ¿Õ¶Õ¡Õ´Õ¡Õ¯Õ¡Õ¶';
$labels['japanese'] = 'ÕƒÕ¡ÕºÕ¸Õ¶Õ¡Õ¯Õ¡Õ¶';
$labels['korean'] = 'Ô¿Õ¸Ö€Õ¥Õ¡Õ¯Õ¡Õ¶';
$labels['chinese'] = 'Õ‰Õ«Õ¶Õ¡Õ¯Õ¡Õ¶';
-
?>
diff --git a/program/localization/hy_AM/messages.inc b/program/localization/hy_AM/messages.inc
index 2128a188c..c5d167acf 100644
--- a/program/localization/hy_AM/messages.inc
+++ b/program/localization/hy_AM/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'ÕÕ­Õ¡Õ›Õ¬';
$messages['loginfailed'] = 'Õ„Õ¸Ö‚Õ¿Ö„Õ¨ Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥Ö';
$messages['cookiesdisabled'] = 'Сookies–ների Õ¡ÕºÕ¡Õ°Õ¸Õ¾Õ¾Õ¸Ö‚Õ´Õ¨ Õ¢Õ¡ÖÕ¡Õ¯Õ¡ÕµÕ¸Ö‚Õ´ Õ§';
@@ -28,14 +26,10 @@ $messages['dberror'] = 'ÕÕ¾ÕµÕ¡Õ¬Õ¶Õ¥Ö€Õ« Õ·Õ¿Õ¥Õ´Õ¡Ö€Õ¡Õ¶Õ« Õ½Õ­Õ¡Õ›Õ¬';
$messages['requesttimedout'] = 'Õ€Õ¡Ö€ÖÕ´Õ¡Õ¶ Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¥Õ¬Õ« ÕªÕ¡Õ´Õ¡Õ¶Õ¡Õ¯Õ¨ Õ½ÕºÕ¡Õ¼Õ¾Õ¥Ö';
$messages['errorreadonly'] = 'Ô³Õ¸Ö€Õ®Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¡Õ¶Õ°Õ¶Õ¡Ö€ Õ§Ö‰ ÕŠÕ¡Õ¶Õ¡Õ¯Õ¨ Õ´Õ«Õ¡ÕµÕ¶ Õ¨Õ¶Õ©Õ¥Ö€ÖÕ´Õ¡Õ¶ Õ°Õ¡Õ´Õ¡Ö€ Õ§Ö‰';
$messages['errornoperm'] = 'Ô³Õ¸Ö€Õ®Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ¯Õ¡Õ¿Õ¡Ö€Õ´Õ¡Õ¶ Õ«Ö€Õ¡Õ¾Õ¸Ö‚Õ¶Ö„Õ¨ Õ´Õ¥Ö€ÕªÕ¾Õ¡Õ® Õ§Ö‰';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'ÕÕ­Õ¡Õ¬ Õ°Õ¡Ö€ÖÕ¸Ö‚Õ´, Õ¡ÕºÕ¡Ö€Õ¤ÕµÕ¸Ö‚Õ¶Ö‰';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'Ô±ÕµÕ½ ÖƒÕ¸Õ½Õ¿Õ¡Ö€Õ¯Õ²Õ¸Ö‚Õ´ Õ¶Õ¡Õ´Õ¡Õ¯Õ¶Õ¥Ö€ Õ¹Õ¯Õ¡Õ¶';
$messages['loggedout'] = 'Ô´Õ¸Ö‚Ö„ Õ¢Õ¡Ö€Õ¥Õ°Õ¡Õ»Õ¸Õ² Õ¡Õ¾Õ¡Ö€Õ¿Õ¥ÖÕ«Ö„ Õ¡Õ·Õ­Õ¡Õ¿Õ¡Õ¶Ö„Õ¨Ö‰ Ցտեսություն…';
$messages['mailboxempty'] = 'Õ“Õ¸Õ½Õ¿Õ¡Ö€Õ¯Õ²Õ¨ Õ¤Õ¡Õ¿Õ¡Ö€Õ¯ Õ§';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'Ô²Õ¥Õ¼Õ¶Õ¸Ö‚Õ´...';
$messages['uploading'] = 'Ֆայլի վերբեռնում…';
$messages['uploadingmany'] = 'Վերբեռնվում են ֆայլերը…';
@@ -56,8 +50,6 @@ $messages['contactnotfound'] = 'ÕˆÖ€Õ¸Õ¶Õ¾Õ¸Õ² Õ°Õ¡Õ½ÖÕ¥Õ¶ Õ¹Õ£Õ¿Õ¶Õ¾Õ¥Ö';
$messages['contactsearchonly'] = 'Õ†Õ¥Ö€Õ´Õ¸Ö‚Õ®Õ¥Ö„ Õ¿Õ¾ÕµÕ¡Õ¬Õ¶Õ¥Ö€ Õ¡Õ¶Õ±Õ¡Õ¶Ö Õ¸Ö€Õ¸Õ¶Õ´Õ¡Õ¶ Õ°Õ¡Õ´Õ¡Ö€';
$messages['sendingfailed'] = 'Õ†Õ¡Õ´Õ¡Õ¯Õ« Õ¸Ö‚Õ²Õ¡Ö€Õ¯Õ¸Ö‚Õ´Õ¨ Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥Ö';
$messages['senttooquickly'] = 'Ô½Õ¶Õ¤Ö€Õ¸Ö‚Õ´ Õ¥Õ¶Ö„ Õ½ÕºÕ¡Õ½Õ¥Õ¬ $sec Õ¾Õ¡Ö€Õ¯ÕµÕ¡Õ¶ Õ´Õ«Õ¶Õ¹ Õ¡ÕµÕ½ Õ¶Õ¡Õ´Õ¡Õ¯Õ¶ Õ¸Ö‚Õ²Õ¡Ö€Õ¯Õ¥Õ¬Õ¨';
-$messages['errorsavingsent'] = 'ÕˆÖ‚Õ²Õ¡Ö€Õ¯Õ¾Õ¡Õ® Õ¶Õ¡Õ´Õ¡Õ¯Õ« Õ¡Ö€Õ­Õ«Õ¾Õ¡ÖÕ¸Ö‚Õ´Õ¨ Õ­Õ¡ÖƒÕ¡Õ¶Õ¾Õ¥Ö';
-$messages['errorsaving'] = 'Ô³Ö€Õ¡Õ¶ÖÕ´Õ¡Õ¶ Õ½Õ­Õ¡Õ¬';
$messages['errormoving'] = 'Õ†Õ¡Õ´Õ¡Õ¯Õ« Õ¿Õ¥Õ²Õ¡ÖƒÕ¸Õ­Õ´Õ¡Õ¶ Õ±Õ¡Õ­Õ¸Õ²Õ¸Ö‚Õ´';
$messages['errorcopying'] = 'Õ€Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶ ÕºÕ¡Õ¿Õ³Õ¥Õ¶Õ¸Ö‚Õ´Õ¨ Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥ÖÖ‰';
$messages['errordeleting'] = 'Õ†Õ¡Õ´Õ¡Õ¯Õ« Õ»Õ¶Õ»Õ´Õ¡Õ¶ Õ±Õ¡Õ­Õ¸Õ²Õ¸Ö‚Õ´';
@@ -101,16 +93,11 @@ $messages['converting'] = 'Õ†Õ¡Õ´Õ¡Õ¯Õ« Õ±Ö‡Õ¡Õ¾Õ¸Ö€Õ´Õ¡Õ¶ Õ°Õ¥Õ¼Õ¡Öում…';
$messages['messageopenerror'] = 'Õ†Õ¡Õ´Õ¡Õ¯Õ« Õ¢Õ¥Õ¼Õ¶Õ¾Õ¸Ö‚Õ´Õ¨ Õ½Õ¥Ö€Õ¾Õ¥Ö€Õ«Ö Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥Ö';
$messages['fileuploaderror'] = 'Õ–Õ¡ÕµÕ¬Õ« Õ¯ÖÕ¸Ö‚Õ´Õ¶ Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥Ö';
$messages['filesizeerror'] = 'Õ–Õ¡ÕµÕ¬Õ« Õ¹Õ¡ÖƒÕ¨ Õ£Õ¥Ö€Õ¡Õ¦Õ¡Õ¶ÖÕ¸Ö‚Õ´ Õ§ Õ´Õ¡Ö„Õ½Õ«Õ´Õ¡Õ¬Õ¨Õ $size';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Ô±ÕµÕ½ Õ°Õ¡Õ½ÖÕ¥Õ¶ ÕºÕ¡Õ·Õ¿ÕºÕ¡Õ¶Õ¾Õ¡Õ® Õ§';
$messages['errorsavingcontact'] = 'Õ€Õ¡Õ½ÖÕ¥Õ« Õ£Ö€Õ¡Õ¶ÖÕ¸Ö‚Õ´Õ¶ Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥Ö';
$messages['movingmessage'] = 'Նամակը տեղափոխվում է…';
$messages['copyingmessage'] = 'Հաղորդագրությունների պատճենում…';
$messages['copyingcontact'] = 'Ô±Õ¶Õ±Õ¡Õ¶Ö ÕºÕ¡Õ¿Õ³Õ¥Õ¶Õ¸Ö‚Õ´â€¦';
-$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'Հաղորդագրությունների ջնջում…';
$messages['markingmessage'] = 'Հաղորդագրությունների նշում…';
$messages['addingmember'] = 'Ô±Õ¶Õ±Õ¡Õ¶Ö Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¸Ö‚Õ´ խմբին…';
@@ -124,13 +111,9 @@ $messages['selectimportfile'] = 'Ô¸Õ¶Õ¿Ö€Õ¥Ö„ Õ¸Ö‚Õ²Õ¡Ö€Õ¯Õ¾Õ¸Õ² Ö†Õ¡ÕµÕ¬Õ¨';
$messages['addresswriterror'] = 'Ô¸Õ¶Õ¿Ö€Õ¾Õ¡Õ® Õ°Õ¡Õ½ÖÕ¥Õ¡Õ£Õ«Ö€Ö„Õ¨ Õ¥Õ¶Õ©Õ¡Õ¯Õ¡ Õ¹Õ§ ÖƒÕ¸ÖƒÕ¸Õ­Õ´Õ¡Õ¶';
$messages['contactaddedtogroup'] = 'Ô±Õ¶Õ±Õ«Õ¶Ö„ Õ¢Õ¡Ö€Õ¥Õ°Õ¡Õ»Õ¸Õ² Õ¡Õ¾Õ¥Õ¬Õ¡ÖÕ¾Õ¥ÖÕ«Õ¶ Õ­Õ´Õ¢Õ«Õ¶Ö‰';
$messages['contactremovedfromgroup'] = 'Ô±Õ¶Õ±Õ«Õ¶Ö„ Õ¢Õ¡Ö€Õ¥Õ°Õ¡Õ»Õ¸Õ² Õ°Õ¡Õ¶Õ¾Õ¥ÖÕ«Õ¶ Õ­Õ´Õ¢Õ«ÖÖ‰';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'Õ†Õ¥Ö€Õ¯Ö€Õ¸Ö‚Õ´Õ¶ Õ¨Õ¶Õ©Õ¡ÖÖ„Õ« Õ´Õ¥Õ» Õ§...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
$messages['importconfirm'] = '$inserted Õ¶Õ¸Ö€ Õ¶Õ¥Ö€Õ¯Ö€Õ¾Õ¡Õ® Õ°Õ¡Õ½ÖÕ¥Õ¶Õ¥Ö€, $skipped Õ¡Ö€Õ¤Õ¥Õ¶ Õ¡Õ¼Õ¯Õ¡ Õ°Õ¡Õ½ÖÕ¥Õ¶Õ¥Ö€Õ <p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>Ô²Õ¡Ö Õ©Õ¸Õ²Õ¶Õ¾Õ¥Ö $skipped Õ¡Õ¼Õ¯Õ¡ Õ£Ö€Õ¡Õ¼Õ¸Ö‚Õ´</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'Ô³Õ¸Ö€Õ®Õ¸Õ²Õ¸Ö‚Õ©ÕµÕ¸Ö‚Õ¶Õ¨ Õ¡Õ¶Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¥Õ¬Õ« Õ§Ö‰';
$messages['nofromaddress'] = 'Õ†Õ·Õ¾Õ¡Õ® Õ¡Õ¶Õ±Õ¨ Õ°Õ¡Õ½ÖÕ¥ Õ¹Õ¸Ö‚Õ¶Õ«Ö‰';
$messages['editorwarning'] = 'Ô´Õ¥ÕºÕ« ÕºÕ¡Ö€Õ¦ Õ¿Õ¥Ö„Õ½Õ¿Õ« Õ­Õ´Õ¢Õ¡Õ£Ö€Õ«Õ¹ Õ¡Õ¶ÖÕ´Õ¡Õ¶ Õ¤Õ¥ÕºÖ„Õ¸Ö‚Õ´ Õ¯Õ¯Õ¸Ö€Õ« Õ¿Õ¥Ö„Õ½Õ¿Õ« Õ±Ö‡Õ¡Õ¾Õ¸Ö€Õ¸Ö‚Õ´Õ¨Ö‰ Õ‡Õ¡Ö€Õ¸Ö‚Õ¶Õ¡Õ¯Õ¥ÕžÕ¬Ö‰';
@@ -144,7 +127,6 @@ $messages['smtperror'] = 'SMTP Õ½Õ­Õ¡Õ¬` $msg';
$messages['emailformaterror'] = 'ÕÕ­Õ¡Õ¬ Õ§Õ¬ÖƒÕ¸Õ½Õ¿Õ« Õ°Õ¡Õ½ÖÕ¥` $email';
$messages['toomanyrecipients'] = 'ÕÕ¿Õ¡ÖÕ¸Õ²Õ¶Õ¥Ö€Õ« Ö„Õ¡Õ¶Õ¡Õ¯Õ¨ Õ¹Õ¡ÖƒÕ¡Õ¦Õ¡Õ¶Ö Õ´Õ¥Õ® Õ§Ö‰ Õ†Õ¾Õ¡Õ¦Õ¥ÖÖ€Õ¥Ö„ Õ´Õ«Õ¶Õ¹Ö‡ $max-Õ¨Ö‰';
$messages['maxgroupmembersreached'] = 'Ô½Õ´Õ¢Õ« Õ¡Õ¶Õ¤Õ¡Õ´Õ¶Õ¥Ö€Õ« Ö„Õ¡Õ¶Õ¡Ö„Õ¨ Õ£Õ¥Ö€Õ¡Õ¦Õ¡Õ¶ÖÕ¸Ö‚Õ´ Õ§ Õ©Õ¸Ö‚ÕµÕ¬Õ¡Õ¿Ö€Õ¥Õ¬Õ« $max-Õ¨Ö‰';
-$messages['internalerror'] = 'Õ†Õ¥Ö€Ö„Õ«Õ¶ Õ½Õ­Õ¡Õ¬, Õ¯Ö€Õ¯Õ«Õ¶ ÖƒÕ¸Ö€Õ±Õ¥Ö„Ö‰';
$messages['contactdelerror'] = 'Ô±Õ¶Õ±Õ¡Õ¶Ö Õ»Õ¶Õ»Õ¸Ö‚Õ´Õ¨ Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥ÖÖ‰';
$messages['contactdeleted'] = 'Ô±Õ¶Õ±Õ¡Õ¶Ö Õ»Õ¶Õ»Õ¸Ö‚Õ´Õ¨ Õ°Õ¡Õ»Õ¸Õ²Õ¾Õ¥ÖÖ‰';
$messages['contactrestoreerror'] = 'Õ‹Õ¶Õ»Õ¾Õ¡Õ® Õ¡Õ¶Õ±Õ¡Õ¶Ö Õ¾Õ¥Ö€Õ¡Õ¯Õ¡Õ¶Õ£Õ¶Õ¸Ö‚Õ´Õ¨ Õ±Õ¡Õ­Õ¸Õ²Õ¾Õ¥ÖÖ‰';
@@ -170,7 +152,4 @@ $messages['invalidimageformat'] = 'ÕŠÕ¡Õ¿Õ¯Õ¥Ö€Õ« Õ½Õ­Õ¡Õ¬ Õ±Ö‡Õ¡Õ¹Õ¡ÖƒÖ‰';
$messages['mispellingsfound'] = 'Õ€Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ´Õ¥Õ» Õ¯Õ¡Õ¶ Õ¿Õ¡Õ¼Õ¡Õ½Õ­Õ¡Õ¬Õ¶Õ¥Ö€Ö‰';
$messages['parentnotwritable'] = 'Õ†Õ·Õ¾Õ¡Õ® ÕºÕ¡Õ¶Õ¡Õ¯Õ« Õ´Õ¥Õ» ÕºÕ¡Õ¶Õ¡Õ¯Õ« Õ½Õ¿Õ¥Õ²Õ®Õ¸Ö‚Õ´Õ¨ Õ¯Õ¡Õ´ Õ¿Õ¥Õ²Õ¡ÖƒÕ¸Õ­Õ¸Ö‚Õ´Õ¨ Õ¡Õ¶Õ°Õ¶Õ¡Ö€ Õ§ Õ¡Õ¶Õ¢Õ¡Õ¾Õ¡Ö€Õ¡Ö€ Õ«Ö€Õ¡Õ¾Õ¸Ö‚Õ¶Ö„Õ¶Õ¥Ö€Õ« ÕºÕ¡Õ¿Õ³Õ¡Õ¼Õ¸Õ¾Ö‰';
$messages['messagetoobig'] = 'Õ€Õ¡Õ²Õ¸Ö€Õ¤Õ¡Õ£Ö€Õ¸Ö‚Õ©ÕµÕ¡Õ¶ Õ´Õ¡Õ½Õ¨ Õ¹Õ¡ÖƒÕ¡Õ¦Õ¡Õ¶Ö Õ´Õ¥Õ® Õ§ Õ½ÕºÕ¡Õ½Õ¡Ö€Õ¯Õ´Õ¡Õ¶ Õ°Õ¡Õ´Õ¡Ö€Ö‰';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/ia/labels.inc b/program/localization/ia/labels.inc
index 1cd614d35..0ff1e939e 100644
--- a/program/localization/ia/labels.inc
+++ b/program/localization/ia/labels.inc
@@ -15,31 +15,17 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Benvenite a $product';
$labels['username'] = 'Nomine de usator';
$labels['password'] = 'Contrasigno';
$labels['server'] = 'Servitor';
$labels['login'] = 'Apertura de session';
-
-// taskbar
$labels['logout'] = 'Clauder session';
$labels['mail'] = 'E-posta';
$labels['settings'] = 'Configurationes';
$labels['addressbook'] = 'Adressario';
-
-// mailbox names
$labels['inbox'] = 'Cassa de entrata';
-$labels['drafts'] = 'Drafts';
$labels['sent'] = 'Inviate';
-$labels['trash'] = 'Trash';
-$labels['junk'] = 'Junk';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Subjecto';
$labels['from'] = 'Ex';
$labels['sender'] = 'Expeditor';
@@ -47,34 +33,21 @@ $labels['to'] = 'A';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Responder a';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Data';
$labels['size'] = 'Dimension';
$labels['priority'] = 'Prioritate';
$labels['organization'] = 'Organisation';
-$labels['readstatus'] = 'Read status';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'Dossieres';
-$labels['messagesfromto'] = 'Messages $from to $to of $count';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = 'Message $nr de $count';
$labels['fromtoshort'] = '$from – $to de $count';
-
$labels['copy'] = 'Copiar';
$labels['move'] = 'Mover';
$labels['moveto'] = 'Mover a';
$labels['download'] = 'Discargar';
-$labels['open'] = 'Open';
$labels['showattachment'] = 'Monstrar';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'Nomine de file';
$labels['filesize'] = 'Dimension del file';
-
$labels['addtoaddressbook'] = 'Adder al adressario';
-
-// weekdays short
$labels['sun'] = 'dom';
$labels['mon'] = 'lun';
$labels['tue'] = 'mar';
@@ -82,8 +55,6 @@ $labels['wed'] = 'mer';
$labels['thu'] = 'jov';
$labels['fri'] = 'ven';
$labels['sat'] = 'sab';
-
-// weekdays long
$labels['sunday'] = 'Dominica';
$labels['monday'] = 'Lunedi';
$labels['tuesday'] = 'Martedi';
@@ -91,8 +62,6 @@ $labels['wednesday'] = 'Mercuridi';
$labels['thursday'] = 'Jovedi';
$labels['friday'] = 'Venerdi';
$labels['saturday'] = 'Sabbato';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +74,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Oct';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
-
-// months long
$labels['longjan'] = 'januario';
$labels['longfeb'] = 'Februario';
$labels['longmar'] = 'Martio';
@@ -119,168 +86,78 @@ $labels['longsep'] = 'Septembre';
$labels['longoct'] = 'Octobre';
$labels['longnov'] = 'Novembre';
$labels['longdec'] = 'Decembre';
-
$labels['today'] = 'Hodie';
-
-// toolbar buttons
$labels['refresh'] = 'Refrescar';
$labels['checkmail'] = 'Verificar nove messages';
$labels['compose'] = 'Componer';
$labels['writenewmessage'] = 'Crear un nove message';
$labels['reply'] = 'Responder';
-$labels['replytomessage'] = 'Reply to sender';
-$labels['replytoallmessage'] = 'Reply to list or to sender and all recipients';
$labels['replyall'] = 'Responder a totes';
$labels['replylist'] = 'Responder a lista';
-$labels['forward'] = 'Forward';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
-$labels['forwardmessage'] = 'Forward the message';
$labels['deletemessage'] = 'Deler messsage';
-$labels['movemessagetotrash'] = 'Move message to trash';
$labels['printmessage'] = 'Imprimer iste message';
-$labels['previousmessage'] = 'Show previous message';
-$labels['firstmessage'] = 'Show first message';
-$labels['nextmessage'] = 'Show next message';
-$labels['lastmessage'] = 'Show last message';
-$labels['backtolist'] = 'Back to message list';
$labels['viewsource'] = 'Monstrar fonte';
$labels['mark'] = 'Marcar';
$labels['markmessages'] = 'Marcar messages';
-$labels['markread'] = 'As read';
-$labels['markunread'] = 'As unread';
-$labels['markflagged'] = 'As flagged';
-$labels['markunflagged'] = 'As unflagged';
-$labels['moreactions'] = 'More actions...';
$labels['more'] = 'Plus';
$labels['back'] = 'Retornar';
$labels['options'] = 'Optiones';
-
$labels['select'] = 'Seliger';
$labels['all'] = 'Totes';
$labels['none'] = 'Necun';
-$labels['currpage'] = 'Current page';
$labels['unread'] = 'Non legite';
$labels['flagged'] = 'Marcate';
-$labels['unanswered'] = 'Unanswered';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'Delete';
-$labels['undeleted'] = 'Not deleted';
$labels['invert'] = 'Inverter';
$labels['filter'] = 'Filtro';
$labels['list'] = 'Lista';
$labels['threads'] = 'Topicos';
-$labels['expand-all'] = 'Expand All';
-$labels['expand-unread'] = 'Expand Unread';
-$labels['collapse-all'] = 'Collapse All';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
-$labels['fromto'] = 'From/To';
$labels['flag'] = 'Marcar';
$labels['attachment'] = 'Attachamento';
$labels['nonesort'] = 'Necun';
-$labels['sentdate'] = 'Sent date';
-$labels['arrival'] = 'Arrival date';
-$labels['asc'] = 'ascending';
-$labels['desc'] = 'descending';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
$labels['folderactions'] = 'Actiones de dossier...';
$labels['compact'] = 'Compacte';
$labels['empty'] = 'Vacue';
-$labels['importmessages'] = 'Import messages';
-
-$labels['quota'] = 'Disk usage';
$labels['unknown'] = 'incognite';
-$labels['unlimited'] = 'unlimited';
-
$labels['quicksearch'] = 'Cerca rapide';
$labels['resetsearch'] = 'Reinitialisar cerca';
-$labels['searchmod'] = 'Search modifiers';
$labels['msgtext'] = 'Message complete';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'Aperir in nove fenestra';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'Modificar como nove';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'Inviar message';
$labels['savemessage'] = 'Salveguardar como version provisori';
$labels['addattachment'] = 'Attachar un file';
$labels['charset'] = 'Insimul de Characteres';
$labels['editortype'] = 'Typo de editor';
-$labels['returnreceipt'] = 'Return receipt';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
$labels['originalmessage'] = 'Message original';
-
$labels['editidents'] = 'Modificar identitates';
$labels['spellcheck'] = 'Orthographia';
$labels['checkspelling'] = 'Verificar orthographia';
-$labels['resumeediting'] = 'Resume editing';
-$labels['revertto'] = 'Revert to';
-
$labels['attach'] = 'Attachar';
$labels['attachments'] = 'Attachamentos';
$labels['upload'] = 'Incargar';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'Clauder';
$labels['messageoptions'] = 'Optiones de message...';
-
$labels['low'] = 'Basse';
$labels['lowest'] = 'Minimal';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alte';
$labels['highest'] = 'Maximal';
-
$labels['nosubject'] = '(sin subjecto)';
$labels['showimages'] = 'Monstrar imagines';
-$labels['alwaysshow'] = 'Always show images from $sender';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
-$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Texto plan';
$labels['savesentmessagein'] = 'Salveguardar message inviate in';
$labels['dontsave'] = 'non salveguardar';
$labels['maxuploadsize'] = 'Le dimension maximal de iste file es $size';
-
$labels['addcc'] = 'Adder Cc';
$labels['addbcc'] = 'Adder Bcc';
-$labels['addreplyto'] = 'Add Reply-To';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
-$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
-$labels['receiptread'] = 'Return Receipt (read)';
-$labels['yourmessage'] = 'This is a Return Receipt for your message';
-$labels['receiptnote'] = 'Note: This receipt only acknowledges that the message was displayed on the recipient\'s computer. There is no guarantee that the recipient has read or understood the message contents.';
-
-// address boook
$labels['name'] = 'Monstrar nomine';
$labels['firstname'] = 'Nomine';
$labels['surname'] = 'Nomine de familia';
-$labels['middlename'] = 'Middle Name';
$labels['nameprefix'] = 'Prefixo';
-$labels['namesuffix'] = 'Suffix';
$labels['nickname'] = 'Pseudonymo';
-$labels['jobtitle'] = 'Job Title';
$labels['department'] = 'Departimento';
$labels['gender'] = 'Sexo:';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'E-posta';
$labels['phone'] = 'Telephono';
$labels['address'] = 'Adresse';
@@ -304,7 +181,6 @@ $labels['search'] = 'Cercar';
$labels['advsearch'] = 'Cerca avantiate';
$labels['advanced'] = 'Avantiate';
$labels['other'] = 'Altere';
-
$labels['typehome'] = 'Domo';
$labels['typework'] = 'Labor';
$labels['typeother'] = 'Altere';
@@ -312,21 +188,18 @@ $labels['typemobile'] = 'Mobile';
$labels['typemain'] = 'Principal';
$labels['typehomefax'] = 'Fax de domo';
$labels['typeworkfax'] = 'Fax de labor';
-$labels['typecar'] = 'Car';
$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'Video';
$labels['typeassistant'] = 'Assistente';
$labels['typehomepage'] = 'Pagina principal';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profilo';
-
$labels['addfield'] = 'Adder campo...';
$labels['addcontact'] = 'Adder nove contacto';
$labels['editcontact'] = 'Modificar contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Proprietates de contacto';
$labels['personalinfo'] = 'Information personal';
-
$labels['edit'] = 'Modificar';
$labels['cancel'] = 'Cancellar';
$labels['save'] = 'Salveguardar';
@@ -334,153 +207,60 @@ $labels['delete'] = 'Deler';
$labels['rename'] = 'Renominar';
$labels['addphoto'] = 'Adder';
$labels['replacephoto'] = 'Reimplaciar';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'Crear un nove carta de contacto';
$labels['deletecontact'] = 'Deler contactos seligite';
-$labels['composeto'] = 'Compose mail to';
-$labels['contactsfromto'] = 'Contacts $from to $to of $count';
$labels['print'] = 'Imprimer';
$labels['export'] = 'Exportar';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
-$labels['exportvcards'] = 'Export contacts in vCard format';
$labels['newcontactgroup'] = 'Crear un nove gruppo de contacto';
$labels['grouprename'] = 'Renominar gruppo';
$labels['groupdelete'] = 'Deler gruppo';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
-$labels['previouspage'] = 'Show previous page';
-$labels['firstpage'] = 'Show first page';
-$labels['nextpage'] = 'Show next page';
-$labels['lastpage'] = 'Show last page';
-
$labels['group'] = 'Gruppo';
$labels['groups'] = 'Gruppos';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Adresses personal';
-
$labels['searchsave'] = 'Salveguardar cerca';
$labels['searchdelete'] = 'Deler cerca';
-
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contactos';
$labels['importfromfile'] = 'Importar ex file:';
-$labels['importtarget'] = 'Adder nove contactos al adressario';
-$labels['importreplace'] = 'Replace the entire address book';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'Facite';
-
-// settings
$labels['settingsfor'] = 'Configurationes pro';
$labels['about'] = 'A proposito';
$labels['preferences'] = 'Preferentias';
$labels['userpreferences'] = 'Preferentias de usator';
$labels['editpreferences'] = 'Modificar preferentias de usator';
-
$labels['identities'] = 'Identitates';
-$labels['manageidentities'] = 'Manage identities for this account';
$labels['newidentity'] = 'Nove identitate';
-
$labels['newitem'] = 'Nove elemento';
$labels['edititem'] = 'Modificar elemento';
-
$labels['preferhtml'] = 'Monstrar HTML';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'Message HTML';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
$labels['dateformat'] = 'Formato de data';
$labels['timeformat'] = 'Formato de tempore';
-$labels['prettydate'] = 'Pretty dates';
$labels['setdefault'] = 'Fixar predeterminate';
$labels['autodetect'] = 'Auto';
$labels['language'] = 'Lingua';
$labels['timezone'] = 'Fuso horari';
-$labels['pagesize'] = 'Rows per page';
$labels['signature'] = 'Signatura';
-$labels['dstactive'] = 'Daylight saving time';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
-$labels['htmleditor'] = 'Compose HTML messages';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'Signatura HTML';
-$labels['showemail'] = 'Show email address with display name';
-$labels['previewpane'] = 'Show preview pane';
$labels['skin'] = 'Apparentia de interfacie';
-$labels['logoutclear'] = 'Clear Trash on logout';
-$labels['logoutcompact'] = 'Compact Inbox on logout';
$labels['uisettings'] = 'Interfacie de usator';
$labels['serversettings'] = 'Configurationes de servitor';
-$labels['mailboxview'] = 'Mailbox View';
-$labels['mdnrequests'] = 'On request for return receipt';
-$labels['askuser'] = 'ask me';
-$labels['autosend'] = 'send receipt';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['ignore'] = 'ignorar';
-$labels['readwhendeleted'] = 'Mark the message as read on delete';
-$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
-$labels['skipdeleted'] = 'Do not show deleted messages';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
$labels['always'] = 'sempre';
-$labels['showinlineimages'] = 'Display attached images below the message';
-$labels['autosavedraft'] = 'Automatically save draft';
$labels['everynminutes'] = 'cata $n minuta(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'nunquam';
-$labels['immediately'] = 'immediately';
$labels['messagesdisplaying'] = 'Inviar me_ssages';
-$labels['messagescomposition'] = 'Composing Messages';
$labels['mimeparamfolding'] = 'Nomines de attachamento';
-$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
-$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (other)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
$labels['advancedoptions'] = 'Optiones avantiate';
-$labels['focusonnewmessage'] = 'Focus browser window on new message';
-$labels['checkallfolders'] = 'Check all folders for new messages';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
$labels['mainoptions'] = 'Optiones principal';
-$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'Section';
$labels['maintenance'] = 'Mantenimento';
$labels['newmessage'] = 'Nove message';
$labels['signatureoptions'] = 'Optiones de signatura';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
$labels['autoaddsignature'] = 'Automaticamente inserta signatura';
-$labels['newmessageonly'] = 'new message only';
-$labels['replyandforwardonly'] = 'replies and forwards only';
$labels['insertsignature'] = 'Insertar signatura';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
$labels['spellcheckoptions'] = 'Optiones de verification orthographic';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
$labels['addtodict'] = 'Adder al dictionario';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'Dossier';
$labels['folders'] = 'Dossieres';
$labels['foldername'] = 'Nomine de dossier';
@@ -489,55 +269,20 @@ $labels['messagecount'] = 'Messages';
$labels['create'] = 'Crear';
$labels['createfolder'] = 'Crear un nove dossier';
$labels['managefolders'] = 'Gerer le dossieres';
-$labels['specialfolders'] = 'Special Folders';
$labels['properties'] = 'Proprietates';
$labels['folderproperties'] = 'Proprietates de dossier';
-$labels['parentfolder'] = 'Parent folder';
$labels['location'] = 'Location';
$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
$labels['foldertype'] = 'Typo de dossier';
$labels['personalfolder'] = 'Dossier private';
-$labels['otherfolder'] = 'Other User\'s Folder';
$labels['sharedfolder'] = 'Dossier public';
-
$labels['sortby'] = 'Ordinar per';
-$labels['sortasc'] = 'Sort ascending';
-$labels['sortdesc'] = 'Sort descending';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
$labels['source'] = 'Fonte';
$labels['license'] = 'Licentia';
$labels['support'] = 'Obtener supporte';
-
-// units
-$labels['B'] = 'B';
-$labels['KB'] = 'KB';
-$labels['MB'] = 'MB';
-$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Anglese';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
$labels['japanese'] = 'Japonese';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/ia/messages.inc b/program/localization/ia/messages.inc
index d6fbba87d..50ef68145 100644
--- a/program/localization/ia/messages.inc
+++ b/program/localization/ia/messages.inc
@@ -15,162 +15,27 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'Initio de session fallite';
-$messages['cookiesdisabled'] = 'Your browser does not accept cookies.';
-$messages['sessionerror'] = 'Your session is invalid or expired.';
-$messages['storageerror'] = 'Connection to storage server failed.';
$messages['servererror'] = 'Error de servitor!';
-$messages['servererrormsg'] = 'Server Error: $msg';
$messages['dberror'] = 'Error de base de datos!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Invalid request! No data was saved.';
-$messages['invalidhost'] = 'Invalid server name.';
-$messages['nomessagesfound'] = 'No messages found in this mailbox.';
-$messages['loggedout'] = 'You have successfully terminated the session. Good bye!';
-$messages['mailboxempty'] = 'Mailbox is empty.';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'Cargante ...';
-$messages['uploading'] = 'Uploading file...';
$messages['uploadingmany'] = 'Incargante files...';
$messages['loadingdata'] = 'Cargante datos...';
-$messages['checkingmail'] = 'Checking for new messages...';
$messages['sendingmessage'] = 'Inviante message...';
-$messages['messagesent'] = 'Message sent successfully.';
-$messages['savingmessage'] = 'Saving message...';
-$messages['messagesaved'] = 'Message saved to Drafts.';
$messages['successfullysaved'] = 'Salveguardate con successo.';
-$messages['addedsuccessfully'] = 'Contact added successfully to address book.';
-$messages['contactexists'] = 'A contact with the same e-mail address already exists.';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
-$messages['blockedimages'] = 'To protect your privacy, remote images are blocked in this message.';
-$messages['encryptedmessage'] = 'This is an encrypted message and can not be displayed. Sorry!';
$messages['nocontactsfound'] = 'Nulle contactos trovate.';
-$messages['contactnotfound'] = 'The requested contact was not found.';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'Falleva in inviar le message.';
-$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
-$messages['errorsavingsent'] = 'An error occured while saving sent message.';
-$messages['errorsaving'] = 'An error occured while saving.';
$messages['errormoving'] = 'Non pote mover le message(s)';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'Il non pote deler le message(s).';
-$messages['errormarking'] = 'Could not mark the message(s).';
-$messages['deletecontactconfirm'] = 'Do you really want to delete selected contact(s)?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
-$messages['deletemessagesconfirm'] = 'Do you really want to delete selected message(s)?';
-$messages['deletefolderconfirm'] = 'Do you really want to delete this folder?';
-$messages['purgefolderconfirm'] = 'Do you really want to delete all messages in this folder?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
-$messages['folderdeleting'] = 'Deleting folder...';
-$messages['foldermoving'] = 'Moving folder...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
-$messages['formincomplete'] = 'The form was not completely filled out.';
-$messages['noemailwarning'] = 'Please enter a valid email address.';
$messages['nonamewarning'] = 'Per favor inserta nomine.';
-$messages['nopagesizewarning'] = 'Please enter a page size.';
-$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
-$messages['norecipientwarning'] = 'Please enter at least one recipient.';
-$messages['nosubjectwarning'] = 'The "Subject" field is empty. Would you like to enter one now?';
-$messages['nobodywarning'] = 'Send this message without text?';
-$messages['notsentwarning'] = 'Message has not been sent. Do you want to discard your message?';
-$messages['noldapserver'] = 'Please select an ldap server to search.';
-$messages['nosearchname'] = 'Please enter a contact name or email address.';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = '$nr messages trovate.';
$messages['contactsearchsuccessful'] = '$nr contactos trovate.';
-$messages['searchnomatch'] = 'Search returned no matches.';
$messages['searching'] = 'Cercante...';
$messages['checking'] = 'A verificar...';
-$messages['nospellerrors'] = 'No spelling errors found.';
-$messages['folderdeleted'] = 'Folder successfully deleted.';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'Delete con successo.';
-$messages['converting'] = 'Removing formatting...';
-$messages['messageopenerror'] = 'Could not load message from server.';
$messages['fileuploaderror'] = 'Incargamento de file falleva.';
-$messages['filesizeerror'] = 'The uploaded file exceeds the maximum size of $size.';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
-$messages['sourceisreadonly'] = 'This address source is read only.';
-$messages['errorsavingcontact'] = 'Could not save the contact address.';
-$messages['movingmessage'] = 'Moving message(s)...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
-$messages['receiptsent'] = 'Successfully sent a read receipt.';
-$messages['errorsendingreceipt'] = 'Could not send the receipt.';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
-$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
-$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
$messages['selectimportfile'] = 'Per favor tu selige le file a incargar.';
-$messages['addresswriterror'] = 'The selected address book is not writeable.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
-$messages['importwait'] = 'Importing, please wait...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operation not permitted!';
-$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
$messages['emailformaterror'] = 'Adresse de e-mail invalide: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
$messages['namecannotbeempty'] = 'Le nomine non pote esser vacue.';
$messages['nametoolong'] = 'Le nomine es troppo longe.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/id_ID/labels.inc b/program/localization/id_ID/labels.inc
index a8d5f4c5b..581428aab 100644
--- a/program/localization/id_ID/labels.inc
+++ b/program/localization/id_ID/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Selamat datang di $product';
$labels['username'] = 'Username';
$labels['password'] = 'Password';
$labels['server'] = 'Server';
$labels['login'] = 'Masuk';
-
-// taskbar
$labels['logout'] = 'Keluar';
$labels['mail'] = 'E-Mail';
$labels['settings'] = 'Pengaturan';
$labels['addressbook'] = 'Buku Alamat';
-
-// mailbox names
$labels['inbox'] = 'Kotak Masuk';
$labels['drafts'] = 'Konsep';
$labels['sent'] = 'Terkirim';
$labels['trash'] = 'Surat Terhapus';
$labels['junk'] = 'Sampah';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
+$labels['show_real_foldernames'] = 'Tampilkan nama asli untuk folder spesial';
$labels['subject'] = 'Judul';
$labels['from'] = 'Pengirim';
$labels['sender'] = 'Pengirim';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Prioritas';
$labels['organization'] = 'Organisasi';
$labels['readstatus'] = 'Status Terbaca';
$labels['listoptions'] = 'Daftar Pilihan...';
-
$labels['mailboxlist'] = 'Semua Folder';
$labels['messagesfromto'] = 'Pesan dari $from sampai $to dari total $count';
$labels['threadsfromto'] = 'Untaian dari $from sampai $to dari total $count';
$labels['messagenrof'] = 'Pesan $nr dari total $count';
$labels['fromtoshort'] = '$from - $to dari total $count';
-
$labels['copy'] = 'Salin';
$labels['move'] = 'Pindahkan';
$labels['moveto'] = 'Pindahkan ke...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Unduh';
$labels['open'] = 'Buka';
$labels['showattachment'] = 'Tampilkan';
$labels['showanyway'] = 'Tampilkan saja';
-
$labels['filename'] = 'Nama berkas';
$labels['filesize'] = 'Ukuran berkas';
-
$labels['addtoaddressbook'] = 'Tambah ke buku alamat';
-
-// weekdays short
$labels['sun'] = 'Min';
$labels['mon'] = 'Sen';
$labels['tue'] = 'Sel';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Rab';
$labels['thu'] = 'Kam';
$labels['fri'] = 'Jum';
$labels['sat'] = 'Sab';
-
-// weekdays long
$labels['sunday'] = 'Minggu';
$labels['monday'] = 'Senin';
$labels['tuesday'] = 'Selasa';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Rabu';
$labels['thursday'] = 'Kamis';
$labels['friday'] = 'Jumat';
$labels['saturday'] = 'Sabtu';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Des';
-
-// months long
$labels['longjan'] = 'Januari';
$labels['longfeb'] = 'Februari';
$labels['longmar'] = 'Maret';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Spetember';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Desember';
-
$labels['today'] = 'Hari ini';
-
-// toolbar buttons
$labels['refresh'] = 'Segarkan';
$labels['checkmail'] = 'Periksa pesan baru';
$labels['compose'] = 'Tulis sebuah pesan';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Tindakan lain..';
$labels['more'] = 'Berikutnya';
$labels['back'] = 'Kembali';
$labels['options'] = 'Pilihan';
-
$labels['select'] = 'Pilih';
$labels['all'] = 'Semua';
$labels['none'] = 'Tidak ada';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Bentangkan Semua';
$labels['expand-unread'] = 'Bentangkan yang Belum Terbaca';
$labels['collapse-all'] = 'Lipat Semua';
$labels['threaded'] = 'Teruntai';
-
$labels['autoexpand_threads'] = 'Bentangkan pesan teruntai';
$labels['do_expand'] = 'semua untaian';
$labels['expand_only_unread'] = 'hanya pesan yang belum terbaca';
@@ -190,16 +163,13 @@ $labels['listcolumns'] = 'Perlihatkan kolom';
$labels['listsorting'] = 'Mengurutkan kolom';
$labels['listorder'] = 'Mengurutkan susunan';
$labels['listmode'] = 'Perlihatkan mode tinjauan';
-
$labels['folderactions'] = 'Tindakan pada folder...';
$labels['compact'] = 'Rampingkan';
$labels['empty'] = 'Kosong';
-$labels['importmessages'] = 'Import messages';
-
+$labels['importmessages'] = 'Impor pesan';
$labels['quota'] = 'Penggunaan ruang';
$labels['unknown'] = 'Tidak dikenal';
$labels['unlimited'] = 'Tidak terbatas';
-
$labels['quicksearch'] = 'Pencarian cepat';
$labels['resetsearch'] = 'Atur ulang pencarian';
$labels['searchmod'] = 'Peubah pencarian';
@@ -207,13 +177,10 @@ $labels['msgtext'] = 'Seluruh pesan';
$labels['body'] = 'Badan';
$labels['type'] = 'Tipe';
$labels['namex'] = 'Nama';
-
$labels['openinextwin'] = 'Buka dalam jendela baru';
$labels['emlsave'] = 'Unduh (.eml)';
$labels['changeformattext'] = 'Tampilkan dalam format text biasa';
$labels['changeformathtml'] = 'Tampilkan dalam format HTML';
-
-// message compose
$labels['editasnew'] = 'Sunting sebagai pesan baru';
$labels['send'] = 'Kirim';
$labels['sendmessage'] = 'Kirim pesan';
@@ -225,26 +192,22 @@ $labels['returnreceipt'] = 'Tanda terima kembali';
$labels['dsn'] = 'Pemberitahuan status terkirim';
$labels['mailreplyintro'] = 'Pada $date, $sender menulis:';
$labels['originalmessage'] = 'Pesan Asli';
-
$labels['editidents'] = 'Ubah identitas';
$labels['spellcheck'] = 'Ejaan';
$labels['checkspelling'] = 'Pemeriksaan ejaan';
$labels['resumeediting'] = 'Lanjutkan menyunting';
$labels['revertto'] = 'Kembalikan ke';
-
$labels['attach'] = 'Lampirkan';
$labels['attachments'] = 'Sisipan';
$labels['upload'] = 'Unggah';
$labels['uploadprogress'] = '$percent ($current dari $total)';
$labels['close'] = 'Tutup';
$labels['messageoptions'] = 'Pilihan pesan...';
-
$labels['low'] = 'Rendah';
$labels['lowest'] = 'Paling Rendah';
$labels['normal'] = 'Normal';
$labels['high'] = 'Tinggi';
$labels['highest'] = 'Paling tinggi';
-
$labels['nosubject'] = '(tanpa judul)';
$labels['showimages'] = 'Tampilkan gambar';
$labels['alwaysshow'] = 'Selalu tampilkan gambar dari $sender';
@@ -252,25 +215,19 @@ $labels['isdraft'] = 'Ini adalah konsep surat.';
$labels['andnmore'] = '$nr lagi...';
$labels['togglemoreheaders'] = 'Tampilkan kepala pesan lebih lanjut';
$labels['togglefullheaders'] = 'Beralih kepala pesan penuh';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Teks murni';
$labels['savesentmessagein'] = 'Simpan pesan terkirim di';
$labels['dontsave'] = 'Jangan disimpan';
$labels['maxuploadsize'] = 'Ukuran file maksimal adalah $size';
-
$labels['addcc'] = 'Tambah Cc';
$labels['addbcc'] = 'Tambah Bcc';
$labels['addreplyto'] = 'Tambah Balas Ke';
$labels['addfollowupto'] = 'Tambahkan Tindak-Lanjut-Ke';
-
-// mdn
$labels['mdnrequest'] = 'Pengirim pesan ini telah meminta untuk diberitahu ketika Anda membaca pesan ini. Apakah anda ingin memberitahu pengirim?';
$labels['receiptread'] = 'Tanda Terima (baca)';
$labels['yourmessage'] = 'Ini adalah Tanda Terima untuk pesan Anda';
$labels['receiptnote'] = 'Catatan: Tanda Terima ini hanya mengesahkan bahwa pesan telah diperlihatkan pada komputer penerima. Tidak ada jaminan bahwa penerima telah membaca atau mengerti isi pesan.';
-
-// address boook
$labels['name'] = 'Nama yang ditampilkan';
$labels['firstname'] = 'Nama depan';
$labels['surname'] = 'Nama belakang';
@@ -305,7 +262,6 @@ $labels['search'] = 'Cari';
$labels['advsearch'] = 'Pencarian Lebih Lanjut';
$labels['advanced'] = 'Tingkat lanjut';
$labels['other'] = 'Lainnya';
-
$labels['typehome'] = 'Rumah';
$labels['typework'] = 'Kantor';
$labels['typeother'] = 'Lainnya';
@@ -320,14 +276,12 @@ $labels['typeassistant'] = 'Asisten';
$labels['typehomepage'] = 'Laman Web';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Tambah kolom isian';
$labels['addcontact'] = 'Tambah kontak baru';
$labels['editcontact'] = 'Ubah kontak';
$labels['contacts'] = 'Daftar kontak';
$labels['contactproperties'] = 'Properti kontak';
$labels['personalinfo'] = 'Informasi pribadi';
-
$labels['edit'] = 'Ubah';
$labels['cancel'] = 'Batal';
$labels['save'] = 'Simpan';
@@ -336,7 +290,6 @@ $labels['rename'] = 'Ganti nama';
$labels['addphoto'] = 'Tambah';
$labels['replacephoto'] = 'Ganti';
$labels['uploadphoto'] = 'Unggah foto';
-
$labels['newcontact'] = 'Buat kartu kontak baru';
$labels['deletecontact'] = 'Hapus kontak terpilih';
$labels['composeto'] = 'Tulis surat kepada';
@@ -350,42 +303,32 @@ $labels['newcontactgroup'] = 'Buat Grup baru';
$labels['grouprename'] = 'Ganti nama grup';
$labels['groupdelete'] = 'Hapus grup';
$labels['groupremoveselected'] = 'Hapus kontak terpilih dari grup';
-
$labels['previouspage'] = 'Perlihatkan himpunan sebelumnya';
$labels['firstpage'] = 'Perlihatkan himpunan pertama';
$labels['nextpage'] = 'Perlihatkan himpunan selanjutnya';
$labels['lastpage'] = 'Perlihatkan himpunan terakhir';
-
$labels['group'] = 'Kelompok';
$labels['groups'] = 'Kelompok';
-$labels['listgroup'] = 'List group members';
+$labels['listgroup'] = 'Daftar anggota grup';
$labels['personaladrbook'] = 'Alamat pribadi';
-
$labels['searchsave'] = 'Simpan pencarian';
$labels['searchdelete'] = 'Hapus pencarian';
-
$labels['import'] = 'Impor';
$labels['importcontacts'] = 'Impor kontak';
$labels['importfromfile'] = 'Impor dari berkas:';
-$labels['importtarget'] = 'Tambahkan kontak baru ke buku alamat:';
$labels['importreplace'] = 'Ganti seluruh buku alamat';
$labels['importdesc'] = 'Anda dapat mengunggah kontak dari buku alamat yang telah ada.<br/>Saat ini kami mendukung import alamat dari format data <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> atau CSV (comma-separated).';
$labels['done'] = 'Selesai';
-
-// settings
$labels['settingsfor'] = 'Pengaturan untuk';
$labels['about'] = 'Informasi program';
$labels['preferences'] = 'Pilihan';
$labels['userpreferences'] = 'Pilihan pengguna';
$labels['editpreferences'] = 'Ubah pilihan pengguna';
-
$labels['identities'] = 'Identitas';
$labels['manageidentities'] = 'Atur identitas untuk akun ini';
$labels['newidentity'] = 'Identitas baru';
-
$labels['newitem'] = 'Item baru';
$labels['edititem'] = 'Ubah item';
-
$labels['preferhtml'] = 'Lebih suka HTML';
$labels['defaultcharset'] = 'Default Character';
$labels['htmlmessage'] = 'Pesan HTML';
@@ -407,7 +350,7 @@ $labels['htmleditor'] = 'Tulis pesan HTML';
$labels['htmlonreply'] = 'balasan untuk pesan HTML saja';
$labels['htmlonreplyandforward'] = 'ketika meneruskan atau membalas pesan HTML';
$labels['htmlsignature'] = 'Tandatangan HTML';
-$labels['showemail'] = 'Show email address with display name';
+$labels['showemail'] = 'Tampilkan alamat email dengan nama';
$labels['previewpane'] = 'Unjuk pratinjau';
$labels['skin'] = 'Tampilan antarmuka';
$labels['logoutclear'] = 'Bersihkan Tong Sampah saat keluar';
@@ -477,11 +420,10 @@ $labels['spellcheckignorenums'] = 'Abaikan kata-kata yang bernomor';
$labels['spellcheckignorecaps'] = 'Abaikan kata-kata dengan huruf besar semua';
$labels['addtodict'] = 'Tambahkan ke kamus';
$labels['mailtoprotohandler'] = 'Daftarkan pengampu protokol untuk link mailto:';
-$labels['standardwindows'] = 'Handle popups as standard windows';
+$labels['standardwindows'] = 'Kelola popup sebagai standar window';
$labels['forwardmode'] = 'Meneruskan pesan';
$labels['inline'] = 'dalam surat';
$labels['asattachment'] = 'sebagai sisipan';
-
$labels['folder'] = 'Folder';
$labels['folders'] = 'Semua Folder';
$labels['foldername'] = 'Nama folder';
@@ -502,26 +444,20 @@ $labels['foldertype'] = 'Jenis folder';
$labels['personalfolder'] = 'Folder pribadi';
$labels['otherfolder'] = 'Folder pengguna lain';
$labels['sharedfolder'] = 'Folder publik';
-
$labels['sortby'] = 'Urut berdasarkan';
$labels['sortasc'] = 'Urut menaik';
$labels['sortdesc'] = 'Urut menurun';
$labels['undo'] = 'Batalkan';
-
$labels['installedplugins'] = 'Plugin terpasang';
$labels['plugin'] = 'Pengaya';
$labels['version'] = 'Versi';
$labels['source'] = 'Sumber';
$labels['license'] = 'Lisensi';
$labels['support'] = 'Dukungan';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inggris';
$labels['westerneuropean'] = 'Eropa Barat';
@@ -540,5 +476,4 @@ $labels['vietnamese'] = 'Vietnam';
$labels['japanese'] = 'Jepang';
$labels['korean'] = 'Korea';
$labels['chinese'] = 'Cina';
-
?>
diff --git a/program/localization/id_ID/messages.inc b/program/localization/id_ID/messages.inc
index a81b2ab01..020b03f8a 100644
--- a/program/localization/id_ID/messages.inc
+++ b/program/localization/id_ID/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Terjadi error!';
$messages['loginfailed'] = 'Login gagal.';
$messages['cookiesdisabled'] = 'Browser Anda tidak menerima cookies.';
@@ -56,8 +54,6 @@ $messages['contactnotfound'] = 'Kontak yang diminta tidak ditemukan';
$messages['contactsearchonly'] = 'Masukkan jenis pencarian untuk mencari kontak';
$messages['sendingfailed'] = 'Gagal mengirim pesan.';
$messages['senttooquickly'] = 'Mohon tunggu $sec detik sebelum mengirim pesan ini.';
-$messages['errorsavingsent'] = 'Error ketika menyimpan pesan terkirim.';
-$messages['errorsaving'] = 'Error ketika menyimpan.';
$messages['errormoving'] = 'Pesan tidak bisa dipindahkan';
$messages['errorcopying'] = 'Pesan tidak dapat disalin';
$messages['errordeleting'] = 'Pesan tidak bisa dihapus';
@@ -101,16 +97,16 @@ $messages['converting'] = 'Mengembalikan pesan ke format awal...';
$messages['messageopenerror'] = 'Tidak dapat mengambil pesan dari server';
$messages['fileuploaderror'] = 'Gagal mengunggah berkas';
$messages['filesizeerror'] = 'Berkas terunggah mencapai ukuran maksimal dari $size';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
+$messages['copysuccess'] = 'Berhasil menyalin kontak $nr';
+$messages['movesuccess'] = 'Berhasil memindahkan kontak $nr';
+$messages['copyerror'] = 'Tidak dapat menyalin kontak';
+$messages['moveerror'] = 'Tidak dapat memindahkan kontak';
$messages['sourceisreadonly'] = 'Sumber dari alamat ini hanya dapat dibaca';
$messages['errorsavingcontact'] = 'Tidak bisa menyimpan alamat kontak';
$messages['movingmessage'] = 'Memindahkan pesan...';
$messages['copyingmessage'] = 'Menyalin pesan...';
$messages['copyingcontact'] = 'Menyalin kontak...';
-$messages['movingcontact'] = 'Moving contact(s)...';
+$messages['movingcontact'] = 'Memindahkan kontak(s)...';
$messages['deletingmessage'] = 'Menghapus pesan...';
$messages['markingmessage'] = 'Menandai Pesan...';
$messages['addingmember'] = 'Menambahkan kontak ke grup...';
@@ -129,8 +125,8 @@ $messages['importwait'] = 'Sedang mengimpor, harap menunggu...';
$messages['importformaterror'] = 'Proses import gagal. File yang di upload bukan file import yang valid.';
$messages['importconfirm'] = '<b>Berhasil mengimpor $inserted kontak</b>';
$messages['importconfirmskipped'] = '<b>$skipped entri yang sudah ada dilewatkan</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
+$messages['importmessagesuccess'] = 'Berhasil mengimport $nr pesan';
+$messages['importmessageerror'] = 'Gagal mengimport! File yang di upload buka pesan yang valid atau file mailbox';
$messages['opnotpermitted'] = 'Operasi tidak diperbolehkan!';
$messages['nofromaddress'] = 'kekurangan alamat e-mail pada identitas terpilih';
$messages['editorwarning'] = 'Beralih pada editor teks murni akan mengakibatkan semua pemformatan teks hilang. Lanjutkan?';
@@ -144,7 +140,6 @@ $messages['smtperror'] = 'SMTP Error : $msg';
$messages['emailformaterror'] = 'Alamat e-mail salah: $email';
$messages['toomanyrecipients'] = 'Terlalu banyak penerima. Batas maksimal penerima adalah $max';
$messages['maxgroupmembersreached'] = 'Jumlah grup melebihi jumlah maksimum $max';
-$messages['internalerror'] = 'Terjadi kesalahan internal. Silahkan diulang kembali';
$messages['contactdelerror'] = 'Kontak tidak bisa dihapus';
$messages['contactdeleted'] = 'Kontak berhasil dihapus';
$messages['contactrestoreerror'] = 'Tidak bisa mengembalikan kontak yang terhapus.';
@@ -172,5 +167,4 @@ $messages['parentnotwritable'] = 'Tidak bisa membuat/memindahkan map ke map indu
$messages['messagetoobig'] = 'Pesan terlalu besar untuk diproses.';
$messages['attachmentvalidationerror'] = 'PERINGATAN! Lampiran ini mencurigakan karena jenisnya tidak cocok dengan jenis yang dinyatakan di dalam pesan. Jika Anda tidak mempercayai pengirim, Anda tidak perlu membukanya di browser karena mungkin berisi konten berbahaya.<br/><br/><em>Expected: $expected; found: $detected</em>';
$messages['noscriptwarning'] = 'Peringatan: Layanan ini membutuhkan Javascript! Untuk menggunakannya silahkan aktifkan Javascript di pengaturan browser Anda.';
-
?>
diff --git a/program/localization/index.inc b/program/localization/index.inc
index 4b848dc49..4496b056a 100644
--- a/program/localization/index.inc
+++ b/program/localization/index.inc
@@ -46,6 +46,7 @@ $rcube_languages = array(
'de_DE' => 'German (Deutsch)',
'de_CH' => 'German (Schweiz)',
'nl_NL' => 'Dutch (Nederlands)',
+ 'en_CA' => 'English (Canada)',
'en_GB' => 'English (GB)',
'en_US' => 'English (US)',
'eo' => 'Esperanto',
@@ -66,6 +67,7 @@ $rcube_languages = array(
'it_IT' => 'Italian (Italiano)',
'ja_JP' => 'Japanese (日本語)',
'km_KH' => 'Khmer (ភាសាážáŸ’មែរ)',
+ 'kn_IN' => 'Konkani (कोंकणी)',
'ko_KR' => 'Korean (한국어)',
'ku' => 'Kurdish (Kurmancî)',
'lv_LV' => 'Latvian (Latviešu)',
@@ -91,11 +93,13 @@ $rcube_languages = array(
'sl_SI' => 'Slovenian (SlovenÅ¡Äina)',
'es_AR' => 'Spanish (Argentina)',
'es_ES' => 'Spanish (Español)',
+ 'es_419' => 'Spanish (Latin America)',
'sv_SE' => 'Swedish (Svenska)',
'ta_IN' => 'Tamil (தமிழà¯)',
'th_TH' => 'Thai (ไทย)',
'tr_TR' => 'Turkish (Türkçe)',
'uk_UA' => 'Ukrainian (УкраїнÑька)',
+ 'ur_PK' => 'Urdu (اÙردو)',
'vi_VN' => 'Vietnamese (Tiếng Việt)',
'cy_GB' => 'Welsh (Cymraeg)',
'fy_NL' => 'West Frisian (Frysk)',
diff --git a/program/localization/is_IS/labels.inc b/program/localization/is_IS/labels.inc
index c2859ce75..8b90730f7 100644
--- a/program/localization/is_IS/labels.inc
+++ b/program/localization/is_IS/labels.inc
@@ -15,34 +15,22 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Velkomin í $product';
$labels['username'] = 'Netfang';
$labels['password'] = 'Lykilorð';
$labels['server'] = 'Póstþjónn';
$labels['login'] = 'Innskrá';
-
-// taskbar
$labels['logout'] = 'Útskrá';
$labels['mail'] = 'Tölvupóstur';
$labels['settings'] = 'Stillingar';
$labels['addressbook'] = 'Nafnaskrá';
-
-// mailbox names
$labels['inbox'] = 'Innhólf';
$labels['drafts'] = 'Drög';
$labels['sent'] = 'Sent';
$labels['trash'] = 'Rusl';
$labels['junk'] = 'Ruslpóstur';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Titill';
$labels['from'] = 'Frá';
-$labels['sender'] = 'Sender';
$labels['to'] = 'Til';
$labels['cc'] = 'Afrit';
$labels['bcc'] = 'Blint afrit';
@@ -53,28 +41,18 @@ $labels['size'] = 'Stærð';
$labels['priority'] = 'Forgangur';
$labels['organization'] = 'Stofnun';
$labels['readstatus'] = 'Lesmerking';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'Möppur';
$labels['messagesfromto'] = 'Skeyti $from til $to af $count';
$labels['threadsfromto'] = 'Þræðir $from til $to af $count';
$labels['messagenrof'] = 'Skeyti $nr af $count';
$labels['fromtoshort'] = '$from - $to af $count';
-
$labels['copy'] = 'Afrit';
$labels['move'] = 'Færa';
$labels['moveto'] = 'Færa í...';
$labels['download'] = 'Hlaða niður';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'Skráarheiti';
$labels['filesize'] = 'Skráarstærð';
-
$labels['addtoaddressbook'] = 'Bæta í nafnaskrá';
-
-// weekdays short
$labels['sun'] = 'sunn.';
$labels['mon'] = 'mán.';
$labels['tue'] = 'þrið.';
@@ -82,8 +60,6 @@ $labels['wed'] = 'miðv.';
$labels['thu'] = 'fimm.';
$labels['fri'] = 'föst.';
$labels['sat'] = 'laug.';
-
-// weekdays long
$labels['sunday'] = 'sunnudagur';
$labels['monday'] = 'mánudagur';
$labels['tuesday'] = 'þriðjudagur';
@@ -91,8 +67,6 @@ $labels['wednesday'] = 'miðvikudagur';
$labels['thursday'] = 'fimmtudagur';
$labels['friday'] = 'föstudagur';
$labels['saturday'] = 'laugardagur';
-
-// months short
$labels['jan'] = 'jan';
$labels['feb'] = 'feb';
$labels['mar'] = 'mar';
@@ -105,8 +79,6 @@ $labels['sep'] = 'sep';
$labels['oct'] = 'okt';
$labels['nov'] = 'nóv';
$labels['dec'] = 'des';
-
-// months long
$labels['longjan'] = 'janúar';
$labels['longfeb'] = 'febrúar';
$labels['longmar'] = 'mars';
@@ -119,10 +91,7 @@ $labels['longsep'] = 'september';
$labels['longoct'] = 'október';
$labels['longnov'] = 'nóvember';
$labels['longdec'] = 'desember';
-
$labels['today'] = 'Ã dag';
-
-// toolbar buttons
$labels['refresh'] = 'Endurhlaða';
$labels['checkmail'] = 'Gá að nýjum skeytum';
$labels['compose'] = 'Semja skeyti';
@@ -155,7 +124,6 @@ $labels['moreactions'] = 'Fleiri aðgerðir...';
$labels['more'] = 'Meira';
$labels['back'] = 'Til baka';
$labels['options'] = 'Valkostir';
-
$labels['select'] = 'Velja';
$labels['all'] = 'Allt';
$labels['none'] = 'Ekkert';
@@ -163,9 +131,7 @@ $labels['currpage'] = 'Núverandi síða';
$labels['unread'] = 'Ólesið';
$labels['flagged'] = 'Flaggað';
$labels['unanswered'] = 'Ósvarað';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'Eytt';
-$labels['undeleted'] = 'Not deleted';
$labels['invert'] = 'Umhverfa';
$labels['filter'] = 'Sía';
$labels['list'] = 'Listi';
@@ -174,7 +140,6 @@ $labels['expand-all'] = 'Þenja allt út';
$labels['expand-unread'] = 'Þenja ólesið';
$labels['collapse-all'] = 'Fella allt saman';
$labels['threaded'] = 'Þrætt';
-
$labels['autoexpand_threads'] = 'Þenja skeytaþræði út';
$labels['do_expand'] = 'allir þræðir';
$labels['expand_only_unread'] = 'aðeins ólesin skeyti';
@@ -190,31 +155,19 @@ $labels['listcolumns'] = 'Listadálkar';
$labels['listsorting'] = 'Röðunardálkur';
$labels['listorder'] = 'Röðun';
$labels['listmode'] = 'Listayfirlit';
-
$labels['folderactions'] = 'Möppuaðgerðir...';
$labels['compact'] = 'Pakka';
$labels['empty'] = 'Tæma';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Gagnamagn';
$labels['unknown'] = 'óþekkt';
$labels['unlimited'] = 'ótakmarkað';
-
$labels['quicksearch'] = 'Flýtileit';
$labels['resetsearch'] = 'Tæma leit';
$labels['searchmod'] = 'Leitarskilyrði';
$labels['msgtext'] = 'Allt skeytið';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'Opna í nýjum glugga';
$labels['emlsave'] = 'Niðurhlaða (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'Breyta sem nýju';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'Senda skeytið núna';
$labels['savemessage'] = 'Vista drög';
$labels['addattachment'] = 'Hengja við';
@@ -224,52 +177,39 @@ $labels['returnreceipt'] = 'Kvittun við lestur';
$labels['dsn'] = 'Afhendingarstaða';
$labels['mailreplyintro'] = 'Þann $date, $sender reit:';
$labels['originalmessage'] = 'Upprunalegt skeyti';
-
$labels['editidents'] = 'Breyta sjálfum';
$labels['spellcheck'] = 'Stafsetning';
$labels['checkspelling'] = 'Athuga stafsetningu';
$labels['resumeediting'] = 'Aftur í ritham';
$labels['revertto'] = 'Hverfa til';
-
$labels['attach'] = 'Viðhengi';
$labels['attachments'] = 'Viðhengi';
$labels['upload'] = 'Hlaða upp';
$labels['uploadprogress'] = '$percent ($current af $total)';
$labels['close'] = 'Loka';
$labels['messageoptions'] = 'Skeytisvalmöguleikar...';
-
$labels['low'] = 'Lágt';
$labels['lowest'] = 'Lægst';
$labels['normal'] = 'Venjulegt';
$labels['high'] = 'Hátt';
$labels['highest'] = 'Hæst';
-
$labels['nosubject'] = '(án titils)';
$labels['showimages'] = 'Sýna myndir';
$labels['alwaysshow'] = 'Sýna alltaf myndir frá $sender';
$labels['isdraft'] = 'Þetta eru drög að skeyti';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Venjulegur texti';
$labels['savesentmessagein'] = 'Vista send skeyti í';
$labels['dontsave'] = 'ekki vista';
$labels['maxuploadsize'] = 'Leyfileg hámarksstærð skjals er $size';
-
$labels['addcc'] = 'Bæta við Cc';
$labels['addbcc'] = 'Bæta við Bcc';
$labels['addreplyto'] = 'Bæta við Reply-To';
$labels['addfollowupto'] = 'Nýtt svar við';
-
-// mdn
$labels['mdnrequest'] = 'Sendandi þessa skeytið hefur óskað þess að þú látir vita að þú hafir lesið þetta skeyti. Viltu láta hann vita?';
$labels['receiptread'] = 'Kvittun (lesa)';
$labels['yourmessage'] = 'Þetta er kvittun fyrir skeytið';
$labels['receiptnote'] = 'ATH: Þessi kvittun segir aðeins til um að skeytið kom upp á skjánum á viðtakanda. Það er engin sönnun um að hann hafi lesið eða skilið innihaldið.';
-
-// address boook
$labels['name'] = 'Skjánafn';
$labels['firstname'] = 'Eiginnafn';
$labels['surname'] = 'Eftirnafn';
@@ -304,7 +244,6 @@ $labels['search'] = 'Leit';
$labels['advsearch'] = 'Ãtarleg leit';
$labels['advanced'] = 'Flóknari stillingar';
$labels['other'] = 'Annað';
-
$labels['typehome'] = 'Heimamappa';
$labels['typework'] = 'Vinnusími';
$labels['typeother'] = 'Annað';
@@ -319,14 +258,12 @@ $labels['typeassistant'] = 'Aðstoðarmaður';
$labels['typehomepage'] = 'Vefur';
$labels['typeblog'] = 'Blogg';
$labels['typeprofile'] = 'Mannlýsing';
-
$labels['addfield'] = 'Bæta við svæði...';
$labels['addcontact'] = 'Nýr tengiliður';
$labels['editcontact'] = 'Lagfæra';
$labels['contacts'] = 'Tengiliðir';
$labels['contactproperties'] = 'Eiginleikar';
$labels['personalinfo'] = 'Persónulegar upplýsingar';
-
$labels['edit'] = 'Breyta';
$labels['cancel'] = 'Hætta við';
$labels['save'] = 'Vista';
@@ -334,62 +271,43 @@ $labels['delete'] = 'Eyða';
$labels['rename'] = 'Endurnefna';
$labels['addphoto'] = 'Bæta við';
$labels['replacephoto'] = 'Skipta út';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'Búa til nýtt nafnspjald';
$labels['deletecontact'] = 'Eyða völdum tengiliðum';
$labels['composeto'] = 'Skrifa skeyti til';
$labels['contactsfromto'] = 'Netföng $from til $to af $count';
$labels['print'] = 'Prenta';
$labels['export'] = 'Flytja út';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'Flytja út nafnspjöld á vCard formi';
$labels['newcontactgroup'] = 'Nýr tengiliðahópur';
$labels['grouprename'] = 'Breyta nafni hóps';
$labels['groupdelete'] = 'Fjarlægja hóp';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'Sýna fyrri síðu';
$labels['firstpage'] = 'Sýna fyrstu síðu';
$labels['nextpage'] = 'Sýna næstu síðu';
$labels['lastpage'] = 'Sýna síðustu síðu';
-
$labels['group'] = 'Hópur';
$labels['groups'] = 'Hópar';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Persónuleg heimilisföng';
-
$labels['searchsave'] = 'Vista leit';
$labels['searchdelete'] = 'Eyða leit';
-
$labels['import'] = 'Flytja inn';
$labels['importcontacts'] = 'Flytja inn nafnspjöld';
$labels['importfromfile'] = 'Flytja inn af skrá';
-$labels['importtarget'] = 'Bæta nýjum tengiliðum við:';
$labels['importreplace'] = 'Skipta út allri netfangaskránni';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'Búið';
-
-// settings
$labels['settingsfor'] = 'Stillingar fyrir';
$labels['about'] = 'Um forritið';
$labels['preferences'] = 'Stillingar';
$labels['userpreferences'] = 'Notendastillingar';
$labels['editpreferences'] = 'Breyta notendastillingum';
-
$labels['identities'] = 'Auðkenni';
$labels['manageidentities'] = 'Stjórna auðkennum þessa reiknings';
$labels['newidentity'] = 'Nýtt auðkenni';
-
$labels['newitem'] = 'Nýtt';
$labels['edititem'] = 'Breyta';
-
$labels['preferhtml'] = 'Vil HTML';
$labels['defaultcharset'] = 'Venjulegt stafasett';
$labels['htmlmessage'] = 'HTML skeyti';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
$labels['dateformat'] = 'Snið dagsetningar';
$labels['timeformat'] = 'Tímasnið';
$labels['prettydate'] = 'Fallegar dagsetningar';
@@ -400,13 +318,9 @@ $labels['timezone'] = 'Tímabelti';
$labels['pagesize'] = 'Línur á síðu';
$labels['signature'] = 'Undirskrift';
$labels['dstactive'] = 'Sumar-/vetratími';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'Skrifa HTML-skeyti';
$labels['htmlonreply'] = 'sem svar við HTML-skeytum aðeins';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'HTML-undirskrift';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Sýna forskoðunarglugga';
$labels['skin'] = 'Sniðmát á viðmóti';
$labels['logoutclear'] = 'Tæma rusl við útskráningu';
@@ -424,14 +338,12 @@ $labels['readwhendeleted'] = 'Merkja skeyti sem lesið þegar því er hent';
$labels['flagfordeletion'] = 'Merkja skeyti til eyðingar í stað þess að eyða';
$labels['skipdeleted'] = 'Ekki sýna eydd skeyti';
$labels['deletealways'] = 'Ef ekki er hægt að setja skeytið í ruslafötuna, henda þeim';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
$labels['showremoteimages'] = 'Sýna myndir annarsstaðar frá';
$labels['fromknownsenders'] = 'frá þekktum sendendum';
$labels['always'] = 'alltaf';
$labels['showinlineimages'] = 'Sýna viðhangandi myndir fyrir neðan skeytið';
$labels['autosavedraft'] = 'Vista sjálfkrafa sem drög';
$labels['everynminutes'] = '$n mínútu fresti';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'aldrei';
$labels['immediately'] = 'samstundis';
$labels['messagesdisplaying'] = 'Sýni skeyti';
@@ -447,13 +359,11 @@ $labels['checkallfolders'] = 'Athuga ný skeyti í öllum möppum';
$labels['displaynext'] = 'Að eyðingu/færslu lokinni sýna næsta skeyti';
$labels['defaultfont'] = 'Sjálfgefið letur HTML-skeyta';
$labels['mainoptions'] = 'Aðalstillingar';
-$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'Hluti';
$labels['maintenance'] = 'Viðhald';
$labels['newmessage'] = 'Nýtt skeyti';
$labels['signatureoptions'] = 'Valkostir undirskriftar';
$labels['whenreplying'] = 'Þegar svarað';
-$labels['replyempty'] = 'do not quote the original message';
$labels['replytopposting'] = 'hefja nýtt skeyti fyrir ofan eldra';
$labels['replybottomposting'] = 'hefja nýtt skeyti undir eldra';
$labels['replyremovesignature'] = 'Þegar svarað fjarlægja upphaflega undirskrift úr skeyti';
@@ -466,7 +376,6 @@ $labels['afternseconds'] = 'eftir $n sekúndur';
$labels['reqmdn'] = 'Biðja ávallt um kvittun';
$labels['reqdsn'] = 'Biðja ávallt um sendingarstöðu';
$labels['replysamefolder'] = 'Setja svarskeyti í möppu sem upphaflegt skeyti er í';
-$labels['defaultabook'] = 'Default address book';
$labels['autocompletesingle'] = 'Sleppa aukanetföngum í sjálfklárun';
$labels['listnamedisplay'] = 'Lista tengiliði sem';
$labels['spellcheckbeforesend'] = 'Athuga stafsetningu áður en skeyti er sent';
@@ -475,12 +384,6 @@ $labels['spellcheckignoresyms'] = 'Hunsa orð með merki';
$labels['spellcheckignorenums'] = 'Hunsa orð með tölum';
$labels['spellcheckignorecaps'] = 'Hunsa orð sem eru í hástöfum';
$labels['addtodict'] = 'Bæta við orðalista';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'Mappa';
$labels['folders'] = 'Möppur';
$labels['foldername'] = 'Nafn möppu';
@@ -501,26 +404,19 @@ $labels['foldertype'] = 'Möpputegund';
$labels['personalfolder'] = 'Einkamappa';
$labels['otherfolder'] = 'Möppur annara notenda';
$labels['sharedfolder'] = 'Opin mappa';
-
$labels['sortby'] = 'Raða eftir';
$labels['sortasc'] = 'Raða vaxandi';
$labels['sortdesc'] = 'Raða minnkandi';
$labels['undo'] = 'Taka til baka';
-
-$labels['installedplugins'] = 'Installed plugins';
$labels['plugin'] = 'Viðbætur';
$labels['version'] = 'Útgáfa';
$labels['source'] = 'Uppruni';
$labels['license'] = 'Notkunarleyfi';
$labels['support'] = 'Fá aðstoð';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Enska';
$labels['westerneuropean'] = 'Vesturevrópskt';
@@ -539,5 +435,4 @@ $labels['vietnamese'] = 'Víetnamskt';
$labels['japanese'] = 'Japanskt';
$labels['korean'] = 'Kóreska';
$labels['chinese'] = 'Kínverska';
-
?>
diff --git a/program/localization/is_IS/messages.inc b/program/localization/is_IS/messages.inc
index 731a19791..06b707389 100644
--- a/program/localization/is_IS/messages.inc
+++ b/program/localization/is_IS/messages.inc
@@ -15,162 +15,44 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'Innskráning mistókst';
$messages['cookiesdisabled'] = 'Vafrinn þinn vill ekki taka við kökum (cookies)';
$messages['sessionerror'] = 'Innskráningin þín ógild eða útrunnin';
$messages['storageerror'] = 'Tengin við IMAP-miðlara mistókst';
-$messages['servererror'] = 'Server Error!';
-$messages['servererrormsg'] = 'Server Error: $msg';
-$messages['dberror'] = 'Database Error!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Invalid request! No data was saved.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'Engin skeyti eru í þessu pósthólfi';
$messages['loggedout'] = 'Þú hefur útskráðst. Bless!';
$messages['mailboxempty'] = 'Pósthólfið er tómt';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'Hleð...';
-$messages['uploading'] = 'Uploading file...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'Hleð gögn...';
$messages['checkingmail'] = 'Gái að nýjum skeytum...';
-$messages['sendingmessage'] = 'Sending message...';
$messages['messagesent'] = 'Skeyti var sent';
$messages['savingmessage'] = 'Vista skeyti...';
$messages['messagesaved'] = 'Skeytið vistað í Drög';
$messages['successfullysaved'] = 'Vistun heppnaðist!';
$messages['addedsuccessfully'] = 'Netfangi var bætt í netfangaskrá';
$messages['contactexists'] = 'Þetta netfang er þegar skráð í netfangaskrána';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'Til verndar hafa allar myndir í þessu skeyti verið blokkaðar.';
$messages['encryptedmessage'] = 'Þetta er dulkóðað skeyti og því miður er ekki hægt að birta það';
$messages['nocontactsfound'] = 'Engin netföng';
-$messages['contactnotfound'] = 'The requested contact was not found.';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'Sending misheppnaðist';
-$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
-$messages['errorsavingsent'] = 'An error occured while saving sent message.';
-$messages['errorsaving'] = 'Villa kom upp þegar var verið að vista';
$messages['errormoving'] = 'Gat ekki fært skeytið';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'Gat ekki eytt skeytinu';
-$messages['errormarking'] = 'Could not mark the message(s).';
$messages['deletecontactconfirm'] = 'Ertu viss um að þú viljir eyða völdum netföngum?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
-$messages['deletemessagesconfirm'] = 'Do you really want to delete selected message(s)?';
$messages['deletefolderconfirm'] = 'Ertu viss um að vilja eyða þessari möppu?';
-$messages['purgefolderconfirm'] = 'Do you really want to delete all messages in this folder?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
-$messages['folderdeleting'] = 'Deleting folder...';
-$messages['foldermoving'] = 'Moving folder...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'Formið var ekki fyllt út að fullu';
$messages['noemailwarning'] = 'Sláðu inn gildt netfang';
$messages['nonamewarning'] = 'Sláðu inn nafn';
$messages['nopagesizewarning'] = 'Sláðu inn síðustærð';
-$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
$messages['norecipientwarning'] = 'à það minnsta einn viðtakandi verður að vera';
$messages['nosubjectwarning'] = 'Efnislínan er tóm. Viltu slá eitthvað inn í hana?';
$messages['nobodywarning'] = 'Viltu senda tómt skeyti?';
$messages['notsentwarning'] = 'Skeytið hefur ekki verið send. Viltu henda skeytinu?';
$messages['noldapserver'] = 'Please select an ldap server to search';
$messages['nosearchname'] = 'Sláðu inn nafn eða netfang';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = '$nr skeyti fundust';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'Leit skilaði engu';
$messages['searching'] = 'Leita...';
$messages['checking'] = 'Gái...';
$messages['nospellerrors'] = 'Engar innsláttarvillur fundust';
$messages['folderdeleted'] = 'Möppu var eytt';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
-$messages['deletedsuccessfully'] = 'Successfully deleted.';
-$messages['converting'] = 'Removing formatting...';
-$messages['messageopenerror'] = 'Could not load message from server.';
-$messages['fileuploaderror'] = 'File upload failed.';
-$messages['filesizeerror'] = 'The uploaded file exceeds the maximum size of $size.';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
-$messages['sourceisreadonly'] = 'This address source is read only.';
-$messages['errorsavingcontact'] = 'Could not save the contact address.';
-$messages['movingmessage'] = 'Moving message(s)...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
-$messages['receiptsent'] = 'Successfully sent a read receipt.';
-$messages['errorsendingreceipt'] = 'Could not send the receipt.';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
-$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
-$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
-$messages['selectimportfile'] = 'Please select a file to upload.';
-$messages['addresswriterror'] = 'The selected address book is not writeable.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
-$messages['importwait'] = 'Importing, please wait...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operation not permitted!';
-$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/it_IT/labels.inc b/program/localization/it_IT/labels.inc
index 55cd432f7..c9f23c64d 100644
--- a/program/localization/it_IT/labels.inc
+++ b/program/localization/it_IT/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Benvenuto in $product';
$labels['username'] = 'Utente';
$labels['password'] = 'Password';
$labels['server'] = 'Server';
$labels['login'] = 'Entra';
-
-// taskbar
$labels['logout'] = 'Esci';
$labels['mail'] = 'E-Mail';
$labels['settings'] = 'Impostazioni';
$labels['addressbook'] = 'Rubrica';
-
-// mailbox names
$labels['inbox'] = 'Posta in arrivo';
$labels['drafts'] = 'Bozze';
$labels['sent'] = 'Inviata';
$labels['trash'] = 'Cestino';
$labels['junk'] = 'Spam';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
+$labels['show_real_foldernames'] = 'Mostra nomi reali per le cartelle speciali';
$labels['subject'] = 'Oggetto';
$labels['from'] = 'Mittente';
$labels['sender'] = 'Mittente';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Priorità';
$labels['organization'] = 'Società';
$labels['readstatus'] = 'Visualizza lo stato';
$labels['listoptions'] = 'Elenco opzioni...';
-
$labels['mailboxlist'] = 'Cartelle';
$labels['messagesfromto'] = 'Messaggi da $from a $to di $count';
$labels['threadsfromto'] = 'Thread da $from a $to di $count';
$labels['messagenrof'] = 'Messaggio $nr di $count';
$labels['fromtoshort'] = '$from – $to di $count';
-
$labels['copy'] = 'Copia';
$labels['move'] = 'Sposta';
$labels['moveto'] = 'Sposta in...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Download';
$labels['open'] = 'Apri';
$labels['showattachment'] = 'Visualizza';
$labels['showanyway'] = 'Visualizza comunque';
-
$labels['filename'] = 'Nome file';
$labels['filesize'] = 'Dimensione file';
-
$labels['addtoaddressbook'] = 'Aggiungi alla rubrica';
-
-// weekdays short
$labels['sun'] = 'Dom';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Mar';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Mer';
$labels['thu'] = 'Gio';
$labels['fri'] = 'Ven';
$labels['sat'] = 'Sab';
-
-// weekdays long
$labels['sunday'] = 'Domenica';
$labels['monday'] = 'Lunedì';
$labels['tuesday'] = 'Martedì';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Mercoledì';
$labels['thursday'] = 'Giovedì';
$labels['friday'] = 'Venerdì';
$labels['saturday'] = 'Sabato';
-
-// months short
$labels['jan'] = 'Gen';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Set';
$labels['oct'] = 'Ott';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dic';
-
-// months long
$labels['longjan'] = 'Gennaio';
$labels['longfeb'] = 'Febbraio';
$labels['longmar'] = 'Marzo';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Settembre';
$labels['longoct'] = 'Ottobre';
$labels['longnov'] = 'Novembre';
$labels['longdec'] = 'Dicembre';
-
$labels['today'] = 'Oggi';
-
-// toolbar buttons
$labels['refresh'] = 'Aggiorna';
$labels['checkmail'] = 'Controlla nuovi messaggi';
$labels['compose'] = 'Scrivi un messaggio';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Altre operazioni...';
$labels['more'] = 'Di più';
$labels['back'] = 'Indietro';
$labels['options'] = 'Opzioni';
-
$labels['select'] = 'Seleziona';
$labels['all'] = 'Tutti';
$labels['none'] = 'Nessuno';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Espandi tutto';
$labels['expand-unread'] = 'Espandi non letti';
$labels['collapse-all'] = 'Richiudi tutti';
$labels['threaded'] = 'Per argomenti';
-
$labels['autoexpand_threads'] = 'Espandi';
$labels['do_expand'] = 'tutti i thread';
$labels['expand_only_unread'] = 'solo con messaggi non letti';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Elenco Colonne';
$labels['listsorting'] = 'Ordina per';
$labels['listorder'] = 'Ordinamento';
$labels['listmode'] = 'Modalità di visualizzazione';
-
$labels['folderactions'] = 'Operazioni cartella';
$labels['compact'] = 'Compatta';
$labels['empty'] = 'Svuota';
-$labels['importmessages'] = 'Import messages';
-
+$labels['importmessages'] = 'Importa messaggi';
$labels['quota'] = 'Spazio utilizzato';
$labels['unknown'] = 'sconosciuto';
$labels['unlimited'] = 'illimitato';
-
$labels['quicksearch'] = 'Ricerca veloce';
$labels['resetsearch'] = 'Annulla ricerca';
$labels['searchmod'] = 'Ambito di ricerca';
$labels['msgtext'] = 'Intero messaggio';
$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
+$labels['type'] = 'Tipo';
+$labels['namex'] = 'Nome';
$labels['openinextwin'] = 'Apri in una nuova finestra';
$labels['emlsave'] = 'Scarica (.eml)';
$labels['changeformattext'] = 'Visualizza nel formato testo semplice';
$labels['changeformathtml'] = 'Visualizza nel formato HTML';
-
-// message compose
$labels['editasnew'] = 'Modifica come nuovo';
$labels['send'] = 'Invia';
$labels['sendmessage'] = 'Invia il messaggio adesso';
@@ -224,26 +192,32 @@ $labels['returnreceipt'] = 'Ricevuta di ritorno';
$labels['dsn'] = 'Notifica di consegna';
$labels['mailreplyintro'] = 'Il $date $sender ha scritto:';
$labels['originalmessage'] = 'Messaggio originale';
-
$labels['editidents'] = 'Modifica identità';
$labels['spellcheck'] = 'Controllo ortografico';
$labels['checkspelling'] = 'Controlla ortografia';
$labels['resumeediting'] = 'Torna al messaggio';
$labels['revertto'] = 'Ripristina';
-
+$labels['restore'] = 'Ripristina';
+$labels['restoremessage'] = 'Ripristinare il messaggio?';
+$labels['responses'] = 'Risposte';
+$labels['insertresponse'] = 'Inserisci una risposta';
+$labels['manageresponses'] = 'Gestione risposte';
+$labels['savenewresponse'] = 'Salva una nuova risposta';
+$labels['editresponses'] = 'Modifica risposte';
+$labels['editresponse'] = 'Modifica risposta';
+$labels['responsename'] = 'Nome';
+$labels['responsetext'] = 'Testo della Risposta';
$labels['attach'] = 'Allega';
$labels['attachments'] = 'Allegati';
$labels['upload'] = 'Aggiungi';
$labels['uploadprogress'] = '$percent ($current di $total)';
$labels['close'] = 'Chiudi';
$labels['messageoptions'] = 'Opzioni messaggi...';
-
$labels['low'] = 'Bassa';
$labels['lowest'] = 'Molto bassa';
$labels['normal'] = 'Normale';
$labels['high'] = 'Alta';
$labels['highest'] = 'Molto alta';
-
$labels['nosubject'] = '(nessun oggetto)';
$labels['showimages'] = 'Visualizza immagini';
$labels['alwaysshow'] = 'Mostra sempre immagini da $sender';
@@ -251,25 +225,19 @@ $labels['isdraft'] = 'Questa è una bozza.';
$labels['andnmore'] = 'ancora $nr...';
$labels['togglemoreheaders'] = 'Mostra più intestazioni dei messaggi';
$labels['togglefullheaders'] = 'Visualizza header raw';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Testo semplice';
$labels['savesentmessagein'] = 'Salva i messaggi inviati in';
$labels['dontsave'] = 'non salvare';
$labels['maxuploadsize'] = 'La dimensione massima consentita è $size';
-
$labels['addcc'] = 'Aggiungi Cc';
$labels['addbcc'] = 'Aggiungi Bcc';
$labels['addreplyto'] = 'Aggiungi Rispondi a';
$labels['addfollowupto'] = 'Aggiungi Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Il mittente ha richiesto di ricevere una notifica dell\'avvenuta lettura del messaggio. Si desidera inviare tale notifica?';
$labels['receiptread'] = 'Ricevuta di ritorno (letto)';
$labels['yourmessage'] = 'Questa è la ricevuta di ritorno del messaggio inviato';
$labels['receiptnote'] = 'Nota: questa Ricevuta di ritorno attesta solamente che il messaggio è stato visualizzato nel computer del destinatario. Non c\'è pertanto alcuna garanzia che il destinatario abbia letto o compreso il suo contenuto.';
-
-// address boook
$labels['name'] = 'Nome visualizzato';
$labels['firstname'] = 'Nome';
$labels['surname'] = 'Cognome';
@@ -304,7 +272,6 @@ $labels['search'] = 'Ricerca';
$labels['advsearch'] = 'Ricerca avanzata';
$labels['advanced'] = 'Opzioni avanzate';
$labels['other'] = 'Altro';
-
$labels['typehome'] = 'Casa';
$labels['typework'] = 'Lavoro';
$labels['typeother'] = 'Altro';
@@ -319,14 +286,12 @@ $labels['typeassistant'] = 'Assistente';
$labels['typehomepage'] = 'Home page';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profilo';
-
$labels['addfield'] = 'Aggiungi campo...';
$labels['addcontact'] = 'Aggiungi contatto alla rubrica';
$labels['editcontact'] = 'Modifica contatto';
$labels['contacts'] = 'Contatti';
$labels['contactproperties'] = 'Proprietà contatto';
$labels['personalinfo'] = 'Informazioni personali';
-
$labels['edit'] = 'Modifica';
$labels['cancel'] = 'Annulla';
$labels['save'] = 'Salva';
@@ -335,7 +300,6 @@ $labels['rename'] = 'Rinomina';
$labels['addphoto'] = 'Aggiungi';
$labels['replacephoto'] = 'Sostituisci';
$labels['uploadphoto'] = 'Carica foto';
-
$labels['newcontact'] = 'Crea un nuovo contatto';
$labels['deletecontact'] = 'Elimina i contatti selezionati';
$labels['composeto'] = 'Invia email a';
@@ -349,42 +313,36 @@ $labels['newcontactgroup'] = 'Crea un nuovo gruppo';
$labels['grouprename'] = 'Rinomina il gruppo';
$labels['groupdelete'] = 'Cancella il gruppo';
$labels['groupremoveselected'] = 'Rimuovi i contatti selezionati dal gruppo';
-
$labels['previouspage'] = 'Pagina precedente';
$labels['firstpage'] = 'Prima pagina';
$labels['nextpage'] = 'Pagina successiva';
$labels['lastpage'] = 'Ultima pagina';
-
$labels['group'] = 'Gruppo';
$labels['groups'] = 'Gruppi';
-$labels['listgroup'] = 'List group members';
+$labels['listgroup'] = 'Elenca membri dei gruppi';
$labels['personaladrbook'] = 'Rubrica Personale';
-
$labels['searchsave'] = 'Salva ricerca';
$labels['searchdelete'] = 'Elimina ricerca';
-
$labels['import'] = 'Importa';
$labels['importcontacts'] = 'Importa contatti';
$labels['importfromfile'] = 'Importa da file:';
-$labels['importtarget'] = 'Aggiungi nuovi contattu alla rubrica:';
+$labels['importtarget'] = 'Aggiungi contatti a';
$labels['importreplace'] = 'Sostituisci l\'intera rubrica';
+$labels['importgroups'] = 'Importa le assegnazioni di gruppo';
+$labels['importgroupsall'] = 'Tutti (crea i gruppi se necessario)';
+$labels['importgroupsexisting'] = 'Solo per i gruppi esistenti';
$labels['importdesc'] = 'Puoi caricare i contatti da una rubrica esistente.<br/>Attualmente si possono importare contatti in formato <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> o CSV (comma-separated).';
$labels['done'] = 'Fatto';
-
-// settings
$labels['settingsfor'] = 'Impostazioni per';
$labels['about'] = 'Informazioni';
$labels['preferences'] = 'Preferenze';
$labels['userpreferences'] = 'Preferenze utente';
$labels['editpreferences'] = 'Modifica le preferenze per l\'utente';
-
$labels['identities'] = 'Identità';
$labels['manageidentities'] = 'Gestisci le identità per questo account';
$labels['newidentity'] = 'Nuova identità';
-
$labels['newitem'] = 'Nuovo elemento';
$labels['edititem'] = 'Modifica elemento';
-
$labels['preferhtml'] = 'Mostra HTML';
$labels['defaultcharset'] = 'Set di caratteri predefinito';
$labels['htmlmessage'] = 'Messaggio HTML';
@@ -423,7 +381,7 @@ $labels['ignore'] = 'ignora';
$labels['readwhendeleted'] = 'Marca il messaggio come letto prima di eliminarlo';
$labels['flagfordeletion'] = 'Marca il messaggio come eliminato invece di eliminarlo';
$labels['skipdeleted'] = 'Non mostrare i messaggi marcati come eliminati';
-$labels['deletealways'] = 'Quando non è possinile spostare i messaggi nel Cestino eliminali';
+$labels['deletealways'] = 'Quando non è possibile spostare i messaggi nel Cestino, eliminali';
$labels['deletejunk'] = 'Elimina direttamente i messaggi in Spam';
$labels['showremoteimages'] = 'Mostra immagini remote contenute nel messaggio';
$labels['fromknownsenders'] = 'da mittenti conosciuti';
@@ -480,7 +438,9 @@ $labels['standardwindows'] = 'Gestisci i popup come finestre standard';
$labels['forwardmode'] = 'Inoltro messaggi';
$labels['inline'] = 'In linea';
$labels['asattachment'] = 'come allegato';
-
+$labels['replyallmode'] = 'Azione di defualt del bottone [Reply all]';
+$labels['replyalldefault'] = 'rispondi a tutti';
+$labels['replyalllist'] = 'rispondi solo alla mailing list (se disponibile)';
$labels['folder'] = 'Cartella';
$labels['folders'] = 'Cartelle';
$labels['foldername'] = 'Nome cartella';
@@ -501,26 +461,20 @@ $labels['foldertype'] = 'Tipo di cartella';
$labels['personalfolder'] = 'Cartella privata';
$labels['otherfolder'] = 'Cartella di un altro utente';
$labels['sharedfolder'] = 'Cartella pubblica';
-
$labels['sortby'] = 'Ordina per';
$labels['sortasc'] = 'Ordinamento crescente';
$labels['sortdesc'] = 'Ordinamento decrescente';
$labels['undo'] = 'Annulla';
-
$labels['installedplugins'] = 'Plugin Installati';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Versione';
$labels['source'] = 'Sorgente';
$labels['license'] = 'Licenza';
$labels['support'] = 'Ottieni supporto';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inglese';
$labels['westerneuropean'] = 'Europa occidentale';
@@ -539,5 +493,4 @@ $labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Giapponese';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Cinese';
-
?>
diff --git a/program/localization/it_IT/messages.inc b/program/localization/it_IT/messages.inc
index 502ecba25..47db415b4 100644
--- a/program/localization/it_IT/messages.inc
+++ b/program/localization/it_IT/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Si è verificato un errore!';
$messages['loginfailed'] = 'Impossibile accedere. Utente o password non corretti';
$messages['cookiesdisabled'] = 'Il tuo browser non accetta i cookies';
@@ -46,6 +44,8 @@ $messages['messagesent'] = 'Messaggio inviato correttamente';
$messages['savingmessage'] = 'Salvataggio messaggio...';
$messages['messagesaved'] = 'Messaggio salvato in bozze';
$messages['successfullysaved'] = 'Salvato correttamente';
+$messages['savingresponse'] = 'Salvataggio della risposta...';
+$messages['deleteresponseconfirm'] = 'Sei sicuro di voler eliminare questa risposta?';
$messages['addedsuccessfully'] = 'Contatto aggiunto alla rubrica';
$messages['contactexists'] = 'Esiste già un contatto con questo indirizzo e-mail';
$messages['contactnameexists'] = 'Esiste già un contatto con questo nome';
@@ -56,8 +56,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'] = 'C\'è stato un errore nel salvare il messaggio inviato';
-$messages['errorsaving'] = 'Impossibile salvare';
+$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';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'Per favore, immetti almeno un destinatario';
$messages['nosubjectwarning'] = 'L\'oggetto è vuoto. Vuoi inserirlo adesso?';
$messages['nobodywarning'] = 'Inviare il messaggio senza testo?';
$messages['notsentwarning'] = 'Il messaggio non è stato inviato. Vuoi annullare questo messaggio?';
+$messages['restoresavedcomposedata'] = 'E\' stato rilevato un precedente messaggio non inviato.\n\nSoggetto: $subject\nSalvato: $date\n\nVuoi ripristinare il messaggio?';
$messages['noldapserver'] = 'Per favore, scegli un server LDAP in cui ricercare';
$messages['nosearchname'] = 'Per favore, immetti un nome o un indirizzo e-mail';
$messages['notuploadedwarning'] = 'Non tutti gli allegati sono stati ancora caricati. Prego attendere, oppure cancellare il caricamento.';
@@ -144,7 +145,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. Si prega di riprovare di nuovo.';
+$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';
@@ -172,5 +173,4 @@ $messages['parentnotwritable'] = 'Impossibile creare o muovere la cartella: acce
$messages['messagetoobig'] = 'La parte del messaggio è troppo grande per essere processata.';
$messages['attachmentvalidationerror'] = 'ATTENZIONE! Questo allegato è sospetto poiché non rispetta il tipo dichiarato nel messaggio. Se non conosci il mittente, non dovresti aprire l\'allegato nel browser in quanto potrebbe contenere malware.<br/><br/><em>Atteso: $expected; rilevato: $detected</em>';
$messages['noscriptwarning'] = 'Attenzione: questo servizio di webmail richiede Javascript! Per utilizzarlo abilita Javascript nelle impostazioni del tuo browser.';
-
?>
diff --git a/program/localization/ja_JP/labels.inc b/program/localization/ja_JP/labels.inc
index 767aff23a..600a40088 100644
--- a/program/localization/ja_JP/labels.inc
+++ b/program/localization/ja_JP/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = '$productã«ã‚ˆã†ã“ã';
$labels['username'] = 'ユーザーå';
$labels['password'] = 'パスワード';
$labels['server'] = 'サーãƒãƒ¼';
$labels['login'] = 'ログイン';
-
-// taskbar
$labels['logout'] = 'ログアウト';
$labels['mail'] = 'é›»å­ãƒ¡ãƒ¼ãƒ«';
$labels['settings'] = '設定';
$labels['addressbook'] = 'アドレス帳';
-
-// mailbox names
$labels['inbox'] = 'å—ä¿¡ç®±';
$labels['drafts'] = '下書ã';
$labels['sent'] = 'é€ä¿¡æ¸ˆã¿';
$labels['trash'] = 'ã”ã¿ç®±';
$labels['junk'] = '迷惑メール';
$labels['show_real_foldernames'] = '特殊フォルダーã®å®Ÿéš›ã®åå‰ã‚’表示';
-
-// message listing
$labels['subject'] = '件å';
$labels['from'] = '発信者';
$labels['sender'] = 'é€ä¿¡è€…';
@@ -54,13 +44,11 @@ $labels['priority'] = '優先度';
$labels['organization'] = 'ä¼æ¥­å';
$labels['readstatus'] = '閲覧ã®çŠ¶æ…‹';
$labels['listoptions'] = '一覧ã®ã‚ªãƒ—ション...';
-
$labels['mailboxlist'] = 'フォルダー';
$labels['messagesfromto'] = '$count通ã®$from通目ã‹ã‚‰$to通目ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸';
$labels['threadsfromto'] = '$count通ã®$from通目ã‹ã‚‰$to通目ã®ã‚¹ãƒ¬ãƒƒãƒ‰';
$labels['messagenrof'] = '$count通ã®$nr通目ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸';
$labels['fromtoshort'] = '$count通ã®$from通目ã‹ã‚‰$to通目';
-
$labels['copy'] = 'コピー';
$labels['move'] = '移動';
$labels['moveto'] = 'フォルダーã«ç§»å‹•';
@@ -68,13 +56,9 @@ $labels['download'] = 'ダウンロード';
$labels['open'] = 'é–‹ã';
$labels['showattachment'] = '表示';
$labels['showanyway'] = 'ã¨ã«ã‹ã表示';
-
$labels['filename'] = 'ファイルå';
$labels['filesize'] = 'ファイルã®å¤§ãã•';
-
$labels['addtoaddressbook'] = 'アドレス帳ã«è¿½åŠ ';
-
-// weekdays short
$labels['sun'] = 'æ—¥';
$labels['mon'] = '月';
$labels['tue'] = 'ç«';
@@ -82,8 +66,6 @@ $labels['wed'] = 'æ°´';
$labels['thu'] = '木';
$labels['fri'] = '金';
$labels['sat'] = '土';
-
-// weekdays long
$labels['sunday'] = '日曜日';
$labels['monday'] = '月曜日';
$labels['tuesday'] = 'ç«æ›œæ—¥';
@@ -91,8 +73,6 @@ $labels['wednesday'] = '水曜日';
$labels['thursday'] = '木曜日';
$labels['friday'] = '金曜日';
$labels['saturday'] = '土曜日';
-
-// months short
$labels['jan'] = '1月';
$labels['feb'] = '2月';
$labels['mar'] = '3月';
@@ -105,8 +85,6 @@ $labels['sep'] = '9月';
$labels['oct'] = '10月';
$labels['nov'] = '11月';
$labels['dec'] = '12月';
-
-// months long
$labels['longjan'] = '1月';
$labels['longfeb'] = '2月';
$labels['longmar'] = '3月';
@@ -119,10 +97,7 @@ $labels['longsep'] = '9月';
$labels['longoct'] = '10月';
$labels['longnov'] = '11月';
$labels['longdec'] = '12月';
-
$labels['today'] = '今日';
-
-// toolbar buttons
$labels['refresh'] = 'å†èª­è¾¼ã¿';
$labels['checkmail'] = 'æ–°ã—ã届ã„ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’確èª';
$labels['compose'] = 'メッセージã®ä½œæˆ';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'ãã®ä»–ã®æ“作...';
$labels['more'] = '続ã';
$labels['back'] = '戻る';
$labels['options'] = 'オプション';
-
$labels['select'] = 'é¸æŠž';
$labels['all'] = 'ã™ã¹ã¦';
$labels['none'] = 'ãªã—';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'ã™ã¹ã¦å±•é–‹';
$labels['expand-unread'] = '未開å°ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’展開';
$labels['collapse-all'] = 'ã™ã¹ã¦æŠ˜ã‚ŠãŸãŸã‚€';
$labels['threaded'] = 'スレッド化';
-
$labels['autoexpand_threads'] = 'メッセージã®ã‚¹ãƒ¬ãƒƒãƒ‰ã‚’展開';
$labels['do_expand'] = 'ã™ã¹ã¦ã®ã‚¹ãƒ¬ãƒƒãƒ‰';
$labels['expand_only_unread'] = '未読ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã ã‘';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = '列を一覧';
$labels['listsorting'] = '並ã¹æ›¿ãˆã‚‹åˆ—';
$labels['listorder'] = '並ã¹æ›¿ãˆã‚‹é †åº';
$labels['listmode'] = '一覧表示モード';
-
$labels['folderactions'] = 'フォルダーã®æ“作...';
$labels['compact'] = '圧縮';
$labels['empty'] = '空';
$labels['importmessages'] = 'メッセージをインãƒãƒ¼ãƒˆ';
-
$labels['quota'] = 'ディスクã®ä½¿ç”¨çŠ¶æ³';
$labels['unknown'] = 'ä¸æ˜Ž';
$labels['unlimited'] = '無制é™';
-
$labels['quicksearch'] = '高速検索';
$labels['resetsearch'] = '検索を解除';
$labels['searchmod'] = '検索ã®æ¡ä»¶';
$labels['msgtext'] = 'メッセージ全体';
$labels['body'] = '本文';
-$labels['type'] = 'Type';
-
+$labels['type'] = '種類';
+$labels['namex'] = 'åå‰';
$labels['openinextwin'] = 'æ–°ã—ã„ウィンドウã§é–‹ã';
$labels['emlsave'] = 'ダウンロード(.emlå½¢å¼)';
$labels['changeformattext'] = 'テキスト形å¼ã§è¡¨ç¤º';
$labels['changeformathtml'] = 'HTMLå½¢å¼ã§è¡¨ç¤º';
-
-// message compose
$labels['editasnew'] = 'æ–°ã—ã„メッセージã¨ã—ã¦ç·¨é›†';
$labels['send'] = 'é€ä¿¡';
$labels['sendmessage'] = 'メッセージをé€ä¿¡';
@@ -224,26 +192,32 @@ $labels['returnreceipt'] = 'é–‹å°ç¢ºèª';
$labels['dsn'] = 'é…é€çŠ¶æ…‹é€šçŸ¥';
$labels['mailreplyintro'] = '$date ã« $sender ã•ã‚“ã¯æ›¸ãã¾ã—ãŸ:';
$labels['originalmessage'] = 'å…ƒã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸';
-
$labels['editidents'] = '識別情報を編集';
$labels['spellcheck'] = 'スペル';
$labels['checkspelling'] = 'スペルãƒã‚§ãƒƒã‚¯';
$labels['resumeediting'] = '編集をå†é–‹';
$labels['revertto'] = 'å…ƒã«æˆ»ã™';
-
+$labels['restore'] = '回復';
+$labels['restoremessage'] = 'メッセージを回復ã—ã¾ã™ã‹?';
+$labels['responses'] = '回答';
+$labels['insertresponse'] = '回答を挿入';
+$labels['manageresponses'] = '回答を管ç†';
+$labels['savenewresponse'] = 'æ–°ã—ã„回答をä¿å­˜';
+$labels['editresponses'] = '回答を編集';
+$labels['editresponse'] = '回答を編集';
+$labels['responsename'] = 'åå‰';
+$labels['responsetext'] = '回答ã®æ–‡ç« ';
$labels['attach'] = '添付';
$labels['attachments'] = '添付ファイル';
$labels['upload'] = 'アップロード';
$labels['uploadprogress'] = '$percent ($current / $total)';
$labels['close'] = 'é–‰ã˜ã‚‹';
$labels['messageoptions'] = 'メッセージã®ã‚ªãƒ—ション...';
-
$labels['low'] = '低';
$labels['lowest'] = '最低';
$labels['normal'] = '通常';
$labels['high'] = '高';
$labels['highest'] = '最高';
-
$labels['nosubject'] = '(件åãªã—)';
$labels['showimages'] = 'ç”»åƒã‚’表示';
$labels['alwaysshow'] = '$sender ã‹ã‚‰å±Šã„ãŸç”»åƒã¯å¸¸ã«è¡¨ç¤º';
@@ -251,25 +225,19 @@ $labels['isdraft'] = 'ã“ã‚Œã¯ä¸‹æ›¸ãã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã§ã™ã€‚';
$labels['andnmore'] = 'ã•ã‚‰ã«$nr件...';
$labels['togglemoreheaders'] = 'ã•ã‚‰ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ãƒ˜ãƒƒãƒ€ãƒ¼ã‚’表示';
$labels['togglefullheaders'] = 'メッセージヘッダーã®ç”Ÿã®è¡¨ç¤ºã¨åˆ‡ã‚Šæ›¿ãˆ';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'テキスト';
$labels['savesentmessagein'] = 'é€ä¿¡ã—ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ä¿å­˜å…ˆ';
$labels['dontsave'] = 'ä¿å­˜ã—ãªã„';
$labels['maxuploadsize'] = '添付å¯èƒ½ãªãƒ•ã‚¡ã‚¤ãƒ«ã¯æœ€å¤§ã§$sizeã§ã™ã€‚';
-
$labels['addcc'] = '写ã—(Cc)を追加';
$labels['addbcc'] = 'éš ã—ãŸå†™ã—(Bcc)を追加';
$labels['addreplyto'] = '返信先(Reply-To)を追加';
$labels['addfollowupto'] = 'フォロー先(Followup-Toを追加';
-
-// mdn
$labels['mdnrequest'] = 'ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’読んã ã¨ãã«ã€é€ä¿¡è€…ãŒé€šçŸ¥ã‚’å—ã‘ãŸã„ã¨ä¾é ¼ã—ã¦ã„ã¾ã™ã€‚é–‹å°ç¢ºèªã®é€šçŸ¥ã‚’é€ä¿¡ã—ã¾ã™ã‹?';
$labels['receiptread'] = 'é–‹å°ç¢ºèª(表示済ã¿)';
$labels['yourmessage'] = 'ã“ã‚Œã¯ã‚ãªãŸãŒé€ä¿¡ã—ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã«å¯¾ã™ã‚‹é–‹å°ç¢ºèªã§ã™ã€‚';
$labels['receiptnote'] = '注æ„: ã“ã®é–‹å°ç¢ºèªã¯ã€ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒå®›å…ˆã®ã‚³ãƒ³ãƒ”ューターã§è¡¨ç¤ºã•ã‚ŒãŸã“ã¨ã ã‘を知らã›ã‚‹ã‚‚ã®ã§ã™ã€‚å—信者ãŒãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’読んã ã‚Šã€å†…容をç†è§£ã—ãŸã¨ä¿è¨¼ã™ã‚‹ã‚‚ã®ã§ã¯ã‚ã‚Šã¾ã›ã‚“。';
-
-// address boook
$labels['name'] = '表示å';
$labels['firstname'] = 'å';
$labels['surname'] = '姓';
@@ -304,7 +272,6 @@ $labels['search'] = '検索';
$labels['advsearch'] = '高度ãªæ¤œç´¢';
$labels['advanced'] = '高度';
$labels['other'] = 'ãã®ä»–';
-
$labels['typehome'] = '自宅';
$labels['typework'] = 'è·å ´';
$labels['typeother'] = 'ãã®ä»–';
@@ -319,14 +286,12 @@ $labels['typeassistant'] = 'アシスタント';
$labels['typehomepage'] = 'ホームページ';
$labels['typeblog'] = 'ブログ';
$labels['typeprofile'] = 'プロフィール';
-
$labels['addfield'] = '項目を追加...';
$labels['addcontact'] = 'æ–°ã—ã„連絡先を追加';
$labels['editcontact'] = '連絡先を編集';
$labels['contacts'] = '連絡先';
$labels['contactproperties'] = '連絡先ã®å±žæ€§';
$labels['personalinfo'] = '個人情報';
-
$labels['edit'] = '編集';
$labels['cancel'] = 'å–り消ã—';
$labels['save'] = 'ä¿å­˜';
@@ -335,7 +300,6 @@ $labels['rename'] = 'åå‰ã‚’変更';
$labels['addphoto'] = '追加';
$labels['replacephoto'] = 'ç½®ãæ›ãˆ';
$labels['uploadphoto'] = '写真をアップロード';
-
$labels['newcontact'] = 'æ–°ã—ã„連絡先カードを作æˆ';
$labels['deletecontact'] = 'é¸æŠžã—ãŸé€£çµ¡å…ˆã‚’削除';
$labels['composeto'] = 'ã“ã®é€£çµ¡å…ˆå®›ã«ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’作æˆ';
@@ -349,42 +313,36 @@ $labels['newcontactgroup'] = '連絡先グループを新ã—ã作æˆ';
$labels['grouprename'] = 'グループåを変更';
$labels['groupdelete'] = 'グループを削除';
$labels['groupremoveselected'] = 'é¸æŠžã—ãŸé€£çµ¡å…ˆã‚’グループã‹ã‚‰å‰Šé™¤';
-
$labels['previouspage'] = 'å‰ã®ãƒšãƒ¼ã‚¸ã‚’表示';
$labels['firstpage'] = '最åˆã®ãƒšãƒ¼ã‚¸ã‚’表示';
$labels['nextpage'] = '次ã®ãƒšãƒ¼ã‚¸ã‚’表示';
$labels['lastpage'] = '最後ã®ãƒšãƒ¼ã‚¸ã‚’表示';
-
$labels['group'] = 'グループ';
$labels['groups'] = 'グループ';
$labels['listgroup'] = 'グループã®ãƒ¡ãƒ³ãƒãƒ¼ã‚’一覧';
$labels['personaladrbook'] = '個人ã®ä½æ‰€';
-
$labels['searchsave'] = '検索情報をä¿å­˜';
$labels['searchdelete'] = '検索情報を削除';
-
$labels['import'] = 'インãƒãƒ¼ãƒˆ';
$labels['importcontacts'] = '連絡先をインãƒãƒ¼ãƒˆ';
$labels['importfromfile'] = 'ファイルã‹ã‚‰ã‚¤ãƒ³ãƒãƒ¼ãƒˆ';
-$labels['importtarget'] = 'アドレス帳ã«æ–°ã—ã„連絡先ã®è¿½åŠ :';
+$labels['importtarget'] = '次ã«é€£çµ¡å…ˆã‚’追加';
$labels['importreplace'] = 'アドレス帳全体ã¨ç½®ãæ›ãˆ';
+$labels['importgroups'] = 'グループã®å‰²ã‚Šå½“ã¦ã‚’インãƒãƒ¼ãƒˆ';
+$labels['importgroupsall'] = 'ã™ã¹ã¦ (å¿…è¦ãªã‚‰ã‚°ãƒ«ãƒ¼ãƒ—を作æˆ)';
+$labels['importgroupsexisting'] = '存在ã™ã‚‹ã‚°ãƒ«ãƒ¼ãƒ—ã ã‘';
$labels['importdesc'] = '連絡先を既存ã®ã‚¢ãƒ‰ãƒ¬ã‚¹å¸³ã‹ã‚‰ã‚¢ãƒƒãƒ—ロードã§ãã¾ã™ã€‚<br />ç¾åœ¨ã€<a href="http://ja.wikipedia.org/wiki/VCard">vCard</a>ã¾ãŸã¯CSV(コンマ区切り)ã®ãƒ‡ãƒ¼ã‚¿å½¢å¼ã‹ã‚‰ã‚¢ãƒ‰ãƒ¬ã‚¹ã®ã‚¤ãƒ³ãƒãƒ¼ãƒˆã‚’サãƒãƒ¼ãƒˆã—ã¦ã„ã¾ã™ã€‚';
$labels['done'] = '完了';
-
-// settings
$labels['settingsfor'] = '次ã®è¨­å®š:';
$labels['about'] = 'ã“ã®ãƒ—ログラムã«ã¤ã„ã¦';
$labels['preferences'] = '設定';
$labels['userpreferences'] = 'ユーザー設定';
$labels['editpreferences'] = 'ユーザー設定を変更';
-
$labels['identities'] = '識別情報';
$labels['manageidentities'] = 'ã“ã®ã‚¢ã‚«ã‚¦ãƒ³ãƒˆã®è­˜åˆ¥æƒ…報を管ç†';
$labels['newidentity'] = 'æ–°ã—ã„識別情報';
-
$labels['newitem'] = 'æ–°ã—ã„é …ç›®';
$labels['edititem'] = 'é …ç›®ã®ç·¨é›†';
-
$labels['preferhtml'] = 'HTMLを表示';
$labels['defaultcharset'] = 'åˆæœŸè¨­å®šã®æ–‡å­—セット';
$labels['htmlmessage'] = 'HTMLメッセージ';
@@ -480,7 +438,9 @@ $labels['standardwindows'] = 'ãƒãƒƒãƒ—アップを通常ã®ã‚¦ã‚£ãƒ³ãƒ‰ã‚¦ã¨ã
$labels['forwardmode'] = 'メッセージã®è»¢é€å½¢å¼';
$labels['inline'] = 'インライン';
$labels['asattachment'] = '添付ファイル';
-
+$labels['replyallmode'] = '「全員ã«è¿”ä¿¡ã€ãƒœã‚¿ãƒ³ã®æ—¢å®šã®å‹•ä½œ';
+$labels['replyalldefault'] = '全員ã«è¿”ä¿¡';
+$labels['replyalllist'] = 'メーリングリスト(ã¨ã‚ã‹ã‚Œã°)ã ã‘ã«è¿”ä¿¡';
$labels['folder'] = 'フォルダー';
$labels['folders'] = 'フォルダー';
$labels['foldername'] = 'フォルダーå';
@@ -501,26 +461,20 @@ $labels['foldertype'] = 'フォルダーã®ç¨®é¡ž';
$labels['personalfolder'] = '個人フォルダー';
$labels['otherfolder'] = 'ä»–ã®ãƒ¦ãƒ¼ã‚¶ãƒ¼ã®ãƒ•ã‚©ãƒ«ãƒ€ãƒ¼';
$labels['sharedfolder'] = '公開フォルダー';
-
$labels['sortby'] = '並ã¹æ›¿ãˆ';
$labels['sortasc'] = '昇順ã§ä¸¦ã¹æ›¿ãˆ';
$labels['sortdesc'] = 'é™é †ã§ä¸¦ã¹æ›¿ãˆ';
$labels['undo'] = 'å–り消ã—';
-
$labels['installedplugins'] = 'インストールã—ã¦ã„るプラグイン';
$labels['plugin'] = 'プラグイン';
$labels['version'] = 'ãƒãƒ¼ã‚¸ãƒ§ãƒ³';
$labels['source'] = 'ソース';
$labels['license'] = 'ライセンス';
$labels['support'] = 'サãƒãƒ¼ãƒˆã‚’å¾—ã‚‹';
-
-// units
$labels['B'] = 'ãƒã‚¤ãƒˆ';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = '英語';
$labels['westerneuropean'] = '西ヨーロッパ言語';
@@ -539,5 +493,4 @@ $labels['vietnamese'] = 'ベトナム語';
$labels['japanese'] = '日本語';
$labels['korean'] = '韓国語';
$labels['chinese'] = '中国語';
-
?>
diff --git a/program/localization/ja_JP/messages.inc b/program/localization/ja_JP/messages.inc
index 820b52d96..8b4296ba4 100644
--- a/program/localization/ja_JP/messages.inc
+++ b/program/localization/ja_JP/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'エラーãŒç™ºç”Ÿã—ã¾ã—ãŸ!';
$messages['loginfailed'] = 'ログインã§ãã¾ã›ã‚“ã§ã—ãŸã€‚';
$messages['cookiesdisabled'] = 'ブラウザーãŒCookieã‚’å—ã‘付ã‘ã¾ã›ã‚“。';
@@ -46,6 +44,8 @@ $messages['messagesent'] = 'メッセージをé€ä¿¡ã—ã¾ã—ãŸã€‚';
$messages['savingmessage'] = 'メッセージをä¿å­˜ä¸­...';
$messages['messagesaved'] = 'メッセージを下書ãã«ä¿å­˜ã—ã¾ã—ãŸã€‚';
$messages['successfullysaved'] = 'ä¿å­˜ã—ã¾ã—ãŸã€‚';
+$messages['savingresponse'] = '回答ã®æ–‡ç« ã‚’ä¿å­˜ä¸­...';
+$messages['deleteresponseconfirm'] = 'ã“ã®å›žç­”ã®æ–‡ç« ã‚’本当ã«å‰Šé™¤ã—ã¾ã™ã‹?';
$messages['addedsuccessfully'] = '連絡先をアドレス帳ã«è¿½åŠ ã—ã¾ã—ãŸã€‚';
$messages['contactexists'] = 'åŒã˜ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã®é€£çµ¡å…ˆãŒæ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚';
$messages['contactnameexists'] = 'åŒã˜åå‰ã®é€£çµ¡å…ˆãŒæ—¢ã«å­˜åœ¨ã—ã¾ã™ã€‚';
@@ -56,7 +56,7 @@ $messages['contactnotfound'] = '連絡先ãŒè¦‹ã¤ã‹ã‚Šã¾ã›ã‚“。';
$messages['contactsearchonly'] = '連絡先を探ã™ãŸã‚ã®æ¤œç´¢èªžã‚’入力ã—ã¦ãã ã•ã„';
$messages['sendingfailed'] = 'メッセージをé€ä¿¡ã§ãã¾ã›ã‚“ã§ã—ãŸã€‚';
$messages['senttooquickly'] = 'ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’é€ä¿¡ã™ã‚‹ã¾ã§ã€$sec秒ãŠå¾…ã¡ãã ã•ã„。';
-$messages['errorsavingsent'] = 'é€ä¿¡ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ä¿å­˜ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚';
+$messages['errorsavingsent'] = 'é€ä¿¡ã—ãŸãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®ä¿å­˜ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚';
$messages['errorsaving'] = 'ä¿å­˜ä¸­ã«ã‚¨ãƒ©ãƒ¼ãŒç™ºç”Ÿã—ã¾ã—ãŸã€‚';
$messages['errormoving'] = 'メッセージを移動ã§ãã¾ã›ã‚“。';
$messages['errorcopying'] = 'メッセージをコピーã§ãã¾ã›ã‚“。';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'å°‘ãªãã¨ã‚‚1ã¤å®›å…ˆã‚’入力ã—ã¦ãã
$messages['nosubjectwarning'] = '件å(Subject)ã®æ¬„ãŒç©ºã§ã™ã€‚今ã€å…¥åŠ›ã—ã¾ã™ã‹?';
$messages['nobodywarning'] = '本文ã®ç„¡ã„メッセージをé€ä¿¡ã—ã¾ã™ã‹?';
$messages['notsentwarning'] = 'メッセージをé€ä¿¡ã—ã¾ã›ã‚“ã§ã—ãŸã€‚ã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’破棄ã—ã¾ã™ã‹ã€‚';
+$messages['restoresavedcomposedata'] = '以å‰ã«ä½œæˆã—ã¦æœªé€ä¿¡ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ãŒã‚ã‚Šã¾ã™ã€‚\n\n件å: $subject\nä¿å­˜æ—¥: $date\n\nã“ã®ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã‚’回復ã—ã¾ã™ã‹?';
$messages['noldapserver'] = '検索ã™ã‚‹LDAPサーãƒãƒ¼ã‚’é¸æŠžã—ã¦ãã ã•ã„。';
$messages['nosearchname'] = '連絡先ã®åå‰ã‹é›»å­ãƒ¡ãƒ¼ãƒ«ã‚¢ãƒ‰ãƒ¬ã‚¹ã‚’入力ã—ã¦ãã ã•ã„。';
$messages['notuploadedwarning'] = 'ã™ã¹ã¦ã®æ·»ä»˜ãƒ•ã‚¡ã‚¤ãƒ«ã®ã‚¢ãƒƒãƒ—ロードを完了ã—ã¦ã„ã¾ã›ã‚“。今ã—ã°ã‚‰ãå¾…ã¤ã‹ã€å–り消ã—ã—ã¦ãã ã•ã„。';
@@ -172,5 +173,4 @@ $messages['parentnotwritable'] = 'é¸æŠžã—ãŸè¦ªãƒ•ã‚©ãƒ«ãƒ€ãƒ¼ã«ä½œæˆã¾ãŸã
$messages['messagetoobig'] = 'ãã®å‡¦ç†ã‚’ã™ã‚‹ã«ã¯ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸éƒ¨åˆ†ãŒå¤§ãã™ãŽã¾ã™ã€‚';
$messages['attachmentvalidationerror'] = '警告! ã“ã®æ·»ä»˜ãƒ•ã‚¡ã‚¤ãƒ«ã¯ãƒ¡ãƒƒã‚»ãƒ¼ã‚¸ã®å®£è¨€ã¨ä¸€è‡´ã—ãªã„種類ã¨ã„ã†ç†ç”±ã®ãŸã‚ç–‘ã‚ã—ã„ã§ã™ã€‚é€ä¿¡è€…ã‚’ä¿¡é ¼ã§ããªã„ãªã‚‰ã€æ‚ªæ„ã®ã‚る内容をå«ã‚“ã§ã„ã‚‹ã‹ã‚‚ã—ã‚Œãªã„ã®ã§ãƒ–ラウザーã§é–‹ã„ã¦ã¯ãªã‚Šã¾ã›ã‚“。<br/><br/><em>予測ã—ãŸç¨®é¡ž: $expected; 発見ã—ãŸç¨®é¡ž: $found</em>';
$messages['noscriptwarning'] = '警告: ã“ã®ã‚¦ã‚§ãƒ–メールサービスã«ã¯JavascriptãŒå¿…è¦ã§ã™! 使用ã™ã‚‹ã«ã¯Javascriptをブラウザーã®è¨­å®šã§æœ‰åŠ¹ã«ã—ã¦ãã ã•ã„。';
-
?>
diff --git a/program/localization/ka_GE/labels.inc b/program/localization/ka_GE/labels.inc
index b0126c44e..7a14b6216 100755..100644
--- a/program/localization/ka_GE/labels.inc
+++ b/program/localization/ka_GE/labels.inc
@@ -15,66 +15,39 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'მáƒáƒ’ესáƒáƒšáƒ›áƒ”ბáƒáƒ— $product';
$labels['username'] = 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელი';
$labels['password'] = 'პáƒáƒ áƒáƒšáƒ˜';
$labels['server'] = 'სერვერი';
$labels['login'] = 'შესვლáƒ';
-
-// taskbar
$labels['logout'] = 'გáƒáƒ›áƒáƒ¡áƒ•áƒšáƒ';
$labels['mail'] = 'ელფáƒáƒ¡áƒ¢áƒ';
$labels['settings'] = 'პáƒáƒ áƒáƒ›áƒ”ტრები';
$labels['addressbook'] = 'მისáƒáƒ›áƒáƒ áƒ—ები';
-
-// mailbox names
$labels['inbox'] = 'მიღებული';
$labels['drafts'] = 'დრáƒáƒ”ბითი';
$labels['sent'] = 'გáƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒšáƒ˜';
$labels['trash'] = 'წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜';
$labels['junk'] = 'სპáƒáƒ›áƒ˜';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'სáƒáƒ—áƒáƒ£áƒ áƒ˜';
$labels['from'] = 'გáƒáƒ›áƒ’ზáƒáƒ•áƒœáƒ˜';
-$labels['sender'] = 'Sender';
$labels['to'] = 'ვის';
$labels['cc'] = 'áƒáƒ¡áƒšáƒ˜';
$labels['bcc'] = 'ფáƒáƒ áƒ£áƒšáƒ˜';
$labels['replyto'] = 'პáƒáƒ¡áƒ£áƒ®áƒ˜';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'თáƒáƒ áƒ˜áƒ¦áƒ˜';
$labels['size'] = 'ზáƒáƒ›áƒ';
$labels['priority'] = 'პრიáƒáƒ áƒ˜áƒ¢áƒ”ტი';
$labels['organization'] = 'áƒáƒ áƒ’áƒáƒœáƒ˜áƒ–áƒáƒªáƒ˜áƒ';
-$labels['readstatus'] = 'Read status';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეები';
-$labels['messagesfromto'] = 'Messages $from to $to of $count';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = 'შეტყáƒáƒ‘ინებრ$nr დáƒáƒœ $count';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'áƒáƒ¡áƒšáƒ˜';
$labels['move'] = 'გáƒáƒ“áƒáƒ¢áƒáƒœáƒ';
$labels['moveto'] = 'გáƒáƒ“áƒáƒ¢áƒáƒœáƒ...';
$labels['download'] = 'გáƒáƒ“მáƒáƒ¬áƒ”რáƒ';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'ფáƒáƒ˜áƒšáƒ˜áƒ¡ სáƒáƒ®áƒ”ლი';
$labels['filesize'] = 'ფáƒáƒ˜áƒšáƒ˜áƒ¡ ზáƒáƒ›áƒ';
-
$labels['addtoaddressbook'] = 'მისáƒáƒ›áƒáƒ áƒ—ებში დáƒáƒ›áƒáƒ¢áƒ”ბáƒ';
-
-// weekdays short
$labels['sun'] = 'კვი';
$labels['mon'] = 'áƒáƒ áƒ¨';
$labels['tue'] = 'სáƒáƒ›';
@@ -82,8 +55,6 @@ $labels['wed'] = 'áƒáƒ—ხ';
$labels['thu'] = 'ხუთ';
$labels['fri'] = 'პáƒáƒ ';
$labels['sat'] = 'შáƒáƒ‘';
-
-// weekdays long
$labels['sunday'] = 'კვირáƒ';
$labels['monday'] = 'áƒáƒ áƒ¨áƒáƒ‘áƒáƒ—ი';
$labels['tuesday'] = 'სáƒáƒ›áƒ¨áƒáƒ‘áƒáƒ—ი';
@@ -91,8 +62,6 @@ $labels['wednesday'] = 'áƒáƒ—ხშáƒáƒ‘áƒáƒ—ი';
$labels['thursday'] = 'ხუთშáƒáƒ‘áƒáƒ—ი';
$labels['friday'] = 'პáƒáƒ áƒáƒ¡áƒ™áƒ”ვი';
$labels['saturday'] = 'შáƒáƒ‘áƒáƒ—ი';
-
-// months short
$labels['jan'] = 'იáƒáƒœ';
$labels['feb'] = 'თებ';
$labels['mar'] = 'მáƒáƒ ';
@@ -105,8 +74,6 @@ $labels['sep'] = 'სექ';
$labels['oct'] = 'áƒáƒ¥áƒ¢';
$labels['nov'] = 'ნáƒáƒ”';
$labels['dec'] = 'დეკ';
-
-// months long
$labels['longjan'] = 'იáƒáƒœáƒ•áƒáƒ áƒ˜';
$labels['longfeb'] = 'თებერვáƒáƒšáƒ˜';
$labels['longmar'] = 'მáƒáƒ áƒ¢áƒ˜';
@@ -119,22 +86,12 @@ $labels['longsep'] = 'სექტემბერი';
$labels['longoct'] = 'áƒáƒ¥áƒ¢áƒáƒ›áƒ‘ერი';
$labels['longnov'] = 'ნáƒáƒ”მბერი';
$labels['longdec'] = 'დეკემბერი';
-
$labels['today'] = 'დღეს';
-
-// toolbar buttons
-$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'შემáƒáƒ¬áƒ›áƒ”ბრáƒáƒ®áƒáƒš შეტყáƒáƒ‘ინებáƒáƒ–ე';
$labels['compose'] = 'შეტყáƒáƒ‘ინების დáƒáƒ¬áƒ”რáƒ';
$labels['writenewmessage'] = 'áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებáƒ';
-$labels['reply'] = 'Reply';
$labels['replytomessage'] = 'პáƒáƒ¡áƒ£áƒ®áƒ˜';
$labels['replytoallmessage'] = 'პáƒáƒ¡áƒ£áƒ®áƒ˜ ყველáƒáƒ¡';
-$labels['replyall'] = 'Reply all';
-$labels['replylist'] = 'Reply list';
-$labels['forward'] = 'Forward';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'გáƒáƒ“áƒáƒ’ზáƒáƒ•áƒœáƒ';
$labels['deletemessage'] = 'წáƒáƒ¨áƒšáƒ';
$labels['movemessagetotrash'] = 'შეტყáƒáƒ‘ინების წáƒáƒ¨áƒšáƒ˜áƒšáƒ”ბში გáƒáƒ“áƒáƒ¢áƒáƒœáƒ';
@@ -145,17 +102,12 @@ $labels['nextmessage'] = 'შემდეგი შეტყáƒáƒ‘ინე
$labels['lastmessage'] = 'ბáƒáƒšáƒ შეტყáƒáƒ‘ინების ნáƒáƒ®áƒ•áƒ';
$labels['backtolist'] = 'უკáƒáƒœ ჩáƒáƒ›áƒáƒœáƒáƒ—ვáƒáƒšáƒ¨áƒ˜';
$labels['viewsource'] = 'შიგთáƒáƒ•áƒ¡áƒ˜';
-$labels['mark'] = 'Mark';
$labels['markmessages'] = 'მáƒáƒœáƒ˜áƒ¨áƒœáƒ”თ შეტყáƒáƒ‘ინებები';
$labels['markread'] = 'რáƒáƒ’áƒáƒ áƒª წáƒáƒ™áƒ˜áƒ—ხული';
$labels['markunread'] = 'რáƒáƒ’áƒáƒ áƒª წáƒáƒ£áƒ™áƒ˜áƒ—ხáƒáƒ•áƒ˜';
$labels['markflagged'] = 'რáƒáƒ’áƒáƒ áƒª მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜';
$labels['markunflagged'] = 'რáƒáƒ’áƒáƒ áƒª მáƒáƒ£áƒœáƒ˜áƒ¨áƒœáƒáƒ•áƒ˜';
$labels['moreactions'] = 'მეტი მáƒáƒ¥áƒ›áƒ”დებáƒ...';
-$labels['more'] = 'More';
-$labels['back'] = 'Back';
-$labels['options'] = 'Options';
-
$labels['select'] = 'მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ';
$labels['all'] = 'ყველáƒ';
$labels['none'] = 'áƒáƒ áƒªáƒ”რთი';
@@ -163,124 +115,70 @@ $labels['currpage'] = 'მიმდინáƒáƒ áƒ” გვერდი';
$labels['unread'] = 'წáƒáƒ£áƒ™áƒ˜áƒ—ხáƒáƒ•áƒ˜';
$labels['flagged'] = 'მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜';
$labels['unanswered'] = 'უპáƒáƒ¡áƒ£áƒ®áƒ';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜';
-$labels['undeleted'] = 'Not deleted';
$labels['invert'] = 'შებრუნებული';
$labels['filter'] = 'ფილტრი';
$labels['list'] = 'სიáƒ';
-$labels['threads'] = 'Threads';
$labels['expand-all'] = 'ყველáƒáƒ¡ გáƒáƒ¨áƒšáƒ';
$labels['expand-unread'] = 'წáƒáƒ£áƒ™áƒ˜áƒ—ხáƒáƒ•áƒ˜áƒ¡ გáƒáƒ¨áƒšáƒ';
$labels['collapse-all'] = 'ყველáƒáƒ¡ დáƒáƒ™áƒ”ცვáƒ';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
$labels['fromto'] = 'ვისგáƒáƒœ/ვის';
$labels['flag'] = 'დრáƒáƒ¨áƒ';
$labels['attachment'] = 'მიმáƒáƒ’რებული ფáƒáƒ˜áƒšáƒ˜';
$labels['nonesort'] = 'áƒáƒ áƒªáƒ”რთი';
$labels['sentdate'] = 'გáƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒ¡ თáƒáƒ áƒ˜áƒ¦áƒ˜';
-$labels['arrival'] = 'Arrival date';
$labels['asc'] = 'ზრდáƒáƒ“áƒáƒ‘ით';
$labels['desc'] = 'კლებáƒáƒ“áƒáƒ‘ით';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
$labels['listorder'] = 'დáƒáƒšáƒáƒ’ებáƒ';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'შეკუმშვáƒ';
$labels['empty'] = 'გáƒáƒªáƒáƒ áƒ˜áƒ”ლებáƒ';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'შეზღუდვáƒ';
$labels['unknown'] = 'უცნáƒáƒ‘ი';
$labels['unlimited'] = 'შეუზღუდáƒáƒ•áƒ˜';
-
$labels['quicksearch'] = 'სწრáƒáƒ¤áƒ˜ ძიებáƒ';
$labels['resetsearch'] = 'ძიების გáƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•áƒ”ბáƒ';
$labels['searchmod'] = 'ძებნის ვáƒáƒ áƒ˜áƒáƒœáƒ¢áƒ”ბი';
$labels['msgtext'] = 'ყველრშეტყáƒáƒ‘ინებáƒ';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'გáƒáƒ®áƒ¡áƒœáƒ áƒáƒ®áƒáƒš ფáƒáƒœáƒ¯áƒáƒ áƒáƒ¨áƒ˜';
$labels['emlsave'] = 'გáƒáƒ“მáƒáƒ¬áƒ”რრ(.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბრრáƒáƒ’áƒáƒ áƒª áƒáƒ®áƒšáƒ˜áƒ¡';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'შეტყáƒáƒ‘ინების გáƒáƒ’ზáƒáƒ•áƒœáƒ';
$labels['savemessage'] = 'დრáƒáƒ”ბით შენáƒáƒ®áƒ•áƒ';
$labels['addattachment'] = 'ფáƒáƒ˜áƒšáƒ˜áƒ¡ áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ';
$labels['charset'] = 'კáƒáƒ“ირებáƒ';
$labels['editortype'] = 'რედáƒáƒ¥áƒ¢áƒáƒ áƒ˜';
$labels['returnreceipt'] = 'პáƒáƒ¡áƒ£áƒ®áƒ˜áƒ¡ მáƒáƒ—ხáƒáƒ•áƒœáƒ';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'áƒáƒ áƒ—áƒáƒ’რáƒáƒ¤áƒ˜áƒ£áƒšáƒ˜ შემáƒáƒ¬áƒ›áƒ”ბáƒ';
$labels['resumeediting'] = 'რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბის გáƒáƒ’რძელებáƒ';
$labels['revertto'] = 'გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ';
-
-$labels['attach'] = 'Attach';
$labels['attachments'] = 'გზáƒáƒ•áƒœáƒ˜áƒšáƒ”ბი';
$labels['upload'] = 'áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'დáƒáƒ®áƒ£áƒ áƒ•áƒ';
-$labels['messageoptions'] = 'Message options...';
-
$labels['low'] = 'დáƒáƒ‘áƒáƒšáƒ˜';
$labels['lowest'] = 'უდáƒáƒ‘ლესი';
$labels['normal'] = 'სáƒáƒ¨áƒ£áƒáƒšáƒ';
$labels['high'] = 'მáƒáƒ¦áƒáƒšáƒ˜';
$labels['highest'] = 'უმáƒáƒ¦áƒšáƒ”სი';
-
$labels['nosubject'] = '(უსáƒáƒ—áƒáƒ£áƒ áƒ)';
$labels['showimages'] = 'გáƒáƒ›áƒáƒ¡áƒáƒ®áƒ£áƒšáƒ”ბის ჩვენებáƒ';
$labels['alwaysshow'] = 'ყáƒáƒ•áƒ”ლთვის გáƒáƒ›áƒáƒáƒ©áƒ˜áƒœáƒ” სურáƒáƒ—ები $sender –გáƒáƒœ';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'ტექსტური';
$labels['savesentmessagein'] = 'შეინáƒáƒ®áƒ” შეტყáƒáƒ‘ინებáƒ';
$labels['dontsave'] = 'áƒáƒ  შეინáƒáƒ®áƒ';
$labels['maxuploadsize'] = 'მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒáƒšáƒ£áƒ áƒ˜ დáƒáƒ¨áƒ•áƒ”ბული ფáƒáƒ˜áƒšáƒ˜áƒ¡ ზáƒáƒ›áƒ $size';
-
$labels['addcc'] = 'დáƒáƒáƒ›áƒáƒ¢áƒ” კáƒáƒžáƒ˜áƒ';
$labels['addbcc'] = 'დáƒáƒáƒ›áƒáƒ¢áƒ” ფáƒáƒ áƒ£áƒšáƒ˜ კáƒáƒžáƒ˜áƒ';
$labels['addreplyto'] = 'დáƒáƒáƒ›áƒáƒ¢áƒ” გáƒáƒ›áƒáƒ›áƒ’ზáƒáƒ•áƒœáƒ˜';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'გáƒáƒ›áƒáƒ›áƒ’ზáƒáƒ•áƒœáƒ¡ სურს შეიტყáƒáƒ¡ წერილის მიღებáƒ. გსურთ შეáƒáƒ¢áƒ§áƒáƒ‘ინáƒáƒ— გáƒáƒ›áƒáƒ›áƒ’ზáƒáƒ•áƒœáƒ¡?';
$labels['receiptread'] = 'გზáƒáƒ•áƒœáƒ˜áƒšáƒ˜áƒ¡ დáƒáƒ‘რუნებáƒ';
$labels['yourmessage'] = 'ეს áƒáƒ áƒ˜áƒ¡ მიღების დáƒáƒ¡áƒ¢áƒ£áƒ áƒ˜ თქვენს შეტყáƒáƒ‘ინებáƒáƒ–ე';
$labels['receiptnote'] = 'გáƒáƒœáƒ›áƒáƒ áƒ¢áƒ”ბáƒ: ეს ნიშნáƒáƒ•áƒ¡ რáƒáƒ› áƒáƒ“რესáƒáƒ¢áƒ›áƒ მიიღრშეტყáƒáƒ‘ინებáƒ. მáƒáƒ’რáƒáƒ›, áƒáƒ  ნიშნáƒáƒ•áƒ¡ რáƒáƒ› წáƒáƒ˜áƒ™áƒ˜áƒ—ხრáƒáƒœ გáƒáƒ˜áƒ’რტექსტი';
-
-// address boook
$labels['name'] = 'სრული სáƒáƒ®áƒ”ლი';
$labels['firstname'] = 'სáƒáƒ®áƒ”ლი';
$labels['surname'] = 'გვáƒáƒ áƒ˜';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
$labels['department'] = 'დეპáƒáƒ áƒ¢áƒáƒ›áƒ”ნტი';
$labels['gender'] = 'სქესი';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'ელ–ფáƒáƒ¡áƒ¢áƒ';
$labels['phone'] = 'ტელეფáƒáƒœáƒ˜';
$labels['address'] = 'მისáƒáƒ›áƒáƒ áƒ—ი';
@@ -290,21 +188,14 @@ $labels['zipcode'] = 'ZIP კáƒáƒ“ი';
$labels['region'] = 'შტáƒáƒ¢áƒ˜/პრáƒáƒ•áƒ˜áƒœáƒªáƒ˜áƒ';
$labels['country'] = 'ქვეყáƒáƒœáƒ';
$labels['birthday'] = 'დáƒáƒ‘áƒáƒ“ების დღე';
-$labels['anniversary'] = 'Anniversary';
$labels['website'] = 'ვებგვერდი';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
$labels['male'] = 'მáƒáƒ›áƒ áƒáƒ‘ითი';
$labels['female'] = 'მდედრáƒáƒ‘ით';
$labels['manager'] = 'მენეჯერი';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
$labels['allfields'] = 'ყველრველი';
$labels['search'] = 'ძებნáƒ';
$labels['advsearch'] = 'გáƒáƒ¤áƒáƒ áƒ—áƒáƒ”ბული ძებნáƒ';
-$labels['advanced'] = 'Advanced';
$labels['other'] = 'სხვáƒ';
-
$labels['typehome'] = 'სáƒáƒ®áƒšáƒ˜';
$labels['typework'] = 'სáƒáƒ›áƒ¡áƒáƒ®áƒ£áƒ áƒ˜';
$labels['typeother'] = 'სხვáƒ';
@@ -315,18 +206,13 @@ $labels['typeworkfax'] = 'სáƒáƒ›áƒ¡áƒáƒ®áƒ£áƒ áƒ˜áƒ¡ ფáƒáƒ¥áƒ¡áƒ˜';
$labels['typecar'] = 'მáƒáƒœáƒ¥áƒáƒœáƒ';
$labels['typepager'] = 'პეიჯერი';
$labels['typevideo'] = 'ვიდეáƒ';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
$labels['typeblog'] = 'ბლáƒáƒ’ი';
$labels['typeprofile'] = 'პრáƒáƒ¤áƒ˜áƒšáƒ˜';
-
$labels['addfield'] = 'ველის დáƒáƒ›áƒáƒ¢áƒ”ბáƒ...';
$labels['addcontact'] = 'კáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ”ბში დáƒáƒ›áƒáƒ¢áƒ”ბáƒ';
$labels['editcontact'] = 'კáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ˜áƒ¡ რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ';
$labels['contacts'] = 'კáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ”ბი';
-$labels['contactproperties'] = 'Contact properties';
$labels['personalinfo'] = 'პირáƒáƒ“ი ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ';
-
$labels['edit'] = 'რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ';
$labels['cancel'] = 'გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ';
$labels['save'] = 'შენáƒáƒ®áƒ•áƒ';
@@ -334,62 +220,42 @@ $labels['delete'] = 'წáƒáƒ¨áƒšáƒ';
$labels['rename'] = 'გáƒáƒ“áƒáƒ áƒ¥áƒ›áƒ”ვáƒ';
$labels['addphoto'] = 'დáƒáƒ›áƒáƒ¢áƒ”ბáƒ';
$labels['replacephoto'] = 'გáƒáƒ›áƒáƒªáƒ•áƒšáƒ';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'კáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ˜áƒ¡ შექმნáƒ';
$labels['deletecontact'] = 'მáƒáƒœáƒ˜áƒ¨áƒœáƒ”ლი კáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ˜áƒ¡ წáƒáƒ¨áƒšáƒ';
$labels['composeto'] = 'ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ გáƒáƒ’ზáƒáƒ•áƒœáƒ შერჩეულ áƒáƒ“რესáƒáƒ¢áƒ”ბთáƒáƒœ';
$labels['contactsfromto'] = 'კáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ”ბი $from დáƒáƒœ $to ში $count';
$labels['print'] = 'დáƒáƒ‘ეჭვდáƒ';
$labels['export'] = 'ექსპáƒáƒ áƒ¢áƒ˜';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'კáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ”ბის ექსპáƒáƒ áƒ¢áƒ˜ vCard ფáƒáƒ áƒ›áƒáƒ¢áƒ¨áƒ˜';
$labels['newcontactgroup'] = 'áƒáƒ®áƒáƒšáƒ˜ სáƒáƒ™áƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ ჯგუფის შექმნáƒ';
$labels['grouprename'] = 'ჯგუფის სáƒáƒ®áƒ”ლის შეცვლáƒ';
$labels['groupdelete'] = 'ჯგუფის წáƒáƒ¨áƒšáƒ';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'წინáƒáƒ¡ ჩვენებáƒ';
$labels['firstpage'] = 'პირველის ჩვენებáƒ';
$labels['nextpage'] = 'შემდეგის ჩვენებáƒ';
$labels['lastpage'] = 'ბáƒáƒšáƒáƒ¡ ჩვენებáƒ';
-
$labels['group'] = 'ჯგუფი';
$labels['groups'] = 'ჯგუფები';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'პერსáƒáƒœáƒáƒšáƒ£áƒ áƒ˜ მისáƒáƒ›áƒáƒ áƒ—ები';
-
$labels['searchsave'] = 'ძებნის შენáƒáƒ®áƒ•áƒ';
$labels['searchdelete'] = 'ძებნის წáƒáƒ¨áƒšáƒ';
-
$labels['import'] = 'შემáƒáƒ¢áƒáƒœáƒ';
$labels['importcontacts'] = 'კáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ”ბის შემáƒáƒ¢áƒáƒœáƒ';
$labels['importfromfile'] = 'შემáƒáƒ¢áƒáƒœáƒ ფáƒáƒ˜áƒšáƒ˜áƒ“áƒáƒœ:';
-$labels['importtarget'] = 'Add new contacts to address book:';
$labels['importreplace'] = 'ჩáƒáƒáƒœáƒáƒªáƒ•áƒšáƒ”თ áƒáƒ áƒ¡áƒ”ბული მისáƒáƒ›áƒáƒ áƒ—ები';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'დáƒáƒ¡áƒ áƒ£áƒšáƒ”ბულიáƒ';
-
-// settings
$labels['settingsfor'] = 'პáƒáƒ áƒáƒ›áƒ”ტრები';
-$labels['about'] = 'About';
$labels['preferences'] = 'პáƒáƒ áƒáƒ›áƒ”ტრები';
$labels['userpreferences'] = 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის პáƒáƒ áƒáƒ›áƒ”ტრები';
$labels['editpreferences'] = 'მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბლის პáƒáƒ áƒáƒ›áƒ”ტრების რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ';
-
$labels['identities'] = 'პრáƒáƒ¤áƒ˜áƒšáƒ”ბი';
$labels['manageidentities'] = 'პრáƒáƒ¤áƒ˜áƒšáƒ”ბის მáƒáƒ áƒ—ვáƒ';
$labels['newidentity'] = 'áƒáƒ®áƒáƒšáƒ˜ პრáƒáƒ¤áƒ˜áƒšáƒ˜';
-
$labels['newitem'] = 'áƒáƒ®áƒáƒšáƒ˜';
$labels['edititem'] = 'რედáƒáƒ¥áƒ¢áƒ˜áƒ áƒ”ბáƒ';
-
$labels['preferhtml'] = 'რáƒáƒ’áƒáƒ áƒª HTML';
$labels['defaultcharset'] = 'ნáƒáƒ’ულისხმები სიმბáƒáƒšáƒáƒ—რნáƒáƒ™áƒ áƒ”ბი';
$labels['htmlmessage'] = 'HTML შეტყáƒáƒ‘ინებáƒ';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
$labels['dateformat'] = 'თáƒáƒ áƒ˜áƒ¦áƒ˜áƒ¡ ფáƒáƒ áƒ›áƒáƒ¢áƒ˜';
$labels['timeformat'] = 'დრáƒáƒ˜áƒ¡ ფáƒáƒ áƒ›áƒáƒ¢áƒ˜';
$labels['prettydate'] = 'კáƒáƒ áƒ’ი თáƒáƒ áƒ˜áƒ¦áƒ”ბი';
@@ -400,13 +266,8 @@ $labels['timezone'] = 'დრáƒáƒ˜áƒ—ი ზáƒáƒœáƒ';
$labels['pagesize'] = 'სტრიქáƒáƒœáƒ˜ გვერდზე';
$labels['signature'] = 'ხელმáƒáƒ¬áƒ”რáƒ';
$labels['dstactive'] = 'დრáƒáƒ˜áƒ¡ გáƒáƒ“áƒáƒ§áƒ•áƒáƒœáƒ';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'შეტყáƒáƒ‘ინების შექმნრHTML –ში';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'HTML ხელმáƒáƒ¬áƒ”რáƒ';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'ჩვენებáƒ';
$labels['skin'] = 'ინტერფეისი';
$labels['logoutclear'] = 'წáƒáƒ¨áƒšáƒ˜áƒšáƒ”ბის გáƒáƒ¡áƒ£áƒ¤áƒ—áƒáƒ•áƒ”ბრგáƒáƒ›áƒáƒ¡áƒ•áƒšáƒ˜áƒ¡áƒáƒ¡';
@@ -417,21 +278,16 @@ $labels['mailboxview'] = 'სáƒáƒ¤áƒáƒ¡áƒ¢áƒ ყუთის ჩვენეá
$labels['mdnrequests'] = 'მგზáƒáƒ•áƒœáƒ”ლის შეტყáƒáƒ‘ინებები';
$labels['askuser'] = 'ჰკითხე მáƒáƒ›áƒ®áƒ›áƒáƒ áƒ”ბელს';
$labels['autosend'] = 'გáƒáƒ’ზáƒáƒ•áƒœáƒ” áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['ignore'] = 'იგნáƒáƒ áƒ˜áƒ áƒ”ბáƒ';
$labels['readwhendeleted'] = 'მáƒáƒœáƒ˜áƒ¨áƒœáƒ” გზáƒáƒ•áƒœáƒ˜áƒšáƒ˜ წáƒáƒ™áƒ˜áƒ—ხულáƒáƒ“ წáƒáƒ¨áƒšáƒ˜áƒ¡ დრáƒáƒ¡';
$labels['flagfordeletion'] = 'áƒáƒ¦áƒœáƒ˜áƒ¨áƒœáƒ”თ გზáƒáƒ•áƒœáƒ˜áƒšáƒ”ბი რáƒáƒ’áƒáƒ áƒª წáƒáƒ¡áƒáƒ¨áƒšáƒ”ლი წáƒáƒ¨áƒšáƒ˜áƒ¡ ნáƒáƒªáƒ•áƒšáƒáƒ“';
$labels['skipdeleted'] = 'áƒáƒ  გáƒáƒ›áƒáƒáƒ©áƒ˜áƒœáƒ წáƒáƒ¨áƒšáƒ˜áƒšáƒ˜ გზáƒáƒ•áƒœáƒ˜áƒšáƒ”ბი';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
$labels['showremoteimages'] = 'გáƒáƒ›áƒáƒáƒ©áƒ˜áƒœáƒ” მáƒáƒ¨áƒáƒ áƒ”ბული სურáƒáƒ—ები';
$labels['fromknownsenders'] = 'ნáƒáƒªáƒœáƒáƒ‘ი მგზáƒáƒ•áƒœáƒ”ლებისგáƒáƒœ';
$labels['always'] = 'ყáƒáƒ•áƒ”ლთვის';
$labels['showinlineimages'] = 'áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ული სურáƒáƒ—ები გáƒáƒ›áƒáƒáƒ©áƒ˜áƒœáƒ” გზáƒáƒ•áƒœáƒ˜áƒšáƒ˜áƒ¡ ქვემáƒáƒ—';
$labels['autosavedraft'] = 'áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒ˜ შენáƒáƒ®áƒ•áƒ';
$labels['everynminutes'] = 'ყáƒáƒ•áƒ”ლ $n წუთში';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'áƒáƒ áƒáƒ¡áƒ“რáƒáƒ¡';
$labels['immediately'] = 'დáƒáƒ£áƒ§áƒáƒœáƒ”ბლივ';
$labels['messagesdisplaying'] = 'გáƒáƒ›áƒáƒáƒ©áƒ˜áƒœáƒ” შეტყáƒáƒ‘ინებები';
@@ -445,15 +301,12 @@ $labels['advancedoptions'] = 'დáƒáƒ›áƒáƒ¢áƒ”ბითი პáƒáƒ áƒáƒ›áƒ”á
$labels['focusonnewmessage'] = 'ფáƒáƒ™áƒ£áƒ¡áƒ˜áƒ áƒ”ბრáƒáƒ®áƒáƒš შეტყáƒáƒ‘ინებებზე';
$labels['checkallfolders'] = 'შეáƒáƒ›áƒáƒ¬áƒ›áƒ” ყველრსáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე áƒáƒ®áƒáƒš შეტყáƒáƒ‘ინებáƒáƒ–ე';
$labels['displaynext'] = 'შეტყáƒáƒ‘ინების წáƒáƒ¨áƒšáƒ˜áƒ¡ áƒáƒœ გáƒáƒ“áƒáƒ¢áƒáƒœáƒ˜áƒ¡ შემდეგ გáƒáƒ›áƒáƒ©áƒœáƒ“ეს შემდეგი შეტყáƒáƒ‘ინებáƒ';
-$labels['defaultfont'] = 'Default font of HTML message';
$labels['mainoptions'] = 'ძირითáƒáƒ“ი პáƒáƒ áƒáƒ›áƒ”ტრები';
-$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'გáƒáƒœáƒ§áƒáƒ¤áƒ˜áƒšáƒ”ბáƒ';
$labels['maintenance'] = 'მáƒáƒ›áƒ¡áƒáƒ®áƒ£áƒ áƒ”ბáƒ';
$labels['newmessage'] = 'áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებáƒ';
$labels['signatureoptions'] = 'ხელმáƒáƒ¬áƒ”რის áƒáƒ¤áƒªáƒ˜áƒ”ბი';
$labels['whenreplying'] = 'პáƒáƒ¡áƒ£áƒ®áƒ˜áƒ¡ შემთხვევáƒáƒ¨áƒ˜';
-$labels['replyempty'] = 'do not quote the original message';
$labels['replytopposting'] = 'დáƒáƒ˜áƒ¬áƒ§áƒáƒ¡ áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებრáƒáƒ áƒ˜áƒ’ინáƒáƒšáƒ˜áƒ¡ ზემáƒáƒ—';
$labels['replybottomposting'] = 'დáƒáƒ˜áƒ¬áƒ§áƒáƒ¡ áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებრáƒáƒ áƒ˜áƒ’ინáƒáƒšáƒ˜áƒ¡ ქვემáƒáƒ—';
$labels['replyremovesignature'] = 'წáƒáƒ˜áƒ¨áƒáƒšáƒáƒ¡ ხელმáƒáƒ¬áƒ”რრპáƒáƒ¡áƒ£áƒ®áƒ˜áƒ¡ შემთხვევáƒáƒ¨áƒ˜';
@@ -461,26 +314,8 @@ $labels['autoaddsignature'] = 'áƒáƒ•áƒ¢áƒáƒ›áƒáƒ¢áƒ£áƒ áƒáƒ“ დáƒáƒ”მáƒ
$labels['newmessageonly'] = 'მხáƒáƒšáƒáƒ“ áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებáƒ';
$labels['replyandforwardonly'] = 'მხáƒáƒšáƒáƒ“ გáƒáƒ“áƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒ¡ დრპáƒáƒ¡áƒ£áƒ®áƒ˜áƒ¡ შემთხვევáƒáƒ¨áƒ˜';
$labels['insertsignature'] = 'ხელმáƒáƒªáƒ”რის ჩáƒáƒ¡áƒ›áƒ';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
$labels['afternseconds'] = '$n წáƒáƒ›áƒ˜áƒ¡ შემდეგ';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
$labels['addtodict'] = 'ლექსიკáƒáƒœáƒ¨áƒ˜ დáƒáƒ›áƒáƒ¢áƒ”ბáƒ';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე';
$labels['folders'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეები';
$labels['foldername'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის დáƒáƒ¡áƒáƒ®áƒ”ლებáƒ';
@@ -490,54 +325,33 @@ $labels['create'] = 'შექმნáƒ';
$labels['createfolder'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის შექმნáƒ';
$labels['managefolders'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეების მáƒáƒ áƒ—ვáƒ';
$labels['specialfolders'] = 'სპეციáƒáƒšáƒ£áƒ áƒ˜ სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
$labels['location'] = 'მდებáƒáƒ áƒ”áƒáƒ‘áƒ';
$labels['info'] = 'ინფáƒáƒ áƒ›áƒáƒªáƒ˜áƒ';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
$labels['foldertype'] = 'დáƒáƒ¡áƒ¢áƒ˜áƒ¡ ტიპი';
$labels['personalfolder'] = 'კერძრდáƒáƒ¡áƒ¢áƒ';
-$labels['otherfolder'] = 'Other User\'s Folder';
$labels['sharedfolder'] = 'სáƒáƒ¯áƒáƒ áƒ დáƒáƒ¡áƒ¢áƒ';
-
$labels['sortby'] = 'დáƒáƒšáƒáƒ’ებáƒ';
$labels['sortasc'] = 'დáƒáƒšáƒáƒ’ებრზრდáƒáƒ“áƒáƒ‘ით';
$labels['sortdesc'] = 'დáƒáƒšáƒáƒ’ებრკლებáƒáƒ“áƒáƒ‘ით';
$labels['undo'] = 'დáƒáƒ‘რუნებáƒ';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
$labels['B'] = 'ბტ';
$labels['KB'] = 'კბტ';
$labels['MB'] = 'მბტ';
$labels['GB'] = 'გბტ';
-
-// character sets
$labels['unicode'] = 'უნიკáƒáƒ“ი';
$labels['english'] = 'ინსგლისური';
$labels['westerneuropean'] = 'დáƒáƒ¡áƒáƒ•áƒšáƒ£áƒ áƒ”ვრáƒáƒžáƒ£áƒšáƒ˜';
$labels['easterneuropean'] = 'áƒáƒ¦áƒ›áƒáƒ¡áƒáƒ•áƒšáƒ”თევრáƒáƒžáƒ£áƒšáƒ˜';
-$labels['southeasterneuropean'] = 'South-Eastern European';
$labels['baltic'] = 'ბáƒáƒšáƒ¢áƒ˜áƒ£áƒ áƒ˜';
$labels['cyrillic'] = 'კირილიცáƒ';
$labels['arabic'] = 'áƒáƒ áƒáƒ‘ული';
$labels['greek'] = 'ბერძნული';
$labels['hebrew'] = 'ებრáƒáƒ£áƒšáƒ˜';
$labels['turkish'] = 'თურქული';
-$labels['nordic'] = 'Nordic';
$labels['thai'] = 'ტáƒáƒ˜';
$labels['celtic'] = 'კელტური';
$labels['vietnamese'] = 'ვიეტნáƒáƒ›áƒ£áƒ áƒ˜';
$labels['japanese'] = 'იáƒáƒžáƒáƒœáƒ£áƒ áƒ˜';
$labels['korean'] = 'კáƒáƒ áƒ”ული';
$labels['chinese'] = 'ჩინური';
-
?>
diff --git a/program/localization/ka_GE/messages.inc b/program/localization/ka_GE/messages.inc
index c0cdd98f0..2c544e17d 100755..100644
--- a/program/localization/ka_GE/messages.inc
+++ b/program/localization/ka_GE/messages.inc
@@ -15,9 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'შესვლრშეუძლებელიáƒ';
$messages['cookiesdisabled'] = 'თქვენი ბრáƒáƒ£áƒ–ერი კუკიებს áƒáƒ  პáƒáƒ¡áƒ£áƒ®áƒáƒ‘ს';
$messages['sessionerror'] = 'თქვენი სესირáƒáƒ áƒ˜áƒ¡ მცდáƒáƒ áƒ˜ áƒáƒœ ვáƒáƒ“áƒáƒ’áƒáƒ¡áƒ£áƒšáƒ˜';
@@ -25,17 +22,11 @@ $messages['storageerror'] = 'IMAP სერვერთáƒáƒœ დáƒáƒ™áƒáƒ•áƒ¨
$messages['servererror'] = 'შეცდáƒáƒ›áƒ სერვერზე!';
$messages['servererrormsg'] = 'სერვერის შეცდáƒáƒ›áƒ: $msg';
$messages['dberror'] = 'მáƒáƒœáƒáƒªáƒ”მთრბáƒáƒ–ის შეცდáƒáƒ›áƒ!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
$messages['errornoperm'] = 'მáƒáƒ¥áƒ›áƒ”დების შესრულებრშეუძლებáƒáƒšáƒ˜áƒ. წვდáƒáƒ›áƒ áƒáƒ™áƒ áƒ«áƒáƒšáƒ£áƒšáƒ˜áƒ.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜ მáƒáƒ—ხáƒáƒ•áƒœáƒ! მáƒáƒœáƒáƒªáƒ”მების შენáƒáƒ®áƒ•áƒ áƒáƒ  მáƒáƒ®áƒ”რხდáƒ.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'áƒáƒ  áƒáƒ áƒ˜áƒ¡ áƒáƒ®áƒáƒšáƒ˜ შეტყáƒáƒ‘ინებáƒ';
$messages['loggedout'] = 'წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით დáƒáƒ˜áƒ®áƒ£áƒ áƒ თქვენი სესიáƒ';
$messages['mailboxempty'] = 'სáƒáƒ¤áƒáƒ¡áƒ¢áƒ ყუთი ცáƒáƒ áƒ˜áƒ”ლიáƒ';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'იტვირთებáƒ...';
$messages['uploading'] = 'ფáƒáƒ˜áƒšáƒ˜ იტვირთებáƒ...';
$messages['uploadingmany'] = 'ფáƒáƒ˜áƒšáƒ”ბის áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ვáƒ...';
@@ -48,31 +39,22 @@ $messages['messagesaved'] = 'შეტყáƒáƒ‘ინების დრáƒáƒ”áƒ
$messages['successfullysaved'] = 'წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით შეინáƒáƒ®áƒ';
$messages['addedsuccessfully'] = 'კáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ˜ წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით დáƒáƒ”მáƒáƒ¢áƒ მისáƒáƒ›áƒáƒ áƒ—ებში';
$messages['contactexists'] = 'კáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ˜ áƒáƒ› მისáƒáƒ›áƒáƒ áƒ—ზე უკვე áƒáƒ áƒ¡áƒ”ბáƒáƒ‘ს';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'უსáƒáƒ¤áƒ áƒ—ხáƒáƒ”ბის მიზნით სურáƒáƒ—ების ჩვენებრშეზღუდულიáƒ';
$messages['encryptedmessage'] = 'შეტყáƒáƒ‘ინებრდáƒáƒ¨áƒ˜áƒ¤áƒ áƒ£áƒšáƒ˜áƒ დრსáƒáƒ›áƒ¬áƒ£áƒ®áƒáƒ áƒáƒ“ ჩვენებრშეუძლებელიáƒ';
$messages['nocontactsfound'] = 'კáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ˜ ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ';
$messages['contactnotfound'] = 'მáƒáƒ—ხáƒáƒ•áƒœáƒ˜áƒšáƒ˜ კáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ˜ ვერ მáƒáƒ˜áƒ«áƒ”ბნáƒ';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'შეტყáƒáƒ‘ინებრვერ გáƒáƒ˜áƒ’ზáƒáƒ•áƒœáƒ';
$messages['senttooquickly'] = 'გთხáƒáƒ•áƒ— მáƒáƒ˜áƒªáƒáƒ“áƒáƒ— $sec წáƒáƒ›áƒ˜. სáƒáƒœáƒáƒ› იგზáƒáƒ•áƒœáƒ”ბრშეტყáƒáƒ‘ინებáƒ';
-$messages['errorsavingsent'] = 'შეცდáƒáƒ›áƒ სáƒáƒœáƒáƒ› ინáƒáƒ®áƒ”ბრგáƒáƒ’ზáƒáƒ•áƒœáƒ˜áƒšáƒ˜ შეტყáƒáƒ‘ინებáƒ';
-$messages['errorsaving'] = 'შენáƒáƒ®áƒ•áƒ˜áƒ¡ დრáƒáƒ¡ მáƒáƒ®áƒ“რშეცდáƒáƒ›áƒ';
$messages['errormoving'] = 'შეტყáƒáƒ‘ინების გáƒáƒ“áƒáƒ¢áƒáƒœáƒ შეუძლებელიáƒ';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'შეტყáƒáƒ‘ინების წáƒáƒ¨áƒšáƒ შეუძლებელიáƒ';
$messages['errormarking'] = 'შეტყáƒáƒ‘ინების მáƒáƒœáƒ˜áƒ¨áƒ•áƒœáƒ შეუძლებელიáƒ';
$messages['deletecontactconfirm'] = 'ნáƒáƒ›áƒ“ვილáƒáƒ“ გსურთ მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ კáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ”ბის წáƒáƒ¨áƒšáƒ?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'ნáƒáƒ›áƒ“ვილáƒáƒ“ გსურთ მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ შეტყáƒáƒ‘ინებების წáƒáƒ¨áƒšáƒ?';
$messages['deletefolderconfirm'] = 'ნáƒáƒ›áƒ“ვილáƒáƒ“ გსურთ áƒáƒ› სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის წáƒáƒ¨áƒšáƒ?';
$messages['purgefolderconfirm'] = 'ნáƒáƒ›áƒ“ვილáƒáƒ“ გსურთ ყველრშეტყáƒáƒ‘ინების წáƒáƒ¨áƒšáƒ áƒáƒ¦áƒœáƒ˜áƒ¨áƒœáƒ£áƒš სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ეში?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
$messages['groupdeleting'] = 'ჯგუფის წáƒáƒ¨áƒšáƒ...';
$messages['folderdeleting'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის წáƒáƒ¨áƒšáƒ...';
$messages['foldermoving'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის გáƒáƒ“áƒáƒ¢áƒáƒœáƒ...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'ყველრველი áƒáƒ  áƒáƒ áƒ˜áƒ¡ შევსებული';
$messages['noemailwarning'] = 'მიუთითეთ სწáƒáƒ áƒ˜ ელ–ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი';
$messages['nonamewarning'] = 'მიუთითეთ სáƒáƒ®áƒ”ლი';
@@ -92,45 +74,22 @@ $messages['searching'] = 'ძიებáƒ...';
$messages['checking'] = 'შემáƒáƒ¬áƒ›áƒ”ბáƒ...';
$messages['nospellerrors'] = 'áƒáƒ áƒ—áƒáƒ’რáƒáƒ¤áƒ˜áƒ£áƒšáƒ˜ შეცდáƒáƒ›áƒ áƒáƒ  áƒáƒ áƒ˜áƒ¡';
$messages['folderdeleted'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ე წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით წáƒáƒ˜áƒ¨áƒáƒšáƒ';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით წáƒáƒ˜áƒ¨áƒáƒšáƒ';
$messages['converting'] = 'შეტყáƒáƒ‘ინების ფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒ áƒ”ბის გáƒáƒ£áƒ¥áƒ›áƒ”ბáƒ...';
$messages['messageopenerror'] = 'შეტყáƒáƒ‘ინებრვერ ჩáƒáƒ˜áƒ¢áƒ•áƒ˜áƒ áƒ—რსერვერიდáƒáƒœ';
$messages['fileuploaderror'] = 'ფáƒáƒ˜áƒšáƒ˜ ვერ áƒáƒ˜áƒ¢áƒ•áƒ˜áƒ áƒ—áƒ';
$messages['filesizeerror'] = 'áƒáƒ¢áƒ•áƒ˜áƒ áƒ—ული ფáƒáƒ˜áƒšáƒ˜áƒ¡ ზáƒáƒ›áƒ მეტირდáƒáƒ¡áƒáƒ¨áƒ•áƒ”ბ ფáƒáƒ˜áƒšáƒ˜áƒ¡ მáƒáƒ¥áƒ¡áƒ˜áƒ›áƒáƒšáƒ£áƒ  ზáƒáƒ›áƒáƒ–ე ($size)';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'áƒáƒ¦áƒœáƒ˜áƒ¨áƒœáƒ£áƒšáƒ˜ მისáƒáƒ›áƒáƒ áƒ—ის მხáƒáƒšáƒáƒ“ წáƒáƒ™áƒ˜áƒ—ხვáƒáƒ შესáƒáƒ«áƒšáƒ”ბელი';
$messages['errorsavingcontact'] = 'სáƒáƒ™áƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ მისáƒáƒ›áƒáƒ áƒ—ის შენáƒáƒ®áƒ•áƒ შეუძლებელიáƒ';
$messages['movingmessage'] = 'შეტყáƒáƒ‘ინების გáƒáƒ“áƒáƒ¢áƒáƒœáƒ...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით გáƒáƒ˜áƒ’ზáƒáƒ•áƒœáƒ';
$messages['errorsendingreceipt'] = 'áƒáƒ  გáƒáƒ˜áƒ’ზáƒáƒ•áƒœáƒ';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'წáƒáƒ¨áƒšáƒ შეუძლებელიáƒ, ის თქვენთვის ერთáƒáƒ“ერთიáƒ';
$messages['forbiddencharacter'] = 'სáƒáƒ¥áƒáƒ¦áƒáƒšáƒ“ის სáƒáƒ®áƒ”ლი შეიცáƒáƒ•áƒ¡ áƒáƒ™áƒ áƒ«áƒáƒšáƒ£áƒš სიმბáƒáƒšáƒáƒ”ბს';
$messages['selectimportfile'] = 'გთხáƒáƒ•áƒ— მáƒáƒœáƒ˜áƒ¨áƒœáƒáƒ— ფáƒáƒ˜áƒšáƒ˜ áƒáƒ¡áƒáƒ¢áƒ•áƒ˜áƒ áƒ—áƒáƒ“';
$messages['addresswriterror'] = 'მáƒáƒœáƒ˜áƒ¨áƒœáƒ£áƒš მისáƒáƒ›áƒáƒ áƒ—ებში ჩáƒáƒ¬áƒ”რრშეუძლებელიáƒ';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'გთხáƒáƒ•áƒ— მáƒáƒ˜áƒªáƒáƒ“áƒáƒ—, მიმდინáƒáƒ áƒ”áƒáƒ‘ს შემáƒáƒ¢áƒáƒœáƒ';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
$messages['importconfirm'] = '<b>წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით დáƒáƒ¡áƒ áƒ£áƒšáƒ“რ$inserted კáƒáƒœáƒ¢áƒáƒ¥áƒ¢áƒ”ბის შემáƒáƒ¢áƒáƒœáƒ, $skipped áƒáƒ áƒ¡áƒ”ბულის გáƒáƒ›áƒáƒ¢áƒáƒ•áƒ”ბáƒ</b>:<p><em>$names</em></p>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'áƒáƒžáƒ”რáƒáƒªáƒ˜áƒ შეზღუდულიáƒ';
$messages['nofromaddress'] = 'ელ–ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი გáƒáƒ›áƒáƒ¢áƒáƒ•áƒ”ბულიáƒ';
$messages['editorwarning'] = 'რედáƒáƒ¥áƒ¢áƒáƒ áƒ˜áƒ¡ გáƒáƒ“áƒáƒ áƒ—ვრტექსტურ რეჟიმში გáƒáƒ›áƒáƒ˜áƒ¬áƒ•áƒ”ვს áƒáƒ áƒ¡áƒ”ბული ტექსტის ფáƒáƒ áƒ›áƒáƒ¢áƒ˜áƒ¡ დáƒáƒ™áƒáƒ áƒ’ვáƒáƒ¡. გსურთ გáƒáƒ’რძელებáƒ?';
@@ -142,35 +101,16 @@ $messages['smtptoerror'] = 'SMTP Error ($code): ვერ დáƒáƒ”მáƒáƒ¢áƒ
$messages['smtprecipientserror'] = 'SMTP Error: მიმღებთრჩáƒáƒ›áƒáƒœáƒáƒ—ვáƒáƒšáƒ˜áƒ¡ დáƒáƒ›áƒ£áƒ¨áƒáƒ•áƒ”ბრვერ მáƒáƒ®áƒ”რხდáƒ';
$messages['smtperror'] = 'SMTP Error: $msg';
$messages['emailformaterror'] = 'ელ-ფáƒáƒ¡áƒ¢áƒ˜áƒ¡ მისáƒáƒ›áƒáƒ áƒ—ი áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
$messages['contactdeleted'] = 'კáƒáƒœáƒ¢áƒáƒ¥áƒ¢(ებ)ი წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით წáƒáƒ˜áƒ¨áƒáƒšáƒ.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
$messages['contactrestored'] = 'კáƒáƒœáƒ áƒáƒ¥áƒ¢(ებ)ი წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით áƒáƒ¦áƒ“გáƒ,';
$messages['groupdeleted'] = 'ჯგუფი წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით წáƒáƒ˜áƒ¨áƒáƒšáƒ.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
$messages['groupcreated'] = 'ჯგუფი წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით შეიქმნáƒ.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
$messages['messagedeleted'] = 'შეტყáƒáƒ‘ინებები წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით წáƒáƒ˜áƒ¨áƒáƒšáƒ.';
$messages['messagemoved'] = 'შეტყáƒáƒ‘ინებები გáƒáƒ“áƒáƒ¢áƒáƒœáƒ˜áƒšáƒ˜áƒ წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
$messages['messagemarked'] = 'შეტყáƒáƒ‘ინებები წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით მáƒáƒ˜áƒœáƒ˜áƒ¨áƒœáƒ.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
$messages['namecannotbeempty'] = 'სáƒáƒ®áƒ”ლი áƒáƒ  შეიძლებრიყáƒáƒ¡ ცáƒáƒ áƒ˜áƒ”ლი.';
$messages['nametoolong'] = 'სáƒáƒ®áƒ”ლი ძáƒáƒšáƒ˜áƒáƒœ მáƒáƒ™áƒšáƒ”áƒ.';
$messages['folderupdated'] = 'დáƒáƒ¡áƒ¢áƒ წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით გáƒáƒœáƒáƒ®áƒšáƒ“áƒ.';
$messages['foldercreated'] = 'დáƒáƒ¡áƒ¢áƒ წáƒáƒ áƒ›áƒáƒ¢áƒ”ბით შეიქმნáƒ.';
$messages['invalidimageformat'] = 'გáƒáƒ›áƒáƒ¡áƒáƒ®áƒ£áƒšáƒ”ბის ფáƒáƒ áƒ›áƒáƒ¢áƒ˜ áƒáƒ áƒáƒ¡áƒ¬áƒáƒ áƒ˜áƒ.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/km_KH/labels.inc b/program/localization/km_KH/labels.inc
index bc2836a53..9a2799922 100644
--- a/program/localization/km_KH/labels.inc
+++ b/program/localization/km_KH/labels.inc
@@ -15,34 +15,22 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = '$product សូមស្វាគមនáŸ';
$labels['username'] = 'ឈ្មោះអ្នកប្រើ';
$labels['password'] = 'ពាក្យសំងាážáŸ‹';
$labels['server'] = 'ម៉ាស៊ីនមáŸ';
$labels['login'] = 'áž–áž·áž“áž·ážáŸ’យចូល';
-
-// taskbar
$labels['logout'] = 'áž–áž·áž“áž·ážáŸ’យចáŸáž‰';
$labels['mail'] = 'អ៊ីមែល';
$labels['settings'] = 'កំនážáŸ‹áž€áž¶ážšáž”្រើប្រាស់';
$labels['addressbook'] = 'សៀវភៅអាសយដ្ឋាន';
-
-// mailbox names
$labels['inbox'] = 'ប្រអប់សំបុážáŸ’ážš';
$labels['drafts'] = 'សំបុážáŸ’រពង្រៀង';
$labels['sent'] = 'សំបុážáŸ’រដែលបានបញ្ជូន';
$labels['trash'] = 'ធុងសំរាម';
$labels['junk'] = 'សំបុážáŸ’រមិនល្អ';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'ចំណងជើង';
$labels['from'] = 'អ្នកផ្ញើ';
-$labels['sender'] = 'Sender';
$labels['to'] = 'អ្នកទទួល';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
@@ -53,28 +41,17 @@ $labels['size'] = 'ទំហំ';
$labels['priority'] = 'អទិភាព';
$labels['organization'] = 'អង្គភាព';
$labels['readstatus'] = 'ស្ážáž¶áž“ភាពនៃការអាន';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'ážážáž‘ាំងអស់';
$labels['messagesfromto'] = 'សំបុážáŸ’រពី $from ទៅដល់ $toក្នុងចំណោម $count សំបុážáŸ’ážš';
$labels['threadsfromto'] = 'បន្ážáž»áŸ†ážŸáŸ†áž”áž»ážáŸ’រពី $from ទៅដល់ $toក្នុងចំណោម $count សំបុážáŸ’ážš';
$labels['messagenrof'] = 'សំបុážáŸ’ážš $nr នៃ $count';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'ចំលង';
$labels['move'] = 'ផ្ទáŸážš';
$labels['moveto'] = 'ផ្ទáŸážšáž‘ៅ';
$labels['download'] = 'ទាញយក';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'ឈ្មោះឯកសារ';
$labels['filesize'] = 'ទំហំឯកសារ';
-
$labels['addtoaddressbook'] = 'រក្សាទុកក្នុងសៀវភៅអាសយដ្ឋាន';
-
-// weekdays short
$labels['sun'] = 'អាទិážáŸ’áž™';
$labels['mon'] = 'áž…áŸáž“្ទ';
$labels['tue'] = 'អង្គារ';
@@ -82,8 +59,6 @@ $labels['wed'] = 'ពុធ';
$labels['thu'] = 'ព្រហស្បážáž·áŸ';
$labels['fri'] = 'សុក្រ';
$labels['sat'] = 'សៅរáŸ';
-
-// weekdays long
$labels['sunday'] = 'អាទិážáŸ’áž™';
$labels['monday'] = 'áž…áŸáž“្ទ';
$labels['tuesday'] = 'អង្គារ';
@@ -91,8 +66,6 @@ $labels['wednesday'] = 'ពុធ';
$labels['thursday'] = 'ព្រហស្បážáž·áŸ';
$labels['friday'] = 'សុក្រ';
$labels['saturday'] = 'សៅរáŸ';
-
-// months short
$labels['jan'] = 'មករា';
$labels['feb'] = 'កុម្ភះ';
$labels['mar'] = 'មិនា';
@@ -105,8 +78,6 @@ $labels['sep'] = 'កញ្ញា';
$labels['oct'] = 'ážáž»áž›áž¶';
$labels['nov'] = 'វិច្ឆិកា';
$labels['dec'] = 'ធ្នូ';
-
-// months long
$labels['longjan'] = 'មករា';
$labels['longfeb'] = 'កុម្ភះ';
$labels['longmar'] = 'មិនា';
@@ -119,22 +90,14 @@ $labels['longsep'] = 'កញ្ញា';
$labels['longoct'] = 'ážáž»áž›áž¶';
$labels['longnov'] = 'វិច្ឆិកា';
$labels['longdec'] = 'ធ្នូ';
-
$labels['today'] = 'ážáŸ’ងៃនáŸáŸ‡';
-
-// toolbar buttons
-$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'áž–áž·áž“áž·ážáŸ’យសំបុážáŸ’ážšážáŸ’មី';
$labels['compose'] = 'សរសáŸážšážŸáŸ†áž”áž»ážáŸ’ážšážáŸ’មី';
$labels['writenewmessage'] = 'សរសáŸážšážŸáŸ†áž”áž»ážáŸ’ážšážáŸ’មី';
-$labels['reply'] = 'Reply';
$labels['replytomessage'] = 'ឆ្លើយážáž”ទៅអ្នកផ្ញើ';
$labels['replytoallmessage'] = 'ឆ្លើយážáž”ទៅ អ្នកទទួលទាំងអស់និង ក្រុម ឬ អ្នកផ្ញើ';
$labels['replyall'] = 'ឆ្លើយážáž”ទៅទាំងអស់គ្នា';
$labels['replylist'] = 'ឆ្លើយážáž”ទៅក្រុម';
-$labels['forward'] = 'Forward';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'ផ្ញើសំបុážáŸ’របន្ážážš';
$labels['deletemessage'] = 'លុបសំបុážáŸ’រចោល';
$labels['movemessagetotrash'] = 'ផ្ទáŸážšážŸáŸ†áž”áž»ážáŸ’រទៅក្នុងធុងសំរាម';
@@ -145,17 +108,11 @@ $labels['nextmessage'] = 'បង្ហាញសំបុážáŸ’របន្á
$labels['lastmessage'] = 'បង្ហាញសំបុážáŸ’រចុងក្រោយ';
$labels['backtolist'] = 'ážáŸ’រលប់ទៅកាន់ក្រុមសំបុážáŸ’ážš';
$labels['viewsource'] = 'បង្ហាញ Source របស់សំបុážáŸ’ážš';
-$labels['mark'] = 'Mark';
$labels['markmessages'] = 'កំណážáŸ‹ážŸáŸ†áž‚ាល់សំបុážáŸ’ážš';
$labels['markread'] = 'កំណážáŸ‹ážáž¶áž”ានអានរួច';
$labels['markunread'] = 'កំណážáŸ‹ážáž¶áž˜áž·áž“ទាន់បានអាន';
$labels['markflagged'] = 'កំណážáŸ‹ážŸáŸ†áž‚ាល់ដោយផ្កាយ';
$labels['markunflagged'] = 'លុបកំណážáŸ‹ážŸáŸ†áž‚ាល់ដោយផ្កាយ';
-$labels['moreactions'] = 'More actions...';
-$labels['more'] = 'More';
-$labels['back'] = 'Back';
-$labels['options'] = 'Options';
-
$labels['select'] = 'ជ្រើសរើស';
$labels['all'] = 'ទាំងអស់';
$labels['none'] = 'មិនážáŸ†ážšáŸ€áž”';
@@ -163,9 +120,7 @@ $labels['currpage'] = 'ទំពáŸážšáž“áŸáŸ‡';
$labels['unread'] = 'មិនទាន់អាន';
$labels['flagged'] = 'មានកំណážáŸ‹ážŸáŸ†áž‚ាល់ដោយផ្កាយ';
$labels['unanswered'] = 'មិនទាន់ឆ្លើយážáž”';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'បានលុបរួច';
-$labels['undeleted'] = 'Not deleted';
$labels['invert'] = 'បញ្ច្រស់';
$labels['filter'] = 'លក្ážážáŸážŽáŸ’ឌ';
$labels['list'] = 'ážáž¶ážšáž¶áž„';
@@ -174,7 +129,6 @@ $labels['expand-all'] = 'បង្ហាញសំបុážáŸ’រទាំងអá
$labels['expand-unread'] = 'បង្ហាញសំបុážáŸ’រមិនទាន់អាន';
$labels['collapse-all'] = 'បិទសំបុážáŸ’រទាំងអស់';
$labels['threaded'] = 'បានបែកចែកជាក្រុមរួច';
-
$labels['autoexpand_threads'] = 'បង្ហាញបណ្ážáž»áŸ†ážŸáŸ†áž”áž»ážáŸ’ážš';
$labels['do_expand'] = 'បណ្ážáž»áŸ†áž‘ាំងអស់';
$labels['expand_only_unread'] = 'បង្ហាញážáŸ‚សំបុážáŸ’រដែលមិនទាន់អាន';
@@ -190,31 +144,19 @@ $labels['listcolumns'] = 'ážáž¶ážšáž¶áž„ជួរឈ';
$labels['listsorting'] = 'ážáŸ†ážšáŸ€áž”ជួរឈ';
$labels['listorder'] = 'លំដាប់នៃការážáŸ†ážšáŸ€áž”';
$labels['listmode'] = 'បង្ហាញជាážáž¶ážšáž¶áž„';
-
$labels['folderactions'] = 'មុážáž„ារážáž';
$labels['compact'] = 'បង្រួម';
$labels['empty'] = 'áž‘áž‘áŸážš';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'ទំហំសំបុážáŸ’រទាំងអស់ដែលមាន';
$labels['unknown'] = 'មិនស្គាល់';
$labels['unlimited'] = 'គ្មានកំនážáŸ‹';
-
$labels['quicksearch'] = 'ស្វែងរក';
$labels['resetsearch'] = 'កំណážáŸ‹áž›áž€áŸ’ážážáŸážŽáŸ’ឌស្វែងរកជាážáŸ’មី';
$labels['searchmod'] = 'កែសំរួលលក្ážážáŸážŽáŸ’ឌស្វែងរក';
$labels['msgtext'] = 'សំបុážáŸ’រទាំងមូល';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'បើកក្នុងវីនដូវážáŸ’មី';
$labels['emlsave'] = 'រក្សាទុកទិន្ននáŸáž™áž‡áž¶áž¯áž€ážŸáž¶ážšáž”្រភáŸáž‘(.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'កែហើយរក្សាទុកដូចជាសំបុážáŸ’ážšážáŸ’មី';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'ផ្ញើសំបុážáŸ’ážšáž“áŸáŸ‡';
$labels['savemessage'] = 'រក្សាទុកសំបុážáŸ’រពង្រៀង';
$labels['addattachment'] = 'ឯកសារភ្ជាប់';
@@ -222,54 +164,33 @@ $labels['charset'] = 'ប្រភáŸáž‘អក្សរ';
$labels['editortype'] = 'ប្រភáŸáž‘ Editor';
$labels['returnreceipt'] = 'អážáŸ’ážáž”ទបញ្ជាក់ពីការážáŸ’រឡប់';
$labels['dsn'] = 'ប្រាប់អំពីស្ážáž¶áž“ភាពផ្ញើ';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
$labels['editidents'] = 'ផ្លាស់ប្ážáž¼ážšáž¢ážáŸ’ážážŸáž‰áŸ’ញាណ';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'áž–áž·áž“áž·ážáŸ’យអក្ážážšáž¶ážœáž·ážšáž»áž‘្ធ';
$labels['resumeediting'] = 'បន្ážážšáž€áž¶ážšáž€áŸ‚ážáŸ†ážšáž¼ážœ';
$labels['revertto'] = 'ážáŸ’រលប់ទៅ';
-
-$labels['attach'] = 'Attach';
$labels['attachments'] = 'ឯកសារភ្ជាប់';
$labels['upload'] = 'ភ្ជាប់ឯកសារ';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'បិទ';
$labels['messageoptions'] = 'កំណážáŸ‹áž‡áŸ†ážšáž¾ážŸážšáž”ស់សំបុážáŸ’ážš';
-
$labels['low'] = 'ទាប';
$labels['lowest'] = 'ទាបបំផុáž';
$labels['normal'] = 'ធម្មážáž¶';
$labels['high'] = 'ážáŸ’ពស់';
$labels['highest'] = 'ážáŸ’ពស់បំផុáž';
-
$labels['nosubject'] = '(គ្មានចំណងជើង)';
$labels['showimages'] = 'បង្ហាញរូបភាព';
$labels['alwaysshow'] = 'បង្ហាញជានិច្ចរាល់រូបភាពបញ្ជូនពី$sender';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'អážáŸ’ážáž”áž‘ HTML';
$labels['plaintoggle'] = 'អážáŸ’ážáž”ទធម្មážáž¶';
$labels['savesentmessagein'] = 'រក្សាសំបុážáŸ’រដែលបានផ្ញើក្នុង';
$labels['dontsave'] = 'មិនរក្សាទុក';
$labels['maxuploadsize'] = 'ទំហំឯកសារធំបំផុážážŠáŸ‚លអាចភ្ជាប់បានគឺ$size';
-
$labels['addcc'] = 'បន្ážáŸ‚ម Cc';
$labels['addbcc'] = 'បន្ážáŸ‚ម Bcc';
$labels['addreplyto'] = 'បន្ážáŸ‚ម Reply-To';
$labels['addfollowupto'] = 'បន្ážáŸ‚ម Followup-To';
-
-// mdn
-$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
$labels['receiptread'] = 'អážáŸ’ážáž”ទផ្ញើážáŸ’រលប់ (បានអាន)';
$labels['yourmessage'] = 'áž“áŸáŸ‡áž‚ឺជាអážáŸ’ážáž”ទផ្ញើážáŸ’រលប់សំរាប់សំបុážáŸ’ររបស់លោកអ្នក។';
-$labels['receiptnote'] = 'Note: This receipt only acknowledges that the message was displayed on the recipient\'s computer. There is no guarantee that the recipient has read or understood the message contents.';
-
-// address boook
$labels['name'] = 'ឈ្មោះសំរាប់បង្ហាញ';
$labels['firstname'] = 'នាមážáŸ’រកូល';
$labels['surname'] = 'នាមážáŸ’លួន';
@@ -299,12 +220,7 @@ $labels['female'] = 'ស្រី';
$labels['manager'] = 'នាយក';
$labels['assistant'] = 'ជំនួយការ';
$labels['spouse'] = 'គ្រួសារ';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
$labels['other'] = 'ផ្សáŸáž„ពីនáŸáŸ‡';
-
$labels['typehome'] = 'áž‚áŸáž ážŠáŸ’ឋាន';
$labels['typework'] = 'កន្លែងធ្វើការ';
$labels['typeother'] = 'ផ្សáŸáž„ពីនáŸáŸ‡';
@@ -316,17 +232,12 @@ $labels['typecar'] = 'ážšážáž™áž“្áž';
$labels['typepager'] = 'ឧបករណáŸáž•áŸ’ážáž›áŸ‹ážŸáž¶ážš';
$labels['typevideo'] = 'វីដáŸáž¢áž¼ážš';
$labels['typeassistant'] = 'ជំនួយការ';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
$labels['addfield'] = 'បន្ážáŸ‚ម';
$labels['addcontact'] = 'បន្ážáŸ‚មអាសយដ្ឋានទាក់ទង';
$labels['editcontact'] = 'កែប្រែអាសយដ្ឋានទាក់ទង';
$labels['contacts'] = 'អាសយដ្ឋានទាក់ទងទាំងអស់';
$labels['contactproperties'] = 'áž–áŸážáŸŒáž˜áž¶áž“អំពីទំនាក់ទំនង';
$labels['personalinfo'] = 'áž–áŸážáŸŒáž˜áž¶áž“ផ្ទាល់ážáŸ’លួន';
-
$labels['edit'] = 'កែážáŸ†ážšáž¼ážœ';
$labels['cancel'] = 'លះបង់';
$labels['save'] = 'រក្សាទុក';
@@ -334,64 +245,38 @@ $labels['delete'] = 'លុបចោល';
$labels['rename'] = 'ប្ážáž¼ážšážˆáŸ’មោះ';
$labels['addphoto'] = 'បន្ážáŸ‚មរូបážáž';
$labels['replacephoto'] = 'លុបរូបážáž';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'បង្កើážáž¢áž¶ážŸáž™ážŠáŸ’ឋានទាក់ទងážáŸ’មី';
$labels['deletecontact'] = 'លុបអាសយដ្ឋានទាក់ទងដែលបានជ្រើសរើស';
$labels['composeto'] = 'ផ្ញើសំបុážáŸ’រទៅ';
$labels['contactsfromto'] = 'អាសយដ្ឋានទាក់ទង $from ដល់ $to នៃ$count';
$labels['print'] = 'បោះពុម្ភ';
$labels['export'] = 'ទាញនិងរក្សាទុក';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'ទាញនិងរក្សាទុកអាសយដ្ឋានជាប្រភáŸáž‘vCard';
$labels['newcontactgroup'] = 'បង្កើážáž€áŸ’រុមអាសយដ្ឋានážáŸ’មី';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'ទំពáŸážšáž˜áž»áž“';
$labels['firstpage'] = 'ទំពáŸážšážŠáŸ†áž”ូង';
$labels['nextpage'] = 'ទំពáŸážšáž”ន្ទាប់';
$labels['lastpage'] = 'ទំពáŸážšáž…ុងក្រោយ';
-
$labels['group'] = 'ក្រុម';
$labels['groups'] = 'ក្រុម';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'អាសយដ្ឋានផ្ទាល់ážáŸ’លួន';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
$labels['import'] = 'បញ្ចូល';
$labels['importcontacts'] = 'បញ្ចូលអាសយដ្ឋាន';
$labels['importfromfile'] = 'បញ្ចូលពី ឯកសារ';
-$labels['importtarget'] = 'Add new contacts to address book:';
$labels['importreplace'] = 'ផ្លាស់ប្ážáž¼ážšáž¢áž¶ážŸáž™ážŠáŸ’ឋានទាំងអស់';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'ចប់រួចរាល់';
-
-// settings
$labels['settingsfor'] = 'កំណážáŸ‹ážŸáŸ†ážšáž¶áž”់';
-$labels['about'] = 'About';
$labels['preferences'] = 'កំណážáŸ‹ážáž¶áž˜áž€áž¶ážšáž…ូលចិážáŸ’áž';
$labels['userpreferences'] = 'កំណážáŸ‹ážáž¶áž˜áž€áž¶ážšáž…ូលចិážáŸ’ážážšáž”ស់អ្នកប្រើ';
$labels['editpreferences'] = 'ផ្លាស់ប្ážáž¼ážšáž€áž¶ážšáž…ូលចិážáŸ’ážážšáž”ស់អ្នកប្រើ';
-
$labels['identities'] = 'អážáŸ’ážážŸáž‰áŸ’ញាណ';
$labels['manageidentities'] = 'គ្រប់គ្រងអážáŸ’ážážŸáž‰áŸ’ញាណ';
$labels['newidentity'] = 'អážáŸ’ážážŸáž‰áŸ’ញាណážáŸ’មី';
-
$labels['newitem'] = 'ážœážáŸ’ážáž»ážáŸ’មី';
$labels['edititem'] = 'កែប្រែវážáŸ’ážáž»';
-
$labels['preferhtml'] = 'បង្ហាញជា HTML';
$labels['defaultcharset'] = 'áž›áŸážáž€áž¼ážáž¢áž€áŸ’សរមានស្រាប់';
$labels['htmlmessage'] = 'សំបុážáŸ’រប្រភáŸáž‘ HTML';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'កាលបរិច្ឆáŸážáž„ាយស្រួលមើល';
$labels['setdefault'] = 'កំណážáŸ‹áž‘ុក';
$labels['autodetect'] = 'ស្វáŸáž™áž”្រវážáŸ’ážáž·';
@@ -400,13 +285,9 @@ $labels['timezone'] = 'ម៉ោង';
$labels['pagesize'] = 'ចំនួនសំបុážáŸ’រក្នុងមួយទំពáŸážš';
$labels['signature'] = 'áž ážáŸ’ážáž›áŸážáž¶';
$labels['dstactive'] = 'ម៉ោងវស្សានរដូវ';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'សរសáŸážšážŸáŸ†áž”áž»ážáŸ’ážšážáž¶áž˜áž”ែប HTML';
$labels['htmlonreply'] = 'ឆ្លើយážáž”សំបុážáŸ’ážšážáž¶áž˜áž”ែប HTML';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'áž ážáŸ’ážáž›áŸážáž¶ážáž¶áž˜áž”ែប HTML';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'បង្ហាញប្រអប់សំរាប់មើលសំបុážáŸ’ážš';
$labels['skin'] = 'ការរចនាទំពáŸážš';
$labels['logoutclear'] = 'សំអាážáž’ុងសំរាមពáŸáž›áž–áž·áž“áž·ážáŸ’យចáŸáž‰';
@@ -424,14 +305,12 @@ $labels['readwhendeleted'] = 'កំណážáŸ‹ážŸáŸ†áž”áž»ážáŸ’ážšážáž¶áž”ាáž
$labels['flagfordeletion'] = 'កំណážáŸ‹ážŸáž‰áŸ’ញាផ្កាយអោយសំបុážáŸ’ážšážáž¶áž”ានលុបដោយមិនចាំបាច់លុបជាក់ស្ážáŸ‚áž„';
$labels['skipdeleted'] = 'មិនបង្ហាញសំបុážáŸ’រដែលបានលុប';
$labels['deletealways'] = 'លុបសំបុážáŸ’រចោលប្រសិនជាមិនអាចផ្ទáŸážŸáŸ†áž”áž»ážáŸ’រនោះទៅធុងសំរាមបាន';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
$labels['showremoteimages'] = 'បង្ហាញរូបភាពដែលគáŸáž•áŸ’ញើមក';
$labels['fromknownsenders'] = 'ពីអ្នកផ្ញើដែលស្គាល់';
$labels['always'] = 'គ្រប់ពáŸáž›';
$labels['showinlineimages'] = 'បង្ហាញរូបភាពនៅក្រោមអážáŸ’ážáž”ទសំបុážáŸ’ážš';
$labels['autosavedraft'] = 'រក្សាទុកសំបុážáŸ’រពង្រៀងដោយស្វáŸáž™áž”្រវážáŸ’ážáž·';
$labels['everynminutes'] = 'រៀងរាល់ $n នាទី';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'មិនដែល';
$labels['immediately'] = 'ភ្លាមៗ';
$labels['messagesdisplaying'] = 'កំពុងបង្ហាញសំបុážáŸ’ážš';
@@ -445,15 +324,12 @@ $labels['advancedoptions'] = 'ការកំណážáŸ‹áž–ឹស្ážáž¶ážš';
$labels['focusonnewmessage'] = 'ផ្ážáŸ„ážáž›áž¾ážœáž¸áž“ដូវដែលកំពុងសរសáŸážšážŸáŸ†áž”áž»ážáŸ’ážšážáŸ’មី';
$labels['checkallfolders'] = 'áž–áž·áž“áž·ážáŸ’យសំបុážáŸ’ážšážáŸ’មីនៅគ្រប់ážážáž‘ាំងអស់';
$labels['displaynext'] = 'បន្ទាប់ពីសំបុážáŸ’ážšážáŸ’រូវបានលុប​ឬផ្ទáŸážšáž”ង្ហាញសំបុážáŸ’របន្ទាប់';
-$labels['defaultfont'] = 'Default font of HTML message';
$labels['mainoptions'] = 'ជំរើសដែលជាគោល';
-$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'ផ្នែក';
$labels['maintenance'] = 'ការážáŸ‚រក្សា';
$labels['newmessage'] = 'សំបុážáŸ’ážšážáŸ’មី';
$labels['signatureoptions'] = 'កំណážáŸ‹áž ážáŸ’ážáž›áŸážáž¶';
$labels['whenreplying'] = 'នៅពáŸáž›áž€áŸ†áž–ុងឆ្លើយážáž”';
-$labels['replyempty'] = 'do not quote the original message';
$labels['replytopposting'] = 'ចាប់ផ្ážáž¾áž˜â€‹ážŸážšážŸáŸážšâ€‹áž–ី​លើ​សំបុážáŸ’រ​ដើម';
$labels['replybottomposting'] = 'ចាប់ផ្ážáž¾áž˜ážŸážšážŸáŸážšáž–ីក្រោមសំបុážáŸ’រដើម';
$labels['replyremovesignature'] = 'នៅ​ពáŸáž›â€‹áž†áŸ’លើយ​ážáž”​លុប​ហážáŸ’ážáž›áŸážáž¶â€‹áž…áŸáž‰â€‹áž–ីសំបុážáŸ’ážš';
@@ -466,21 +342,6 @@ $labels['afternseconds'] = 'ក្រោយពី $n វិនាទី';
$labels['reqmdn'] = 'ក្រោយពី $n វិនាទី';
$labels['reqdsn'] = 'ក្រោយពី $n វិនាទី';
$labels['replysamefolder'] = 'ក្រោយពី $n វិនាទី';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'ážáž';
$labels['folders'] = 'ážážáž‘ាំងអស់';
$labels['foldername'] = 'ឈ្មោះážáž';
@@ -497,30 +358,13 @@ $labels['location'] = 'ទីកន្លែង';
$labels['info'] = 'áž–áŸážáŸŒáž˜áž¶áž“';
$labels['getfoldersize'] = 'ទំហំážáž';
$labels['changesubscription'] = 'ផ្លាស់ប្ážáž¼ážšáž€áž¶ážšáž‡áž¶ážœ';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'ážáŸ†ážšáŸ€áž”ážáž¶áž˜';
$labels['sortasc'] = 'ážáŸ†ážšáŸ€áž”ážáž¶áž˜áž›áŸ†ážŠáž¶áž”់ចុះ';
$labels['sortdesc'] = 'ážáŸ†ážšáŸ€áž”ážáž¶áž˜áž›áŸ†ážŠáž¶áž”់ឡើង';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'យូនីកូដ';
$labels['english'] = 'ភាសាអង់គ្លáŸážŸ';
$labels['westerneuropean'] = 'អឺរ៉ុបážáž¶áž„លិច';
@@ -539,5 +383,4 @@ $labels['vietnamese'] = 'ភាសាវៀážážŽáž¶áž˜';
$labels['japanese'] = 'ភាសាជប៉ុន';
$labels['korean'] = 'ភាសាកូរ៉áŸ';
$labels['chinese'] = 'ភាសាចិន';
-
?>
diff --git a/program/localization/km_KH/messages.inc b/program/localization/km_KH/messages.inc
index 35bb10244..a2c4bab20 100644
--- a/program/localization/km_KH/messages.inc
+++ b/program/localization/km_KH/messages.inc
@@ -15,30 +15,20 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'ការពិនិážáŸ’យចូលមិនបានសំរáŸáž…ព្រោះមានបញ្ហាកើážáž¡áž¾áž„';
$messages['cookiesdisabled'] = 'កម្មវិធីមើលគáŸáž áž‘ំពáŸážšáž“áŸáŸ‡áž˜áž·áž“ទទួលយកCookies';
$messages['sessionerror'] = 'Session មិនážáŸ’រឹមážáŸ’រូវ ឬហួសកំណážáŸ‹';
$messages['storageerror'] = 'មិនអាចភ្ជាប់ទៅកាន់ម៉ាស៊ីនIMAP';
$messages['servererror'] = 'មានបញ្ហានៅម៉ាស៊ីនមáŸ';
$messages['servererrormsg'] = 'បញ្ហា: $msg';
-$messages['dberror'] = 'Database Error!';
-$messages['requesttimedout'] = 'Request timed out';
$messages['errorreadonly'] = 'មិនអាចប្រážáž·áž”ážáŸ’ážáž·áž”ានពីព្រោះážážáž“áŸáŸ‡ážáŸ’រូវបានគáŸáž€áŸ†ážŽážáŸ‹ážŸáŸ†ážšáž¶áž”់ážáŸ‚មើល';
$messages['errornoperm'] = 'មិនអាចប្រážáž·áž”ážáŸ’ážáž·áž”ានពីព្រោះមិនមានសិទ្ទគ្រប់គ្រាន់';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'មិនអាចរក្សាទុកទិន្ននáŸáž™áž”ានពីព្រោះមានបញ្ហានៅពáŸáž›áž”ញ្ជូនទិន្ននáŸáž™';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'ពុំមានសំបុážáŸ’រក្នុងប្រអប់សំបុážáŸ’ážšáž“áŸáŸ‡áž‘áŸ';
$messages['loggedout'] = 'អ្នកបានពិនិážáŸ’យចáŸáž‰ážŠáŸ„យជោគជáŸáž™áŸ”';
$messages['mailboxempty'] = 'ប្រអប់សំបុážáŸ’ážšáž‘áž‘áŸ';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'កំពុងដំណើរការ...';
$messages['uploading'] = 'កំពុងបញ្ជូនឯកសារ...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'កំពុងបើកឯកសារ...';
$messages['checkingmail'] = 'កំពុងស្វែងរកមើលសំបុážáŸ’ážšážáŸ’មីáŸ...';
$messages['sendingmessage'] = 'កំពុងផ្ញើសំបុážáŸ’ážš...';
@@ -48,27 +38,20 @@ $messages['messagesaved'] = 'សំបុážáŸ’ážšážáŸ’រូវបានរក
$messages['successfullysaved'] = 'រក្សាទុកដោយជោគជáŸáž™';
$messages['addedsuccessfully'] = 'អាសយដ្ឋានážáŸ’រូវបានរក្សាទុកដោយជោគជáŸáž™';
$messages['contactexists'] = 'áž–áŸážáŸŒáž˜áž¶áž“ទាក់ទងដែលមានអ៊ីមែលនáŸáŸ‡áž˜áž¶áž“ក្នុងសៀវភៅអាសយដ្ឋានរួចហើយ';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'រូបភាពដែលមានក្នុងសំបុážáŸ’ážšáž“áŸáŸ‡ážáŸ’រូវបានបិទដើម្បីរក្សាសុវážáŸ’ážáž—ាព';
$messages['encryptedmessage'] = 'លោកអ្នកមិនអាចមើលសំបុážáŸ’ážšáž“áŸáŸ‡áž”ានទáŸáž–ីព្រោះសំបុážáŸ’ážšáž“áŸáŸ‡áž‡áž¶ážŸáŸ†áž”áž»ážáŸ’រសំងាážáŸ‹';
$messages['nocontactsfound'] = 'ពុំមានអាសយដ្ឋានទាក់ទងទáŸ';
$messages['contactnotfound'] = 'អាសយដ្ឋានទាក់ទងដែលលោកអ្នកចង់រកពុំមានឡើយ';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'មិនអាចផ្ញើសំបុážáŸ’របាន';
$messages['senttooquickly'] = 'សូមរងចាំ $sec វិនាទីមុននឹងផ្ញើសំបុážáŸ’ážšáž“áŸáŸ‡';
-$messages['errorsavingsent'] = 'មានបញ្ហាកើážáž¡áž¾áž„នៅពáŸáž›áž€áŸ†áž–ុងរក្សាទុកសំបុážáŸ’រដែលបានផ្ញើរួច';
-$messages['errorsaving'] = 'មានបញ្ហាកើážáž¡áž¾áž„នៅពáŸáž›áž€áŸ†áž–ុងរក្សាសំបុážáŸ’រទុក';
$messages['errormoving'] = 'មិនអាចផ្ទáŸážšážŸáŸ†áž”áž»ážáŸ’របាន';
$messages['errorcopying'] = 'មិនអាចចំលងសំបុážáŸ’របាន';
$messages['errordeleting'] = 'មិនអាចលុបសំបុážáŸ’រចោលបាន';
$messages['errormarking'] = 'មិនអាចកំណážáŸ‹áž…ំណាំលើសំបុážáŸ’របាន';
$messages['deletecontactconfirm'] = 'ážáž¾áž›áŸ„កអ្នកពិážáž‡áž¶áž…ង់លុបពáŸážáŸŒáž˜áž¶áž“ទំនាក់ទំនងនáŸáŸ‡áž˜áŸ‚áž“áž‘áŸ?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'ážáž¾áž›áŸ„កអ្នកពិážáž‡áž¶áž…ង់លុបសំបុážáŸ’ážšáž“áŸáŸ‡áž˜áŸ‚áž“áž‘áŸ?';
$messages['deletefolderconfirm'] = 'ážáž¾áž›áŸ„កអ្នកពិážáž‡áž¶áž…ង់លុបážážáž“áŸáŸ‡áž˜áŸ‚áž“áž‘áŸ?';
$messages['purgefolderconfirm'] = 'ážáž¾áž›áŸ„កអ្នកពិážáž‡áž¶áž…ង់លុបសំបុážáŸ’រទាំងអស់នៅក្នុងážážáž“áŸáŸ‡áž˜áŸ‚áž“áž‘áŸ?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
$messages['folderdeleting'] = 'កំពុងលុបážážážŸáŸ†ážšáž¶áž”់ទុកឯកសារ...';
$messages['foldermoving'] = 'កំពុងផ្ទáŸážšážážážŸáŸ†ážšáž¶áž”់ទុកឯកសារ...';
$messages['foldersubscribing'] = 'កំពុងកំណážáŸ‹áž”្រើážážážŸáŸ†ážšáž¶áž”់ទុកឯកសារ...';
@@ -84,9 +67,7 @@ $messages['nobodywarning'] = 'ážáž¾áž›áŸ„កអ្នកចង់ផ្ញើáž
$messages['notsentwarning'] = 'សំបុážáŸ’ážšáž“áŸáŸ‡áž˜áž·áž“ទាន់បានផ្ញើទáŸáŸ” ážáž¾áž›áŸ„កអ្នកចង់លុបចោលទáŸ?';
$messages['noldapserver'] = 'សូមកំណážáŸ‹áž˜áŸ‰áž¶ážŸáŸŠáž¸áž“ LDAPដើម្បីស្វែងរក';
$messages['nosearchname'] = 'សូមបំពáŸáž‰ážˆáŸ’មោះទំនាក់ទំនង ឬអាសយដ្ឋានអ៊ីមែល';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = 'រកឃើញសំបុážáŸ’រចំនួន $nr';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'រកមិនឃើញអ្វីទាំងអស់';
$messages['searching'] = 'កំពុងស្វែងរក...';
$messages['checking'] = 'កំពុងពិនិážáŸ’យរក...';
@@ -101,40 +82,24 @@ $messages['converting'] = 'កំពុងលុបការរចនាចោáž
$messages['messageopenerror'] = 'មិនអាចទាញយកសំបុážáŸ’រពីម៉ាស៊ីនមáŸáž”ានទáŸ';
$messages['fileuploaderror'] = 'មិនអាចបញ្ជូលភ្ជាប់ឯកសារ';
$messages['filesizeerror'] = 'ទំហំឯកសារážáŸ’រូវបញ្ជូនលើសចំណុះទំហំធំបំផុážáž‚ឺ $size';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'លោកអ្នកមានសិទ្ធážáŸ’រឹមážáŸ‚មើលប្រភពនៃអាសយដ្ឋាននáŸáŸ‡';
$messages['errorsavingcontact'] = 'មិនអាចរក្សាអាសយដ្ឋានបានទáŸ';
$messages['movingmessage'] = 'កំពុកផ្ážáŸážšážŸáŸ†áž”áž»ážáŸ’ážš...';
$messages['copyingmessage'] = 'កំពុងចំលងសំបុážáŸ’ážš...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'កំពុងលុបសំបុážáŸ’ážš...';
$messages['markingmessage'] = 'កំពុងកំណážáŸ‹ážŸáŸ†áž‚ាល់សំបុážáŸ’ážš...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'បានបញ្ជូនអážáŸ’ážáž”ទបញ្ជាក់ážáž¶áž”ានអានបានសំរáŸáž…';
$messages['errorsendingreceipt'] = 'មិនអាចបញ្ជូនអážáŸ’ážáž”ទបញ្ជាក់ážáž¶áž”ានអាន áž‘áŸ';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'លោកអ្នកមិនអាចលុបអážáŸ’ážážŸáž‰áŸ’ញាណនáŸáŸ‡áž‘áŸáž–្រោះវានៅសល់ចុងក្រោយគáŸ';
$messages['forbiddencharacter'] = 'ឈ្មោះážážáž“áŸáŸ‡áž˜áž¶áž“អក្សរដែលážáŸ’រូវហាមឃាážáŸ‹';
$messages['selectimportfile'] = 'សូមជ្រើសរើសឯកសារដើម្បីបញ្ជូនភ្ជាប់';
$messages['addresswriterror'] = 'សៀវភៅអាសយដ្ឋាននោះមិនអាចសរសáŸážšáž…ូលបានទáŸ';
$messages['contactaddedtogroup'] = 'បានដាក់ពážáŸŒáž˜áž¶áž“ទំនាក់ទំនងចូលក្នុងក្រុមនáŸáŸ‡ážŠáŸ„យជោគជáŸáž™';
$messages['contactremovedfromgroup'] = 'បានលុបពážáŸŒáž˜áž¶áž“ទំនាក់ទំនងចáŸáž‰áž–ីក្រុមនáŸáŸ‡ážŠáŸ„យជោគជáŸáž™';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'សូមមáŸážáŸ’ážáž¶ážšáž„់ចាំកំពុងទាញទិន្ននáŸáž™áž…ូល ...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
$messages['importconfirm'] = '<b>áž–áŸážáŸŒáž˜áž¶áž“ទំនាក់ទំនង $insertedបានបញ្ចូលដោយជោគជáŸáž™,ហើយបានរំលងចោលពážáŸŒáž˜áž¶áž“ដែលមានស្រាប់$skipped </b>:<p><em>$names</em></p>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'ប្រážáž·áŸ’ážáž”ážáŸ’ážáž·áž€áž¶ážšážáŸ’រូវបានគáŸáž áž¶áž˜ážƒáž¶ážáŸ‹!';
$messages['nofromaddress'] = 'ážáŸ’វះអាសយដ្ឋានអ៊ីមែលក្នុងអážáŸ’ážážŸáž‰áŸ’ណាណមួយនáŸáŸ‡';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
$messages['smtpconnerror'] = 'SMTP Error ($code):មិនអាចភ្ជាប់ទៅម៉ាស៊ីនមáŸ';
$messages['smtpautherror'] = 'SMTP Error ($code):áž–áŸážáŸŒáž˜áž¶áž“គនីយមិនážáŸ’រឹមážáŸ’រូវ';
$messages['smtpfromerror'] = 'SMTP Error ($code):មិនអាចកំនážáŸ‹áž¢áŸ’នកផ្ញើ "$from" ($msg)';
@@ -144,33 +109,19 @@ $messages['smtperror'] = 'SMTP Error: $msg';
$messages['emailformaterror'] = 'អាសយដ្ឋានអ៊ីមែលមិនážáŸ’រឹមážáŸ’រូវទáŸ:$email';
$messages['toomanyrecipients'] = 'ចំនួនអ្នកទទួលច្រើនលើសកំនážáŸ‹!សូមមáŸážáŸ’ážáž¶áž›áž»áž”ចោលរហូážážŠáž›áŸ‹ $max។';
$messages['maxgroupmembersreached'] = 'ចំនួនក្រុមលើសកំនážáŸ‹áž áž¾áž™áž…ំនួនច្រើនបំផុážáž‚ឺ $max';
-$messages['internalerror'] = 'មានបញ្ហាážáž¶áž„ម៉ាស៊ីនម០។សូមព្យាយាមម្ážáž„ទៀáž!';
$messages['contactdelerror'] = 'មិនអាចលុបអាសយដ្ឋានទំនាក់ទំនង';
$messages['contactdeleted'] = 'អាសយដ្ឋានទំនាក់ទំនងážáŸ’រូវបានលុបដោយជោគជáŸáž™';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
$messages['groupdeleted'] = 'លុបក្រុមបានដោយជោគជáŸáž™';
$messages['grouprenamed'] = 'ប្ážáž¼ážšážˆáŸ’មោះក្រុមបានដោយជោគជáŸáž™';
$messages['groupcreated'] = 'បង្កើážáž€áŸ’រុមបានដោយជោគជáŸáž™';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
$messages['messagedeleted'] = 'លុបសំបុážáŸ’របានដោយជោគជáŸáž™';
$messages['messagemoved'] = 'ផ្ទáŸážšážŸáŸ†áž”áž»ážáŸ’របានដោយជោគជáŸáž™';
$messages['messagecopied'] = 'ចំលងសំបុážáŸ’របានដោយជោគជáŸáž™';
$messages['messagemarked'] = 'កំណážáŸ‹ážŸáŸ†áž‚ាល់សំបុážáŸ’របានដោយជោគជáŸáž™';
$messages['autocompletechars'] = 'សូមសរសáŸážšáž¢áž€áŸ’សរយ៉ាងážáž·áž… $minដើម្បីបង្ហាយដោយស្វáŸáž™áž”្រវážáŸ’ážáž·';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
$messages['namecannotbeempty'] = 'សូមសរសáŸážšážˆáŸ’មោះ';
$messages['nametoolong'] = 'ឈ្មោះវែងពáŸáž€';
$messages['folderupdated'] = 'ផ្លាស់ប្ážáž¼ážšážážáž”ានដោយជោគជáŸáž™';
$messages['foldercreated'] = 'បង្កើážážážáž”ានដោយជោគជáŸáž™';
$messages['invalidimageformat'] = 'ប្រភáŸáž‘រូបភាពមិនážáŸ’រឹមážáŸ’រូវ';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/ko_KR/labels.inc b/program/localization/ko_KR/labels.inc
index 60a9275ac..bccd42163 100644
--- a/program/localization/ko_KR/labels.inc
+++ b/program/localization/ko_KR/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = '$productì— ì˜¤ì‹  ê²ƒì„ í™˜ì˜í•©ë‹ˆë‹¤';
$labels['username'] = '사용ìžëª…';
$labels['password'] = '암호';
$labels['server'] = '서버';
$labels['login'] = '로그ì¸';
-
-// taskbar
$labels['logout'] = '로그아웃';
$labels['mail'] = 'ë©”ì¼';
$labels['settings'] = '설정';
$labels['addressbook'] = '주소ë¡';
-
-// mailbox names
$labels['inbox'] = 'ë°›ì€ íŽ¸ì§€í•¨';
$labels['drafts'] = '임시 보관함';
$labels['sent'] = '보낸 편지함';
$labels['trash'] = '휴지통';
$labels['junk'] = '스팸 편지함';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
+$labels['show_real_foldernames'] = '특별 í´ë”ì—ì„œ 실제 ì´ë¦„ ë³´ì´ê¸°';
$labels['subject'] = '제목';
$labels['from'] = '보내는 사람';
$labels['sender'] = '발신ì¸';
@@ -54,13 +44,11 @@ $labels['priority'] = '우선순위';
$labels['organization'] = '기관';
$labels['readstatus'] = 'ì½ìŒ ìƒíƒœ';
$labels['listoptions'] = 'ëª©ë¡ ì˜µì…˜...';
-
$labels['mailboxlist'] = 'í´ë”';
$labels['messagesfromto'] = 'ì´ $countê°œ 중 $from 번째부터 $to ë²ˆì§¸ê¹Œì§€ì˜ ë©”ì‹œì§€';
$labels['threadsfromto'] = 'ì´ $countê°œ 중 $from 번째부터 $to ë²ˆì§¸ê¹Œì§€ì˜ ìŠ¤ë ˆë“œ';
$labels['messagenrof'] = 'ì´ $countê°œ 중 $nr 번째 메시지';
$labels['fromtoshort'] = 'ì´ $countê°œ 중 $from 번째 - $to 번째';
-
$labels['copy'] = '복사';
$labels['move'] = 'ì´ë™';
$labels['moveto'] = 'ì´ë™í•  위치...';
@@ -68,13 +56,9 @@ $labels['download'] = '다운로드';
$labels['open'] = '열기';
$labels['showattachment'] = '보기';
$labels['showanyway'] = 'ê·¸ëž˜ë„ í•­ìƒ ë³´ê¸°';
-
$labels['filename'] = '파ì¼ëª…';
$labels['filesize'] = 'íŒŒì¼ í¬ê¸°';
-
$labels['addtoaddressbook'] = '주소ë¡ì— 추가';
-
-// weekdays short
$labels['sun'] = 'ì¼';
$labels['mon'] = 'ì›”';
$labels['tue'] = 'í™”';
@@ -82,8 +66,6 @@ $labels['wed'] = '수';
$labels['thu'] = '목';
$labels['fri'] = '금';
$labels['sat'] = '토';
-
-// weekdays long
$labels['sunday'] = 'ì¼ìš”ì¼';
$labels['monday'] = '월요ì¼';
$labels['tuesday'] = '화요ì¼';
@@ -91,8 +73,6 @@ $labels['wednesday'] = '수요ì¼';
$labels['thursday'] = '목요ì¼';
$labels['friday'] = '금요ì¼';
$labels['saturday'] = '토요ì¼';
-
-// months short
$labels['jan'] = '1ì›”';
$labels['feb'] = '2ì›”';
$labels['mar'] = '3ì›”';
@@ -105,8 +85,6 @@ $labels['sep'] = '9ì›”';
$labels['oct'] = '10ì›”';
$labels['nov'] = '11ì›”';
$labels['dec'] = '12ì›”';
-
-// months long
$labels['longjan'] = '1ì›”';
$labels['longfeb'] = '2ì›”';
$labels['longmar'] = '3ì›”';
@@ -119,10 +97,7 @@ $labels['longsep'] = '9ì›”';
$labels['longoct'] = '10ì›”';
$labels['longnov'] = '11ì›”';
$labels['longdec'] = '12ì›”';
-
$labels['today'] = '오늘';
-
-// toolbar buttons
$labels['refresh'] = '새로 고침';
$labels['checkmail'] = '새 메시지 확ì¸';
$labels['compose'] = '메시지 작성';
@@ -155,7 +130,6 @@ $labels['moreactions'] = '추가 ë™ìž‘...';
$labels['more'] = 'ë”보기';
$labels['back'] = '뒤로';
$labels['options'] = '옵션';
-
$labels['select'] = 'ì„ íƒ';
$labels['all'] = '모ë‘';
$labels['none'] = 'ì—†ìŒ';
@@ -163,7 +137,7 @@ $labels['currpage'] = '현재 페ì´ì§€';
$labels['unread'] = 'ì½ì§€ ì•ŠìŒ';
$labels['flagged'] = '깃발로 표시ë¨';
$labels['unanswered'] = '답장하지 ì•ŠìŒ';
-$labels['withattachment'] = 'With attachment';
+$labels['withattachment'] = 'ì²¨ë¶€íŒŒì¼ í¬í•¨';
$labels['deleted'] = 'ì‚­ì œë¨';
$labels['undeleted'] = 'ì‚­ì œë˜ì§€ ì•ŠìŒ';
$labels['invert'] = '반전';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'ëª¨ë‘ í™•ìž¥';
$labels['expand-unread'] = 'ì½ì§€ ì•Šì€ ë©”ì‹œì§€ 확장';
$labels['collapse-all'] = 'ëª¨ë‘ ì ‘ê¸°';
$labels['threaded'] = '스레드화ë¨';
-
$labels['autoexpand_threads'] = '메시지 스레드 확장';
$labels['do_expand'] = '모든 스레드';
$labels['expand_only_unread'] = 'ì½ì§€ ì•Šì€ ë©”ì‹œì§€ì—만 ì ìš©';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'ì—´ ëª©ë¡ ë³´ê¸°';
$labels['listsorting'] = 'ì—´ ì •ë ¬';
$labels['listorder'] = '정렬 순서';
$labels['listmode'] = '화면 모드 ëª©ë¡ ë³´ê¸°';
-
$labels['folderactions'] = 'í´ë” 명령';
$labels['compact'] = '간단하게';
$labels['empty'] = '비어 있ìŒ';
-$labels['importmessages'] = 'Import messages';
-
+$labels['importmessages'] = '메시지 가져오기';
$labels['quota'] = 'ë””ìŠ¤í¬ ì‚¬ìš©ëŸ‰';
$labels['unknown'] = 'ì•Œ 수 ì—†ìŒ';
$labels['unlimited'] = '제한 ì—†ìŒ';
-
$labels['quicksearch'] = '빠른 검색';
$labels['resetsearch'] = '검색 재설정';
$labels['searchmod'] = 'ìˆ˜ì •ìž ê²€ìƒ‰';
$labels['msgtext'] = '전체 메시지';
$labels['body'] = '본문';
-$labels['type'] = 'Type';
-
+$labels['type'] = '유형';
+$labels['namex'] = 'ì´ë¦„';
$labels['openinextwin'] = '새 ì°½ì—ì„œ 열기';
$labels['emlsave'] = '다운로드(.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
+$labels['changeformattext'] = '메시지를 í‰ë¬¸ 형ì‹ìœ¼ë¡œ 표시';
+$labels['changeformathtml'] = 'HTML 형ì‹ìœ¼ë¡œ 표시';
$labels['editasnew'] = '새 메시지로 편집';
$labels['send'] = '보내기';
$labels['sendmessage'] = 'ë©”ì¼ ë³´ë‚´ê¸°';
@@ -224,26 +192,22 @@ $labels['returnreceipt'] = '수신 확ì¸';
$labels['dsn'] = '전송 ìƒíƒœ 알림';
$labels['mailreplyintro'] = '$dateì— $senderì´(ê°€) 작성한 ë‚´ìš©:';
$labels['originalmessage'] = 'ì›ë³¸ 메세지';
-
$labels['editidents'] = 'ì‹ ì› íŽ¸ì§‘';
$labels['spellcheck'] = '맞춤법';
$labels['checkspelling'] = '맞춤법 검사하기';
$labels['resumeediting'] = '편집 계ì†í•˜ê¸°';
$labels['revertto'] = 'ëŒì•„가기';
-
$labels['attach'] = '첨부';
$labels['attachments'] = '첨부파ì¼';
$labels['upload'] = '업로드';
$labels['uploadprogress'] = '$percent ($total개 중 $current개)';
$labels['close'] = '닫기';
$labels['messageoptions'] = '메시지 옵션...';
-
$labels['low'] = 'ë‚®ìŒ';
$labels['lowest'] = '가장 ë‚®ìŒ';
$labels['normal'] = '보통';
$labels['high'] = '높ìŒ';
$labels['highest'] = '가장 높ìŒ';
-
$labels['nosubject'] = '(제목 ì—†ìŒ)';
$labels['showimages'] = 'ì´ë¯¸ì§€ 보기';
$labels['alwaysshow'] = '$senderì—ì„œ ìˆ˜ì‹ ëœ ì´ë¯¸ì§€ í•­ìƒ ë³´ê¸°';
@@ -251,25 +215,19 @@ $labels['isdraft'] = 'ì´ê²ƒì€ 작성 ì¤‘ì¸ ë©”ì‹œì§€ìž…ë‹ˆë‹¤.';
$labels['andnmore'] = '$nr ë” ë³´ê¸°...';
$labels['togglemoreheaders'] = '메시지 í—¤ë” ë” ë³´ê¸°';
$labels['togglefullheaders'] = 'ì› ë©”ì‹œì§€ í—¤ë” í‘œì‹œ/숨기기';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'ì¼ë°˜ í…스트';
$labels['savesentmessagein'] = '보낸 메시지를 ë‹¤ìŒ ìœ„ì¹˜ì— ì €ìž¥';
$labels['dontsave'] = '저장하지 ì•ŠìŒ';
$labels['maxuploadsize'] = '최대 허용 íŒŒì¼ í¬ê¸°ëŠ” $size 입니다';
-
$labels['addcc'] = '참조 추가';
$labels['addbcc'] = 'ìˆ¨ì€ ì°¸ì¡° 추가';
$labels['addreplyto'] = '회신 주소 추가';
$labels['addfollowupto'] = '전달 추가';
-
-// mdn
$labels['mdnrequest'] = 'ì´ ë©”ì‹œì§€ë¥¼ 보낸 ì‚¬ëžŒì´ ì‚¬ìš©ìžê°€ ì´ ë©”ì‹œì§€ë¥¼ ì½ì—ˆì„ ë•Œ ì½ìŒ 확ì¸ì„ 요청했습니다. 보낸 사람ì—게 알리시겠습니까?';
$labels['receiptread'] = '수신 í™•ì¸ (ì½ìŒ)';
$labels['yourmessage'] = 'ì´ê²ƒì€ 사용ìžì˜ ë©”ì‹œì§€ì— ëŒ€í•œ 수신 확ì¸ìž…니다.';
$labels['receiptnote'] = '참고: ì´ ìˆ˜ì‹  확ì¸ì€ ì´ ë©”ì‹œì§€ê°€ 받는 ì‚¬ëžŒì˜ ì»´í“¨í„°ì— í‘œì‹œë˜ì—ˆë‹¤ëŠ” ê²ƒë§Œì„ ì˜ë¯¸í•©ë‹ˆë‹¤. 받는 ì‚¬ëžŒì´ ë©”ì‹œì§€ ë‚´ìš©ì„ ì½ê±°ë‚˜ ì´í•´í–ˆë‹¤ëŠ” ë³´ìž¥ì€ ì—†ìŠµë‹ˆë‹¤.';
-
-// address boook
$labels['name'] = '표시명';
$labels['firstname'] = 'ì´ë¦„';
$labels['surname'] = '성';
@@ -304,7 +262,6 @@ $labels['search'] = '검색';
$labels['advsearch'] = '고급 검색';
$labels['advanced'] = '고급';
$labels['other'] = '기타';
-
$labels['typehome'] = 'ìžíƒ';
$labels['typework'] = 'ì§ìž¥';
$labels['typeother'] = '기타';
@@ -319,14 +276,12 @@ $labels['typeassistant'] = '비서';
$labels['typehomepage'] = '홈페ì´ì§€';
$labels['typeblog'] = '블로그';
$labels['typeprofile'] = 'ìžê¸°ì†Œê°œ';
-
$labels['addfield'] = '필드 추가..';
$labels['addcontact'] = '새 ì—°ë½ì²˜ 추가';
$labels['editcontact'] = 'ì—°ë½ì²˜ 편집';
$labels['contacts'] = 'ì—°ë½ì²˜';
$labels['contactproperties'] = 'ì—°ë½ì²˜ ì†ì„±';
$labels['personalinfo'] = 'ê°œì¸ ì •ë³´';
-
$labels['edit'] = '편집';
$labels['cancel'] = '취소';
$labels['save'] = '저장';
@@ -335,7 +290,6 @@ $labels['rename'] = 'ì´ë¦„ 변경';
$labels['addphoto'] = '추가';
$labels['replacephoto'] = '바꾸기';
$labels['uploadphoto'] = '사진 업로드';
-
$labels['newcontact'] = '새 ì—°ë½ì²˜ ì¹´ë“œ ìƒì„±';
$labels['deletecontact'] = 'ì„ íƒí•œ ì—°ë½ì²˜ ì‚­ì œ';
$labels['composeto'] = 'ë©”ì¼ ìž‘ì„± 대ìƒ';
@@ -349,42 +303,36 @@ $labels['newcontactgroup'] = '새 ì—°ë½ì²˜ 그룹 ìƒì„±';
$labels['grouprename'] = '그룹명 변경';
$labels['groupdelete'] = '그룹 삭제';
$labels['groupremoveselected'] = '그룹ì—ì„œ ì„ íƒí•œ ì—°ë½ì²˜ 제거';
-
$labels['previouspage'] = 'ì´ì „ 페ì´ì§€ 보기';
$labels['firstpage'] = 'ì²˜ìŒ íŽ˜ì´ì§€ 보기';
$labels['nextpage'] = 'ë‹¤ìŒ íŽ˜ì´ì§€ 보기';
$labels['lastpage'] = '마지막 페ì´ì§€ 보기';
-
$labels['group'] = '그룹';
$labels['groups'] = '그룹';
-$labels['listgroup'] = 'List group members';
+$labels['listgroup'] = '그룹 êµ¬ì„±ì› ëª©ë¡ ë³´ê¸°';
$labels['personaladrbook'] = 'ê°œì¸ ì£¼ì†Œ';
-
$labels['searchsave'] = '검색 저장';
$labels['searchdelete'] = '검색 삭제';
-
$labels['import'] = '가져오기';
$labels['importcontacts'] = 'ì—°ë½ì²˜ 가져오기';
$labels['importfromfile'] = '파ì¼ì—ì„œ 가져오기:';
-$labels['importtarget'] = '새 ì—°ë½ì²˜ë¥¼ 주소ë¡ì— 추가:';
+$labels['importtarget'] = 'ì—°ë½ì²˜ 추가 위치';
$labels['importreplace'] = 'ì „ì²´ 주소ë¡ì„ 바꾸기';
+$labels['importgroups'] = '그룹 할당 가져오기';
+$labels['importgroupsall'] = 'ì „ì²´ (í•„ìš”ì— ë”°ë¼ ê·¸ë£¹ ìƒì„±)';
+$labels['importgroupsexisting'] = '기존 그룹ì—만 해당';
$labels['importdesc'] = '기존 주소ë¡ì—ì„œ ì—°ë½ì²˜ë¥¼ 가져올 수 있습니다.<br/> 현재 <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> ë°ì´í„° 형ì‹ì—ì„œ 주소 가져오기를 지ì›í•©ë‹ˆë‹¤.\'';
$labels['done'] = '완료';
-
-// settings
$labels['settingsfor'] = '설정';
$labels['about'] = 'ì •ë³´...';
$labels['preferences'] = '환경설정';
$labels['userpreferences'] = 'ì‚¬ìš©ìž í™˜ê²½ì„¤ì •';
$labels['editpreferences'] = 'ì‚¬ìš©ìž í™˜ê²½ì„¤ì • 편집';
-
$labels['identities'] = 'ì‹ ì›';
$labels['manageidentities'] = 'ì´ ê³„ì •ì˜ ì‹ ì› ê´€ë¦¬';
$labels['newidentity'] = '새 ì‹ ì›';
-
$labels['newitem'] = '새 항목';
$labels['edititem'] = '항목 편집';
-
$labels['preferhtml'] = 'HTML 표시';
$labels['defaultcharset'] = '기본 ì¸ì½”딩';
$labels['htmlmessage'] = 'HTML 메시지';
@@ -406,7 +354,7 @@ $labels['htmleditor'] = 'HTML 메시지 작성';
$labels['htmlonreply'] = 'HTML 메시지 회신 시';
$labels['htmlonreplyandforward'] = '전달 ë˜ëŠ” HTML 메시지 회신 ì‹œ';
$labels['htmlsignature'] = 'HTML 서명';
-$labels['showemail'] = 'Show email address with display name';
+$labels['showemail'] = 'ì´ë©”ì¼ ì£¼ì†Œë¥¼ 표시 ì´ë¦„ê³¼ 함께 보기';
$labels['previewpane'] = '미리보기 창 보기';
$labels['skin'] = 'ì¸í„°íŽ˜ì´ìŠ¤ 스킨';
$labels['logoutclear'] = '로그아웃할 때 휴지통 비우기';
@@ -476,11 +424,10 @@ $labels['spellcheckignorenums'] = '숫ìžê°€ í¬í•¨ëœ 단어 무시';
$labels['spellcheckignorecaps'] = 'ëª¨ë‘ ëŒ€ë¬¸ìžë¡œ í‘œê¸°ëœ ë‹¨ì–´ 무시';
$labels['addtodict'] = 'ì‚¬ì „ì— ì¶”ê°€';
$labels['mailtoprotohandler'] = 'mailto: ë§í¬ì˜ 프로토콜 ì²˜ë¦¬ìž ë“±ë¡';
-$labels['standardwindows'] = 'Handle popups as standard windows';
+$labels['standardwindows'] = 'íŒì—…ì„ ì¼ë°˜ ì°½ê°™ì´ ì·¨ê¸‰';
$labels['forwardmode'] = '메시지 전달';
$labels['inline'] = '본문 내용으로';
$labels['asattachment'] = '첨부파ì¼ë¡œ';
-
$labels['folder'] = 'í´ë”';
$labels['folders'] = 'í´ë”';
$labels['foldername'] = 'í´ë”명';
@@ -501,26 +448,20 @@ $labels['foldertype'] = 'í´ë” 유형';
$labels['personalfolder'] = 'ê°œì¸ í´ë”';
$labels['otherfolder'] = '다른 사용ìžì˜ í´ë”';
$labels['sharedfolder'] = '공유 í´ë”';
-
$labels['sortby'] = 'ì •ë ¬ ë°©ì‹';
$labels['sortasc'] = '오름차순으로 정렬';
$labels['sortdesc'] = '내림차순으로 정렬';
$labels['undo'] = '실행 취소';
-
$labels['installedplugins'] = 'ì„¤ì¹˜ëœ í”ŒëŸ¬ê·¸ì¸';
$labels['plugin'] = '플러그ì¸';
$labels['version'] = '버전';
$labels['source'] = '소스';
$labels['license'] = 'ë¼ì´ì„ ìŠ¤';
$labels['support'] = 'ì§€ì› ìš”ì²­';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = '유니코드';
$labels['english'] = 'ì˜ì–´';
$labels['westerneuropean'] = '서유럽어';
@@ -539,5 +480,4 @@ $labels['vietnamese'] = '베트남어';
$labels['japanese'] = 'ì¼ë³¸ì–´';
$labels['korean'] = '한국어';
$labels['chinese'] = '중국어';
-
?>
diff --git a/program/localization/ko_KR/messages.inc b/program/localization/ko_KR/messages.inc
index ace6dc8d7..f6f274c43 100644
--- a/program/localization/ko_KR/messages.inc
+++ b/program/localization/ko_KR/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = '오류 ë°œìƒ!';
$messages['loginfailed'] = '로그ì¸ì´ 실패하였습니다.';
$messages['cookiesdisabled'] = '브ë¼ìš°ì €ê°€ 쿠키를 지ì›í•˜ì§€ 않습니다.';
@@ -56,8 +54,6 @@ $messages['contactnotfound'] = '요청한 ì—°ë½ì²˜ë¥¼ ì°¾ì„ ìˆ˜ 없었습니ë‹
$messages['contactsearchonly'] = 'ì—°ë½ì²˜ë¥¼ 찾기 위해 ì¼ë¶€ 검색용어를 입력하세요.';
$messages['sendingfailed'] = '메시지 보내기를 실패하였ìŒ.';
$messages['senttooquickly'] = 'ì´ ë©”ì‹œì§€ë¥¼ 보내기 ì „ì— $secì´ˆ ë™ì•ˆ 기다리세요.';
-$messages['errorsavingsent'] = '보낸 메시지를 저장하는 ë™ì•ˆ 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤.';
-$messages['errorsaving'] = '저장 중 오류가 ë°œìƒí–ˆìŠµë‹ˆë‹¤.';
$messages['errormoving'] = '메시지를 ì´ë™í•  수 없었ìŒ.';
$messages['errorcopying'] = '메시지를 복사할 수 없었ìŒ.';
$messages['errordeleting'] = '메시지를 삭제할 수 없었ìŒ.';
@@ -101,16 +97,16 @@ $messages['converting'] = 'ì„œì‹ ì„¤ì • ì‚­ì œ 중...';
$messages['messageopenerror'] = '서버ì—ì„œ 메시지를 불러올 수 ì—†ìŒ.';
$messages['fileuploaderror'] = 'íŒŒì¼ ì—…ë¡œë“œë¥¼ 실패함.';
$messages['filesizeerror'] = 'ì—…ë¡œë“œëœ íŒŒì¼ì´ 최대 í¬ê¸°ì¸ $size를 초과하였습니다.';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
+$messages['copysuccess'] = '$nrê°œì˜ ì—°ë½ì²˜ë¥¼ 성공ì ìœ¼ë¡œ 복사함';
+$messages['movesuccess'] = '$nrê°œì˜ ì—°ë½ì²˜ë¥¼ 성공ì ìœ¼ë¡œ ì´ë™í•¨';
+$messages['copyerror'] = 'ì „ì²´ ì—°ë½ì²˜ë¥¼ 복사할 수 없없ìŒ';
+$messages['moveerror'] = 'ì „ì²´ ì—°ë½ì²˜ë¥¼ ì´ë™í•  수 없없ìŒ';
$messages['sourceisreadonly'] = 'ì´ ì£¼ì†Œì˜ ì†ŒìŠ¤ëŠ” ì½ê¸° 전용입니다.';
$messages['errorsavingcontact'] = 'ì—°ë½ì²˜ì˜ 주소를 저장할 수 ì—†ìŒ.';
$messages['movingmessage'] = '메시지를 ì´ë™í•˜ëŠ” 중...';
$messages['copyingmessage'] = '메시지 복사하는 중...';
$messages['copyingcontact'] = 'ì—°ë½ì²˜ 복사하는 중...';
-$messages['movingcontact'] = 'Moving contact(s)...';
+$messages['movingcontact'] = 'ì—°ë½ì²˜ ì´ë™ 중...';
$messages['deletingmessage'] = '메시지 삭제하는 중...';
$messages['markingmessage'] = 'ë©”ì‹œì§€ì— í‘œì‹œí•˜ëŠ” 중...';
$messages['addingmember'] = 'ê·¸ë£¹ì— ì—°ë½ì²˜ë¥¼ 추가하는 중...';
@@ -129,8 +125,8 @@ $messages['importwait'] = '가져오는 중, 기다려주시기 ë°”ëžë‹ˆë‹¤...'
$messages['importformaterror'] = '가져오기를 실패함! ì—…ë¡œë“œëœ íŒŒì¼ì€ 유효하지 ì•Šì€ ê°€ì ¸ì˜¤ê¸° ë°ì´í„° 파ì¼ìž…니다.';
$messages['importconfirm'] = '<b>$inserted ì—°ë½ì²˜ë¥¼ 성공ì ìœ¼ë¡œ 가져옴<b>';
$messages['importconfirmskipped'] = '<b>기존 ê¸°ìž¬ì‚¬í•­ì¸ $skippedì„(를) 건너뜀</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
+$messages['importmessagesuccess'] = '$nrê°œì˜ ë©”ì‹œì§€ë¥¼ 성공ì ìœ¼ë¡œ 가져옴';
+$messages['importmessageerror'] = '가져오기 실패! ì—…ë¡œë“œëœ íŒŒì¼ì€ 유효하지 ì•Šì€ ë©”ì‹œì§€ ë˜ëŠ” ë©”ì¼í•¨ 파ì¼ìž„';
$messages['opnotpermitted'] = 'ìž‘ì—…ì´ í—ˆê°€ë˜ì§€ ì•ŠìŒ!';
$messages['nofromaddress'] = 'ì„ íƒëœ ì‹ ì›ì— ì´ë©”ì¼ ì£¼ì†Œ ê°€ 누ë½ë¨.';
$messages['editorwarning'] = 'ì¼ë°˜ í…스트 편집기로 바꾸면 모든 í…스트 ì„œì‹ì´ 사ë¼ì§‘니다. 계ì†í•˜ì‹œê² ìŠµë‹ˆê¹Œ?';
@@ -145,7 +141,6 @@ $messages['smtperror'] = 'SMTP 오류: $msg';
$messages['emailformaterror'] = '유효하지 ì•Šì€ ì´ë©”ì¼ ì£¼ì†Œ: $email';
$messages['toomanyrecipients'] = '수신ì¸ì´ 너무 많ìŒ. ìˆ˜ì‹ ì¸ ìˆ˜ë¥¼ $max명으로 줄ì´ì„¸ìš”.';
$messages['maxgroupmembersreached'] = '그룹 구성ì›ì˜ 수가 최대 ì¸ì›ì¸ $maxëª…ì„ ì´ˆê³¼í•©ë‹ˆë‹¤.';
-$messages['internalerror'] = '내부 오류가 ë°œìƒí•¨. ìž¬ì‹œë„ í•´ì£¼ì‹œê¸° ë°”ëžë‹ˆë‹¤.';
$messages['contactdelerror'] = 'ì—°ë½ì²˜ë¥¼ 삭제할 수 ì—†ìŒ.';
$messages['contactdeleted'] = 'ì—°ë½ì²˜ê°€ 성공ì ìœ¼ë¡œ ì‚­ì œë¨.';
$messages['contactrestoreerror'] = 'ì‚­ì œëœ ì—°ë½ì²˜ë¥¼ 복구할 수 ì—†ìŒ.';
@@ -173,5 +168,4 @@ $messages['parentnotwritable'] = 'ì„ íƒí•œ ìƒìœ„ í´ë”ì— í´ë”를 ìƒì„±/ì
$messages['messagetoobig'] = '메시지 ë¶€ë¶„ì´ ì²˜ë¦¬í•˜ê¸°ì—는 너무 í½ë‹ˆë‹¤.';
$messages['attachmentvalidationerror'] = '경고! ì´ ì²¨ë¶€ 파ì¼ì˜ ìœ í˜•ì´ ë©”ì‹œì§€ì—ì„œ ì„ ì–¸ëœ ìœ í˜•ê³¼ ì¼ì¹˜í•˜ì§€ 않기 ë•Œë¬¸ì— ì˜ì‹¬ë©ë‹ˆë‹¤. 발신ì¸ì„ 신뢰할 수 ì—†ì„ ê²½ìš°, 악성 코드를 í¬í•¨í•  ìˆ˜ë„ ìžˆê¸° ë•Œë¬¸ì— ë¸Œë¼ìš°ì €ì—ì„œ 열지 않는 ê²ƒì´ ì¢‹ìŠµë‹ˆë‹¤. <br/><br/><em> 예ìƒí•œ 유형: $expected; ë°œê²¬ëœ ìœ í˜•: $found</ em>';
$messages['noscriptwarning'] = '경고: ì´ ì›¹ ë©”ì¼ ì„œë¹„ìŠ¤ëŠ” ìžë°”스í¬ë¦½íŠ¸ê°€ 필요합니다! ì´ ê¸°ëŠ¥ì„ ì‚¬ìš©í•˜ì‹œë ¤ë©´ ìžë°”스í¬ë¦½íŠ¸ë¥¼ 브ë¼ìš°ì € 설정ì—ì„œ 활성화하시기 ë°”ëžë‹ˆë‹¤.';
-
?>
diff --git a/program/localization/ku/labels.inc b/program/localization/ku/labels.inc
index 6a3c16a5f..c88b52d46 100644
--- a/program/localization/ku/labels.inc
+++ b/program/localization/ku/labels.inc
@@ -15,66 +15,39 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Bixêr hatî $product \'ê';
$labels['username'] = 'Bikarhêner';
$labels['password'] = 'Nasnav';
$labels['server'] = 'Pêşkêşkar';
$labels['login'] = 'Têkevê';
-
-// taskbar
$labels['logout'] = 'Derkeve';
$labels['mail'] = 'E-Peyam';
$labels['settings'] = 'Mîhengên Takekesî';
$labels['addressbook'] = 'Lênûska Navnîşanan';
-
-// mailbox names
$labels['inbox'] = 'Hatî';
$labels['drafts'] = 'Hilanînî';
$labels['sent'] = 'Şandî';
$labels['trash'] = 'Çop';
$labels['junk'] = 'Biikêrnehatî';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Mijar';
$labels['from'] = 'Åžandyar';
-$labels['sender'] = 'Sender';
$labels['to'] = 'Standyar';
$labels['cc'] = 'Kopiya Karbon';
$labels['bcc'] = 'Kopiya karbon a Veşartî';
$labels['replyto'] = 'Navnîşanên Standyar';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Dîrok';
$labels['size'] = 'Mezinahî';
$labels['priority'] = 'Girîngî';
$labels['organization'] = 'Sazî';
-$labels['readstatus'] = 'Read status';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'Peldank';
$labels['messagesfromto'] = 'Peyam $count ên di navbera $from - $to';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = '$nr a peyama $count';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'Kopiya Karbon';
-$labels['move'] = 'Move';
$labels['moveto'] = 'bibe...';
$labels['download'] = 'daxe';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'Navê pelê';
$labels['filesize'] = 'Mezinahiya pelê';
-
$labels['addtoaddressbook'] = 'Têxe lênûska navnîşanan';
-
-// weekdays short
$labels['sun'] = 'YÅŸ';
$labels['mon'] = 'DÅŸ';
$labels['tue'] = 'SÅŸ';
@@ -82,8 +55,6 @@ $labels['wed'] = 'Çş';
$labels['thu'] = 'PÅŸ';
$labels['fri'] = 'ÃŽn';
$labels['sat'] = 'Åže';
-
-// weekdays long
$labels['sunday'] = 'YekÅŸem';
$labels['monday'] = 'DuÅŸem';
$labels['tuesday'] = 'Sêşem';
@@ -91,50 +62,12 @@ $labels['wednesday'] = 'Çarşem';
$labels['thursday'] = 'Pêncşem';
$labels['friday'] = 'ÃŽn';
$labels['saturday'] = 'Şemî';
-
-// months short
-$labels['jan'] = 'Jan';
-$labels['feb'] = 'Feb';
-$labels['mar'] = 'Mar';
-$labels['apr'] = 'Apr';
-$labels['may'] = 'May';
-$labels['jun'] = 'Jun';
-$labels['jul'] = 'Jul';
-$labels['aug'] = 'Aug';
-$labels['sep'] = 'Sep';
-$labels['oct'] = 'Oct';
-$labels['nov'] = 'Nov';
-$labels['dec'] = 'Dec';
-
-// months long
-$labels['longjan'] = 'January';
-$labels['longfeb'] = 'February';
-$labels['longmar'] = 'March';
-$labels['longapr'] = 'April';
-$labels['longmay'] = 'May';
-$labels['longjun'] = 'June';
-$labels['longjul'] = 'July';
-$labels['longaug'] = 'August';
-$labels['longsep'] = 'September';
-$labels['longoct'] = 'October';
-$labels['longnov'] = 'November';
-$labels['longdec'] = 'December';
-
$labels['today'] = 'ÃŽro';
-
-// toolbar buttons
-$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'Li peyamên nû venihêre';
$labels['compose'] = 'Peyamekê biafirîne';
$labels['writenewmessage'] = 'Peyameke nû biafirîne';
-$labels['reply'] = 'Reply';
$labels['replytomessage'] = 'Bersivê bide peyamê';
$labels['replytoallmessage'] = 'Bersivê ji bo hemû kesên ku ev peyan standine bişîne';
-$labels['replyall'] = 'Reply all';
-$labels['replylist'] = 'Reply list';
-$labels['forward'] = 'Forward';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'Bersivê bide peyamê';
$labels['deletemessage'] = 'Peyamê jê bibe';
$labels['movemessagetotrash'] = 'Peyamê dake çopê';
@@ -145,342 +78,94 @@ $labels['nextmessage'] = 'Peyama di rêzê de nîşan bide';
$labels['lastmessage'] = 'Peyama dawî nîşan bide';
$labels['backtolist'] = 'Vegere lîsteya peyaman';
$labels['viewsource'] = 'Çavkaniyê nîşan bide';
-$labels['mark'] = 'Mark';
$labels['markmessages'] = 'Peyamê nîşan bike';
$labels['markread'] = 'Wekî xwendî';
$labels['markunread'] = 'Wekî nexwendî';
-$labels['markflagged'] = 'As flagged';
-$labels['markunflagged'] = 'As unflagged';
-$labels['moreactions'] = 'More actions...';
-$labels['more'] = 'More';
-$labels['back'] = 'Back';
-$labels['options'] = 'Options';
-
$labels['select'] = 'Hilbijêre';
$labels['all'] = 'Hemû';
$labels['none'] = 'Ne yek jî';
-$labels['currpage'] = 'Current page';
$labels['unread'] = 'Nexwendî';
-$labels['flagged'] = 'Flagged';
-$labels['unanswered'] = 'Unanswered';
-$labels['withattachment'] = 'With attachment';
-$labels['deleted'] = 'Deleted';
-$labels['undeleted'] = 'Not deleted';
-$labels['invert'] = 'Invert';
-$labels['filter'] = 'Filter';
-$labels['list'] = 'List';
-$labels['threads'] = 'Threads';
-$labels['expand-all'] = 'Expand All';
-$labels['expand-unread'] = 'Expand Unread';
-$labels['collapse-all'] = 'Collapse All';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
-$labels['fromto'] = 'From/To';
-$labels['flag'] = 'Flag';
-$labels['attachment'] = 'Attachment';
$labels['nonesort'] = 'Ne yek jî';
-$labels['sentdate'] = 'Sent date';
-$labels['arrival'] = 'Arrival date';
-$labels['asc'] = 'ascending';
-$labels['desc'] = 'descending';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'Kompakt';
$labels['empty'] = 'Vala Bike';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Bikaranîna dîskê';
$labels['unknown'] = 'nayê zanîn';
$labels['unlimited'] = 'bêsînor';
-
$labels['quicksearch'] = 'Lêgerîna bilez';
$labels['resetsearch'] = 'Lêgerînê reset bike';
-$labels['searchmod'] = 'Search modifiers';
-$labels['msgtext'] = 'Entire message';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
-$labels['openinextwin'] = 'Open in new window';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
-$labels['editasnew'] = 'Edit as new';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'Peyamê niha bişîne';
$labels['savemessage'] = 'Hilîne';
$labels['addattachment'] = 'Pelekê lê zêde bike';
$labels['charset'] = 'Curetîp';
$labels['editortype'] = 'Cureyê serastkat';
$labels['returnreceipt'] = 'Rapora Vegerînê';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'Kontrola rastnivîsê';
$labels['resumeediting'] = 'Serastkirinê bidomîne';
$labels['revertto'] = 'Şûnde bîne';
-
-$labels['attach'] = 'Attach';
$labels['attachments'] = 'Pêvek';
$labels['upload'] = 'Bar bike';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'Bigire';
-$labels['messageoptions'] = 'Message options...';
-
$labels['low'] = 'Nizm';
$labels['lowest'] = 'Nizmtirîn';
$labels['normal'] = 'Asayî';
$labels['high'] = 'Bilind';
$labels['highest'] = 'Bilintirîn';
-
$labels['nosubject'] = '(bê mijar)';
$labels['showimages'] = 'Xuyakirina wêneyan';
-$labels['alwaysshow'] = 'Always show images from $sender';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Deqa tazî';
-$labels['savesentmessagein'] = 'Save sent message in';
-$labels['dontsave'] = 'don\'t save';
-$labels['maxuploadsize'] = 'Maximum allowed file size is $size';
-
$labels['addcc'] = 'Cc Têxê';
$labels['addbcc'] = 'Bcc Têxê';
$labels['addreplyto'] = 'Bibersivîne têxê';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Şandyara/ê vê peyamê xwest dema ku te peyam vekir, jê re hişyarî here. Dixwazî jê re hişyarî here?';
$labels['receiptread'] = 'Rapora Vegerînê (xwendî)';
$labels['yourmessage'] = 'Ev rapora vegerîna peyama te ye';
$labels['receiptnote'] = 'Nîşe: Ev dide zanîn ka peyama te şand hat xwendin an na. Naveroka peyamê bi mîgogerî nayê zanîn.';
-
-// address boook
$labels['name'] = 'Navê xuya dibe';
$labels['firstname'] = 'Nav';
$labels['surname'] = 'PaÅŸnav';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'E-Peyam';
-$labels['phone'] = 'Phone';
-$labels['address'] = 'Address';
-$labels['street'] = 'Street';
-$labels['locality'] = 'City';
-$labels['zipcode'] = 'ZIP Code';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
-$labels['typemobile'] = 'Mobile';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'Têkiliyeke nû têxê';
$labels['editcontact'] = 'Têkiliyê serast bike';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
-$labels['personalinfo'] = 'Personal information';
-
$labels['edit'] = 'Serast bike';
$labels['cancel'] = 'Betal';
$labels['save'] = 'Tomar bike';
$labels['delete'] = 'Jê Bibe';
-$labels['rename'] = 'Rename';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'kardeke nû a têkiliyê biafirîne';
$labels['deletecontact'] = 'Têkiliyên hilbijartî jê bibe';
$labels['composeto'] = 'Ji têkiliya hilbijartî re peyam bişîne';
$labels['contactsfromto'] = 'Têkiliyên $count ên di navbera $from - $to de';
$labels['print'] = 'çap bike';
$labels['export'] = 'Derxe';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
-$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'Seta berê nîşan bide';
$labels['firstpage'] = 'Seta yekemîn nîşan bide';
$labels['nextpage'] = 'Seta di rêzê de nîşan bide';
$labels['lastpage'] = 'Seta dawî nîşan bide';
-
-$labels['group'] = 'Group';
$labels['groups'] = 'Kom';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Navnîşanên Takekesî';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
-$labels['import'] = 'Import';
-$labels['importcontacts'] = 'Import contacts';
-$labels['importfromfile'] = 'Import from file:';
-$labels['importtarget'] = 'Add new contacts to address book:';
-$labels['importreplace'] = 'Replace the entire address book';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
-$labels['done'] = 'Done';
-
-// settings
$labels['settingsfor'] = 'Mîheng ji bo';
-$labels['about'] = 'About';
$labels['preferences'] = 'Vebijêrk';
$labels['userpreferences'] = 'Vebijêrkên bikarhêner';
$labels['editpreferences'] = 'Vebijêrkên bikarhêner serast bike';
-
$labels['identities'] = 'Nasname';
$labels['manageidentities'] = 'Nasnameyên vê hesabê serast bike';
$labels['newidentity'] = 'Nasnameya nû';
-
$labels['newitem'] = 'Parçeya nû';
$labels['edititem'] = 'Parçeyê serast bike';
-
$labels['preferhtml'] = 'Wekî HTML nîşan bide';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'Peyama HTML';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'Kurtenivîsa Dîrokê';
$labels['setdefault'] = 'Wekî standard tomar bike';
-$labels['autodetect'] = 'Auto';
$labels['language'] = 'Ziman';
$labels['timezone'] = 'Herêma demê';
$labels['pagesize'] = 'Hejmara peyamên her rûpelekê';
$labels['signature'] = 'Åžanenav';
$labels['dstactive'] = 'Demjimêra havînî';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'Peyameke HTML biafirîne';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'Åžanenava HTML';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Panela berê nîşan bide';
-$labels['skin'] = 'Interface skin';
-$labels['logoutclear'] = 'Clear Trash on logout';
-$labels['logoutcompact'] = 'Compact Inbox on logout';
-$labels['uisettings'] = 'User Interface';
-$labels['serversettings'] = 'Server Settings';
-$labels['mailboxview'] = 'Mailbox View';
-$labels['mdnrequests'] = 'On request for return receipt';
-$labels['askuser'] = 'ask me';
-$labels['autosend'] = 'send receipt';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
-$labels['ignore'] = 'ignore';
-$labels['readwhendeleted'] = 'Mark the message as read on delete';
-$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
-$labels['skipdeleted'] = 'Do not show deleted messages';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
-$labels['always'] = 'always';
-$labels['showinlineimages'] = 'Display attached images below the message';
$labels['autosavedraft'] = 'Xweber hilîne';
-$labels['everynminutes'] = 'every $n minute(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'qet';
-$labels['immediately'] = 'immediately';
-$labels['messagesdisplaying'] = 'Displaying Messages';
-$labels['messagescomposition'] = 'Composing Messages';
-$labels['mimeparamfolding'] = 'Attachment names';
-$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
-$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (other)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
-$labels['advancedoptions'] = 'Advanced options';
-$labels['focusonnewmessage'] = 'Focus browser window on new message';
-$labels['checkallfolders'] = 'Check all folders for new messages';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
-$labels['section'] = 'Section';
-$labels['maintenance'] = 'Maintenance';
-$labels['newmessage'] = 'New Message';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
-$labels['autoaddsignature'] = 'Automatically add signature';
-$labels['newmessageonly'] = 'new message only';
-$labels['replyandforwardonly'] = 'replies and forwards only';
-$labels['insertsignature'] = 'Insert signature';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'Peldank';
$labels['folders'] = 'Peldank';
$labels['foldername'] = 'Navê peldankê';
@@ -489,55 +174,7 @@ $labels['messagecount'] = 'Peyam';
$labels['create'] = 'Biafirîne';
$labels['createfolder'] = 'Peldankeke nû biafirîne';
$labels['managefolders'] = 'Rêveberiya peldankan';
-$labels['specialfolders'] = 'Special Folders';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'Şêweyê rêzkirinê';
$labels['sortasc'] = 'Wekî zêde dibe';
$labels['sortdesc'] = 'Wekî kêm dibe';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
-$labels['B'] = 'B';
-$labels['KB'] = 'KB';
-$labels['MB'] = 'MB';
-$labels['GB'] = 'GB';
-
-// character sets
-$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/ku/messages.inc b/program/localization/ku/messages.inc
index b3c716466..6000aacb0 100644
--- a/program/localization/ku/messages.inc
+++ b/program/localization/ku/messages.inc
@@ -15,30 +15,14 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'Têketin têk çû';
$messages['cookiesdisabled'] = 'Geroka te destûrê nade çerezan';
$messages['sessionerror'] = 'Danişîna te çewt e an jî bi dawî bûye';
$messages['storageerror'] = 'Girêdana pêşkêşkara IMAP têk çû';
-$messages['servererror'] = 'Server Error!';
-$messages['servererrormsg'] = 'Server Error: $msg';
-$messages['dberror'] = 'Database Error!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Invalid request! No data was saved.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'Di vê peyamdankê de tu peyam nehat dîtin';
$messages['loggedout'] = 'Te danişînî bi dawî anî. Oxir be!';
$messages['mailboxempty'] = 'Peyamdank vala ye';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'Tê barkirin...';
-$messages['uploading'] = 'Uploading file...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'Dane tên barkirin...';
$messages['checkingmail'] = 'Li peyamên nû vedinihêre...';
$messages['sendingmessage'] = 'Peyamê dişîne...';
@@ -48,129 +32,42 @@ $messages['messagesaved'] = 'Peyam di Hilanînî de hat hilanîn';
$messages['successfullysaved'] = 'Hat hilanîn';
$messages['addedsuccessfully'] = 'Têkilî li navnîşanan hat zêdekirin';
$messages['contactexists'] = 'Têkiliyeke bi vê navnîşanê jixwe heye';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'Ji bo ewlekariya te wêneyên cuda yên vê peyamê hatin astenkirin.';
$messages['encryptedmessage'] = 'Ev peyamenek şîfrekirî ye, bibore, nayê vekirin!';
$messages['nocontactsfound'] = 'Tu têkiliyek nehat dîtin';
$messages['contactnotfound'] = 'Têkiliya dihat xwestin nehat dîtin';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'Peyam nehat ÅŸandin';
-$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
-$messages['errorsavingsent'] = 'An error occured while saving sent message.';
-$messages['errorsaving'] = 'Di tomarkirinê de çewtiyek derket';
$messages['errormoving'] = 'Ciyê peyamê nehat guherandin';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'Peyam nehat jêbirin';
-$messages['errormarking'] = 'Could not mark the message(s).';
$messages['deletecontactconfirm'] = 'Ji dil dixwazî têkiliya/ên nîşankirî jê bibî?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'Ji dil dixwazî peya/ên nîşankirî jê bibî?';
$messages['deletefolderconfirm'] = 'Ji dil dixwazî vê peldankê jê bibî?';
$messages['purgefolderconfirm'] = 'Ji dil dixwazî hemû peyamên di vê peldankê de jê bibî?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
-$messages['folderdeleting'] = 'Deleting folder...';
-$messages['foldermoving'] = 'Moving folder...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'Form bi temamî nehat tijekirin';
$messages['noemailwarning'] = 'Tika ye, navnîşaneke rast têkevê';
$messages['nonamewarning'] = 'Tika ye, navekî têkevê';
$messages['nopagesizewarning'] = 'Tika ye, mezinahiyeke pelê têkevê';
-$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
$messages['norecipientwarning'] = 'Tika ye, herî kêm standyarekê têkevê';
$messages['nosubjectwarning'] = 'Qada "Mijar"ê vala ye. Dixwazî niha tiştekî lê binivîsî?';
$messages['nobodywarning'] = 'Peyamê bê nivîs bişeyînî?';
$messages['notsentwarning'] = 'Peyam nehat şandin. Dixwazî peyamê pişTgo bikî?';
$messages['noldapserver'] = 'Tika ye, ji bo lêgerînê pêşkêşkareke Idap têkevê';
$messages['nosearchname'] = 'Tika ye, nav an jî navnîşaneke têkiliyê têkevê';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = '$nr peyam hat(in) dîtin';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'Di lêgerînê de tu tişt nehat dîtin';
$messages['searching'] = 'Digere...';
$messages['checking'] = 'Vedinihêre...';
$messages['nospellerrors'] = 'Tu şaşiyeke rastnivîsê nehat dîtin';
$messages['folderdeleted'] = 'Peldank hat jêbirin';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'Hat jêbirin';
$messages['converting'] = 'Formatkirin ji peyamê tê birin...';
$messages['messageopenerror'] = 'Peyam ji pêşkêşkar nehat barkirin';
$messages['fileuploaderror'] = 'Barkirina pelê têk çû';
$messages['filesizeerror'] = 'Pel pir mezin e. Herî zêde divê $size be';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Çavkaniya vê navnîşanê tenê-xwendin e';
$messages['errorsavingcontact'] = 'Navnîşana têkiliyê nehat barkirin';
$messages['movingmessage'] = 'Ciyê peyamê tê guhertin...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'Rapora şandina serkeftî';
$messages['errorsendingreceipt'] = 'Rapor nehat ÅŸandin';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'Nikarî vê nasnameyê jê bibî. Ew ya dawî ye.';
-$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
-$messages['selectimportfile'] = 'Please select a file to upload.';
-$messages['addresswriterror'] = 'The selected address book is not writeable.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
-$messages['importwait'] = 'Importing, please wait...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operation not permitted!';
-$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/lb_LU/labels.inc b/program/localization/lb_LU/labels.inc
index 1dff3a9e7..00a133af3 100644
--- a/program/localization/lb_LU/labels.inc
+++ b/program/localization/lb_LU/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Wëllkomm bei $product';
$labels['username'] = 'Benotzernumm';
$labels['password'] = 'Passwuert';
$labels['server'] = 'Server';
$labels['login'] = 'Aloggen';
-
-// taskbar
$labels['logout'] = 'Ausloggen';
$labels['mail'] = 'Mailen';
$labels['settings'] = 'Astellungen';
$labels['addressbook'] = 'Adressbuch';
-
-// mailbox names
$labels['inbox'] = 'Mailbox';
$labels['drafts'] = 'Brouillonen';
$labels['sent'] = 'Verschéckt';
$labels['trash'] = 'Poubelle';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Richteg Nimm vu de speziellen Dossieren uweisen';
-
-// message listing
$labels['subject'] = 'Sujet';
$labels['from'] = 'Vun';
$labels['sender'] = 'Geschéckt vun';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Prioritéit';
$labels['organization'] = 'Organisatioun';
$labels['readstatus'] = 'Lies-Status';
$labels['listoptions'] = 'Optiounen oplëschten';
-
$labels['mailboxlist'] = 'Dossieren';
$labels['messagesfromto'] = 'Messagen $from bis $to vun $count';
$labels['threadsfromto'] = 'Diskussiounen $from bis $to vun $count';
$labels['messagenrof'] = 'Message $nr vun $count';
$labels['fromtoshort'] = '$from bis $to vun $count';
-
$labels['copy'] = 'Kopéieren';
$labels['move'] = 'Réckelen';
$labels['moveto'] = 'Réckelen an...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Eroflueden';
$labels['open'] = 'Opmaachen';
$labels['showattachment'] = 'Weisen';
$labels['showanyway'] = 'Trotzdeem weisen';
-
$labels['filename'] = 'Numm vum Fichier';
$labels['filesize'] = 'Gréisst vum Fichier';
-
$labels['addtoaddressbook'] = 'An d\'Adressbuch setzen';
-
-// weekdays short
$labels['sun'] = 'Son';
$labels['mon'] = 'Méi';
$labels['tue'] = 'Dën';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Don';
$labels['thu'] = 'Fre';
$labels['fri'] = 'Sam';
$labels['sat'] = 'Son';
-
-// weekdays long
$labels['sunday'] = 'Sonndeg';
$labels['monday'] = 'Méindeg';
$labels['tuesday'] = 'Dënschdeg';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Mëttwoch';
$labels['thursday'] = 'Donneschdeg';
$labels['friday'] = 'Freideg';
$labels['saturday'] = 'Samschdeg';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mäe';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dez';
-
-// months long
$labels['longjan'] = 'Januar';
$labels['longfeb'] = 'Februar';
$labels['longmar'] = 'Mäerz';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'September';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Dezember';
-
$labels['today'] = 'Haut';
-
-// toolbar buttons
$labels['refresh'] = 'Nei lueden';
$labels['checkmail'] = 'Nei Messagen ofruffen';
$labels['compose'] = 'Schreiwen';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Mei Aktiounen...';
$labels['more'] = 'Méi';
$labels['back'] = 'Zréck';
$labels['options'] = 'Optiounen';
-
$labels['select'] = 'Auswielen';
$labels['all'] = 'All';
$labels['none'] = 'Keng';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'All opfächeren';
$labels['expand-unread'] = 'Ongelies opfächeren';
$labels['collapse-all'] = 'All zesummefächeren';
$labels['threaded'] = 'Diskussiounen zesummefaassen';
-
$labels['autoexpand_threads'] = 'Diskussiounen auserneefächeren';
$labels['do_expand'] = 'All d\'Diskussiounen';
$labels['expand_only_unread'] = 'just ongeliese Messagen';
@@ -190,16 +163,13 @@ $labels['listcolumns'] = 'Kolonnen oplëschten';
$labels['listsorting'] = 'Kolonne sortéieren';
$labels['listorder'] = 'Sortéier-Reiefolleg';
$labels['listmode'] = 'Oplëschtungs-Modus';
-
$labels['folderactions'] = 'Dossiers-Aktiounen...';
$labels['compact'] = 'Kompaktéieren';
-$labels['empty'] = 'Eidel';
+$labels['empty'] = 'Eidel maachen';
$labels['importmessages'] = 'Messagen importéieren';
-
$labels['quota'] = 'Plazverbrauch';
$labels['unknown'] = 'onbekannt';
$labels['unlimited'] = 'onlimitéiert';
-
$labels['quicksearch'] = 'Séier Sich';
$labels['resetsearch'] = 'Sich zerécksetzen';
$labels['searchmod'] = 'Sich-Parameter';
@@ -207,13 +177,10 @@ $labels['msgtext'] = 'Ganze Message';
$labels['body'] = 'Kierper';
$labels['type'] = 'Typ';
$labels['namex'] = 'Numm';
-
$labels['openinextwin'] = 'An enger neier Fënster opmaachen';
$labels['emlsave'] = 'Eroflueden (.eml)';
$labels['changeformattext'] = 'Als Text ouni Formatéierungen uweisen';
$labels['changeformathtml'] = 'Als formatéierten Text uweisen';
-
-// message compose
$labels['editasnew'] = 'Als nei editéieren';
$labels['send'] = 'Schécken';
$labels['sendmessage'] = 'Message schécken';
@@ -225,26 +192,30 @@ $labels['returnreceipt'] = 'Empfanksbestätegung';
$labels['dsn'] = 'Empfanks-Status-Meldung';
$labels['mailreplyintro'] = 'Den $date, $sender schreift:';
$labels['originalmessage'] = 'Original-Message';
-
$labels['editidents'] = 'Identitéiten editéieren';
$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';
$labels['uploadprogress'] = '$percent ($current vun $total)';
$labels['close'] = 'Zoumaachen';
$labels['messageoptions'] = 'Message-Optiounen...';
-
$labels['low'] = 'Niddreg';
$labels['lowest'] = 'Am niddregsten';
$labels['normal'] = 'Normal';
$labels['high'] = 'Héich';
$labels['highest'] = 'Am héchsten';
-
$labels['nosubject'] = '(kee Sujet)';
$labels['showimages'] = 'Biller uweisen';
$labels['alwaysshow'] = 'Biller vun $sender ëmmer uweisen';
@@ -252,25 +223,19 @@ $labels['isdraft'] = 'Dëst ass e Brouillon.';
$labels['andnmore'] = '$nr more...';
$labels['togglemoreheaders'] = 'Méi Message-Headeren uweisen';
$labels['togglefullheaders'] = 'Réi Message-Headeren an-/ausblenden';
-
$labels['htmltoggle'] = 'Text mat Formatéierungen';
$labels['plaintoggle'] = 'Text ouni Formatéierungen';
$labels['savesentmessagein'] = 'Dee verschéckte Message späicheren an';
$labels['dontsave'] = 'net späicheren';
$labels['maxuploadsize'] = 'Déi maximal erlaabte Fichiers-Gréisst ass $size';
-
$labels['addcc'] = 'CC dobäisetzen';
$labels['addbcc'] = 'BCC dobäisetzen';
$labels['addreplyto'] = '"Äntwert un" dobäisetzen';
$labels['addfollowupto'] = '"Noverfollgung un" dobäisetzen';
-
-// mdn
$labels['mdnrequest'] = 'De Sender vun dësem Message huet gefrot fir informéiert ze gi wann de Message gelies gëtt. Wëlls du de Sender informéieren?';
$labels['receiptread'] = 'Empfanksbestätegung (gelies)';
$labels['yourmessage'] = 'Dëst ass eng Empfanksbestätegung fir Äre Message.';
$labels['receiptnote'] = 'Bemierkung: Dës Bestätegung bezeit just datt de Message beim Empfänger ugewise ginn ass. Et gëtt keng Garantie dass den Empfänger den Inhalt vum Message gelies oder verstanen huet.';
-
-// address boook
$labels['name'] = 'Ganzen Numm';
$labels['firstname'] = 'Virnumm';
$labels['surname'] = 'Nonumm';
@@ -305,7 +270,6 @@ $labels['search'] = 'Sichen';
$labels['advsearch'] = 'Avancéiert Sich';
$labels['advanced'] = 'Avancéiert';
$labels['other'] = 'Aneres';
-
$labels['typehome'] = 'Doheem';
$labels['typework'] = 'Aarbecht';
$labels['typeother'] = 'Aneres';
@@ -320,14 +284,12 @@ $labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Websäit';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Feld dobäisetzen...';
$labels['addcontact'] = 'Neie Kontakt dobäisetzen';
$labels['editcontact'] = 'Kontakt editéieren';
$labels['contacts'] = 'Kontakter';
$labels['contactproperties'] = 'Kontakt-Eegeschaften';
$labels['personalinfo'] = 'Perséinlech Informatioun';
-
$labels['edit'] = 'Änneren';
$labels['cancel'] = 'Ofbriechen';
$labels['save'] = 'Späicheren';
@@ -336,7 +298,6 @@ $labels['rename'] = 'Ëmbenennen';
$labels['addphoto'] = 'Dobäisetzen';
$labels['replacephoto'] = 'Ersetzen';
$labels['uploadphoto'] = 'Foto eroplueden';
-
$labels['newcontact'] = 'Nei Kontakt-Kaart erstellen';
$labels['deletecontact'] = 'Déi ausgewielte Kontakter läschen';
$labels['composeto'] = 'Mail schreiwen un';
@@ -350,42 +311,36 @@ $labels['newcontactgroup'] = 'Nei Kontakt-Grupp erstellen';
$labels['grouprename'] = 'Grupp ëmbenennen';
$labels['groupdelete'] = 'Grupp läschen';
$labels['groupremoveselected'] = 'Ausgewielte Kontakter aus Grupp eraushuele';
-
$labels['previouspage'] = 'Säit virdru weisen';
$labels['firstpage'] = 'Éischt Säit weisen';
$labels['nextpage'] = 'Nächst Säit weisen';
$labels['lastpage'] = 'Lescht Säit weisen';
-
$labels['group'] = 'Grup';
$labels['groups'] = 'Gruppen';
$labels['listgroup'] = 'Gruppe-Memberen oplëschten';
$labels['personaladrbook'] = 'Perséinlech Adressen';
-
$labels['searchsave'] = 'Sich späicheren';
$labels['searchdelete'] = 'Sich läschen';
-
$labels['import'] = 'Importéieren';
$labels['importcontacts'] = 'Kontakter importéieren';
$labels['importfromfile'] = 'Aus Fichier importéieren:';
-$labels['importtarget'] = 'Nei Kontakter an d\'Adressbuch setzen:';
+$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';
-
-// settings
$labels['settingsfor'] = 'Astellunge fir';
$labels['about'] = 'Iwwert';
$labels['preferences'] = 'Astellungen';
$labels['userpreferences'] = 'Benotzer-Astellungen';
$labels['editpreferences'] = 'Benotzer-Astellungen änneren';
-
$labels['identities'] = 'Identitéiten';
$labels['manageidentities'] = 'Identitéite fir dësen Account geréieren';
$labels['newidentity'] = 'Nei Identitéit';
-
$labels['newitem'] = 'Neit Element';
$labels['edititem'] = 'Element änneren';
-
$labels['preferhtml'] = 'HTML uweisen';
$labels['defaultcharset'] = 'Standard Zeechesaz';
$labels['htmlmessage'] = 'HTML-Message';
@@ -481,7 +436,9 @@ $labels['standardwindows'] = 'Popup-Fënstere wéi normal Fënstere behandelen';
$labels['forwardmode'] = 'Messagë-Weiderleedung';
$labels['inline'] = 'am Message';
$labels['asattachment'] = 'als Unhank';
-
+$labels['replyallmode'] = 'Standard-Aktioun vum [U jiddwereen äntweren]-Knäppchen';
+$labels['replyalldefault'] = 'u jiddwereen äntweren';
+$labels['replyalllist'] = 'just der Mailinglëscht äntweren (wann eng fonnt gëtt) ';
$labels['folder'] = 'Dossier';
$labels['folders'] = 'Dossieren';
$labels['foldername'] = 'Dossiersnumm';
@@ -502,26 +459,20 @@ $labels['foldertype'] = 'Dossiers-Typ';
$labels['personalfolder'] = 'Privaten Dossier';
$labels['otherfolder'] = 'Dossier vun anerem Benotzer';
$labels['sharedfolder'] = 'Ëffentlechen Dossier';
-
$labels['sortby'] = 'Sortéieren no';
$labels['sortasc'] = 'Opsteigend sortéieren';
$labels['sortdesc'] = 'Ofsteigend sortéieren';
$labels['undo'] = 'Réckgängeg maachen';
-
$labels['installedplugins'] = 'Installéiert Plugins';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Versioun';
$labels['source'] = 'Source';
$labels['license'] = 'Lizenz';
$labels['support'] = 'Support ufroen';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'kB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Englesch';
$labels['westerneuropean'] = 'West-Europäesch';
@@ -540,5 +491,4 @@ $labels['vietnamese'] = 'Vietnamesesch';
$labels['japanese'] = 'Japanesch';
$labels['korean'] = 'Koreanesch';
$labels['chinese'] = 'Chinesesch';
-
?>
diff --git a/program/localization/lb_LU/messages.inc b/program/localization/lb_LU/messages.inc
index 5599f227b..fc053b59e 100644
--- a/program/localization/lb_LU/messages.inc
+++ b/program/localization/lb_LU/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Ee Feeler ass opgetrueden!';
$messages['loginfailed'] = 'Login feelgeschloen.';
$messages['cookiesdisabled'] = 'Däi Browser acceptéiert keng Cookien.';
@@ -46,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.';
@@ -56,7 +56,7 @@ $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 verschéckte Message ass e Feeler opgetrueden';
+$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.';
@@ -172,5 +172,4 @@ $messages['parentnotwritable'] = 'Den Dossier konnt net am ausgewielten Dossier
$messages['messagetoobig'] = 'Den Messagen-Deel ass ze grouss fir verschafft ze ginn.';
$messages['attachmentvalidationerror'] = 'WARNUNG! Dësen Unhank ass verdächteg well den tatsächlechen Typ vum Fichier net mam Typ deen am Message deklaréiert ass iwwertenee stëmmt. Falls du dem Ofsender net traus sollts du den Unhank net am Browser opmaache well e béisaartegen Inhalt enthaale kéint.<br/><br/><em>Erwaart: $expected; fonnt: $detected</em>';
$messages['noscriptwarning'] = 'Warnung: Dëse Webmail brauch JavaScript! Fir de Service benotzen ze kënnen, aktivéier w.e.gl JavaScript an denge Browser-Astellungen.';
-
?>
diff --git a/program/localization/lt_LT/labels.inc b/program/localization/lt_LT/labels.inc
index 31cb44d27..63194f275 100644
--- a/program/localization/lt_LT/labels.inc
+++ b/program/localization/lt_LT/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Sveiki! ÄŒia $product';
$labels['username'] = 'Naudotojo vardas';
$labels['password'] = 'Slaptažodis';
$labels['server'] = 'Serveris';
$labels['login'] = 'Prisijungti';
-
-// taskbar
$labels['logout'] = 'Atsijungti';
$labels['mail'] = 'El. paštas';
$labels['settings'] = 'Nuostatos';
$labels['addressbook'] = 'Adresų knyga';
-
-// mailbox names
$labels['inbox'] = 'Gauti laiškai';
$labels['drafts'] = 'JuodraÅ¡Äiai';
$labels['sent'] = 'Išsiųsti laiškai';
$labels['trash'] = 'Šiukšlinė';
$labels['junk'] = 'Brukalas';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
+$labels['show_real_foldernames'] = 'Rodyti tikrus specialiųjų aplankų vardus';
$labels['subject'] = 'Tema';
$labels['from'] = 'SiuntÄ—jas';
$labels['sender'] = 'SiuntÄ—jas';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Prioritetas';
$labels['organization'] = 'Organizacija';
$labels['readstatus'] = 'Neskaitytas';
$labels['listoptions'] = 'Sąrašo nuostatos…';
-
$labels['mailboxlist'] = 'Aplankai';
$labels['messagesfromto'] = 'Laiškai nuo $from iki $to iš $count';
$labels['threadsfromto'] = 'Gijos nuo $from iki $to iš $count';
$labels['messagenrof'] = 'Laiškas $nr iš $count';
$labels['fromtoshort'] = '$from – $to iš $count';
-
$labels['copy'] = 'Kopijuoti';
$labels['move'] = 'Perkelti';
$labels['moveto'] = 'Perkelti į…';
@@ -68,13 +56,9 @@ $labels['download'] = 'Parsisiųsti';
$labels['open'] = 'Atverti';
$labels['showattachment'] = 'Rodyti';
$labels['showanyway'] = 'Vistiek rodyti';
-
$labels['filename'] = 'Failo vardas';
$labels['filesize'] = 'Failo dydis';
-
$labels['addtoaddressbook'] = 'Įtraukti į adresų knygą';
-
-// weekdays short
$labels['sun'] = 'Sek';
$labels['mon'] = 'Pir';
$labels['tue'] = 'Ant';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Tre';
$labels['thu'] = 'Ket';
$labels['fri'] = 'Pen';
$labels['sat'] = 'Šeš';
-
-// weekdays long
$labels['sunday'] = 'Sekmadienis';
$labels['monday'] = 'Pirmadienis';
$labels['tuesday'] = 'Antradienis';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'TreÄiadienis';
$labels['thursday'] = 'Ketvirtadienis';
$labels['friday'] = 'Penktadienis';
$labels['saturday'] = 'Šeštadienis';
-
-// months short
$labels['jan'] = 'Sau';
$labels['feb'] = 'Vas';
$labels['mar'] = 'Kov';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Rgs';
$labels['oct'] = 'Spl';
$labels['nov'] = 'Lap';
$labels['dec'] = 'Grd';
-
-// months long
$labels['longjan'] = 'Sausis';
$labels['longfeb'] = 'Vasaris';
$labels['longmar'] = 'Kovas';
@@ -119,13 +97,10 @@ $labels['longsep'] = 'RugsÄ—jis';
$labels['longoct'] = 'Spalis';
$labels['longnov'] = 'Lapkritis';
$labels['longdec'] = 'Gruodis';
-
$labels['today'] = 'Å iandien';
-
-// toolbar buttons
$labels['refresh'] = 'Atnaujinti';
$labels['checkmail'] = 'Tikrinti, ar yra naujų laiškų';
-$labels['compose'] = 'Rašyti naują laišką';
+$labels['compose'] = 'Rašyti';
$labels['writenewmessage'] = 'Rašyti naują laišką';
$labels['reply'] = 'Atsakyti';
$labels['replytomessage'] = 'Atsakyti siuntÄ—jui';
@@ -152,10 +127,9 @@ $labels['markunread'] = 'Kaip neskaitytus';
$labels['markflagged'] = 'Pažymėti gairele';
$labels['markunflagged'] = 'Pašalinti gairelę';
$labels['moreactions'] = 'Kiti veiksmai…';
-$labels['more'] = 'Daugiau';
+$labels['more'] = 'Kita';
$labels['back'] = 'Grįžti';
$labels['options'] = 'Nuostatos';
-
$labels['select'] = 'Pažymėti';
$labels['all'] = 'visus';
$labels['none'] = 'Nerūšiuoti';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'išskleisti visas';
$labels['expand-unread'] = 'iÅ¡skleisti turinÄias neskaitytų laiÅ¡kų';
$labels['collapse-all'] = 'suskleisti visas';
$labels['threaded'] = 'Rodyti gijas';
-
$labels['autoexpand_threads'] = 'IÅ¡skleisti gijas';
$labels['do_expand'] = 'visas';
$labels['expand_only_unread'] = 'tik turinÄias neskaitytų laiÅ¡kų';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Stulpelių sąrašas';
$labels['listsorting'] = 'Stulpelis rikiavimui';
$labels['listorder'] = 'Rikiavimo tvarka';
$labels['listmode'] = 'Sąrašo rodymo veiksena';
-
$labels['folderactions'] = 'Veiksmai su aplankais…';
$labels['compact'] = 'Suglaudinti';
$labels['empty'] = 'Ištuštinti';
-$labels['importmessages'] = 'Import messages';
-
+$labels['importmessages'] = 'Importuoti laiškus';
$labels['quota'] = 'Disko naudojimas';
$labels['unknown'] = 'nežinomas';
$labels['unlimited'] = 'neribotas';
-
$labels['quicksearch'] = 'SparÄioji paieÅ¡ka';
$labels['resetsearch'] = 'Atšaukti paiešką';
$labels['searchmod'] = 'Paieškos modifikatoriai';
$labels['msgtext'] = 'Visas laiškas';
$labels['body'] = 'Laiško tekstas';
-$labels['type'] = 'Type';
-
+$labels['type'] = 'Tipas';
+$labels['namex'] = 'Vardas';
$labels['openinextwin'] = 'Atverti naujame lange';
$labels['emlsave'] = 'Parsisiųsti (.eml)';
$labels['changeformattext'] = 'Rodyti grynojo teksto formatu';
$labels['changeformathtml'] = 'Rodyti HTML formatu';
-
-// message compose
$labels['editasnew'] = 'Redaguoti kaip naujÄ…';
$labels['send'] = 'Siųsti';
$labels['sendmessage'] = 'Išsiųsti laiską';
@@ -224,26 +192,30 @@ $labels['returnreceipt'] = 'Prašyti pristatymo pažymos';
$labels['dsn'] = 'Laiško pristatymo pažyma';
$labels['mailreplyintro'] = '$date, $sender rašė:';
$labels['originalmessage'] = 'Originalus laiškas';
-
$labels['editidents'] = 'Tvarkyti tapatybes';
$labels['spellcheck'] = 'Tikrinti rašybą';
$labels['checkspelling'] = 'Tikrinti rašybą';
$labels['resumeediting'] = 'Tęsti redagavimą';
$labels['revertto'] = 'Atstatyti į';
-
+$labels['responses'] = 'Atsakymai';
+$labels['insertresponse'] = 'Įterpti atsakymą';
+$labels['manageresponses'] = 'Tvarkyti atsakymus';
+$labels['savenewresponse'] = 'Įrašyti naują atsakymą';
+$labels['editresponses'] = 'Taisyti atsakymus';
+$labels['editresponse'] = 'Taisyti atsakymÄ…';
+$labels['responsename'] = 'Pavadinimas';
+$labels['responsetext'] = 'Atsakymo tekstas';
$labels['attach'] = 'PridÄ—ti failÄ…';
$labels['attachments'] = 'PridÄ—ti failai';
$labels['upload'] = 'Įkelti';
$labels['uploadprogress'] = '$percent ($current iš $total)';
$labels['close'] = 'Užverti';
$labels['messageoptions'] = 'Laiško savybės…';
-
$labels['low'] = 'Žemas';
$labels['lowest'] = 'Žemiausias';
$labels['normal'] = 'Normalus';
$labels['high'] = 'Aukštas';
$labels['highest'] = 'AukÅ¡Äiausias';
-
$labels['nosubject'] = '(tema nenurodyta)';
$labels['showimages'] = 'Rodyti paveikslÄ—lius';
$labels['alwaysshow'] = 'Visada rodyti paveikslėlius $sender laiškuose';
@@ -251,25 +223,19 @@ $labels['isdraft'] = 'Tai – laiško juodraštis.';
$labels['andnmore'] = '$nr daugiau...';
$labels['togglemoreheaders'] = 'Rodyti daugiau antraÅ¡Äių';
$labels['togglefullheaders'] = 'Įjungti/išjungti neapdorotas laiškų antraštes';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Grynasis tekstas';
$labels['savesentmessagein'] = 'Išsiųstus laiškus įrašyti į';
$labels['dontsave'] = 'neįrašyti';
$labels['maxuploadsize'] = 'Maksimalus leistinas failo dydis yra $size';
-
$labels['addcc'] = 'PridÄ—ti Cc';
$labels['addbcc'] = 'PridÄ—ti Bcc';
$labels['addreplyto'] = 'PridÄ—ti Reply-To';
$labels['addfollowupto'] = 'PridÄ—ti Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Å io laiÅ¡ko siuntÄ—jas papraÅ¡Ä— patvirtinti, kad jÅ«s jį perskaitÄ—te. Ar iÅ¡siųsti tai patvirtinanÄiÄ… pažymÄ…?';
$labels['receiptread'] = 'Patvirtinimas (laiškas perskaitytas)';
$labels['yourmessage'] = 'Tai – pažyma, patvirtinanti, jog buvo perskaitytas Jūsų laiškas';
$labels['receiptnote'] = 'Pastaba: šia pažyma patvirtinamas tik faktas, jog laiškas buvo parodytas gavėjui. Ja negarantuojama, jog gavėjas perskaitė ir suprato laiško turinį.';
-
-// address boook
$labels['name'] = 'Rodomas vardas';
$labels['firstname'] = 'Vardas';
$labels['surname'] = 'PavardÄ—';
@@ -304,7 +270,6 @@ $labels['search'] = 'Paieška';
$labels['advsearch'] = 'Išplėstinė paieška';
$labels['advanced'] = 'IÅ¡samiau';
$labels['other'] = 'Kitas';
-
$labels['typehome'] = 'Namų';
$labels['typework'] = 'Darbo';
$labels['typeother'] = 'Kitas';
@@ -319,14 +284,12 @@ $labels['typeassistant'] = 'PadÄ—jÄ—jo(-os)';
$labels['typehomepage'] = 'Tinklalapis';
$labels['typeblog'] = 'Tinklaraštis';
$labels['typeprofile'] = 'Profilis';
-
$labels['addfield'] = 'Pridėti lauką…';
$labels['addcontact'] = 'PridÄ—ti adresatÄ…';
$labels['editcontact'] = 'Taisyti adresatÄ…';
$labels['contacts'] = 'Adresatai';
$labels['contactproperties'] = 'Adresato savybÄ—s';
$labels['personalinfo'] = 'Asmeniniai duomenys';
-
$labels['edit'] = 'Redaguoti';
$labels['cancel'] = 'Atsisakyti';
$labels['save'] = 'Įrašyti';
@@ -335,7 +298,6 @@ $labels['rename'] = 'Pervardinti';
$labels['addphoto'] = 'PridÄ—ti';
$labels['replacephoto'] = 'Pakeisti';
$labels['uploadphoto'] = 'Įkelti nuotrauką';
-
$labels['newcontact'] = 'Sukurti naujÄ… adresatÄ…';
$labels['deletecontact'] = 'Ištrinti pažymėtus adresatus';
$labels['composeto'] = 'Rašyti laišką';
@@ -349,42 +311,36 @@ $labels['newcontactgroup'] = 'Kurti adresatų grupę';
$labels['grouprename'] = 'Pervardinti grupÄ™';
$labels['groupdelete'] = 'Pašalinti grupę';
$labels['groupremoveselected'] = 'Pašalinti pažymėtus adresatus iš grupės';
-
$labels['previouspage'] = 'Rodyti ankstesnį puslapį';
$labels['firstpage'] = 'Rodyti pirmąjį puslapį';
$labels['nextpage'] = 'Rodyti tolesnį puslapį';
$labels['lastpage'] = 'Rodyti paskutinį puslapį';
-
$labels['group'] = 'GrupÄ—';
$labels['groups'] = 'GrupÄ—s';
-$labels['listgroup'] = 'List group members';
+$labels['listgroup'] = 'IÅ¡vardinti grupÄ—s narius';
$labels['personaladrbook'] = 'Asmeniniai adresai';
-
$labels['searchsave'] = 'Įrašyti kaip radinių aplanką';
$labels['searchdelete'] = 'Pašalinti radinių aplanką';
-
$labels['import'] = 'Importuoti';
$labels['importcontacts'] = 'Importuoti adresatus';
$labels['importfromfile'] = 'Importuoti iš failo:';
-$labels['importtarget'] = 'Pridėti naujus adresatus į adresų knygą:';
+$labels['importtarget'] = 'Pridėti adresatus į';
$labels['importreplace'] = 'Perrašyti visą adresų knygą';
+$labels['importgroups'] = 'Importuoti priskyrimus grupÄ—ms';
+$labels['importgroupsall'] = 'Visus (sukurti trūkstamas grupes)';
+$labels['importgroupsexisting'] = 'Tik esamoms grupÄ—ms';
$labels['importdesc'] = 'Galite įkelti kontaktus iš jau turimos adresų knygos. <br/>Šiuo metu galima importuoti kontaktus iš <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> arba CSV (comma-separated) duomenų formatų.';
$labels['done'] = 'Baigta';
-
-// settings
$labels['settingsfor'] = 'Nuostatos';
$labels['about'] = 'Apie';
$labels['preferences'] = 'Nuostatos';
$labels['userpreferences'] = 'Naudotojo nuostatos';
$labels['editpreferences'] = 'Keisti naudotojo nuostatas';
-
$labels['identities'] = 'TapatybÄ—s';
$labels['manageidentities'] = 'Tvarkyti Å¡ios paskyros tapatybes';
$labels['newidentity'] = 'Nauja tapatybÄ—';
-
$labels['newitem'] = 'Naujas elementas';
$labels['edititem'] = 'Redaguoti elementÄ…';
-
$labels['preferhtml'] = 'Rodyti HTML';
$labels['defaultcharset'] = 'Numatytoji koduotÄ—';
$labels['htmlmessage'] = 'HTML laiškas';
@@ -406,7 +362,7 @@ $labels['htmleditor'] = 'Laiškus kurti HTML formatu';
$labels['htmlonreply'] = 'tik atsakymus į HTML formato laiškus';
$labels['htmlonreplyandforward'] = 'atsakant į HTML laiÅ¡kÄ… arba jį persiunÄiant';
$labels['htmlsignature'] = 'HTML parašas';
-$labels['showemail'] = 'Show email address with display name';
+$labels['showemail'] = 'Rodyti el. pašto adresą ir asmenvardį';
$labels['previewpane'] = 'Rodyti laiško peržiūros polangį';
$labels['skin'] = 'Grafinis apvalkalas';
$labels['logoutclear'] = 'Išvalyti Šiukšlinę atsijungiant';
@@ -476,11 +432,13 @@ $labels['spellcheckignorenums'] = 'Nepaisyti žodžių su skaitmenimis';
$labels['spellcheckignorecaps'] = 'Nepaisyti žodžių vien iš didžiųjų raidžių';
$labels['addtodict'] = 'Įtraukti į žodyną';
$labels['mailtoprotohandler'] = 'Užregistruoti svetainÄ™ kaip dirbanÄiÄ… su „mailto:“ saitais';
-$labels['standardwindows'] = 'Handle popups as standard windows';
+$labels['standardwindows'] = 'IÅ¡kylanÄiuosius langus traktuoti kaip įprastus';
$labels['forwardmode'] = 'Laiškų persiuntimo būdas';
$labels['inline'] = 'kaip citatÄ…';
$labels['asattachment'] = 'kaip priedas';
-
+$labels['replyallmode'] = 'Numatytasis mygtuko „Atsakyti visiems“ veiksmas';
+$labels['replyalldefault'] = 'atsakyti visiems';
+$labels['replyalllist'] = 'atsakyti el. pašto grupei (jei aptikta)';
$labels['folder'] = 'Aplankas';
$labels['folders'] = 'Aplankai';
$labels['foldername'] = 'Aplanko vardas';
@@ -501,26 +459,20 @@ $labels['foldertype'] = 'Aplanko tipas';
$labels['personalfolder'] = 'Asmeninis aplankas';
$labels['otherfolder'] = 'Kito naudotojo aplankas';
$labels['sharedfolder'] = 'Viešas aplankas';
-
$labels['sortby'] = 'Rikiuoti pagal';
$labels['sortasc'] = 'Rikiuoti didÄ—janÄiai';
$labels['sortdesc'] = 'Rikiuoti mažėjanÄiai';
$labels['undo'] = 'Atšaukti';
-
$labels['installedplugins'] = 'Įdiegti įskiepiai';
$labels['plugin'] = 'Papildinys';
$labels['version'] = 'Versija';
$labels['source'] = 'Å altinis';
$labels['license'] = 'Licencija';
$labels['support'] = 'Gauti pagalbos';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unikodas';
$labels['english'] = 'Anglų';
$labels['westerneuropean'] = 'Vakarų Europos';
@@ -539,5 +491,4 @@ $labels['vietnamese'] = 'VietnamieÄių';
$labels['japanese'] = 'Japonų';
$labels['korean'] = 'KorÄ—jieÄių';
$labels['chinese'] = 'Kinų';
-
?>
diff --git a/program/localization/lt_LT/messages.inc b/program/localization/lt_LT/messages.inc
index 7eb31ec3f..d9c83f873 100644
--- a/program/localization/lt_LT/messages.inc
+++ b/program/localization/lt_LT/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Įvyko klaida!';
$messages['loginfailed'] = 'Prisijungti nepavyko.';
$messages['cookiesdisabled'] = 'Jūsų naršyklė nepriima slapukų.';
@@ -46,6 +44,8 @@ $messages['messagesent'] = 'Laiškas sėkmingai nusiųstas.';
$messages['savingmessage'] = 'Laiškas įrašomas…';
$messages['messagesaved'] = 'LaiÅ¡kas įraÅ¡ytas į JuodraÅ¡Äių aplankÄ….';
$messages['successfullysaved'] = 'Sėkmingai įrašyta.';
+$messages['savingresponse'] = 'Įrašomas atsakymo tekstas…';
+$messages['deleteresponseconfirm'] = 'Ar tikrai norite pašalinti šį atsakymo tekstą?';
$messages['addedsuccessfully'] = 'Asmuo įtrauktas į adresų knygą.';
$messages['contactexists'] = 'Adresatas, turintis šį el. pašto adresą, jau egzistuoja.';
$messages['contactnameexists'] = 'Adresatas tokiu vardu jau egzistuoja.';
@@ -56,8 +56,8 @@ $messages['contactnotfound'] = 'Ieškotas adresatas nerastas.';
$messages['contactsearchonly'] = 'Įveskite reikšminius žodžius adresatų paieškai';
$messages['sendingfailed'] = 'Laiško išsiųsti nepavyko.';
$messages['senttooquickly'] = 'Turite luktelėti $sec sek., kad galėtumėte išsiųsti laišką.';
-$messages['errorsavingsent'] = 'Įrašant išsiųstą laišką įvyko klaida.';
-$messages['errorsaving'] = 'Įrašant įvyko klaida.';
+$messages['errorsavingsent'] = 'Įrašant išsiųstą laišką, įvyko klaida.';
+$messages['errorsaving'] = 'Įvyko klaida įrašant.';
$messages['errormoving'] = 'Laiško(-ų) perkelti nepavyko.';
$messages['errorcopying'] = 'Laiško(-ų) nukopijuoti nepavyko.';
$messages['errordeleting'] = 'Laiško(-ų) pašalinti nepavyko.';
@@ -172,5 +172,4 @@ $messages['parentnotwritable'] = 'Nepavyko sukurti arba perkelti aplanko į pari
$messages['messagetoobig'] = 'Laiško dalis yra per didelė, kad galėtų būti apdorota.';
$messages['attachmentvalidationerror'] = 'Dėmesio! Šis priedas yra įtartinas, nes jo tipas nesutampa su deklaruotu laiške. Jeigu nepasitikite šiuo siuntėju, šio priedo atverti naršyklėje nepatartina, nes jis gali būti kenksmingas.<br/><br/><em>Tikėtasi: $expected; aptikta: $detected</em>';
$messages['noscriptwarning'] = 'Dėmesio: šiai saityno el. pašto sistemai veikti būtini „JavaScript“ scenarijai! Norėdami ja naudotis, įjunkite „JavaScript“ savo naršyklės nuostatose.';
-
?>
diff --git a/program/localization/lv_LV/labels.inc b/program/localization/lv_LV/labels.inc
index 0fe5b0faf..0f80350bb 100644
--- a/program/localization/lv_LV/labels.inc
+++ b/program/localization/lv_LV/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Esiet laipni lūgti $product';
$labels['username'] = 'LietotÄjvÄrds';
$labels['password'] = 'Parole';
$labels['server'] = 'Serveris';
$labels['login'] = 'Autorizēties';
-
-// taskbar
$labels['logout'] = 'Iziet';
$labels['mail'] = 'E-pasts';
$labels['settings'] = 'Iestatījumi';
$labels['addressbook'] = 'AdreÅ¡u grÄmata';
-
-// mailbox names
$labels['inbox'] = 'IenÄkoÅ¡Äs';
$labels['drafts'] = 'Uzmetumi';
$labels['sent'] = 'NosÅ«tÄ«tÄs';
$labels['trash'] = 'Papīrgrozs';
$labels['junk'] = 'MÄ“stules';
$labels['show_real_foldernames'] = 'SistÄ“mas mapÄ“m rÄdÄ«t Ä«stos nosaukumus';
-
-// message listing
$labels['subject'] = 'Temats';
$labels['from'] = 'No';
$labels['sender'] = 'SÅ«tÄ«tÄjs';
@@ -54,13 +44,11 @@ $labels['priority'] = 'PrioritÄte';
$labels['organization'] = 'Uzņēmums';
$labels['readstatus'] = 'Izlasīšanas statuss';
$labels['listoptions'] = 'Vēstuļu saraksta attēlošanas iestatījumi...';
-
$labels['mailboxlist'] = 'Mapes';
$labels['messagesfromto'] = 'Vēstules $from līdz $to no $count';
$labels['threadsfromto'] = 'Vijumi $from līdz $to no $count';
$labels['messagenrof'] = '$nr. vēstule no $count';
$labels['fromtoshort'] = '$from – $to no $count';
-
$labels['copy'] = 'Kopēt';
$labels['move'] = 'PÄrvietot';
$labels['moveto'] = 'PÄrvietot uz...';
@@ -68,13 +56,9 @@ $labels['download'] = 'lejupielÄdÄ“t';
$labels['open'] = 'Atvērt';
$labels['showattachment'] = 'RÄdÄ«t';
$labels['showanyway'] = 'Vienalga rÄdÄ«t';
-
$labels['filename'] = 'Faila nosaukums';
$labels['filesize'] = 'Faila izmērs';
-
$labels['addtoaddressbook'] = 'Pievienot adreÅ¡u grÄmatai';
-
-// weekdays short
$labels['sun'] = 'Sv';
$labels['mon'] = 'P';
$labels['tue'] = 'O';
@@ -82,8 +66,6 @@ $labels['wed'] = 'T';
$labels['thu'] = 'C';
$labels['fri'] = 'P';
$labels['sat'] = 'Se';
-
-// weekdays long
$labels['sunday'] = 'Svētdiena';
$labels['monday'] = 'Pirmdiena';
$labels['tuesday'] = 'Otrdiena';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Trešdiena';
$labels['thursday'] = 'Ceturtdiena';
$labels['friday'] = 'Piektdiena';
$labels['saturday'] = 'Sestdiena';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
-
-// months long
$labels['longjan'] = 'JanvÄris';
$labels['longfeb'] = 'FebruÄris';
$labels['longmar'] = 'Marts';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Septembris';
$labels['longoct'] = 'Oktobris';
$labels['longnov'] = 'Novembris';
$labels['longdec'] = 'Decembris';
-
$labels['today'] = 'Å odien';
-
-// toolbar buttons
$labels['refresh'] = 'Atjaunot';
$labels['checkmail'] = 'PÄrbaudÄ«t e-pastu';
$labels['compose'] = 'Rakstīt vēstuli';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Papildus darbības...';
$labels['more'] = 'VairÄk';
$labels['back'] = 'Atpakaļ';
$labels['options'] = 'Opcijas';
-
$labels['select'] = 'Atzīmēt';
$labels['all'] = 'Visas';
$labels['none'] = 'Nevienu';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Izvērst visus';
$labels['expand-unread'] = 'IzvÄ“rst neizlasÄ«tÄs';
$labels['collapse-all'] = 'Sakļaut visas';
$labels['threaded'] = 'RÄdÄ«t vijumus';
-
$labels['autoexpand_threads'] = 'Izvērst vēstuļu vijumus';
$labels['do_expand'] = 'visus vijumus';
$labels['expand_only_unread'] = 'tikai ar neizlasÄ«tÄm vÄ“stulÄ“m';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Saraksta kolonnas';
$labels['listsorting'] = 'KÄrtoÅ¡anas kolonnas';
$labels['listorder'] = 'KÄrtoÅ¡anas secÄ«ba';
$labels['listmode'] = 'Attēlošanas veids';
-
$labels['folderactions'] = 'Darbības ar mapēm...';
$labels['compact'] = 'Saspiest';
$labels['empty'] = 'Iztukšot';
$labels['importmessages'] = 'Importēt vēstules';
-
$labels['quota'] = 'Kvota';
$labels['unknown'] = 'nezinÄms';
$labels['unlimited'] = 'neierobežots';
-
$labels['quicksearch'] = 'Ä€rtÄ meklÄ“Å¡ana';
$labels['resetsearch'] = 'Atstatīt meklēšanu';
$labels['searchmod'] = 'Meklēšanas modifikatori:';
$labels['msgtext'] = 'VisÄ vÄ“stulÄ“';
$labels['body'] = 'Pamatteksts';
$labels['type'] = 'Tips';
-
+$labels['namex'] = 'VÄrds';
$labels['openinextwin'] = 'AtvÄ“rt jaunÄ logÄ';
$labels['emlsave'] = 'lejupielÄdÄ“t (.eml)';
$labels['changeformattext'] = 'RÄdÄ«t kÄ neformatÄ“tu tekstu';
$labels['changeformathtml'] = 'RÄdÄ«t kÄ HTML formatÄ“tu';
-
-// message compose
$labels['editasnew'] = 'Rediģēt kÄ jaunu';
$labels['send'] = 'Sūtīt';
$labels['sendmessage'] = 'Sūtīt vēstuli';
@@ -224,26 +192,30 @@ $labels['returnreceipt'] = 'SaņemÅ¡anas apstiprinÄjums';
$labels['dsn'] = 'PiegÄdes atskaite';
$labels['mailreplyintro'] = '$sender @ $date rakstīja:';
$labels['originalmessage'] = 'SÄkotnÄ“jÄ vÄ“stule';
-
$labels['editidents'] = 'Rediģēt identitÄtes';
$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';
$labels['uploadprogress'] = '$percent ($current no $total)';
$labels['close'] = 'Aizvērt';
$labels['messageoptions'] = 'Vēstuļu iestatījumi...';
-
$labels['low'] = 'Zema';
$labels['lowest'] = 'ZemÄkÄ';
$labels['normal'] = 'NormÄla';
$labels['high'] = 'Augsta';
$labels['highest'] = 'AugstÄkÄ';
-
$labels['nosubject'] = '(bez tēmas)';
$labels['showimages'] = 'RÄdÄ«t attÄ“lus';
$labels['alwaysshow'] = 'VienmÄ“r rÄdÄ«t attÄ“lus vÄ“stulÄ“s, kuras sÅ«tÄ«jis $sender';
@@ -251,25 +223,19 @@ $labels['isdraft'] = 'Å is ir melnraksts.';
$labels['andnmore'] = '$nr vairÄk...';
$labels['togglemoreheaders'] = 'RÄdÄ«t galvenes papildus informÄciju';
$labels['togglefullheaders'] = 'SlÄ“pt galvenes papildus informÄciju';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'VienkÄrÅ¡s teksts';
$labels['savesentmessagein'] = 'SaglabÄt nosÅ«tÄ«to vÄ“stuli mapÄ“';
$labels['dontsave'] = 'nesaglabÄt';
$labels['maxuploadsize'] = 'MaksimÄlais atļautais faila izmÄ“rs ir $size';
-
$labels['addcc'] = 'Pievienot Cc';
$labels['addbcc'] = 'Pievienot Bcc';
$labels['addreplyto'] = 'Pievienot Atbildēt-Uz';
$labels['addfollowupto'] = 'Pievienot Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Å Ä«s vÄ“stules sÅ«tÄ«tÄjs vÄ“las redzÄ“t vÄ“stules saņemÅ¡anas apstiprinÄjumu. Vai JÅ«s vÄ“laties nosÅ«tÄ«t Å¡o apstiprinÄjumu?';
$labels['receiptread'] = 'SaņemÅ¡anas apstiprinÄjums';
$labels['yourmessage'] = 'Å is ir JÅ«su nosÅ«tÄ«tÄs vÄ“stules saņemÅ¡anas apstiprinÄjums';
$labels['receiptnote'] = 'PiezÄ«me: Å is apsiprinÄjums nozÄ«mÄ“ tikai to, ka vÄ“stule tika parÄdÄ«ta uz saņēmÄja datora. Tas nenozÄ«mÄ“, ka saņēmÄ“js ir izlasÄ«jis vai sapratis vÄ“stules saturu.';
-
-// address boook
$labels['name'] = 'UzrÄdÄ«tais vÄrds';
$labels['firstname'] = 'VÄrds';
$labels['surname'] = 'UzvÄrds';
@@ -304,7 +270,6 @@ $labels['search'] = 'Meklēt';
$labels['advsearch'] = 'PaplaÅ¡inÄtÄ meklÄ“Å¡ana';
$labels['advanced'] = 'PaplaÅ¡inÄtie iestatÄ«jumi';
$labels['other'] = 'Cits';
-
$labels['typehome'] = 'MÄjas';
$labels['typework'] = 'Darbs';
$labels['typeother'] = 'Cits';
@@ -319,14 +284,12 @@ $labels['typeassistant'] = 'Asistents';
$labels['typehomepage'] = 'MÄjaslapa';
$labels['typeblog'] = 'Blogs';
$labels['typeprofile'] = 'Profils';
-
$labels['addfield'] = 'Pievienot lauku...';
$labels['addcontact'] = 'Pievienot jaunu kontaktu';
$labels['editcontact'] = 'Rediģēt kontaktu';
$labels['contacts'] = 'Kontakti';
$labels['contactproperties'] = 'Kontakta īpašības';
$labels['personalinfo'] = 'PersonÄ«gÄ informÄcija';
-
$labels['edit'] = 'Rediģēt';
$labels['cancel'] = 'Atcelt';
$labels['save'] = 'SaglabÄt';
@@ -335,7 +298,6 @@ $labels['rename'] = 'PÄrdÄ“vÄ“t';
$labels['addphoto'] = 'Pievienot';
$labels['replacephoto'] = 'Aizvietot';
$labels['uploadphoto'] = 'AugÅ¡upielÄdÄ“t fotogrÄfiju';
-
$labels['newcontact'] = 'Izveidot jaunu kontaktu';
$labels['deletecontact'] = 'Dzēst atzīmētos kontaktus';
$labels['composeto'] = 'Rakstīt vēstuli';
@@ -349,42 +311,36 @@ $labels['newcontactgroup'] = 'Izveidot jaunu kontaktu grupu';
$labels['grouprename'] = 'PÄrdÄ“vÄ“t grupu';
$labels['groupdelete'] = 'Izdzēst grupu';
$labels['groupremoveselected'] = 'Dzēst atzīmētos kontaktus no grupas';
-
$labels['previouspage'] = 'ParÄdÄ«t iepriekÅ¡Ä“jo lapu';
$labels['firstpage'] = 'ParÄdÄ«t pirmo lapu';
$labels['nextpage'] = 'ParÄdÄ«t nÄkamo lapu';
$labels['lastpage'] = 'ParÄdÄ«t pÄ“dÄ“jo lapu';
-
$labels['group'] = 'Grupa';
$labels['groups'] = 'Grupas';
$labels['listgroup'] = 'RÄdÄ«t grupas kontaktus';
$labels['personaladrbook'] = 'PersonÄ«gÄs adreses';
-
$labels['searchsave'] = 'SaglabÄt meklÄ“Å¡anas pieprasÄ«jumu';
$labels['searchdelete'] = 'DzÄ“st saglabÄto meklÄ“Å¡anas pieprasÄ«jumu';
-
$labels['import'] = 'Importēt';
$labels['importcontacts'] = 'Importēt kontaktus';
$labels['importfromfile'] = 'Importēt no faila:';
-$labels['importtarget'] = 'Pievienot jaunus kontaktus adreÅ¡u grÄmatai:';
+$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.';
$labels['done'] = 'Pabeigts';
-
-// settings
$labels['settingsfor'] = 'Iestatījumi';
$labels['about'] = 'Par';
$labels['preferences'] = 'Iestatījumi';
$labels['userpreferences'] = 'LietotÄja iestatÄ«jumi';
$labels['editpreferences'] = 'Rediģēt iestatījumus';
-
$labels['identities'] = 'IdentitÄtes';
$labels['manageidentities'] = 'Rediģēt identitÄtes';
$labels['newidentity'] = 'Jauna identitÄte';
-
$labels['newitem'] = 'Jauns';
$labels['edititem'] = 'Rediģēt';
-
$labels['preferhtml'] = 'RÄdÄ«t HTML formatÄ“tÄs vÄ“stules';
$labels['defaultcharset'] = 'NoklusÄ“tÄ rakstzÄ«mju kopa';
$labels['htmlmessage'] = 'HTML formatēta vēstule';
@@ -480,7 +436,6 @@ $labels['standardwindows'] = 'IzlÄ“coÅ¡ie logi kÄ parasti logi';
$labels['forwardmode'] = 'VÄ“stuļu pÄrsÅ«tÄ«Å¡ana';
$labels['inline'] = 'iekļaujot';
$labels['asattachment'] = 'kÄ pielikumu';
-
$labels['folder'] = 'Mapi';
$labels['folders'] = 'Mapes';
$labels['foldername'] = 'Mapes nosaukums';
@@ -501,26 +456,20 @@ $labels['foldertype'] = 'Mapes tips';
$labels['personalfolder'] = 'PrivÄta mape';
$labels['otherfolder'] = 'Cita lietotÄja mape';
$labels['sharedfolder'] = 'Publiska mape';
-
$labels['sortby'] = 'KÄrtot pÄ“c';
$labels['sortasc'] = 'KÄrtot augoÅ¡Ä secÄ«bÄ';
$labels['sortdesc'] = 'KÄrtot dilstoÅ¡Ä secÄ«bÄ';
$labels['undo'] = 'Atsaukt';
-
$labels['installedplugins'] = 'UzstÄdÄ«tie spraudņi';
$labels['plugin'] = 'Spraudnis';
$labels['version'] = 'Versija';
$labels['source'] = 'OriÄ£inÄls';
$labels['license'] = 'Licence';
$labels['support'] = 'Atbalsts';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'kB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unikods';
$labels['english'] = 'Angļu';
$labels['westerneuropean'] = 'Rietumeiropas';
@@ -539,5 +488,4 @@ $labels['vietnamese'] = 'Vjetnamiešu';
$labels['japanese'] = 'JapÄņu';
$labels['korean'] = 'Korejiešu';
$labels['chinese'] = 'Ķīniešu';
-
?>
diff --git a/program/localization/lv_LV/messages.inc b/program/localization/lv_LV/messages.inc
index 37ceb0463..55cff4134 100644
--- a/program/localization/lv_LV/messages.inc
+++ b/program/localization/lv_LV/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'RadÄs kļūda!';
$messages['loginfailed'] = 'PieslÄ“gties neizdevÄs';
$messages['cookiesdisabled'] = 'JÅ«su pÄrlÅ«kprogramma neatbalsta sÄ«kdatnes (cookies)';
@@ -46,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Ä“.';
@@ -56,8 +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 vÄ“stuli notika kļūda - vÄ“stule netika saglabÄta';
-$messages['errorsaving'] = 'SaglabÄjot notika kļūda';
+$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';
@@ -101,13 +101,16 @@ $messages['converting'] = 'Tiek noņemts vēstules formatējums...';
$messages['messageopenerror'] = 'NevarÄ“ja ielÄdÄ“t vÄ“stuli no servera';
$messages['fileuploaderror'] = 'Faila augÅ¡upielÄde neveiksmÄ«ga';
$messages['filesizeerror'] = 'AugÅ¡upielÄdÄ“tais fails pÄrsniedz pieļaujamo $size izmÄ“ru.';
-$messages['copysuccess'] = 'Veiksmīgi nokopētas $nr adreses.';
-$messages['copyerror'] = 'Nevarēja nokopēt nevienu adresi.';
+$messages['copysuccess'] = '$nr kontakti tika veiksmÄ«gi pÄrkopÄ“ti.';
+$messages['movesuccess'] = '$nr kontakti tika veiksmÄ«gi pÄrvietoti.';
+$messages['copyerror'] = 'Kontaktus pÄrkopÄ“t neizdevÄs.';
+$messages['moveerror'] = 'Kontaktus pÄrvietot neizdevÄs.';
$messages['sourceisreadonly'] = 'Adreses avots ir lasÄ«Å¡anas režīmÄ tikai';
$messages['errorsavingcontact'] = 'Kontakta adresi nevarÄ“ja saglabÄt.';
$messages['movingmessage'] = 'PÄrvieto vÄ“stules...';
$messages['copyingmessage'] = 'Kopē vēstules...';
$messages['copyingcontact'] = 'Kopē kontaktus...';
+$messages['movingcontact'] = 'PÄrvieto kontaktu(s)...';
$messages['deletingmessage'] = 'Dzēš vēstules...';
$messages['markingmessage'] = 'Atzīmē vēstules...';
$messages['addingmember'] = 'Kontaktus pievieno grupai...';
@@ -141,7 +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'] = 'Notika servera iekÅ¡Ä“jÄ kļūda. LÅ«dzu mÄ“Ä£iniet vÄ“lreiz.';
+$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.';
@@ -169,5 +172,4 @@ $messages['parentnotwritable'] = 'NeizdevÄs izveidot/pÄrvietot mapi atzÄ«mÄ“ta
$messages['messagetoobig'] = 'VÄ“stule daļa ir pÄrÄk liela, lai to varÄ“tu apstrÄdÄt.';
$messages['attachmentvalidationerror'] = 'BRĪDINÄ€JUMS! Å is pielikums ir aizdomÄ«gs, jo tÄ tips neatbilst tipam, kurÅ¡ ir uzrÄdÄ«ts e-pasta ziņojumÄ. Ja jÅ«s neuzticaties sÅ«tÄ«tÄjam, Å¡o failu Jums vaÄ¼Ä vÄ“rt nevajadzÄ“tu, jo tas var saturÄ“t ļaunprÄtÄ«gu saturu. <br/><br/><em>BÅ«tu jÄbÅ«t: $expected; Bet ir: $detected</em>';
$messages['noscriptwarning'] = 'UzmanÄ«bu: lai lasÄ«tu e-pastus, JÅ«su pÄrlÅ«kprogrammÄ jÄbÅ«t ieslÄ“gtiem JavaScript.';
-
?>
diff --git a/program/localization/mk_MK/labels.inc b/program/localization/mk_MK/labels.inc
index 519df5823..2c6c422b3 100755..100644
--- a/program/localization/mk_MK/labels.inc
+++ b/program/localization/mk_MK/labels.inc
@@ -15,66 +15,39 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Добредојдовте во $product';
$labels['username'] = 'КориÑничко име';
$labels['password'] = 'Лозинка';
$labels['server'] = 'Сервер';
$labels['login'] = 'Ðајава';
-
-// taskbar
$labels['logout'] = 'Одјава';
$labels['mail'] = 'Е-пошта';
$labels['settings'] = 'Ðагодувања';
$labels['addressbook'] = 'Именик';
-
-// mailbox names
$labels['inbox'] = 'Примени';
$labels['drafts'] = 'Ðепратени';
$labels['sent'] = 'Пратени';
$labels['trash'] = 'Корпа';
$labels['junk'] = 'Ѓубре';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'ÐаÑлов';
$labels['from'] = 'Праќач';
-$labels['sender'] = 'Sender';
$labels['to'] = 'Примач';
$labels['cc'] = 'Копирај';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Препрати на';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Датум';
$labels['size'] = 'Големина';
$labels['priority'] = 'Приоритет';
$labels['organization'] = 'Организација';
-$labels['readstatus'] = 'Read status';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'Папки';
$labels['messagesfromto'] = 'ПиÑма од $from до $to од $count';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = 'ПиÑмо $nr од $count';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'Копирај';
-$labels['move'] = 'Move';
$labels['moveto'] = 'ПремеÑти во...';
$labels['download'] = 'Преземи';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'Име на податотеката';
$labels['filesize'] = 'Големина на податотеката';
-
$labels['addtoaddressbook'] = 'Додај во именик';
-
-// weekdays short
$labels['sun'] = 'Ðед';
$labels['mon'] = 'Пон';
$labels['tue'] = 'Вто';
@@ -82,8 +55,6 @@ $labels['wed'] = 'Сре';
$labels['thu'] = 'Чет';
$labels['fri'] = 'Пет';
$labels['sat'] = 'Саб';
-
-// weekdays long
$labels['sunday'] = 'Ðедела';
$labels['monday'] = 'Понеделник';
$labels['tuesday'] = 'Вторник';
@@ -91,8 +62,6 @@ $labels['wednesday'] = 'Среда';
$labels['thursday'] = 'Четврток';
$labels['friday'] = 'Петок';
$labels['saturday'] = 'Сабота';
-
-// months short
$labels['jan'] = 'Јан';
$labels['feb'] = 'Фев';
$labels['mar'] = 'Мар';
@@ -105,8 +74,6 @@ $labels['sep'] = 'Сеп';
$labels['oct'] = 'Окт';
$labels['nov'] = 'Ðое';
$labels['dec'] = 'Дек';
-
-// months long
$labels['longjan'] = 'Јануари';
$labels['longfeb'] = 'Февруари';
$labels['longmar'] = 'Март';
@@ -119,22 +86,12 @@ $labels['longsep'] = 'Септември';
$labels['longoct'] = 'Октомври';
$labels['longnov'] = 'Ðоември';
$labels['longdec'] = 'Декември';
-
$labels['today'] = 'ДенеÑ';
-
-// toolbar buttons
-$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'Провери пошта';
$labels['compose'] = 'Пиши ново пиÑмо';
$labels['writenewmessage'] = 'Ðово пиÑмо';
-$labels['reply'] = 'Reply';
$labels['replytomessage'] = 'Одговори на иÑпраќачот';
$labels['replytoallmessage'] = 'Одговори на иÑпраќачот и Ñите примачи';
-$labels['replyall'] = 'Reply all';
-$labels['replylist'] = 'Reply list';
-$labels['forward'] = 'Forward';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'Препрати пиÑмо';
$labels['deletemessage'] = 'Избриши пиÑмо';
$labels['movemessagetotrash'] = 'ПремеÑти ги пиÑмата во Корпа';
@@ -145,253 +102,104 @@ $labels['nextmessage'] = 'Прикажи го Ñледното пиÑмо';
$labels['lastmessage'] = 'Прикажи го поÑледното пиÑмо';
$labels['backtolist'] = 'Ðазад кон лиÑта на пиÑма';
$labels['viewsource'] = 'Покажи го изворот на пиÑмото';
-$labels['mark'] = 'Mark';
$labels['markmessages'] = 'Обележи ги пиÑмата';
$labels['markread'] = 'Како прочитани';
$labels['markunread'] = 'Како непрочитани';
$labels['markflagged'] = 'Како обележано';
$labels['markunflagged'] = 'Како необележано';
-$labels['moreactions'] = 'More actions...';
-$labels['more'] = 'More';
-$labels['back'] = 'Back';
-$labels['options'] = 'Options';
-
$labels['select'] = 'Одбери';
$labels['all'] = 'Сите';
$labels['none'] = 'Ðиедно';
-$labels['currpage'] = 'Current page';
$labels['unread'] = 'Ðепрочитани';
$labels['flagged'] = 'Обележано';
$labels['unanswered'] = 'Ðеодговорено';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'Избришано';
-$labels['undeleted'] = 'Not deleted';
$labels['invert'] = 'Обратно';
$labels['filter'] = 'Филтер';
-$labels['list'] = 'List';
-$labels['threads'] = 'Threads';
-$labels['expand-all'] = 'Expand All';
-$labels['expand-unread'] = 'Expand Unread';
-$labels['collapse-all'] = 'Collapse All';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
-$labels['fromto'] = 'From/To';
-$labels['flag'] = 'Flag';
-$labels['attachment'] = 'Attachment';
$labels['nonesort'] = 'Ðиедно';
-$labels['sentdate'] = 'Sent date';
-$labels['arrival'] = 'Arrival date';
-$labels['asc'] = 'ascending';
-$labels['desc'] = 'descending';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'Компактно';
$labels['empty'] = 'ИÑпразни';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'ИÑкориÑтен проÑтор';
$labels['unknown'] = 'непознато';
$labels['unlimited'] = 'неограничено';
-
$labels['quicksearch'] = 'Брзо пребарување';
$labels['resetsearch'] = 'Ðово пребарување';
$labels['searchmod'] = 'Модификатори на пребарувањето';
$labels['msgtext'] = 'Цело пиÑмо';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'Отвори во нов прозорец';
$labels['emlsave'] = 'Преземи (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'Уреди како ново';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'ИÑпрати Ñега';
$labels['savemessage'] = 'Зачувај го пиÑмото во Ðепратени';
$labels['addattachment'] = 'Приложи податотека';
$labels['charset'] = 'Збир од знаци';
$labels['editortype'] = 'Тип на уредник';
$labels['returnreceipt'] = 'Врати';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'Провери правопиÑ';
$labels['resumeediting'] = 'Продолжи Ñо уредување';
$labels['revertto'] = 'Врати на';
-
-$labels['attach'] = 'Attach';
$labels['attachments'] = 'Приложено';
$labels['upload'] = 'Подигни';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'Затвори';
-$labels['messageoptions'] = 'Message options...';
-
$labels['low'] = 'Ðизок';
$labels['lowest'] = 'Ðајнизок';
$labels['normal'] = 'Ðормален';
$labels['high'] = 'ВиÑок';
$labels['highest'] = 'ÐајвиÑок';
-
$labels['nosubject'] = '(без наÑлов)';
$labels['showimages'] = 'Прикажи Ñлики';
$labels['alwaysshow'] = 'Секогаш прикажувај ги Ñликите од $sender';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Обичен текÑÑ‚';
$labels['savesentmessagein'] = 'Сними го пратеното пиÑмо во';
$labels['dontsave'] = 'не зачувувај';
$labels['maxuploadsize'] = 'МакÑималната дозволена големина за податотеката е $size';
-
$labels['addcc'] = 'Додај Cc';
$labels['addbcc'] = 'Додај Bcc';
$labels['addreplyto'] = 'Додај Одговори-на';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Праќачот на оваа порака Ñака да биде извеÑтен кога ќе го прочитате пиÑмото. Дали Ñакате да го извеÑтите?';
$labels['receiptread'] = 'ИзвеÑти (прочитано)';
$labels['yourmessage'] = 'Ова е извеÑтување за вашата порака';
$labels['receiptnote'] = 'Ðапомена: Ова извеÑтување Ñамо потврдува дека пиÑмото кое Ñте го пратиле е отворено. Ðе е гаранција дека примачот го прочитал или разбрал иÑтото.';
-
-// address boook
$labels['name'] = 'Име за приказ';
$labels['firstname'] = 'Име';
$labels['surname'] = 'Презиме';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'Е-пошта';
-$labels['phone'] = 'Phone';
-$labels['address'] = 'Address';
-$labels['street'] = 'Street';
-$labels['locality'] = 'City';
-$labels['zipcode'] = 'ZIP Code';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
-$labels['typemobile'] = 'Mobile';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'Додај нов контакт';
$labels['editcontact'] = 'Уреди контакт';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
-$labels['personalinfo'] = 'Personal information';
-
$labels['edit'] = 'Уреди';
$labels['cancel'] = 'Откажи';
$labels['save'] = 'Зачувај';
$labels['delete'] = 'Избриши';
-$labels['rename'] = 'Rename';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'Додај ново име';
$labels['deletecontact'] = 'Избриши ги Ñледните имиња';
$labels['composeto'] = 'Ðапиши порака за';
$labels['contactsfromto'] = 'Имиња од $from до $to од $count';
$labels['print'] = 'ИÑпечати';
$labels['export'] = 'Извези како';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'Извези ги контактите во vCard формат';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'Прикажи претходна Ñтрана';
$labels['firstpage'] = 'Прикажи ја првата Ñтрана';
$labels['nextpage'] = 'Прикажи ја Ñледната Ñтрана';
$labels['lastpage'] = 'Прикажи ја поÑледната Ñтрана';
-
-$labels['group'] = 'Group';
$labels['groups'] = 'Групи';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Лични адреÑи';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
$labels['import'] = 'Увези';
$labels['importcontacts'] = 'Увези контакти';
$labels['importfromfile'] = 'Увези од податотека:';
-$labels['importtarget'] = 'Add new contacts to address book:';
$labels['importreplace'] = 'Замени го целиот именик';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'Завршено';
-
-// settings
$labels['settingsfor'] = 'Ðагодувања за';
-$labels['about'] = 'About';
$labels['preferences'] = 'Ðагодувања';
$labels['userpreferences'] = 'КориÑнички нагодувања';
$labels['editpreferences'] = 'Промени кориÑнички нагодувања';
-
$labels['identities'] = 'Идентитети';
$labels['manageidentities'] = 'Организирај ги идентитетите за овој кориÑник';
$labels['newidentity'] = 'Ðов идентитет';
-
$labels['newitem'] = 'Ðов објект';
$labels['edititem'] = 'Промени објект';
-
$labels['preferhtml'] = 'Прикажи во HTML';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'HTML пиÑмо';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'Убави датуми';
$labels['setdefault'] = 'ПоÑтави за оÑновно';
$labels['autodetect'] = 'ÐвтоматÑки';
@@ -400,13 +208,8 @@ $labels['timezone'] = 'ЧаÑовна зона';
$labels['pagesize'] = 'Редови по Ñтрана';
$labels['signature'] = 'ПотпиÑ';
$labels['dstactive'] = 'Промени на времето';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'Пиши HTML порака';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'HTML потпиÑ';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Прикажи прозорец за преглед';
$labels['skin'] = 'Модел на изгледот';
$labels['logoutclear'] = 'ИÑчиÑти ја Кантата при излез';
@@ -417,43 +220,33 @@ $labels['mailboxview'] = 'Приказ на поштенÑкото ÑандачÐ
$labels['mdnrequests'] = 'ИзвеÑтувања за праќачот';
$labels['askuser'] = 'прашај го кориÑникот';
$labels['autosend'] = 'иÑпрати автоматÑки';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['ignore'] = 'игнорирај';
$labels['readwhendeleted'] = 'Обележи го пиÑмото како прочитано при бришење';
$labels['flagfordeletion'] = 'Обележи го пиÑмото за бришење намеÑто да го избришеш';
$labels['skipdeleted'] = 'Ðе ги прикажувај избришаните пиÑма';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
$labels['showremoteimages'] = 'Прикажи вметнати Ñлики';
$labels['fromknownsenders'] = 'од познати праќачи';
$labels['always'] = 'Ñекогаш';
$labels['showinlineimages'] = 'Прикажи приложени Ñлики под пиÑмото';
$labels['autosavedraft'] = 'ÐвоматÑки зачувувај во Ðепратени';
$labels['everynminutes'] = 'Ñекои $n минути';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'никогаш';
-$labels['immediately'] = 'immediately';
$labels['messagesdisplaying'] = 'Прикажување на пиÑма';
$labels['messagescomposition'] = 'Пишување на пиÑма';
$labels['mimeparamfolding'] = 'Име на прикачените податотеки';
$labels['2231folding'] = 'Полн RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Полн RFC 2047 (друго)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
$labels['advancedoptions'] = 'Ðапредни можноÑти';
$labels['focusonnewmessage'] = 'ФокуÑирај го прозорецот на прелиÑтувачот на новото пиÑмо';
$labels['checkallfolders'] = 'Провери ги Ñите папки за нови пиÑма';
$labels['displaynext'] = 'По бришење/премеÑтување на пиÑмото прикажи го Ñледното пиÑмо';
-$labels['defaultfont'] = 'Default font of HTML message';
$labels['mainoptions'] = 'Главни можноÑти';
-$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'Заглавие';
$labels['maintenance'] = 'Одржување';
$labels['newmessage'] = 'Ðово пиÑмо';
$labels['signatureoptions'] = 'МожноÑти за потпиÑот';
$labels['whenreplying'] = 'При одговарање';
-$labels['replyempty'] = 'do not quote the original message';
$labels['replytopposting'] = 'новото пиÑмо започни го над оригиналот';
$labels['replybottomposting'] = 'новото пиÑмо започни го под оригиналот';
$labels['replyremovesignature'] = 'При одговарање отÑтрани го изворниот Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ Ð¾Ð´ пиÑмото';
@@ -461,26 +254,6 @@ $labels['autoaddsignature'] = 'ÐвтоматÑки додавај потпиÑ'
$labels['newmessageonly'] = 'Ñамо нови пиÑма';
$labels['replyandforwardonly'] = 'Ñамо одгорови и препраќања';
$labels['insertsignature'] = 'Вметни потпиÑ';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'Папка';
$labels['folders'] = 'Папки';
$labels['foldername'] = 'Име на папката';
@@ -490,54 +263,11 @@ $labels['create'] = 'Создај';
$labels['createfolder'] = 'Создај нова папка';
$labels['managefolders'] = 'Организирање на папки';
$labels['specialfolders'] = 'Специјални папки';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'Сортирај по';
$labels['sortasc'] = 'Сортирај нагорно';
$labels['sortdesc'] = 'Сортирај надолно';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
$labels['B'] = 'Б';
$labels['KB'] = 'КБ';
$labels['MB'] = 'МБ';
$labels['GB'] = 'ГБ';
-
-// character sets
-$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/mk_MK/messages.inc b/program/localization/mk_MK/messages.inc
index 7a7548ce0..d123bada9 100755..100644
--- a/program/localization/mk_MK/messages.inc
+++ b/program/localization/mk_MK/messages.inc
@@ -15,30 +15,17 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'Ðајавата не уÑпеа';
$messages['cookiesdisabled'] = 'Вашиот прелиÑтувач не прифаќа колачиња';
$messages['sessionerror'] = 'СеÑијата е неважечка или е иÑтечена';
$messages['storageerror'] = 'Поврзувањето Ñо IMAP не уÑпеа';
$messages['servererror'] = 'Грешка во Ñерверот!';
-$messages['servererrormsg'] = 'Server Error: $msg';
-$messages['dberror'] = 'Database Error!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'Ðеважечко барање! Податоците не Ñе зачувани.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'Ðемате пиÑма во ова Ñандаче';
$messages['loggedout'] = 'УÑпешно Ñе одјавивте. Ви благодариме и довидување!';
$messages['mailboxempty'] = 'ПоштенÑкото Ñандаче е празно.';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'Вчитувам...';
$messages['uploading'] = 'Ја подигам податотеката...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'Ги вчитувам податоците...';
$messages['checkingmail'] = 'Проверувам нова пошта...';
$messages['sendingmessage'] = 'Ја иÑпраќам пораката...';
@@ -48,31 +35,21 @@ $messages['messagesaved'] = 'Пораката е зачувана во ÐепрÐ
$messages['successfullysaved'] = 'УÑпешно зачувано';
$messages['addedsuccessfully'] = 'Името е уÑпешно додадено во Именикот';
$messages['contactexists'] = 'Веќе поÑтои име Ñо зададената Е-поштенÑка адреÑа';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'За да Ñе заштити вашата приватноÑÑ‚, Ñликите во оваа порака не Ñе прикажани.';
$messages['encryptedmessage'] = 'Оваа порака е кодирана и не може да Ñе прикаже. Жалиме!';
$messages['nocontactsfound'] = 'Ðема пронајдено имиња.';
$messages['contactnotfound'] = 'Бараното име не е пронајдено';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'Ðе упеав да го иÑпратам пиÑмото';
$messages['senttooquickly'] = 'Почекајте $sec Ñекунда/и пред да го иÑпратите пиÑмото';
-$messages['errorsavingsent'] = 'Грешка при зачувувањето на пратеното пиÑмо';
-$messages['errorsaving'] = 'Грешка при зачувувањето';
$messages['errormoving'] = 'Ðе можев да го премеÑтам пиÑмото';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'Ðе можев да го избришам пиÑмото';
$messages['errormarking'] = 'Ðе можев да го обележам пиÑмото';
$messages['deletecontactconfirm'] = 'Дали Ñте Ñигурни дека Ñакате да го избришете одбраното(те) име(ња)?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'Дали Ñте Ñигурни дека Ñакате да го(и) избришете обележаниот(те) пиÑмо(а)?';
$messages['deletefolderconfirm'] = 'Дали Ñте Ñигурни дека Ñакате да ја избришете оваа папка?';
$messages['purgefolderconfirm'] = 'Дали Ñте Ñигурни дека Ñакате да ги избршете Ñите пиÑма во оваа папка?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
$messages['folderdeleting'] = 'Ја бришам папката...';
$messages['foldermoving'] = 'Ја премеÑтувам папката...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'Имате изоÑтавено непополнети информации';
$messages['noemailwarning'] = 'ВнеÑете валидна е-поштенÑка адреÑа';
$messages['nonamewarning'] = 'ВнеÑете име';
@@ -86,51 +63,27 @@ $messages['noldapserver'] = 'Изберете LDAP Ñервер за пребаÑ
$messages['nosearchname'] = 'ВнеÑете име или е-поштенÑка адреÑа';
$messages['notuploadedwarning'] = 'Сè уште нема подигнати прилози. Почекајте или откажете го подигањето';
$messages['searchsuccessful'] = 'Пронајадени Ñе $nr пораки';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'Пребарувањето не даде резлутати';
$messages['searching'] = 'Пребарувам....';
$messages['checking'] = 'Проверувам...';
$messages['nospellerrors'] = 'Ðема грешки во Ñпелувањето';
$messages['folderdeleted'] = 'Папката е уÑпешно избришана';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'УÑпешно избришано';
$messages['converting'] = 'Форматирањето на пиÑмото е отÑтрането...';
$messages['messageopenerror'] = 'Ðе можев да го вчитам пиÑното од Ñерверот';
$messages['fileuploaderror'] = 'Прикачувањето е неуÑпешно';
$messages['filesizeerror'] = 'Подигнатата податотека го надминува ограничувањето од $size';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Изворот на оваа адреÑа неможе да Ñе промени';
$messages['errorsavingcontact'] = 'Името неможе да Ñе Ñними';
$messages['movingmessage'] = 'Пораката Ñе премеÑтува...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'ИзвеÑтувањето е уÑпешно пратено';
$messages['errorsendingreceipt'] = 'ИзвеÑтувањето не е пратено';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'Овој идентитет неможе да Ñе избрише, тој е поÑледниот.';
$messages['forbiddencharacter'] = 'Името на папката Ñодржи неÑоодветен формат';
$messages['selectimportfile'] = 'Изберете ја податотеката која Ñакате да ја прикачите';
$messages['addresswriterror'] = 'Одбраниот именик не може да Ñе менува';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'Убезувам,, почекајте...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
$messages['importconfirm'] = '<b>УÑпешно Ñе увезени $inserted имиња, $skipped веќе поÑтојат и Ñе преÑкокнати</b>:<p><em>$names</em></p>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'Операцијата не е дозволена';
$messages['nofromaddress'] = 'Ðе е внеÑена е-пошта во одберениот идентитет';
$messages['editorwarning'] = 'Префрлањето на уредникот на обичен текÑÑ‚ ќе резултира Ñо губење на целото форматирање на текÑтот. Дали Ñакате да продолжите?';
@@ -142,35 +95,4 @@ $messages['smtptoerror'] = 'SMTP грешка ($code): Ðе уÑпеав да г
$messages['smtprecipientserror'] = 'SMTP грешка: Ðе уÑпеав да ја иÑпарÑирам лиÑтата на примачи';
$messages['smtperror'] = 'SMTP Error: $msg';
$messages['emailformaterror'] = 'Ðеправилна поштенÑка адреÑа: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/ml_IN/labels.inc b/program/localization/ml_IN/labels.inc
index 7d3fdc501..395893afb 100644
--- a/program/localization/ml_IN/labels.inc
+++ b/program/localization/ml_IN/labels.inc
@@ -15,66 +15,34 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = '$product ലേയàµà´•àµà´•àµ à´¸àµà´µà´¾à´—തം';
$labels['username'] = 'ഉപയോകàµà´¤àµƒà´¨à´¾à´®à´‚';
$labels['password'] = 'രഹസàµà´¯à´µà´¾à´•àµà´•àµ';
$labels['server'] = 'സേവകനàµâ€';
$labels['login'] = 'à´ªàµà´°à´µàµ‡à´¶à´¿à´•àµà´•àµà´•';
-
-// taskbar
$labels['logout'] = 'à´ªàµà´±à´¤àµà´¤àµ à´•à´Ÿà´•àµà´•àµà´•';
$labels['mail'] = 'തപാലàµâ€';
$labels['settings'] = 'à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™à´³àµâ€';
$labels['addressbook'] = 'വിലാസ à´ªàµà´¸àµà´¤à´•à´‚';
-
-// mailbox names
$labels['inbox'] = 'ഇനàµâ€à´¬àµ‹à´•àµà´¸àµ';
$labels['drafts'] = 'പൂരàµâ€à´¤àµà´¤à´¿à´¯à´¾à´•à´¾à´¤àµà´¤à´µ';
$labels['sent'] = 'അയചàµà´šà´µ';
$labels['trash'] = 'ചവറàµà´±àµà´•àµà´Ÿàµà´Ÿ';
$labels['junk'] = 'ആവശàµà´¯à´®à´¿à´²àµà´²à´¾à´¤àµà´¤à´µ';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'വിഷയം';
$labels['from'] = 'à´ªàµà´°àµ‡à´·à´¿à´¤à´¨àµâ€';
-$labels['sender'] = 'Sender';
$labels['to'] = 'à´¸àµà´µàµ€à´•à´°àµâ€à´¤àµà´¤à´¾à´µàµ';
-$labels['cc'] = 'Cc';
-$labels['bcc'] = 'Bcc';
-$labels['replyto'] = 'Reply-To';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'തീയതി';
$labels['size'] = 'വലിപàµà´ªà´‚';
$labels['priority'] = 'à´®àµà´¨àµâ€à´—ണന';
-$labels['organization'] = 'Organization';
$labels['readstatus'] = 'അവസàµà´¥ വായികàµà´•àµà´•';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'ഫോളàµâ€à´¡à´±àµà´•à´³àµâ€';
-$labels['messagesfromto'] = 'Messages $from to $to of $count';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
-$labels['messagenrof'] = 'Message $nr of $count';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'പകരàµâ€à´¤àµà´¤àµà´•';
$labels['move'] = 'നീകàµà´•àµà´•';
-$labels['moveto'] = 'Move to...';
$labels['download'] = 'ഡൗണàµâ€à´²àµ‹à´¡àµ';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'ഫയലàµâ€ നാമം';
$labels['filesize'] = 'ഫയലിനàµà´±àµ† വലിപàµà´ªà´‚';
-
$labels['addtoaddressbook'] = 'മേലàµâ€à´µà´¿à´²à´¾à´¸à´™àµà´™à´³à´¿à´²àµâ€ ചേരàµâ€à´•àµà´•àµà´•.';
-
-// weekdays short
$labels['sun'] = 'à´žà´¾';
$labels['mon'] = 'തി';
$labels['tue'] = 'ചൊ';
@@ -82,8 +50,6 @@ $labels['wed'] = 'à´¬àµ';
$labels['thu'] = 'à´µàµà´¯à´¾';
$labels['fri'] = 'വെ';
$labels['sat'] = 'à´¶';
-
-// weekdays long
$labels['sunday'] = 'ഞായരàµâ€';
$labels['monday'] = 'തിങàµà´•à´³àµâ€';
$labels['tuesday'] = 'ചൊവàµà´µ';
@@ -91,8 +57,6 @@ $labels['wednesday'] = 'à´¬àµà´§à´¨àµâ€';
$labels['thursday'] = 'à´µàµà´¯à´¾à´´à´‚';
$labels['friday'] = 'വെളàµà´³à´¿';
$labels['saturday'] = 'ശനി';
-
-// months short
$labels['jan'] = 'ജനàµ';
$labels['feb'] = 'ഫെബàµ';
$labels['mar'] = 'മാരàµâ€';
@@ -105,8 +69,6 @@ $labels['sep'] = 'സെപàµà´±àµà´±à´‚ബരàµâ€';
$labels['oct'] = 'à´’à´•àµà´Ÿàµ‹à´¬à´°àµâ€';
$labels['nov'] = 'നവംബരàµâ€';
$labels['dec'] = 'ഡിസംബരàµâ€';
-
-// months long
$labels['longjan'] = 'ജനàµà´µà´°à´¿';
$labels['longfeb'] = 'ഫെബàµà´°àµà´µà´°à´¿';
$labels['longmar'] = 'മാരàµâ€à´šàµà´šàµ';
@@ -119,22 +81,12 @@ $labels['longsep'] = 'സെപàµà´¤à´‚ബ‌രàµâ€';
$labels['longoct'] = 'à´’à´•àµà´Ÿàµ‹à´¬à´°àµâ€';
$labels['longnov'] = 'നവംബ‌രàµâ€';
$labels['longdec'] = 'ഡിസംബ‌രàµâ€';
-
$labels['today'] = 'ഇനàµà´¨àµ';
-
-// toolbar buttons
$labels['refresh'] = 'à´ªàµà´¤àµà´•àµà´•àµà´•';
$labels['checkmail'] = 'à´ªàµà´¤à´¿à´¯ സനàµà´¦àµ‡à´¶à´¤àµà´¤à´¿à´¨à´¾à´¯à´¿ തിരയàµà´•';
$labels['compose'] = 'à´°à´šà´¨';
-$labels['writenewmessage'] = 'Create a new message';
$labels['reply'] = 'മറàµà´ªà´Ÿà´¿';
-$labels['replytomessage'] = 'Reply to sender';
-$labels['replytoallmessage'] = 'Reply to list or to sender and all recipients';
-$labels['replyall'] = 'Reply all';
-$labels['replylist'] = 'Reply list';
$labels['forward'] = 'കൈമാറàµà´•';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'സനàµà´¦àµ‡à´¶à´‚ കൈമാറàµà´•';
$labels['deletemessage'] = 'സനàµà´¦àµ‡à´¶à´‚ മായàµà´•àµà´•àµà´•';
$labels['movemessagetotrash'] = 'സനàµà´¦àµ‡à´¶à´‚ ചവറàµà´±àµà´•àµà´Ÿàµà´Ÿà´¯à´¿à´²àµ‡à´•àµà´•àµ നീകàµà´•àµà´•';
@@ -143,19 +95,15 @@ $labels['previousmessage'] = 'à´®àµà´¨àµâ€à´ªàµà´³à´³ സനàµà´¦àµ‡à´¶à´‚
$labels['firstmessage'] = 'ആദàµà´¯à´¤àµà´¤àµ† സനàµà´¦àµ‡à´¶à´‚ കാണികàµà´•àµà´•.';
$labels['nextmessage'] = 'à´…à´Ÿàµà´¤àµà´¤ സനàµà´¦àµ‡à´¶à´‚ കാണികàµà´•àµà´•.';
$labels['lastmessage'] = 'അവസാനതàµà´¤àµ† സനàµà´¦àµ‡à´¶à´‚ കാണികàµà´•àµà´•.';
-$labels['backtolist'] = 'Back to message list';
$labels['viewsource'] = 'ഉറവിടം കാണികàµà´•àµà´•.';
$labels['mark'] = 'അടയാളപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµ';
$labels['markmessages'] = 'സനàµà´¤àµ‡à´¶à´™àµà´™à´³àµâ€ അടയാളപàµà´ªàµ†à´Ÿàµà´¤àµà´¤àµ';
$labels['markread'] = 'വായിചàµà´šà´¤à´¾à´¯à´¿';
$labels['markunread'] = 'വായികàµà´•à´¾à´¤àµà´¤à´¤à´¾à´¯à´¿';
-$labels['markflagged'] = 'As flagged';
-$labels['markunflagged'] = 'As unflagged';
$labels['moreactions'] = 'കൂടàµà´¤à´²àµâ€ ചെയàµà´¤à´¿à´•à´³àµâ€...';
$labels['more'] = 'കൂടàµà´¤à´²àµâ€';
$labels['back'] = 'പിനàµà´¨àµ‹à´Ÿàµà´Ÿàµ';
$labels['options'] = 'à´à´šàµà´›à´¿à´•à´™àµà´™à´³àµâ€â€Œ';
-
$labels['select'] = 'തെരഞàµà´žàµ†à´Ÿàµà´•àµà´•àµà´•';
$labels['all'] = 'à´Žà´²àµà´²à´¾à´‚';
$labels['none'] = 'à´’à´¨àµà´¨àµà´®à´¿à´²àµà´²';
@@ -163,119 +111,54 @@ $labels['currpage'] = 'നിലവിലàµà´³à´³ പേജàµ';
$labels['unread'] = 'വായികàµà´•à´¾à´¤àµà´¤à´¤àµ';
$labels['flagged'] = 'അടയാളപàµà´ªàµ†à´Ÿàµà´¤àµà´¤à´¿à´¯à´µ';
$labels['unanswered'] = 'മറàµà´ªà´Ÿà´¿ കൊടàµà´•àµà´•à´¾à´¤àµà´¤';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'മായàµà´šàµà´šà´µ';
-$labels['undeleted'] = 'Not deleted';
$labels['invert'] = 'തലതിരികàµà´•àµà´•';
$labels['filter'] = 'à´…à´°à´¿à´ªàµà´ª';
$labels['list'] = 'പടàµà´Ÿà´¿à´•';
-$labels['threads'] = 'Threads';
$labels['expand-all'] = 'à´Žà´²àµà´²à´¾à´‚ വികസിപàµà´ªà´¿à´•àµà´•àµà´•';
$labels['expand-unread'] = 'വായികàµà´•à´¾à´¤àµà´¤à´µ വികസിപàµà´ªà´¿à´•àµà´•àµà´•';
$labels['collapse-all'] = 'à´Žà´²àµà´²à´¾à´‚ à´…à´Ÿà´¯àµà´•àµà´•àµà´•';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
$labels['fromto'] = 'എവിടàµà´¨àµà´¨àµ /à´Žà´™àµà´™àµŠà´Ÿàµà´Ÿàµ';
-$labels['flag'] = 'Flag';
-$labels['attachment'] = 'Attachment';
$labels['nonesort'] = 'à´’à´¨àµà´¨àµà´®à´¿à´²àµà´²';
$labels['sentdate'] = 'അയചàµà´š തീയതി';
$labels['arrival'] = 'വനàµà´¨ തീയതി';
$labels['asc'] = 'ആരോഹണം';
$labels['desc'] = 'അവരോഹണം';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
$labels['listorder'] = 'തരംതിരികàµà´•à´£àµà´Ÿ രീതി';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'à´šàµà´°àµà´•àµà´•àµ';
$labels['empty'] = 'ശൂനàµà´¯à´‚';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'à´¡à´¿à´¸àµà´•àµà´•àµ ഉപയോഗം';
$labels['unknown'] = 'അറിയാതàµà´¤';
$labels['unlimited'] = 'പരിമിതികളിലàµà´²à´¾à´¤àµà´¤';
-
$labels['quicksearch'] = 'പെടàµà´Ÿàµ†à´¨àµà´¨àµ തെരയàµ';
-$labels['resetsearch'] = 'Reset search';
-$labels['searchmod'] = 'Search modifiers';
$labels['msgtext'] = 'à´®àµà´´àµà´µà´¨àµâ€ സനàµà´¦àµ‡à´¶à´µàµà´‚';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'à´ªàµà´¤à´¿à´¯ വിനàµâ€à´¡àµ‹à´¯à´¿à´²àµâ€ à´¤àµà´±à´•àµà´•àµà´•';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'à´ªàµà´¤à´¿à´¯à´¤à´¾à´¯à´¿ തിരàµà´¤àµà´¤àµà´•';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'സനàµà´¦àµ‡à´¶à´‚ അയയàµà´•àµà´•àµà´•';
$labels['savemessage'] = 'പൂരàµâ€à´¤àµà´¤à´¿à´¯à´¾à´•à´¾à´¤àµà´¤à´µ ആയി സൂകàµà´·à´¿à´•àµà´•àµà´•';
$labels['addattachment'] = 'ഒരൠഫയലàµâ€ മെയിലിനൊപàµà´ªà´‚ ചേരàµâ€à´•àµà´•àµà´•';
-$labels['charset'] = 'Charset';
$labels['editortype'] = 'തിരàµà´¤àµà´¤à´²àµâ€ രീതി';
-$labels['returnreceipt'] = 'Return receipt';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
$labels['originalmessage'] = 'യഥാരàµâ€à´¥ സനàµà´¦àµ‡à´¶à´‚';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'à´…à´•àµà´·à´°à´¤àµà´¤àµ†à´±àµà´±àµàµ പരിശോധികàµà´•àµà´•';
$labels['resumeediting'] = 'തിരàµà´¤àµà´¤à´²àµâ€ à´¤àµà´Ÿà´°àµà´•';
-$labels['revertto'] = 'Revert to';
-
$labels['attach'] = 'സംയോജിപàµà´ªà´¿à´•àµà´•àµ';
$labels['attachments'] = 'à´…à´±àµà´±à´¾à´šàµà´šàµà´®àµ†à´¨àµà´±àµà´•à´³àµâ€';
$labels['upload'] = 'à´…à´ªàµâ€Œà´²àµ‹à´¡àµ ചെയàµà´¯àµà´•';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'à´…à´Ÿà´¯àµà´•àµà´•àµà´•';
$labels['messageoptions'] = 'സനàµà´¦àµ‡à´¶ ​à´à´šàµà´›à´¿à´•à´™àµà´™à´³àµâ€...';
-
$labels['low'] = 'à´•àµà´±à´žàµà´ž';
$labels['lowest'] = 'à´à´±àµà´±à´µàµà´‚ à´•àµà´±à´žàµà´ž';
$labels['normal'] = 'സാധാരണ';
$labels['high'] = 'കൂടിയ';
$labels['highest'] = 'à´à´±àµà´±à´µàµà´‚ കൂടിയതàµ';
-
$labels['nosubject'] = '(വിഷയം ഇലàµà´²)';
$labels['showimages'] = 'à´šà´¿à´¤àµà´°à´™àµà´™à´³àµâ€ കാണികàµà´•àµà´•';
-$labels['alwaysshow'] = 'Always show images from $sender';
$labels['isdraft'] = 'ഇതൊരൠകരടàµà´°àµ‚പമാണàµ.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
-$labels['plaintoggle'] = 'Plain text';
-$labels['savesentmessagein'] = 'Save sent message in';
$labels['dontsave'] = 'à´¸àµà´•àµà´·à´¿à´•àµà´•à´°àµà´¤àµ';
$labels['maxuploadsize'] = '$size ആണൠപരമാവധി ഫയലàµâ€ വലിപàµà´ªà´‚';
-
-$labels['addcc'] = 'Add Cc';
-$labels['addbcc'] = 'Add Bcc';
-$labels['addreplyto'] = 'Add Reply-To';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
-$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
-$labels['receiptread'] = 'Return Receipt (read)';
-$labels['yourmessage'] = 'This is a Return Receipt for your message';
-$labels['receiptnote'] = 'Note: This receipt only acknowledges that the message was displayed on the recipient\'s computer. There is no guarantee that the recipient has read or understood the message contents.';
-
-// address boook
-$labels['name'] = 'Display Name';
$labels['firstname'] = 'ആദàµà´¯ നാമം';
$labels['surname'] = 'അവസാന നാമം';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
$labels['nickname'] = 'ചെലàµà´²à´ªàµ‡à´°àµ';
$labels['jobtitle'] = 'ജോലിയàµà´Ÿàµ† പേരàµ';
$labels['department'] = 'വകàµà´ªàµà´ªàµ';
@@ -292,19 +175,16 @@ $labels['country'] = 'രാജàµà´¯à´‚';
$labels['birthday'] = 'പിറനàµà´¨à´¾à´³àµâ€';
$labels['anniversary'] = 'വാരàµâ€à´·à´¿à´•à´‚';
$labels['website'] = 'വെബàµà´¸àµˆà´±àµà´±àµ';
-$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'à´•àµà´±à´¿à´ªàµà´ªàµà´•à´³àµâ€';
$labels['male'] = 'à´ªàµà´°àµà´·à´¨àµâ€';
$labels['female'] = 'à´¸àµâ€Œà´¤àµà´°àµ€';
$labels['manager'] = 'പരിപാലകനàµâ€';
$labels['assistant'] = 'സഹായി';
$labels['spouse'] = 'ഭാരàµà´¯/à´­à´°àµâ€à´¤àµà´¤à´¾à´µàµ';
-$labels['allfields'] = 'All fields';
$labels['search'] = 'തെരയàµà´•';
$labels['advsearch'] = 'വിപàµà´²à´®à´¾à´¯ തിരചàµà´šà´¿à´²àµâ€';
$labels['advanced'] = 'സങàµà´•àµ€à´°àµâ€à´£àµà´£à´‚';
$labels['other'] = 'മറàµà´±àµà´³àµà´³à´¤àµ';
-
$labels['typehome'] = 'ആസàµà´¥à´¾à´¨à´‚';
$labels['typework'] = 'ജോലി';
$labels['typeother'] = 'മറàµà´±àµà´³àµà´³à´¤àµ';
@@ -319,14 +199,7 @@ $labels['typeassistant'] = 'സഹായി';
$labels['typehomepage'] = 'ഹോം പേജàµ';
$labels['typeblog'] = 'à´¬àµà´²àµ‹à´—àµ';
$labels['typeprofile'] = 'à´ªàµà´°àµŠà´«àµˆà´²àµâ€';
-
-$labels['addfield'] = 'Add field...';
-$labels['addcontact'] = 'Add new contact';
-$labels['editcontact'] = 'Edit contact';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
$labels['personalinfo'] = 'à´¸àµà´µà´•à´¾à´°àµà´¯ വിവരങàµà´™à´³àµâ€';
-
$labels['edit'] = 'തിരàµà´¤àµà´¤àµà´•';
$labels['cancel'] = 'റദàµà´¦à´¾à´•àµà´•àµà´•';
$labels['save'] = 'സൂകàµà´·à´¿à´•àµà´•àµà´•';
@@ -334,198 +207,58 @@ $labels['delete'] = 'നീകàµà´•à´‚ ചെയàµà´¯àµà´•';
$labels['rename'] = 'പേരàµà´®à´¾à´±àµà´±àµà´•';
$labels['addphoto'] = 'ചേരàµâ€à´•àµà´•àµà´•';
$labels['replacephoto'] = 'പകരം വയàµà´•àµà´•àµà´•';
-$labels['uploadphoto'] = 'Upload photo';
-
-$labels['newcontact'] = 'Create new contact card';
-$labels['deletecontact'] = 'Delete selected contacts';
-$labels['composeto'] = 'Compose mail to';
-$labels['contactsfromto'] = 'Contacts $from to $to of $count';
$labels['print'] = 'à´…à´šàµà´šà´Ÿà´¿';
$labels['export'] = 'à´ªàµà´±à´¤àµà´¤àµ†à´Ÿàµà´•àµà´•àµà´•';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
-$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
$labels['grouprename'] = 'à´•àµà´Ÿàµà´Ÿà´¤àµà´¤à´¿à´¨àµà´±àµ† പേരൠമാറàµà´±àµà´•';
$labels['groupdelete'] = 'കൂടàµà´Ÿà´‚ മായàµà´•àµà´•àµà´•';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'à´®àµà´®àµà´ªàµà´³à´³ താളàµâ€ കാണിയàµà´•àµà´•àµà´•';
-$labels['firstpage'] = 'Show first page';
-$labels['nextpage'] = 'Show next page';
-$labels['lastpage'] = 'Show last page';
-
$labels['group'] = 'കൂടàµà´Ÿà´‚';
$labels['groups'] = 'കൂടàµà´Ÿà´™àµà´™à´³àµâ€';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'à´¸àµà´µà´•à´¾à´°àµà´¯ വിലാസങàµà´™à´³àµâ€';
-
$labels['searchsave'] = 'തിരയലàµâ€ സൂകàµà´·à´¿à´•àµà´•àµà´•';
$labels['searchdelete'] = 'തിരയലàµâ€ നീകàµà´•à´‚ചെയàµà´¯àµà´•';
-
$labels['import'] = 'à´ªàµà´°àµ‹à´—àµà´°à´®àµà´®à´¿à´²àµ‡à´•àµà´•àµ à´Žà´Ÿàµà´•àµà´•àµà´•';
-$labels['importcontacts'] = 'Import contacts';
-$labels['importfromfile'] = 'Import from file:';
-$labels['importtarget'] = 'Add new contacts to address book:';
-$labels['importreplace'] = 'Replace the entire address book';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'പൂരàµâ€à´¤àµà´¤àµ€à´•à´°à´¿à´šàµà´šàµ';
-
-// settings
-$labels['settingsfor'] = 'Settings for';
$labels['about'] = 'വിവരം';
-$labels['preferences'] = 'Preferences';
$labels['userpreferences'] = 'ഉപയൊകàµà´¤ à´®àµà´¨àµâ€à´—ണനകളàµâ€';
-$labels['editpreferences'] = 'Edit user preferences';
-
-$labels['identities'] = 'Identities';
-$labels['manageidentities'] = 'Manage identities for this account';
-$labels['newidentity'] = 'New identity';
-
-$labels['newitem'] = 'New item';
-$labels['edititem'] = 'Edit item';
-
$labels['preferhtml'] = 'HTML കാണികàµà´•àµà´•';
-$labels['defaultcharset'] = 'Default Character Set';
-$labels['htmlmessage'] = 'HTML Message';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
-$labels['prettydate'] = 'Pretty dates';
-$labels['setdefault'] = 'Set default';
-$labels['autodetect'] = 'Auto';
$labels['language'] = 'ഭാഷ';
$labels['timezone'] = 'സമയ മേഖല';
$labels['pagesize'] = 'ഒരൠതാളിലെ വരികളàµâ€';
$labels['signature'] = 'à´’à´ªàµà´ªàµ';
-$labels['dstactive'] = 'Daylight saving time';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'HTML സനàµà´¦àµ‡à´¶à´™àµà´™à´³àµâ€ à´°à´šà´¿à´•àµà´•àµà´•';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
-$labels['htmlsignature'] = 'HTML signature';
-$labels['showemail'] = 'Show email address with display name';
-$labels['previewpane'] = 'Show preview pane';
-$labels['skin'] = 'Interface skin';
-$labels['logoutclear'] = 'Clear Trash on logout';
-$labels['logoutcompact'] = 'Compact Inbox on logout';
-$labels['uisettings'] = 'User Interface';
$labels['serversettings'] = 'സേവകനàµà´±àµ† à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™à´³àµâ€';
-$labels['mailboxview'] = 'Mailbox View';
-$labels['mdnrequests'] = 'On request for return receipt';
$labels['askuser'] = 'à´Žà´¨àµà´¨àµŠà´Ÿàµ ചോദികàµà´•àµà´•';
-$labels['autosend'] = 'send receipt';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['ignore'] = 'അവഗണികàµà´•àµà´•';
-$labels['readwhendeleted'] = 'Mark the message as read on delete';
-$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
-$labels['skipdeleted'] = 'Do not show deleted messages';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
$labels['always'] = 'à´Žà´ªàµà´ªàµ‹à´´àµà´‚';
-$labels['showinlineimages'] = 'Display attached images below the message';
-$labels['autosavedraft'] = 'Automatically save draft';
-$labels['everynminutes'] = 'every $n minute(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'à´’à´°à´¿à´•àµà´•à´²àµà´®à´¿à´²àµà´²';
$labels['immediately'] = 'ഉടനടി';
-$labels['messagesdisplaying'] = 'Displaying Messages';
-$labels['messagescomposition'] = 'Composing Messages';
-$labels['mimeparamfolding'] = 'Attachment names';
$labels['2231folding'] = 'Full RFC 2231 (തണàµà´Ÿà´°àµâ€à´¬àµ‡à´Ÿàµ )';
$labels['miscfolding'] = 'Full RFC 2231 ( മൈകàµà´°àµŠà´¸àµŠà´«àµà´±àµà´±àµ ഔടàµà´Ÿàµà´²àµ‚à´•àµà´•àµàµ )';
$labels['2047folding'] = 'Full RFC 2047 (മറàµà´±àµà´³àµà´³à´µ)';
$labels['force7bit'] = '8-bit à´…à´•àµà´·à´°à´™àµà´™à´³àµâ€à´•àµà´•àµ "MIME encoding" ഉപയോഗികàµà´•àµà´•';
$labels['advancedoptions'] = 'വിപàµà´²àµ€à´•àµà´°à´¿à´¤à´®à´¾à´¯ à´•àµà´°à´®àµ€à´•à´°à´£à´™àµà´™à´³àµâ€';
-$labels['focusonnewmessage'] = 'Focus browser window on new message';
-$labels['checkallfolders'] = 'Check all folders for new messages';
-$labels['displaynext'] = 'After message delete/move display the next message';
$labels['defaultfont'] = 'HTML സനàµà´¦àµ‡à´¶à´¤àµà´¤à´¿à´¨àµà´±àµ† തനതായ ലിപി';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'വിഭാഗം';
-$labels['maintenance'] = 'Maintenance';
$labels['newmessage'] = 'à´ªàµà´¤à´¿à´¯ സനàµà´¦àµ‡à´¶à´‚';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
-$labels['autoaddsignature'] = 'Automatically add signature';
$labels['newmessageonly'] = 'à´ªàµà´¤à´¿à´¯ സനàµà´¦àµ‡à´¶à´‚ മാതàµà´°à´‚';
-$labels['replyandforwardonly'] = 'replies and forwards only';
-$labels['insertsignature'] = 'Insert signature';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
$labels['afternseconds'] = '$n നിമിഷങàµà´™à´³àµâ€ à´•à´´à´¿à´žàµà´žàµàµ';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
$labels['spellcheckignorenums'] = 'à´…à´•àµà´•à´™àµà´™à´³àµâ€ ഉളàµà´³ വാകàµà´•àµà´•à´³àµ† അവഗണികàµà´•àµà´•';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
$labels['addtodict'] = 'നിഘണàµà´Ÿàµà´µà´¿à´²àµâ€ ചേരàµâ€à´•àµà´•àµà´•';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
-$labels['folder'] = 'Folder';
$labels['folders'] = 'ഫോളàµâ€à´¡à´±àµà´•à´³àµâ€';
-$labels['foldername'] = 'Folder name';
-$labels['subscribed'] = 'Subscribed';
-$labels['messagecount'] = 'Messages';
-$labels['create'] = 'Create';
-$labels['createfolder'] = 'Create new folder';
-$labels['managefolders'] = 'Manage folders';
-$labels['specialfolders'] = 'Special Folders';
$labels['properties'] = 'സവിശേഷതകളàµâ€';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
$labels['info'] = 'വിവരം';
$labels['getfoldersize'] = 'അറയàµà´Ÿàµ† വലàµà´ªàµà´ªà´‚ അരിയാനàµâ€ à´•àµà´²à´¿à´•àµà´•àµ ചെയàµà´¯àµà´•';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
$labels['personalfolder'] = 'à´¸àµà´µà´•à´¾à´°àµà´¯ à´…à´±';
-$labels['otherfolder'] = 'Other User\'s Folder';
$labels['sharedfolder'] = 'പൊതൠ- അറ';
-
-$labels['sortby'] = 'Sort by';
-$labels['sortasc'] = 'Sort ascending';
-$labels['sortdesc'] = 'Sort descending';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
$labels['support'] = 'സഹായം തേടàµà´•';
-
-// units
-$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'യൂണികàµà´•àµ‹à´¡àµ';
$labels['english'] = 'ഇംഗàµà´²àµ€à´·àµ';
$labels['westerneuropean'] = 'പടിഞàµà´žà´¾à´±à´¨àµâ€ യൂറോപàµà´¯à´¨àµâ€';
$labels['easterneuropean'] = 'à´•à´¿à´´à´•àµà´•à´¨àµâ€ യൂറോപàµà´¯à´¨àµâ€';
-$labels['southeasterneuropean'] = 'South-Eastern European';
$labels['baltic'] = 'ബാളàµâ€à´Ÿàµà´Ÿà´¿à´•àµà´•àµ';
$labels['cyrillic'] = 'സിറിലàµà´²à´¿à´•àµà´•àµ';
$labels['arabic'] = 'അറബികàµà´•àµ';
@@ -539,5 +272,4 @@ $labels['vietnamese'] = 'വിയറàµà´±àµà´¨à´¾à´®àµ€à´¸àµ';
$labels['japanese'] = 'ജാപàµà´ªà´¨àµ€à´¸àµ';
$labels['korean'] = 'കൊറിയനàµâ€';
$labels['chinese'] = 'ചൈനീസàµâ€Œ';
-
?>
diff --git a/program/localization/ml_IN/messages.inc b/program/localization/ml_IN/messages.inc
index cc189a17d..9abaeda99 100644
--- a/program/localization/ml_IN/messages.inc
+++ b/program/localization/ml_IN/messages.inc
@@ -15,162 +15,13 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
-$messages['loginfailed'] = 'Login failed.';
$messages['cookiesdisabled'] = 'തങàµà´•à´³àµà´Ÿàµ† à´¬àµà´°à´µàµàµà´¸à´°àµâ€ à´•àµà´•àµà´•àµ€à´¸àµ à´¸àµà´µàµ€à´•à´°à´¿à´•àµà´•àµà´¨àµà´¨à´¤à´²àµà´²';
-$messages['sessionerror'] = 'Your session is invalid or expired.';
-$messages['storageerror'] = 'Connection to storage server failed.';
$messages['servererror'] = 'സരàµâ€à´µà´°àµâ€ പിഴവൠ!';
-$messages['servererrormsg'] = 'Server Error: $msg';
-$messages['dberror'] = 'Database Error!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
$messages['errornoperm'] = 'à´ªàµà´°à´µà´°àµâ€à´¤àµà´¤à´¨à´‚ തടസപàµà´ªàµ†à´Ÿàµà´Ÿàµ . à´…à´¨àµà´®à´¤à´¿ നിഷേധികàµà´•à´ªàµ†à´Ÿàµà´Ÿà´¿à´°à´¿à´•àµà´•àµà´¨àµà´¨àµ';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'അസാധàµà´µà´¾à´¯ അപേകàµà´· ! ഒരൠരേഖയàµà´‚ സൂകàµà´·à´¿à´šàµà´šà´¿à´Ÿàµà´Ÿà´¿à´²àµà´²';
-$messages['invalidhost'] = 'Invalid server name.';
-$messages['nomessagesfound'] = 'No messages found in this mailbox.';
-$messages['loggedout'] = 'You have successfully terminated the session. Good bye!';
-$messages['mailboxempty'] = 'Mailbox is empty.';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'à´¤àµà´±à´•àµà´•àµà´¨àµà´¨àµ...';
-$messages['uploading'] = 'Uploading file...';
-$messages['uploadingmany'] = 'Uploading files...';
-$messages['loadingdata'] = 'Loading data...';
$messages['checkingmail'] = 'à´ªàµà´¤à´¿à´¯ സനàµà´¦àµ‡à´¸à´™àµà´™à´³àµâ€à´•àµà´µàµ‡à´£àµà´Ÿà´¿ തിരയàµà´¨àµà´¨àµ...';
$messages['sendingmessage'] = 'സനàµà´¦àµ‡à´¶à´‚ അയകàµà´•àµà´¨àµà´¨àµ...';
-$messages['messagesent'] = 'Message sent successfully.';
-$messages['savingmessage'] = 'Saving message...';
-$messages['messagesaved'] = 'Message saved to Drafts.';
-$messages['successfullysaved'] = 'Successfully saved.';
-$messages['addedsuccessfully'] = 'Contact added successfully to address book.';
-$messages['contactexists'] = 'A contact with the same e-mail address already exists.';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
-$messages['blockedimages'] = 'To protect your privacy, remote images are blocked in this message.';
-$messages['encryptedmessage'] = 'This is an encrypted message and can not be displayed. Sorry!';
-$messages['nocontactsfound'] = 'No contacts found.';
-$messages['contactnotfound'] = 'The requested contact was not found.';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'സനàµà´¦àµ‡à´¶à´‚ അയകàµà´•à´¾à´¨àµâ€ സാധിചàµà´šà´¿à´²àµà´².';
$messages['senttooquickly'] = 'സനàµà´¦àµ‡à´¶à´‚ അയകàµà´•àµà´¨àµà´¨à´¤à´¿à´¨àµ à´®àµà´¨àµà´ªàµ ദയവായൠ$sec കാതàµà´¤à´¿à´°à´¿à´•àµà´•àµ‚';
-$messages['errorsavingsent'] = 'An error occured while saving sent message.';
-$messages['errorsaving'] = 'An error occured while saving.';
-$messages['errormoving'] = 'Could not move the message(s).';
-$messages['errorcopying'] = 'Could not copy the message(s).';
-$messages['errordeleting'] = 'Could not delete the message(s).';
-$messages['errormarking'] = 'Could not mark the message(s).';
-$messages['deletecontactconfirm'] = 'Do you really want to delete selected contact(s)?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
-$messages['deletemessagesconfirm'] = 'Do you really want to delete selected message(s)?';
-$messages['deletefolderconfirm'] = 'Do you really want to delete this folder?';
-$messages['purgefolderconfirm'] = 'Do you really want to delete all messages in this folder?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
-$messages['folderdeleting'] = 'Deleting folder...';
-$messages['foldermoving'] = 'Moving folder...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
-$messages['formincomplete'] = 'The form was not completely filled out.';
-$messages['noemailwarning'] = 'Please enter a valid email address.';
-$messages['nonamewarning'] = 'Please enter a name.';
-$messages['nopagesizewarning'] = 'Please enter a page size.';
-$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
-$messages['norecipientwarning'] = 'Please enter at least one recipient.';
-$messages['nosubjectwarning'] = 'The "Subject" field is empty. Would you like to enter one now?';
-$messages['nobodywarning'] = 'Send this message without text?';
-$messages['notsentwarning'] = 'Message has not been sent. Do you want to discard your message?';
-$messages['noldapserver'] = 'Please select an ldap server to search.';
-$messages['nosearchname'] = 'Please enter a contact name or email address.';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
-$messages['searchsuccessful'] = '$nr messages found.';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
-$messages['searchnomatch'] = 'Search returned no matches.';
-$messages['searching'] = 'Searching...';
-$messages['checking'] = 'Checking...';
-$messages['nospellerrors'] = 'No spelling errors found.';
-$messages['folderdeleted'] = 'Folder successfully deleted.';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
-$messages['deletedsuccessfully'] = 'Successfully deleted.';
-$messages['converting'] = 'Removing formatting...';
-$messages['messageopenerror'] = 'Could not load message from server.';
-$messages['fileuploaderror'] = 'File upload failed.';
-$messages['filesizeerror'] = 'The uploaded file exceeds the maximum size of $size.';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
-$messages['sourceisreadonly'] = 'This address source is read only.';
-$messages['errorsavingcontact'] = 'Could not save the contact address.';
-$messages['movingmessage'] = 'Moving message(s)...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
-$messages['receiptsent'] = 'Successfully sent a read receipt.';
-$messages['errorsendingreceipt'] = 'Could not send the receipt.';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
-$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
-$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
-$messages['selectimportfile'] = 'Please select a file to upload.';
-$messages['addresswriterror'] = 'The selected address book is not writeable.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
-$messages['importwait'] = 'Importing, please wait...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operation not permitted!';
-$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/mr_IN/labels.inc b/program/localization/mr_IN/labels.inc
index d26583d4d..9eb878782 100755..100644
--- a/program/localization/mr_IN/labels.inc
+++ b/program/localization/mr_IN/labels.inc
@@ -15,66 +15,43 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = '$product वरती सà¥à¤µà¤¾à¤—त आहे';
$labels['username'] = 'वापरकरà¥à¤¤à¥à¤¯à¤¾à¤šà¥‡ नाव(तà¥à¤®à¤šà¥‡ इमेल)';
$labels['password'] = 'परवलीचा शबà¥à¤¦';
$labels['server'] = 'सरà¥à¤µà¥à¤¹à¤°';
$labels['login'] = 'पà¥à¤°à¤µà¥‡à¤¶';
-
-// taskbar
$labels['logout'] = 'बाहेर जा';
$labels['mail'] = 'इ-मेल';
$labels['settings'] = 'तà¥à¤®à¤šà¥€ पसंती';
$labels['addressbook'] = 'पतà¥à¤¤à¤¾ नोंदवही';
-
-// mailbox names
$labels['inbox'] = 'आलेले संदेश';
$labels['drafts'] = 'मसà¥à¤¦à¤¾';
$labels['sent'] = 'पाठवलेले';
$labels['trash'] = 'कचरा पेटी';
$labels['junk'] = 'नको असलेले कचरा संदेश';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'विषय';
$labels['from'] = 'पà¥à¤°à¥‡à¤·à¤•';
-$labels['sender'] = 'Sender';
$labels['to'] = 'पà¥à¤°à¤¤à¥€';
$labels['cc'] = 'पà¥à¤°à¤¤';
$labels['bcc'] = 'गà¥à¤ªà¥à¤¤ पà¥à¤°à¤¤';
$labels['replyto'] = 'यास उतà¥à¤¤à¤° दà¥à¤¯à¤¾';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'दिनांक';
$labels['size'] = 'आकार';
$labels['priority'] = 'पà¥à¤°à¤¾à¤§à¤¾à¤¨à¥à¤¯';
$labels['organization'] = 'संसà¥à¤¥à¤¾';
$labels['readstatus'] = 'वाचन सà¥à¤¥à¤¿à¤¤à¥€';
$labels['listoptions'] = 'विकलà¥à¤ª सूची';
-
$labels['mailboxlist'] = 'फोलà¥à¤¡à¤°à¥à¤¸';
$labels['messagesfromto'] = 'संदेश $from कडून $to साठी $count वा';
$labels['threadsfromto'] = 'धागे $from कडून $to साठी $count वा';
$labels['messagenrof'] = 'Message $nr of $count';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'नकà¥â€à¤•à¤²';
$labels['move'] = 'हलवा';
$labels['moveto'] = 'या फोलà¥à¤¡à¤°à¤®à¤§à¥‡ ठेवा';
$labels['download'] = 'उतरवून घà¥à¤¯à¤¾';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'फाईलचे नाव';
$labels['filesize'] = 'फाईलचा आकार';
-
$labels['addtoaddressbook'] = 'पतà¥à¤¤à¤¾ नोंदवहीत नोंदवा';
-
-// weekdays short
$labels['sun'] = 'रवी';
$labels['mon'] = 'सोम';
$labels['tue'] = 'मंगळ';
@@ -82,8 +59,6 @@ $labels['wed'] = 'बà¥à¤§';
$labels['thu'] = 'गà¥à¤°à¥';
$labels['fri'] = 'शà¥à¤•à¥à¤°';
$labels['sat'] = 'शनी';
-
-// weekdays long
$labels['sunday'] = 'रविवार';
$labels['monday'] = 'सोमवार';
$labels['tuesday'] = 'मंगळवार';
@@ -91,8 +66,6 @@ $labels['wednesday'] = 'बà¥à¤§à¤µà¤¾à¤°';
$labels['thursday'] = 'गà¥à¤°à¥à¤µà¤¾à¤°';
$labels['friday'] = 'शà¥à¤•à¥à¤°à¤µà¤¾à¤°';
$labels['saturday'] = 'शनीवार';
-
-// months short
$labels['jan'] = 'जाने';
$labels['feb'] = 'फेबà¥';
$labels['mar'] = 'मारà¥à¤š';
@@ -105,8 +78,6 @@ $labels['sep'] = 'सपà¥à¤Ÿà¥‡à¤‚';
$labels['oct'] = 'ऑकà¥à¤Ÿà¥‹';
$labels['nov'] = 'नोवà¥à¤¹à¥‡à¤‚';
$labels['dec'] = 'डिसें';
-
-// months long
$labels['longjan'] = 'जानेवारी';
$labels['longfeb'] = 'फेबà¥à¤°à¥‚वारी';
$labels['longmar'] = 'मारà¥à¤š';
@@ -119,10 +90,7 @@ $labels['longsep'] = 'सपà¥à¤Ÿà¥‡à¤‚बर';
$labels['longoct'] = 'ऑकà¥à¤Ÿà¥‹à¤¬à¤°';
$labels['longnov'] = 'नोवà¥à¤¹à¥‡à¤‚बर';
$labels['longdec'] = 'डिसेंबर';
-
$labels['today'] = 'आज';
-
-// toolbar buttons
$labels['refresh'] = 'अदà¥à¤¯à¤¯à¤¾à¤µà¤¤ करा';
$labels['checkmail'] = 'नवीन संदेश आले आहेत का पहा';
$labels['compose'] = 'नवीन संदेश तयार करा';
@@ -131,10 +99,6 @@ $labels['reply'] = 'उतà¥à¤¤à¤° दया';
$labels['replytomessage'] = 'पाठवणारà¥â€à¤¯à¤¾à¤²à¤¾ उतà¥à¤¤à¤° दà¥à¤¯à¤¾';
$labels['replytoallmessage'] = 'पाठवणारà¥â€à¤¯à¤¾à¤²à¤¾ आणि पà¥à¤°à¤¤ केलेलà¥à¤¯à¤¾ सरà¥à¤µà¤¾à¤‚ना संदेश पाठवा';
$labels['replyall'] = 'सरà¥à¤µà¤¾à¤‚ना उतà¥à¤¤à¤° दया';
-$labels['replylist'] = 'Reply list';
-$labels['forward'] = 'Forward';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'हा संदेश पà¥à¤¢à¥‡ पाठवा';
$labels['deletemessage'] = 'संदेश काढून टाका';
$labels['movemessagetotrash'] = 'संदेश कचरापेटीत टाका';
@@ -155,7 +119,6 @@ $labels['moreactions'] = 'अधिक कृती..';
$labels['more'] = 'अधिक';
$labels['back'] = 'मागे';
$labels['options'] = 'परà¥à¤¯à¤¾à¤¯';
-
$labels['select'] = 'निवडा';
$labels['all'] = 'सरà¥à¤µ';
$labels['none'] = 'कोणताही नाही';
@@ -163,9 +126,7 @@ $labels['currpage'] = 'सधà¥â€à¤¯à¤¾à¤šà¥‡ पान';
$labels['unread'] = 'न वाचलेले';
$labels['flagged'] = 'खूण लावलेले';
$labels['unanswered'] = 'उतà¥à¤¤à¤° न दिलेले';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'काढून टाकलेला(ले)';
-$labels['undeleted'] = 'Not deleted';
$labels['invert'] = 'उलट करा';
$labels['filter'] = 'गाळणी';
$labels['list'] = 'यादी';
@@ -174,7 +135,6 @@ $labels['expand-all'] = 'सरà¥à¤µ विसà¥â€à¤¤à¤¾à¤°à¥€à¤¤ करा';
$labels['expand-unread'] = 'न वाचलेला विसà¥â€à¤¤à¤¾à¤°à¤¾';
$labels['collapse-all'] = 'सरà¥à¤µ मिटवा';
$labels['threaded'] = 'धागा लावलेला';
-
$labels['autoexpand_threads'] = 'संदेश धागे विसà¥â€à¤¤à¤¾à¤°à¤¾';
$labels['do_expand'] = 'सरà¥à¤µ धागे';
$labels['expand_only_unread'] = 'फकà¥â€à¤¤ न वाचलेलà¥â€à¤¯à¤¾ संदेशांबददल';
@@ -190,31 +150,19 @@ $labels['listcolumns'] = 'सà¥à¤šà¥€ सà¥â€à¤¤à¤‚भ';
$labels['listsorting'] = 'सà¥â€à¤¤à¤‚भ वरà¥à¤—ीकरण';
$labels['listorder'] = 'वरà¥à¤—ीकरण कà¥à¤°à¤®';
$labels['listmode'] = 'यादी दरà¥à¤¶à¤• पधà¥â€à¤¦à¤¤';
-
$labels['folderactions'] = 'फोलà¥à¤¡à¤° कृती..';
$labels['compact'] = 'छोटा';
$labels['empty'] = 'रिकामा';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'डिसà¥à¤•à¤šà¤¾ वापर';
$labels['unknown'] = 'माहित नसलेला';
$labels['unlimited'] = 'अमरà¥à¤¯à¤¾à¤¦';
-
$labels['quicksearch'] = 'चटकन शोध';
$labels['resetsearch'] = 'परत शोध';
$labels['searchmod'] = 'बदलकरà¥à¤¤à¥â€à¤¯à¤¾à¤‚ना शोधा';
$labels['msgtext'] = 'संपूरà¥à¤£ संदेश';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'नवीन खिडकी उघडा';
$labels['emlsave'] = 'इà¤à¤®à¤à¤² सà¥â€à¤µà¤°à¥‚पात उतरवून घà¥à¤¯à¤¾';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'नवीन आहे असा संपादित करा';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'आतà¥à¤¤à¤¾ पाठवा';
$labels['savemessage'] = 'हा मसूदा साठवून ठेवा';
$labels['addattachment'] = 'फाईल सोबत जोडा';
@@ -224,109 +172,75 @@ $labels['returnreceipt'] = 'पोच पावती';
$labels['dsn'] = 'पोच सà¥à¤¥à¤¿à¤¤à¥€ निरà¥à¤¦à¥‡à¤¶à¤•';
$labels['mailreplyintro'] = '$date या दिवशी $sender ने लिहीले :';
$labels['originalmessage'] = 'खरा संदेश';
-
$labels['editidents'] = 'ओळख संपादित करा';
$labels['spellcheck'] = 'लिखाण';
$labels['checkspelling'] = 'शà¥à¤§à¥à¤¦ लेखन';
$labels['resumeediting'] = 'परत संदेश संपादित करा';
$labels['revertto'] = 'परत जा';
-
$labels['attach'] = 'जोडा';
$labels['attachments'] = 'जोडलेलà¥à¤¯à¤¾';
$labels['upload'] = 'चढवा';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'बंद';
$labels['messageoptions'] = 'संदेश परà¥à¤¯à¤¾à¤¯..';
-
$labels['low'] = 'कमी';
$labels['lowest'] = 'कमित कमी';
$labels['normal'] = 'नेहमी पà¥à¤°à¤®à¤¾à¤£à¥‡';
$labels['high'] = 'तातडीचे';
$labels['highest'] = 'अतिशय तातडीचे';
-
$labels['nosubject'] = '(विषय नाही)';
$labels['showimages'] = 'चितà¥à¤° दाखवा';
$labels['alwaysshow'] = '$sender कडून आलेलà¥à¤¯à¤¾ संदेशातील चितà¥à¤°à¥‡ नेहमी दाखवा';
$labels['isdraft'] = 'हा मसà¥à¤¦à¤¾ संदेश आहे';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'à¤à¤š टी à¤à¤® à¤à¤²';
$labels['plaintoggle'] = 'साधे लिखाण';
$labels['savesentmessagein'] = 'पाठवलेला संदेश या फोलà¥à¤¡à¤°à¤®à¤§à¥‡ ठेवा';
$labels['dontsave'] = 'संदेश साठवू नका';
$labels['maxuploadsize'] = 'जासà¥â€à¤¤à¥€à¤¤ जासà¥â€à¤¤ फाइलचा आकार $size असू शकतो';
-
$labels['addcc'] = 'पà¥à¤°à¤¤ करा';
$labels['addbcc'] = 'गà¥à¤ªà¥à¤¤ पà¥à¤°à¤¤ करा';
$labels['addreplyto'] = 'आणखी लोकांना संदेश पाठवा';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'हा संदेश पाठवणारà¥â€à¤¯à¤¾à¤¨à¥‡ हा संदेश तà¥à¤®à¥à¤¹à¥€ वाचलà¥à¤¯à¤¾à¤µà¤° कळवावयाला सांगितले आहे. तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ असे कळवणे चालेल ना?';
$labels['receiptread'] = 'पोच पावती (संदेश वाचला)';
$labels['yourmessage'] = 'ही तà¥à¤®à¤šà¥à¤¯à¤¾ संदेशाची पोच पावती आहे.';
$labels['receiptnote'] = 'सूचना: ही पोच पावती तà¥à¤®à¥à¤¹à¥€ जà¥à¤¯à¤¾à¤‚ना संदेश पाठवला तà¥à¤¯à¤¾à¤‚चà¥à¤¯à¤¾ संगणकावर दिसला à¤à¤µà¤¢à¥‡à¤š सांगते. तà¥à¤®à¥à¤¹à¥€ जà¥à¤¯à¤¾à¤‚ना हा संदेश पाठवला, तà¥à¤¯à¤¾à¤‚नी तो वाचला, आणि तà¥à¤¯à¤¾à¤‚ना तो नकà¥à¤•à¥€ समजला हे मातà¥à¤° सांगत नाही.';
-
-// address boook
$labels['name'] = 'टोपणनाव';
$labels['firstname'] = 'नाव';
$labels['surname'] = 'आडनाव';
$labels['middlename'] = 'मधले नाव';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
$labels['nickname'] = 'टोपणनाव';
$labels['jobtitle'] = 'कामाचे शिरà¥à¤·à¤•';
$labels['department'] = 'विभाग';
$labels['gender'] = 'लिंग';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'इ-मेलà¥';
$labels['phone'] = 'दूरधà¥à¤µà¤¨à¥€';
$labels['address'] = 'पतà¥à¤¤à¤¾';
$labels['street'] = 'रसà¥à¤¤à¤¾';
$labels['locality'] = 'शहर';
-$labels['zipcode'] = 'ZIP Code';
$labels['region'] = 'राजà¥à¤¯ / संसà¥à¤¥à¤¾à¤¨';
$labels['country'] = 'देश';
$labels['birthday'] = 'वाढदिवस';
-$labels['anniversary'] = 'Anniversary';
$labels['website'] = 'संकेतसà¥à¤¥à¤³';
-$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'टिपा';
$labels['male'] = 'पà¥à¤°à¥‚ष';
$labels['female'] = 'सà¥à¤¤à¥à¤°à¥€';
$labels['manager'] = 'वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾à¤ªà¤•';
$labels['assistant'] = 'सहायà¥à¤¯à¤•';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
$labels['search'] = 'शोध';
$labels['advsearch'] = 'पà¥à¤°à¤—त शोध';
$labels['advanced'] = 'आधà¥à¤¨à¤¿à¤•';
$labels['other'] = 'इतर';
-
$labels['typehome'] = 'मà¥à¤–à¥à¤¯à¤ªà¥ƒà¤·à¥à¤ ';
$labels['typework'] = 'काम';
$labels['typeother'] = 'इतर';
$labels['typemobile'] = 'भà¥à¤°à¤®à¤£à¤§à¥à¤µà¤¨à¥€';
$labels['typemain'] = 'मà¥à¤–à¥à¤¯';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
$labels['typevideo'] = 'चलचितà¥à¤°';
$labels['typeassistant'] = 'सहायà¥à¤¯à¤•';
$labels['typehomepage'] = 'मà¥à¤–à¥à¤¯ पृषà¥à¤ ';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'नवीन पतà¥à¤¤à¤¾ नोंदवहीत ठेवा';
$labels['editcontact'] = 'नोंदवहीतील पतà¥à¤¤à¤¾ सà¥à¤§à¤¾à¤°à¤¾';
$labels['contacts'] = 'संपरà¥à¤•';
-$labels['contactproperties'] = 'Contact properties';
$labels['personalinfo'] = 'वैयकà¥à¤¤à¤¿à¤• माहिती';
-
$labels['edit'] = 'संदेश तयार करा';
$labels['cancel'] = 'रदà¥à¤¦ करा';
$labels['save'] = 'ठेवून दà¥à¤¯à¤¾';
@@ -334,64 +248,42 @@ $labels['delete'] = 'काढून टाका';
$labels['rename'] = 'दूसरे नाव दà¥à¤¯à¤¾';
$labels['addphoto'] = 'समावेश करा';
$labels['replacephoto'] = 'बदला';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'नोंदवहीत नवीन संपरà¥à¤• लिहिणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€';
$labels['deletecontact'] = 'खूण केलेले सरà¥à¤µ संपरà¥à¤•à¤¾à¤šà¥‡ पतà¥à¤¤à¥‡ काढून टाका';
$labels['composeto'] = 'साठी नवीन संदेश तयार करा';
$labels['contactsfromto'] = '$from पासून ते $to परà¥à¤¯à¤‚त $count पैकी';
$labels['print'] = 'छापा';
$labels['export'] = 'निरà¥à¤¯à¤¾à¤¤ करा';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'वà¥à¤¹à¥€ कारà¥à¤¡ सà¥à¤µà¤°à¥à¤ªà¤¾à¤¤ पतà¥à¤¤à¥‡ निरà¥à¤¯à¤¾à¤¤ करा';
$labels['newcontactgroup'] = 'नवीन पतà¥â€à¤¤à¥â€à¤¯à¤¾à¤‚चा गट बनवा';
-$labels['grouprename'] = 'Rename group';
$labels['groupdelete'] = 'गट नषà¥à¤Ÿ करा';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'आधिचा संच दाखवा';
$labels['firstpage'] = 'पहिला संच दाखवा';
$labels['nextpage'] = 'नंतरचा संच दाखवा';
$labels['lastpage'] = 'शेवटचा संच दाखवा';
-
$labels['group'] = 'गट';
$labels['groups'] = 'अनेक गट';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'वैयकà¥à¤¤à¤¿à¤• पतà¥à¤¤à¥‡';
-
$labels['searchsave'] = 'शोध जतन करा';
$labels['searchdelete'] = 'शोध नषà¥à¤Ÿ करा';
-
$labels['import'] = 'आयात करा';
$labels['importcontacts'] = 'पतà¥à¤¤à¥‡ आयात करा';
$labels['importfromfile'] = 'या फाईल मधून आयात करा';
-$labels['importtarget'] = 'नवीन पतà¥à¤¤à¤¾ नोंदवहीत नोंदवा';
$labels['importreplace'] = 'संपूरà¥à¤£ पतà¥à¤¤à¤¾ नोंदवही बदला';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'à¤à¤¾à¤²à¥‡';
-
-// settings
$labels['settingsfor'] = 'साठी सेटिंगà¥à¤œ';
$labels['about'] = 'चà¥à¤¯à¤¾ विषयी';
$labels['preferences'] = 'तà¥à¤®à¤šà¥€ पसंती';
$labels['userpreferences'] = 'वापरकरà¥à¤¤à¥à¤¯à¤¾à¤šà¥€ पसंती';
$labels['editpreferences'] = 'वापरकरà¥à¤¤à¥à¤¯à¤¾à¤šà¥€ पसंती सà¥à¤§à¤¾à¤°à¤¾';
-
$labels['identities'] = 'ओळख';
$labels['manageidentities'] = 'या खातà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ ओळखींचे नियोजन करा';
$labels['newidentity'] = 'नवीन ओळख';
-
$labels['newitem'] = 'नवीन पà¥à¤°à¤•à¤¾à¤°';
$labels['edititem'] = 'पà¥à¤°à¤•à¤¾à¤° सà¥à¤§à¤¾à¤°à¤¾';
-
$labels['preferhtml'] = 'à¤à¤š टी à¤à¤® à¤à¤² दाखवा';
$labels['defaultcharset'] = 'नेहमीचा अकà¥à¤·à¤° संच';
$labels['htmlmessage'] = 'à¤à¤š टी à¤à¤® à¤à¤² संदेश';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'विशेष दिवस';
$labels['setdefault'] = 'हा नेहमीसाठी वापरा';
$labels['autodetect'] = 'सà¥à¤µà¤¯à¤‚चलित';
@@ -400,13 +292,8 @@ $labels['timezone'] = 'वेळ कà¥à¤·à¥‡à¤¤à¥à¤°';
$labels['pagesize'] = 'पà¥à¤°à¤¤à¥à¤¯à¥‡à¤• पानावरील ओळी';
$labels['signature'] = 'सही';
$labels['dstactive'] = 'दिवसाची वेळ';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'à¤à¤š टी à¤à¤® à¤à¤² संदेश तयारा करा';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'à¤à¤š टी à¤à¤® à¤à¤² सही';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'पà¥à¤°à¤•à¥à¤°à¤¿à¤¯à¤¾à¤ªà¥‚रà¥à¤µ तावदान दाखवा';
$labels['skin'] = 'दृषà¥à¤¯ गोषà¥à¤Ÿà¥€';
$labels['logoutclear'] = 'खातà¥à¤¯à¤¾à¤¤à¥‚न बाहेर पडतांना कचरा पेटी साफ करा';
@@ -417,21 +304,17 @@ $labels['mailboxview'] = 'टपालपेटी पहाणे';
$labels['mdnrequests'] = 'पाठवणारà¥â€à¤¯à¤¾à¤šà¥à¤¯à¤¾ सूचना';
$labels['askuser'] = 'वापरकरà¥à¤¤à¥à¤¯à¤¾à¤²à¤¾ विचारा';
$labels['autosend'] = 'सà¥à¤µà¤¯à¤‚चलित (आपोआप पाठवणे)';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['ignore'] = 'दà¥à¤°à¥à¤²à¤•à¥à¤· करा';
$labels['readwhendeleted'] = 'काढून टाकलà¥à¤¯à¤¾à¤µà¤° संदेश वाचला असे दाखवा';
$labels['flagfordeletion'] = 'संदेश काढून टाकणà¥à¤¯à¤¾ ऎवजी संदेश काढून टाकणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ आहे अशी खूण करा';
$labels['skipdeleted'] = 'काढून टाकलेले संदेश दाखवू नका';
$labels['deletealways'] = 'जर संदेश कचरापेटीत गेले नाहीत तर काढून टाका';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
$labels['showremoteimages'] = 'संदेशातील चितà¥à¤°à¥‡ दाखवा';
$labels['fromknownsenders'] = 'माहितीतील पाठवणारà¥â€à¤¯à¤¾à¤•à¤¡à¥‚न संदेश';
$labels['always'] = 'नेहमी';
$labels['showinlineimages'] = 'सोबत जोडलेली चितà¥à¤°à¥‡ संदेशाचà¥à¤¯à¤¾ खाली दाखवा';
$labels['autosavedraft'] = 'मसूदा आपोआप जतन करा';
$labels['everynminutes'] = 'पà¥à¤°à¤¤à¥à¤¯à¥‡à¤• $n मिनिटांनी';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'कधीच नाही';
$labels['immediately'] = 'ताबडतोब';
$labels['messagesdisplaying'] = 'संदेश दाखवा';
@@ -445,15 +328,12 @@ $labels['advancedoptions'] = 'अधिक परà¥à¤¯à¤¾à¤¯';
$labels['focusonnewmessage'] = 'बà¥à¤°à¤¾à¤Šà¤à¤° खिडकी नवीन संदेशावर केंदà¥à¤°à¤¿à¤¤ करा';
$labels['checkallfolders'] = 'सरà¥à¤µ फोलà¥à¤¡à¤°à¤®à¤§à¥‡ नवीन संदेश शोधा';
$labels['displaynext'] = 'संदेश काढलà¥â€à¤¯à¤¾à¤¨à¤‚तर किंवा हलवलà¥â€à¤¯à¤¾à¤¨à¤‚तर पà¥à¤¢à¤šà¤¾ संदेश दाखवा';
-$labels['defaultfont'] = 'Default font of HTML message';
$labels['mainoptions'] = 'मà¥à¤–à¥â€à¤¯ परà¥à¤¯à¤¾à¤¯';
-$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'भाग';
$labels['maintenance'] = 'देखभाल';
$labels['newmessage'] = 'नवीन संदेश';
$labels['signatureoptions'] = 'सही परà¥à¤¯à¤¾à¤¯';
$labels['whenreplying'] = 'उतà¥â€à¤¤à¤° देताना';
-$labels['replyempty'] = 'do not quote the original message';
$labels['replytopposting'] = 'नवीन संदेश मà¥à¤³ संदेशाचà¥â€à¤¯à¤¾ वर चालू करा';
$labels['replybottomposting'] = 'नवीन संदेश मà¥à¤³ संदेशाचà¥â€à¤¯à¤¾ खाली चालू करा';
$labels['replyremovesignature'] = 'उतà¥â€à¤¤à¤° देताना मà¥à¤³ सही संदेशातून काढून टाका';
@@ -465,22 +345,6 @@ $labels['previewpanemarkread'] = 'पà¥à¤°à¤¦à¤°à¥à¤¶à¤¿à¤¤ संदेश à
$labels['afternseconds'] = '$n कà¥à¤·à¤£à¤¾à¤¨à¤‚तर';
$labels['reqmdn'] = 'नेहमी पोचपावतीची विनंती करा';
$labels['reqdsn'] = 'नेहमी पोचपावती सà¥à¤¥à¤¿à¤¤à¥€ निरà¥à¤¦à¥‡à¤¶à¤¾à¤šà¥€ विनंती करा';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'फोलà¥à¤¡à¤°';
$labels['folders'] = 'फोलà¥à¤¡à¤°à¥à¤¸';
$labels['foldername'] = 'फोलà¥à¤¡à¤°à¤šà¥‡ नाव';
@@ -490,37 +354,13 @@ $labels['create'] = 'तयार करा';
$labels['createfolder'] = 'नवीन फोलà¥à¤¡à¤° तयार करा';
$labels['managefolders'] = 'फोलà¥à¤¡à¤°à¥à¤¸à¤šà¥‡ नियोजन करा';
$labels['specialfolders'] = 'विषेश फोलà¥à¤¡à¤°';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'ने वरà¥à¤—वारी करा';
$labels['sortasc'] = 'चढतà¥à¤¯à¤¾ कà¥à¤°à¤®à¤¾à¤¨à¥‡';
$labels['sortdesc'] = 'उतरतà¥à¤¯à¤¾ कà¥à¤°à¤®à¤¾à¤¨à¥‡';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
$labels['B'] = 'बाइट';
$labels['KB'] = 'केबी';
$labels['MB'] = 'à¤à¤®à¤¬à¥€';
$labels['GB'] = 'जीबी';
-
-// character sets
$labels['unicode'] = 'यà¥à¤¨à¤¿à¤•à¥‹à¤¡';
$labels['english'] = 'इंगà¥à¤°à¤œà¥€';
$labels['westerneuropean'] = 'पशà¥à¤šà¤¿à¤® यà¥à¤°à¥‹à¤ªà¤¿à¤¯à¤¨';
@@ -539,5 +379,4 @@ $labels['vietnamese'] = 'वà¥à¤¹à¤¿à¤à¤¤à¤¨à¤¾à¤®à¥€';
$labels['japanese'] = 'जपानी';
$labels['korean'] = 'कोरियन';
$labels['chinese'] = 'चिनी';
-
?>
diff --git a/program/localization/mr_IN/messages.inc b/program/localization/mr_IN/messages.inc
index 2b1bd3f33..36eb8dc04 100755..100644
--- a/program/localization/mr_IN/messages.inc
+++ b/program/localization/mr_IN/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'काहीतरी चूक à¤à¤¾à¤²à¥€';
$messages['loginfailed'] = 'पà¥à¤°à¤µà¥‡à¤¶ करता आला नाही';
$messages['cookiesdisabled'] = 'तà¥à¤®à¤šà¤¾ बà¥à¤°à¤¾à¤Šà¤à¤° कà¥à¤•à¥€à¤œ घेऊ शकत नाही';
@@ -25,20 +23,14 @@ $messages['storageerror'] = 'आयमॅप सरà¥à¤µà¥à¤¹à¤°à¤¶à¥€ संà
$messages['servererror'] = 'सरà¥à¤µà¥â€à¤¹à¤° चूक !';
$messages['servererrormsg'] = 'सरà¥à¤µà¥à¤¹à¤° चूक : $msg';
$messages['dberror'] = 'माहितीसाठा चूक !';
-$messages['requesttimedout'] = 'Request timed out';
$messages['errorreadonly'] = 'कृती करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥, फोलà¥à¤¡à¤° फकà¥à¤¤ बघणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€';
$messages['errornoperm'] = 'कृती करणà¥à¤¯à¤¾à¤¸ असमरà¥à¤¥, परवानगी अमानà¥à¤¯';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'अवैध विनंती! माहिती साठवलेली नाही.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'या खातà¥à¤¯à¤¾à¤®à¤§à¥‡ कोणताही संदेश आलेला नाही';
$messages['loggedout'] = 'तà¥à¤®à¥à¤¹à¥€ यशसà¥à¤µà¥€à¤°à¤¿à¤¤à¥à¤¯à¤¾ खाते बंद केले आहे . राम राम !';
$messages['mailboxempty'] = 'खातà¥à¤¯à¤¾à¤¤ कोणताही संदेश नाही';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'संदेश आणत आहे';
$messages['uploading'] = 'फाईल चढवली जात आहे...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'माहिती आणत आहे';
$messages['checkingmail'] = 'नवीन संदेश आले आहेत का हे पहात आहे';
$messages['sendingmessage'] = 'संदेश पाठवत आहे';
@@ -53,11 +45,8 @@ $messages['blockedimages'] = 'तà¥à¤®à¤šà¥€ गोपनीयता पाळ
$messages['encryptedmessage'] = 'हा गà¥à¤ªà¥à¤¤ व सांकेतिक संदेश आहे. तो तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ असा दाखवता येणार नाही.';
$messages['nocontactsfound'] = 'कोणताच पतà¥à¤¤à¤¾ नोंदवहीत नाही.';
$messages['contactnotfound'] = 'या नावाचा कोणताच पतà¥à¤¤à¤¾ नोंदवहीत नाही.';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'संदेश पाठवता आला नाही.';
$messages['senttooquickly'] = 'कृपया हा संदेश पाठवणà¥à¤¯à¤¾à¤ªà¥‚रà¥à¤µà¥€ $sec थांबा';
-$messages['errorsavingsent'] = 'पाठवलेला संदेश ठेवून देतांना काहीतरी चूक à¤à¤¾à¤²à¥€.';
-$messages['errorsaving'] = 'संदेश ठेवून देतांना काहीतरी चूक à¤à¤¾à¤²à¥€.';
$messages['errormoving'] = 'संदेश तेथे ठेवता आला नाही.';
$messages['errorcopying'] = 'संदेशांची नकà¥â€à¤•à¤² करता आली नाही';
$messages['errordeleting'] = 'संदेश काढून टाकता आला नाही.';
@@ -67,12 +56,8 @@ $messages['deletegroupconfirm'] = 'निवडलेला गट तà¥à¤®à¥
$messages['deletemessagesconfirm'] = 'खूण केलेले सरà¥à¤µ संदेश खरोखरच तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ काढून टाकायचे आहेत का?';
$messages['deletefolderconfirm'] = 'हा फोलà¥à¤¡à¤° खरोखरच तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ काढून टाकायचा आहेत का?';
$messages['purgefolderconfirm'] = 'या फोलà¥à¤¡à¤°à¤®à¤§à¤¿à¤² सरà¥à¤µ संदेश खरोखरच तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ काढून टाकायचे आहेत का?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
$messages['folderdeleting'] = 'फोलà¥à¤¡à¤° काढून टाकत आहे';
$messages['foldermoving'] = 'फोलà¥à¤¡à¤° हलवत आहे.';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'फॉरà¥à¤® पूरà¥à¤£à¤ªà¤£à¥‡ भरलेला नाही.';
$messages['noemailwarning'] = 'योगà¥à¤¯, बरोबर, आणि वैध इमेल पतà¥à¤¤à¤¾ दà¥à¤¯à¤¾.';
$messages['nonamewarning'] = 'नाव दà¥à¤¯à¤¾';
@@ -86,14 +71,11 @@ $messages['noldapserver'] = 'शोधणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ ldap सरà¥à¤µ
$messages['nosearchname'] = 'कृपया जà¥à¤¯à¤¾à¤‚ना तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ संदेश पाठवावयाचा आहे तà¥à¤¯à¤¾à¤‚चे नाव किंवा इमेल पतà¥à¤¤à¤¾ दà¥à¤¯à¤¾.';
$messages['notuploadedwarning'] = 'सरà¥à¤µ फाईल अजून चढवलà¥â€à¤¯à¤¾ गेलेलà¥â€à¤¯à¤¾ नाहीत. कृपया वाट पहा किंवा मागे फिरा';
$messages['searchsuccessful'] = '$nr संदेष मिळाले.';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'शोध घेतलà¥à¤¯à¤¾à¤¨à¤‚तर à¤à¤•à¤¹à¥€ संदेश मिळाला नाही';
$messages['searching'] = 'शोधत आहे......';
$messages['checking'] = 'तपासत आहे.....';
$messages['nospellerrors'] = 'शà¥à¤§à¥à¤¦à¤²à¥‡à¤–नाची चूक सापडली नाही';
$messages['folderdeleted'] = 'फोलà¥à¤¡à¤° यशसà¥à¤µà¥€ रितà¥à¤¯à¤¾ काढून टाकणà¥à¤¯à¤¾à¤¤ आला आहे.';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
$messages['folderpurged'] = 'फोलà¥à¤¡à¤° यशसà¥à¤µà¥€à¤°à¥€à¤¤à¥à¤¯à¤¾ रिकामा केला';
$messages['folderexpunged'] = 'फोलà¥à¤¡à¤° यशसà¥à¤µà¥€à¤°à¥€à¤¤à¥à¤¯à¤¾ संकà¥à¤·à¤¿à¤ªà¥à¤¤ केला';
$messages['deletedsuccessfully'] = 'यशसà¥à¤µà¥€ रितà¥à¤¯à¤¾ काढून टाकणà¥à¤¯à¤¾à¤¤ आला आहे.';
@@ -101,20 +83,10 @@ $messages['converting'] = 'दृषà¥à¤¯ सà¥à¤µà¤°à¥à¤ª काढून à¤
$messages['messageopenerror'] = 'सरà¥à¤µà¥à¤¹à¤°à¤µà¤°à¥à¤¨ संदेश आणता आला नाही.';
$messages['fileuploaderror'] = 'फाईल चढवता आली नाही';
$messages['filesizeerror'] = 'तà¥à¤®à¥à¤¹à¥€ चढवलेली फाईल कà¥à¤·à¤®à¤¤à¥‡à¤ªà¥‡à¤•à¥à¤·à¤¾ जासà¥à¤¤ मोठी आहे.';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'पतà¥à¤¤à¤¾ फकà¥à¤¤ वाचणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ आहे.';
$messages['errorsavingcontact'] = 'पतà¥à¤¤à¤¾ नोंदवहीत ठेवता आला नाही.';
$messages['movingmessage'] = 'संदेश हलवत आहे..';
$messages['copyingmessage'] = 'संदेशाची नकà¥â€à¤•à¤² करत आहे...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'पोचपावती यशसà¥à¤µà¥€à¤°à¤¿à¤¤à¥à¤¯à¤¾ पाठवणà¥à¤¯à¤¾à¤¤ आली आहे.';
$messages['errorsendingreceipt'] = 'पोचपावती पाठवता आली नाही.';
$messages['deleteidentityconfirm'] = 'तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ ही ओळख नकà¥à¤•à¥€ नषà¥à¤Ÿ करायची आहे का?';
@@ -124,13 +96,8 @@ $messages['selectimportfile'] = 'चढवणà¥à¤¯à¤¾à¤¸à¤¾à¤ à¥€ फाईल
$messages['addresswriterror'] = 'निवडलेलà¥à¤¯à¤¾ पतà¥à¤¤à¤¾ नोंदवहीत नोंद करता येत नाही.';
$messages['contactaddedtogroup'] = 'पतà¥â€à¤¤à¥‡ यशसà¥â€à¤µà¥€à¤°à¤¿à¤¤à¥â€à¤¯à¤¾ हया गटात वाढवणà¥â€à¤¯à¤¾à¤¤ आले.';
$messages['contactremovedfromgroup'] = 'पतà¥â€à¤¤à¥‡ यशसà¥â€à¤µà¥€à¤°à¤¿à¤¤à¥â€à¤¯à¤¾ हया गटातून काढून टाकले.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'आयात करत आहे, कृपया वाट पहा.....';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
$messages['importconfirm'] = '<b>$inserted पतà¥à¤¤à¥‡ यशसà¥à¤µà¥€à¤°à¤¿à¤¤à¥à¤¯à¤¾ आयात केल, $skipped आधिच असलेलà¥à¤¯à¤¾ नोंदी केलà¥à¤¯à¤¾ नाहीत</b>:<p><em>$names</em></p>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'ही कà¥à¤°à¤¿à¤¯à¤¾ करणà¥à¤¯à¤¾à¤¸ परवानगी नाही.';
$messages['nofromaddress'] = 'निवडलेलà¥à¤¯à¤¾ खातà¥à¤¯à¤¾à¤¤ इमेल पतà¥à¤¤à¤¾ दिलेला नाही.';
$messages['editorwarning'] = 'टेकà¥à¤¸à¥à¤Ÿ संपादन निवडलà¥à¤¯à¤¾à¤¸ संदेशाचे दृषà¥à¤¯ सà¥à¤µà¤°à¥à¤ª बदलून जाईल. तà¥à¤®à¥à¤¹à¤¾à¤²à¤¾ असेच करायचे आहे ना?';
@@ -144,33 +111,4 @@ $messages['smtperror'] = 'SMTP चूक : $msg';
$messages['emailformaterror'] = 'अवैध ईमेल पतà¥â€à¤¤à¤¾ : $email';
$messages['toomanyrecipients'] = 'खूप जासà¥â€à¤¤ पà¥à¤°à¤¾à¤ªà¥â€à¤¤à¤•à¤°à¥à¤¤à¥‡. पà¥à¤°à¤¾à¤ªà¥â€à¤¤à¤•à¤°à¥à¤¤à¥â€à¤¯à¤¾à¤‚ची संखà¥â€à¤¯à¤¾ $max परà¥à¤¯à¤‚त कमी करा';
$messages['maxgroupmembersreached'] = 'गट सभासद संखà¥â€à¤¯à¤¾ $max पेकà¥à¤·à¤¾ जासà¥â€à¤¤ à¤à¤¾à¤²à¥€ आहे';
-$messages['internalerror'] = 'अंतरà¥à¤—त चूक à¤à¤¾à¤²à¥€. कृपया परत पà¥à¤°à¤¯à¤¤à¥â€à¤¨ करा.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/ms_MY/labels.inc b/program/localization/ms_MY/labels.inc
index a6bdfbfa0..13d9d89fc 100644
--- a/program/localization/ms_MY/labels.inc
+++ b/program/localization/ms_MY/labels.inc
@@ -15,34 +15,22 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Selamat datang ke $product';
$labels['username'] = 'Nama Pengguna';
$labels['password'] = 'Katalaluan';
$labels['server'] = 'Pelayan';
$labels['login'] = 'Log Masuk';
-
-// taskbar
$labels['logout'] = 'Log Keluar';
$labels['mail'] = 'Mel';
$labels['settings'] = 'Tetapan';
$labels['addressbook'] = 'Buku Alamat';
-
-// mailbox names
$labels['inbox'] = 'Peti Masuk';
$labels['drafts'] = 'Draf';
$labels['sent'] = 'Hantar';
$labels['trash'] = 'Tong Sampah';
$labels['junk'] = 'Junk';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Subjek';
$labels['from'] = 'Daripada';
-$labels['sender'] = 'Sender';
$labels['to'] = 'Kepada';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
@@ -54,27 +42,18 @@ $labels['priority'] = 'Prioriti';
$labels['organization'] = 'Organisasi';
$labels['readstatus'] = 'Status baca';
$labels['listoptions'] = 'Senarai pilihan';
-
$labels['mailboxlist'] = 'Folder';
$labels['messagesfromto'] = 'Mesej $from ke $to dari $count';
$labels['threadsfromto'] = 'Urutan $from ke $to dari $count';
$labels['messagenrof'] = 'Mesej $nr dari $count';
$labels['fromtoshort'] = '$from - $to dari $count';
-
$labels['copy'] = 'Salin';
$labels['move'] = 'Alih';
$labels['moveto'] = 'Alih ke...';
$labels['download'] = 'Muat Turun';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'Nama Fail';
$labels['filesize'] = 'Saiz Fail';
-
$labels['addtoaddressbook'] = 'Tambah ke buku alamat';
-
-// weekdays short
$labels['sun'] = 'Aha';
$labels['mon'] = 'Isn';
$labels['tue'] = 'Sel';
@@ -82,8 +61,6 @@ $labels['wed'] = 'Rab';
$labels['thu'] = 'Kha';
$labels['fri'] = 'Jum';
$labels['sat'] = 'Sab';
-
-// weekdays long
$labels['sunday'] = 'Ahad';
$labels['monday'] = 'Isnin';
$labels['tuesday'] = 'Selasa';
@@ -91,8 +68,6 @@ $labels['wednesday'] = 'Rabu';
$labels['thursday'] = 'Khamis';
$labels['friday'] = 'Jumaat';
$labels['saturday'] = 'Sabtu';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mac';
@@ -105,8 +80,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dis';
-
-// months long
$labels['longjan'] = 'Januari';
$labels['longfeb'] = 'Februari';
$labels['longmar'] = 'March';
@@ -119,10 +92,7 @@ $labels['longsep'] = 'September';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Disember';
-
$labels['today'] = 'Hari Ini';
-
-// toolbar buttons
$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'Semak mesej baru';
$labels['compose'] = 'Karang mesej';
@@ -155,7 +125,6 @@ $labels['moreactions'] = 'Tindakan lanjut..';
$labels['more'] = 'Seterusnya';
$labels['back'] = 'Kembali';
$labels['options'] = 'Opsyen';
-
$labels['select'] = 'Pilih';
$labels['all'] = 'Semua';
$labels['none'] = 'Tiada';
@@ -163,9 +132,7 @@ $labels['currpage'] = 'Muka terkini';
$labels['unread'] = 'Belum dibaca';
$labels['flagged'] = 'Ditanda';
$labels['unanswered'] = 'Belum dijawab';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'Telah dipadam';
-$labels['undeleted'] = 'Not deleted';
$labels['invert'] = 'Songsangkan';
$labels['filter'] = 'Tapis';
$labels['list'] = 'Senarai';
@@ -174,7 +141,6 @@ $labels['expand-all'] = 'Buka Semua';
$labels['expand-unread'] = 'Buka yang belum dibaca';
$labels['collapse-all'] = 'Tutup Semua';
$labels['threaded'] = 'Telah urutan';
-
$labels['autoexpand_threads'] = 'Buka mesej mengikut urutan';
$labels['do_expand'] = 'Kesemua urutan';
$labels['expand_only_unread'] = 'hanya dengan mesej yang belum dibaca';
@@ -190,31 +156,19 @@ $labels['listcolumns'] = 'Senarai ruang';
$labels['listsorting'] = 'pengisihan ruang';
$labels['listorder'] = 'Urutan pengisihan';
$labels['listmode'] = 'Mod senarai paparan';
-
$labels['folderactions'] = 'Aksi folder';
$labels['compact'] = 'Kompak';
$labels['empty'] = 'Kosong';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Penggunaan cakera';
$labels['unknown'] = 'tidak diketahui';
$labels['unlimited'] = 'Tidak terhad';
-
$labels['quicksearch'] = 'Carian pantas';
$labels['resetsearch'] = 'Set semula carian';
$labels['searchmod'] = 'Pengubah carian';
$labels['msgtext'] = 'Keseluruhan mesej';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'Buka dalam tetingkap baru';
$labels['emlsave'] = 'Muat-turun (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'Ubah seperti baharu';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'Hantar mesej';
$labels['savemessage'] = 'Simapan sebagai draf';
$labels['addattachment'] = 'Lampir fail';
@@ -224,191 +178,82 @@ $labels['returnreceipt'] = 'Penerimaan semula';
$labels['dsn'] = 'Status pemberitahuan penghantaran';
$labels['mailreplyintro'] = 'Pada $date, $sender menulis';
$labels['originalmessage'] = 'Mesej Asal';
-
$labels['editidents'] = 'Ubah identiti';
$labels['spellcheck'] = 'Eja';
$labels['checkspelling'] = 'Semak ejaan';
$labels['resumeediting'] = 'Sambung pengeditan';
$labels['revertto'] = 'Kembali kepada';
-
$labels['attach'] = 'Lampirkan';
$labels['attachments'] = 'Lampiran';
$labels['upload'] = 'Muat naik';
$labels['uploadprogress'] = '$percent ($current dari $total)';
$labels['close'] = 'Tutup';
$labels['messageoptions'] = 'Opsyen mesej';
-
$labels['low'] = 'Rendah';
$labels['lowest'] = 'Paling Rendah';
$labels['normal'] = 'Normal';
$labels['high'] = 'Tinggi';
$labels['highest'] = 'Paling Tinggi';
-
$labels['nosubject'] = '(tiada subjek)';
$labels['showimages'] = 'Papar imej';
$labels['alwaysshow'] = 'selalu paparkan imej dari $sender';
$labels['isdraft'] = 'Ini adalah draf mesej';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Teks kosong';
$labels['savesentmessagein'] = 'Simpan mesej yang telah dihantar dalam';
$labels['dontsave'] = 'Jangan simpan';
$labels['maxuploadsize'] = 'maksimum saiz fail yang dibenarkan ialah $size';
-
$labels['addcc'] = 'Tambah Cc';
$labels['addbcc'] = 'Tambah Bcc';
$labels['addreplyto'] = 'Tambah Reply-To';
$labels['addfollowupto'] = 'Tambah Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Pengirim mesej ini mahu diberitahu apabila anda membaca mesej ini. Adakah anda ingin memberitahu pengirim?';
$labels['receiptread'] = 'Balas Resip (dibaca)';
$labels['yourmessage'] = 'Ini adalah Resip Balasan untuk mesej anda';
$labels['receiptnote'] = 'Perhatian: Resip ini hanya untuk memberitahu yang mesej ini telah dipaparkan di komputer penerima. Tidak ada jaminan yang penerima telah membaca atau memahami kandungan mesej.';
-
-// address boook
$labels['name'] = 'Nama paparan';
$labels['firstname'] = 'Nama pertama';
$labels['surname'] = 'Nama akhir';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'E-Mel';
-$labels['phone'] = 'Phone';
-$labels['address'] = 'Address';
-$labels['street'] = 'Street';
-$labels['locality'] = 'City';
-$labels['zipcode'] = 'ZIP Code';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
-$labels['typemobile'] = 'Mobile';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'Tambah kontek baru';
$labels['editcontact'] = 'Ubahsuai Kontek';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
-$labels['personalinfo'] = 'Personal information';
-
$labels['edit'] = 'Sunting';
$labels['cancel'] = 'Batal';
$labels['save'] = 'Simpan';
$labels['delete'] = 'Padam';
-$labels['rename'] = 'Rename';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'Cipta kad kontek baru';
$labels['deletecontact'] = 'Hapus kontek yang dipilih';
$labels['composeto'] = 'Karang mel kepada';
$labels['contactsfromto'] = 'Kontek $from ke $to dari $count';
$labels['print'] = 'Cetak';
$labels['export'] = 'Eksport';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
-$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'Papar set sebelumnya';
$labels['firstpage'] = 'Papar set pertama';
$labels['nextpage'] = 'Papar set seterusnya';
$labels['lastpage'] = 'Papar set akhir';
-
-$labels['group'] = 'Group';
$labels['groups'] = 'Kumpulan';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Alamat-alamat Peribadi';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
-$labels['import'] = 'Import';
-$labels['importcontacts'] = 'Import contacts';
-$labels['importfromfile'] = 'Import from file:';
-$labels['importtarget'] = 'Add new contacts to address book:';
-$labels['importreplace'] = 'Replace the entire address book';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
-$labels['done'] = 'Done';
-
-// settings
$labels['settingsfor'] = 'Tetapan bagi';
-$labels['about'] = 'About';
$labels['preferences'] = 'Keutamaan';
$labels['userpreferences'] = 'Keutamaan pengguna';
$labels['editpreferences'] = 'Sunting keutamaan pengguna';
-
$labels['identities'] = 'Identiti';
$labels['manageidentities'] = 'Urus identiti bagi akaun ini';
$labels['newidentity'] = 'Identiti baru';
-
$labels['newitem'] = 'Butiran baru';
$labels['edititem'] = 'Ubahsuai butiran';
-
$labels['preferhtml'] = 'Papar HTML';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'Mesej HTML';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'Tarikh-tarikh cantik';
$labels['setdefault'] = 'Tetap asal';
-$labels['autodetect'] = 'Auto';
$labels['language'] = 'Bahasa';
$labels['timezone'] = 'Zon Masa';
$labels['pagesize'] = 'Baris setiap muka';
$labels['signature'] = 'Tandatangan';
$labels['dstactive'] = 'Simpanan siang hari';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'Karang mesej HTML';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'Tandatangan HTML';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Pamer ruang previu';
-$labels['skin'] = 'Interface skin';
$labels['logoutclear'] = 'Kosongkan Tong sampah ketika keluar';
$labels['logoutcompact'] = 'Padatkan Inbox ketika keluar';
$labels['uisettings'] = 'Antaramuka Pengguna';
@@ -417,70 +262,11 @@ $labels['mailboxview'] = 'Pandangan kotak Mel';
$labels['mdnrequests'] = 'Pemberitahuan Pengirim';
$labels['askuser'] = 'Tanya pengguna';
$labels['autosend'] = 'Hantar automatik';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['ignore'] = 'Biarkan';
$labels['readwhendeleted'] = 'Tanda mesej sebagai dibaca ketika hapus';
$labels['flagfordeletion'] = 'Tanda mesej untuk pembuangan (tidak delete terus)';
-$labels['skipdeleted'] = 'Do not show deleted messages';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
-$labels['always'] = 'always';
-$labels['showinlineimages'] = 'Display attached images below the message';
$labels['autosavedraft'] = 'Simpan draf dengan automatik';
-$labels['everynminutes'] = 'every $n minute(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'tidak pernah';
-$labels['immediately'] = 'immediately';
-$labels['messagesdisplaying'] = 'Displaying Messages';
-$labels['messagescomposition'] = 'Composing Messages';
-$labels['mimeparamfolding'] = 'Attachment names';
-$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
-$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (other)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
-$labels['advancedoptions'] = 'Advanced options';
-$labels['focusonnewmessage'] = 'Focus browser window on new message';
-$labels['checkallfolders'] = 'Check all folders for new messages';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
-$labels['section'] = 'Section';
-$labels['maintenance'] = 'Maintenance';
-$labels['newmessage'] = 'New Message';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
-$labels['autoaddsignature'] = 'Automatically add signature';
-$labels['newmessageonly'] = 'new message only';
-$labels['replyandforwardonly'] = 'replies and forwards only';
-$labels['insertsignature'] = 'Insert signature';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'Kabinet Fail';
$labels['folders'] = 'Folder';
$labels['foldername'] = 'Nama Kabinet Fail';
@@ -489,55 +275,7 @@ $labels['messagecount'] = 'Mesej-mesej';
$labels['create'] = 'Cipta';
$labels['createfolder'] = 'Cipta kabinet fail baru';
$labels['managefolders'] = 'Urus kabinet fail';
-$labels['specialfolders'] = 'Special Folders';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'Susun dengan';
$labels['sortasc'] = 'Susun menaik';
$labels['sortdesc'] = 'Susun menurun';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
-$labels['B'] = 'B';
-$labels['KB'] = 'KB';
-$labels['MB'] = 'MB';
-$labels['GB'] = 'GB';
-
-// character sets
-$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/ms_MY/messages.inc b/program/localization/ms_MY/messages.inc
index 50f10af13..c2140e216 100644
--- a/program/localization/ms_MY/messages.inc
+++ b/program/localization/ms_MY/messages.inc
@@ -15,30 +15,14 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'Log masuk gagal';
$messages['cookiesdisabled'] = 'Pelayar anda tidak menerima cookies';
$messages['sessionerror'] = 'Sesi anda tidak sah atau telah tamat';
$messages['storageerror'] = 'Sambungan ke pelayan IMAP gagal';
-$messages['servererror'] = 'Server Error!';
-$messages['servererrormsg'] = 'Server Error: $msg';
-$messages['dberror'] = 'Database Error!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Invalid request! No data was saved.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'Tiada mesej dijumpai dalam kotak mel ini';
$messages['loggedout'] = 'Sesi anda telah tamat. Selamat tinggal!';
$messages['mailboxempty'] = 'Kotak mail kosong';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'Memuat...';
-$messages['uploading'] = 'Uploading file...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'Memuat data...';
$messages['checkingmail'] = 'Menyemak mesej baru...';
$messages['sendingmessage'] = 'Menghantar mesej...';
@@ -48,129 +32,42 @@ $messages['messagesaved'] = 'Mesej disimpan dalam Draf';
$messages['successfullysaved'] = 'Berjaya disimpan';
$messages['addedsuccessfully'] = 'Kontek berjaya disimpan ke dalam buku alamat';
$messages['contactexists'] = 'Kontek dengan alamat emel ini sudah wujud';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'Untuk melindungi kebesasan peribadi anda, imej jauh dihalang dalam mesej ini.';
$messages['encryptedmessage'] = 'Ini adalah mesej yang di\'encrypted\' dan tidak boleh dipamerkan. Maaf!';
$messages['nocontactsfound'] = 'Tiada kontek dijumpai';
$messages['contactnotfound'] = 'Kontek yang diminta tidak dijumpai';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'Gagal menghantar mesej';
-$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
-$messages['errorsavingsent'] = 'An error occured while saving sent message.';
-$messages['errorsaving'] = 'Terdapat ralat ketika menyimpan';
$messages['errormoving'] = 'Tidak boleh pindah mesej';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'Tidak boleh hapus mesej';
-$messages['errormarking'] = 'Could not mark the message(s).';
$messages['deletecontactconfirm'] = 'Adakah anda ingin hapuskan kontek yang dipilih?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'Adakah anda ingin hapuskan mesej yang dipilih?';
$messages['deletefolderconfirm'] = 'Adakah anda ingin hapuskan kabinet fail ini?';
$messages['purgefolderconfirm'] = 'Adakah anda ingin hapuskan semua mesej dalam kabinet fail ini?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
-$messages['folderdeleting'] = 'Deleting folder...';
-$messages['foldermoving'] = 'Moving folder...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'Borang tidak diisi dengan lengkap';
$messages['noemailwarning'] = 'Sila masukkan alamat emel yang sah';
$messages['nonamewarning'] = 'Sila masukkan nama';
$messages['nopagesizewarning'] = 'Sila masukkan saiz halaman';
-$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
$messages['norecipientwarning'] = 'Sila masukkan sekurang-kurangnya satu penerima';
$messages['nosubjectwarning'] = 'Ruang "Subjek" kosong. Adakah anda ingin masukkannya sekarang?';
$messages['nobodywarning'] = 'Hantar mesej ini tanpa teks?';
$messages['notsentwarning'] = 'Mesej tidak dihantar. Adakah anda ingin menyingkir mesej anda?';
$messages['noldapserver'] = 'Sila pilih satu pelayan ldap untuk carian';
$messages['nosearchname'] = 'Sila masukkan nama kontek atau alamat emel';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = '$nr mesej dijumpai';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'Carian tiada padanan';
$messages['searching'] = 'Menggelintar...';
$messages['checking'] = 'Menyemak...';
$messages['nospellerrors'] = 'Tiada kesalah ejaan dijumpai';
$messages['folderdeleted'] = 'Kabinet fail berjaya dihapuskan';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'Berjaya dihapuskan';
$messages['converting'] = 'Singkir format dari mesej...';
$messages['messageopenerror'] = 'Tidak boleh muat mesej dari server';
$messages['fileuploaderror'] = 'Muatnaik fail gagal';
$messages['filesizeerror'] = 'Fail yang dimuatnaik melampaui saiz maksima $size';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Sumber alamat ini adalah untuk bacaan sahaja';
$messages['errorsavingcontact'] = 'Tidak boleh simmpan alamat kontek';
$messages['movingmessage'] = 'Memindah mesej...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'Berjaya menghantar resip bacaan';
$messages['errorsendingreceipt'] = 'Tidak dapat menghantar resip';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'Anda tidak boleh membuang identiti ini, ia milik anda yang terakhir.';
-$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
-$messages['selectimportfile'] = 'Please select a file to upload.';
-$messages['addresswriterror'] = 'The selected address book is not writeable.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
-$messages['importwait'] = 'Importing, please wait...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operation not permitted!';
-$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/nb_NO/labels.inc b/program/localization/nb_NO/labels.inc
index b5c8ce4c6..20bbd1383 100644
--- a/program/localization/nb_NO/labels.inc
+++ b/program/localization/nb_NO/labels.inc
@@ -15,31 +15,20 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Velkommen til $product';
$labels['username'] = 'Brukernavn';
$labels['password'] = 'Passord';
$labels['server'] = 'Tjener';
$labels['login'] = 'Logg inn';
-
-// taskbar
$labels['logout'] = 'Logg ut';
$labels['mail'] = 'E-post';
$labels['settings'] = 'Innstillinger';
$labels['addressbook'] = 'Adressebok';
-
-// mailbox names
$labels['inbox'] = 'Innboks';
$labels['drafts'] = 'Kladd';
$labels['sent'] = 'Sendt';
$labels['trash'] = 'Slettet';
$labels['junk'] = 'Spam';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Emne';
$labels['from'] = 'Avsender';
$labels['sender'] = 'Avsender';
@@ -54,13 +43,11 @@ $labels['priority'] = 'Prioritet';
$labels['organization'] = 'Organisasjon';
$labels['readstatus'] = 'Lese status';
$labels['listoptions'] = 'List muligheter';
-
$labels['mailboxlist'] = 'Mapper';
$labels['messagesfromto'] = 'Meldinger $from til $to av $count';
$labels['threadsfromto'] = 'Tråder $from til $to av $count';
$labels['messagenrof'] = 'Melding $nr av $count';
$labels['fromtoshort'] = '$from – $to av $count';
-
$labels['copy'] = 'Kopier';
$labels['move'] = 'Flytt';
$labels['moveto'] = 'flytt til...';
@@ -68,13 +55,9 @@ $labels['download'] = 'last ned';
$labels['open'] = 'Ã…pen';
$labels['showattachment'] = 'Vis';
$labels['showanyway'] = 'Vis likevel';
-
$labels['filename'] = 'Filnavn';
$labels['filesize'] = 'Filstørrelse';
-
$labels['addtoaddressbook'] = 'Legg til i adressebok';
-
-// weekdays short
$labels['sun'] = 'Søn';
$labels['mon'] = 'Man';
$labels['tue'] = 'Tir';
@@ -82,8 +65,6 @@ $labels['wed'] = 'Ons';
$labels['thu'] = 'Tor';
$labels['fri'] = 'Fre';
$labels['sat'] = 'Lør';
-
-// weekdays long
$labels['sunday'] = 'Søndag';
$labels['monday'] = 'Mandag';
$labels['tuesday'] = 'Tirsdag';
@@ -91,8 +72,6 @@ $labels['wednesday'] = 'Onsdag';
$labels['thursday'] = 'Torsdag';
$labels['friday'] = 'Fredag';
$labels['saturday'] = 'Lørdag';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +84,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Des';
-
-// months long
$labels['longjan'] = 'Januar';
$labels['longfeb'] = 'Februar';
$labels['longmar'] = 'Mars';
@@ -119,10 +96,7 @@ $labels['longsep'] = 'September';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Desember';
-
$labels['today'] = 'I dag';
-
-// toolbar buttons
$labels['refresh'] = 'Oppdater';
$labels['checkmail'] = 'Se etter nye meldinger';
$labels['compose'] = 'Skriv ny e-post';
@@ -155,7 +129,6 @@ $labels['moreactions'] = 'Flere handlinger …';
$labels['more'] = 'Mer';
$labels['back'] = 'Tilbake';
$labels['options'] = 'Alternativer';
-
$labels['select'] = 'Velg';
$labels['all'] = 'Alle';
$labels['none'] = 'Ingen';
@@ -174,7 +147,6 @@ $labels['expand-all'] = 'Utvid alle';
$labels['expand-unread'] = 'Utvid uleste';
$labels['collapse-all'] = 'Skjul alle';
$labels['threaded'] = 'Trådet';
-
$labels['autoexpand_threads'] = 'Utvid tråder';
$labels['do_expand'] = 'alle tråder';
$labels['expand_only_unread'] = 'kun med uleste meldinger';
@@ -190,29 +162,21 @@ $labels['listcolumns'] = 'Listekolonner';
$labels['listsorting'] = 'Sorteringskolonne';
$labels['listorder'] = 'Sorteringsrekkefølge';
$labels['listmode'] = 'Listevisningsmodus';
-
$labels['folderactions'] = 'Mappehandlinger...';
$labels['compact'] = 'Rydd opp';
$labels['empty'] = 'Tøm';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Plassforbruk';
$labels['unknown'] = 'ukjent';
$labels['unlimited'] = 'ubegrenset';
-
$labels['quicksearch'] = 'Hurtigsøk';
$labels['resetsearch'] = 'Nullstill søk';
$labels['searchmod'] = 'Søke felt';
$labels['msgtext'] = 'Hele meldingen';
$labels['body'] = 'Meldingstekst';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'Ã…pne i nytt vindu';
$labels['emlsave'] = 'Last ned (.eml)';
$labels['changeformattext'] = 'Vis i ren tekst';
$labels['changeformathtml'] = 'Vis i HTML';
-
-// message compose
$labels['editasnew'] = 'Rediger som ny';
$labels['send'] = 'Send.';
$labels['sendmessage'] = 'Send e-posten';
@@ -224,26 +188,22 @@ $labels['returnreceipt'] = 'Be om kvittering';
$labels['dsn'] = 'Leveringsstatus notifikasjon';
$labels['mailreplyintro'] = 'Den $date, skrev $sender:';
$labels['originalmessage'] = 'Opprinnelig melding';
-
$labels['editidents'] = 'Endre identiteter';
$labels['spellcheck'] = 'Stavekontroll';
$labels['checkspelling'] = 'Stavekontroll';
$labels['resumeediting'] = 'Fortsett redigering';
$labels['revertto'] = 'Tilbake til';
-
$labels['attach'] = 'Legg ved';
$labels['attachments'] = 'Vedlegg';
$labels['upload'] = 'Last opp';
$labels['uploadprogress'] = '$percent ($current fra $total)';
$labels['close'] = 'Lukk';
$labels['messageoptions'] = 'Meldingsalternativer...';
-
$labels['low'] = 'Lav';
$labels['lowest'] = 'Lavest';
$labels['normal'] = 'Normal';
$labels['high'] = 'Høy';
$labels['highest'] = 'Høyest';
-
$labels['nosubject'] = '(intet emne)';
$labels['showimages'] = 'Vis bilder';
$labels['alwaysshow'] = 'Vis alltid bilder fra $sender';
@@ -251,25 +211,19 @@ $labels['isdraft'] = 'Dette er en kladd.';
$labels['andnmore'] = '$nr flere ...';
$labels['togglemoreheaders'] = 'Vis flere meldings-headere';
$labels['togglefullheaders'] = 'Veksle visning av meldingens headere i råformat';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Ren tekst';
$labels['savesentmessagein'] = 'Lagre sendt melding i';
$labels['dontsave'] = 'ikke lagre';
$labels['maxuploadsize'] = 'Maksimalt tillatt filstørrelse er $size';
-
$labels['addcc'] = 'Legg til kopiadressat (Cc)';
$labels['addbcc'] = 'Legg til blindkopiadressat (Bcc)';
$labels['addreplyto'] = 'Legg til svar til (Reply-To)';
$labels['addfollowupto'] = 'Legg til oppfølging';
-
-// mdn
$labels['mdnrequest'] = 'Senderen av denne meldingen har bedt om å bli gjort oppmerksom på at denne meldingen er lest. Ønsker du å sende denne bekreftelsen?';
$labels['receiptread'] = 'Kvittering (lest)';
$labels['yourmessage'] = 'Dette er en kvittering for at din e-post er mottatt';
$labels['receiptnote'] = 'Merknad: Denne kvitteringen bekrefter bare at e-posten ble vist hos mottakeren. Det er ingen garanti for at mottakeren har lest eller forstått innholdet i e-posten.';
-
-// address boook
$labels['name'] = 'Visningsnavn';
$labels['firstname'] = 'Fornavn';
$labels['surname'] = 'Etternavn';
@@ -304,7 +258,6 @@ $labels['search'] = 'Søk';
$labels['advsearch'] = 'Avansert søk';
$labels['advanced'] = 'Avansert';
$labels['other'] = 'Annet';
-
$labels['typehome'] = 'Hjem';
$labels['typework'] = 'Jobb';
$labels['typeother'] = 'Annet';
@@ -319,14 +272,12 @@ $labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Hjemmeside';
$labels['typeblog'] = 'Blogg';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Legg til felt ...';
$labels['addcontact'] = 'Legg til ny kontakt';
$labels['editcontact'] = 'Rediger kontakt';
$labels['contacts'] = 'Kontakter';
$labels['contactproperties'] = 'Egenskaper';
$labels['personalinfo'] = 'Personlig informasjon';
-
$labels['edit'] = 'Rediger';
$labels['cancel'] = 'Avbryt';
$labels['save'] = 'Lagre';
@@ -335,7 +286,6 @@ $labels['rename'] = 'Gi nytt navn';
$labels['addphoto'] = 'Legg til';
$labels['replacephoto'] = 'Erstatt';
$labels['uploadphoto'] = 'Last opp bilde';
-
$labels['newcontact'] = 'Opprett ny kontakt';
$labels['deletecontact'] = 'Slett valgte kontakter';
$labels['composeto'] = 'Skriv e-post til';
@@ -349,42 +299,31 @@ $labels['newcontactgroup'] = 'Opprett ny kontaktgruppe';
$labels['grouprename'] = 'Endre navn på gruppe';
$labels['groupdelete'] = 'Slett gruppe';
$labels['groupremoveselected'] = 'Fjern valgte kontakter fra gruppe';
-
$labels['previouspage'] = 'Vis forrige sett';
$labels['firstpage'] = 'Vis første sett';
$labels['nextpage'] = 'Vis neste sett';
$labels['lastpage'] = 'Vis siste sett';
-
$labels['group'] = 'Gruppe';
$labels['groups'] = 'Grupper';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Egne adresser';
-
$labels['searchsave'] = 'Lagre søk';
$labels['searchdelete'] = 'Slett søk';
-
$labels['import'] = 'Importer';
$labels['importcontacts'] = 'Importer kontakter';
$labels['importfromfile'] = 'Importer fra fil:';
-$labels['importtarget'] = 'Legg til kontakter i adresseboka:';
$labels['importreplace'] = 'Erstatt hele adresseboken';
$labels['importdesc'] = 'Du kan laste opp kontakter fra en eksisterende adressebok.<br/>Vi støtter adressebøker i <a href="http://no.wikipedia.org/wiki/VCard">vCard</a> eller CSV (kommaseparert) .';
$labels['done'] = 'Fullført';
-
-// settings
$labels['settingsfor'] = 'Innstillinger for';
$labels['about'] = 'Om';
$labels['preferences'] = 'Oppsett';
$labels['userpreferences'] = 'Brukeroppsett';
$labels['editpreferences'] = 'Rediger brukeroppsett';
-
$labels['identities'] = 'Identiteter';
$labels['manageidentities'] = 'Administrer identitetene for denne kontoen';
$labels['newidentity'] = 'Ny identitet';
-
$labels['newitem'] = 'Nytt punkt';
$labels['edititem'] = 'Rediger punkt';
-
$labels['preferhtml'] = 'Foretrekk HTML';
$labels['defaultcharset'] = 'Standard tegnsett';
$labels['htmlmessage'] = 'HTML-melding';
@@ -476,11 +415,9 @@ $labels['spellcheckignorenums'] = 'Ignorer ord med tall';
$labels['spellcheckignorecaps'] = 'Ignorer ord med kun store bokstaver';
$labels['addtodict'] = 'Legg til i ordbok';
$labels['mailtoprotohandler'] = 'Registrer protokollhåndtering for mailto-lenker';
-$labels['standardwindows'] = 'Handle popups as standard windows';
$labels['forwardmode'] = 'Meldinger videresendes';
$labels['inline'] = 'i teksten';
$labels['asattachment'] = 'som vedlegg';
-
$labels['folder'] = 'Mappe';
$labels['folders'] = 'Mapper';
$labels['foldername'] = 'Mappenavn';
@@ -501,26 +438,20 @@ $labels['foldertype'] = 'Mappetype';
$labels['personalfolder'] = 'Privat mappe';
$labels['otherfolder'] = 'Annen brukers mappe';
$labels['sharedfolder'] = 'Offentlig mappe';
-
$labels['sortby'] = 'Sorter etter';
$labels['sortasc'] = 'Eldste først';
$labels['sortdesc'] = 'Nyeste først';
$labels['undo'] = 'Angre';
-
$labels['installedplugins'] = 'Installerte tillegg';
$labels['plugin'] = 'Tilleggsmodul';
$labels['version'] = 'Versjon';
$labels['source'] = 'Kildekode';
$labels['license'] = 'Lisensvilkår';
$labels['support'] = 'FÃ¥ hjelp';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Engelsk';
$labels['westerneuropean'] = 'Vesteuropeisk';
@@ -539,5 +470,4 @@ $labels['vietnamese'] = 'Vietnamesisk';
$labels['japanese'] = 'Japansk';
$labels['korean'] = 'Koreansk';
$labels['chinese'] = 'Kinesisk';
-
?>
diff --git a/program/localization/nb_NO/messages.inc b/program/localization/nb_NO/messages.inc
index 6138b9379..1d51017fb 100644
--- a/program/localization/nb_NO/messages.inc
+++ b/program/localization/nb_NO/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Det oppsto en feil!';
$messages['loginfailed'] = 'PÃ¥logging mislyktes';
$messages['cookiesdisabled'] = 'Nettleseren din tillater ikke informasjonskapsler (cookies)';
@@ -56,8 +54,6 @@ $messages['contactnotfound'] = 'Den ønskede kontakten ble ikke funnet';
$messages['contactsearchonly'] = 'Skriv inn noen søkeord for å finne kontakter.';
$messages['sendingfailed'] = 'Kunne ikke sende e-posten';
$messages['senttooquickly'] = 'Vennligst vent $sec sekund(er) før du sender denne meldingen';
-$messages['errorsavingsent'] = 'En feil oppsto under lagring av sendt melding';
-$messages['errorsaving'] = 'Det oppstod en feil ved lagring av data';
$messages['errormoving'] = 'Kunne ikke flytte meldingen(e)';
$messages['errorcopying'] = 'Kunne ikke kopiere meldingen(e)';
$messages['errordeleting'] = 'Kunne ikke slette meldingen(e)';
@@ -101,16 +97,11 @@ $messages['converting'] = 'Fjerner formatering fra meldingen ...';
$messages['messageopenerror'] = 'Kunne ikke hente meldingen fra server';
$messages['fileuploaderror'] = 'Feil under opplastning.';
$messages['filesizeerror'] = 'Filen overstiger maksimum tillatt filstørrelse ($size)';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Denne adressekilden er skrivebeskyttet';
$messages['errorsavingcontact'] = 'Kunne ikke lagre kontaktadressen.';
$messages['movingmessage'] = 'Flytter e-post ...';
$messages['copyingmessage'] = 'Kopierer e-post...';
$messages['copyingcontact'] = 'Kopierer kontakt(er) …';
-$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'Sletter melding(er) …';
$messages['markingmessage'] = 'Markerer melding(er) ...';
$messages['addingmember'] = 'Legger til kontakt(er) i gruppa ...';
@@ -144,7 +135,6 @@ $messages['smtperror'] = 'SMTP-feil ($code): $msg';
$messages['emailformaterror'] = 'Ukorrekt e-postadresse: $email';
$messages['toomanyrecipients'] = 'For mange mottakere. Reduser antall mottakere til $max.';
$messages['maxgroupmembersreached'] = 'Antall gruppemedlemmer overskrider maksgrensen på $max';
-$messages['internalerror'] = 'Intern feil, prøv igjen senere.';
$messages['contactdelerror'] = 'Kunne ikke slette kontakt(er)';
$messages['contactdeleted'] = 'Kontakt(er) slettet uten feil.';
$messages['contactrestoreerror'] = 'Kunne ikke gjenopprette kontakt(er).';
@@ -172,5 +162,4 @@ $messages['parentnotwritable'] = 'Kunne ikke opprette/flytte mappen i valgt over
$messages['messagetoobig'] = 'Meldingsdelen er for stor til at den kan prosesseres.';
$messages['attachmentvalidationerror'] = 'ADVARSEL! Dette vedlegget er mistenkelig fordi det er av en type som ikke passer med det som er deklarert i meldingen. Hvis du ikke stoler på avsenderen burde du ikke åpne det i nettleseren, fordi det kan ha skadelig innhold.<br/><br/><em>Forventet: $expected; fant: $detected</em>rnrnWARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
$messages['noscriptwarning'] = 'NB: Denne webmail-klienten krever Javascript! Skru på Javascript i nettleseren din for å kunne bruke den.';
-
?>
diff --git a/program/localization/ne_NP/labels.inc b/program/localization/ne_NP/labels.inc
index 5f69e1916..97f30201b 100644
--- a/program/localization/ne_NP/labels.inc
+++ b/program/localization/ne_NP/labels.inc
@@ -15,34 +15,22 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = '$product मा सà¥à¤µà¤¾à¤—त छ';
$labels['username'] = 'पà¥à¤°à¤¯à¥‹à¤—करà¥à¤¤à¤¾à¤•à¥‹ नाम';
$labels['password'] = 'पà¥à¤°à¤µà¥‡à¤¶ शबà¥à¤¦';
$labels['server'] = 'सरà¥à¤­à¤°';
$labels['login'] = 'लगइन गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥';
-
-// taskbar
$labels['logout'] = 'लगआउट गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥';
$labels['mail'] = 'ई-मेल';
$labels['settings'] = 'वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त रोजाईहरà¥';
$labels['addressbook'] = 'ठेगाना पà¥à¤¸à¥à¤¤à¤¿à¤•à¤¾';
-
-// mailbox names
$labels['inbox'] = 'पà¥à¤°à¤¾à¤ªà¥à¤¤à¤¿ मञà¥à¤œà¥‚षा';
$labels['drafts'] = 'डà¥à¤°à¤¾à¤«à¥à¤Ÿà¤¹à¤°à¥‚';
$labels['sent'] = 'पठईà¤à¤•à¤¾ मेलहरà¥';
$labels['trash'] = 'रदà¥à¤¦à¥€ टोकरी';
$labels['junk'] = 'सà¥à¤ªà¤¾à¤®';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'विषय';
$labels['from'] = 'पà¥à¤°à¥‡à¤·à¤•';
-$labels['sender'] = 'Sender';
$labels['to'] = 'पà¥à¤°à¤¾à¤ªà¤•';
$labels['cc'] = 'बोधारà¥à¤¥';
$labels['bcc'] = 'गà¥à¤ªà¥à¤¤ बोधारà¥à¤¥';
@@ -53,28 +41,18 @@ $labels['size'] = 'नाप';
$labels['priority'] = 'पà¥à¤°à¤¾à¤¥à¤®à¤¿à¤•à¤¤à¤¾';
$labels['organization'] = 'संसà¥à¤¥à¤¾';
$labels['readstatus'] = 'पढेको अवसà¥à¤¥à¤¾';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'फोलà¥à¤¡à¤°à¤¹à¤°à¥';
$labels['messagesfromto'] = 'मेलहरॠ$from बाट $to समà¥à¤®, $count मधà¥à¤¯à¤¬à¤¾à¤Ÿ';
$labels['threadsfromto'] = 'थà¥à¤°à¥‡à¤¡à¤¹à¤°à¥ $from बाट $to समà¥à¤®, $count मधà¥à¤¯à¤¬à¤¾à¤Ÿ';
$labels['messagenrof'] = '$nr नमà¥à¤¬à¤° मेल, $count मधà¥à¤¯à¤¬à¤¾à¤Ÿ';
$labels['fromtoshort'] = '$from - $to, $count मधà¥à¤¯à¤¬à¤¾à¤Ÿ';
-
$labels['copy'] = 'पà¥à¤°à¤¤à¤¿à¤²à¤¿à¤ªà¤¿ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥';
$labels['move'] = 'सारà¥à¤¨à¥à¤¹à¥‹à¤¸';
$labels['moveto'] = 'यहाठसारà¥à¤¨à¥à¤¹à¥‹à¤¸';
$labels['download'] = 'डाऊनलोड';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'फाईलको नाम';
$labels['filesize'] = 'फाईलको नाप';
-
$labels['addtoaddressbook'] = 'ठेगाना पà¥à¤¸à¥à¤¤à¤¿à¤•à¤¾à¤®à¤¾ भरà¥à¤¨à¥à¤¹à¥‹à¤¸';
-
-// weekdays short
$labels['sun'] = 'आइत';
$labels['mon'] = 'सोम';
$labels['tue'] = 'मंगल';
@@ -82,8 +60,6 @@ $labels['wed'] = 'बà¥à¤§';
$labels['thu'] = 'विहि';
$labels['fri'] = 'शà¥à¤•';
$labels['sat'] = 'शनि';
-
-// weekdays long
$labels['sunday'] = 'आइतवार';
$labels['monday'] = 'सोमवार';
$labels['tuesday'] = 'मंगलवार';
@@ -91,8 +67,6 @@ $labels['wednesday'] = 'बà¥à¤§à¤µà¤¾à¤°';
$labels['thursday'] = 'विहिवार';
$labels['friday'] = 'शà¥à¤•à¥à¤°à¤µà¤¾à¤°';
$labels['saturday'] = 'शनिवार';
-
-// months short
$labels['jan'] = 'जनवरी';
$labels['feb'] = 'फेबà¥à¤°à¥à¤µà¤°à¥€';
$labels['mar'] = 'मारà¥à¤š';
@@ -105,8 +79,6 @@ $labels['sep'] = 'सेपà¥à¤Ÿà¥‡à¤®à¥à¤¬à¤°';
$labels['oct'] = 'अकà¥à¤Ÿà¥‹à¤¬à¤°';
$labels['nov'] = 'नोभेमà¥à¤¬à¤°';
$labels['dec'] = 'डिसेमà¥à¤¬à¤°';
-
-// months long
$labels['longjan'] = 'जनवरी';
$labels['longfeb'] = 'फेबà¥à¤°à¥à¤µà¤°à¥€';
$labels['longmar'] = 'मारà¥à¤š';
@@ -119,10 +91,7 @@ $labels['longsep'] = 'सेपà¥à¤Ÿà¥‡à¤®à¥à¤¬à¤°';
$labels['longoct'] = 'अकà¥à¤Ÿà¥‹à¤¬à¤°';
$labels['longnov'] = 'नोभेमà¥à¤¬à¤°';
$labels['longdec'] = 'डिसेमà¥à¤¬à¤°';
-
$labels['today'] = 'आज';
-
-// toolbar buttons
$labels['refresh'] = 'ताजा पारà¥à¤¨à¥à¤¹à¥‹à¤¸à¥';
$labels['checkmail'] = 'नया मेल खोजà¥à¤¨à¥à¤¹à¥‹à¤¸';
$labels['compose'] = 'रचना गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥';
@@ -147,397 +116,95 @@ $labels['backtolist'] = 'सनà¥à¤¦à¥‡à¤¶ सूची देखाउà¤
$labels['viewsource'] = 'शà¥à¤°à¥‹à¤¤ देखाउनà¥à¤¹à¥‹à¤¸';
$labels['mark'] = 'चिनà¥à¤¹ लगाउनà¥à¤¹à¥‹à¤¸à¥';
$labels['markmessages'] = 'सनà¥à¤¦à¥‡à¤¶à¤®à¤¾ चिनà¥à¤¹ लगाउनà¥à¤¹à¥‹à¤¸à¥';
-$labels['markread'] = 'As read';
-$labels['markunread'] = 'As unread';
-$labels['markflagged'] = 'As flagged';
-$labels['markunflagged'] = 'As unflagged';
-$labels['moreactions'] = 'More actions...';
$labels['more'] = 'अठधेरै';
$labels['back'] = 'पछाडि';
$labels['options'] = 'विकलà¥à¤ªà¤¹à¤°à¥‚';
-
$labels['select'] = 'चयन गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥';
$labels['all'] = 'सबै';
$labels['none'] = 'हैन';
-$labels['currpage'] = 'Current page';
$labels['unread'] = 'नपढिà¤à¤•à¤¾ |';
-$labels['flagged'] = 'Flagged';
-$labels['unanswered'] = 'Unanswered';
-$labels['withattachment'] = 'With attachment';
-$labels['deleted'] = 'Deleted';
-$labels['undeleted'] = 'Not deleted';
-$labels['invert'] = 'Invert';
-$labels['filter'] = 'Filter';
-$labels['list'] = 'List';
-$labels['threads'] = 'Threads';
-$labels['expand-all'] = 'Expand All';
-$labels['expand-unread'] = 'Expand Unread';
-$labels['collapse-all'] = 'Collapse All';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
-$labels['fromto'] = 'From/To';
-$labels['flag'] = 'Flag';
-$labels['attachment'] = 'Attachment';
$labels['nonesort'] = 'हैन';
-$labels['sentdate'] = 'Sent date';
-$labels['arrival'] = 'Arrival date';
-$labels['asc'] = 'ascending';
-$labels['desc'] = 'descending';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'छोटो गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
$labels['empty'] = 'खाली गरà¥à¤¨à¥‡';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'डिसà¥à¤•à¤•à¥‹ उपभोग';
$labels['unknown'] = 'अजà¥à¤žà¤¾à¤¤';
$labels['unlimited'] = 'अनगिनà¥à¤¤à¤¿';
-
$labels['quicksearch'] = 'सà¥à¤«à¥à¤°à¥à¤¤à¤¿ खोज';
$labels['resetsearch'] = 'पन: खोज';
-$labels['searchmod'] = 'Search modifiers';
-$labels['msgtext'] = 'Entire message';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
-$labels['openinextwin'] = 'Open in new window';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
-$labels['editasnew'] = 'Edit as new';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'तà¥à¤°à¥à¤¨à¥à¤¤à¥ˆ मेल पठाउनà¥à¤¹à¥‹à¤¸';
$labels['savemessage'] = 'डà¥à¤°à¤¾à¤«à¥à¤Ÿ जोगाउनà¥à¤¹à¥‹à¤¸';
$labels['addattachment'] = 'फाइल टाà¤à¤¸à¥à¤¨à¥à¤¹à¥‹à¤¸';
$labels['charset'] = 'कà¥à¤¯à¤¾à¤°à¥‡à¤•à¥à¤Ÿà¤° सेट';
$labels['editortype'] = 'समà¥à¤ªà¤¾à¤¦à¤•à¤•à¥‹ पà¥à¤°à¤•à¤¾à¤°';
$labels['returnreceipt'] = 'फिरà¥à¤¤à¤¿ रसीद';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'हिजà¥à¤œà¥‡ जाà¤à¤š';
$labels['resumeediting'] = 'पà¥à¤¨: समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
$labels['revertto'] = 'पहिलेको सà¥à¤¥à¤¿à¤¤à¥€à¤®à¤¾ जानà¥à¤¹à¥‹à¤¸';
-
-$labels['attach'] = 'Attach';
$labels['attachments'] = 'टाà¤à¤¸à¤¿à¤à¤•à¤¾ फाईलहरà¥';
$labels['upload'] = 'अपलोड';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'बनà¥à¤¦';
-$labels['messageoptions'] = 'Message options...';
-
$labels['low'] = 'कम';
$labels['lowest'] = 'सबै भनà¥à¤¦à¤¾ कम';
$labels['normal'] = 'साधारण';
$labels['high'] = 'उचà¥à¤š';
$labels['highest'] = 'उचà¥à¤šà¤¤à¤®';
-
$labels['nosubject'] = '(बिना विषयको)';
$labels['showimages'] = 'चितà¥à¤° देखाउनà¥à¤¹à¥‹à¤¸';
-$labels['alwaysshow'] = 'Always show images from $sender';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'à¤à¤š-टी-à¤à¤®-à¤à¤² (HTML)';
$labels['plaintoggle'] = 'सादा अकà¥à¤·à¤°';
-$labels['savesentmessagein'] = 'Save sent message in';
-$labels['dontsave'] = 'don\'t save';
-$labels['maxuploadsize'] = 'Maximum allowed file size is $size';
-
-$labels['addcc'] = 'Add Cc';
-$labels['addbcc'] = 'Add Bcc';
-$labels['addreplyto'] = 'Add Reply-To';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
-$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
-$labels['receiptread'] = 'Return Receipt (read)';
-$labels['yourmessage'] = 'This is a Return Receipt for your message';
-$labels['receiptnote'] = 'Note: This receipt only acknowledges that the message was displayed on the recipient\'s computer. There is no guarantee that the recipient has read or understood the message contents.';
-
-// address boook
$labels['name'] = 'देखाउने नाम';
$labels['firstname'] = 'पहिलो नाम';
$labels['surname'] = 'थर';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'ई-मेल';
-$labels['phone'] = 'Phone';
-$labels['address'] = 'Address';
-$labels['street'] = 'Street';
-$labels['locality'] = 'City';
-$labels['zipcode'] = 'ZIP Code';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
-$labels['typemobile'] = 'Mobile';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'नया समà¥à¤ªà¤°à¥à¤• जोडà¥à¤¨à¥à¤¹à¥‹à¤¸';
$labels['editcontact'] = 'समà¥à¤ªà¤°à¥à¤• सचà¥à¤¯à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
-$labels['personalinfo'] = 'Personal information';
-
$labels['edit'] = 'सचà¥à¤¯à¤¾à¤‰à¤¨à¥à¤¹à¥‹à¤¸';
$labels['cancel'] = 'खारेज गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
$labels['save'] = 'जोगाउनà¥à¤¹à¥‹à¤¸';
$labels['delete'] = 'मेटाउनà¥à¤¹à¥‹à¤¸';
-$labels['rename'] = 'Rename';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'नया समà¥à¤ªà¤°à¥à¤• कारà¥à¤¡ बनाउनà¥à¤¹à¥‹à¤¸';
$labels['deletecontact'] = 'छानिà¤à¤•à¤¾ समà¥à¤ªà¤°à¥à¤•à¤¹à¤°à¥ मेटाउनà¥à¤¹à¥‹à¤¸';
$labels['composeto'] = 'मेल लेखी पठाउनà¥à¤¹à¥‹à¤¸';
$labels['contactsfromto'] = 'समà¥à¤ªà¤°à¥à¤•à¤¹à¤°à¥ $from बाट $to समà¥à¤®, $count मधà¥à¤¯à¤¬à¤¾à¤Ÿ';
$labels['print'] = 'छापà¥à¤¨à¥à¤¹à¥‹à¤¸';
$labels['export'] = 'à¤à¤•à¥à¤¸à¥à¤ªà¥‹à¤°à¥à¤Ÿ गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
-$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'पहिलेको सेट देखाउनà¥à¤¹à¥‹à¤¸';
$labels['firstpage'] = 'पहिलो सेट देखाउनà¥à¤¹à¥‹à¤¸';
$labels['nextpage'] = 'अरà¥à¤•à¥‹ सेट देखाउनà¥à¤¹à¥‹à¤¸';
$labels['lastpage'] = 'अनà¥à¤¤à¤¿à¤® सेट देखाउनà¥à¤¹à¥‹à¤¸';
-
-$labels['group'] = 'Group';
$labels['groups'] = 'समूहहरà¥';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'वà¥à¤¯à¤•à¥à¤¤à¤¿à¤—त ठेगानाहरà¥';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
-$labels['import'] = 'Import';
-$labels['importcontacts'] = 'Import contacts';
-$labels['importfromfile'] = 'Import from file:';
-$labels['importtarget'] = 'Add new contacts to address book:';
-$labels['importreplace'] = 'Replace the entire address book';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
-$labels['done'] = 'Done';
-
-// settings
$labels['settingsfor'] = 'तय';
-$labels['about'] = 'About';
$labels['preferences'] = 'रोजाइहरà¥';
$labels['userpreferences'] = 'यूसरका रोजाइहरà¥';
$labels['editpreferences'] = 'यूसरका रोजाइहर समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
-
$labels['identities'] = 'पहिचानहरà¥';
$labels['manageidentities'] = 'यो खाताको पहिचानहरको वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¾ गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
$labels['newidentity'] = 'नया पहिचान';
-
$labels['newitem'] = 'नया पà¥à¤°à¤•à¤¾à¤°';
$labels['edititem'] = 'पà¥à¤°à¤•à¤¾à¤° समà¥à¤ªà¤¾à¤¦à¤¨ गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
-
$labels['preferhtml'] = 'à¤à¤š-टी-à¤à¤®-à¤à¤²(HTML) देखाउनà¥à¤¹à¥‹à¤¸';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'à¤à¤š-टी-à¤à¤®-à¤à¤² (HTML) रूपका मेल';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'सà¥à¤¨à¥à¤¦à¤° तारिख';
$labels['setdefault'] = 'तय गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
-$labels['autodetect'] = 'Auto';
$labels['language'] = 'भाषा';
$labels['timezone'] = 'समय कà¥à¤·à¥‡à¤¤à¥à¤°';
$labels['pagesize'] = 'हरेक पनà¥à¤¨à¤¾à¤®à¤¾ यति';
$labels['signature'] = 'हसà¥à¤¤à¤¾à¤•à¥à¤·à¤°';
$labels['dstactive'] = 'पà¥à¤°à¤•à¤¾à¤¶ बचाव';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'à¤à¤š-टी-à¤à¤®-à¤à¤² (HTML) मेल लखन गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'à¤à¤š-टी-à¤à¤®-à¤à¤² (HTML) हसà¥à¤¤à¤¾à¤•à¥à¤·à¤°';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'पूरà¥à¤µ दृषà¥à¤¯ देखाउनà¥à¤¹à¥‹à¤¸';
-$labels['skin'] = 'Interface skin';
-$labels['logoutclear'] = 'Clear Trash on logout';
-$labels['logoutcompact'] = 'Compact Inbox on logout';
-$labels['uisettings'] = 'User Interface';
-$labels['serversettings'] = 'Server Settings';
-$labels['mailboxview'] = 'Mailbox View';
-$labels['mdnrequests'] = 'On request for return receipt';
-$labels['askuser'] = 'ask me';
-$labels['autosend'] = 'send receipt';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
-$labels['ignore'] = 'ignore';
-$labels['readwhendeleted'] = 'Mark the message as read on delete';
-$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
-$labels['skipdeleted'] = 'Do not show deleted messages';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
-$labels['always'] = 'always';
-$labels['showinlineimages'] = 'Display attached images below the message';
$labels['autosavedraft'] = 'सà¥à¤µà¤¤ डà¥à¤°à¤¾à¤«à¥à¤Ÿ जोगाउनà¥à¤¹à¥‹à¤¸';
-$labels['everynminutes'] = 'every $n minute(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'काहिलै नहà¥à¤¨à¥‡';
-$labels['immediately'] = 'immediately';
-$labels['messagesdisplaying'] = 'Displaying Messages';
-$labels['messagescomposition'] = 'Composing Messages';
-$labels['mimeparamfolding'] = 'Attachment names';
-$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
-$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (other)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
-$labels['advancedoptions'] = 'Advanced options';
-$labels['focusonnewmessage'] = 'Focus browser window on new message';
-$labels['checkallfolders'] = 'Check all folders for new messages';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
-$labels['section'] = 'Section';
-$labels['maintenance'] = 'Maintenance';
-$labels['newmessage'] = 'New Message';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
-$labels['autoaddsignature'] = 'Automatically add signature';
-$labels['newmessageonly'] = 'new message only';
-$labels['replyandforwardonly'] = 'replies and forwards only';
-$labels['insertsignature'] = 'Insert signature';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'फोलà¥à¤¡à¤°';
$labels['folders'] = 'फोलà¥à¤¡à¤°à¤¹à¤°à¥';
$labels['foldername'] = 'फोलà¥à¤¡à¤°à¤•à¥‹ नाम';
$labels['subscribed'] = 'सबसà¥à¤•à¥à¤°à¤¾à¤ˆà¤¬ गरियो';
-$labels['messagecount'] = 'Messages';
$labels['create'] = 'बनाउनà¥à¤¹à¥‹à¤¸';
$labels['createfolder'] = 'नया फोलडर बनाउनà¥à¤¹à¥‹à¤¸';
$labels['managefolders'] = 'फोलडर वà¥à¤¯à¤µà¤¸à¥à¤¥à¤¿à¤¤ गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
-$labels['specialfolders'] = 'Special Folders';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'यसरी तय गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
$labels['sortasc'] = 'पहिलो देखि अनà¥à¤¤à¤¿à¤® समà¥à¤® तय गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
$labels['sortdesc'] = 'अनà¥à¤¤à¤¿à¤® देखि पहिलो समà¥à¤® तय गरà¥à¤¨à¥à¤¹à¥‹à¤¸';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
-$labels['B'] = 'B';
-$labels['KB'] = 'KB';
-$labels['MB'] = 'MB';
-$labels['GB'] = 'GB';
-
-// character sets
-$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/ne_NP/messages.inc b/program/localization/ne_NP/messages.inc
index bedf41d8d..7873f5715 100644
--- a/program/localization/ne_NP/messages.inc
+++ b/program/localization/ne_NP/messages.inc
@@ -15,30 +15,14 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'लागईन हà¥à¤¨ पाà¤à¤¨';
$messages['cookiesdisabled'] = 'तपाईको बà¥à¤°à¤¾à¤Šà¤¸à¤°à¤²à¥‡ कà¥à¤•à¥€ सà¥à¤µà¥€à¤•à¤¾à¤° गारिरहेको छैन';
$messages['sessionerror'] = 'सतà¥à¤° समापà¥à¤¤ वा अवैदà¥à¤¯';
$messages['storageerror'] = 'सरà¥à¤µà¤° संग समà¥à¤ªà¤°à¥à¤• हà¥à¤¨ पाà¤à¤¨';
-$messages['servererror'] = 'Server Error!';
-$messages['servererrormsg'] = 'Server Error: $msg';
-$messages['dberror'] = 'Database Error!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Invalid request! No data was saved.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'यो मेलबकà¥à¤¸ मा कà¥à¤¨à¥ˆ मेल छैन';
$messages['loggedout'] = 'सतà¥à¤° समापà¥à¤¤ । नमासà¥à¤•à¤¾à¤°!';
$messages['mailboxempty'] = 'मेल बकà¥à¤¸ खाली छ';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'लोड भईरहेको छ...';
-$messages['uploading'] = 'Uploading file...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'डाटा लोड भईरहेको छै...';
$messages['checkingmail'] = 'नया मेलको खोजी भईरहेको छ...';
$messages['sendingmessage'] = 'मेल पठाईदै रहेको छ...';
@@ -48,129 +32,38 @@ $messages['messagesaved'] = 'मेल डà¥à¤°à¤¾à¤«à¥à¤Ÿ फोलà¥à¤¡à¤°à
$messages['successfullysaved'] = 'सफलà¥à¤¤à¤¾à¤ªà¥‚रà¥à¤µà¤• जोगाईयो';
$messages['addedsuccessfully'] = 'समà¥à¤ªà¤°à¥à¤• पà¥à¤¸à¥à¤¤à¤¿à¤•à¤¾à¤®à¤¾ सफलà¥à¤¤à¤¾à¤ªà¥‚रà¥à¤µà¤• समà¥à¤ªà¤°à¥à¤• पà¥à¤°à¤µà¤¿à¤·à¥à¤Ÿ गारियो';
$messages['contactexists'] = 'यो ई-मेल पहिलै लिईसकिà¤à¤•à¥‹ छ';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'तपाईको पà¥à¤°à¤¾à¤ˆà¤µà¥‡à¤¸à¥€ को लागि तथा अनà¥à¤¯ सà¥à¤ªà¤¾à¤®à¤¬à¤¾à¤Ÿ बचà¥à¤¨à¤•à¥‹à¤²à¤¾à¤—ि यो मेलमा चितà¥à¤°à¤¹à¥à¤°à¥ देखाईà¤à¤•à¤¾ छैननà¥à¥¤';
$messages['encryptedmessage'] = 'माफ गरà¥à¤¨à¥à¤¹à¥‹à¤¸à¥‡, यो मेल ईनà¥à¤•à¥à¤°à¤¿à¤«à¥à¤Ÿ गरिà¤à¤•à¥‹ रूपमा छ, तà¥à¤¯à¤¸à¥ˆà¤²à¥‡ देखाउन सकिदैन!';
$messages['nocontactsfound'] = 'कà¥à¤¨à¥ˆ समà¥à¤ªà¤°à¥à¤• भेटिà¤à¤¨';
$messages['contactnotfound'] = 'अनà¥à¤°à¥‹à¤§ गारिà¤à¤•à¥‹ समà¥à¤ªà¤°à¥à¤• भेटिà¤à¤¨';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'मेल पठाउन सकिà¤à¤¨';
-$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
-$messages['errorsavingsent'] = 'An error occured while saving sent message.';
-$messages['errorsaving'] = 'जोगाउदा-जोगाउदै गडबड भायो';
$messages['errormoving'] = 'मेल सारà¥à¤¨ सकिà¤à¤¨';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'मेल मेटाउन सकिà¤à¤¨';
-$messages['errormarking'] = 'Could not mark the message(s).';
$messages['deletecontactconfirm'] = 'तापाईले छानà¥à¤¨à¥à¤­à¤à¤•à¥‹ समà¥à¤ªà¤°à¥à¤•à¤¹à¤°à¥, साà¤à¤šà¥ˆ मेटà¥à¤¨ चहानà¥à¤¹à¥à¤¨à¥à¤›?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'तापाईले छानà¥à¤¨à¥ भà¤à¤•à¥‹ मेलहरà¥, साà¤à¤šà¥ˆ मेटà¥à¤¨ चहानà¥à¤¹à¥à¤¨à¥à¤›?';
$messages['deletefolderconfirm'] = 'तापाईले साà¤à¤šà¥ˆ यो फोलà¥à¤¡à¤° मेटà¥à¤¨ चहानॠहà¥à¤¨à¥à¤›?';
$messages['purgefolderconfirm'] = 'तापाईले साà¤à¤šà¥ˆ यो फोलà¥à¤¡à¤°à¤®à¤¾ भà¤à¤•à¤¾ सबै मेलहरॠमेटà¥à¤¨ चहानà¥à¤¹à¥à¤¨à¥à¤›?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
-$messages['folderdeleting'] = 'Deleting folder...';
-$messages['foldermoving'] = 'Moving folder...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'फरà¥à¤® पूरà¥à¤£ रà¥à¤ªà¤®à¤¾ भरिà¤à¤•à¥‹ छैन';
$messages['noemailwarning'] = 'कृपया वैदà¥à¤¯ ई-मेल भरà¥à¤¨à¥à¤¹à¥‹à¤¸';
$messages['nonamewarning'] = 'कृपया नाम भरà¥à¤¨à¥à¤¹à¥‹à¤¸';
$messages['nopagesizewarning'] = 'कृपया पनà¥à¤¨à¤¾à¤•à¥‹ नाप भरà¥à¤¨à¥à¤¹à¥‹à¤¸';
-$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
$messages['norecipientwarning'] = 'कृपया कम-से-कम à¤à¤‰à¤Ÿà¤¾ पà¥à¤°à¤¾à¤ªà¤•à¤•à¥‹ विवरण भरà¥à¤¨à¥à¤¹à¥‹à¤¸';
$messages['nosubjectwarning'] = 'मेलको कà¥à¤¨à¥ˆ विषय तोकिà¤à¤•à¥‹ छैनै। केहि तोकà¥à¤¨ चहानà¥à¤¹à¥à¤¨à¥à¤› ?';
$messages['nobodywarning'] = 'बिना केहि लेखि पठाउने?';
$messages['notsentwarning'] = 'मेल पठà¤à¤•à¥‹ छैन.. मेल रदà¥à¤¦ गरà¥à¤¨ चहानà¥à¤¹à¥à¤¨à¥à¤›?';
$messages['noldapserver'] = 'कृपया खोजको निमà¥à¤¤à¤¿ à¤à¤‰à¤Ÿà¤¾ à¤à¤²à¤¡à¤¾à¤ª सरà¥à¤µà¤° छानà¥à¤¨à¤¹à¥‹à¤¸';
$messages['nosearchname'] = 'कृपया समà¥à¤ªà¤°à¥à¤•à¤•à¥‹ नाम या ई-मेल भरà¥à¤¨à¥à¤¹à¥‹à¤¸';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = '$nr मेलहरॠपाइयो';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'खोज असफल रहयो';
$messages['searching'] = 'खोजि भईरहेको छ...';
$messages['checking'] = 'जाà¤à¤š भईरहेको छ...';
$messages['nospellerrors'] = 'कà¥à¤¨à¥ˆ गलत हिजà¥à¤œà¥‡ फेला परेननà¥';
$messages['folderdeleted'] = 'फोलà¥à¤¡à¤° सफलà¥à¤¤à¤¾à¤ªà¥‚रà¥à¤µà¤• मेटियो';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'सफलà¥à¤¤à¤¾à¤ªà¥‚रà¥à¤µà¤• मेटियो';
$messages['converting'] = 'मेलबाट फोरà¥à¤®à¤¾à¤Ÿà¤¿à¤™ हटाईदै छ...';
$messages['messageopenerror'] = 'सरà¥à¤µà¤°à¤¬à¤¾à¤Ÿ मेल लोड हà¥à¤¨ सकेन';
$messages['fileuploaderror'] = 'फाईल अपलोड हà¥à¤¨ असफल';
$messages['filesizeerror'] = 'अपलोड गरिà¤à¤•à¥‹ फाईल हद $size भनà¥à¤¦à¤¾ ठूलो छ';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'यो ठेगाना को शà¥à¤°à¥‹à¤¤ पढà¥à¤¨à¤•à¥‹ लागि मातà¥à¤° उपलबà¥à¤§ छ';
$messages['errorsavingcontact'] = 'सà¥à¤®à¤ªà¤°à¥à¤•à¤•à¥‹ ठेगाना जोगाउन सकिà¤à¤¨';
-$messages['movingmessage'] = 'Moving message(s)...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
-$messages['receiptsent'] = 'Successfully sent a read receipt.';
-$messages['errorsendingreceipt'] = 'Could not send the receipt.';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
-$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
-$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
-$messages['selectimportfile'] = 'Please select a file to upload.';
-$messages['addresswriterror'] = 'The selected address book is not writeable.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
-$messages['importwait'] = 'Importing, please wait...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operation not permitted!';
-$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/nl_BE/labels.inc b/program/localization/nl_BE/labels.inc
index 1e6bb2d2f..2e76194e1 100644
--- a/program/localization/nl_BE/labels.inc
+++ b/program/localization/nl_BE/labels.inc
@@ -15,31 +15,20 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Welkom bij $product';
$labels['username'] = 'Gebruikersnaam';
$labels['password'] = 'Wachtwoord';
$labels['server'] = 'Server';
$labels['login'] = 'Aanmelden';
-
-// taskbar
$labels['logout'] = 'Afmelden';
$labels['mail'] = 'Berichten';
$labels['settings'] = 'Instellingen';
$labels['addressbook'] = 'Contactpersonen';
-
-// mailbox names
$labels['inbox'] = 'Postvak IN';
$labels['drafts'] = 'Concepten';
$labels['sent'] = 'Verzonden berichten';
$labels['trash'] = 'Prullenbak';
$labels['junk'] = 'Spam';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Onderwerp';
$labels['from'] = 'Van';
$labels['sender'] = 'Afzender';
@@ -54,27 +43,20 @@ $labels['priority'] = 'Prioriteit';
$labels['organization'] = 'Organisatie';
$labels['readstatus'] = 'Gelezen?';
$labels['listoptions'] = 'Lijstopties...';
-
$labels['mailboxlist'] = 'Mappen';
$labels['messagesfromto'] = 'Berichten $from - $to van $count';
$labels['threadsfromto'] = 'Conversaties $from - $to van $count';
$labels['messagenrof'] = 'Bericht $nr van $count';
$labels['fromtoshort'] = '$from - $to van $count';
-
$labels['copy'] = 'Kopieer';
$labels['move'] = 'Verplaats';
$labels['moveto'] = 'Verplaats naar...';
$labels['download'] = 'Downloaden';
-$labels['open'] = 'Open';
$labels['showattachment'] = 'Weergeven';
$labels['showanyway'] = 'Toch weergeven';
-
$labels['filename'] = 'Bestandsnaam';
$labels['filesize'] = 'Bestandsgrootte';
-
$labels['addtoaddressbook'] = 'Voeg toe aan lijst met contactpersonen';
-
-// weekdays short
$labels['sun'] = 'Zo';
$labels['mon'] = 'Ma';
$labels['tue'] = 'Di';
@@ -82,8 +64,6 @@ $labels['wed'] = 'Wo';
$labels['thu'] = 'Do';
$labels['fri'] = 'Vr';
$labels['sat'] = 'Za';
-
-// weekdays long
$labels['sunday'] = 'Zondag';
$labels['monday'] = 'Maandag';
$labels['tuesday'] = 'Dinsdag';
@@ -91,8 +71,6 @@ $labels['wednesday'] = 'Woensdag';
$labels['thursday'] = 'Donderdag';
$labels['friday'] = 'Vrijdag';
$labels['saturday'] = 'Zaterdag';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mrt';
@@ -105,8 +83,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
-
-// months long
$labels['longjan'] = 'Januari';
$labels['longfeb'] = 'Februari';
$labels['longmar'] = 'Maart';
@@ -119,10 +95,7 @@ $labels['longsep'] = 'September';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'December';
-
$labels['today'] = 'Vandaag';
-
-// toolbar buttons
$labels['refresh'] = 'Vernieuwen';
$labels['checkmail'] = 'Controleer op nieuwe berichten';
$labels['compose'] = 'Nieuw bericht opstellen';
@@ -133,7 +106,6 @@ $labels['replytoallmessage'] = 'Antwoorden naar lijst of naar afzender en alle o
$labels['replyall'] = 'Allen beantwoorden';
$labels['replylist'] = 'Lijst beantwoorden';
$labels['forward'] = 'Doorsturen';
-$labels['forwardinline'] = 'Forward inline';
$labels['forwardattachment'] = 'Doorsturen als bijlage';
$labels['forwardmessage'] = 'Bericht doorsturen';
$labels['deletemessage'] = 'Dit bericht verwijderen';
@@ -155,7 +127,6 @@ $labels['moreactions'] = 'Meer acties...';
$labels['more'] = 'Meer';
$labels['back'] = 'Terug';
$labels['options'] = 'Opties';
-
$labels['select'] = 'Selecteren';
$labels['all'] = 'Alle';
$labels['none'] = 'Geen';
@@ -163,7 +134,6 @@ $labels['currpage'] = 'Huidige pagina';
$labels['unread'] = 'Ongelezen';
$labels['flagged'] = 'Geselecteerd';
$labels['unanswered'] = 'Onbeantwoord';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'Verwijderd';
$labels['undeleted'] = 'Niet verwijderd';
$labels['invert'] = 'Selectie omkeren';
@@ -174,7 +144,6 @@ $labels['expand-all'] = 'Alles uitklappen';
$labels['expand-unread'] = 'Ongelezen uitklappen';
$labels['collapse-all'] = 'Alles inklappen';
$labels['threaded'] = 'Conversaties';
-
$labels['autoexpand_threads'] = 'Klap alle conversaties uit';
$labels['do_expand'] = 'alle conversaties';
$labels['expand_only_unread'] = 'alleen met ongelezen berichten';
@@ -190,29 +159,18 @@ $labels['listcolumns'] = 'Kolommen';
$labels['listsorting'] = 'Sorteerkolom';
$labels['listorder'] = 'Sorteervolgorde';
$labels['listmode'] = 'Lijstweergave mode';
-
$labels['folderactions'] = 'Acties voor map...';
$labels['compact'] = 'Comprimeren';
$labels['empty'] = 'Legen';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Gebruikte schijfruimte';
$labels['unknown'] = 'onbekend';
$labels['unlimited'] = 'onbeperkt';
-
$labels['quicksearch'] = 'Snelzoeken';
$labels['resetsearch'] = 'Zoek opnieuw';
$labels['searchmod'] = 'Zoekopties';
$labels['msgtext'] = 'Volledig bericht';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'Openen in een nieuw venster';
$labels['emlsave'] = 'Opslaan (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'Als nieuw bewerken';
$labels['send'] = 'Verzenden';
$labels['sendmessage'] = 'Bericht verzenden';
@@ -224,174 +182,86 @@ $labels['returnreceipt'] = 'Ontvangstbevestiging';
$labels['dsn'] = 'Delivery Status Notification';
$labels['mailreplyintro'] = 'Op $date, schreef $sender:';
$labels['originalmessage'] = 'Orgineel bericht';
-
$labels['editidents'] = 'Bewerk identiteiten';
$labels['spellcheck'] = 'Spellen';
$labels['checkspelling'] = 'Controleer spelling';
$labels['resumeediting'] = 'Hervat bewerken';
$labels['revertto'] = 'Ongedaan maken';
-
$labels['attach'] = 'Bijvoegen';
$labels['attachments'] = 'Bijlagen';
$labels['upload'] = 'Uploaden';
$labels['uploadprogress'] = '$percent ($current van $total)';
$labels['close'] = 'Sluiten';
$labels['messageoptions'] = 'Opties voor bericht...';
-
$labels['low'] = 'Laag';
$labels['lowest'] = 'Laagste';
$labels['normal'] = 'Normaal';
$labels['high'] = 'Hoog';
$labels['highest'] = 'Hoogste';
-
$labels['nosubject'] = '(geen onderwerp)';
$labels['showimages'] = 'Toon afbeeldingen';
$labels['alwaysshow'] = 'Afbeeldingen van $sender altijd tonen';
$labels['isdraft'] = 'Dit is een concept bericht.';
$labels['andnmore'] = '$nr meer...';
$labels['togglemoreheaders'] = 'Toon meer berichthoofden';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Platte tekst';
$labels['savesentmessagein'] = 'Bewaar verzonden bericht in';
$labels['dontsave'] = 'niet bewaren';
$labels['maxuploadsize'] = 'Maximum toegestane bestandsgrootte is $size';
-
$labels['addcc'] = 'Cc toevoegen';
$labels['addbcc'] = 'Bcc toevoegen';
$labels['addreplyto'] = 'Antwoorden aan toevoegen';
$labels['addfollowupto'] = 'Followup aan toevoegen';
-
-// mdn
$labels['mdnrequest'] = 'De afzender heeft een ontvangstbevestiging gevraagd. Wilt u deze versturen?';
$labels['receiptread'] = 'Ontvangstbevestiging (gelezen)';
$labels['yourmessage'] = 'Dir is een onvangstbevestiging voor uw bericht';
$labels['receiptnote'] = 'Opmerking: deze ontvangstbevestiging houdt enkel in dat het bericht was weergegeven bij de ontvanger. Er is geen garantie dat de ontvanger het bericht daadwerkelijk heeft gelezen en/of begrepen.';
-
-// address boook
$labels['name'] = 'Naam';
$labels['firstname'] = 'Voornaam';
$labels['surname'] = 'Achternaam';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'E-mailadres';
-$labels['phone'] = 'Phone';
-$labels['address'] = 'Address';
-$labels['street'] = 'Street';
-$labels['locality'] = 'City';
-$labels['zipcode'] = 'ZIP Code';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
-$labels['typemobile'] = 'Mobile';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'Geselecteerde contactpersoon toevoegen';
$labels['editcontact'] = 'Contactpersoon bewerken';
$labels['contacts'] = 'Contactpersonen';
$labels['contactproperties'] = 'Eigenschappen van contactpersoon';
-$labels['personalinfo'] = 'Personal information';
-
$labels['edit'] = 'Bewerken';
$labels['cancel'] = 'Annuleren';
$labels['save'] = 'Opslaan';
$labels['delete'] = 'Verwijderen';
$labels['rename'] = 'Hernoemen';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'Contactpersoon toevoegen';
$labels['deletecontact'] = 'Verwijder geselecteerde contactpersonen';
$labels['composeto'] = 'Mail sturen aan';
$labels['contactsfromto'] = 'Contactpersonen $from - $to van $count';
$labels['print'] = 'Afdrukken';
$labels['export'] = 'Exporteren';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'Exporteer contactpersonen in vCard formaat';
$labels['newcontactgroup'] = 'Maak een nieuwe contactgroep';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'Toon vorige';
$labels['firstpage'] = 'Toon eerste';
$labels['nextpage'] = 'Toon volgende';
$labels['lastpage'] = 'Toon laatste';
-
$labels['group'] = 'Groep';
$labels['groups'] = 'Groepen';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Personlijke adressen';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
$labels['import'] = 'Importeer';
$labels['importcontacts'] = 'Contactpersonen importeren';
$labels['importfromfile'] = 'Importeer van bestand:';
-$labels['importtarget'] = 'Add new contacts to address book:';
$labels['importreplace'] = 'Vervang het complete adresboek';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'Klaar';
-
-// settings
$labels['settingsfor'] = 'Instellingen voor';
-$labels['about'] = 'About';
$labels['preferences'] = 'Voorkeuren';
$labels['userpreferences'] = 'Gebruikersvoorkeuren';
$labels['editpreferences'] = 'Gebruikersvoorkeuren bewerken';
-
$labels['identities'] = 'Identiteiten';
$labels['manageidentities'] = 'Beheer de identiteiten voor deze gebruiker';
$labels['newidentity'] = 'Nieuwe identiteit';
-
$labels['newitem'] = 'Nieuw';
$labels['edititem'] = 'Bewerken';
-
$labels['preferhtml'] = 'Gebruik HTML-opmaak';
$labels['defaultcharset'] = 'Standaard karakterset';
$labels['htmlmessage'] = 'HTML-bericht';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'Uitgebreide datumweergave';
$labels['setdefault'] = 'Als standaard instellen';
$labels['autodetect'] = 'Automatisch';
@@ -400,13 +270,9 @@ $labels['timezone'] = 'Tijdzone';
$labels['pagesize'] = 'Berichten per pagina';
$labels['signature'] = 'Handtekening';
$labels['dstactive'] = 'Zomer/wintertijd';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'HTML berichten opmaken';
$labels['htmlonreply'] = 'enkel bij beantwoorden van een HTML bericht';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'HTML handtekening';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Toon voorbeeldvenster';
$labels['skin'] = 'Opmaakprofiel';
$labels['logoutclear'] = 'Prullenbak legen bij uitloggen';
@@ -424,14 +290,12 @@ $labels['readwhendeleted'] = 'Bericht na verwijderen als gelezen markeren';
$labels['flagfordeletion'] = 'Bericht niet verwijderen maar als verwijderd markeren';
$labels['skipdeleted'] = 'Verwijderde berichten niet tonen';
$labels['deletealways'] = 'Verwijder bericht wanneer verplaatsen naar Prullenbak mislukt';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
$labels['showremoteimages'] = 'Geef externe toegevoegde berichten weer';
$labels['fromknownsenders'] = 'Van bekende afzenders';
$labels['always'] = 'altijd';
$labels['showinlineimages'] = 'Toon bijgevoegde afbeeldingen onder het bericht';
$labels['autosavedraft'] = 'Automatisch als concept opslaan';
$labels['everynminutes'] = 'elke $n minuten';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'nooit';
$labels['immediately'] = 'onmiddellijk';
$labels['messagesdisplaying'] = 'Berichten weergave';
@@ -445,15 +309,12 @@ $labels['advancedoptions'] = 'Geavanceerde opties';
$labels['focusonnewmessage'] = 'Focus browserscherm bij nieuw bericht';
$labels['checkallfolders'] = 'Controleer alle mappen op nieuwe berichten';
$labels['displaynext'] = 'Na verplaatsen/verwijderen het volgende bericht tonen';
-$labels['defaultfont'] = 'Default font of HTML message';
$labels['mainoptions'] = 'Hoofdopties';
-$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'Sectie';
$labels['maintenance'] = 'Onderhoud';
$labels['newmessage'] = 'Nieuw bericht';
$labels['signatureoptions'] = 'Opties voor handtekening';
$labels['whenreplying'] = 'Bij beantwoorden';
-$labels['replyempty'] = 'do not quote the original message';
$labels['replytopposting'] = 'begin bericht boven het origineel';
$labels['replybottomposting'] = 'begin bericht onder het origineel';
$labels['replyremovesignature'] = 'Verwijder handtekening uit het origneel bij beantwoorden';
@@ -466,21 +327,6 @@ $labels['afternseconds'] = 'Na $n seconden';
$labels['reqmdn'] = 'Vraag altijd een ontvangstbevestiging';
$labels['reqdsn'] = 'Vraag altijd een Delivery Status Notification';
$labels['replysamefolder'] = 'Plaats antwoorden in de map van het beantwoorde bericht';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'Map';
$labels['folders'] = 'Mappen';
$labels['foldername'] = 'Naam';
@@ -497,30 +343,13 @@ $labels['location'] = 'Locatie';
$labels['info'] = 'Informatie';
$labels['getfoldersize'] = 'Klik voor de grootte van de map';
$labels['changesubscription'] = 'Klik voor abonnement te wijzigen';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'Sorteren op';
$labels['sortasc'] = 'Oplopend sorteren';
$labels['sortdesc'] = 'Aflopend sorteren';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Engels';
$labels['westerneuropean'] = 'West-Europees';
@@ -539,5 +368,4 @@ $labels['vietnamese'] = 'Vietnamees';
$labels['japanese'] = 'Japans';
$labels['korean'] = 'Koreaans';
$labels['chinese'] = 'Chinees';
-
?>
diff --git a/program/localization/nl_BE/messages.inc b/program/localization/nl_BE/messages.inc
index f7ed8e8d4..a90e250d9 100644
--- a/program/localization/nl_BE/messages.inc
+++ b/program/localization/nl_BE/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Er is een fout opgetreden!';
$messages['loginfailed'] = 'Aanmelden mislukt...';
$messages['cookiesdisabled'] = 'Uw browser accepteert geen cookies...';
@@ -28,8 +26,6 @@ $messages['dberror'] = 'Database Fout!';
$messages['requesttimedout'] = 'Aanvraag verlopen';
$messages['errorreadonly'] = 'Kon opdracht niet uitvoeren. Map is alleen-lezen.';
$messages['errornoperm'] = 'Kon opdracht niet uitvoeren. Toegang geweigerd.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'Ongeldige aanvraag! Er zijn geen gegevens opgeslagen.';
$messages['invalidhost'] = 'Ongeldige server.';
$messages['nomessagesfound'] = 'Er zijn geen berichten in deze map...';
@@ -56,8 +52,6 @@ $messages['contactnotfound'] = 'De gevraagde contactpersoon was niet gevonden.';
$messages['contactsearchonly'] = 'Voer enkele zoektermen in om de contactpersonen te zoeken.';
$messages['sendingfailed'] = 'Kon het bericht niet versturen...';
$messages['senttooquickly'] = 'U moet $sec second(en) wachten om het bericht te versturen.';
-$messages['errorsavingsent'] = 'Er is een fout opgetreden tijdens het opslaan van het verzonden bericht.';
-$messages['errorsaving'] = 'Er is een fout opgetreden bij het opslaan van het bericht...';
$messages['errormoving'] = 'Kon de bericht(en) niet verplaatsen...';
$messages['errorcopying'] = 'Kon de bericht(en) niet kopiëren';
$messages['errordeleting'] = 'Kon de bericht(en) niet verwijderen...';
@@ -101,16 +95,11 @@ $messages['converting'] = 'Opmaak van het bericht wordt gewist...';
$messages['messageopenerror'] = 'Kon het bericht niet ophalen van de server.';
$messages['fileuploaderror'] = 'Bestandsupload mislukt.';
$messages['filesizeerror'] = 'Het bestand overschrijdt de maximum grootte van $size.';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Het adres kan niet worden opgeslagen.';
$messages['errorsavingcontact'] = 'Kon de contactpersoon niet bewaren.';
$messages['movingmessage'] = 'Bericht wordt verplaatst...';
$messages['copyingmessage'] = 'Bericht wordt gekopieerd...';
$messages['copyingcontact'] = 'Kopiëren contactpersonen...';
-$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'Bericht wordt verwijderd...';
$messages['markingmessage'] = 'Bericht wordt gemarkeerd...';
$messages['addingmember'] = 'Contactpersonen worden toegevoegd aan de groep...';
@@ -129,8 +118,6 @@ $messages['importwait'] = 'Bezig met importeren, even geduld...';
$messages['importformaterror'] = 'Importeren mislukt! Het geüploade bestand is geen importeerbaar bestand.';
$messages['importconfirm'] = '<b>Er zijn $inserted contactpersonen succesvol geïmporteerd</b>';
$messages['importconfirmskipped'] = '<b>$skipped bestaande contactpersonen overgeslagen</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'Deze actie is niet toegestaan!';
$messages['nofromaddress'] = 'De geselecteerde identiteit bevat geen emailadres.';
$messages['editorwarning'] = 'Door het overschakelen naar de platte tekst editor gaat alle opmaak verloren. Weet u zeker dat u verder wilt gaan?';
@@ -144,7 +131,6 @@ $messages['smtperror'] = 'SMTP Fout: $msg';
$messages['emailformaterror'] = 'Ongeldig e-mailadres: $email';
$messages['toomanyrecipients'] = 'Te veel geadresseerden. Verminder de hoeveelheid geadresseerden tot $max.';
$messages['maxgroupmembersreached'] = 'Het aantal leden van de groep groter is dan de maximale van $max.';
-$messages['internalerror'] = 'Er is een interne fout opgetreden. Probeer het nogmaals.';
$messages['contactdelerror'] = 'Kon contactpersoon niet verwijderen.';
$messages['contactdeleted'] = 'Contactpersoon succesvol verwijderd.';
$messages['contactrestoreerror'] = 'Verwijderde contactpersonen konden niet hersteld worden.';
@@ -172,5 +158,4 @@ $messages['parentnotwritable'] = 'U heeft niet voldoende rechten een map te make
$messages['messagetoobig'] = 'Dit deel van uw bericht is te groot om het te verwerken.';
$messages['attachmentvalidationerror'] = 'OPGELET! Deze bijlage is verdacht omdat het aangetroffen bestandstype niet overeenkomt met het verwachte type. Indien u de afzender niet vertrouwd open deze bijlage in geen geval in uw browser aangezien deze schadelijk data kan bevatten.<br /><br /><em>Verwacht: $expected; Aangetroffen: $detected</em>';
$messages['noscriptwarning'] = 'Opgelet: deze webmail service vereist JavaScript! Om deze service te kunnen gebruiken dient u JavaScript toe te staan in de instellingen van uw browser.';
-
?>
diff --git a/program/localization/nl_NL/labels.inc b/program/localization/nl_NL/labels.inc
index 8a6f994fa..58179eda5 100644
--- a/program/localization/nl_NL/labels.inc
+++ b/program/localization/nl_NL/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Welkom bij $product';
$labels['username'] = 'Gebruikersnaam';
$labels['password'] = 'Wachtwoord';
$labels['server'] = 'Server';
$labels['login'] = 'Inloggen';
-
-// taskbar
$labels['logout'] = 'Uitloggen';
$labels['mail'] = 'E-mail';
$labels['settings'] = 'Instellingen';
$labels['addressbook'] = 'Adresboek';
-
-// mailbox names
$labels['inbox'] = 'Postvak In';
$labels['drafts'] = 'Concepten';
$labels['sent'] = 'Verzonden';
$labels['trash'] = 'Prullenbak';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Toon echte namen voor speciale mappen';
-
-// message listing
$labels['subject'] = 'Onderwerp';
$labels['from'] = 'Afzender';
$labels['sender'] = 'Afzender';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Prioriteit';
$labels['organization'] = 'Organisatie';
$labels['readstatus'] = 'Gelezen?';
$labels['listoptions'] = 'Lijstopties...';
-
$labels['mailboxlist'] = 'Mappen';
$labels['messagesfromto'] = 'Bericht $from t/m $to van $count';
$labels['threadsfromto'] = 'Conversatie $from t/m $to van $count';
$labels['messagenrof'] = 'Bericht $nr van $count';
$labels['fromtoshort'] = '$from – $to van $count';
-
$labels['copy'] = 'Kopiëren';
$labels['move'] = 'Verplaats';
$labels['moveto'] = 'Verplaats naar...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Download';
$labels['open'] = 'Openen';
$labels['showattachment'] = 'Toon';
$labels['showanyway'] = 'Laat toch zien';
-
$labels['filename'] = 'Bestandsnaam';
$labels['filesize'] = 'Bestandsgrootte';
-
$labels['addtoaddressbook'] = 'Toevoegen aan adresboek';
-
-// weekdays short
$labels['sun'] = 'Zo';
$labels['mon'] = 'Ma';
$labels['tue'] = 'Di';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Wo';
$labels['thu'] = 'Do';
$labels['fri'] = 'Vr';
$labels['sat'] = 'Za';
-
-// weekdays long
$labels['sunday'] = 'zondag';
$labels['monday'] = 'maandag';
$labels['tuesday'] = 'dinsdag';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'woensdag';
$labels['thursday'] = 'donderdag';
$labels['friday'] = 'vrijdag';
$labels['saturday'] = 'zaterdag';
-
-// months short
$labels['jan'] = 'jan';
$labels['feb'] = 'feb';
$labels['mar'] = 'mrt';
@@ -105,8 +85,6 @@ $labels['sep'] = 'sep';
$labels['oct'] = 'okt';
$labels['nov'] = 'nov';
$labels['dec'] = 'dec';
-
-// months long
$labels['longjan'] = 'januari';
$labels['longfeb'] = 'februari';
$labels['longmar'] = 'maart';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'september';
$labels['longoct'] = 'oktober';
$labels['longnov'] = 'november';
$labels['longdec'] = 'december';
-
$labels['today'] = 'Vandaag';
-
-// toolbar buttons
$labels['refresh'] = 'Vernieuwen';
$labels['checkmail'] = 'Controleer op nieuwe berichten';
$labels['compose'] = 'Opstellen';
@@ -130,7 +105,7 @@ $labels['writenewmessage'] = 'Maak een nieuw bericht';
$labels['reply'] = 'Beantwoorden';
$labels['replytomessage'] = 'Beantwoord het bericht';
$labels['replytoallmessage'] = 'Beantwoord lijst of afzender en alle ontvangers';
-$labels['replyall'] = 'Beantwoord alle ontvangers';
+$labels['replyall'] = 'Beantwoord iedereen';
$labels['replylist'] = 'Beantwoord lijst';
$labels['forward'] = 'Doorsturen';
$labels['forwardinline'] = 'Doorsturen in bericht';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Meer acties...';
$labels['more'] = 'Meer';
$labels['back'] = 'Terug';
$labels['options'] = 'Opties';
-
$labels['select'] = 'Selecteer';
$labels['all'] = 'Allemaal';
$labels['none'] = 'Geen';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Alles uitklappen';
$labels['expand-unread'] = 'Ongelezen uitklappen';
$labels['collapse-all'] = 'Alles inklappen';
$labels['threaded'] = 'Conversaties';
-
$labels['autoexpand_threads'] = 'Klap alle conversaties uit';
$labels['do_expand'] = 'alle conversaties';
$labels['expand_only_unread'] = 'alleen met ongelezen berichten';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Kolommen';
$labels['listsorting'] = 'Sorteer op kolom';
$labels['listorder'] = 'Sorteervolgorde';
$labels['listmode'] = 'Lijstweergave';
-
$labels['folderactions'] = 'Mapacties...';
$labels['compact'] = 'Opschonen';
$labels['empty'] = 'Legen';
$labels['importmessages'] = 'Berichten importeren';
-
$labels['quota'] = 'Opslagverbruik';
$labels['unknown'] = 'onbekend';
$labels['unlimited'] = 'onbeperkt';
-
$labels['quicksearch'] = 'Snel zoeken';
$labels['resetsearch'] = 'Wis zoekopdracht';
$labels['searchmod'] = 'Zoekopties';
$labels['msgtext'] = 'Gehele bericht';
$labels['body'] = 'Inhoud';
$labels['type'] = 'Type';
-
+$labels['namex'] = 'Naam';
$labels['openinextwin'] = 'Openen in een nieuw venster';
$labels['emlsave'] = 'Opslaan (.eml)';
$labels['changeformattext'] = 'Weergeven als platte tekst';
$labels['changeformathtml'] = 'Weergeven als opgemaakte tekst (HTML)';
-
-// message compose
$labels['editasnew'] = 'Als nieuw bewerken';
$labels['send'] = 'Verzenden';
$labels['sendmessage'] = 'Verstuur bericht';
@@ -224,26 +192,32 @@ $labels['returnreceipt'] = 'Ontvangstbevestiging';
$labels['dsn'] = 'Afleveringsbericht (DSN)';
$labels['mailreplyintro'] = '$sender schreef op $date:';
$labels['originalmessage'] = 'Oorspronkelijke bericht';
-
$labels['editidents'] = 'Identiteiten bewerken';
$labels['spellcheck'] = 'Spelling';
$labels['checkspelling'] = 'Controleer spelling';
$labels['resumeediting'] = 'Doorgaan met opstellen';
$labels['revertto'] = 'Terugwijzigen in';
-
+$labels['restore'] = 'Herstellen';
+$labels['restoremessage'] = 'Bericht herstellen?';
+$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';
$labels['uploadprogress'] = '$percent ($current van $total)';
$labels['close'] = 'Sluit';
$labels['messageoptions'] = 'Berichtopties...';
-
$labels['low'] = 'Laag';
$labels['lowest'] = 'Laagste';
$labels['normal'] = 'Normaal';
$labels['high'] = 'Hoog';
$labels['highest'] = 'Hoogste';
-
$labels['nosubject'] = '(geen onderwerp)';
$labels['showimages'] = 'Toon afbeeldingen';
$labels['alwaysshow'] = 'Afbeeldingen van $sender altijd tonen';
@@ -251,25 +225,19 @@ $labels['isdraft'] = 'Dit is een conceptbericht.';
$labels['andnmore'] = '$nr meer...';
$labels['togglemoreheaders'] = 'Toon meer berichtheaders';
$labels['togglefullheaders'] = 'Originele berichtheaders aan/uit';
-
$labels['htmltoggle'] = 'Opgemaakt (HTML)';
$labels['plaintoggle'] = 'Platte tekst';
$labels['savesentmessagein'] = 'Bewaar verzonden bericht in';
$labels['dontsave'] = 'niet bewaren';
$labels['maxuploadsize'] = 'Maximum toegestane bestandsgrootte is $size';
-
$labels['addcc'] = 'Cc toevoegen';
$labels['addbcc'] = 'Bcc toevoegen';
$labels['addreplyto'] = 'Antwoord-aan toevoegen';
$labels['addfollowupto'] = 'Followup-To toevoegen';
-
-// mdn
$labels['mdnrequest'] = 'De afzender van dit bericht heeft gevraagd een melding te ontvangen wanneer u dit bericht heeft gelezen. Wilt u deze melding verzenden?';
$labels['receiptread'] = 'Ontvangstbevestiging (gelezen)';
$labels['yourmessage'] = 'Dit is een ontvangstbevestiging voor uw bericht';
$labels['receiptnote'] = 'Let op: Dit bevestigt alleen dat uw bericht bij de geadresseerde is weergegeven. Er is geen garantie dat de geadresseerde het bericht daadwerkelijk heeft gelezen of de inhoud ervan heeft begrepen.';
-
-// address boook
$labels['name'] = 'Weergavenaam';
$labels['firstname'] = 'Voornaam';
$labels['surname'] = 'Achternaam';
@@ -304,7 +272,6 @@ $labels['search'] = 'Zoeken';
$labels['advsearch'] = 'Geavanceerd zoeken';
$labels['advanced'] = 'Geavanceerd';
$labels['other'] = 'Anders';
-
$labels['typehome'] = 'Thuis';
$labels['typework'] = 'Werk';
$labels['typeother'] = 'Anders';
@@ -319,14 +286,12 @@ $labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Website';
$labels['typeblog'] = 'Weblog';
$labels['typeprofile'] = 'Profiel';
-
$labels['addfield'] = 'Veld toevoegen...';
$labels['addcontact'] = 'Nieuwe contactpersoon toevoegen';
$labels['editcontact'] = 'Contactpersoon wijzigen';
$labels['contacts'] = 'Contactpersonen';
$labels['contactproperties'] = 'Gegevens van contactpersoon';
$labels['personalinfo'] = 'Persoonlijke informatie';
-
$labels['edit'] = 'Wijzig';
$labels['cancel'] = 'Annuleren';
$labels['save'] = 'Opslaan';
@@ -335,7 +300,6 @@ $labels['rename'] = 'Hernoemen';
$labels['addphoto'] = 'Toevoegen';
$labels['replacephoto'] = 'Vervangen';
$labels['uploadphoto'] = 'Foto uploaden';
-
$labels['newcontact'] = 'Voeg een nieuwe contactpersoon toe';
$labels['deletecontact'] = 'Verwijder geselecteerde contactpersonen';
$labels['composeto'] = 'Stuur een bericht naar';
@@ -349,42 +313,36 @@ $labels['newcontactgroup'] = 'Maak een nieuwe contactgroep';
$labels['grouprename'] = 'Groep hernoemen';
$labels['groupdelete'] = 'Groep verwijderen';
$labels['groupremoveselected'] = 'Verwijder geselecteerde contactpersonen van groep';
-
$labels['previouspage'] = 'Vorige pagina';
$labels['firstpage'] = 'Eerste pagina';
$labels['nextpage'] = 'Volgende pagina';
$labels['lastpage'] = 'Laatste pagina';
-
$labels['group'] = 'Groep';
$labels['groups'] = 'Groepen';
$labels['listgroup'] = 'Toon groepsleden';
$labels['personaladrbook'] = 'Persoonlijk adresboek';
-
$labels['searchsave'] = 'Zoekopdracht opslaan';
$labels['searchdelete'] = 'Zoekopdracht verwijderen';
-
$labels['import'] = 'Importeren';
$labels['importcontacts'] = 'Contactpersonen importeren';
$labels['importfromfile'] = 'Importeer van bestand:';
-$labels['importtarget'] = 'Voeg nieuwe contactpersonen toe aan adresboek:';
+$labels['importtarget'] = 'Contacten toevoegen aan';
$labels['importreplace'] = 'Vervang het complete adresboek';
+$labels['importgroups'] = 'Importeer groepstoewijzingen';
+$labels['importgroupsall'] = 'Allemaal (maak groepen aan indien nodig)';
+$labels['importgroupsexisting'] = 'Alleen voor bestaande groepen';
$labels['importdesc'] = 'U kunt contactpersonen uploaden van een bestaand adresboek<br/>Momenteel wordt het importeren van adresboeken in <a href="http://en.wikipedia.org/wiki/VCard">vCard-formaat</a> of CSV-formaat (kommagescheiden tekstbestand) ondersteund.';
$labels['done'] = 'Klaar';
-
-// settings
$labels['settingsfor'] = 'Instellingen voor';
$labels['about'] = 'Over';
$labels['preferences'] = 'Instellingen';
$labels['userpreferences'] = 'Gebruikersinstellingen';
$labels['editpreferences'] = 'Wijzig gebruikersinstellingen';
-
$labels['identities'] = 'Identiteiten';
$labels['manageidentities'] = 'Beheer identiteiten voor dit account';
$labels['newidentity'] = 'Identiteit toevoegen';
-
$labels['newitem'] = 'Nieuw item';
$labels['edititem'] = 'Wijzig item';
-
$labels['preferhtml'] = 'Toon berichten in HTML-opmaak';
$labels['defaultcharset'] = 'Standaard tekenset';
$labels['htmlmessage'] = 'HTML-bericht';
@@ -480,7 +438,9 @@ $labels['standardwindows'] = 'Behandel pop-ups als normale vensters';
$labels['forwardmode'] = 'Berichten doorsturen';
$labels['inline'] = 'invoegen';
$labels['asattachment'] = 'als bijlage';
-
+$labels['replyallmode'] = 'Standaardactie van [Beantwoord iedereen]-knop';
+$labels['replyalldefault'] = 'iedereen beantwoorden';
+$labels['replyalllist'] = 'alleen maillijst beantwoorden (indien gevonden)';
$labels['folder'] = 'Map';
$labels['folders'] = 'Mappen';
$labels['foldername'] = 'Mapnaam';
@@ -501,26 +461,20 @@ $labels['foldertype'] = 'Maptype';
$labels['personalfolder'] = 'Privémap';
$labels['otherfolder'] = 'Map van andere gebruiker';
$labels['sharedfolder'] = 'Publieke map';
-
$labels['sortby'] = 'Sorteer op';
$labels['sortasc'] = 'Sorteer oplopend';
$labels['sortdesc'] = 'Sorteer aflopend';
$labels['undo'] = 'Ongedaan maken';
-
$labels['installedplugins'] = 'Geïnstalleerde plug-ins';
$labels['plugin'] = 'Invoegtoepassing';
$labels['version'] = 'Versie';
$labels['source'] = 'Broncode';
$labels['license'] = 'Licentie';
$labels['support'] = 'Hulp nodig?';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Engels';
$labels['westerneuropean'] = 'West-Europees';
@@ -539,5 +493,4 @@ $labels['vietnamese'] = 'Vietnamees';
$labels['japanese'] = 'Japans';
$labels['korean'] = 'Koreaans';
$labels['chinese'] = 'Chinees';
-
?>
diff --git a/program/localization/nl_NL/messages.inc b/program/localization/nl_NL/messages.inc
index 01c43b243..bf8c41472 100644
--- a/program/localization/nl_NL/messages.inc
+++ b/program/localization/nl_NL/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Er is een fout opgetreden!';
$messages['loginfailed'] = 'Aanmelden mislukt.';
$messages['cookiesdisabled'] = 'Uw browser accepteert geen cookies.';
@@ -46,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.';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'Geef tenminste één ontvanger op.';
$messages['nosubjectwarning'] = 'U heeft geen onderwerp ingevoerd. Wilt u nu een onderwerp opgeven?';
$messages['nobodywarning'] = 'Dit bericht zonder inhoud versturen?';
$messages['notsentwarning'] = 'Het bericht is niet verstuurd. Wilt u uw bericht weggooien?';
+$messages['restoresavedcomposedata'] = 'Eerder opgesteld, maar niet-verzonden bericht gevonden.\n\nOnderwerp: $subject\nOpgeslagen: $date\n\nWilt u dit bericht herstellen?';
$messages['noldapserver'] = 'Selecteer een LDAP-server om te zoeken.';
$messages['nosearchname'] = 'Vul de naam of e-mailadres in van een contactpersoon.';
$messages['notuploadedwarning'] = 'Nog niet alle bijlagen zijn geüpload. Wacht even of annuleer de upload.';
@@ -172,5 +173,4 @@ $messages['parentnotwritable'] = 'Niet in staat om map aan te maken of verplaats
$messages['messagetoobig'] = 'Het bericht is te groot om te verwerken.';
$messages['attachmentvalidationerror'] = 'WAARSCHUWING! Deze bijlage is verdacht omdat het bestandstype niet overeen komt met het bestandstype dat gespecificeerd is in het bericht. Open deze bijlage niet in uw browser als u de afzender niet vertrouwt, aangezien deze bijlage kwaadaardige inhoud kan bevatten.<br /><br /><em>Verwacht: $expected; gevonden: $detected</em>';
$messages['noscriptwarning'] = 'Waarschuwing: deze webmailapplicatie vereist Javascript! U dient Javascript in te schakelen in uw browserinstellingen wanneer u gebruik wilt maken van deze applicatie.';
-
?>
diff --git a/program/localization/nn_NO/labels.inc b/program/localization/nn_NO/labels.inc
index 5934a01d9..eae5fc639 100644
--- a/program/localization/nn_NO/labels.inc
+++ b/program/localization/nn_NO/labels.inc
@@ -15,31 +15,20 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Velkomen til $product';
$labels['username'] = 'Brukarnamn';
$labels['password'] = 'Passord';
$labels['server'] = 'Tenar';
$labels['login'] = 'Logg inn';
-
-// taskbar
$labels['logout'] = 'Logg ut';
$labels['mail'] = 'E-post';
$labels['settings'] = 'Personlege innstillingar';
$labels['addressbook'] = 'Adressebok';
-
-// mailbox names
$labels['inbox'] = 'Innboks';
$labels['drafts'] = 'Kladd';
$labels['sent'] = 'Sendt';
$labels['trash'] = 'Sletta';
$labels['junk'] = 'Søppel';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Emne';
$labels['from'] = 'Frå';
$labels['sender'] = 'Avsendar';
@@ -54,27 +43,20 @@ $labels['priority'] = 'Prioritet';
$labels['organization'] = 'Organisasjon';
$labels['readstatus'] = 'Lesestatus';
$labels['listoptions'] = 'Listeinnstillingar …';
-
$labels['mailboxlist'] = 'Mapper';
$labels['messagesfromto'] = 'Melding $from til $to av $count';
$labels['threadsfromto'] = 'Tråd $from til $to ($count stk)';
$labels['messagenrof'] = 'Melding $nr av $count';
$labels['fromtoshort'] = '$from-$to av $count';
-
$labels['copy'] = 'Kopier';
$labels['move'] = 'Flytt';
$labels['moveto'] = 'flytt til …';
$labels['download'] = 'Last ned';
-$labels['open'] = 'Open';
$labels['showattachment'] = 'Vis';
$labels['showanyway'] = 'Vis likevel';
-
$labels['filename'] = 'Filnamn';
$labels['filesize'] = 'Filstorleik';
-
$labels['addtoaddressbook'] = 'Legg til i adressebok';
-
-// weekdays short
$labels['sun'] = 'Sun';
$labels['mon'] = 'MÃ¥n';
$labels['tue'] = 'Tys';
@@ -82,8 +64,6 @@ $labels['wed'] = 'Ons';
$labels['thu'] = 'Tor';
$labels['fri'] = 'Fre';
$labels['sat'] = 'Lau';
-
-// weekdays long
$labels['sunday'] = 'Sundag';
$labels['monday'] = 'MÃ¥ndag';
$labels['tuesday'] = 'Tysdag';
@@ -91,8 +71,6 @@ $labels['wednesday'] = 'Onsdag';
$labels['thursday'] = 'Torsdag';
$labels['friday'] = 'Fredag';
$labels['saturday'] = 'Laurdag';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +83,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Des';
-
-// months long
$labels['longjan'] = 'Januar';
$labels['longfeb'] = 'Februar';
$labels['longmar'] = 'Mars';
@@ -119,10 +95,7 @@ $labels['longsep'] = 'September';
$labels['longoct'] = 'Oktober';
$labels['longnov'] = 'November';
$labels['longdec'] = 'Desember';
-
$labels['today'] = 'I dag';
-
-// toolbar buttons
$labels['refresh'] = 'Frisk opp att';
$labels['checkmail'] = 'Sjå etter nye meldingar';
$labels['compose'] = 'Skriv ei melding';
@@ -155,7 +128,6 @@ $labels['moreactions'] = 'Fleire handlingar';
$labels['more'] = 'Meir';
$labels['back'] = 'Tilbake';
$labels['options'] = 'Innstillingar';
-
$labels['select'] = 'Vel';
$labels['all'] = 'Alle';
$labels['none'] = 'Ingen';
@@ -163,7 +135,6 @@ $labels['currpage'] = 'Gjeldande side';
$labels['unread'] = 'Uleste';
$labels['flagged'] = 'Flagga';
$labels['unanswered'] = 'Ikkje svara';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'Sletta';
$labels['undeleted'] = 'Ikkje sletta';
$labels['invert'] = 'Inverter';
@@ -174,7 +145,6 @@ $labels['expand-all'] = 'Utvid alle';
$labels['expand-unread'] = 'Utvid ulesne';
$labels['collapse-all'] = 'Slå saman alle';
$labels['threaded'] = 'Tråda';
-
$labels['autoexpand_threads'] = 'Utvid eposttråder';
$labels['do_expand'] = 'alle tråder';
$labels['expand_only_unread'] = 'berre med ulesne epostar';
@@ -190,29 +160,19 @@ $labels['listcolumns'] = 'Vis kolonner';
$labels['listsorting'] = 'Sorteringskolonne';
$labels['listorder'] = 'Sorteringsveg';
$labels['listmode'] = 'Listevisningmodus';
-
$labels['folderactions'] = 'Mappehandlingar';
$labels['compact'] = 'Kompakt';
$labels['empty'] = 'Tom';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Plassbruk';
$labels['unknown'] = 'ukjend';
$labels['unlimited'] = 'ubegrensa';
-
$labels['quicksearch'] = 'Snøggsøk';
$labels['resetsearch'] = 'Tilbakestill søk';
$labels['searchmod'] = 'Søkeutsagn';
$labels['msgtext'] = 'Heile eposten';
$labels['body'] = 'Meldingstekst';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'Opna i nytt vindauga';
$labels['emlsave'] = 'Last ned (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'Rediger som ny';
$labels['send'] = 'Send';
$labels['sendmessage'] = 'Send meldinga no';
@@ -224,26 +184,22 @@ $labels['returnreceipt'] = 'Epost-er-lest-kvittering';
$labels['dsn'] = 'Leveringsstatus';
$labels['mailreplyintro'] = 'Den $date skreiv $sender:';
$labels['originalmessage'] = 'Opphavleg melding';
-
$labels['editidents'] = 'Redigere identitetar';
$labels['spellcheck'] = 'Stavekontroll';
$labels['checkspelling'] = 'Stavekontroll';
$labels['resumeediting'] = 'Hald fram redigering';
$labels['revertto'] = 'Tilbakestill til';
-
$labels['attach'] = 'Legg ved';
$labels['attachments'] = 'Vedlegg';
$labels['upload'] = 'Last opp';
$labels['uploadprogress'] = '$percent ($current frå $total)';
$labels['close'] = 'Steng';
$labels['messageoptions'] = 'Meldingsalternativ';
-
$labels['low'] = 'LÃ¥g';
$labels['lowest'] = 'LÃ¥gast';
$labels['normal'] = 'Normal';
$labels['high'] = 'Høg';
$labels['highest'] = 'Høgast';
-
$labels['nosubject'] = '(ingen emne)';
$labels['showimages'] = 'Vis bilete';
$labels['alwaysshow'] = 'Alltid vis bilete frå $sender';
@@ -251,25 +207,19 @@ $labels['isdraft'] = 'Dette er ein kladd.';
$labels['andnmore'] = '$nr fleire …';
$labels['togglemoreheaders'] = 'Vis fleire meldingshovud';
$labels['togglefullheaders'] = 'Veksle vising av meldinga sine headere i råformat';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Vanleg tekst';
$labels['savesentmessagein'] = 'Lagra sendt epost i';
$labels['dontsave'] = 'Ikkje lagra';
$labels['maxuploadsize'] = 'Maksimalt tillatte storleik på filar er $size';
-
$labels['addcc'] = 'Legg til kopi';
$labels['addbcc'] = 'Legg til blindkopi';
$labels['addreplyto'] = 'Legg til svaradressa';
$labels['addfollowupto'] = 'Legg til oppfylgjing';
-
-// mdn
$labels['mdnrequest'] = 'Sendaren av denne meldinga ynskjer å få kvittering når du har lest meldinga. Ynskjer du å senda denne kvitteringa?';
$labels['receiptread'] = 'Svarkvittering (eposten-er-lest-kvittering)';
$labels['yourmessage'] = 'Dette er ein retur-kvittering for meldinga di.';
$labels['receiptnote'] = 'Hugs: Denne kvitteringa seier berre at meldinga di vart vist på mottakar sin datamaskin. Det er ingen garanti for at mottakaren faktisk har lese eller forstått innhaldet i meldinga.';
-
-// address boook
$labels['name'] = 'Visingsnamn';
$labels['firstname'] = 'Førenamn';
$labels['surname'] = 'Etternamn';
@@ -304,7 +254,6 @@ $labels['search'] = 'Søk';
$labels['advsearch'] = 'Avansert søk';
$labels['advanced'] = 'Avansert';
$labels['other'] = 'Andre';
-
$labels['typehome'] = 'Heim';
$labels['typework'] = 'Jobb';
$labels['typeother'] = 'Andre';
@@ -319,14 +268,12 @@ $labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Heimeside';
$labels['typeblog'] = 'Blogg';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Legg til felt...';
$labels['addcontact'] = 'Legg til ny kontakt';
$labels['editcontact'] = 'Redigere kontakt';
$labels['contacts'] = 'Kontakter';
$labels['contactproperties'] = 'Eigenskapar';
$labels['personalinfo'] = 'Personleg informasjon';
-
$labels['edit'] = 'Redigere';
$labels['cancel'] = 'Avbryt';
$labels['save'] = 'Lagre';
@@ -335,7 +282,6 @@ $labels['rename'] = 'Gi nytt namn';
$labels['addphoto'] = 'Legg til';
$labels['replacephoto'] = 'Erstatt';
$labels['uploadphoto'] = 'Last opp bilete';
-
$labels['newcontact'] = 'Opprett nytt kontaktkort';
$labels['deletecontact'] = 'Slett valde kontaktar';
$labels['composeto'] = 'Ny melding til';
@@ -349,42 +295,31 @@ $labels['newcontactgroup'] = 'Lag ny kontaktgruppe';
$labels['grouprename'] = 'Endre namn på gruppe';
$labels['groupdelete'] = 'Slett gruppe';
$labels['groupremoveselected'] = 'Fjern valde kontaktar frå gruppe';
-
$labels['previouspage'] = 'Førre side';
$labels['firstpage'] = 'Første side';
$labels['nextpage'] = 'Neste side';
$labels['lastpage'] = 'Siste side';
-
$labels['group'] = 'Gruppe';
$labels['groups'] = 'Gruppar';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Personlege adresser';
-
$labels['searchsave'] = 'Lagre søk';
$labels['searchdelete'] = 'Slett søk';
-
$labels['import'] = 'Importer';
$labels['importcontacts'] = 'Importer kontaktar';
$labels['importfromfile'] = 'Importer frå fil:';
-$labels['importtarget'] = 'Legg til kontakter i adresseboka';
$labels['importreplace'] = 'Byt ut heile adresseboka';
$labels['importdesc'] = 'Du kan laste opp kontaktar frå ei eksisterande adressebok.<br/>Vi støttar adressebøker i formata <a href="http://no.wikipedia.org/wiki/VCard">vCard</a> og CSV (kommaseparert).';
$labels['done'] = 'Ferdig';
-
-// settings
$labels['settingsfor'] = 'Innstillingar for';
$labels['about'] = 'Om';
$labels['preferences'] = 'Innstillingar';
$labels['userpreferences'] = 'Brukarinnstillingar';
$labels['editpreferences'] = 'Redigere brukarinnstillingar';
-
$labels['identities'] = 'Identitetar';
$labels['manageidentities'] = 'Administrere identitetar for denne kontoen';
$labels['newidentity'] = 'Ny identitet';
-
$labels['newitem'] = 'Nytt element';
$labels['edititem'] = 'Redigere element';
-
$labels['preferhtml'] = 'Føretrekk HTML';
$labels['defaultcharset'] = 'Standard karaktersett (charset)';
$labels['htmlmessage'] = 'HTML-melding';
@@ -406,7 +341,6 @@ $labels['htmleditor'] = 'Lag HTML-meldingar';
$labels['htmlonreply'] = 'ved svar på HTML-melding';
$labels['htmlonreplyandforward'] = 'ved vidaresending av eller svar på HTML-melding';
$labels['htmlsignature'] = 'HTML-signatur';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Vis førehandsvisningsboks';
$labels['skin'] = 'Bunad';
$labels['logoutclear'] = 'Fjern alt i «sletta element» ved utlogging';
@@ -476,11 +410,9 @@ $labels['spellcheckignorenums'] = 'Ignorer ord med tal';
$labels['spellcheckignorecaps'] = 'Ignorer ord med berre store bokstavar';
$labels['addtodict'] = 'Legg til i ordliste';
$labels['mailtoprotohandler'] = 'Registrer protokollhandsaming for mailto-lenkjer';
-$labels['standardwindows'] = 'Handle popups as standard windows';
$labels['forwardmode'] = 'Meldingar vidaresendast';
$labels['inline'] = 'i teksten';
$labels['asattachment'] = 'som vedlegg';
-
$labels['folder'] = 'Mappe';
$labels['folders'] = 'Mapper';
$labels['foldername'] = 'Mappenamn';
@@ -501,26 +433,20 @@ $labels['foldertype'] = 'Mappetype';
$labels['personalfolder'] = 'Privat mappe';
$labels['otherfolder'] = 'Annan brukar si mappe';
$labels['sharedfolder'] = 'Offentleg mappe';
-
$labels['sortby'] = 'Sorter etter';
$labels['sortasc'] = 'Sorter stigande';
$labels['sortdesc'] = 'Sorter søkkjande';
$labels['undo'] = 'Gjer om';
-
$labels['installedplugins'] = 'Installerte tillegg';
$labels['plugin'] = 'Tilleggsmodul';
$labels['version'] = 'Versjon';
$labels['source'] = 'Kjelde';
$labels['license'] = 'Lisens';
$labels['support'] = 'FÃ¥ hjelp';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'UNicode';
$labels['english'] = 'Engelsk';
$labels['westerneuropean'] = 'Vest-europesik';
@@ -539,5 +465,4 @@ $labels['vietnamese'] = 'Vietnamesisk';
$labels['japanese'] = 'Japansk';
$labels['korean'] = 'Koreansk';
$labels['chinese'] = 'Kinesisk';
-
?>
diff --git a/program/localization/nn_NO/messages.inc b/program/localization/nn_NO/messages.inc
index 741b4cb20..5c8386c64 100644
--- a/program/localization/nn_NO/messages.inc
+++ b/program/localization/nn_NO/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Noko gjekk feil.';
$messages['loginfailed'] = 'Feil ved innlogging.';
$messages['cookiesdisabled'] = 'Nettlesaren din tillet ikkje informasjonskapslar (cookies).';
@@ -28,8 +26,6 @@ $messages['dberror'] = 'Databasefeil!';
$messages['requesttimedout'] = 'Førespurnaden fekk tidsavbrot';
$messages['errorreadonly'] = 'Klarte ikkje utføra handlinga. Mappa kan berre lesast.';
$messages['errornoperm'] = 'Klarte ikkje utføra handlinga. Nekta tilgang.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'Eg forstår ingen ting! Ingen data lagra.';
$messages['invalidhost'] = 'Ugyldig tenarnamn.';
$messages['nomessagesfound'] = 'Ingen meldingar i denne postkassa.';
@@ -56,8 +52,6 @@ $messages['contactnotfound'] = 'Fann ikkje kontakten du såg etter.';
$messages['contactsearchonly'] = 'Skriv søkeord for å finna kontaktar';
$messages['sendingfailed'] = 'Klarte ikkje senda meldinga.';
$messages['senttooquickly'] = 'Du må venta $sec sekund for å senda meldinga.';
-$messages['errorsavingsent'] = 'Klarte ikkje lagra den sende meldinga.';
-$messages['errorsaving'] = 'Det skjedde ein feil ved lagring.';
$messages['errormoving'] = 'Klarte ikkje flytte meldinga(r).';
$messages['errorcopying'] = 'Klarte ikkje kopiera meldinga(r).';
$messages['errordeleting'] = 'Klarte ikkje sletta meldinga(r).';
@@ -101,16 +95,11 @@ $messages['converting'] = 'Fjernar formatering frå meldinga …';
$messages['messageopenerror'] = 'Klarte ikkje lasta meldinga frå tenaren.';
$messages['fileuploaderror'] = 'Filopplasting feila.';
$messages['filesizeerror'] = 'Fila du lasta opp, er større enn største tillatne filstorleik, $size.';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Denne adressekjelda er berre lesbar.';
$messages['errorsavingcontact'] = 'Klarte ikkje lagra kontaktadressa.';
$messages['movingmessage'] = 'Flyttar melding(ar) …';
$messages['copyingmessage'] = 'Kopierer melding(ar) …';
$messages['copyingcontact'] = 'Kopierer kontakt(ar) …';
-$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'Slettar melding(ar) …';
$messages['markingmessage'] = 'Merkar melding(ar) …';
$messages['addingmember'] = 'Legg til kontakt(ar) i gruppa …';
@@ -129,8 +118,6 @@ $messages['importwait'] = 'Importerer, vent …';
$messages['importformaterror'] = 'Importering feila. Den opplasta fila er i feil format.';
$messages['importconfirm'] = '<b>Importerte $inserted kontaktar</b>';
$messages['importconfirmskipped'] = '<b>Hoppa over $skipped oppføringar som fanst frå før</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'Ulovleg operasjon.';
$messages['nofromaddress'] = 'Manglar e-postadresse i denne identiteten.';
$messages['editorwarning'] = 'Ã… byta til rein tekst vil fjerna all tekstformateringa. Vil du halda fram?';
@@ -144,7 +131,6 @@ $messages['smtperror'] = 'SMTP-feil: $msg';
$messages['emailformaterror'] = 'Ugyldig e-postadresse: $email';
$messages['toomanyrecipients'] = 'For mange mottakarar. Senk talet til $max.';
$messages['maxgroupmembersreached'] = 'Ei gruppe kan ikkje ha fleire enn $max medlemmer.';
-$messages['internalerror'] = 'Intern feil. Prøv igjen.';
$messages['contactdelerror'] = 'Klarte ikkje sletta kontakt(ar).';
$messages['contactdeleted'] = 'Kontakt(ar) sletta utan feil.';
$messages['contactrestoreerror'] = 'Klarte ikkje gjenoppretta kontakt(ar).';
@@ -172,5 +158,4 @@ $messages['parentnotwritable'] = 'Klarte ikkje laga/flytte mappa i vald overordn
$messages['messagetoobig'] = 'Meldingsdelen er for stor til å prosesserast.';
$messages['attachmentvalidationerror'] = 'ÅTVARING: Dette vedlegget er mistenkjeleg fordi det er av ein type som ikkje stemmer med det som er deklarert i meldinga. Viss du ikkje stolar på avsendaren bør du ikkje opna det i nettlesaren. Det kan ha skadeleg innhald.<br/><br/><em>Venta: $expected; fann: $detected</em>';
$messages['noscriptwarning'] = 'NB: Denne webmail-klienten krev JavaScript. Skru på JavaScript i nettlesaren din for å kunna bruka klienten.';
-
?>
diff --git a/program/localization/pl_PL/csv2vcard.inc b/program/localization/pl_PL/csv2vcard.inc
index ceb995517..c6c5be414 100644
--- a/program/localization/pl_PL/csv2vcard.inc
+++ b/program/localization/pl_PL/csv2vcard.inc
@@ -15,14 +15,7 @@
| Author: Aleksander Machniak <alec@alec.pl> |
+-----------------------------------------------------------------------+
*/
-
-// This is a list of CSV column names specified in CSV file header
-// These must be original texts used in Outlook/Thunderbird exported csv files
-// Encoding UTF-8
-
$map = array();
-
-// MS Outlook 2010
$map['anniversary'] = "Rocznica";
$map['assistants_name'] = "Asystent";
$map['assistants_phone'] = "Telefon asystenta";
diff --git a/program/localization/pl_PL/labels.inc b/program/localization/pl_PL/labels.inc
index d7b9cd2d4..4c13fb7c6 100644
--- a/program/localization/pl_PL/labels.inc
+++ b/program/localization/pl_PL/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Witamy w $product';
$labels['username'] = 'Nazwa';
$labels['password'] = 'Hasło';
$labels['server'] = 'Serwer';
$labels['login'] = 'Zaloguj';
-
-// taskbar
$labels['logout'] = 'Wyloguj';
$labels['mail'] = 'Poczta';
$labels['settings'] = 'Ustawienia';
$labels['addressbook'] = 'Książka adresowa';
-
-// mailbox names
$labels['inbox'] = 'Odebrane';
$labels['drafts'] = 'Kopie robocze';
$labels['sent'] = 'Wysłane';
$labels['trash'] = 'Kosz';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Pokaż prawdziwe nazwy dla folderów specjalnych';
-
-// message listing
$labels['subject'] = 'Temat';
$labels['from'] = 'Od';
$labels['sender'] = 'Nadawca';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Priorytet';
$labels['organization'] = 'Organizacja';
$labels['readstatus'] = 'Przeczytano';
$labels['listoptions'] = 'Opcje listy...';
-
$labels['mailboxlist'] = 'Foldery';
$labels['messagesfromto'] = 'Wiadomości od $from do $to z $count';
$labels['threadsfromto'] = 'WÄ…tki od $from do $to z $count';
$labels['messagenrof'] = 'Wiadomość $nr z $count';
$labels['fromtoshort'] = '$from - $to z $count';
-
$labels['copy'] = 'Kopiuj';
$labels['move'] = 'PrzenieÅ›';
$labels['moveto'] = 'PrzenieÅ› do...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Pobierz';
$labels['open'] = 'Otwórz';
$labels['showattachment'] = 'Pokaż';
$labels['showanyway'] = 'Pokaż';
-
$labels['filename'] = 'Nazwa pliku';
$labels['filesize'] = 'Rozmiar pliku';
-
$labels['addtoaddressbook'] = 'Dodaj do książki adresowej';
-
-// weekdays short
$labels['sun'] = 'Nd';
$labels['mon'] = 'Pn';
$labels['tue'] = 'Wt';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Åšr';
$labels['thu'] = 'Czw';
$labels['fri'] = 'Pt';
$labels['sat'] = 'Sb';
-
-// weekdays long
$labels['sunday'] = 'Niedziela';
$labels['monday'] = 'Poniedziałek';
$labels['tuesday'] = 'Wtorek';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Åšroda';
$labels['thursday'] = 'Czwartek';
$labels['friday'] = 'PiÄ…tek';
$labels['saturday'] = 'Sobota';
-
-// months short
$labels['jan'] = 'sty';
$labels['feb'] = 'lut';
$labels['mar'] = 'mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Wrz';
$labels['oct'] = 'Paź';
$labels['nov'] = 'Lis';
$labels['dec'] = 'Gru';
-
-// months long
$labels['longjan'] = 'styczeń';
$labels['longfeb'] = 'luty';
$labels['longmar'] = 'marzec';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'wrzesień';
$labels['longoct'] = 'październik';
$labels['longnov'] = 'listopad';
$labels['longdec'] = 'grudzień';
-
$labels['today'] = 'Dzisiaj';
-
-// toolbar buttons
$labels['refresh'] = 'Odśwież';
$labels['checkmail'] = 'Sprawdź skrzynkę';
$labels['compose'] = 'Utwórz';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Więcej akcji...';
$labels['more'] = 'Więcej';
$labels['back'] = 'Wstecz';
$labels['options'] = 'Ustawienia';
-
$labels['select'] = 'Zaznacz';
$labels['all'] = 'Wszystkie';
$labels['none'] = 'Brak';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Rozwiń wszystkie';
$labels['expand-unread'] = 'Rozwiń nieprzeczytane';
$labels['collapse-all'] = 'Zwiń wszystkie';
$labels['threaded'] = 'PowÄ…tkowane';
-
$labels['autoexpand_threads'] = 'Rozwijaj wÄ…tki';
$labels['do_expand'] = 'wszystkie';
$labels['expand_only_unread'] = 'tylko nieprzeczytane';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Kolumny';
$labels['listsorting'] = 'PorzÄ…dek sortowania';
$labels['listorder'] = 'Kierunek sortowania';
$labels['listmode'] = 'Typ listy';
-
$labels['folderactions'] = 'Działania na folderach...';
$labels['compact'] = 'PorzÄ…dkuj';
$labels['empty'] = 'Opróżnij';
$labels['importmessages'] = 'Import wiadomości';
-
$labels['quota'] = 'Użyte miejsce';
$labels['unknown'] = 'nieznane';
$labels['unlimited'] = 'bez limitu';
-
$labels['quicksearch'] = 'Szybkie wyszukiwanie';
$labels['resetsearch'] = 'Wyczyść filtr';
$labels['searchmod'] = 'Parametry wyszukiwania';
$labels['msgtext'] = 'Cała wiadomość';
$labels['body'] = 'Treść';
-$labels['type'] = 'Type';
-
+$labels['type'] = 'Typ';
+$labels['namex'] = 'Nazwa';
$labels['openinextwin'] = 'Otwórz w nowym oknie';
$labels['emlsave'] = 'Pobierz (.eml)';
$labels['changeformattext'] = 'Wyświetl w formacie tekstowym';
$labels['changeformathtml'] = 'Wyświetl w formacie HTML';
-
-// message compose
$labels['editasnew'] = 'Edytuj jako nowÄ…';
$labels['send'] = 'Wyślij';
$labels['sendmessage'] = 'Wyślij teraz';
@@ -224,26 +192,22 @@ $labels['returnreceipt'] = 'Potwierdzenie odbioru';
$labels['dsn'] = 'Status dostarczenia (DSN)';
$labels['mailreplyintro'] = 'W dniu $date, $sender napisał(a):';
$labels['originalmessage'] = 'Wiadomość oryginalna';
-
$labels['editidents'] = 'Edytuj tożsamości';
$labels['spellcheck'] = 'Pisownia';
$labels['checkspelling'] = 'Sprawdź pisownię';
$labels['resumeediting'] = 'Zakończ sprawdzanie pisowni';
$labels['revertto'] = 'Powróć do';
-
$labels['attach'] = 'Załącz';
$labels['attachments'] = 'Załączniki';
$labels['upload'] = 'Prześlij';
$labels['uploadprogress'] = '$percent ($current z $total)';
$labels['close'] = 'Zamknij';
$labels['messageoptions'] = 'Opcje wiadomości...';
-
$labels['low'] = 'Bardzo niski';
$labels['lowest'] = 'Niski';
$labels['normal'] = 'Normalny';
$labels['high'] = 'Wysoki';
$labels['highest'] = 'Bardzo wysoki';
-
$labels['nosubject'] = '(brak tematu)';
$labels['showimages'] = 'Wyświetl obrazki';
$labels['alwaysshow'] = 'Zawsze wyświetlaj obrazki od $sender';
@@ -251,25 +215,19 @@ $labels['isdraft'] = 'To jest kopia robocza wiadomości.';
$labels['andnmore'] = '$nr więcej...';
$labels['togglemoreheaders'] = 'Pokaż więcej nagłówków wiadomości';
$labels['togglefullheaders'] = 'Przełącz podgląd nagłówków wiadomości';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Zwykły tekst';
$labels['savesentmessagein'] = 'Zapisz wiadomość w';
$labels['dontsave'] = 'nie zapisuj';
$labels['maxuploadsize'] = 'Maksymalny rozmiar pliku to $size';
-
$labels['addcc'] = 'Dodaj Cc';
$labels['addbcc'] = 'Dodaj Bcc';
$labels['addreplyto'] = 'Dodaj Reply-To';
$labels['addfollowupto'] = 'Dodaj Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Nadawca zażądał potwierdzenia przeczytania tej wiadomości. Czy chcesz go powiadomić?';
$labels['receiptread'] = 'Potwierdzenie otrzymania';
$labels['yourmessage'] = 'To jest potwierdzenie dostarczenia Twojej wiadomości';
$labels['receiptnote'] = 'Uwaga: To potwierdzenie dostarczenia wiadomości oznacza tylko, że wiadomość została wyświetlona na komputerze adresata. Nie ma żadnej gwarancji, że odbiorca przeczytał czy też zrozumiał treść wiadomości.';
-
-// address boook
$labels['name'] = 'Nazwa';
$labels['firstname'] = 'ImiÄ™';
$labels['surname'] = 'Nazwisko';
@@ -304,7 +262,6 @@ $labels['search'] = 'Szukaj';
$labels['advsearch'] = 'Wyszukiwanie zaawansowane';
$labels['advanced'] = 'Zaawansowane';
$labels['other'] = 'Inne';
-
$labels['typehome'] = 'Dom';
$labels['typework'] = 'Praca';
$labels['typeother'] = 'Inne';
@@ -319,14 +276,12 @@ $labels['typeassistant'] = 'Asystent';
$labels['typehomepage'] = 'Strona domowa';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Dodaj pole...';
$labels['addcontact'] = 'Dodaj nowy kontakt do książki adresowej';
$labels['editcontact'] = 'Edytuj kontakt';
$labels['contacts'] = 'Kontakty';
$labels['contactproperties'] = 'Właściwości';
$labels['personalinfo'] = 'Informacje osobiste';
-
$labels['edit'] = 'Edytuj';
$labels['cancel'] = 'Anuluj';
$labels['save'] = 'Zapisz';
@@ -335,7 +290,6 @@ $labels['rename'] = 'Zmień nazwę';
$labels['addphoto'] = 'Dodaj';
$labels['replacephoto'] = 'Zamień';
$labels['uploadphoto'] = 'Wyślij zdjęcie';
-
$labels['newcontact'] = 'Dodaj nowy kontakt';
$labels['deletecontact'] = 'Usuń zaznaczone kontakty';
$labels['composeto'] = 'Utwórz wiadomość do wybranych kontaktów';
@@ -349,42 +303,36 @@ $labels['newcontactgroup'] = 'Utwórz nową grupę';
$labels['grouprename'] = 'Zmień nazwę grupy';
$labels['groupdelete'] = 'Usuń grupę';
$labels['groupremoveselected'] = 'Usuń wybrane kontakty z grupy';
-
$labels['previouspage'] = 'Poprzednia strona';
$labels['firstpage'] = 'Pierwsza strona';
$labels['nextpage'] = 'Następna strona';
$labels['lastpage'] = 'Ostatnia strona';
-
$labels['group'] = 'Grupa';
$labels['groups'] = 'Grupy';
$labels['listgroup'] = 'Członkowie grupy';
$labels['personaladrbook'] = 'Kontakty osobiste';
-
$labels['searchsave'] = 'Zapisz wyszukiwanie';
$labels['searchdelete'] = 'Usuń wyszukiwanie';
-
$labels['import'] = 'Importuj';
$labels['importcontacts'] = 'Import kontaktów';
$labels['importfromfile'] = 'Import z pliku:';
-$labels['importtarget'] = 'Dodaj nowe kontakty do książki adresowej:';
+$labels['importtarget'] = 'Dodaj kontakty do';
$labels['importreplace'] = 'Zastąp całą książkę adresową';
+$labels['importgroups'] = 'Importuj powiÄ…zania z grupami';
+$labels['importgroupsall'] = 'Wszystkie (utwórz grupy jeśli potrzeba)';
+$labels['importgroupsexisting'] = 'Tylko do isniejÄ…cych grup';
$labels['importdesc'] = 'Import kontaktów z isniejącej książki adresowej.<br/>Obecnie obsługiwany jest import w formacie <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> lub CSV (pola oddzielone przecinkiem).';
$labels['done'] = 'Wykonane';
-
-// settings
$labels['settingsfor'] = 'Ustawienia dla';
$labels['about'] = 'O programie';
$labels['preferences'] = 'Preferencje';
$labels['userpreferences'] = 'Preferencje użytkownika';
$labels['editpreferences'] = 'Edytuj preferencje';
-
$labels['identities'] = 'Tożsamości';
$labels['manageidentities'] = 'Zarządzaj tożsamościami';
$labels['newidentity'] = 'Nowa tożsamość';
-
$labels['newitem'] = 'Nowy';
$labels['edititem'] = 'Edytuj';
-
$labels['preferhtml'] = 'Domyślny HTML';
$labels['defaultcharset'] = 'Domyślny zestaw znaków';
$labels['htmlmessage'] = 'Wiadomość HTML';
@@ -414,7 +362,7 @@ $labels['logoutcompact'] = 'Przy wylogowaniu porzÄ…dkuj folder Odebrane';
$labels['uisettings'] = 'Interfejs użytkownika';
$labels['serversettings'] = 'Ustawienia serwera';
$labels['mailboxview'] = 'Widok skrzynki pocztowej';
-$labels['mdnrequests'] = 'Na żadanie potwierdzenia odbioru';
+$labels['mdnrequests'] = 'Na żądanie potwierdzenia odbioru';
$labels['askuser'] = 'pytaj mnie';
$labels['autosend'] = 'wyślij potwierdzenie';
$labels['autosendknown'] = 'wyślij potwierdzenie tylko do moich kontaktów, pytaj o pozostałe';
@@ -441,7 +389,7 @@ $labels['2231folding'] = 'RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'RFC 2047 (przestarzałe)';
$labels['force7bit'] = 'Używaj kodowania MIME dla znaków 8-bitowych';
-$labels['advancedoptions'] = 'opcje zaawansowane';
+$labels['advancedoptions'] = 'Opcje zaawansowane';
$labels['focusonnewmessage'] = 'Informuj przeglądarkę o nowej wiadomości';
$labels['checkallfolders'] = 'Sprawdzaj czy nadeszły nowe wiadomości we wszystkich folderach';
$labels['displaynext'] = 'Po usunięciu/przeniesieniu wiadomości wyświetl następną';
@@ -480,7 +428,6 @@ $labels['standardwindows'] = 'Traktuj okna wyskakujÄ…ce jako standardowe okna';
$labels['forwardmode'] = 'Przekazywanie wiadomości';
$labels['inline'] = 'w treści';
$labels['asattachment'] = 'jako załącznik';
-
$labels['folder'] = 'Folder';
$labels['folders'] = 'Foldery';
$labels['foldername'] = 'Nazwa folderu';
@@ -501,26 +448,20 @@ $labels['foldertype'] = 'Typ folderu';
$labels['personalfolder'] = 'Folder prywatny';
$labels['otherfolder'] = 'Folder innego użytkownika';
$labels['sharedfolder'] = 'Folder współdzielony';
-
$labels['sortby'] = 'Sortuj wg';
$labels['sortasc'] = 'RosnÄ…co';
$labels['sortdesc'] = 'MalejÄ…co';
$labels['undo'] = 'Cofnij';
-
$labels['installedplugins'] = 'Zainstalowane wtyczki';
$labels['plugin'] = 'Wtyczka';
$labels['version'] = 'Wersja';
$labels['source'] = 'Źródła';
$labels['license'] = 'Licencja';
$labels['support'] = 'Wsparcie techniczne';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'uniwersalny';
$labels['english'] = 'angielski';
$labels['westerneuropean'] = 'zachodnioeuropejski';
@@ -539,5 +480,4 @@ $labels['vietnamese'] = 'wietnamski';
$labels['japanese'] = 'japoński';
$labels['korean'] = 'koreański';
$labels['chinese'] = 'chiński';
-
?>
diff --git a/program/localization/pl_PL/messages.inc b/program/localization/pl_PL/messages.inc
index 3cac0c426..0ad357b69 100644
--- a/program/localization/pl_PL/messages.inc
+++ b/program/localization/pl_PL/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Wystąpił błąd!';
$messages['loginfailed'] = 'BÅ‚Ä…d logowania!';
$messages['cookiesdisabled'] = 'Twoja przeglądarka nie obsługuje ciasteczek!';
@@ -101,13 +99,16 @@ $messages['converting'] = 'Konwertowanie tekstu...';
$messages['messageopenerror'] = 'Nie można załadować wiadomości z serwera.';
$messages['fileuploaderror'] = 'Załączanie pliku nie powiodło się.';
$messages['filesizeerror'] = 'Plik przekracza maksymalną wielkość $size.';
-$messages['copysuccess'] = 'Pomyślnie skopiowano następującą liczbę adresów: $nr.';
-$messages['copyerror'] = 'Nie można skopiować żadnego adresu.';
+$messages['copysuccess'] = 'Pomyślnie skopiowano $nr kontaktów.';
+$messages['movesuccess'] = 'Pomyślnie przeniesiono $nr kontaktów.';
+$messages['copyerror'] = 'Nie udało się skopiować żadnego kontaktu.';
+$messages['moveerror'] = 'Nie udało się przenieść żadnego kontaktu.';
$messages['sourceisreadonly'] = 'Źródło adresu jest tylko do odczytu.';
$messages['errorsavingcontact'] = 'Nie można było zapisać adresu kontaktu.';
$messages['movingmessage'] = 'Przenoszenie wiadomości...';
$messages['copyingmessage'] = 'Kopiowanie wiadomości...';
$messages['copyingcontact'] = 'Kopiowanie kontaktów...';
+$messages['movingcontact'] = 'Przenoszenie kontaktów...';
$messages['deletingmessage'] = 'Usuwanie wiadomości...';
$messages['markingmessage'] = 'Oznaczanie wiadomości...';
$messages['addingmember'] = 'Dodawanie kontaktów do grupy...';
@@ -167,7 +168,6 @@ $messages['invalidimageformat'] = 'Niepoprawny format obrazka.';
$messages['mispellingsfound'] = 'Wykryto błędy pisowni w tej wiadomości.';
$messages['parentnotwritable'] = 'Nie można utworzyć/przenieść folderu w wybrane miejsce. Brak upranień.';
$messages['messagetoobig'] = 'Ta część wiadomości jest zbyt duża aby ją przetworzyć.';
-$messages['attachmentvalidationerror'] = 'UWAGA! Ten załącznik jest podejrzany ponieważ jego typ nie jest zgodny z typem zadeklarownym w wiadomości. Jeśli nie ufasz temu nadawcy nie powinieneś otwierać go w przeglądarce, bo może zawierać złośliwe oprogramowanie.<br/><br/><em>Spodziwany: $expected; znaleziono: $detected</em>';
+$messages['attachmentvalidationerror'] = 'UWAGA! Ten załącznik jest podejrzany ponieważ jego typ nie jest zgodny z typem zadeklarownym w wiadomości. Jeśli nie ufasz temu nadawcy nie powinieneś otwierać go w przeglądarce, gdyż może zawierać złośliwe oprogramowanie.<br/><br/><em>Zadeklarowany: $expected; wykryty: $detected</em>';
$messages['noscriptwarning'] = 'Uwaga: Usługa wymaga Javascriptu! Aby z niej skorzystać proszę włączyć obsługę języka Javascript w ustawieniach przeglądarki.';
-
?>
diff --git a/program/localization/ps/labels.inc b/program/localization/ps/labels.inc
index d5e513419..9b4c8d813 100755..100644
--- a/program/localization/ps/labels.inc
+++ b/program/localization/ps/labels.inc
@@ -15,66 +15,39 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = '$product ته ښه راغلاست';
$labels['username'] = 'کارن نوم';
$labels['password'] = 'پټنوم';
$labels['server'] = 'برابرونکی';
$labels['login'] = 'ننوتون';
-
-// taskbar
$labels['logout'] = 'وتون';
$labels['mail'] = 'برÛښناليک';
$labels['settings'] = 'Úاني برابرونÛ';
$labels['addressbook'] = 'Ù¾ØªÛ Ú©ØªØ§Ø¨';
-
-// mailbox names
$labels['inbox'] = 'راغلي ليکونه';
$labels['drafts'] = 'بارليک';
$labels['sent'] = 'Ù„ÛÚ–Ù„ شوي ليکونه';
$labels['trash'] = 'کثاÙت دانÛ';
$labels['junk'] = 'جنک';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'مضمون';
$labels['from'] = 'استوونکی';
-$labels['sender'] = 'Sender';
$labels['to'] = 'ترلاسه کوونکی';
$labels['cc'] = 'لمÛسل';
$labels['bcc'] = 'پټليکی';
$labels['replyto'] = 'Úوابول';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Ù†Ûټه';
$labels['size'] = 'Ú©Ú†Ù‡';
$labels['priority'] = 'لومړيتوب';
$labels['organization'] = 'ټولنه';
-$labels['readstatus'] = 'Read status';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'پوښÛ';
$labels['messagesfromto'] = 'له ټاکلي استوزو څخه ټاکلي شمÛرل شوو استوزو ته';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = 'له $nr Úخه استوزو $count استوزو ته';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'لمÛسل';
-$labels['move'] = 'Move';
$labels['moveto'] = 'ته خوÚوي';
$labels['download'] = 'ښکته کول';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'Ùايل نوم';
$labels['filesize'] = 'Ùايل Ú©Ú†Ù‡';
-
$labels['addtoaddressbook'] = 'د پتو کتاب ته ÙŠÛ ÙˆØ±Ø²ÙŠØ§Øª کړئ';
-
-// weekdays short
$labels['sun'] = 'يوه Ù†Û';
$labels['mon'] = 'دوه Ù†Û';
$labels['tue'] = 'Ø¯Ø±Û Ù†Û';
@@ -82,8 +55,6 @@ $labels['wed'] = 'څلورنÛ';
$labels['thu'] = 'پنÚÙ†Û';
$labels['fri'] = 'جمعه';
$labels['sat'] = 'Ù†Û';
-
-// weekdays long
$labels['sunday'] = 'يوه Ù†Û';
$labels['monday'] = 'دوه Ù†Û';
$labels['tuesday'] = 'Ø¯Ø±Û Ù†Û';
@@ -91,8 +62,6 @@ $labels['wednesday'] = 'منÚÙ†Û';
$labels['thursday'] = 'پنÚÙ†Û';
$labels['friday'] = 'جمعه';
$labels['saturday'] = 'Ù†Û';
-
-// months short
$labels['jan'] = 'حنوري';
$labels['feb'] = 'Ùبروري';
$labels['mar'] = 'مارچ';
@@ -105,8 +74,6 @@ $labels['sep'] = 'سپتمپر';
$labels['oct'] = 'اکتوبر';
$labels['nov'] = 'نومبر';
$labels['dec'] = 'ډسمبر';
-
-// months long
$labels['longjan'] = 'جنوري';
$labels['longfeb'] = 'Ùبروري';
$labels['longmar'] = 'مارچ';
@@ -119,22 +86,12 @@ $labels['longsep'] = 'سپتمبر';
$labels['longoct'] = 'اکتوبر';
$labels['longnov'] = 'نومبر';
$labels['longdec'] = 'ډسمبر';
-
$labels['today'] = 'نن';
-
-// toolbar buttons
-$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'نوي استوزي وګوره';
$labels['compose'] = 'استوزه وليکه';
$labels['writenewmessage'] = 'نوي استوزي جوړول';
-$labels['reply'] = 'Reply';
$labels['replytomessage'] = 'استوونکي ته Úواب ورکړئ';
$labels['replytoallmessage'] = 'استوونکي او ټولو ترلاسه کوونکو ته Úواب Ù„ÛÚ–Ù„';
-$labels['replyall'] = 'Reply all';
-$labels['replylist'] = 'Reply list';
-$labels['forward'] = 'Forward';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'استوزه بل ته استول';
$labels['deletemessage'] = 'استوزه ړنګول';
$labels['movemessagetotrash'] = 'استوزه کثاÙت داني ته واستوه';
@@ -145,253 +102,98 @@ $labels['nextmessage'] = 'ÙˆØ±Ù¾Ø³Û Ø§Ø³ØªÙˆØ²Ù‡ وښيه';
$labels['lastmessage'] = 'پای /آخري استوزه وښيه';
$labels['backtolist'] = 'بيرته د استوزو لست ته';
$labels['viewsource'] = 'سرچينه وښيه';
-$labels['mark'] = 'Mark';
$labels['markmessages'] = 'استوزي په نښه کړئ';
$labels['markread'] = 'لوستل شوي په توګه';
$labels['markunread'] = 'د نالوستل شوي په توګه';
$labels['markflagged'] = 'د بي کاره په توګه';
$labels['markunflagged'] = 'د Ú©Ø§Ø±ÙˆÙ†Û Ù¾Ù‡ توګه';
-$labels['moreactions'] = 'More actions...';
-$labels['more'] = 'More';
-$labels['back'] = 'Back';
-$labels['options'] = 'Options';
-
$labels['select'] = 'ټاکل';
$labels['all'] = 'ټول';
$labels['none'] = 'Ù‡ÛÚ…';
-$labels['currpage'] = 'Current page';
$labels['unread'] = 'نالوستي';
$labels['flagged'] = 'Ø¨Û Ú©Ø§Ø±Ù‡';
$labels['unanswered'] = 'ناÚواب شوي';
-$labels['withattachment'] = 'With attachment';
-$labels['deleted'] = 'Deleted';
-$labels['undeleted'] = 'Not deleted';
-$labels['invert'] = 'Invert';
$labels['filter'] = 'چڼول';
-$labels['list'] = 'List';
-$labels['threads'] = 'Threads';
-$labels['expand-all'] = 'Expand All';
-$labels['expand-unread'] = 'Expand Unread';
-$labels['collapse-all'] = 'Collapse All';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
-$labels['fromto'] = 'From/To';
-$labels['flag'] = 'Flag';
-$labels['attachment'] = 'Attachment';
$labels['nonesort'] = 'Ù‡ÛÚ…';
-$labels['sentdate'] = 'Sent date';
-$labels['arrival'] = 'Arrival date';
-$labels['asc'] = 'ascending';
-$labels['desc'] = 'descending';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'Ú©ÛÚšÚ©Ù„ÛŒ';
$labels['empty'] = 'تش';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'ټيکلي لارښود';
$labels['unknown'] = 'نامعلوم';
$labels['unlimited'] = 'بي کچه';
-
$labels['quicksearch'] = 'ژر پلټنه';
$labels['resetsearch'] = 'د Ù¾Ù„Ù¼Ù†Û Ø¨ÙŠØ§Ø³Ù…ÙˆÙ†';
-$labels['searchmod'] = 'Search modifiers';
-$labels['msgtext'] = 'Entire message';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'په نوي Ú©Ú“Ú©Û Ú©Û Ù¾Ø±Ø§Ù†ÙŠØ²Ù‡';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
-$labels['editasnew'] = 'Edit as new';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'اوس ÙŠÛ ÙˆØ§Ø³ØªÙˆÙ‡';
$labels['savemessage'] = 'دا ګارليک خوندي کړه';
$labels['addattachment'] = 'يو Ùايل ونښلوه';
$labels['charset'] = 'چيرست';
$labels['editortype'] = 'د ټايب سمونګر';
$labels['returnreceipt'] = 'د رسليک راګرÚÛدل';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'ليکدود کتنه';
$labels['resumeediting'] = 'Ú©Ø§Ø±Ù…Ø®ÙŠÙ†Û Ø³Ù…ÙˆÙ†Ù‡';
$labels['revertto'] = 'ته بÛرته اړول';
-
-$labels['attach'] = 'Attach';
$labels['attachments'] = 'نښلني';
$labels['upload'] = 'پورته کول';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'بندول';
-$labels['messageoptions'] = 'Message options...';
-
$labels['low'] = 'ټيټ';
$labels['lowest'] = 'خورا ټيټ';
$labels['normal'] = 'نورمال';
$labels['high'] = 'لوړ';
$labels['highest'] = 'خورا لوړ';
-
$labels['nosubject'] = 'Ù‡ÛÚ… موضوع';
$labels['showimages'] = 'انÚورونه وښيه';
$labels['alwaysshow'] = 'تل له $استوونکي څخه انÚورونه وښيه';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'ايچ ټی ايمل ال';
$labels['plaintoggle'] = 'ساده متن';
$labels['savesentmessagein'] = 'استول شوي استوزه په خوندي کړه';
$labels['dontsave'] = 'مه ساته';
$labels['maxuploadsize'] = 'لږترلږه د اجازه شوي Ùايل Ú©Ú†Ù‡ $وي';
-
$labels['addcc'] = 'څرګندليک';
$labels['addbcc'] = 'پټليک';
$labels['addreplyto'] = 'ته ورزيات کړه';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Ø¯Ø¯Û Ø§Ø³ØªÙˆØ²ÙŠ استوونکی پوښتي Ú†Ûد استوزي لوستلو سره سم ØªØ§Ø³Û Ø®Ø¨Ø± Ú©Ú“ÙŠØŒ. غواړئ Ú†Û Ø§Ø³ØªÙˆÙˆÙ†Ú©ÛŒ خبرشي؟';
$labels['receiptread'] = 'رسليک راګرÚÛدل (لوستل';
$labels['yourmessage'] = 'دا رسليک راګرÚÛدل Ø³ØªØ§Ø³Û Ø§Ø³ØªÙˆØ²ÙŠ لپاره دی';
$labels['receiptnote'] = 'يادونه: دا رسليک ØªØ§Ø³Û ØªÙ‡ ÙŠÙˆØ§Ø²Û Ø¯Ø¯Û Ø®Ø¨Ø±ØªÙŠØ§ درکوي Ú†Û Ú©Ù„Ù‡ استوزی د ترلاسه کوونکي په کمپيوټر Ú©Û Ú…Ø±Ú«Ù†Ø¯ شي، Ø¯Ø¯Û Ù‡ÙŠÚ… ډاډګيرنه نشته Ú†Û ØªØ±Ù„Ø§Ø³Ù‡ کوونکي د استوزي متن لوستی او يا Ù¾Ø±Û Ù¾ÙˆÙ‡ شوی دی';
-
-// address boook
$labels['name'] = 'نوم ښوونه';
$labels['firstname'] = 'نوم';
$labels['surname'] = 'کورنی نوم';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'برÛښناليک';
-$labels['phone'] = 'Phone';
-$labels['address'] = 'Address';
-$labels['street'] = 'Street';
-$labels['locality'] = 'City';
-$labels['zipcode'] = 'ZIP Code';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
-$labels['typemobile'] = 'Mobile';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'نوی اړيکلوری ورزيات کړه';
$labels['editcontact'] = 'اړيکلوري سمون';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
-$labels['personalinfo'] = 'Personal information';
-
$labels['edit'] = 'سمون';
$labels['cancel'] = 'لري کول';
$labels['save'] = 'ساتل';
$labels['delete'] = 'ړنګول';
-$labels['rename'] = 'Rename';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'نوي اړيکلوري کارټ جوړ کړه';
$labels['deletecontact'] = 'ټاکل شوي اړيکلوري ړنګ کړه';
$labels['composeto'] = 'ته ليک وليکه';
$labels['contactsfromto'] = 'له دومره اړيکلورو څخه دومره شمÛرل شوي Contacts $from to $to of $count';
$labels['print'] = 'چاپ';
$labels['export'] = 'بهرول';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'اړيکلوري د ويکارډ په بڼه واستوئ';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'پخوانی غونډ وښيه';
$labels['firstpage'] = 'لومړی غونډ وښيه';
$labels['nextpage'] = 'ÙˆØ±Ù¾Ø³Û ØºÙˆÙ†Ú‰ وښيه';
$labels['lastpage'] = 'پای غونډ وښيه';
-
-$labels['group'] = 'Group';
$labels['groups'] = 'Ú‰Ù„Û';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Úاني پتÛ';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
$labels['import'] = 'رانقلول';
$labels['importcontacts'] = 'اړيکلوري نقل کړئ';
$labels['importfromfile'] = 'له Ùايل څخه رانقل کړئ';
-$labels['importtarget'] = 'Add new contacts to address book:';
$labels['importreplace'] = 'ټول ادرس کتاب بدل کړئ';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'ترسره شو';
-
-// settings
$labels['settingsfor'] = 'لپاره برابرونÛ';
-$labels['about'] = 'About';
$labels['preferences'] = 'غورونÛ';
$labels['userpreferences'] = 'کارن غورونÛ';
$labels['editpreferences'] = 'د کارن غورونو سمون';
-
$labels['identities'] = 'Ù¾ÛژندنÛ';
$labels['manageidentities'] = 'Ø¯Ø¯Û Ø­Ø³Ø§Ø¨ Ù¾Ûژندنو برابرول';
$labels['newidentity'] = 'نوي Ù¾Ûژندنه';
-
$labels['newitem'] = 'نوی توک';
$labels['edititem'] = 'توک سمون';
-
$labels['preferhtml'] = 'ايچ ټي ام ايل ښوون';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'ايچ ټي ام ايل استوزه';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'په زړه Ù¾ÙˆØ±Û Ù†ÛÙ¼Û';
$labels['setdefault'] = 'تلوالي برابرول';
$labels['autodetect'] = 'په خپلواکه توګه';
@@ -400,13 +202,8 @@ $labels['timezone'] = 'سيميز وخت';
$labels['pagesize'] = 'په هر مخ Ù¾Ø±ØªÛ Ú©ÚšÛ';
$labels['signature'] = 'لاسليک';
$labels['dstactive'] = 'ورÚنيو کارونو لنډيز ساتل';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'ايچ ټي‌ام ايل استوزي وليکه';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'ايچ ټي ام ايل لاسليک';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'پخوانی چوکاټ وښييه';
$labels['skin'] = 'انټرÙيس بڼه';
$labels['logoutclear'] = 'کثاÙت داني د ÙˆØªÙ†Û Ù¾Ù‡ وخت Ú©Û Ù¾Ø§Ú©Ù‡ Ú©Ú“Ù‡';
@@ -417,70 +214,26 @@ $labels['mailboxview'] = 'ليکبکس ښکار کړه';
$labels['mdnrequests'] = 'د استوونکي خبرتياوÛ';
$labels['askuser'] = 'له کاروونکي څخه وپوښته';
$labels['autosend'] = 'په خپلواکه توګه واستوه';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['ignore'] = 'Ù„Ø±Û Ú©Ú“Ù‡';
$labels['readwhendeleted'] = 'په Ú“Ù†Ú« شوو Ú©Û Ø§Ø³ØªÙˆØ²ÙŠ د لوستل شوي په توګه په Ù†ÚšÙ‡ Ú©Ú“Ù‡';
$labels['flagfordeletion'] = 'استوزه د Ú“Ù†Ú« شوي پرÚای بÛکاره Ú©Ú“Ù‡';
$labels['skipdeleted'] = 'ړنګ شوي استوزي مه ښکاره کوه';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
$labels['showremoteimages'] = 'انÚورونه له لري په ليکه Ú©Û ÚšÚ©Ø§Ø±Ù‡ Ú©Ú“Ù‡';
$labels['fromknownsenders'] = 'له اشنا استوونکو څخه';
$labels['always'] = 'تل';
$labels['showinlineimages'] = 'نښلول شوي انÚورونه تر Ø§Ø³ØªÙˆØ²Û Ù„Ø§Ù†Ø¯Û ÚšÚ©Ø§Ø±Ù‡ Ú©Ú“Ù‡';
$labels['autosavedraft'] = 'بارليک په خپل سري توګه خوندي‌کړه';
$labels['everynminutes'] = 'هر Ù‡ Ú«Ú¼Ù‡ په دقيقو Ú©Û';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'Ù‡ÛÚ…';
-$labels['immediately'] = 'immediately';
$labels['messagesdisplaying'] = 'استوزي ښيي';
$labels['messagescomposition'] = 'استوزي ليکي';
$labels['mimeparamfolding'] = 'د نښلول شوو نومونه';
$labels['2231folding'] = 'بشپړ RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (نور)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
$labels['advancedoptions'] = 'پرمختللي لارÛ';
$labels['focusonnewmessage'] = 'Ùوکاس براوسر Ú©Ú“Ú©Û Ù¾Ù‡ نوي استوزي Ú©Û';
$labels['checkallfolders'] = 'په ټولو پوښيو Ú©Û Ù†ÙˆÙŠ استوزي وګورئ';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
-$labels['section'] = 'Section';
-$labels['maintenance'] = 'Maintenance';
-$labels['newmessage'] = 'New Message';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
-$labels['autoaddsignature'] = 'Automatically add signature';
-$labels['newmessageonly'] = 'new message only';
-$labels['replyandforwardonly'] = 'replies and forwards only';
-$labels['insertsignature'] = 'Insert signature';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'پوښÛ';
$labels['folders'] = 'پوښÛ';
$labels['foldername'] = 'Ù¾ÙˆÚšÛ Ù†ÙˆÙ…';
@@ -490,54 +243,11 @@ $labels['create'] = 'جوړول، Ø±Ø§Ù…Ù†Ú ØªÙ‡ کول';
$labels['createfolder'] = 'Ù†ÙˆÛ Ù¾ÙˆÚšÛ Ø¬ÙˆÚ“ Ú©Ú“Ù‡';
$labels['managefolders'] = 'پوښيو څارل';
$labels['specialfolders'] = 'Úانګړي پوښÛÛ';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'اڼل';
$labels['sortasc'] = 'له پورته نه ښکته خوا ته برابرول';
$labels['sortdesc'] = 'له ښکته نه پورته خوا ته برابرول';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
$labels['B'] = 'بي';
$labels['KB'] = 'کي بي';
$labels['MB'] = 'ام بي';
$labels['GB'] = 'جي بي';
-
-// character sets
-$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/ps/messages.inc b/program/localization/ps/messages.inc
index 50c1849bd..a900d328f 100755..100644
--- a/program/localization/ps/messages.inc
+++ b/program/localization/ps/messages.inc
@@ -15,30 +15,14 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'ننوتنه په بري سره ترسره نه شوه';
$messages['cookiesdisabled'] = 'ستاسو لټوني ککوړي ونه منل';
$messages['sessionerror'] = 'Ø³ØªØ§Ø³Û Ù†Ø§Ø³ØªÙ‡ ناباوري يا له مينÚÙ‡ ØªÙ„Ù„Û Ø¯Ù‡';
$messages['storageerror'] = 'له ای ميپ سرور سره پيوستون په بري سره ترسره نه شو';
-$messages['servererror'] = 'Server Error!';
-$messages['servererrormsg'] = 'Server Error: $msg';
-$messages['dberror'] = 'Database Error!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Invalid request! No data was saved.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'ليکبکس Ú©Û Ù‡ÛÚ… استوزي ونه مونده';
$messages['loggedout'] = 'ØªØ§Ø³Û Ù„Ù‡ Ù†Ø§Ø³ØªÛ Ú…Ø®Ù‡ په بشپړه توګه وويستل شوئ الله په امان';
$messages['mailboxempty'] = 'ليکبکس تش دی';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'د کار په حال Ú©Û';
-$messages['uploading'] = 'Uploading file...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'اومتوک د کار په حال Ú©Û';
$messages['checkingmail'] = 'نوي استوزي ګوري';
$messages['sendingmessage'] = 'استوزه استوي.';
@@ -48,31 +32,20 @@ $messages['messagesaved'] = 'استوزه په بارليک Ú©Û Ø®ÙˆÙ†Ø¯ÙŠ شو
$messages['successfullysaved'] = 'په بري‌سره خوندي شوه';
$messages['addedsuccessfully'] = 'اړيکلوری په بري سره Ù¾ØªÛ Ú©ØªØ§Ø¨ ته ور زيات شو';
$messages['contactexists'] = 'يو اړيکلوری له Ø¯Û Ø¨Ø±Ûښناليک Ù¾ØªÛ Ø³Ø±Ù‡ شتون لري';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'ستاسو د پټتيآ خوندي Ú©Ûدو لپاره ØŒ له لري انÚورنه په Ø¯Û Ø§Ø³ØªÙˆØ²ÙŠâ€ŒÚ©Û Ø¨Ù†Ø¯ کړئ';
$messages['encryptedmessage'] = 'دا يوه پټه استوزه ده او نه څرګندÛÚ–ÙŠ. بښنه غواړو';
$messages['nocontactsfound'] = 'Ù‡ÛÚ… اړيکلوری ÙŠÛ ÙˆÙ†Ù‡ موند';
$messages['contactnotfound'] = 'وړاندی شوی اړيکلوری ونه مونده';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'استوزي استونه په بري سره پای ته ونه رسÛده';
$messages['senttooquickly'] = 'مهرباني وکړئ $صبر وکړئ د Ø¯Û Ø§Ø³ØªÙˆØ²Û Ù„Ù‡ Ù„Ûږلو مخکÛ';
-$messages['errorsavingsent'] = 'دخوندي کولو او Ù„Ûږلو پر مهال يوه تيروتنه Ø±Ø§Ù…Ù†Ú ØªÙ‡ شوه';
-$messages['errorsaving'] = 'دخوندي کولو پر مهال يوه تيروتنه Ø±Ø§Ù…Ù†Ú ØªÙ‡ شوه';
$messages['errormoving'] = 'استوزه ونه خوÚول شوه';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'استوزه ړنګه نه شوه';
-$messages['errormarking'] = 'Could not mark the message(s).';
$messages['deletecontactconfirm'] = 'په رښتيا سره غواړئ Ú†Û Ù¼Ø§Ú©Ù„ شوی اړيکلوری Ú“Ù†Ú« کړئ؟';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'په رښتيا سره غواړئ Ú†Û Ù¼Ø§Ú©Ù„ شوي استوزي‌ړنګ کړئ؟';
$messages['deletefolderconfirm'] = 'په رښتيآ سره غواړئ Ú†Û Ø¯Ø§ Ù¾ÙˆÚšÛ Ú“Ù†Ú«Ù‡ کړئ؟';
$messages['purgefolderconfirm'] = 'په رښتيا سره غواړئ Ú†Û Ø¯Ø¯Û Ù¾ÙˆÚšÛ Ù¼ÙˆÙ„ استوزي‌ړنګ کړئ؟';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
$messages['folderdeleting'] = 'Ù¾ÙˆÚšÛ Ú“Ù†Ú«ÙˆÙŠ';
$messages['foldermoving'] = 'Ù¾ÙˆÚšÛ Ø®ÙˆÚوي';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'دا پورمه بشپړه Ú‰Ú©Ù‡ Ø´ÙˆÛ Ù†Ù‡ ده';
$messages['noemailwarning'] = 'مهرباني وکړئ د يوه شته برÛښناليک پته ورÚای کړئ';
$messages['nonamewarning'] = 'مهرباني‌وکړئ يو نوم وليکئ';
@@ -84,93 +57,29 @@ $messages['nobodywarning'] = 'دا استوزه پرته له متن څخه اس
$messages['notsentwarning'] = 'استوزه نه ده Ù„ÛÚ–Ù„ شوÛ. غواړئ Ú†Û Ø§Ø³ØªÙˆØ²Ù‡ مو Ù„Ø±Û ÙˆØºÙˆØ±Úوئ';
$messages['noldapserver'] = 'مهرباني وکړئ يو ال ډپ سرور د پلټلو لپاره وټاکئ';
$messages['nosearchname'] = 'مهرباني وکړئ د يو اړيکلوري‌نوم يا برÛښناليک پته وليکئ';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = 'استوزي ومونده$';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'د پلټلو بيا راګرÚÛدل Ù‡ÛÚ… سمون ونه خوړه';
$messages['searching'] = 'پلټي';
$messages['checking'] = 'ګوري';
$messages['nospellerrors'] = 'Ù‡ÛÚ… ليکدودي‌تيروتنه ونه مونده';
$messages['folderdeleted'] = 'Ù¾ÙˆÚšÛ Ù¾Ù‡ بشپړه توګه Ú“Ù†Ú«Ù‡ شوه';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'په بشپړه توګه ړنګ شول';
$messages['converting'] = 'له استوزي څخه Ø¨Ú¼Û Ú“Ù†Ú«ÛÚ–ÙŠ';
$messages['messageopenerror'] = 'له سرور څخه استوزي پرمخ نه شي تلی';
$messages['fileuploaderror'] = 'دÙايل پورته کول په بري سره سرته ونه رسيده';
$messages['filesizeerror'] = 'د پورته شوي Ùايل Ú©Ú†Ù‡ بايد لږترلږه له $څخه تيری ونه Ú©Ú“ÙŠ';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Ø¯Ø¯Û Ù¾ØªÛ ÙŠÙˆØ§Ø²Û Ø³Ø±Ú†ÙŠÙ†Ù‡ لوستل Ú©ÛÚ–ÙŠ';
$messages['errorsavingcontact'] = 'د Ù¾ØªÛ Ø§Ú“ÙŠÚ©Ù„ÙˆØ±ÛŒ ÙŠÛ Ø®ÙˆÙ†Ø¯ÙŠâ€ŒÙ†Ù‡ شو کړای';
$messages['movingmessage'] = 'استوزه خوÚوي';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'يو لوستل شوی رسليک په بشپړه توګه واستول شو';
$messages['errorsendingreceipt'] = 'رسليک ÙŠÛ ÙˆÙ†Ù‡ شوای ليږلی';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'ØªØ§Ø³Û Ù†Ù‡ شئ کولی Ú†Û Ø¯Ø§ Ù¾Ûژندنه Ú“Ù†Ú«Ù‡ کړئ، داستاسو اخرنی پيژندنه ده';
$messages['forbiddencharacter'] = 'د Ù¾ÙˆÚšÛ Ù†ÙˆÙ… له Ùوربايډن تورو څخه جوړ دی';
$messages['selectimportfile'] = 'مهرباني وکړئ‌يو Ùايل د پورته کولو لپاره وټاکئ';
$messages['addresswriterror'] = 'ټاکل شوی Ù¾ØªÛ Ú©ØªØ§Ø¨ د بياليکلو نه دی';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'نقلوي...صبر وکړئ';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
$messages['importconfirm'] = '<b>په بشپړه توګه نقل شو $اړيکلوري داخل شول, $شته تيرشوي انټاير څخه تيرشول</b>:<p><em>$نومونه</em></p>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'چار اجازه نه لري';
$messages['nofromaddress'] = 'په ټاکل شوي پيژندنه Ú©Û Ø¨Ø±Ûښناليک Ù¾ØªÛ Ù„Ù‡ لاسه ورکړي';
$messages['editorwarning'] = 'Ú©Ù‡ د متن بڼو له منÚÙ‡ تللو ګواښ وي نو د متن سمون پرانيزئ. غواړئ Ú†Û Ø¯ÙˆØ§Ù… ورکړئ';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/pt_BR/labels.inc b/program/localization/pt_BR/labels.inc
index 3c486d5ad..e1df5854a 100644
--- a/program/localization/pt_BR/labels.inc
+++ b/program/localization/pt_BR/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Bem-vindo ao $product';
$labels['username'] = 'Usuário';
$labels['password'] = 'Senha';
$labels['server'] = 'Servidor';
$labels['login'] = 'Entrar';
-
-// taskbar
$labels['logout'] = 'Sair';
$labels['mail'] = 'E-mail';
$labels['settings'] = 'Configurações';
$labels['addressbook'] = 'Catálogo de endereços';
-
-// mailbox names
$labels['inbox'] = 'Caixa de entrada';
$labels['drafts'] = 'Rascunhos';
$labels['sent'] = 'Enviados';
$labels['trash'] = 'Lixeira';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Exibir o nome real das pastas de sistema';
-
-// message listing
$labels['subject'] = 'Assunto';
$labels['from'] = 'De';
$labels['sender'] = 'Remetente';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Prioridade';
$labels['organization'] = 'Organização';
$labels['readstatus'] = 'Status de leitura';
$labels['listoptions'] = 'Lista de opções...';
-
$labels['mailboxlist'] = 'Pastas';
$labels['messagesfromto'] = 'Mensagens $from - $to de $count';
$labels['threadsfromto'] = 'Tópicos $from - $to de $count';
$labels['messagenrof'] = 'Mensagem $nr de $count';
$labels['fromtoshort'] = '$from - $to de $count';
-
$labels['copy'] = 'Copiar';
$labels['move'] = 'Mover';
$labels['moveto'] = 'Mover para...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Baixar';
$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Exibir';
$labels['showanyway'] = 'Exibir mesmo assim';
-
$labels['filename'] = 'Nome do arquivo';
$labels['filesize'] = 'Tamanho';
-
$labels['addtoaddressbook'] = 'Incluir no catálogo de endereços';
-
-// weekdays short
$labels['sun'] = 'Dom.';
$labels['mon'] = 'Seg.';
$labels['tue'] = 'Ter.';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Qua.';
$labels['thu'] = 'Qui.';
$labels['fri'] = 'Sex.';
$labels['sat'] = 'Sáb.';
-
-// weekdays long
$labels['sunday'] = 'Domingo';
$labels['monday'] = 'Segunda-feira';
$labels['tuesday'] = 'Terça-feira';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Quarta-feira';
$labels['thursday'] = 'Quinta-feira';
$labels['friday'] = 'Sexta-feira';
$labels['saturday'] = 'Sábado';
-
-// months short
$labels['jan'] = 'Jan.';
$labels['feb'] = 'Fev.';
$labels['mar'] = 'Mar.';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Set.';
$labels['oct'] = 'Out.';
$labels['nov'] = 'Nov.';
$labels['dec'] = 'Dez.';
-
-// months long
$labels['longjan'] = 'Janeiro';
$labels['longfeb'] = 'Fevereiro';
$labels['longmar'] = 'Março';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Setembro';
$labels['longoct'] = 'Outubro';
$labels['longnov'] = 'Novembro';
$labels['longdec'] = 'Dezembro';
-
$labels['today'] = 'Hoje';
-
-// toolbar buttons
$labels['refresh'] = 'Atualizar';
$labels['checkmail'] = 'Verificar se há novas mensagens';
$labels['compose'] = 'Criar email';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Mais ações...';
$labels['more'] = 'Mais';
$labels['back'] = 'Voltar';
$labels['options'] = 'Opções';
-
$labels['select'] = 'Selecionar';
$labels['all'] = 'Todas';
$labels['none'] = 'Nenhuma';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Expandir Tudo';
$labels['expand-unread'] = 'Expandir Não Lidas';
$labels['collapse-all'] = 'Recolher Tudo';
$labels['threaded'] = 'Agrupado';
-
$labels['autoexpand_threads'] = 'Expandir mensagens agrupadas';
$labels['do_expand'] = 'todos os grupos';
$labels['expand_only_unread'] = 'somente com mensagem(s) não lidas';
@@ -190,16 +163,13 @@ $labels['listcolumns'] = 'Lista de colunas';
$labels['listsorting'] = 'Coluna para ordenação';
$labels['listorder'] = 'Ordem da classificação';
$labels['listmode'] = 'Visualização em lista';
-
$labels['folderactions'] = 'Ações para as pastas...';
$labels['compact'] = 'Compactar';
$labels['empty'] = 'Esvaziar';
$labels['importmessages'] = 'Importar mensagens';
-
$labels['quota'] = 'Uso de disco';
$labels['unknown'] = 'desconhecido';
$labels['unlimited'] = 'ilimitado';
-
$labels['quicksearch'] = 'Pesquisa rápida';
$labels['resetsearch'] = 'Limpar pesquisa';
$labels['searchmod'] = 'Opções da pesquisa';
@@ -207,13 +177,10 @@ $labels['msgtext'] = 'Mensagem inteira';
$labels['body'] = 'Conteúdo';
$labels['type'] = 'Tipo';
$labels['namex'] = 'Nome';
-
$labels['openinextwin'] = 'Abrir em nova janela';
$labels['emlsave'] = 'Baixar (formato .eml)';
$labels['changeformattext'] = 'Exibir em formato de texto simples';
$labels['changeformathtml'] = 'Exibir com formatação HTML';
-
-// message compose
$labels['editasnew'] = 'Editar como novo';
$labels['send'] = 'Enviar';
$labels['sendmessage'] = 'Enviar agora';
@@ -225,26 +192,32 @@ $labels['returnreceipt'] = 'Confirmação de recebimento';
$labels['dsn'] = 'Recibo de entrega';
$labels['mailreplyintro'] = 'Em $date, $sender escreveu:';
$labels['originalmessage'] = 'Mensagem original';
-
$labels['editidents'] = 'Editar identidades';
$labels['spellcheck'] = 'Revisar';
$labels['checkspelling'] = 'Verificar ortografia';
$labels['resumeediting'] = 'Continuar a edição';
$labels['revertto'] = 'Reverter para';
-
+$labels['restore'] = 'Restaurar';
+$labels['restoremessage'] = 'Restaurar mensagem?';
+$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';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Fechar';
$labels['messageoptions'] = 'Opções da mensagem...';
-
$labels['low'] = 'Baixa';
$labels['lowest'] = 'Mais baixa';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alta';
$labels['highest'] = 'Mais alta';
-
$labels['nosubject'] = '(sem assunto)';
$labels['showimages'] = 'Exibir imagens';
$labels['alwaysshow'] = 'Sempre exibir imagens de $sender';
@@ -252,25 +225,19 @@ $labels['isdraft'] = 'Esta é uma mensagem salva como rascunho.';
$labels['andnmore'] = '$nr mais...';
$labels['togglemoreheaders'] = 'Exibir informações adicionais da mensagem (cabeçalhos)';
$labels['togglefullheaders'] = 'Exibir cabeçalho original da mensagem';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Texto simples';
$labels['savesentmessagein'] = 'Salvar mensagens enviadas em';
$labels['dontsave'] = 'não salvar';
$labels['maxuploadsize'] = 'Tamanho máximo permitido do arquivo é $size';
-
$labels['addcc'] = 'Adicionar Cópia';
$labels['addbcc'] = 'Adicionar Cópia Oculta';
$labels['addreplyto'] = 'Adicionar Endereço de Resposta';
$labels['addfollowupto'] = 'Adicionar Endereço de Encaminhamento';
-
-// mdn
$labels['mdnrequest'] = 'O remetente desta mensagem deseja ser notificado quando você ler esta mensagem. Você permite o envio desta notificação?';
$labels['receiptread'] = 'Confirmação de Leitura (exibida)';
$labels['yourmessage'] = 'Esta é uma confirmação de leitura da sua mensagem';
$labels['receiptnote'] = 'Nota: Esta confirmação de leitura somente informa que a mensagem foi aberta no computador do destinatário. Não há garantia que o destinatário tenha lido ou compreendido o conteúdo da mensagem.';
-
-// address boook
$labels['name'] = 'Nome';
$labels['firstname'] = 'Primeiro Nome';
$labels['surname'] = 'Sobrenome';
@@ -305,7 +272,6 @@ $labels['search'] = 'Pesquisar';
$labels['advsearch'] = 'Pesquisa Avançada';
$labels['advanced'] = 'Avançado';
$labels['other'] = 'Outro';
-
$labels['typehome'] = 'Residencial';
$labels['typework'] = 'Trabalho';
$labels['typeother'] = 'Outro';
@@ -320,14 +286,12 @@ $labels['typeassistant'] = 'Assistente';
$labels['typehomepage'] = 'Página pessoal';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Perfil';
-
$labels['addfield'] = 'Adicionar campo...';
$labels['addcontact'] = 'Adicionar novo contato';
$labels['editcontact'] = 'Editar contato';
$labels['contacts'] = 'Contatos';
$labels['contactproperties'] = 'Propriedades do contato';
$labels['personalinfo'] = 'Informações pessoais';
-
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Salvar';
@@ -336,7 +300,6 @@ $labels['rename'] = 'Renomear';
$labels['addphoto'] = 'Adicionar';
$labels['replacephoto'] = 'Substituir';
$labels['uploadphoto'] = 'Enviar foto';
-
$labels['newcontact'] = 'Criar novo contato';
$labels['deletecontact'] = 'Exclui os contatos selecionados';
$labels['composeto'] = 'Compor mensagem para';
@@ -350,20 +313,16 @@ $labels['newcontactgroup'] = 'Criar novo grupo de contatos';
$labels['grouprename'] = 'Renomear grupo';
$labels['groupdelete'] = 'Excluir grupo';
$labels['groupremoveselected'] = 'Remover os contatos selecionados do grupo';
-
$labels['previouspage'] = 'Página Anterior';
$labels['firstpage'] = 'Primeira Página';
$labels['nextpage'] = 'Próxima Página';
$labels['lastpage'] = 'Última Página';
-
$labels['group'] = 'Grupo';
$labels['groups'] = 'Grupos';
$labels['listgroup'] = 'Listar membros do grupo';
$labels['personaladrbook'] = 'Endereços pessoais';
-
$labels['searchsave'] = 'Salvar pesquisa';
$labels['searchdelete'] = 'Excluir pesquisa';
-
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importar contatos';
$labels['importfromfile'] = 'Importar do arquivo:';
@@ -374,21 +333,16 @@ $labels['importgroupsall'] = 'Todos (criar grupo se necessário)';
$labels['importgroupsexisting'] = 'Somente para grupos existentes';
$labels['importdesc'] = 'Você pode enviar contatos de um catálogo de endereços existente.<br/>Os contatos devem ser enviados no formato <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> ou CSV (valores separados por vírgula).';
$labels['done'] = 'Concluído';
-
-// settings
$labels['settingsfor'] = 'Configurações para';
$labels['about'] = 'Sobre';
$labels['preferences'] = 'Preferências';
$labels['userpreferences'] = 'Preferências do usuário';
$labels['editpreferences'] = 'Editar preferências do usuário';
-
$labels['identities'] = 'Identidades';
$labels['manageidentities'] = 'Gerenciar identidades desta conta';
$labels['newidentity'] = 'Nova identidade';
-
$labels['newitem'] = 'Novo item';
$labels['edititem'] = 'Editar item';
-
$labels['preferhtml'] = 'Exibir em HTML';
$labels['defaultcharset'] = 'Conjunto padrão de caracteres';
$labels['htmlmessage'] = 'Mensagem HTML';
@@ -484,7 +438,9 @@ $labels['standardwindows'] = 'Usar popups como janelas do navegador';
$labels['forwardmode'] = 'Encaminhamento de mensagens';
$labels['inline'] = 'Em linha (no corpo da mensagem)';
$labels['asattachment'] = 'como anexo';
-
+$labels['replyallmode'] = 'Ação padrão do botão [Responder a todos]';
+$labels['replyalldefault'] = 'responder a todos';
+$labels['replyalllist'] = 'responder somente à lista de discussão (se identificada)';
$labels['folder'] = 'Pasta';
$labels['folders'] = 'Pastas';
$labels['foldername'] = 'Nome da pasta';
@@ -505,26 +461,20 @@ $labels['foldertype'] = 'Tipo de Pasta';
$labels['personalfolder'] = 'Pasta Particular';
$labels['otherfolder'] = 'Pasta de outro Usuário';
$labels['sharedfolder'] = 'Pasta Pública';
-
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Ascendente';
$labels['sortdesc'] = 'Descendente';
$labels['undo'] = 'Desfazer';
-
$labels['installedplugins'] = 'Plugins instalados';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Versão';
$labels['source'] = 'Fonte';
$labels['license'] = 'Licença';
$labels['support'] = 'Obter suporte';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inglês';
$labels['westerneuropean'] = 'Oeste Europeu';
@@ -543,5 +493,4 @@ $labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonês';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chinês';
-
?>
diff --git a/program/localization/pt_BR/messages.inc b/program/localization/pt_BR/messages.inc
index 45b835d44..4546ceea9 100644
--- a/program/localization/pt_BR/messages.inc
+++ b/program/localization/pt_BR/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Ocorreu um erro!';
$messages['loginfailed'] = 'Falha no login';
$messages['cookiesdisabled'] = 'Seu navegador não aceita cookies';
@@ -46,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.';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'Por favor, informe pelo menos um destinatári
$messages['nosubjectwarning'] = 'O campo "Assunto" está vazio. Deseja incluí-lo agora?';
$messages['nobodywarning'] = 'Enviar a mensagem sem texto?';
$messages['notsentwarning'] = 'A mensagem não foi enviada. Deseja descartar sua mensagem?';
+$messages['restoresavedcomposedata'] = 'Uma mensagem criada anteriormente, mas não enviada, foi localizada.\n\nTítulo: $subject\nSalva em: $date\n\nDeseja restaurar esta mensagem?';
$messages['noldapserver'] = 'Por favor, selecione um servidor LDAP para a pesquisa';
$messages['nosearchname'] = 'Por favor, informe o nome do contato ou seu endereço de e-mail.';
$messages['notuploadedwarning'] = 'Há anexos ainda não enviados. Aguarde ou cancele o envio.';
@@ -172,5 +173,4 @@ $messages['parentnotwritable'] = 'Sem permissão para criar/mover a pasta dentro
$messages['messagetoobig'] = 'A mensagem é muito grande para ser processada.';
$messages['attachmentvalidationerror'] = 'ATENÇÃO! Este anexo é suspeito porque seu tipo não combina com o tipo declarado na mensagem. Se você não confia no remetente, não deveria abri-lo no navegador porque pode conter conteúdo malicioso.<br/><br/><em>Esperado: $expected; encontrado: $detected</em>';
$messages['noscriptwarning'] = 'Aviso: Este webmail utiliza Javascript, habilite-o nas configurações de seu navegador.';
-
?>
diff --git a/program/localization/pt_PT/labels.inc b/program/localization/pt_PT/labels.inc
index cc4c534e0..a4b419d21 100644
--- a/program/localization/pt_PT/labels.inc
+++ b/program/localization/pt_PT/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Bem-vindo ao $product';
$labels['username'] = 'Utilizador';
$labels['password'] = 'Palavra-passe';
$labels['server'] = 'Servidor';
$labels['login'] = 'Entrar';
-
-// taskbar
$labels['logout'] = 'Sair';
$labels['mail'] = 'Mensagens';
$labels['settings'] = 'Definições';
$labels['addressbook'] = 'Contactos';
-
-// mailbox names
$labels['inbox'] = 'A Receber';
$labels['drafts'] = 'Rascunhos';
$labels['sent'] = 'Itens Enviados';
$labels['trash'] = 'Reciclagem';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Mostrar nomes reais para as pastas especiais';
-
-// message listing
$labels['subject'] = 'Assunto';
$labels['from'] = 'Remetente';
$labels['sender'] = 'Remetente';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Prioridade';
$labels['organization'] = 'Organização';
$labels['readstatus'] = 'Estado de leitura';
$labels['listoptions'] = 'Lista de opções...';
-
$labels['mailboxlist'] = 'Pastas';
$labels['messagesfromto'] = 'Mensagens de $from a $to de $count';
$labels['threadsfromto'] = 'Tópicos de $from a $to de $count';
$labels['messagenrof'] = 'Mensagem $nr de $count';
$labels['fromtoshort'] = '$from – $to de $count';
-
$labels['copy'] = 'Copiar';
$labels['move'] = 'Mover';
$labels['moveto'] = 'mover para...';
@@ -68,13 +56,9 @@ $labels['download'] = 'descarregar';
$labels['open'] = 'Abrir';
$labels['showattachment'] = 'Mostrar';
$labels['showanyway'] = 'Mostrar na mesma';
-
$labels['filename'] = 'Ficheiro';
$labels['filesize'] = 'Tamanho';
-
$labels['addtoaddressbook'] = 'Adicionar à lista de contactos';
-
-// weekdays short
$labels['sun'] = 'Dom';
$labels['mon'] = 'Seg';
$labels['tue'] = 'Ter';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Qua';
$labels['thu'] = 'Qui';
$labels['fri'] = 'Sex';
$labels['sat'] = 'Sáb';
-
-// weekdays long
$labels['sunday'] = 'Domingo';
$labels['monday'] = 'Segunda-feira';
$labels['tuesday'] = 'Terça-feira';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Quarta-feira';
$labels['thursday'] = 'Quinta-feira';
$labels['friday'] = 'Sexta-feira';
$labels['saturday'] = 'Sábado';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Fev';
$labels['mar'] = 'Mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Set';
$labels['oct'] = 'Out';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dez';
-
-// months long
$labels['longjan'] = 'Janeiro';
$labels['longfeb'] = 'Fevereiro';
$labels['longmar'] = 'Março';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Setembro';
$labels['longoct'] = 'Outubro';
$labels['longnov'] = 'Novembro';
$labels['longdec'] = 'Dezembro';
-
$labels['today'] = 'Hoje';
-
-// toolbar buttons
$labels['refresh'] = 'Actualizar';
$labels['checkmail'] = 'Verificar existência de novas mensagens';
$labels['compose'] = 'Nova mensagem';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Mais acções...';
$labels['more'] = 'Mais';
$labels['back'] = 'Voltar';
$labels['options'] = 'Opções';
-
$labels['select'] = 'Seleccionar';
$labels['all'] = 'Todas';
$labels['none'] = 'Nenhum';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Expandir tudo';
$labels['expand-unread'] = 'Expandir não lidas';
$labels['collapse-all'] = 'Recolher tudo';
$labels['threaded'] = 'Agrupar tópicos';
-
$labels['autoexpand_threads'] = 'Expandir tópicos das mensagens';
$labels['do_expand'] = 'todos os tópicos';
$labels['expand_only_unread'] = 'só com mensagens não lidas';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Lista de colunas';
$labels['listsorting'] = 'Ordenar por';
$labels['listorder'] = 'Ordenação';
$labels['listmode'] = 'Modo de visualização';
-
$labels['folderactions'] = 'Acções para pastas...';
$labels['compact'] = 'Compactar';
$labels['empty'] = 'Esvaziar';
$labels['importmessages'] = 'Importar mensagens';
-
$labels['quota'] = 'Espaço utilizado';
$labels['unknown'] = 'desconhecido';
$labels['unlimited'] = 'ilimitado';
-
$labels['quicksearch'] = 'Pesquisa rápida';
$labels['resetsearch'] = 'Limpar pesquisa';
$labels['searchmod'] = 'Pesquisar em';
$labels['msgtext'] = 'Mensagem completa';
$labels['body'] = 'Corpo';
-$labels['type'] = 'Type';
-
+$labels['type'] = 'Tipo';
+$labels['namex'] = 'Nome';
$labels['openinextwin'] = 'Abrir numa nova janela';
$labels['emlsave'] = 'Guardar como (.eml)';
$labels['changeformattext'] = 'Mostrar em formato de texto simples';
$labels['changeformathtml'] = 'Mostrar em formato HTML';
-
-// message compose
$labels['editasnew'] = 'Editar como nova';
$labels['send'] = 'Enviar';
$labels['sendmessage'] = 'Enviar';
@@ -224,26 +192,32 @@ $labels['returnreceipt'] = 'Recibo de leitura';
$labels['dsn'] = 'Recibo de entrega';
$labels['mailreplyintro'] = 'Em $date, $sender escreveu:';
$labels['originalmessage'] = 'Mensagem Original';
-
$labels['editidents'] = 'Editar entidades';
$labels['spellcheck'] = 'Corrector Ortográfico';
$labels['checkspelling'] = 'Verificar ortografia';
$labels['resumeediting'] = 'Continuar a edição';
$labels['revertto'] = 'Reverter para';
-
+$labels['restore'] = 'Restaurar';
+$labels['restoremessage'] = 'Restaurar mensagem?';
+$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';
$labels['uploadprogress'] = '$percent ($current de $total)';
$labels['close'] = 'Fechar';
$labels['messageoptions'] = 'Opções de mensagens...';
-
$labels['low'] = 'Baixa';
$labels['lowest'] = 'Muito baixa';
$labels['normal'] = 'Normal';
$labels['high'] = 'Alta';
$labels['highest'] = 'Muito alta';
-
$labels['nosubject'] = '(sem assunto)';
$labels['showimages'] = 'Mostrar imagens';
$labels['alwaysshow'] = 'Mostrar sempre imagens a partir de $sender';
@@ -251,25 +225,19 @@ $labels['isdraft'] = 'Esta é uma mensagem de rascunho.';
$labels['andnmore'] = '$nr mais...';
$labels['togglemoreheaders'] = 'Mostrar cabeçalhos adicionais da mensagem';
$labels['togglefullheaders'] = 'Mostrar cabeçalho original da mensagem';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Texto simples';
$labels['savesentmessagein'] = 'Guardar mensagem enviada em';
$labels['dontsave'] = 'não guardar';
$labels['maxuploadsize'] = 'Tamanho máximo permitido do ficheiro é $size';
-
$labels['addcc'] = 'Adicionar Cc';
$labels['addbcc'] = 'Adicionar Bcc';
$labels['addreplyto'] = 'Adicionar Responder para';
$labels['addfollowupto'] = 'Adicionar Reencaminhar para';
-
-// mdn
$labels['mdnrequest'] = 'O remetente desta mensagem pediu para ser notificado quando esta mensagem fosse lida. Deseja enviar uma notificação?';
$labels['receiptread'] = 'Recibo de leitura';
$labels['yourmessage'] = 'Isto é um recibo de leitura da sua mensagem';
$labels['receiptnote'] = 'Nota: este recibo apenas indica que a mensagem foi aberta pelo destinatário. Não garante que a mensagem foi lida ou compreendida.';
-
-// address boook
$labels['name'] = 'Nome completo';
$labels['firstname'] = 'Primeiro nome';
$labels['surname'] = 'Apelido';
@@ -304,7 +272,6 @@ $labels['search'] = 'Pesquisar';
$labels['advsearch'] = 'Pesquisa avançada';
$labels['advanced'] = 'Pesquisa avançada';
$labels['other'] = 'Outro';
-
$labels['typehome'] = 'Residência';
$labels['typework'] = 'Empresa';
$labels['typeother'] = 'Outro';
@@ -319,14 +286,12 @@ $labels['typeassistant'] = 'Assistente';
$labels['typehomepage'] = 'Página Inicial';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Perfil';
-
$labels['addfield'] = 'Adicionar campo...';
$labels['addcontact'] = 'Criar novo contacto';
$labels['editcontact'] = 'Editar contacto';
$labels['contacts'] = 'Contactos';
$labels['contactproperties'] = 'Dados do contacto';
$labels['personalinfo'] = 'Informação pessoal';
-
$labels['edit'] = 'Editar';
$labels['cancel'] = 'Cancelar';
$labels['save'] = 'Guardar';
@@ -335,7 +300,6 @@ $labels['rename'] = 'Renomear';
$labels['addphoto'] = 'Adicionar';
$labels['replacephoto'] = 'Substituir';
$labels['uploadphoto'] = 'Carregar foto';
-
$labels['newcontact'] = 'Criar novo contacto';
$labels['deletecontact'] = 'Eliminar contacto(s) seleccionado(s)';
$labels['composeto'] = 'Nova mensagem para';
@@ -349,42 +313,36 @@ $labels['newcontactgroup'] = 'Criar novo grupo de contactos';
$labels['grouprename'] = 'Renomear grupo';
$labels['groupdelete'] = 'Eliminar grupo';
$labels['groupremoveselected'] = 'Remover o(s) contacto(s) seleccionado(s) do grupo';
-
$labels['previouspage'] = 'Página anterior';
$labels['firstpage'] = 'Primeira página';
$labels['nextpage'] = 'Página seguinte';
$labels['lastpage'] = 'Última página';
-
$labels['group'] = 'Grupo';
$labels['groups'] = 'Grupos';
$labels['listgroup'] = 'Lista de membros do grupo';
$labels['personaladrbook'] = 'Endereços pessoais';
-
$labels['searchsave'] = 'Guardar pesquisa';
$labels['searchdelete'] = 'Eliminar pesquisa';
-
$labels['import'] = 'Importar';
$labels['importcontacts'] = 'Importação de contactos';
$labels['importfromfile'] = 'Importar do ficheiro:';
-$labels['importtarget'] = 'Adicionar novo contacto ao livro de endereços:';
+$labels['importtarget'] = 'Adicionar contactos a';
$labels['importreplace'] = 'Substituir todo o livro de endereços.';
+$labels['importgroups'] = 'Importar atribuições de grupo';
+$labels['importgroupsall'] = 'Todos (criar grupos se necessário)';
+$labels['importgroupsexisting'] = 'Apenas para grupos existentes';
$labels['importdesc'] = 'Pode enviar/carregar contactos de um livro de endereços existente.<br/>Neste momento suportamos a importação nos seguintes formatos: <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> ou CSV (valores separados por vírgula).';
$labels['done'] = 'Terminado';
-
-// settings
$labels['settingsfor'] = 'Configurações para';
$labels['about'] = 'Acerca';
$labels['preferences'] = 'Preferências';
$labels['userpreferences'] = 'Preferências do utilizador';
$labels['editpreferences'] = 'Editar preferências do utilizador';
-
$labels['identities'] = 'Identidades';
$labels['manageidentities'] = 'Gerir identidades para esta conta';
$labels['newidentity'] = 'Nova identidade';
-
$labels['newitem'] = 'Novo item';
$labels['edititem'] = 'Editar item';
-
$labels['preferhtml'] = 'Mostrar mensagens em HTML';
$labels['defaultcharset'] = 'Conjunto de caracteres predefinido';
$labels['htmlmessage'] = 'Mensagem em HTML';
@@ -415,8 +373,8 @@ $labels['uisettings'] = 'Interface do utilizador';
$labels['serversettings'] = 'Definições do servidor';
$labels['mailboxview'] = 'Visualização da Caixa de Entrada';
$labels['mdnrequests'] = 'Enviar notificações';
-$labels['askuser'] = 'perguntar ao ultilizador';
-$labels['autosend'] = 'enviar automáticamente';
+$labels['askuser'] = 'perguntar ao utilizador';
+$labels['autosend'] = 'enviar automaticamente';
$labels['autosendknown'] = 'enviar recibo de leitura apenas para os meus contactos';
$labels['autosendknownignore'] = 'enviar recibo para os meus contactos, caso contrário, ignorar';
$labels['ignore'] = 'ignorar';
@@ -480,7 +438,9 @@ $labels['standardwindows'] = 'Lidar com popups como janelas padrão';
$labels['forwardmode'] = 'Reencaminhamento de mensagens';
$labels['inline'] = 'em linha';
$labels['asattachment'] = 'como anexo';
-
+$labels['replyallmode'] = 'Ação predefinida do botão [Responder a todos]';
+$labels['replyalldefault'] = 'responder a todos';
+$labels['replyalllist'] = 'responder só à lista de discussão (se identificada)';
$labels['folder'] = 'Pasta';
$labels['folders'] = 'Pastas';
$labels['foldername'] = 'Nome da pasta';
@@ -501,26 +461,20 @@ $labels['foldertype'] = 'Tipo de pasta';
$labels['personalfolder'] = 'Pasta privada';
$labels['otherfolder'] = 'Outro tipo de pasta';
$labels['sharedfolder'] = 'Pasta pública';
-
$labels['sortby'] = 'Ordenar por';
$labels['sortasc'] = 'Ordenação Ascendente';
$labels['sortdesc'] = 'Ordenação Descendente';
$labels['undo'] = 'Anular';
-
$labels['installedplugins'] = 'Plugins instalados';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Versão';
$labels['source'] = 'Fonte';
$labels['license'] = 'Licença';
$labels['support'] = 'Obter suporte';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Inglês';
$labels['westerneuropean'] = 'Europa Ocidental';
@@ -539,5 +493,4 @@ $labels['vietnamese'] = 'Vietnamita';
$labels['japanese'] = 'Japonês';
$labels['korean'] = 'Coreano';
$labels['chinese'] = 'Chinês';
-
?>
diff --git a/program/localization/pt_PT/messages.inc b/program/localization/pt_PT/messages.inc
index f0855096e..f1206b589 100644
--- a/program/localization/pt_PT/messages.inc
+++ b/program/localization/pt_PT/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Ocorreu um erro!';
$messages['loginfailed'] = 'O utilizador ou palavra-passe que introduziu não correspondem.';
$messages['cookiesdisabled'] = 'O seu navegador não suporta cookies';
@@ -46,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.';
@@ -56,8 +56,8 @@ $messages['contactnotfound'] = 'O contacto especificado não foi encontrado';
$messages['contactsearchonly'] = 'Insira os termos de pesquisa para localizar os contactos';
$messages['sendingfailed'] = 'Falha no envio da mensagem';
$messages['senttooquickly'] = 'Por favor espere $sec seg(s) antes de enviar esta mensagem';
-$messages['errorsavingsent'] = 'Ocorreu um erro ao guardar a mensagem enviada';
-$messages['errorsaving'] = 'Ocorreu um erro ao guardar';
+$messages['errorsavingsent'] = 'Ocorreu um erro ao gravar a mensagem enviada.';
+$messages['errorsaving'] = 'Ocorreu um erro ao gravar.';
$messages['errormoving'] = 'Não foi possível mover a mensagem';
$messages['errorcopying'] = 'Não foi possível copiar a mensagem';
$messages['errordeleting'] = 'Não foi possível eliminar a mensagem';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'Por favor, insira pelo menos um destinatário
$messages['nosubjectwarning'] = 'O campo "Assunto" não foi preenchido. Deseja incluí-lo agora?';
$messages['nobodywarning'] = 'Enviar a mensagem sem texto?';
$messages['notsentwarning'] = 'A mensagem não foi enviada, deseja apagá-la?';
+$messages['restoresavedcomposedata'] = 'Uma mensagem, anteriormente, composta mas não enviada foi encontrado.\n\nAssunto: $subject\nGuardada: $date\n\nDeseja restaurar esta mensagem?';
$messages['noldapserver'] = 'Seleccione um servidor LDAP para efectuar a pesquisa';
$messages['nosearchname'] = 'Por favor, insira o nome do contacto ou endereço de e-mail';
$messages['notuploadedwarning'] = 'Nem todos os anexos foram ainda enviados. Por favor aguarde ou cancele o envio.';
@@ -172,5 +173,4 @@ $messages['parentnotwritable'] = 'Não é possível criar/mover esta pasta para
$messages['messagetoobig'] = 'A mensagem é demasiado grande para ser processada.';
$messages['attachmentvalidationerror'] = 'ATENÇÃO! Este anexo é suspeito porque o seu tipo não coincide com o tipo declarado na mensagem. Se não confiar no remetente, não o deve abrir no navegador, pois pode ter conteúdos maliciosos.<br/><br/><em>Esperado: $expected; Encontrado: $detected</em>';
$messages['noscriptwarning'] = 'Aviso: Este serviço de webmail utiliza Javascript! Para o poder utilizar, active o Javascript nas definições do seu navegador.';
-
?>
diff --git a/program/localization/ro_RO/labels.inc b/program/localization/ro_RO/labels.inc
index c357aabeb..953cfe8da 100644
--- a/program/localization/ro_RO/labels.inc
+++ b/program/localization/ro_RO/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Bine aţi venit la $product';
$labels['username'] = 'Utilizator';
$labels['password'] = 'Parolă';
$labels['server'] = 'Server';
$labels['login'] = 'Autentificare';
-
-// taskbar
$labels['logout'] = 'Deconectare';
$labels['mail'] = 'E-Mail';
$labels['settings'] = 'Setări personale';
$labels['addressbook'] = 'Agendă';
-
-// mailbox names
$labels['inbox'] = 'Primite';
$labels['drafts'] = 'Ciorne';
$labels['sent'] = 'Trimise';
$labels['trash'] = 'Gunoi';
$labels['junk'] = 'Spam';
$labels['show_real_foldernames'] = 'Arata numele reale pentru folderele speciale';
-
-// message listing
$labels['subject'] = 'Subiect';
$labels['from'] = 'Expeditor';
$labels['sender'] = 'Expeditor';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Prioritate';
$labels['organization'] = 'Organizaţie';
$labels['readstatus'] = 'Citit/Necitit';
$labels['listoptions'] = 'Listează opţiunile...';
-
$labels['mailboxlist'] = 'Dosare';
$labels['messagesfromto'] = 'Mesaje de la $from până la $to din $count';
$labels['threadsfromto'] = 'Grupuri de la $from până la $to din $count';
$labels['messagenrof'] = 'Mesajul $nr din $count';
$labels['fromtoshort'] = '$from - $to din $count';
-
$labels['copy'] = 'Copiază';
$labels['move'] = 'Mută';
$labels['moveto'] = 'Mută in...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Descarcă';
$labels['open'] = 'Deschide';
$labels['showattachment'] = 'Arată';
$labels['showanyway'] = 'Arată oricum';
-
$labels['filename'] = 'Nume fiÅŸier';
$labels['filesize'] = 'Mărime fişier';
-
$labels['addtoaddressbook'] = 'Adaugă în agendă';
-
-// weekdays short
$labels['sun'] = 'Dum';
$labels['mon'] = 'Lun';
$labels['tue'] = 'Mar';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Mie';
$labels['thu'] = 'Joi';
$labels['fri'] = 'Vin';
$labels['sat'] = 'Sâm';
-
-// weekdays long
$labels['sunday'] = 'Duminică';
$labels['monday'] = 'Luni';
$labels['tuesday'] = 'Marţi';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Miercuri';
$labels['thursday'] = 'Joi';
$labels['friday'] = 'Vineri';
$labels['saturday'] = 'Sâmbătă';
-
-// months short
$labels['jan'] = 'Ian';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Oct';
$labels['nov'] = 'Noi';
$labels['dec'] = 'Dec';
-
-// months long
$labels['longjan'] = 'Ianuarie';
$labels['longfeb'] = 'Februarie';
$labels['longmar'] = 'Martie';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Septembrie';
$labels['longoct'] = 'Octombrie';
$labels['longnov'] = 'Noiembrie';
$labels['longdec'] = 'Decembrie';
-
$labels['today'] = 'Astăzi';
-
-// toolbar buttons
$labels['refresh'] = 'Actualizează';
$labels['checkmail'] = 'Verifică mesaje noi';
$labels['compose'] = 'Scrie un mesaj';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Mai multe acțiuni...';
$labels['more'] = 'Mai multe';
$labels['back'] = 'ÃŽnapoi';
$labels['options'] = 'Opţiuni';
-
$labels['select'] = 'Selectează';
$labels['all'] = 'Toate';
$labels['none'] = 'Niciunul';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Extinde toate';
$labels['expand-unread'] = 'Extinde necitite';
$labels['collapse-all'] = 'Compactează toate';
$labels['threaded'] = 'Grupate';
-
$labels['autoexpand_threads'] = 'Extinde mesajele grupate';
$labels['do_expand'] = 'toate grupările';
$labels['expand_only_unread'] = 'doar pe cele cu mesaje necitite';
@@ -190,16 +163,13 @@ $labels['listcolumns'] = 'Arată coloane';
$labels['listsorting'] = 'Sortează după';
$labels['listorder'] = 'Ordinea de sortare';
$labels['listmode'] = 'Mod de vizualizare';
-
$labels['folderactions'] = 'Acțiuni dosar...';
$labels['compact'] = 'Compactează';
$labels['empty'] = 'GoleÅŸte';
$labels['importmessages'] = 'Import mesaje';
-
$labels['quota'] = 'Spaţiu folosit';
$labels['unknown'] = 'necunoscut';
$labels['unlimited'] = 'nelimitat';
-
$labels['quicksearch'] = 'Căutare rapidă';
$labels['resetsearch'] = 'Anulează căutarea';
$labels['searchmod'] = 'Parametrii de căutare';
@@ -207,13 +177,10 @@ $labels['msgtext'] = 'Tot mesajul';
$labels['body'] = 'Corp';
$labels['type'] = 'Tip';
$labels['namex'] = 'Nume';
-
$labels['openinextwin'] = 'Deschide în fereastră nouă';
$labels['emlsave'] = 'Salvează în format .eml';
$labels['changeformattext'] = 'Afișează în format text';
$labels['changeformathtml'] = 'Afișează în format HTML';
-
-// message compose
$labels['editasnew'] = 'Editează ca nou';
$labels['send'] = 'Trimite';
$labels['sendmessage'] = 'Trimite mesaj';
@@ -225,26 +192,22 @@ $labels['returnreceipt'] = 'Returnează confirmare de primire';
$labels['dsn'] = 'Notificare despre starea trimiterii';
$labels['mailreplyintro'] = 'ÃŽn $date, $sender a scris:';
$labels['originalmessage'] = 'Mesaj original';
-
$labels['editidents'] = 'Editează identităţi';
$labels['spellcheck'] = 'Ortografie';
$labels['checkspelling'] = 'Verifică ortografie';
$labels['resumeediting'] = 'Reia editarea';
$labels['revertto'] = 'Revino la';
-
$labels['attach'] = 'Ataşează';
$labels['attachments'] = 'AtaÅŸamente';
$labels['upload'] = 'Încarcă';
$labels['uploadprogress'] = '$percent ($current din $total)';
$labels['close'] = 'ÃŽnchide';
$labels['messageoptions'] = 'Opţiuni mesaj...';
-
$labels['low'] = 'Mică';
$labels['lowest'] = 'Cea mai mică';
$labels['normal'] = 'Normală';
$labels['high'] = 'Mare';
$labels['highest'] = 'Cea mai mare';
-
$labels['nosubject'] = '(fără subiect)';
$labels['showimages'] = 'Afişează imagini';
$labels['alwaysshow'] = 'Afişează întotdeauna imaginile de la $sender';
@@ -252,25 +215,19 @@ $labels['isdraft'] = 'Acest mesaj este o ciornă.';
$labels['andnmore'] = '$nr mai multe...';
$labels['togglemoreheaders'] = 'Arată mai mult din antet';
$labels['togglefullheaders'] = 'Arată mai puțin din antet';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Text simplu';
$labels['savesentmessagein'] = 'Salvează mesajele trimise în';
$labels['dontsave'] = 'Nu salva';
$labels['maxuploadsize'] = 'Mărimea maxim admisă a fişierului este $size';
-
$labels['addcc'] = 'Adaugă CC';
$labels['addbcc'] = 'Adaugă BCC';
$labels['addreplyto'] = 'Adaugă Raspunde-La';
$labels['addfollowupto'] = 'Adaugă Followup-La';
-
-// mdn
$labels['mdnrequest'] = 'Expeditorul acestui mesaj a solicitat să fie notificat la cititrea mesajului. Doriţi să notificaţi expeditorul?';
$labels['receiptread'] = 'Returnează confirmare (citit)';
$labels['yourmessage'] = 'Aceasta este o confirmare de primire a mesajului dumneavoastră.';
$labels['receiptnote'] = 'Notă: Această confirmare doar vă informează că mesajul a fost afişat pe calculatorul destinatarului. Nu există nici o garanţie că destinatarul a citit sau a inţeles conţinutul mesajului.';
-
-// address boook
$labels['name'] = 'Numele Contact';
$labels['firstname'] = 'Nume';
$labels['surname'] = 'Prenume';
@@ -305,7 +262,6 @@ $labels['search'] = 'Căutare';
$labels['advsearch'] = 'Căutare avansată';
$labels['advanced'] = 'Avansat';
$labels['other'] = 'Altele';
-
$labels['typehome'] = 'Acasă';
$labels['typework'] = 'Serviciu';
$labels['typeother'] = 'Altele';
@@ -320,14 +276,12 @@ $labels['typeassistant'] = 'Asistent';
$labels['typehomepage'] = 'Pagină de pornire';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Adaugă câmp...';
$labels['addcontact'] = 'Adaugă contact nou';
$labels['editcontact'] = 'Modifică contact';
$labels['contacts'] = 'Contacte';
$labels['contactproperties'] = 'Proprietăţile contactului...';
$labels['personalinfo'] = 'Informații personale';
-
$labels['edit'] = 'Editează';
$labels['cancel'] = 'Renunţă';
$labels['save'] = 'Salvează';
@@ -336,7 +290,6 @@ $labels['rename'] = 'RedenumeÅŸte';
$labels['addphoto'] = 'Adaugă';
$labels['replacephoto'] = 'Înlocuiește';
$labels['uploadphoto'] = 'Încarcă imagine';
-
$labels['newcontact'] = 'Creează contact nou';
$labels['deletecontact'] = 'Åžterge contactul selectat';
$labels['composeto'] = 'Compune e-mail pentru';
@@ -350,20 +303,16 @@ $labels['newcontactgroup'] = 'Creează un nou grup de contacte';
$labels['grouprename'] = 'Redenumește grupul';
$labels['groupdelete'] = 'Șterge grupul';
$labels['groupremoveselected'] = 'Șterge contactele selectate din grup';
-
$labels['previouspage'] = 'Pagina anterioară';
$labels['firstpage'] = 'Prima pagină';
$labels['nextpage'] = 'Pagina următoare';
$labels['lastpage'] = 'Ultima pagină';
-
$labels['group'] = 'Grup';
$labels['groups'] = 'Grupuri';
$labels['listgroup'] = 'Lista membrii grupului';
$labels['personaladrbook'] = 'Adrese personale';
-
$labels['searchsave'] = 'Salvează căutarea';
$labels['searchdelete'] = 'Şterge căutarea';
-
$labels['import'] = 'Importă';
$labels['importcontacts'] = 'Importă contacte';
$labels['importfromfile'] = 'Importă din fişier:';
@@ -374,21 +323,16 @@ $labels['importgroupsall'] = 'Toate (creează grupurile dacă este necesar)';
$labels['importgroupsexisting'] = 'Doar pentru grupurile existente';
$labels['importdesc'] = 'Puteți încărca contacte dintr-o agendă existentă.<br/>Momentan este suportat importul în formatul <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> sau în formatul CSV (comma-separated).';
$labels['done'] = 'Finalizat';
-
-// settings
$labels['settingsfor'] = 'Setări pentru';
$labels['about'] = 'Despre';
$labels['preferences'] = 'Preferinţe';
$labels['userpreferences'] = 'Preferinţe utilizator';
$labels['editpreferences'] = 'Modifică preferinţe utilizator';
-
$labels['identities'] = 'Identităţi';
$labels['manageidentities'] = 'Administrează identităţi pentru acest cont';
$labels['newidentity'] = 'Identitate nouă';
-
$labels['newitem'] = 'Obiect nou';
$labels['edititem'] = 'Editează obiect';
-
$labels['preferhtml'] = 'Format HTML';
$labels['defaultcharset'] = 'Set implicit de caractere';
$labels['htmlmessage'] = 'Mesaj HTML';
@@ -484,7 +428,6 @@ $labels['standardwindows'] = 'Trateaza popupsurile ca ferestre standard';
$labels['forwardmode'] = 'Trimitere mai departe mesaj';
$labels['inline'] = 'într-e linii';
$labels['asattachment'] = 'ca atașament';
-
$labels['folder'] = 'Dosar';
$labels['folders'] = 'Dosare';
$labels['foldername'] = 'Nume dosar';
@@ -505,26 +448,20 @@ $labels['foldertype'] = 'Tip dosar';
$labels['personalfolder'] = 'Dosar privat';
$labels['otherfolder'] = 'Dosarul altui utilizator';
$labels['sharedfolder'] = 'Dosar public';
-
$labels['sortby'] = 'Sortează după';
$labels['sortasc'] = 'Sortează ascendent';
$labels['sortdesc'] = 'Sortează descendent';
$labels['undo'] = 'Anulaţi/Revocați';
-
$labels['installedplugins'] = 'Instalare module';
$labels['plugin'] = 'Plugin';
$labels['version'] = 'Versiune';
$labels['source'] = 'Sursă';
$labels['license'] = 'Licență';
$labels['support'] = 'Cere asistenţă';
-
-// units
$labels['B'] = 'O';
$labels['KB'] = 'KO';
$labels['MB'] = 'MO';
$labels['GB'] = 'GO';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Englezesc';
$labels['westerneuropean'] = 'Europa de Vest';
@@ -543,5 +480,4 @@ $labels['vietnamese'] = 'Vietnamez';
$labels['japanese'] = 'Japonez';
$labels['korean'] = 'Coreean';
$labels['chinese'] = 'Chinezesc';
-
?>
diff --git a/program/localization/ro_RO/messages.inc b/program/localization/ro_RO/messages.inc
index 96b9de593..fb555ad47 100644
--- a/program/localization/ro_RO/messages.inc
+++ b/program/localization/ro_RO/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'A avut loc o EROARE!';
$messages['loginfailed'] = 'Autentificare eşuată';
$messages['cookiesdisabled'] = 'Browserul dumneavoastră nu acceptă cookies';
@@ -25,13 +23,13 @@ $messages['storageerror'] = 'Conectarea la serverul IMAP a eÅŸuat';
$messages['servererror'] = 'Eroare de server!';
$messages['servererrormsg'] = 'Eroare Server: $msg';
$messages['dberror'] = 'Eroare bază de date!';
-$messages['requesttimedout'] = 'Timpul alocat cereri a expirat';
-$messages['errorreadonly'] = 'Nu se poate efectua operaţia. Dosarul este doar-citire.';
-$messages['errornoperm'] = 'Nu se poate efectua operaţia. Acces interzis.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
+$messages['requesttimedout'] = 'Timpul alocat cererii a expirat';
+$messages['errorreadonly'] = 'Nu se poate efectua operaţiunea. Dosarul este disponibil doar pentru citire.';
+$messages['errornoperm'] = 'Nu se poate efectua operaţiunea. Acces interzis.';
+$messages['erroroverquota'] = 'Nu se poate efectua operația. Nu există spațiu liber.';
+$messages['erroroverquotadelete'] = 'Nu există spațiu liber. Folosiți SHIFT+DEL pentru a șterge un mesaj.';
$messages['invalidrequest'] = 'Solicitare invalidă! Datele nu au fost salvate.';
-$messages['invalidhost'] = 'Hosname invalid';
+$messages['invalidhost'] = 'Nume server invalid.';
$messages['nomessagesfound'] = 'Nu a fost găsit nici un mesaj în această căsuţă poştală';
$messages['loggedout'] = 'Sesiune încheiată cu succes. La revedere!';
$messages['mailboxempty'] = 'Căsuţa poştală este goală';
@@ -40,34 +38,36 @@ $messages['loading'] = 'Se încarcă...';
$messages['uploading'] = 'Fişierul se încarcă...';
$messages['uploadingmany'] = 'ÃŽncarc fiÅŸierele...';
$messages['loadingdata'] = 'Se încarcă informaţiile...';
-$messages['checkingmail'] = 'Se caută mesaje noi...';
+$messages['checkingmail'] = 'Se verifică pentru mesaje noi...';
$messages['sendingmessage'] = 'Trimitere mesaj...';
$messages['messagesent'] = 'Mesajul a fost trimis cu succes!';
$messages['savingmessage'] = 'Salvare mesaj...';
$messages['messagesaved'] = 'Mesajul a fost salvat în Ciorne';
-$messages['successfullysaved'] = 'Salvarea s-a efectuat cu succes';
+$messages['successfullysaved'] = 'Salvat cu succes.';
+$messages['savingresponse'] = 'Se salvează textul pentru răspuns...';
+$messages['deleteresponseconfirm'] = 'Chiar vrei să ștergi acest text pentru răspuns?';
$messages['addedsuccessfully'] = 'Contactul a fost adăugat cu succes în agendă';
-$messages['contactexists'] = 'Mai există un contact cu această adresă de e-mail';
+$messages['contactexists'] = 'Un contact cu această adresă de e-mail există deja.';
$messages['contactnameexists'] = 'Există deja un contact cu acelaşi nume.';
$messages['blockedimages'] = 'Pentru a vă proteja intimitatea, imaginile externe au fost blocate.';
$messages['encryptedmessage'] = 'Acesta este un mesaj criptat şi nu poate fi afişat. Ne pare rău.';
$messages['nocontactsfound'] = 'Nu s-a găsit nici un contact';
$messages['contactnotfound'] = 'Contactul solicitat nu a fost găsit.';
-$messages['contactsearchonly'] = 'Introdu nişte termeni decăutare pentru a găsi contactele';
+$messages['contactsearchonly'] = 'Introdu nişte termeni de căutare pentru a găsi contactele';
$messages['sendingfailed'] = 'Nu s-a reuÅŸit trimiterea mesajului';
$messages['senttooquickly'] = 'Vă rugăm aşteptaţi $sec sec. înainte de a trimite acest mesaj';
-$messages['errorsavingsent'] = 'A intervenit o eroare în timp ce se efectua salvarea mesajului trimis';
-$messages['errorsaving'] = 'A intervenit o eroare în timp ce se efectua salvarea';
-$messages['errormoving'] = 'Mesajul(e) nu a(u) putut fi mutat(e)';
-$messages['errorcopying'] = 'Mesajul(e) nu a(u) putut fi copiat(e)';
-$messages['errordeleting'] = 'Mesajul(e) nu a(u) putut fi ÅŸters(e)';
-$messages['errormarking'] = 'Mesajul(e) nu a(u) putut fi marcat(e)';
-$messages['deletecontactconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi contactul(ele) selectate?';
-$messages['deletegroupconfirm'] = 'Chiar vrei să ştergi grupul selectat?';
-$messages['deletemessagesconfirm'] = 'Chiar doriţi să ştergeţi mesajele selectate ?';
+$messages['errorsavingsent'] = 'A intervenit o eroare în timp ce se efectua salvarea mesajului trimis.';
+$messages['errorsaving'] = 'A intervenit o eroare în timp ce se efectua salvarea.';
+$messages['errormoving'] = 'Nu am putut muta mesajul (mesajele).';
+$messages['errorcopying'] = 'Nu am putut copia mesajul (mesajele).';
+$messages['errordeleting'] = 'Nu am putut ÅŸterge mesajul (mesajele).';
+$messages['errormarking'] = 'Nu am putut marca mesajul (mesajele)';
+$messages['deletecontactconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi contactul/ele selectat(e)?';
+$messages['deletegroupconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi grupul selectat?';
+$messages['deletemessagesconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi mesajul (mesajele) selectate ?';
$messages['deletefolderconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi acest dosar?';
$messages['purgefolderconfirm'] = 'Sunteţi sigur că doriţi să ştergeţi toate mesajele din acest dosar?';
-$messages['contactdeleting'] = 'Åžterg contactul(ele)...';
+$messages['contactdeleting'] = 'Åžterg contactul (ele)...';
$messages['groupdeleting'] = 'Åžterg grupul...';
$messages['folderdeleting'] = 'Se ÅŸterge dosarul...';
$messages['foldermoving'] = 'Se mută dosarul...';
@@ -100,14 +100,17 @@ $messages['deletedsuccessfully'] = 'Mesaj ÅŸters cu succes !';
$messages['converting'] = 'Resetez mesajul la parametrii iniţiali...';
$messages['messageopenerror'] = 'Nu s-a putut încărca mesajul din server';
$messages['fileuploaderror'] = 'Încărcarea pe server a eşuat';
-$messages['filesizeerror'] = 'Fişierul încărcat depăşeşte mărimea de $size';
-$messages['copysuccess'] = '$nr adrese s-au copiat cu succes';
-$messages['copyerror'] = 'Nu s-a putut copia nicio adresă';
-$messages['sourceisreadonly'] = 'Sursa acestei adrese este "read-only"(se poate doar citi)';
+$messages['filesizeerror'] = 'Fişierul încărcat depăşeşte dimensiunea de $size';
+$messages['copysuccess'] = 'Am copiat cu succes $nr contacte.';
+$messages['movesuccess'] = 'Am mutat cu succes $nr contacte.';
+$messages['copyerror'] = 'Nu am putut copia nici un contact.';
+$messages['moveerror'] = 'Nu am putut muta nici un contact.';
+$messages['sourceisreadonly'] = 'Sursa acestei adrese este "read-only" (se poate doar citi)';
$messages['errorsavingcontact'] = 'Nu s-a putut salva adresa de contact';
$messages['movingmessage'] = 'Mutare mesaj....';
$messages['copyingmessage'] = 'Copiere mesaj...';
$messages['copyingcontact'] = 'Copiez contact(ele)...';
+$messages['movingcontact'] = 'Se muta contactul (contactele) ...';
$messages['deletingmessage'] = 'Åžterg mesaj(ele)...';
$messages['markingmessage'] = 'Marchez mesaj(ele)...';
$messages['addingmember'] = 'Adaug contact(ele) la grup...';
@@ -118,18 +121,20 @@ $messages['deleteidentityconfirm'] = 'Chiar vrei să ştergi aceasă identitate?
$messages['nodeletelastidentity'] = 'Nu puteţi şterge această identitate, este ultima.';
$messages['forbiddencharacter'] = 'Numele dosarului conţine un caracter nepermis.';
$messages['selectimportfile'] = 'Va rugăm să selectaţi fişierul pentru încărcare';
-$messages['addresswriterror'] = 'Agenda selectată nu poate fi actualizată';
+$messages['addresswriterror'] = 'Agenda selectată nu poate fi actualizată, aceasta fiind disponibila doar pentru citire.';
$messages['contactaddedtogroup'] = 'Contactele au fost adăugate cu succes la acest grup';
$messages['contactremovedfromgroup'] = 'Contactele au fost ÅŸterse cu succes din acest grup';
$messages['nogroupassignmentschanged'] = 'Atribuirile la grupuri nu au fost modificate.';
$messages['importwait'] = 'Datele sunt importate, vă rugăm să aşteptaţi...';
$messages['importformaterror'] = 'Importul a eșuat! Fișierul încărcat nu este un fișier valid pentru import de date.';
-$messages['importconfirm'] = 'Contactele $inserted au fost importate cu succes, $skipped intrări au fost ignorate deoarece ele există deja:$names';
+$messages['importconfirm'] = '<b>$inserted contacte au fost importate cu succes, $skipped intrări au fost ignorate deoarece ele există deja: $names</b>';
$messages['importconfirmskipped'] = '<b>Am sărit peste $skipped înregistrări</b>';
-$messages['opnotpermitted'] = 'Operaţia nu este permisă!';
+$messages['importmessagesuccess'] = 'Am importat cu succes $nr mesaje.';
+$messages['importmessageerror'] = 'Importarea a esuat. Fisierul incarca nu este un mesaj valid pentru email.';
+$messages['opnotpermitted'] = 'Operaţiunea nu este permisă!';
$messages['nofromaddress'] = 'Nu există o adresă de e-mail în identitatea selectată';
$messages['editorwarning'] = 'Trecerea în mod text a editorului va cauza pierderea formatării textului. Doriţi să continuaţi?';
-$messages['httpreceivedencrypterror'] = 'Vă rugăm să luaţi legătura cu administratorul serverului de mail, deoarece există o eroare în configuraţia acestuia. Mesajul d-voastră nu a fost trimis.';
+$messages['httpreceivedencrypterror'] = 'Vă rugăm să luaţi legătura cu administratorul serverului de mail, deoarece există o eroare în configuraţia acestuia. <b>Mesajul d-voastră nu a fost trimis.</b>';
$messages['smtpconnerror'] = 'Eroare SMTP ($code): Conexiunea cu serverul a eÅŸuat';
$messages['smtpautherror'] = 'Eroare SMTP ($code): Autentificare eşuată';
$messages['smtpfromerror'] = 'Eroare SMTP ($code): Nu s-a putut seta expeditorul "$from" ($msg)';
@@ -139,7 +144,7 @@ $messages['smtperror'] = 'Eroare SMTP: $msg';
$messages['emailformaterror'] = 'Adresă de e-mail incorectă: $email';
$messages['toomanyrecipients'] = 'Prea mulţi destinatari. Reduceţi numărul de destinatari la $max.';
$messages['maxgroupmembersreached'] = 'Numărul de membri ai grupului depăşeşte maximul de $max.';
-$messages['internalerror'] = 'A avut loc o eroare internă. Încearcă mai târziu.';
+$messages['internalerror'] = 'A avut loc o eroare internă. Te rog încearcă din nou.';
$messages['contactdelerror'] = 'Nu am putut ÅŸterge contact(ele).';
$messages['contactdeleted'] = 'Contact(ele) au fost ÅŸterse cu succes.';
$messages['contactrestoreerror'] = 'Nu am putut restaura contact(ele) ÅŸterse.';
@@ -148,13 +153,13 @@ $messages['groupdeleted'] = 'Grupul a fost ÅŸters cu succes.';
$messages['grouprenamed'] = 'Grupul a fost redenumit cu succes.';
$messages['groupcreated'] = 'Grupul a fost creat cu succes.';
$messages['savedsearchdeleted'] = 'Căutarea salvată a fost ştearsă cu succes.';
-$messages['savedsearchdeleteerror'] = 'Nu a putut şterge căutarea salvată.';
+$messages['savedsearchdeleteerror'] = 'Nu am putut şterge căutarea salvată.';
$messages['savedsearchcreated'] = 'Căutarea a fost salvată cu succes.';
$messages['savedsearchcreateerror'] = 'Nu am putut salva căutarea.';
-$messages['messagedeleted'] = 'Mesaj(ele) a(u) fost ÅŸters(e) cu succes.';
-$messages['messagemoved'] = 'Mesaj(ele) a(u) fost mutat(e) cu succes.';
-$messages['messagecopied'] = 'Mesaj(ele) a(u) fost copiat(e) cu succes.';
-$messages['messagemarked'] = 'Mesaj(ele) a(u) fost marcat(e) cu succes.';
+$messages['messagedeleted'] = 'Mesajul (ele) a (u) fost ÅŸters (e) cu succes.';
+$messages['messagemoved'] = 'Mesajul (ele) a (u) fost mutat (e) cu succes.';
+$messages['messagecopied'] = 'Mesajul (ele) a (u) fost copiat (e) cu succes.';
+$messages['messagemarked'] = 'Mesajul (ele) a (u) fost marcat (e) cu succes.';
$messages['autocompletechars'] = 'Introdu măcar $min caractere pentru autocompletare.';
$messages['autocompletemore'] = 'Au fost găsite mai multe înregistrări. Introdu mai multe caractere.';
$messages['namecannotbeempty'] = '"Nume" nu poate fi gol.';
@@ -166,6 +171,5 @@ $messages['mispellingsfound'] = 'Au fost găsite greşeli de ortografie în mesa
$messages['parentnotwritable'] = 'Nu pot crea/muta dosarul în dosarul părinte selectat. Fără drepturi de acces.';
$messages['messagetoobig'] = 'Partea de mesaj este prea mare pentru a o procesa.';
$messages['attachmentvalidationerror'] = 'ATENȚIE! Acest atașament este suspect, fiindcă tipul lui nu coincide cu tipul declarat în mesaj. Dacă nu aveți încredere în expeditor, nu vă recomandăm să deschideți fișierul, fiindcă poate avea conținut malițios. <br/><br/><em>Așteptat: $expected; găsit: $detected</em>';
-$messages['noscriptwarning'] = 'Atenție: Serviciul de webmail necesită Javascript! Pentru al utiliza vă rugăm activați Javascript în navigator.';
-
+$messages['noscriptwarning'] = 'Atenție: Serviciul de webmail necesită Javascript! Pentru a-l utiliza vă rugăm activați Javascript în setările browserului.';
?>
diff --git a/program/localization/ru_RU/labels.inc b/program/localization/ru_RU/labels.inc
index 6b2b4ebca..aa83eb9df 100644
--- a/program/localization/ru_RU/labels.inc
+++ b/program/localization/ru_RU/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Добро пожаловать в $product!';
$labels['username'] = 'Ð˜Ð¼Ñ Ð¿Ð¾Ð»ÑŒÐ·Ð¾Ð²Ð°Ñ‚ÐµÐ»Ñ';
$labels['password'] = 'Пароль';
$labels['server'] = 'Сервер';
$labels['login'] = 'Войти';
-
-// taskbar
$labels['logout'] = 'Выход';
$labels['mail'] = 'Почта';
$labels['settings'] = 'ÐаÑтройки';
$labels['addressbook'] = 'Контакты';
-
-// mailbox names
$labels['inbox'] = 'ВходÑщие';
$labels['drafts'] = 'Черновики';
$labels['sent'] = 'Отправленные';
$labels['trash'] = 'Корзина';
$labels['junk'] = 'СПÐÐœ';
$labels['show_real_foldernames'] = 'Показывать наÑтоÑщие Ð½Ð°Ð·Ð²Ð°Ð½Ð¸Ñ Ñпециальных папок';
-
-// message listing
$labels['subject'] = 'Тема';
$labels['from'] = 'От';
$labels['sender'] = 'Отправитель';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Приоритет';
$labels['organization'] = 'ОрганизациÑ';
$labels['readstatus'] = 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¾Ñ‡Ñ‚ÐµÐ½Ð¸Ñ';
$labels['listoptions'] = 'ÐаÑтройки ÑпиÑка...';
-
$labels['mailboxlist'] = 'Папки';
$labels['messagesfromto'] = 'Ð¡Ð¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñ $from по $to из $count';
$labels['threadsfromto'] = 'ОбÑÑƒÐ¶Ð´ÐµÐ½Ð¸Ñ Ñ $from по $to из $count';
$labels['messagenrof'] = 'Сообщение $nr из $count';
$labels['fromtoshort'] = '$from – $to из $count';
-
$labels['copy'] = 'Копировать';
$labels['move'] = 'ПеремеÑтить';
$labels['moveto'] = 'ПеремеÑтить в...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Загрузить';
$labels['open'] = 'Открыть';
$labels['showattachment'] = 'Показать';
$labels['showanyway'] = 'Ð’Ñе равно показать';
-
$labels['filename'] = 'Ð˜Ð¼Ñ Ñ„Ð°Ð¹Ð»Ð°';
$labels['filesize'] = 'Размер файла';
-
$labels['addtoaddressbook'] = 'Добавить в контакты';
-
-// weekdays short
$labels['sun'] = 'Ð’Ñ';
$labels['mon'] = 'Пн';
$labels['tue'] = 'Ð’Ñ‚';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Ср';
$labels['thu'] = 'Чт';
$labels['fri'] = 'Пт';
$labels['sat'] = 'Сб';
-
-// weekdays long
$labels['sunday'] = 'ВоÑкреÑенье';
$labels['monday'] = 'Понедельник';
$labels['tuesday'] = 'Вторник';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Среда';
$labels['thursday'] = 'Четверг';
$labels['friday'] = 'ПÑтница';
$labels['saturday'] = 'Суббота';
-
-// months short
$labels['jan'] = 'Янв';
$labels['feb'] = 'Фев';
$labels['mar'] = 'Мар';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Сен';
$labels['oct'] = 'Окт';
$labels['nov'] = 'ÐоÑ';
$labels['dec'] = 'Дек';
-
-// months long
$labels['longjan'] = 'Январь';
$labels['longfeb'] = 'Февраль';
$labels['longmar'] = 'Март';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'СентÑбрь';
$labels['longoct'] = 'ОктÑбрь';
$labels['longnov'] = 'ÐоÑбрь';
$labels['longdec'] = 'Декабрь';
-
$labels['today'] = 'СегоднÑ';
-
-// toolbar buttons
$labels['refresh'] = 'Обновить';
$labels['checkmail'] = 'ДоÑтавить почту';
$labels['compose'] = 'ÐапиÑать Ñообщение';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Дополнительные дейÑтвиÑ...'
$labels['more'] = 'Еще';
$labels['back'] = 'Ðазад';
$labels['options'] = 'Параметры';
-
$labels['select'] = 'Выбрать';
$labels['all'] = 'Ð’Ñе';
$labels['none'] = 'ОтÑутÑтвует';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Развернуть вÑе';
$labels['expand-unread'] = 'Развернуть непрочитанные';
$labels['collapse-all'] = 'Свернуть вÑе';
$labels['threaded'] = 'ОбÑуждениÑ';
-
$labels['autoexpand_threads'] = 'Развернуть обÑуждениÑ';
$labels['do_expand'] = 'вÑе обÑуждениÑ';
$labels['expand_only_unread'] = 'только Ñ Ð½ÐµÐ¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ‹Ð¼Ð¸ ÑообщениÑми';
@@ -190,16 +163,13 @@ $labels['listcolumns'] = 'Колонки';
$labels['listsorting'] = 'Сортировать по';
$labels['listorder'] = 'ПорÑдок Ñортировки';
$labels['listmode'] = 'Режим проÑмотра';
-
$labels['folderactions'] = 'Операции над папкой...';
$labels['compact'] = 'Сжать';
$labels['empty'] = 'ОпуÑтошить';
$labels['importmessages'] = 'Импорт Ñообщений';
-
$labels['quota'] = 'Квота';
$labels['unknown'] = 'неизвеÑтно';
$labels['unlimited'] = 'без ограничений';
-
$labels['quicksearch'] = 'БыÑтрый поиÑк';
$labels['resetsearch'] = 'СброÑ';
$labels['searchmod'] = 'Варианты поиÑка';
@@ -207,13 +177,10 @@ $labels['msgtext'] = 'Ð’ÑÑ‘ Ñообщение';
$labels['body'] = 'Тело пиÑьма';
$labels['type'] = 'Тип';
$labels['namex'] = 'ИмÑ';
-
$labels['openinextwin'] = 'Открыть в новом окне';
$labels['emlsave'] = 'Сохранить (.eml)';
$labels['changeformattext'] = 'Показать в формате обычного текÑта';
$labels['changeformathtml'] = 'Показать в HTML формате';
-
-// message compose
$labels['editasnew'] = 'Редактировать как новое';
$labels['send'] = 'Отправить';
$labels['sendmessage'] = 'Отправить ÑейчаÑ';
@@ -225,26 +192,32 @@ $labels['returnreceipt'] = 'Ð—Ð°Ð¿Ñ€Ð¾Ñ Ð¾Ñ‚Ð²ÐµÑ‚Ð°';
$labels['dsn'] = 'Уведомление о ÑоÑтоÑнии доÑтавки';
$labels['mailreplyintro'] = '$sender пиÑал $date:';
$labels['originalmessage'] = 'ИÑходное Ñообщение';
-
$labels['editidents'] = 'Изменить данные';
$labels['spellcheck'] = 'ОрфографиÑ';
$labels['checkspelling'] = 'Проверить орфографию';
$labels['resumeediting'] = 'Продолжить редактирование';
$labels['revertto'] = 'Отменить правки';
-
+$labels['restore'] = 'ВоÑÑтановить';
+$labels['restoremessage'] = 'ВоÑÑтановить Ñообщение?';
+$labels['responses'] = 'Ответы';
+$labels['insertresponse'] = 'Ð’Ñтавить ответ';
+$labels['manageresponses'] = 'Управление ответами';
+$labels['savenewresponse'] = 'Сохранить новый ответ';
+$labels['editresponses'] = 'Редактировать ответы';
+$labels['editresponse'] = 'Редактировать ответ';
+$labels['responsename'] = 'Ðазвание';
+$labels['responsetext'] = 'ТекÑта ответа';
$labels['attach'] = 'Вложить';
$labels['attachments'] = 'ВложениÑ';
$labels['upload'] = 'Загрузить';
$labels['uploadprogress'] = '$percent ($current из $total)';
$labels['close'] = 'Закрыть';
$labels['messageoptions'] = 'ÐаÑтройки Ñообщений...';
-
$labels['low'] = 'Ðизкий';
$labels['lowest'] = 'Ðизший';
$labels['normal'] = 'Ðорм.';
$labels['high'] = 'Ð’Ñ‹Ñокий';
$labels['highest'] = 'Ð’Ñ‹Ñоч.';
-
$labels['nosubject'] = '(без темы)';
$labels['showimages'] = 'Показать изображениÑ';
$labels['alwaysshow'] = 'Ð’Ñегда показывать изображениÑв пиÑьмах от $sender';
@@ -252,25 +225,19 @@ $labels['isdraft'] = 'Это черновик.';
$labels['andnmore'] = 'ещё $nr...';
$labels['togglemoreheaders'] = 'Загрузить ещё заголовки Ñообщений';
$labels['togglefullheaders'] = 'Показать оригинальные заголовки ÑообщениÑ';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'ТекÑÑ‚';
$labels['savesentmessagein'] = 'Сохранить в';
$labels['dontsave'] = 'не ÑохранÑÑ‚ÑŒ';
$labels['maxuploadsize'] = 'МакÑимальный размер файла $size';
-
$labels['addcc'] = 'КопиÑ';
$labels['addbcc'] = 'Ð¡ÐºÑ€Ñ‹Ñ‚Ð°Ñ ÐºÐ¾Ð¿Ð¸Ñ';
$labels['addreplyto'] = 'Кому ответить';
$labels['addfollowupto'] = 'Добавить Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Отправитель Ñтого ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ð·Ð°Ð¿Ñ€Ð¾Ñил уведомление о прочтении. Отправить уведомление?';
$labels['receiptread'] = 'Уведомление о прочтении';
$labels['yourmessage'] = 'Это уведомление о прочтении вашего ÑообщениÑ';
$labels['receiptnote'] = 'Это уведомление означает только, что Ñообщение было открыто получателем, и не гарантирует того, что оно было прочитано и (или) понÑто.';
-
-// address boook
$labels['name'] = 'Отображаемое имÑ';
$labels['firstname'] = 'ИмÑ';
$labels['surname'] = 'ФамилиÑ';
@@ -305,7 +272,6 @@ $labels['search'] = 'ПоиÑк';
$labels['advsearch'] = 'РаÑширенный поиÑк';
$labels['advanced'] = 'Дополнительно';
$labels['other'] = 'Другое';
-
$labels['typehome'] = 'Дом';
$labels['typework'] = 'Работа';
$labels['typeother'] = 'Другое';
@@ -320,14 +286,12 @@ $labels['typeassistant'] = 'Помощник';
$labels['typehomepage'] = 'ДомашнÑÑ Ñтраница';
$labels['typeblog'] = 'Блог';
$labels['typeprofile'] = 'Профиль';
-
$labels['addfield'] = 'Добавить поле...';
$labels['addcontact'] = 'Добавить новый контакт';
$labels['editcontact'] = 'Редактировать контакт';
$labels['contacts'] = 'Контакты';
$labels['contactproperties'] = 'СвойÑтва контакта';
$labels['personalinfo'] = 'Ð›Ð¸Ñ‡Ð½Ð°Ñ Ð¸Ð½Ñ„Ð¾Ñ€Ð¼Ð°Ñ†Ð¸Ñ';
-
$labels['edit'] = 'Правка';
$labels['cancel'] = 'Отмена';
$labels['save'] = 'Сохранить';
@@ -336,7 +300,6 @@ $labels['rename'] = 'Переименовать';
$labels['addphoto'] = 'Добавить';
$labels['replacephoto'] = 'Заменить';
$labels['uploadphoto'] = 'Загрузить фотографию';
-
$labels['newcontact'] = 'Создать новый контакт';
$labels['deletecontact'] = 'Удалить выбранные контакты';
$labels['composeto'] = 'Создать Ñообщение Ð´Ð»Ñ Ð²Ñ‹Ð±Ñ€Ð°Ð½Ð½Ñ‹Ñ… контактов';
@@ -350,42 +313,36 @@ $labels['newcontactgroup'] = 'Создать группу контактов';
$labels['grouprename'] = 'Переименовать группу';
$labels['groupdelete'] = 'Удалить группу';
$labels['groupremoveselected'] = 'Удалить выбранные контакты из группы';
-
$labels['previouspage'] = 'Показать предыдущую Ñтраницу';
$labels['firstpage'] = 'Показать первую Ñтраницу';
$labels['nextpage'] = 'Показать Ñледующую Ñтраницу';
$labels['lastpage'] = 'Показать поÑледнюю Ñтраницу';
-
$labels['group'] = 'Группа';
$labels['groups'] = 'Группы';
$labels['listgroup'] = 'СпиÑок членов группы';
$labels['personaladrbook'] = 'ПерÑональные адреÑа';
-
$labels['searchsave'] = 'Сохранить запроÑ';
$labels['searchdelete'] = 'Удалить запроÑ';
-
$labels['import'] = 'Импортировать';
$labels['importcontacts'] = 'Импортировать контакты';
$labels['importfromfile'] = 'Импортировать из файла:';
-$labels['importtarget'] = 'Добавить новые контакты в адреÑную книгу:';
+$labels['importtarget'] = 'Добавить контакты в';
$labels['importreplace'] = 'Заменить вÑÑŽ адреÑную книгу';
+$labels['importgroups'] = 'РаÑпределение по группам при импорте.';
+$labels['importgroupsall'] = 'Ð’Ñе (Ñоздать группы при необходимоÑти)';
+$labels['importgroupsexisting'] = 'Только Ð´Ð»Ñ ÑущеÑтвующих групп';
$labels['importdesc'] = 'Ð’Ñ‹ можете загрузить контакты из ÑущеÑтвующей адреÑной книги. <br/>Ð’ наÑтоÑщее Ð²Ñ€ÐµÐ¼Ñ Ð¼Ñ‹ поддерживаем импорт адреÑов в формате визитной карточки <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> или CSV (данные разделённые запÑтой).';
$labels['done'] = 'Завершено';
-
-// settings
$labels['settingsfor'] = 'ÐаÑтройки длÑ';
$labels['about'] = 'О программе';
$labels['preferences'] = 'ÐаÑтройки';
$labels['userpreferences'] = 'ÐаÑтройки пользователÑ';
$labels['editpreferences'] = 'Редактировать наÑтройки пользователÑ';
-
$labels['identities'] = 'Профили';
$labels['manageidentities'] = 'Управление профилÑми';
$labels['newidentity'] = 'Ðовый профиль';
-
$labels['newitem'] = 'Ðовый';
$labels['edititem'] = 'Правка';
-
$labels['preferhtml'] = 'Предпочитать HTML';
$labels['defaultcharset'] = 'Ðабор Ñимволов по-умолчанию';
$labels['htmlmessage'] = 'Сообщение HTML';
@@ -481,7 +438,9 @@ $labels['standardwindows'] = 'Обрабатывать вÑплывающие о
$labels['forwardmode'] = 'ПереÑылка Ñообщений';
$labels['inline'] = 'в текÑте';
$labels['asattachment'] = 'как вложение';
-
+$labels['replyallmode'] = 'ДейÑтвие по умолчанию кнопки [Ответить вÑем]';
+$labels['replyalldefault'] = 'ответить вÑем';
+$labels['replyalllist'] = 'ответить только в ÑпиÑок раÑÑылки (еÑли найден)';
$labels['folder'] = 'Папка';
$labels['folders'] = 'Папки';
$labels['foldername'] = 'Ð˜Ð¼Ñ Ð¿Ð°Ð¿ÐºÐ¸';
@@ -502,26 +461,20 @@ $labels['foldertype'] = 'Тип каталога';
$labels['personalfolder'] = 'Приватный каталог';
$labels['otherfolder'] = 'Каталог другого пользователÑ';
$labels['sharedfolder'] = 'СовмеÑтный каталог';
-
$labels['sortby'] = 'Сортировать по';
$labels['sortasc'] = 'ВозраÑтанию';
$labels['sortdesc'] = 'Убыванию';
$labels['undo'] = 'Отмена';
-
$labels['installedplugins'] = 'УÑтановленные дополнениÑ';
$labels['plugin'] = 'Дополнение';
$labels['version'] = 'ВерÑиÑ';
$labels['source'] = 'ИÑточник';
$labels['license'] = 'ЛицензиÑ';
$labels['support'] = 'Поддержка';
-
-// units
$labels['B'] = 'Б';
$labels['KB'] = 'КБ';
$labels['MB'] = 'МБ';
$labels['GB'] = 'ГБ';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'ÐнглийÑкий';
$labels['westerneuropean'] = 'ЗападноевропейÑкий';
@@ -540,5 +493,4 @@ $labels['vietnamese'] = 'ВьетнамÑкий';
$labels['japanese'] = 'ЯпонÑкий';
$labels['korean'] = 'КорейÑкий';
$labels['chinese'] = 'КитайÑкий';
-
?>
diff --git a/program/localization/ru_RU/messages.inc b/program/localization/ru_RU/messages.inc
index e7dd36298..6d679f699 100644
--- a/program/localization/ru_RU/messages.inc
+++ b/program/localization/ru_RU/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Произошла ошибка!';
$messages['loginfailed'] = 'ÐÐµÑƒÐ´Ð°Ñ‡Ð½Ð°Ñ Ð¿Ð¾Ð¿Ñ‹Ñ‚ÐºÐ° входа.';
$messages['cookiesdisabled'] = 'Ваш браузер не принимает cookie.';
@@ -46,6 +44,8 @@ $messages['messagesent'] = 'Сообщение отправлено.';
$messages['savingmessage'] = 'Сохранение ÑообщениÑ...';
$messages['messagesaved'] = 'Сохранено в Черновиках.';
$messages['successfullysaved'] = 'Сохранено.';
+$messages['savingresponse'] = 'Сохранение текÑта ответа...';
+$messages['deleteresponseconfirm'] = 'Ð’Ñ‹ дейÑтвительно хотите удалить Ñтот текÑÑ‚ ответа?';
$messages['addedsuccessfully'] = 'Контакт добавлен в адреÑную книгу.';
$messages['contactexists'] = 'Контакт Ñ Ñтим адреÑом e-mail уже ÑущеÑтвует.';
$messages['contactnameexists'] = 'Контакт Ñ Ñ‚Ð°ÐºÐ¸Ð¼ именем уже ÑущеÑтвует.';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'ПожалуйÑта, введите хотÑ
$messages['nosubjectwarning'] = 'Поле Тема не заполнено. Хотите заполнить его ÑейчаÑ?';
$messages['nobodywarning'] = 'Отправить Ñообщение без текÑта?';
$messages['notsentwarning'] = 'Сообщение не было отправлено. Ð’Ñ‹ хотите отказатьÑÑ Ð¾Ñ‚ отправки?';
+$messages['restoresavedcomposedata'] = 'Ðайдено ранее ÑоÑтавленное, но неотправленное Ñообщение.\n\nТема: $subject\nСохранено: $date\n\nХотите воÑÑтановить Ñто Ñообщение?';
$messages['noldapserver'] = 'ПожалуйÑта, выберите LDAP Ñервер Ð´Ð»Ñ Ð¿Ð¾Ð¸Ñка.';
$messages['nosearchname'] = 'ПожалуйÑта, введите Ð¸Ð¼Ñ Ð¸Ð»Ð¸ Ð°Ð´Ñ€ÐµÑ E-Mail';
$messages['notuploadedwarning'] = 'Ð’Ð»Ð¾Ð¶ÐµÐ½Ð¸Ñ Ð·Ð°Ð³Ñ€ÑƒÐ¶ÐµÐ½Ñ‹ не полноÑтью. Подождите или отмените загрузку.';
@@ -172,5 +173,4 @@ $messages['parentnotwritable'] = 'Ðе удаетÑÑ Ñоздать/перемÐ
$messages['messagetoobig'] = 'ЧаÑÑ‚ÑŒ ÑÐ¾Ð¾Ð±Ñ‰ÐµÐ½Ð¸Ñ Ñлишком велика Ð´Ð»Ñ Ð¾Ð±Ñ€Ð°Ð±Ð¾Ñ‚ÐºÐ¸.';
$messages['attachmentvalidationerror'] = 'Ð’ÐИМÐÐИЕ! Это вложение ÑвлÑетÑÑ Ð¿Ð¾Ð´Ð¾Ð·Ñ€Ð¸Ñ‚ÐµÐ»ÑŒÐ½Ñ‹Ð¼, потому что его тип не Ñовпадает Ñ Ñ‚Ð¸Ð¿Ð¾Ð¼, объÑвленным в Ñообщении. ЕÑли Ð’Ñ‹ не доверÑете отправителю, не открывайте его в браузере, поÑкольку оно может заключать в Ñебе вредоноÑное Ñодержимое.<br/><br/><em>Expected: $expected; found: $detected</em>';
$messages['noscriptwarning'] = 'Внимание: Данному ÑервиÑу веб-почты требуетÑÑ Javascript! Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾, чтобы его иÑпользовать необходимо включить поддержку Javascript в наÑтройках вашего браузера.';
-
?>
diff --git a/program/localization/si_LK/labels.inc b/program/localization/si_LK/labels.inc
index 92d33d3b7..9baa37028 100644
--- a/program/localization/si_LK/labels.inc
+++ b/program/localization/si_LK/labels.inc
@@ -15,66 +15,40 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = '$product වෙත පිළිගනිමු';
$labels['username'] = 'පරිà·à·“ලක නà·à¶¸à¶º';
$labels['password'] = 'මුරපදය';
$labels['server'] = 'පද්ධතිය';
$labels['login'] = 'පිවිසුම';
-
-// taskbar
$labels['logout'] = 'පිටවීම';
$labels['mail'] = 'විද්â€à¶ºà·”ත් තà·à¶´à·à¶½';
$labels['settings'] = 'à·ƒà·à¶šà·ƒà·”ම්';
$labels['addressbook'] = 'ලිපින පොත';
-
-// mailbox names
$labels['inbox'] = 'Inbox';
$labels['drafts'] = 'කටු සටහන්';
$labels['sent'] = 'යà·à·€à·–';
$labels['trash'] = 'ඉවතලන බඳුන';
$labels['junk'] = 'සුන්බුන්';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'මà·à¶­à·˜à¶šà·à·€';
$labels['from'] = 'වෙතින්';
-$labels['sender'] = 'Sender';
$labels['to'] = 'වෙත';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'පිළිතුරු සඳහà·';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'දිනය';
$labels['size'] = 'ප්â€à¶»à¶¸à·à¶«à¶º';
$labels['priority'] = 'ප්â€à¶»à¶¸à·”ඛත්වය';
$labels['organization'] = 'සංවිධà·à¶±à¶º';
-$labels['readstatus'] = 'Read status';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'බහà·à¶½à·”ම්';
$labels['messagesfromto'] = '$from වෙතින් $to වෙත පණිවිඩ $count';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = 'පණිවිඩ $count න් $nr';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'පිටපත් කරන්න';
$labels['move'] = 'ගෙනයන්න';
$labels['moveto'] = 'ගෙන යන්න...';
$labels['download'] = 'බà·à¶œà¶­ කරන්න';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'ගොනුවේ නම';
$labels['filesize'] = 'ගොනුවේ ප්â€à¶»à¶¸à·à¶«à¶º';
-
$labels['addtoaddressbook'] = 'ලිපින පොතට එක් කරන්න';
-
-// weekdays short
$labels['sun'] = 'ඉ';
$labels['mon'] = 'à·ƒ';
$labels['tue'] = 'අ';
@@ -82,8 +56,6 @@ $labels['wed'] = 'බ';
$labels['thu'] = 'බ්â€à¶»';
$labels['fri'] = 'සි';
$labels['sat'] = 'සෙ';
-
-// weekdays long
$labels['sunday'] = 'ඉරිදà·';
$labels['monday'] = 'සඳුදà·';
$labels['tuesday'] = 'අඟහරුවà·à¶¯à·';
@@ -91,8 +63,6 @@ $labels['wednesday'] = 'බදà·à¶¯à·';
$labels['thursday'] = 'බ්â€à¶»à·„ස්පතින්දà·';
$labels['friday'] = 'සිකුරà·à¶¯à·';
$labels['saturday'] = 'සෙනසුරà·à¶¯à·';
-
-// months short
$labels['jan'] = 'ජන';
$labels['feb'] = 'පෙබ';
$labels['mar'] = 'මà·à¶»à·Š';
@@ -105,8 +75,6 @@ $labels['sep'] = 'à·ƒà·à¶´à·Š';
$labels['oct'] = 'ඔක්';
$labels['nov'] = 'නොවà·';
$labels['dec'] = 'දෙසà·';
-
-// months long
$labels['longjan'] = 'ජනවà·à¶»à·’';
$labels['longfeb'] = 'පෙබරවà·à¶»à·’';
$labels['longmar'] = 'මà·à¶»à·Šà¶­à·”';
@@ -119,22 +87,14 @@ $labels['longsep'] = 'à·ƒà·à¶´à·Šà¶­à·à¶¸à·Šà¶¶à¶»à·Š';
$labels['longoct'] = 'ඔක්තà·à¶¸à·Šà¶¶à¶»à·Š';
$labels['longnov'] = 'නොවà·à¶¸à·Šà¶¶à¶»à·Š';
$labels['longdec'] = 'දෙසà·à¶¸à·Šà¶¶à¶»à·Š';
-
$labels['today'] = 'අද';
-
-// toolbar buttons
-$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'අඵත් පණිවිඩ සඳහ෠පිරික්සීම';
$labels['compose'] = 'පණිවිඩයක් සෑදීම';
$labels['writenewmessage'] = 'අඵත් පණිවිඩයක්';
$labels['reply'] = 'පිළිතුරු දෙන්න';
$labels['replytomessage'] = 'පණිවිඩයට පිළිතුරු';
$labels['replytoallmessage'] = 'එවන්නà·à¶§ සහ à·ƒà·à¶¸à¶§ පිළිතුරු';
-$labels['replyall'] = 'Reply all';
-$labels['replylist'] = 'Reply list';
$labels['forward'] = 'ඉදිරියට';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'පණිවිඩය ඉදිරියට';
$labels['deletemessage'] = 'පණිවිඩය මකන්න';
$labels['movemessagetotrash'] = 'පණිවිඩය ලටපට වෙත ගෙන යන්න';
@@ -149,144 +109,76 @@ $labels['mark'] = 'සලකුණු කරන්න';
$labels['markmessages'] = 'පණිවිඩ සලකුණු කරන්න';
$labels['markread'] = 'කියවු ලෙස';
$labels['markunread'] = 'නොකියවු ලෙස';
-$labels['markflagged'] = 'As flagged';
-$labels['markunflagged'] = 'As unflagged';
$labels['moreactions'] = 'තවත් ක්â€à¶»à·’යà·...';
$labels['more'] = 'තවත්';
$labels['back'] = 'ආපසු';
$labels['options'] = 'විකල්ප';
-
$labels['select'] = 'තà·à¶»à¶±à·Šà¶±';
$labels['all'] = 'සියල්ල';
$labels['none'] = 'කිසිවක් නà·à¶­';
$labels['currpage'] = 'දà·à¶±à¶§ ඇති පිටුව';
$labels['unread'] = 'නොකියවූ';
-$labels['flagged'] = 'Flagged';
-$labels['unanswered'] = 'Unanswered';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'මක෠දà·à¶¸à·–';
-$labels['undeleted'] = 'Not deleted';
-$labels['invert'] = 'Invert';
$labels['filter'] = 'පෙරන්න';
$labels['list'] = 'ලà·à¶ºà·’ස්තුව';
-$labels['threads'] = 'Threads';
$labels['expand-all'] = 'සියල්ල දිගහරින්න';
-$labels['expand-unread'] = 'Expand Unread';
$labels['collapse-all'] = 'සියල්ල හකුළන්න';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
$labels['fromto'] = 'වෙතින්/වෙත';
-$labels['flag'] = 'Flag';
$labels['attachment'] = 'ඇමුණුම';
$labels['nonesort'] = 'කිසිවක් නà·à¶­';
$labels['sentdate'] = 'යà·à·€à·– දිනය';
$labels['arrival'] = 'ලගà·à·€à·– දිනය';
$labels['asc'] = 'ආරà·à·„ණ';
$labels['desc'] = 'අවරà·à·„ණ';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
$labels['folderactions'] = 'බහà·à¶½à·”ම් ක්â€à¶»à·’යà·...';
$labels['compact'] = 'සංයුක්ත';
$labels['empty'] = 'හිස්';
-$labels['importmessages'] = 'Import messages';
-
-$labels['quota'] = 'Disk usage';
$labels['unknown'] = 'නොදනී';
$labels['unlimited'] = 'අසීමිත';
-
$labels['quicksearch'] = 'ඉක්මන් සෙවුම';
$labels['resetsearch'] = 'සෙවුම යලි පිහිටවීම';
-$labels['searchmod'] = 'Search modifiers';
$labels['msgtext'] = 'සම්පූර්ණ පණිවිඩය';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'නව කවුළුවක විවෘත කරන්න';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
-$labels['editasnew'] = 'Edit as new';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'පණිවිඩය යවන්න';
$labels['savemessage'] = 'කටු සටහනක් ලෙස සුරකින්න';
$labels['addattachment'] = 'ගොනුවක් අමුණන්න';
$labels['charset'] = 'අකුර෠කට්ටලය';
$labels['editortype'] = 'සම්පà·à¶¯à¶± ආකà·à¶»à¶º';
$labels['returnreceipt'] = 'නà·à·€à¶­ ලබන්නà·';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'අක්â€à·‚ර වින්â€à¶ºà·à·ƒà¶º පරික්â€à·‚à·à¶šà¶»à¶±à·Šà¶±';
$labels['resumeediting'] = 'සම්පà·à¶¯à¶± නà·à·€à¶­ ඇරඹීම';
$labels['revertto'] = 'ආපසු ඒම';
-
$labels['attach'] = 'අමුණන්න';
$labels['attachments'] = 'ඇමුණුම්';
$labels['upload'] = 'ඇතුල් කරීම';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'වසන්න';
-$labels['messageoptions'] = 'Message options...';
-
$labels['low'] = 'අඩු';
$labels['lowest'] = 'අඩුම';
$labels['normal'] = 'à·ƒà·à¶¸à·à¶±à·Šâ€à¶º';
$labels['high'] = 'ඉහළ';
$labels['highest'] = 'ඉහළම';
-
$labels['nosubject'] = '(මà·à¶­à·˜à¶šà·à·€ නොමà·à¶­)';
$labels['showimages'] = 'රූප පෙන්වන්න';
-$labels['alwaysshow'] = 'Always show images from $sender';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'පà·à·„à·à¶¯à·’ලි අකුරු';
-$labels['savesentmessagein'] = 'Save sent message in';
-$labels['dontsave'] = 'don\'t save';
-$labels['maxuploadsize'] = 'Maximum allowed file size is $size';
-
$labels['addcc'] = 'Cc එක් කරන්න';
$labels['addbcc'] = 'Bcc එක් කරන්න';
$labels['addreplyto'] = '\'පිළිතුරු සඳහà·\' එක් කරන්න';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'මෙම පණිවුඩය එවන්න෠ඔබ එය කියවු බව අසයි. එය දà·à¶±à·Šà·€à·“මට ඔබ කà·à¶¸à¶­à·’ද?';
$labels['receiptread'] = 'ලà·à¶¶à·“ම් ලදුපත (කියවීම)';
$labels['yourmessage'] = 'මෙය ඔබගේ පණිවුඩයේ ලà·à¶¶à·“ම් ලදුපතයි';
$labels['receiptnote'] = 'සටහන: ලà·à¶¶à·“ම් ලදුපත මගින් මෙම පණිවුඩය කියවූ බව හ෠තේරුම් ගත් බව ගම්â€à¶º නොවේ. පණිවුඩය ලබන්නà·à¶§ පෙන්නුම් කල බවටට à·ƒà·à¶šà·Šà·‚ියක් පමණි';
-
-// address boook
$labels['name'] = 'ප්â€à¶»à¶¯à¶»à·Šà·à¶±à¶º වන නම';
$labels['firstname'] = 'මුල් නම';
$labels['surname'] = 'අවසන් නම';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
$labels['nickname'] = 'සුරතල් නම';
$labels['jobtitle'] = 'රà·à¶šà·’ය෠තනතුර';
$labels['department'] = 'දෙපà·à¶»à·Šà¶­à¶¸à·šà¶±à·Šà¶­à·”à·€';
$labels['gender'] = 'ස්ත්â€à¶»à·’/පුරුෂ භà·à·€à¶º';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'විද්â€à¶ºà·”ත් තà·à¶´à·‘ල';
$labels['phone'] = 'දුරකථනය';
$labels['address'] = 'ලිපිනය';
-$labels['street'] = 'Street';
$labels['locality'] = 'නගරය';
-$labels['zipcode'] = 'ZIP Code';
$labels['region'] = 'ප්â€à¶»à·à¶±à·Šà¶­à¶º/පළà·à¶­';
$labels['country'] = 'රට';
$labels['birthday'] = 'උපන්දිනය';
@@ -298,189 +190,87 @@ $labels['male'] = 'පුරුෂ';
$labels['female'] = 'ස්ත්â€à¶»à·“';
$labels['manager'] = 'කළමණà·à¶šà¶»à·”';
$labels['assistant'] = 'සහà·à¶ºà¶š';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
$labels['search'] = 'සොයන්න';
-$labels['advsearch'] = 'Advanced Search';
$labels['advanced'] = 'සංකීර්ණâ€';
$labels['other'] = 'වෙනත්';
-
$labels['typehome'] = 'නිවස';
$labels['typework'] = 'රක්ෂà·à·€';
$labels['typeother'] = 'වෙනත්';
$labels['typemobile'] = 'ජංගම';
$labels['typemain'] = 'ප්â€à¶»à¶°à·à¶±';
$labels['typehomefax'] = 'ගෘහස්ථ à·†à·à¶šà·Šà·ƒà·Š';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
$labels['typepager'] = 'පේජරය';
$labels['typevideo'] = 'වීඩියà·';
$labels['typeassistant'] = 'සහà·à¶ºà¶š';
-$labels['typehomepage'] = 'Home Page';
$labels['typeblog'] = 'බ්ලොග්';
$labels['typeprofile'] = 'පà·à¶­à·’කඩ';
-
-$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'නව සබඳතà·à·€à¶º එක් කරන්න';
$labels['editcontact'] = 'ලිපිනය වෙනස් කිරීම';
$labels['contacts'] = 'සබඳතà·';
-$labels['contactproperties'] = 'Contact properties';
$labels['personalinfo'] = 'පුද්ගලික තොරතුරු';
-
$labels['edit'] = 'සංස්කරණය';
$labels['cancel'] = 'අවලංගු කරන්න';
$labels['save'] = 'සුරකින්න';
$labels['delete'] = 'මකන්න';
$labels['rename'] = 'නම වෙනස් කරන්න';
$labels['addphoto'] = 'එක් කරන්න';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'අඵත් ලිපින පතක් සෑදීම';
$labels['deletecontact'] = 'තà·à¶»à·à¶œà¶­à·Š ලිපින මකà·à¶¯à¶¸à¶±à·Šà¶±';
$labels['composeto'] = 'පනිවුඩයක් සෑදීම';
$labels['contactsfromto'] = '$from ගෙන් $to ලිපින $count';
$labels['print'] = 'මුද්â€à¶»à¶«à¶º කරන්න';
$labels['export'] = 'අපනයනය';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
-$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'පෙර පිටුව පෙන්වන්න';
$labels['firstpage'] = 'පළමුවන පිටුව පෙන්වන්න';
$labels['nextpage'] = 'මීළඟ පිටුව පෙන්වන්න';
$labels['lastpage'] = 'අවසà·à¶± පිටුව පෙන්වන්න';
-
$labels['group'] = 'කණ්ඩà·à¶ºà¶¸';
$labels['groups'] = 'කණ්ඩà·à¶ºà¶¸à·Š';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'පුද්ගලික ලිපිනය';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
$labels['import'] = 'ආනයනය කරන්න';
-$labels['importcontacts'] = 'Import contacts';
-$labels['importfromfile'] = 'Import from file:';
-$labels['importtarget'] = 'Add new contacts to address book:';
-$labels['importreplace'] = 'Replace the entire address book';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'අවසà·à¶±à¶ºà·’';
-
-// settings
$labels['settingsfor'] = 'සඳහ෠සà·à¶šà·ƒà·”ම්';
$labels['about'] = 'පිළිබඳ';
$labels['preferences'] = 'අභිමතය';
$labels['userpreferences'] = 'පරිà·à·“ලක අභිමතය';
$labels['editpreferences'] = 'පරිà·à·“ලක අභිමතය වෙනස් කිරීම්';
-
$labels['identities'] = 'අනන්â€à¶ºà¶­à·à·€à¶±à·Š';
$labels['manageidentities'] = 'මෙම ගිණුමෙ අනන්නයතà·à·€ à·„à·à·ƒà·’රවීම';
$labels['newidentity'] = 'අඵත් අනන්නයතà·à·€';
-
$labels['newitem'] = 'අඵත් අයිතම';
$labels['edititem'] = 'අයිතම වෙනස් කිරීම්';
-
$labels['preferhtml'] = 'HTML විදහ෠පෙන්වීම';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'HTML පණිවිඩය';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'සුරුබුහුටි දින';
$labels['setdefault'] = 'පළමු තත්වයට';
$labels['autodetect'] = 'ස්වයංක්â€à¶»à·“ය';
$labels['language'] = 'භà·à·‚à·à·€';
$labels['timezone'] = 'කà·à¶½ කලà·à¶´à¶º';
-$labels['pagesize'] = 'Rows per page';
$labels['signature'] = 'අත්සන';
$labels['dstactive'] = 'දිව෠එළිය ඉතිරි කිරීම';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'HTML පණිවිඩයක් සෑදීම';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'HTML අත්සන';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'පූර්වදර්à·à¶± කොටස පෙන්නන්න';
-$labels['skin'] = 'Interface skin';
-$labels['logoutclear'] = 'Clear Trash on logout';
-$labels['logoutcompact'] = 'Compact Inbox on logout';
$labels['uisettings'] = 'පරිà·à·“ලක අතුරුමුහුණත';
-$labels['serversettings'] = 'Server Settings';
-$labels['mailboxview'] = 'Mailbox View';
-$labels['mdnrequests'] = 'On request for return receipt';
$labels['askuser'] = 'මගෙන් විමසන්න';
-$labels['autosend'] = 'send receipt';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['ignore'] = 'නොසලක෠හරින්න';
-$labels['readwhendeleted'] = 'Mark the message as read on delete';
-$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
-$labels['skipdeleted'] = 'Do not show deleted messages';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
$labels['always'] = 'à·ƒà·à¶¸à·€à·’ට';
-$labels['showinlineimages'] = 'Display attached images below the message';
$labels['autosavedraft'] = 'ස්වයංක්â€à¶»à·“යව කටු සටහන සුරකින්න';
-$labels['everynminutes'] = 'every $n minute(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'කිසි විටෙකත් නà·à¶­à·’';
$labels['immediately'] = 'à·„à·à¶šà·’ ඉක්මනින්';
-$labels['messagesdisplaying'] = 'Displaying Messages';
-$labels['messagescomposition'] = 'Composing Messages';
-$labels['mimeparamfolding'] = 'Attachment names';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (වෙනත්)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
-$labels['advancedoptions'] = 'Advanced options';
-$labels['focusonnewmessage'] = 'Focus browser window on new message';
-$labels['checkallfolders'] = 'Check all folders for new messages';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'අංà·à¶º';
$labels['maintenance'] = 'නඩත්තු කිරීම';
$labels['newmessage'] = 'අලුත් පණිවිඩයක්';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
$labels['autoaddsignature'] = 'ස්වයංක්â€à¶»à·“යව අත්සන ඇතුලත් කරන්න';
$labels['newmessageonly'] = 'අලුත් පණිවිඩය පමණක්';
-$labels['replyandforwardonly'] = 'replies and forwards only';
$labels['insertsignature'] = 'අත්සන ඇතුලත් කරන්න';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
$labels['afternseconds'] = 'තත්පර $nකට පසු';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
$labels['spellcheckignoresyms'] = 'සලකුණු සහිත වචන නොසලක෠හරින්න';
$labels['spellcheckignorenums'] = 'අංක සහිත වචන නොසලක෠හරින්න';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
$labels['addtodict'] = 'à·à¶¶à·Šà¶¯ කà·à·‚යට එක් කරන්න';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'බහà·à¶½à·”ම';
$labels['folders'] = 'බහà·à¶½à·”ම්';
$labels['foldername'] = 'බහà·à¶½à·”මේ නම';
@@ -492,42 +282,27 @@ $labels['managefolders'] = 'බහà·à¶½à·”ම් කළමනà·à¶šà¶»à¶«à¶º à
$labels['specialfolders'] = 'විà·à·šà·‚ බහà·à¶½à·”ම්';
$labels['properties'] = 'වත්කම්';
$labels['folderproperties'] = 'බහà·à¶½à·”මේ වත්කම්';
-$labels['parentfolder'] = 'Parent folder';
$labels['location'] = 'ස්ථà·à¶±à¶º';
$labels['info'] = 'තොරතුරු';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
$labels['foldertype'] = 'බහà·à¶½à·”ම් වර්ගය';
$labels['personalfolder'] = 'පුද්ගලික බහà·à¶½à·”ම';
-$labels['otherfolder'] = 'Other User\'s Folder';
$labels['sharedfolder'] = 'පොදු බහà·à¶½à·”ම';
-
$labels['sortby'] = 'වර්ග කරන්න';
$labels['sortasc'] = 'ආරà·à·„ණ වර්ග කිරීම';
$labels['sortdesc'] = 'අවරà·à·„ණ වර්ග කිරීම';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
$labels['plugin'] = 'ප්ලගිනය';
$labels['version'] = 'අනුවà·à¶¯à¶º';
$labels['source'] = 'මූලà·à·à·Šâ€à¶»à¶º';
$labels['license'] = 'බලපත්â€à¶»à¶º';
$labels['support'] = 'සහය ලබà·à¶œà¶±à·Šà¶±';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'යුනිකේත';
$labels['english'] = 'ඉංග්â€à¶»à·“සි';
$labels['westerneuropean'] = 'බටහිර යුරà·à¶´à·“ය';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
$labels['baltic'] = 'බà·à¶½à·Šà¶§à·’ක්';
-$labels['cyrillic'] = 'Cyrillic';
$labels['arabic'] = 'අරà·à¶¶à·’';
$labels['greek'] = 'ග්â€à¶»à·“ක';
$labels['hebrew'] = 'හීබෲ';
@@ -539,5 +314,4 @@ $labels['vietnamese'] = 'වියට්නà·à¶¸';
$labels['japanese'] = 'ජපන්';
$labels['korean'] = 'කොරියà·à¶±à·”';
$labels['chinese'] = 'චීන';
-
?>
diff --git a/program/localization/si_LK/messages.inc b/program/localization/si_LK/messages.inc
index dd020b928..0c6fa1156 100644
--- a/program/localization/si_LK/messages.inc
+++ b/program/localization/si_LK/messages.inc
@@ -15,30 +15,15 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'දà·à·‚යක් මතුවිය!';
$messages['loginfailed'] = 'ඇතුල්වීම අසà·à¶»à·Šà¶®à¶šà¶ºà·’.';
$messages['cookiesdisabled'] = 'ඔබේ බෞසරය කුකී බà·à¶» ගන්නේ නà·à¶­';
$messages['sessionerror'] = 'ඔබේ à·€à·à¶»à¶º අවලංගු හ෠කà·à¶½à¶º ඉකුත් වී ඇත';
-$messages['storageerror'] = 'Connection to storage server failed.';
-$messages['servererror'] = 'Server Error!';
-$messages['servererrormsg'] = 'Server Error: $msg';
$messages['dberror'] = 'දත්ත ගබඩà·à·€à·š දà·à·‚ය!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Invalid request! No data was saved.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'ලියුම් පෙට්ටියේ පනිවුඩ නà·à¶­';
$messages['loggedout'] = 'ඔබගේ à·€à·à¶»à¶º à·ƒà·à¶»à·Šà¶®à¶šà·€ අවසන් විය. අයුබොවන්!';
$messages['mailboxempty'] = 'ලියුම් පෙට්ටිය හිස්';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'පූරනය...';
-$messages['uploading'] = 'Uploading file...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'දත්ත පූරනය...';
$messages['checkingmail'] = 'අලුත් පණිවිඩ පරීක්ෂ෠කරමින්...';
$messages['sendingmessage'] = 'පණිවිඩය යවමින්...';
@@ -48,129 +33,56 @@ $messages['messagesaved'] = 'පනිවුඩය කටු සටහනේ ත
$messages['successfullysaved'] = 'සුරà·à¶šà·“ම à·ƒà·à¶»à·Šà¶®à¶šà¶ºà·’.';
$messages['addedsuccessfully'] = 'ලිපිනය à·ƒà·à¶»à·Šà¶®à¶šà·€ ලිපින පොතට එකතු කරන ලදී.';
$messages['contactexists'] = 'ඉහත ලිපිනය සහිත විද්යුත් තà·à¶´à·à¶½à·Š ලිපිනයක් ලිපින පොතේ ඇත.';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'ඔබගෙ පොද්ගලිකත්වය හේතුවෙන්, දුරස්ථ රූප අවහිර කර ඇත.';
$messages['encryptedmessage'] = 'මෙම පනිවුඩය රහස් කේතනය කර ඇති බà·à·€à·’න් පෙන්විය නොහà·à¶š. සමà·à·€à¶±à·Šà¶±!';
$messages['nocontactsfound'] = 'ලිපින සොය෠ගත නොහà·à¶š';
$messages['contactnotfound'] = 'ඉල්ලූ ලිපිනය සොයà·à¶œà¶­ නොහà·à¶š';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'පණිවිඩය යà·à·€à·“ම අසà·à¶»à·Šà¶®à¶šà¶ºà·’.';
$messages['senttooquickly'] = 'කරුණà·à¶šà¶» මෙම පණිවිඩය යà·à·€à·“මට පෙර තත්පර $secක් රà·à¶¯à·“ සිටින්න.';
-$messages['errorsavingsent'] = 'An error occured while saving sent message.';
-$messages['errorsaving'] = 'පණිවිඩය සුරà·à¶šà·“මේදී දà·à·‚යක් මතුවිය.';
$messages['errormoving'] = 'පනිවුඩය ගෙන යà·à¶¸à¶§ නොහà·à¶š';
$messages['errorcopying'] = 'පණිවිඩ(ය) පිටපත් කල නොහà·à¶š.';
$messages['errordeleting'] = 'පණිවිඩ(ය) මක෠දà·à¶¸à·“මට නොහà·à¶š.';
$messages['errormarking'] = 'පණිවිඩ(ය) සලකුණු කල නොහà·à¶š.';
$messages['deletecontactconfirm'] = 'තà·à¶»à· ඇති ලිපින ඔබට මක෠දà·à¶¸à·“මට à·ƒà·à¶¶à·€à·’න්ම වුවමනà·à¶¯?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'තà·à¶»à· ඇති පණිවිඩ(ය) ඔබට මක෠දà·à¶¸à·“මට à·ƒà·à¶¶à·€à·’න්ම වුවමනà·à¶¯?';
$messages['deletefolderconfirm'] = 'ඔබට මෙම බහà·à¶½à·”ම මක෠දà·à¶¸à·“මට à·ƒà·à¶¶à·€à·’න්ම වුවමනà·à¶¯?';
$messages['purgefolderconfirm'] = 'මෙම බහà·à¶½à¶¸à·š ඇති සියලුම පණිවිඩ ඔබට මක෠දà·à¶¸à·“මට à·ƒà·à¶¶à·€à·’න්ම වුවමනà·à¶¯?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
$messages['folderdeleting'] = 'බහà·à¶½à·”ම මකà·à¶¯à¶¸à¶¸à·’න්...';
-$messages['foldermoving'] = 'Moving folder...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'පà·à¶»à¶¸à¶º සම්පූර්ණයෙන් පුරව෠නොමà·à¶­.';
$messages['noemailwarning'] = 'කරුණà·à¶šà¶» වලංගු විද්යුත් ලිපිනයක් ඇතුලත් කරන්න.';
$messages['nonamewarning'] = 'කරුණà·à¶šà¶» නම ඇතුලත් කරන්න.';
$messages['nopagesizewarning'] = 'කරුණà·à¶šà¶» පිටුවේ ප්â€à¶»à¶¸à·à¶«à¶º ඇතුලත් කරන්න.';
-$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
$messages['norecipientwarning'] = 'කරුණà·à¶šà¶» යටත් පිරිසෙයින් එක් ලබන්නෙකු හ෠ඇතුලත් කරන්න';
$messages['nosubjectwarning'] = '"මà·à¶­à·˜à¶šà·à·€" හිස්. මà·à¶­à·˜à¶šà·à·€à¶šà·Š ඇතුලත් කිරීමට ඔබ කà·à¶¸à¶­à·’ද?';
$messages['nobodywarning'] = 'මෙම හිස් පනිවුඩය යවන්නද?';
$messages['notsentwarning'] = 'පණිවිඩය යà·à·€à·“මට නොහà·à¶šà·’ විය. ඔබට එය බà·à·„à·à¶» කිරීමට වුවමනà·à¶¯?';
$messages['noldapserver'] = 'සෙවුම සඳහ෠කරුණà·à¶šà¶» ldap සම්බන්ධතà·à·€à¶ºà¶šà·Š තà·à¶»à· ගන්න';
$messages['nosearchname'] = 'කරුණà·à¶šà¶» ලිපිනයෙහි නම හ෠විද්යුත් තà·à¶´à·à¶½à·Š ලිපිනය ඇතුලත් කරන්න';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = '$nr පනිවුඩය හමු විය';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'සෙවුමට අදà·à¶½ ගà·à¶½à¶´à·“මක් නොමà·à¶­.';
$messages['searching'] = 'සොයමින්...';
$messages['checking'] = 'පරික්â€à·‚à·à¶šà¶»à¶¸à·’න්...';
$messages['nospellerrors'] = 'වියà·à¶šà¶»à¶± දොෂ නොමà·à¶­';
$messages['folderdeleted'] = 'බහà·à¶½à·”ම à·ƒà·à¶»à·Šà¶®à¶šà·€ මක෠දමන ලදී.';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'à·ƒà·à¶»à·Šà¶®à¶šà·€ මකà·à¶¯à¶¸à¶± ලදී.';
$messages['converting'] = 'පනිවුඩයෙන් ආකෘතීකරණය ඉවත් කිරීම';
$messages['messageopenerror'] = 'පනිවුඩය පූරනය කිරීමට නොහà·à¶š';
$messages['fileuploaderror'] = 'ගොනුව ඇතුලත් කිරීමට නොහà·à¶š';
$messages['filesizeerror'] = 'ඇතුලත් කල ගොනුවෙ ප්රමà·à¶«à¶º උපරිම අගය $size ඉක්මව෠ඇත';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'මෙම ලිපින මූලà·à·à·Šà¶»à¶º කියවීම සඳහ෠පමනි';
$messages['errorsavingcontact'] = 'ලිපිනය තà·à¶±à·Šà¶´à¶­à·Š කීරීමට නොහà·à¶š';
$messages['movingmessage'] = 'පණිවිඩ(ය) ගෙනයමින්...';
$messages['copyingmessage'] = 'පණිවිඩ(ය) පිටපත් කරමින්...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'පණිවිඩ(ය) මක෠දමමින්...';
$messages['markingmessage'] = 'පණිවිඩ(ය) සලකුණු කරමින්...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
-$messages['receiptsent'] = 'Successfully sent a read receipt.';
$messages['errorsendingreceipt'] = 'කියවීම් භà·à¶» ගà·à¶±à·“ම යà·à·€à·“මට නොහà·à¶š';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'අවසà·à¶± අනන්â€à¶ºà¶­à·à·€à¶º මක෠දà·à¶¸à·’ය නොහà·à¶š';
-$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
-$messages['selectimportfile'] = 'Please select a file to upload.';
-$messages['addresswriterror'] = 'The selected address book is not writeable.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'ආනයනය කරමින්, කරුණà·à¶šà¶» රà·à¶¯à·“ සිටින්න...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operation not permitted!';
-$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
$messages['emailformaterror'] = 'අවලංගු විද්â€à¶ºà·”ත් තà·à¶´à·à¶½à·Š ලිපිනය: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
$messages['messagedeleted'] = 'පණිවිඩ(ය) මක෠දà·à¶¸à·“ම à·ƒà·à¶»à·Šà¶®à¶šà¶ºà·’.';
$messages['messagemoved'] = 'පණිවිඩ(ය) ගෙනයෑම à·ƒà·à¶»à·Šà¶®à¶šà¶ºà·’.';
$messages['messagecopied'] = 'පණිවිඩ(ය) පිටපත් කිරීම à·ƒà·à¶»à·Šà¶®à¶šà¶ºà·’.';
$messages['messagemarked'] = 'පණිවිඩ(ය) සලකුණු කිරීම à·ƒà·à¶»à·Šà¶®à¶šà¶ºà·’.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
$messages['namecannotbeempty'] = 'නම හිස්ව තà·à¶¶à·’ය නොහà·à¶š.';
$messages['nametoolong'] = 'නම දිග à·€à·à¶©à·’ය.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/sk_SK/csv2vcard.inc b/program/localization/sk_SK/csv2vcard.inc
new file mode 100644
index 000000000..724ed7438
--- /dev/null
+++ b/program/localization/sk_SK/csv2vcard.inc
@@ -0,0 +1,93 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/<lang>/csv2vcard.inc |
+ | |
+ | Localization file of the Roundcube Webmail client |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+ | Author: Marek MeÄiar <mmmeciar@gmail.com> |
+ +-----------------------------------------------------------------------+
+*/
+
+// This is a list of CSV column names specified in CSV file header
+// These must be original texts used in Outlook/Thunderbird exported csv files
+// Encoding UTF-8
+
+$map = array();
+
+// MS Outlook 2010
+$map['anniversary'] = "VýroÄie";
+$map['assistants_name'] = "Meno asistenta";
+$map['assistants_phone'] = "Telefón asistenta";
+$map['birthday'] = "Narodeniny";
+$map['business_city'] = "Mesto (práca)";
+$map['business_countryregion'] = "Krajina/oblasť (práca)";
+$map['business_fax'] = "Fax do práce";
+$map['business_phone'] = "Telefón do práce";
+$map['business_phone_2'] = "Telefón do práce 2";
+$map['business_postal_code'] = "PSČ (práca)";
+$map['business_state'] = "Okres (práca)";
+$map['business_street'] = "Ulica (práca)";
+$map['car_phone'] = "Autotelefón";
+$map['categories'] = "Kategórie";
+$map['company'] = "SpoloÄnosÅ¥";
+$map['department'] = "Oddelenie";
+$map['email_address'] = "E-mailová adresa";
+$map['first_name'] = "Krstné meno";
+$map['gender'] = "Pohlavie";
+$map['home_city'] = "Mesto (domov)";
+$map['home_countryregion'] = "Krajina/oblasť (domov)";
+$map['home_fax'] = "Fax domov";
+$map['home_phone'] = "Telefón domov";
+$map['home_phone_2'] = "Telefón domov 2";
+$map['home_postal_code'] = "PSČ (domov)";
+$map['home_state'] = "Okres (domov)";
+$map['home_street'] = "Ulica (domov)";
+$map['job_title'] = "Funkcia";
+$map['last_name'] = "Priezvisko";
+$map['managers_name'] = "Meno manažéra";
+$map['middle_name'] = "Ďalšie meno";
+$map['mobile_phone'] = "Mobilný telefón";
+$map['notes'] = "Poznámky";
+$map['other_city'] = "Iné mesto";
+$map['other_countryregion'] = "Krajina/oblasť (iné)";
+$map['other_fax'] = "Iný fax";
+$map['other_phone'] = "Iný telefón";
+$map['other_postal_code'] = "Iné PSČ";
+$map['other_state'] = "Krajina/oblasť (iné)";
+$map['other_street'] = "Iná ulica";
+$map['pager'] = "Operátor";
+$map['primary_phone'] = "Primárny telefón";
+$map['spouse'] = "Manžel(ka)";
+$map['suffix'] = "Prípona";
+$map['title'] = "Titul";
+$map['web_page'] = "Webová stránka";
+
+// Thunderbird
+$map['birth_day'] = "Deň narodenia";
+$map['birth_month'] = "Mesiac narodenia";
+$map['birth_year'] = "Rok narodenia";
+$map['display_name'] = "Zobrazované meno";
+$map['fax_number'] = "Fax";
+$map['home_address'] = "Adresa domov";
+$map['home_country'] = "Štát domov";
+$map['home_zipcode'] = "PSČ domov";
+$map['mobile_number'] = "Mobil";
+$map['nickname'] = "Prezývka";
+$map['organization'] = "Organizácia";
+$map['pager_number'] = "Pager";
+$map['primary_email'] = "E-mailová adresa";
+$map['secondary_email'] = "Ďalšia e-mailová adresa";
+$map['web_page_1'] = "Webová stránka 1";
+$map['web_page_2'] = "Webová stránka 2";
+$map['work_phone'] = "Telefón do zamestnania";
+$map['work_address'] = "Pracovná adresa";
+$map['work_country'] = "Štát zamestnania";
+$map['work_zipcode'] = "PSČ zamestnania";
diff --git a/program/localization/sk_SK/labels.inc b/program/localization/sk_SK/labels.inc
index 465252409..dee79f1bf 100644
--- a/program/localization/sk_SK/labels.inc
+++ b/program/localization/sk_SK/labels.inc
@@ -15,66 +15,50 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Vitajte v $product';
-$labels['username'] = 'Prihlasovacie meno';
+$labels['username'] = 'Meno používateľa';
$labels['password'] = 'Heslo';
$labels['server'] = 'Server';
$labels['login'] = 'Prihlásiť';
-
-// taskbar
$labels['logout'] = 'Odhlásiť';
-$labels['mail'] = 'E-Mail';
+$labels['mail'] = 'E-mail';
$labels['settings'] = 'Nastavenia';
-$labels['addressbook'] = 'Kontakty';
-
-// mailbox names
+$labels['addressbook'] = 'Adresár kontaktov';
$labels['inbox'] = 'DoruÄená poÅ¡ta';
-$labels['drafts'] = 'Rozpísané';
+$labels['drafts'] = 'Koncepty';
$labels['sent'] = 'Odoslané';
$labels['trash'] = 'Kôš';
$labels['junk'] = 'Nevyžiadaná pošta';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
+$labels['show_real_foldernames'] = 'Pri osobitných prieÄinkoch zobrazovaÅ¥ reálne názvy';
$labels['subject'] = 'Predmet';
-$labels['from'] = 'Odosielateľ';
-$labels['sender'] = 'Sender';
-$labels['to'] = 'Adresát';
+$labels['from'] = 'Od';
+$labels['sender'] = 'Odosielateľ';
+$labels['to'] = 'Komu';
$labels['cc'] = 'Kópia';
-$labels['bcc'] = 'Tajná kópia';
+$labels['bcc'] = 'Skrytá kópia';
$labels['replyto'] = 'Odpovedať na';
-$labels['followupto'] = 'PokraÄovaÅ¥ na';
+$labels['followupto'] = 'Preposlať na';
$labels['date'] = 'Dátum';
$labels['size'] = 'Veľkosť';
$labels['priority'] = 'Priorita';
$labels['organization'] = 'Organizácia';
-$labels['readstatus'] = 'Čítať stav';
+$labels['readstatus'] = 'PreÄítaÅ¥ stav';
$labels['listoptions'] = 'Nastavenia zoznamu...';
-
$labels['mailboxlist'] = 'PrieÄinky';
-$labels['messagesfromto'] = 'Správy od $from do $to z $count';
-$labels['threadsfromto'] = 'Konverzácie od $from do $to z $count';
-$labels['messagenrof'] = 'Správa $nr z $count';
+$labels['messagesfromto'] = 'Správy od $from, komu $to, z $count';
+$labels['threadsfromto'] = 'Konverzácie od $from, komu $to, z $count';
+$labels['messagenrof'] = 'Správa Ä. $nr z $count';
$labels['fromtoshort'] = '$from – $to z $count';
-
$labels['copy'] = 'Kopírovať';
$labels['move'] = 'Presunúť';
-$labels['moveto'] = 'presunúť do...';
-$labels['download'] = 'stiahnuť';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
-$labels['filename'] = 'Meno súboru';
+$labels['moveto'] = 'Presunúť do...';
+$labels['download'] = 'Stiahnuť';
+$labels['open'] = 'Otvoriť';
+$labels['showattachment'] = 'Zobraziť';
+$labels['showanyway'] = 'Zobraziť aj napriek tomu';
+$labels['filename'] = 'Názov súboru';
$labels['filesize'] = 'Veľkosť súboru';
-
$labels['addtoaddressbook'] = 'Pridať do adresára';
-
-// weekdays short
$labels['sun'] = 'Ne';
$labels['mon'] = 'Po';
$labels['tue'] = 'Ut';
@@ -82,8 +66,6 @@ $labels['wed'] = 'St';
$labels['thu'] = 'Å t';
$labels['fri'] = 'Pi';
$labels['sat'] = 'So';
-
-// weekdays long
$labels['sunday'] = 'Nedeľa';
$labels['monday'] = 'Pondelok';
$labels['tuesday'] = 'Utorok';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Streda';
$labels['thursday'] = 'Å tvrtok';
$labels['friday'] = 'Piatok';
$labels['saturday'] = 'Sobota';
-
-// months short
$labels['jan'] = 'Jan';
$labels['feb'] = 'Feb';
$labels['mar'] = 'Mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Sep';
$labels['oct'] = 'Okt';
$labels['nov'] = 'Nov';
$labels['dec'] = 'Dec';
-
-// months long
$labels['longjan'] = 'Január';
$labels['longfeb'] = 'Február';
$labels['longmar'] = 'Marec';
@@ -119,179 +97,169 @@ $labels['longsep'] = 'September';
$labels['longoct'] = 'Október';
$labels['longnov'] = 'November';
$labels['longdec'] = 'December';
-
$labels['today'] = 'Dnes';
-
-// toolbar buttons
$labels['refresh'] = 'Obnoviť';
$labels['checkmail'] = 'Skontrolovať nové správy';
$labels['compose'] = 'Vytvoriť správu';
$labels['writenewmessage'] = 'Vytvoriť novú správu';
$labels['reply'] = 'Odpovedať';
-$labels['replytomessage'] = 'Odpovedať';
-$labels['replytoallmessage'] = 'Odpovedať všetkým';
+$labels['replytomessage'] = 'Odpovedať odosielateľovi';
+$labels['replytoallmessage'] = 'Odpovedať do zoznamu alebo odosielateľovi a všetkým príjemcom';
$labels['replyall'] = 'Odpovedať všetkým';
-$labels['replylist'] = 'Zoznam odpovedí';
+$labels['replylist'] = 'Zoznam pre odpovedanie';
$labels['forward'] = 'Dopredu';
$labels['forwardinline'] = 'PoslaÅ¥ Äalej';
$labels['forwardattachment'] = 'PoslaÅ¥ Äalej ako prílohu';
-$labels['forwardmessage'] = 'PoslaÅ¥ Äalej';
-$labels['deletemessage'] = 'Zmazať správu';
+$labels['forwardmessage'] = 'PoslaÅ¥ správu Äalej';
+$labels['deletemessage'] = 'Vymazať správu';
$labels['movemessagetotrash'] = 'Presunúť správu do koša';
-$labels['printmessage'] = 'VytlaÄiÅ¥ správu';
+$labels['printmessage'] = 'VytlaÄiÅ¥ túto správu';
$labels['previousmessage'] = 'Zobraziť predchádzajúcu správu';
$labels['firstmessage'] = 'Zobraziť prvú správu';
$labels['nextmessage'] = 'ZobraziÅ¥ ÄalÅ¡iu správu';
$labels['lastmessage'] = 'Zobraziť poslednú správu';
$labels['backtolist'] = 'Späť na zoznam správ';
-$labels['viewsource'] = 'Ukázať zdroj správy';
+$labels['viewsource'] = 'Zobraziť zdroj';
$labels['mark'] = 'OznaÄiÅ¥';
$labels['markmessages'] = 'OznaÄiÅ¥ správy';
$labels['markread'] = 'Ako preÄítané';
$labels['markunread'] = 'Ako nepreÄítané';
-$labels['markflagged'] = 'Ako oznaÄené';
-$labels['markunflagged'] = 'Ako neoznaÄené';
-$labels['moreactions'] = 'Ďalšie akcie...';
-$labels['more'] = 'Ďalšie';
+$labels['markflagged'] = 'Ako oznaÄené príznakom';
+$labels['markunflagged'] = 'Ako neoznaÄené príznakom';
+$labels['moreactions'] = 'Viac akcií...';
+$labels['more'] = 'Viac';
$labels['back'] = 'Dozadu';
$labels['options'] = 'Možnosti';
-
$labels['select'] = 'Výber';
$labels['all'] = 'VÅ¡etky';
$labels['none'] = 'NiÄ';
$labels['currpage'] = 'Aktuálna stránka';
$labels['unread'] = 'NepreÄítané';
-$labels['flagged'] = 'OznaÄené';
-$labels['unanswered'] = 'NeoznaÄené';
-$labels['withattachment'] = 'With attachment';
-$labels['deleted'] = 'Zmazané';
+$labels['flagged'] = 'OznaÄené príznakom';
+$labels['unanswered'] = 'Bez odpovede';
+$labels['withattachment'] = 'S prílohou';
+$labels['deleted'] = 'Vymazané';
$labels['undeleted'] = 'Nevymazané';
-$labels['invert'] = 'Prevrátiť';
+$labels['invert'] = 'Obrátiť';
$labels['filter'] = 'Filter';
$labels['list'] = 'Zoznam';
$labels['threads'] = 'Konverzácie';
$labels['expand-all'] = 'Rozbaliť všetko';
$labels['expand-unread'] = 'RozbaliÅ¥ nepreÄítané';
$labels['collapse-all'] = 'Zbaliť všetko';
-$labels['threaded'] = 'Spájať do konverzácií';
-
-$labels['autoexpand_threads'] = 'Rozbaliť konverzácie';
+$labels['threaded'] = 'Spojené do konverzácií';
+$labels['autoexpand_threads'] = 'Rozbaliť konverzácie správy';
$labels['do_expand'] = 'všetky konverzácie';
$labels['expand_only_unread'] = 'len s nepreÄítanými správami';
-$labels['fromto'] = 'Odosielateľ/Príjemca';
-$labels['flag'] = 'Vlajka';
+$labels['fromto'] = 'Od/Komu';
+$labels['flag'] = 'Príznak';
$labels['attachment'] = 'Príloha';
$labels['nonesort'] = 'NiÄ';
$labels['sentdate'] = 'Dátum odoslania';
$labels['arrival'] = 'Dátum prijatia';
$labels['asc'] = 'vzostupne';
$labels['desc'] = 'zostupne';
-$labels['listcolumns'] = 'Zoznam stĺpcov';
-$labels['listsorting'] = 'Triedenie stĺpcov';
-$labels['listorder'] = 'Usporiadanie';
+$labels['listcolumns'] = 'Stĺpce v zozname';
+$labels['listsorting'] = 'ZoraÄovanie v stĺpci';
+$labels['listorder'] = 'Systém zoraÄovania';
$labels['listmode'] = 'Režim zobrazenia zoznamu';
-
-$labels['folderactions'] = 'Akcie so zložkou...';
-$labels['compact'] = 'ZhustiÅ¥ prieÄinok';
+$labels['folderactions'] = 'Akcie pre prieÄinky...';
+$labels['compact'] = 'Zhustiť';
$labels['empty'] = 'Vyprázdniť';
-$labels['importmessages'] = 'Import messages';
-
-$labels['quota'] = 'Zaplnenie schránky';
+$labels['importmessages'] = 'Importovať správy';
+$labels['quota'] = 'Zaplnenie disku';
$labels['unknown'] = 'neznáme';
$labels['unlimited'] = 'neobmedzené';
-
$labels['quicksearch'] = 'Rýchle vyhľadávanie';
$labels['resetsearch'] = 'VyÄistiÅ¥ vyhľadávanie';
-$labels['searchmod'] = 'Parametre hľadanie';
+$labels['searchmod'] = 'Modifikátory pri hľadaní';
$labels['msgtext'] = 'Celá správa';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
+$labels['body'] = 'Telo';
+$labels['type'] = 'Typ';
+$labels['namex'] = 'Meno';
$labels['openinextwin'] = 'Otvoriť v novom okne';
-$labels['emlsave'] = 'Stiahnuť';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
+$labels['emlsave'] = 'Stiahnuť (.eml)';
+$labels['changeformattext'] = 'ZobraziÅ¥ vo formáte Äistého textu';
+$labels['changeformathtml'] = 'Zobraziť vo formáte HTML';
$labels['editasnew'] = 'Upraviť ako novú';
$labels['send'] = 'Odoslať';
$labels['sendmessage'] = 'Odoslať správu';
-$labels['savemessage'] = 'Uložiť do rozpísaných';
-$labels['addattachment'] = 'Pridať prílohu';
+$labels['savemessage'] = 'Uložiť ako koncept';
+$labels['addattachment'] = 'Pripojiť súbor';
$labels['charset'] = 'Znaková sada';
$labels['editortype'] = 'Typ editora';
$labels['returnreceipt'] = 'Potvrdenie o doruÄení';
-$labels['dsn'] = 'DoruÄenie oznámenia o stave';
-$labels['mailreplyintro'] = '$date odosielateľ napísal:';
+$labels['dsn'] = 'Oznámenie o stave doruÄenia';
+$labels['mailreplyintro'] = 'Dňa $date $sender napísal(a):';
$labels['originalmessage'] = 'Pôvodná správa';
-
-$labels['editidents'] = 'Editovať identity';
+$labels['editidents'] = 'Upraviť identity';
$labels['spellcheck'] = 'Pravopis';
$labels['checkspelling'] = 'Skontrolovať pravopis';
$labels['resumeediting'] = 'PokraÄovaÅ¥ v úpravách';
$labels['revertto'] = 'Vrátiť sa na';
-
+$labels['restore'] = 'Obnoviť';
+$labels['restoremessage'] = 'Obnoviť správu?';
+$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ť';
$labels['uploadprogress'] = '$percent ($current z $total)';
$labels['close'] = 'Zatvoriť';
$labels['messageoptions'] = 'Nastavenia správy...';
-
$labels['low'] = 'Nízka';
$labels['lowest'] = 'Najnižšia';
$labels['normal'] = 'Normálna';
$labels['high'] = 'Vysoká';
$labels['highest'] = 'Najvyššia';
-
$labels['nosubject'] = '(bez predmetu)';
-$labels['showimages'] = 'Ukázať obrázky';
-$labels['alwaysshow'] = 'Vždy zobraziť obrázky od $sender';
-$labels['isdraft'] = 'Toto je rozpísaná správa';
+$labels['showimages'] = 'Zobraziť obrázky';
+$labels['alwaysshow'] = 'Vždy zobraziť obrázky od odosielateľa $sender';
+$labels['isdraft'] = 'Toto je koncept.';
$labels['andnmore'] = '$nr viac...';
$labels['togglemoreheaders'] = 'Zobraziť viac záhlaví správ';
$labels['togglefullheaders'] = 'Prepnúť zobrazenie nespracovaných záhlaví správ';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Čistý text';
-$labels['savesentmessagein'] = 'Ukladať odoslané správy do';
-$labels['dontsave'] = 'Neukladať';
+$labels['savesentmessagein'] = 'Uložiť odoslanú správu do';
+$labels['dontsave'] = 'neukladať';
$labels['maxuploadsize'] = 'Maximálna povolená veľkosť súboru je $size';
-
$labels['addcc'] = 'Pridať kópiu';
$labels['addbcc'] = 'Pridať skrytú kopiu';
-$labels['addreplyto'] = 'PridaÅ¥ odpoveÄ';
-$labels['addfollowupto'] = 'PridaÅ¥ pokraÄovaÅ¥ na';
-
-// mdn
-$labels['mdnrequest'] = 'Odosielateľ tejto správy chce byť upozornený na to, že ste správu obdržali. Chcete potvrdiť prijatie správy?';
-$labels['receiptread'] = 'Potvrdenie o prijatí správy';
-$labels['yourmessage'] = 'Toto je potvrdenie o prijatí Vašej správy';
-$labels['receiptnote'] = 'Poznámka: Toto potvrdenie negarantuje, že správa bola príjemcom preÄítaná a porozumel jej obsahu.';
-
-// address boook
-$labels['name'] = 'Názov';
+$labels['addreplyto'] = 'Pridať pole Odpovedať na';
+$labels['addfollowupto'] = 'Pridať pole preposlať na';
+$labels['mdnrequest'] = 'Odosielateľ tejto správy chce byÅ¥ informovaný o tom, že ste túto správu Äítali. Chcete mu potvrdiÅ¥ prijatie správy?';
+$labels['receiptread'] = 'Potvrdenie o prijatí (a preÄítaní) správy';
+$labels['yourmessage'] = 'Toto je potvrdenie o prijatí vašej správy';
+$labels['receiptnote'] = 'Poznámka: Toto potvrdenie znamená len to, že správa sa zobrazila na poÄítaÄi príjemcu. Nie je vÅ¡ak zaruÄené, že klient správu Äítal a porozumel jej obsahu.';
+$labels['name'] = 'Zobraziť meno';
$labels['firstname'] = 'Meno';
$labels['surname'] = 'Priezvisko';
-$labels['middlename'] = 'Stredné meno';
+$labels['middlename'] = 'Stredná ÄasÅ¥ mena';
$labels['nameprefix'] = 'Titul';
$labels['namesuffix'] = 'Prípona';
$labels['nickname'] = 'Prezývka';
-$labels['jobtitle'] = 'Názov práce';
+$labels['jobtitle'] = 'Názov pozície';
$labels['department'] = 'Oddelenie';
$labels['gender'] = 'Pohlavie';
-$labels['maidenname'] = 'DievÄenské meno';
-$labels['email'] = 'E-Mail';
+$labels['maidenname'] = 'Rodné priezvisko';
+$labels['email'] = 'E-mail';
$labels['phone'] = 'Telefón';
$labels['address'] = 'Adresa';
$labels['street'] = 'Ulica';
$labels['locality'] = 'Mesto';
-$labels['zipcode'] = 'Smerovacie Äéslo';
-$labels['region'] = 'Kraj';
+$labels['zipcode'] = 'Smerovacie Äíslo';
+$labels['region'] = 'Štát/Provincia/Kraj';
$labels['country'] = 'Krajina';
-$labels['birthday'] = 'Dátum narodenia';
+$labels['birthday'] = 'Narodeniny';
$labels['anniversary'] = 'VýroÄie';
-$labels['website'] = 'Web stránka';
+$labels['website'] = 'Internetová stránka';
$labels['instantmessenger'] = 'IM';
$labels['notes'] = 'Poznámky';
$labels['male'] = 'muž';
@@ -304,13 +272,12 @@ $labels['search'] = 'Hľadať';
$labels['advsearch'] = 'Rozšírené vyhľadávanie';
$labels['advanced'] = 'Rozšírené';
$labels['other'] = 'Ostatné';
-
$labels['typehome'] = 'Domov';
$labels['typework'] = 'Práca';
-$labels['typeother'] = 'Ostatné';
-$labels['typemobile'] = 'Mobil';
+$labels['typeother'] = 'Iné';
+$labels['typemobile'] = 'Mobilný telefón';
$labels['typemain'] = 'Hlavný';
-$labels['typehomefax'] = 'Domáci fax';
+$labels['typehomefax'] = 'Fax - domov';
$labels['typeworkfax'] = 'Fax - práca';
$labels['typecar'] = 'Auto';
$labels['typepager'] = 'Pager';
@@ -319,81 +286,72 @@ $labels['typeassistant'] = 'Asistent';
$labels['typehomepage'] = 'Domovská stránka';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
-
-$labels['addfield'] = 'Pridať položku...';
+$labels['addfield'] = 'Pridať pole...';
$labels['addcontact'] = 'Pridať nový kontakt';
$labels['editcontact'] = 'Upraviť kontakt';
$labels['contacts'] = 'Kontakty';
$labels['contactproperties'] = 'Vlastnosti kontaktu';
-$labels['personalinfo'] = 'Osobné informácie';
-
+$labels['personalinfo'] = 'Osobná informácia';
$labels['edit'] = 'Upraviť';
$labels['cancel'] = 'Zrušiť';
$labels['save'] = 'Uložiť';
-$labels['delete'] = 'Zmazať';
+$labels['delete'] = 'Vymazať';
$labels['rename'] = 'Premenovať';
$labels['addphoto'] = 'Pridať';
$labels['replacephoto'] = 'Nahradiť';
-$labels['uploadphoto'] = 'Nahrať fotku';
-
-$labels['newcontact'] = 'Vytvoriť nový kontakt';
-$labels['deletecontact'] = 'Zmazať zvolené kontakty';
+$labels['uploadphoto'] = 'Nahrať fotografiu';
+$labels['newcontact'] = 'Vytvoriť novú vizitku kontaktu';
+$labels['deletecontact'] = 'Vymazať vybrané kontakty';
$labels['composeto'] = 'Vytvoriť správu pre';
$labels['contactsfromto'] = 'Kontakty od $from do $to z $count';
$labels['print'] = 'TlaÄ';
$labels['export'] = 'Export';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
+$labels['exportall'] = 'Exportovať všetko';
+$labels['exportsel'] = 'Exportovať vybrané';
$labels['exportvcards'] = 'Exportovať kontakty vo formáte vCard';
$labels['newcontactgroup'] = 'Vytvoriť novú skupinu kontaktov';
$labels['grouprename'] = 'Premenovať skupinu';
-$labels['groupdelete'] = 'Zmazať skupinu';
+$labels['groupdelete'] = 'Vymazať skupinu';
$labels['groupremoveselected'] = 'Odstrániť vybrané kontakty zo skupiny';
-
-$labels['previouspage'] = 'Predchádzajúca stránka';
-$labels['firstpage'] = 'Prvá stránka';
-$labels['nextpage'] = 'Nasledujúca stránka';
-$labels['lastpage'] = 'Posledná stránka';
-
+$labels['previouspage'] = 'Zobraziť predchádzajúcu stranu';
+$labels['firstpage'] = 'Zobraziť prvú stranu';
+$labels['nextpage'] = 'Zobraziť nasledujúcu stranu';
+$labels['lastpage'] = 'Zobraziť poslednú stranu';
$labels['group'] = 'Skupina';
$labels['groups'] = 'Skupiny';
-$labels['listgroup'] = 'List group members';
+$labels['listgroup'] = 'Zoznam Älenov skupiny';
$labels['personaladrbook'] = 'Osobné adresy';
-
$labels['searchsave'] = 'Uložiť vyhľadávanie';
-$labels['searchdelete'] = 'Zmazať vyhľadávanie';
-
+$labels['searchdelete'] = 'Vymazať vyhľadávanie';
$labels['import'] = 'Import';
$labels['importcontacts'] = 'Importovať kontakty';
$labels['importfromfile'] = 'Importovať zo súboru:';
-$labels['importtarget'] = 'Pridať nové kontakty do adresára:';
-$labels['importreplace'] = 'Nahradiť celý zoznam kontaktov';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
+$labels['importtarget'] = 'Pridať kontakty do';
+$labels['importreplace'] = 'Nahradiť celý adresár kontaktov';
+$labels['importgroups'] = 'Importovať priradenia do skupín';
+$labels['importgroupsall'] = 'Všetky (vytvoriť skupiny, ak je to potrebné)';
+$labels['importgroupsexisting'] = 'Len pre existujúce skupiny';
+$labels['importdesc'] = 'Môžete vložiÅ¥ kontakty zo svojho existujúceho adresára.<br/>Momentálne je možné importovanie adries z formátu <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> alebo CSV (údaje oddeľované Äiarkou).';
$labels['done'] = 'Hotovo';
-
-// settings
$labels['settingsfor'] = 'Nastavenia pre';
-$labels['about'] = 'O programe';
-$labels['preferences'] = 'Vlastnosti';
+$labels['about'] = 'O systéme';
+$labels['preferences'] = 'Nastavenia';
$labels['userpreferences'] = 'Používateľské nastavenia';
$labels['editpreferences'] = 'Upraviť používateľské nastavenia';
-
-$labels['identities'] = 'Profily';
-$labels['manageidentities'] = 'SpravovaÅ¥ profily pre tento úÄet';
-$labels['newidentity'] = 'Nový profil';
-
+$labels['identities'] = 'Identity';
+$labels['manageidentities'] = 'SpravovaÅ¥ identity pre tento úÄet';
+$labels['newidentity'] = 'Nová identita';
$labels['newitem'] = 'Nová položka';
$labels['edititem'] = 'Upraviť položku';
-
-$labels['preferhtml'] = 'Uprednostniť HTML zobrazenie';
+$labels['preferhtml'] = 'Zobraziť HTML';
$labels['defaultcharset'] = 'Predvolené kódovanie';
$labels['htmlmessage'] = 'HTML správa';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
+$labels['messagepart'] = 'Časť';
+$labels['digitalsig'] = 'Digitálny podpis';
$labels['dateformat'] = 'Formát dátumu';
$labels['timeformat'] = 'Formát Äasu';
-$labels['prettydate'] = 'Krajší dátum';
-$labels['setdefault'] = 'Obnoviť pôvodné';
+$labels['prettydate'] = 'Pekné formáty dátumov';
+$labels['setdefault'] = 'Nastaviť pôvodné';
$labels['autodetect'] = 'Automaticky';
$labels['language'] = 'Jazyk';
$labels['timezone'] = 'Časová zóna';
@@ -402,36 +360,36 @@ $labels['signature'] = 'Podpis';
$labels['dstactive'] = 'Letný Äas';
$labels['showinextwin'] = 'Otvoriť správu v novom okne';
$labels['composeextwin'] = 'Písať v novom okne';
-$labels['htmleditor'] = 'Vytvoriť HTML správu';
-$labels['htmlonreply'] = 'len v odpovedi na HTML správy';
+$labels['htmleditor'] = 'Vytvoriť HTML správy';
+$labels['htmlonreply'] = 'len v odpovedi na HTML správu';
$labels['htmlonreplyandforward'] = 'pri preposielaní alebo odpovedi na HTML správu';
$labels['htmlsignature'] = 'HTML podpis';
-$labels['showemail'] = 'Show email address with display name';
-$labels['previewpane'] = 'Ukázať náhľad';
-$labels['skin'] = 'Vzhľad';
+$labels['showemail'] = 'Zobrazovať e-mailovú adresu so zobrazeným menom';
+$labels['previewpane'] = 'Zobraziť panel s náhľadom';
+$labels['skin'] = 'Vzhľad rozhrania';
$labels['logoutclear'] = 'Vyprázdniť kôš pri odhlásení';
$labels['logoutcompact'] = 'ZhustiÅ¥ prieÄinok DoruÄená poÅ¡ta pri odhlásení';
$labels['uisettings'] = 'Používateľské rozhranie';
$labels['serversettings'] = 'Nastavenia servera';
-$labels['mailboxview'] = 'Pohľad na schránku';
-$labels['mdnrequests'] = 'Upozornenia odosielateľovi';
-$labels['askuser'] = 'spýtať sa používateľa';
-$labels['autosend'] = 'poslať potvrdenie automaticky';
-$labels['autosendknown'] = 'poslať potvrdenie iba mojím kontaktom';
-$labels['autosendknownignore'] = 'poslať potvrdenie mojím kontaktom, inak ignorovať';
+$labels['mailboxview'] = 'Zobrazenie schránky';
+$labels['mdnrequests'] = 'Pri požiadaní o potvrdenie o doruÄení';
+$labels['askuser'] = 'opýtať sa používateľa';
+$labels['autosend'] = 'odoslať potvrdenie';
+$labels['autosendknown'] = 'odoslať potvrdenie iba mojím kontaktom, inokedy sa opýtať';
+$labels['autosendknownignore'] = 'odoslať potvrdenie mojím kontaktom, inokedy ignorovať';
$labels['ignore'] = 'ignorovať';
-$labels['readwhendeleted'] = 'OznaÄiÅ¥ správu';
-$labels['flagfordeletion'] = 'Pri odstránení správy iba oznaÄiÅ¥ správu ako odstránenú';
-$labels['skipdeleted'] = 'Nezobrazovať zmazané správy';
+$labels['readwhendeleted'] = 'OznaÄiÅ¥ správu ako preÄítanú pri jej vymazávaní';
+$labels['flagfordeletion'] = 'Namiesto vymazania správy ju iba oznaÄiÅ¥ ako odstránenú';
+$labels['skipdeleted'] = 'Nezobrazovať vymazané správy';
$labels['deletealways'] = 'Odstrániť správy, ak zlyhá ich presun do koša';
-$labels['deletejunk'] = 'HneÄ mazaÅ¥ správy v Spame';
-$labels['showremoteimages'] = 'Zobrazovať obrázky uložené mimo mail';
-$labels['fromknownsenders'] = 'od známych užívateľov';
+$labels['deletejunk'] = 'HneÄ vymazávaÅ¥ správy v prieÄinku s Nevyžiadanou poÅ¡tou';
+$labels['showremoteimages'] = 'Zobrazovať obrázky uložené mimo správy';
+$labels['fromknownsenders'] = 'od známych odosielateľov';
$labels['always'] = 'vždy';
-$labels['showinlineimages'] = 'Zobraziť pripojené obrázky pod správou';
+$labels['showinlineimages'] = 'Zobrazovať pripojené obrázky pod správou';
$labels['autosavedraft'] = 'Automaticky uložiť koncept';
$labels['everynminutes'] = 'každých $n minút';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
+$labels['refreshinterval'] = 'ObnoviÅ¥ (skontrolovaÅ¥ nové správy atÄ.)';
$labels['never'] = 'nikdy';
$labels['immediately'] = 'ihneÄ';
$labels['messagesdisplaying'] = 'Zobrazovanie správ';
@@ -439,13 +397,13 @@ $labels['messagescomposition'] = 'Vytváranie správ';
$labels['mimeparamfolding'] = 'Názvy príloh';
$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (other)';
+$labels['2047folding'] = 'Full RFC 2047 (iné)';
$labels['force7bit'] = 'Použiť kódovanie MIME pre 8-bitové znaky';
$labels['advancedoptions'] = 'Rozšírené nastavenia';
-$labels['focusonnewmessage'] = 'AktivovaÅ¥ okno prehliadaÄa pri príchozí správe';
-$labels['checkallfolders'] = 'Kontrolovať nové správy vo všetkých zložkách';
-$labels['displaynext'] = 'ZobraziÅ¥ ÄalÅ¡iu správu po zmazanie / prenosu správy';
-$labels['defaultfont'] = 'Prednastavený font HTML správ';
+$labels['focusonnewmessage'] = 'AktivovaÅ¥ okno prehliadaÄa pri novej správe';
+$labels['checkallfolders'] = 'KontrolovaÅ¥ nové správy vo vÅ¡etkých prieÄinkoch';
+$labels['displaynext'] = 'ZobraziÅ¥ ÄalÅ¡iu správu po vymazaní/prenose správy';
+$labels['defaultfont'] = 'Prednastavené písmo pre HTML správu';
$labels['mainoptions'] = 'Hlavné nastavenia';
$labels['browseroptions'] = 'Nastavenia prehliadania';
$labels['section'] = 'Sekcia';
@@ -454,90 +412,85 @@ $labels['newmessage'] = 'Nová správa';
$labels['signatureoptions'] = 'Nastavenia podpísania';
$labels['whenreplying'] = 'Pri odpovedaní';
$labels['replyempty'] = 'necitovať pôvodnú správu';
-$labels['replytopposting'] = 'zaÄaÅ¥ novú správu nad pôvodňou';
-$labels['replybottomposting'] = 'zaÄaÅ¥ novú správu pod pôvodňou';
+$labels['replytopposting'] = 'zaÄaÅ¥ novú správu nad citovanou správou';
+$labels['replybottomposting'] = 'zaÄaÅ¥ novú správu pod citovanou správou';
$labels['replyremovesignature'] = 'Pri odpovedaní odstrániť zo správy pôvodný podpis';
$labels['autoaddsignature'] = 'Automaticky pridať podpis';
$labels['newmessageonly'] = 'iba k novým správam';
-$labels['replyandforwardonly'] = 'len k odpovede a preposílanej správe';
-$labels['insertsignature'] = 'Vložit podpis';
-$labels['previewpanemarkread'] = 'OznaÄiÅ¥ zobrazenej správy ako preÄítané';
+$labels['replyandforwardonly'] = 'len k odpovediam a preposielaným správam';
+$labels['insertsignature'] = 'Vložiť podpis';
+$labels['previewpanemarkread'] = 'OznaÄiÅ¥ zobrazenú správu ako preÄítanú';
$labels['afternseconds'] = 'po $n sekundách';
-$labels['reqmdn'] = 'Vždy požadovaÅ¥ doruÄenku';
+$labels['reqmdn'] = 'Vždy požadovaÅ¥ potvrdenie o doruÄení';
$labels['reqdsn'] = 'Vždy vyžadovaÅ¥ potvrdenie o doruÄení správy';
-$labels['replysamefolder'] = 'UmietniÅ¥ odpoveÄ do adresára, kde je umiestnená správa, na ktorú sa odpovedalo';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Vynechať alternatívnu emailovú adresu pri automatickom dopĺňaní';
-$labels['listnamedisplay'] = 'Zobraziť kontakt ako';
+$labels['replysamefolder'] = 'UmiestňovaÅ¥ odpovede do rovnakého prieÄinka ako správu, na ktorú sa odpovedalo';
+$labels['defaultabook'] = 'Predvolený adresár kontaktov';
+$labels['autocompletesingle'] = 'Vynechať alternatívne emailové adresy pri automatickom dopĺňaní';
+$labels['listnamedisplay'] = 'Zobraziť kontakty ako';
$labels['spellcheckbeforesend'] = 'Skontrolovať pravopis pred odoslaním správy';
-$labels['spellcheckoptions'] = 'Voľby kontroly pravopisu';
+$labels['spellcheckoptions'] = 'Nastavenia kontroly pravopisu';
$labels['spellcheckignoresyms'] = 'Ignorovať slová so symbolmi';
$labels['spellcheckignorenums'] = 'IgnorovaÅ¥ slová s Äíslami';
$labels['spellcheckignorecaps'] = 'Ignorovať slová písané veľkými písmenami';
$labels['addtodict'] = 'Pridať do slovníka';
-$labels['mailtoprotohandler'] = 'Zaregistrovať handler pre odkazy „mailto:“';
-$labels['standardwindows'] = 'Handle popups as standard windows';
+$labels['mailtoprotohandler'] = 'Zaregistrovať handler pre odkazy typu „mailto:“';
+$labels['standardwindows'] = 'S vyskakovacími oknami pracovať ako so štandardnými oknami';
$labels['forwardmode'] = 'Preposielanie správ';
-$labels['inline'] = 'v tele spávy';
+$labels['inline'] = 'vo vnútri správy';
$labels['asattachment'] = 'ako príloha';
-
+$labels['replyallmode'] = 'Predvolená akcia pre tlaÄidlo [OdpovedaÅ¥ vÅ¡etkým]';
+$labels['replyalldefault'] = 'odpovedať všetkým';
+$labels['replyalllist'] = 'odpovedať len do mailing-listu (ak bol nájdený)';
$labels['folder'] = 'PrieÄinok';
$labels['folders'] = 'PrieÄinky';
-$labels['foldername'] = 'Názov prieÄinku';
+$labels['foldername'] = 'Názov prieÄinka';
$labels['subscribed'] = 'Prihlásený k odberu';
-$labels['messagecount'] = 'PoÄet správ';
+$labels['messagecount'] = 'Správy';
$labels['create'] = 'Vytvoriť';
-$labels['createfolder'] = 'Vytvor nový prieÄinok';
+$labels['createfolder'] = 'VytvoriÅ¥ nový prieÄinok';
$labels['managefolders'] = 'SpravovaÅ¥ prieÄinky';
$labels['specialfolders'] = 'Å peciálne prieÄinky';
$labels['properties'] = 'Vlastnosti';
-$labels['folderproperties'] = 'Vlastnosti adresára';
-$labels['parentfolder'] = 'RodiÄovský adresár';
+$labels['folderproperties'] = 'Vlastnosti prieÄinka';
+$labels['parentfolder'] = 'RodiÄovský prieÄinok';
$labels['location'] = 'Umiestnenie';
$labels['info'] = 'Informácia';
-$labels['getfoldersize'] = 'Kliknúť pre získanie leľkosti adresára';
-$labels['changesubscription'] = 'Kliknúť pre zmenu prihlásenia odberu';
+$labels['getfoldersize'] = 'Kliknúť pre zistenie veľkosti prieÄinka';
+$labels['changesubscription'] = 'Kliknúť pre zmenu prihlásení';
$labels['foldertype'] = 'Typ prieÄinka';
$labels['personalfolder'] = 'Súkromný prieÄinok';
-$labels['otherfolder'] = 'Iné užívateľove adresáre';
-$labels['sharedfolder'] = 'Verejný adresár';
-
-$labels['sortby'] = 'Triediť podľa';
-$labels['sortasc'] = 'Triediť vzostupne';
-$labels['sortdesc'] = 'Triediť zostupne';
-$labels['undo'] = 'Vrátiť';
-
+$labels['otherfolder'] = 'Iné prieÄinky používateľa';
+$labels['sharedfolder'] = 'Verejný prieÄinok';
+$labels['sortby'] = 'Zoradiť podľa';
+$labels['sortasc'] = 'Zoradiť vzostupne';
+$labels['sortdesc'] = 'Zoradiť zostupne';
+$labels['undo'] = 'Späť';
$labels['installedplugins'] = 'Nainštalované zásuvné moduly';
$labels['plugin'] = 'Zásuvný modul';
$labels['version'] = 'Verzia';
$labels['source'] = 'Zdroj';
$labels['license'] = 'Licencia';
$labels['support'] = 'Získať podporu';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'AngliÄtina';
-$labels['westerneuropean'] = 'Západná Európa';
-$labels['easterneuropean'] = 'Východná Európa';
+$labels['westerneuropean'] = 'Západoeurópske';
+$labels['easterneuropean'] = 'Východoeurópske';
$labels['southeasterneuropean'] = 'Juho-východná Európa';
$labels['baltic'] = 'Baltština';
-$labels['cyrillic'] = 'Cyriliky';
-$labels['arabic'] = 'ArabÄina';
-$labels['greek'] = 'GréÄtina';
-$labels['hebrew'] = 'HebrejÄina';
-$labels['turkish'] = 'Nordština';
-$labels['nordic'] = 'TureÄtina';
-$labels['thai'] = 'Tajština';
+$labels['cyrillic'] = 'Cyrilika';
+$labels['arabic'] = 'Arabsky';
+$labels['greek'] = 'Grécky';
+$labels['hebrew'] = 'Hebrejsky';
+$labels['turkish'] = 'Turecky';
+$labels['nordic'] = 'Nórsky';
+$labels['thai'] = 'Thajsky';
$labels['celtic'] = 'Keltština';
-$labels['vietnamese'] = 'VietnamÄina';
-$labels['japanese'] = 'JaponÄina';
-$labels['korean'] = 'KorejÄina';
-$labels['chinese'] = 'Čínština';
-
+$labels['vietnamese'] = 'Vietnamsky';
+$labels['japanese'] = 'Japonsky';
+$labels['korean'] = 'Kórejsky';
+$labels['chinese'] = 'Čínsky';
?>
diff --git a/program/localization/sk_SK/messages.inc b/program/localization/sk_SK/messages.inc
index 17aaa3a53..ece954d48 100644
--- a/program/localization/sk_SK/messages.inc
+++ b/program/localization/sk_SK/messages.inc
@@ -15,162 +15,162 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Vyskytla sa chyba!';
-$messages['loginfailed'] = 'Chybné prihlásenie';
-$messages['cookiesdisabled'] = 'Váš internetový prehliadaÄ nepodporuje cookies, ktoré sú potrebné pre prihlásenie';
-$messages['sessionerror'] = 'Vaše prihlásenie je neplatné alebo vypršala jeho platnosť';
-$messages['storageerror'] = 'Nepodarilo sa spojiť s IMAP serverom';
+$messages['loginfailed'] = 'Prihlasovanie bolo neúspešné.';
+$messages['cookiesdisabled'] = 'Váš internetový prehliadaÄ nepodporuje cookies, ktoré sú potrebné na prihlásenie.';
+$messages['sessionerror'] = 'Vaša relácia nie je platná alebo vypršala jej platnosť.';
+$messages['storageerror'] = 'Nepodarilo sa spojiť s úložným serverom.';
$messages['servererror'] = 'Chyba servera!';
$messages['servererrormsg'] = 'Chyba servera: $msg';
-$messages['dberror'] = 'Databázová chyba!';
-$messages['requesttimedout'] = 'Čas požiadavky vypršal';
-$messages['errorreadonly'] = 'Nemožno vykonaÅ¥ operáciu. Adresár je len na Äítanie';
-$messages['errornoperm'] = 'Nemožno vykonať operáciu. Prístup odmietnutý';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Chybný požiadavek. Žiadne údaje neboli uložené.';
-$messages['invalidhost'] = 'Neplatný názov servera';
-$messages['nomessagesfound'] = 'Vo Vašej schránke nie je žiadna správa';
-$messages['loggedout'] = 'Odhlásenie prebehlo úspešne. Dovidenia.';
-$messages['mailboxempty'] = 'Schránka je prázdna';
-$messages['refreshing'] = 'Refreshing...';
+$messages['dberror'] = 'Chyba databázy!';
+$messages['requesttimedout'] = 'Čas na vykonanie požiadavky uplynul';
+$messages['errorreadonly'] = 'Nemožno vykonaÅ¥ operáciu. PrieÄinok je urÄený len na Äítanie.';
+$messages['errornoperm'] = 'Nemožno vykonať operáciu. Prístup bol odmietnutý.';
+$messages['erroroverquota'] = 'Nemožno vykonať operáciu. Na disku nie je dostatok voľného miesta.';
+$messages['erroroverquotadelete'] = 'Na disku nie je dostatok voľného miesta. Vymažte nejakú správu pomocou klávesov SHIFT+DEL.';
+$messages['invalidrequest'] = 'Neplatná požiadavka! Neuložili sa žiadne údaje.';
+$messages['invalidhost'] = 'Neplatný názov servera.';
+$messages['nomessagesfound'] = 'Vo tejto schránke nie je žiadna správa.';
+$messages['loggedout'] = 'Odhlásenie prebehlo úspešne. Dovidenia!';
+$messages['mailboxempty'] = 'Schránka je prázdna.';
+$messages['refreshing'] = 'Obnovuje sa...';
$messages['loading'] = 'NaÄítava sa...';
-$messages['uploading'] = 'Nahrávám súbor...';
-$messages['uploadingmany'] = 'Nahrávam súbory...';
+$messages['uploading'] = 'Nahráva sa súbor...';
+$messages['uploadingmany'] = 'Nahrávajú sa súbory...';
$messages['loadingdata'] = 'NaÄítavajú sa údaje...';
$messages['checkingmail'] = 'Kontrolujú sa nové správy...';
$messages['sendingmessage'] = 'Správa sa odosiela...';
-$messages['messagesent'] = 'Správa bola úspešne odoslaná';
+$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['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.';
-$messages['blockedimages'] = 'Z bezpeÄnostných dôvodov sú v správe zablokované obrázky.';
-$messages['encryptedmessage'] = 'Táto správa je zašifrovaná, a nie je možné ju zobraziť!';
-$messages['nocontactsfound'] = 'Nemáte žiadne kontakty';
-$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'] = 'Pri ukladaní odoslanej správy nastala chyba';
-$messages['errorsaving'] = 'Vyskytla sa chyba pri ukladaní';
-$messages['errormoving'] = 'Správa sa nedá presunúť';
-$messages['errorcopying'] = 'Správa sa nedá skopírovať';
-$messages['errordeleting'] = 'Správa sa nedá zmazať';
-$messages['errormarking'] = 'Správa sa nedá oznaÄiÅ¥';
-$messages['deletecontactconfirm'] = 'Ste si istý, že chcete zmazať zvolený(é) kontakt(y)?';
-$messages['deletegroupconfirm'] = 'SkutoÄne chceÅ¡ zmazaÅ¥ vybranú skupinu?';
-$messages['deletemessagesconfirm'] = 'Ste si istý, že chcete zmazať zvolenú(é) správu(y)?';
-$messages['deletefolderconfirm'] = 'Ste si istý, že chcete zmazaÅ¥ tento prieÄinok?';
-$messages['purgefolderconfirm'] = 'Ste si istý, že chcete zmazaÅ¥ vÅ¡etky správy v tomto prieÄinku?';
-$messages['contactdeleting'] = 'Mažem kontakt(y)...';
-$messages['groupdeleting'] = 'Mažem skupinu...';
-$messages['folderdeleting'] = 'Odstraňuje sa prieÄinok ...';
-$messages['foldermoving'] = 'PreÄinok sa presúva ...';
-$messages['foldersubscribing'] = 'Prihlasujem sa k adresáru...';
-$messages['folderunsubscribing'] = 'Odhlasujem sa z adresára...';
-$messages['formincomplete'] = 'Formulár nie je kompletne vyplnený';
-$messages['noemailwarning'] = 'Prosím, vložte platnú emailovú adresu';
-$messages['nonamewarning'] = 'Prosím, zadajte meno';
-$messages['nopagesizewarning'] = 'Prosím, zadajte veľkosť strany';
-$messages['nosenderwarning'] = 'Prosím, zadajte adresu odosielateľa';
-$messages['norecipientwarning'] = 'Prosím, vložte aspoň jedného príjemcu';
-$messages['nosubjectwarning'] = 'Predmet správy je prázdny. Chcete ho teraz zadať?';
+$messages['messagesaved'] = 'Správa bola uložená medzi koncepty.';
+$messages['successfullysaved'] = 'Ukladanie bolo úspeÅ¡ne dokonÄ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 týmto menom už existuje.';
+$messages['blockedimages'] = 'Kvôli ochrane vášho súkromia boli v tejto správe zablokované vzdialené obrázky.';
+$messages['encryptedmessage'] = 'Táto správa je zaÅ¡ifrovaná, a nie je možné ju zobraziÅ¥. PrepáÄte!';
+$messages['nocontactsfound'] = 'Nenašli sa žiadne kontakty.';
+$messages['contactnotfound'] = 'Požadovaný kontakt sa nenašiel.';
+$messages['contactsearchonly'] = 'Zadajte nejaký výraz pre vyhľadanie kontaktov';
+$messages['sendingfailed'] = 'Nepodarilo sa odoslať správu.';
+$messages['senttooquickly'] = 'PoÄkajte $sec sekúnd pred odoslaním tejto správy.';
+$messages['errorsavingsent'] = 'PoÄas ukladania odoslanej správy sa vyskytla chyba.';
+$messages['errorsaving'] = 'PoÄas ukladania sa vyskytla chyba.';
+$messages['errormoving'] = 'Správy nemožno presunúť.';
+$messages['errorcopying'] = 'Správy nemožno skopírovať,';
+$messages['errordeleting'] = 'Správy nemožno vymazať.';
+$messages['errormarking'] = 'Nemožno oznaÄiÅ¥ správu/správy.';
+$messages['deletecontactconfirm'] = 'Naozaj chcete vymazať vybrané kontakty?';
+$messages['deletegroupconfirm'] = 'Naozaj chcete vymazať vybranú skupinu?';
+$messages['deletemessagesconfirm'] = 'Naozaj chcete vymazať vybrané správy?';
+$messages['deletefolderconfirm'] = 'Naozaj chcete vymazaÅ¥ tento prieÄinok?';
+$messages['purgefolderconfirm'] = 'Naozaj chcete vymazaÅ¥ vÅ¡etky správy v tomto prieÄinku?';
+$messages['contactdeleting'] = 'Vymazávajú sa kontakty...';
+$messages['groupdeleting'] = 'Vymazáva sa skupina...';
+$messages['folderdeleting'] = 'Vymazáva sa prieÄinok ...';
+$messages['foldermoving'] = 'Presúva sa prieÄinok...';
+$messages['foldersubscribing'] = 'Prebieha prihlasovanie k prieÄinku...';
+$messages['folderunsubscribing'] = 'Prebieha odhlasovanie z prieÄinka...';
+$messages['formincomplete'] = 'Formulár nie je kompletne vyplnený.';
+$messages['noemailwarning'] = 'Prosím zadajte platnú emailovú adresu.';
+$messages['nonamewarning'] = 'Prosím zadajte meno.';
+$messages['nopagesizewarning'] = 'Prosím zadajte veľkosť strany.';
+$messages['nosenderwarning'] = 'Prosím zadajte adresu odosielateľa.';
+$messages['norecipientwarning'] = 'Prosím zadajte aspoň jedného príjemcu.';
+$messages['nosubjectwarning'] = '"Predmet" správy je prázdny. Chcete ho teraz zadať?';
$messages['nobodywarning'] = 'Chcete odoslať správu bez textu?';
$messages['notsentwarning'] = 'Správa nebola odoslaná, chcete ju zrušiť?';
-$messages['noldapserver'] = 'Prosím, zvoľte LDAP server na vyhľadávanie';
-$messages['nosearchname'] = 'Prosím vložte meno alebo emailovú adresu';
-$messages['notuploadedwarning'] = 'EÅ¡te neboli nahrané vÅ¡etky prílohy. PoÄkajte prosím alebo nahrávanie zruÅ¡te.';
-$messages['searchsuccessful'] = 'nájdených $nr správ';
-$messages['contactsearchsuccessful'] = 'Bolo nájdených $nr kontaktov.';
-$messages['searchnomatch'] = 'Hľadaný výraz nebol nájdený';
+$messages['restoresavedcomposedata'] = 'Našla sa staršia správa, ktorú ste napísali ale neodoslali.\n\nPredmet: $subject\nUložené: $date\n\nChcete túto správu obnoviť?';
+$messages['noldapserver'] = 'Prosím vyberte server LDAP pre vyhľadávanie.';
+$messages['nosearchname'] = 'Prosím zadajte meno alebo emailovú adresu kontaktu.';
+$messages['notuploadedwarning'] = 'EÅ¡te neboli nahrané vÅ¡etky prílohy. Prosím Äakajte alebo nahrávanie zruÅ¡te.';
+$messages['searchsuccessful'] = 'nájdené správy: $nr.';
+$messages['contactsearchsuccessful'] = 'nájdené kontakty: $nr.';
+$messages['searchnomatch'] = 'Hľadaný výraz sa nenašiel.';
$messages['searching'] = 'Vyhľadáva sa...';
$messages['checking'] = 'Kontroluje sa...';
-$messages['nospellerrors'] = 'Pri kontrole pravopisu neboli nájdené chyby';
-$messages['folderdeleted'] = 'PrieÄinok bol zmazaný';
-$messages['foldersubscribed'] = 'Úspešne prihlásený k adresáru';
-$messages['folderunsubscribed'] = 'Úspešne odhlásený z adresára';
-$messages['folderpurged'] = 'Adresár bol vyprázdnený';
-$messages['folderexpunged'] = 'Adresár bol zhustený';
-$messages['deletedsuccessfully'] = 'Úspešne zmazané';
-$messages['converting'] = 'Odstraňuje sa formátovanie správy...';
-$messages['messageopenerror'] = 'Nedá sa naÄítaÅ¥ správa zo servera';
-$messages['fileuploaderror'] = 'NaÄítanie súboru nebolo úspeÅ¡né';
-$messages['filesizeerror'] = 'NaÄítavaný súbor prekroÄil maximálnu veľkosÅ¥ $size';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
-$messages['sourceisreadonly'] = 'Tento zdroj adries je len na Äítanie';
-$messages['errorsavingcontact'] = 'Nedá sa uložiť adresa kontaktu';
-$messages['movingmessage'] = 'Správa sa presúva...';
-$messages['copyingmessage'] = 'Správa sa kopíruje...';
-$messages['copyingcontact'] = 'Kopírujem kontakt(y)';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Mažem správu(y)...';
-$messages['markingmessage'] = 'OznaÄujem správu(y)...';
-$messages['addingmember'] = 'Pridávam kontakt(y) do skupiny...';
-$messages['removingmember'] = 'Odoberám kontakt(y) zo skupiny';
-$messages['receiptsent'] = 'Potvrdenie o prijatí správy bolo odoslané';
-$messages['errorsendingreceipt'] = 'Potvrdenie o prijatí správy sa nedalo odoslať';
-$messages['deleteidentityconfirm'] = 'SkutoÄne chcete zmazaÅ¥ túto identitu?';
-$messages['nodeletelastidentity'] = 'Identita sa nedá odstrániť, je posledná a musí zostať.';
-$messages['forbiddencharacter'] = 'Názov prieÄinka obsahuje nepovolený znak';
-$messages['selectimportfile'] = 'Zvoľte súbor, ktorý chcete naÄítaÅ¥';
-$messages['addresswriterror'] = 'Zvolený adresár kontaktov je iba na Äítanie';
-$messages['contactaddedtogroup'] = 'Kontakty boli úspešne presunuty do tejto skupiny';
-$messages['contactremovedfromgroup'] = 'Kontakty boli úspešne odstráneny z tejto skupiny';
-$messages['nogroupassignmentschanged'] = 'Priradenia do skupín neboli zmenené.';
-$messages['importwait'] = 'Prebieha import, poÄkajte ...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>ÚspeÅ¡ne sa naÄítalo $inserted kontaktov, preskoÄilo sa $skipped existujúcich záznamov</b>:<p><em>$names</em></p>';
-$messages['importconfirmskipped'] = '<b>PreskoÄených $skipped existujúcich záznamov</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operácia nie je povolená!';
-$messages['nofromaddress'] = 'Zvolená identita neobsahuje e-mailovú adresu';
-$messages['editorwarning'] = 'Prepnutie na editor obyÄajného textu spôsobí stratu formátovania. Chcete napriek tomu pokraÄovaÅ¥?';
-$messages['httpreceivedencrypterror'] = 'Vyskytla sa vážna chyba v konfigurácii. Kontaktujte bezodkladne administrátora. <b>Vaša správa nemohla byť odoslaná.</b>';
-$messages['smtpconnerror'] = 'Chyba SMTP: Pripojenie na server zlyhalo';
-$messages['smtpautherror'] = 'Chyba SMTP: Autorizácie zlyhala';
-$messages['smtpfromerror'] = 'Chyba SMTP: Nemožno nastaviť odosielateľa ($msg)';
-$messages['smtptoerror'] = 'Chyba SMTP: Nemožno pridať príjemca ($msg)';
-$messages['smtprecipientserror'] = 'Chyba SMTP: Nemožno spracovať zoznam príjemcov';
+$messages['nospellerrors'] = 'Pri kontrole pravopisu neboli nájdené chyby.';
+$messages['folderdeleted'] = 'PrieÄinok bol úspeÅ¡ne vymazaný.';
+$messages['foldersubscribed'] = 'Prihlásenie k prieÄinku bolo úspeÅ¡né.';
+$messages['folderunsubscribed'] = 'Odhlásenie z prieÄinka bolo úspeÅ¡né.';
+$messages['folderpurged'] = 'PrieÄinok bol úspeÅ¡ne vyprázdnený.';
+$messages['folderexpunged'] = 'Komprimovanie obsahu prieÄinka bolo úspeÅ¡né.';
+$messages['deletedsuccessfully'] = 'Vymazanie bolo úspešné.';
+$messages['converting'] = 'Odstraňuje sa formátovanie...';
+$messages['messageopenerror'] = 'Správu nemožno naÄítaÅ¥ zo servera.';
+$messages['fileuploaderror'] = 'Nahrávanie súboru bolo neúspešné.';
+$messages['filesizeerror'] = 'Nahraný súbor prekroÄil maximálnu veľkosÅ¥ $size.';
+$messages['copysuccess'] = 'PoÄet úspeÅ¡ne skopírovaných kontaktov: $nr.';
+$messages['movesuccess'] = 'PoÄet úspeÅ¡ne presunutých kontaktov: $nr.';
+$messages['copyerror'] = 'Kontakty nie je možné kopírovať.';
+$messages['moveerror'] = 'Kontakty nemožno presúvať.';
+$messages['sourceisreadonly'] = 'Tento zdroj adries je len na Äítanie.';
+$messages['errorsavingcontact'] = 'Nemožno uložiť adresu kontaktu.';
+$messages['movingmessage'] = 'Prebieha presúvanie správ(y)...';
+$messages['copyingmessage'] = 'Prebieha kopírovanie správ(y)...';
+$messages['copyingcontact'] = 'Prebieha kopírovanie kontaktov...';
+$messages['movingcontact'] = 'Presúvanie kontaktov...';
+$messages['deletingmessage'] = 'Prebieha vymazávanie správ(y)...';
+$messages['markingmessage'] = 'Prebieha oznaÄovanie správ(y)...';
+$messages['addingmember'] = 'Prebieha pridávanie kontaktov do skupiny...';
+$messages['removingmember'] = 'Prebieha odstraňovanie kontaktov zo skupiny...';
+$messages['receiptsent'] = 'Potvrdenie o preÄítaní bolo odoslané.';
+$messages['errorsendingreceipt'] = 'Potvrdenie nemožno odoslať.';
+$messages['deleteidentityconfirm'] = 'Naozaj chcete vymazať túto identitu?';
+$messages['nodeletelastidentity'] = 'Túto identitu nemožno odstrániť, pretože je posledná.';
+$messages['forbiddencharacter'] = 'Názov prieÄinka obsahuje nepovolený znak.';
+$messages['selectimportfile'] = 'Zvoľte súbor, ktorý chcete nahrať na server.';
+$messages['addresswriterror'] = 'Do vybraného adresára nie je možné zapisovať údaje.';
+$messages['contactaddedtogroup'] = 'Kontakty boli úspešne pridané do tejto skupiny.';
+$messages['contactremovedfromgroup'] = 'Kontakty boli úspešne odstránené z tejto skupiny.';
+$messages['nogroupassignmentschanged'] = 'Priradenia do skupín sa nezmenili.';
+$messages['importwait'] = 'Prebieha importovanie, prosím Äakajte...';
+$messages['importformaterror'] = 'Importovanie nebolo úspešné! Nahraný súbor nie je platným súborom údajov pre importovanie.';
+$messages['importconfirm'] = '<b>PoÄet úspeÅ¡ne naimportovaných kontaktov: $inserted</b>';
+$messages['importconfirmskipped'] = '<b>PoÄet preskoÄených existujúcich záznamov: $skipped</b>';
+$messages['importmessagesuccess'] = 'PoÄet úspeÅ¡ne naimportovaných správ: $nr';
+$messages['importmessageerror'] = 'Importovanie bolo neúspeÅ¡né! Odoslaný súbor nie je platným súborom pre správu alebo poÅ¡tový prieÄinok';
+$messages['opnotpermitted'] = 'Táto operácia nie je povolená!';
+$messages['nofromaddress'] = 'Pri vybranej identite chýba e-mailová adresa.';
+$messages['editorwarning'] = 'Prepnutie na editor Äistého textu spôsobí stratu formátovania. Naozaj chcete pokraÄovaÅ¥?';
+$messages['httpreceivedencrypterror'] = 'Vyskytla sa vážna chyba v konfigurácii. IhneÄ kontaktujte administrátora. <b>VaÅ¡u správu nemožno odoslaÅ¥.</b>';
+$messages['smtpconnerror'] = 'Chyba SMTP ($code): Neúspešné pripojenie k serveru.';
+$messages['smtpautherror'] = 'Chyba SMTP ($code): Neúspešná autentifikácia.';
+$messages['smtpfromerror'] = 'Chyba SMTP ($code): Nemožno nastaviť odosielateľa "$from" ($msg).';
+$messages['smtptoerror'] = 'Chyba SMTP ($code): Nemožno pridať príjemcu "$to" ($msg).';
+$messages['smtprecipientserror'] = 'Chyba SMTP: Nemožno spracovať zoznam príjemcov.';
$messages['smtperror'] = 'Chyba SMTP: $msg';
$messages['emailformaterror'] = 'Neplatná e-mailová adresa: $email';
-$messages['toomanyrecipients'] = 'PríliÅ¡ veľa príjemcov. ZmenÅ¡ite poÄet príjemcov na $max.';
-$messages['maxgroupmembersreached'] = 'PoÄet Älenov skupiny dosiahol maxima z $max';
-$messages['internalerror'] = 'Došlo k internej chybe. Skúste to znova';
-$messages['contactdelerror'] = 'Nemôžem vymazať kontakt(y)';
-$messages['contactdeleted'] = 'Kontakt(y) bol vymazaný';
-$messages['contactrestoreerror'] = 'Nemôžem obnoviť zmazané kontakty';
-$messages['contactrestored'] = 'Kontakty boli úspešne obnovené';
-$messages['groupdeleted'] = 'Skupina bola vymazaná';
-$messages['grouprenamed'] = 'Skupina bola premenovaná';
-$messages['groupcreated'] = 'Skupina bola vytvorená';
-$messages['savedsearchdeleted'] = 'Uložené vyhľadávanie bolo vymazané.';
-$messages['savedsearchdeleteerror'] = 'Nemôžem zmazať uložené vyhľadávanie.';
-$messages['savedsearchcreated'] = 'Uložené vyhľadávanie bolo vytvorené.';
-$messages['savedsearchcreateerror'] = 'Nemôžem vytvoriť uložené vyhľadávanie';
-$messages['messagedeleted'] = 'Správa(y) bola vymazaná';
-$messages['messagemoved'] = 'Správa(y) bola presunutá';
-$messages['messagecopied'] = 'Správa(y) bola skopírovaná';
-$messages['messagemarked'] = 'Správa(y) bola oznaÄená';
-$messages['autocompletechars'] = 'Zadajte najmenej $min znamkov pre automatické dopĺňanie';
-$messages['autocompletemore'] = 'Bolo nájdených viac záznamov. Napíšte prosím viac znakov.';
-$messages['namecannotbeempty'] = 'Meno nemôže byť prázdne';
-$messages['nametoolong'] = 'Meno je príliš dlhé';
-$messages['folderupdated'] = 'Adresár bol aktualizovaný';
-$messages['foldercreated'] = 'Adresár bol vytvorený';
-$messages['invalidimageformat'] = 'Zlý formát obrázku';
-$messages['mispellingsfound'] = 'V správe boli nájdené pravopisné chyby';
-$messages['parentnotwritable'] = 'Nemôžem vytvoriť/presunúť adresár do zvoleného nadradeného adresára. Nemáte oprávnenia na zmenu.';
+$messages['toomanyrecipients'] = 'PríliÅ¡ veľa príjemcov. Zredukujte poÄet príjemcov na $max.';
+$messages['maxgroupmembersreached'] = 'PoÄet Älenov skupiny prekraÄuje maximum: $max';
+$messages['internalerror'] = 'Došlo k internej chybe systému. Prosím skúste to ešte raz.';
+$messages['contactdelerror'] = 'Nemožno vymazať kontakt(y).';
+$messages['contactdeleted'] = 'Kontakty boli úspešne vymazané.';
+$messages['contactrestoreerror'] = 'Nemožno obnoviť vymazané kontakty.';
+$messages['contactrestored'] = 'Kontakty boli úspešne obnovené.';
+$messages['groupdeleted'] = 'Skupina bola úspešne vymazaná.';
+$messages['grouprenamed'] = 'Skupina bola úspešne premenovaná.';
+$messages['groupcreated'] = 'Skupina bola úspešne vytvorená.';
+$messages['savedsearchdeleted'] = 'Uložené vyhľadávanie bolo úspešne vymazané.';
+$messages['savedsearchdeleteerror'] = 'Nemožno vymazať uložené vyhľadávanie.';
+$messages['savedsearchcreated'] = 'Uložené vyhľadávanie bolo úspešne vytvorené.';
+$messages['savedsearchcreateerror'] = 'Nemožno vytvoriť uložené vyhľadávanie.';
+$messages['messagedeleted'] = 'Vymazanie správ(y) bolo úspešné.';
+$messages['messagemoved'] = 'Presunutie správ(y) bolo úspešné.';
+$messages['messagecopied'] = 'Kopírovanie správ(y) bolo úspešné.';
+$messages['messagemarked'] = 'OznaÄovanie správ(y) bolo úspeÅ¡né.';
+$messages['autocompletechars'] = 'Zadajte najmenej $min znakov pre automatické dopĺňanie.';
+$messages['autocompletemore'] = 'Našlo sa viacero záznamov. Zadajte prosím viac znakov.';
+$messages['namecannotbeempty'] = 'Meno nemôže byť prázdne.';
+$messages['nametoolong'] = 'Meno je príliš dlhé.';
+$messages['folderupdated'] = 'PrieÄinok bol úspeÅ¡n aktualizovaný.';
+$messages['foldercreated'] = 'PrieÄinok bol úspeÅ¡ne vytvorený.';
+$messages['invalidimageformat'] = 'Neplatný formát obrázku';
+$messages['mispellingsfound'] = 'V správe boli nájdené pravopisné chyby.';
+$messages['parentnotwritable'] = 'Nemožno vytvoriÅ¥/presunúť prieÄinok do vybraného rodiÄovského prieÄinka. Nemáte prístupové oprávnenia.';
$messages['messagetoobig'] = 'Časť správy je príliš veľká na spracovanie.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
+$messages['attachmentvalidationerror'] = 'UPOZORNENIE! Táto príloha je podozrivá, pretože jej typ sa nezhoduje s typom uvedeným v správe. Ak odosielateľovi prílohy nedôverujete, nemali by ste prílohu otváraÅ¥. Môže totiž obsahovaÅ¥ Å¡kodlivý obsah.<br/><br/><em>OÄakávaná hodnota: $expected; nájdená hodnota: $detected</em>';
+$messages['noscriptwarning'] = 'Upozornenie: Táto webmailová služba vyžaduje Javascript! Ak ju chcete používaÅ¥, prosím aktivujte Javascript v nastaveniach svojho prehliadaÄa.';
?>
diff --git a/program/localization/sl_SI/labels.inc b/program/localization/sl_SI/labels.inc
index c33ea479c..f1e9010d4 100644
--- a/program/localization/sl_SI/labels.inc
+++ b/program/localization/sl_SI/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Dobrodošli v $product';
$labels['username'] = 'Uporabniško ime';
$labels['password'] = 'Geslo';
$labels['server'] = 'Strežnik';
$labels['login'] = 'Prijava';
-
-// taskbar
$labels['logout'] = 'Odjava';
$labels['mail'] = 'E-Pošta';
$labels['settings'] = 'Osebne nastavitve';
$labels['addressbook'] = 'Stiki';
-
-// mailbox names
$labels['inbox'] = 'Prejeto';
$labels['drafts'] = 'Osnutki';
$labels['sent'] = 'Poslano';
$labels['trash'] = 'Smeti';
$labels['junk'] = 'Nezaželena sporoÄila';
$labels['show_real_foldernames'] = 'Prikaži prava imena za posebne mape';
-
-// message listing
$labels['subject'] = 'Zadeva';
$labels['from'] = 'Pošiljatelj';
$labels['sender'] = 'Pošiljatelj';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Prioriteta';
$labels['organization'] = 'Organizacija';
$labels['readstatus'] = 'Status';
$labels['listoptions'] = 'Možnosti prikaza...';
-
$labels['mailboxlist'] = 'Mape';
$labels['messagesfromto'] = 'SporoÄila $from do $to od $count';
$labels['threadsfromto'] = 'Nit $from do $to od $count';
$labels['messagenrof'] = 'SporoÄilo $nr od $count';
$labels['fromtoshort'] = '$from – $to od $count';
-
$labels['copy'] = 'Kopiraj';
$labels['move'] = 'Premakni';
$labels['moveto'] = 'Premakni v...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Prenesi';
$labels['open'] = 'Odpri';
$labels['showattachment'] = 'Prikaži';
$labels['showanyway'] = 'Prikaži';
-
$labels['filename'] = 'Ime datoteke';
$labels['filesize'] = 'Velikost datoteke';
-
$labels['addtoaddressbook'] = 'Dodaj med stike';
-
-// weekdays short
$labels['sun'] = 'ned';
$labels['mon'] = 'pon';
$labels['tue'] = 'tor';
@@ -82,8 +66,6 @@ $labels['wed'] = 'sre';
$labels['thu'] = 'Äet';
$labels['fri'] = 'pet';
$labels['sat'] = 'sob';
-
-// weekdays long
$labels['sunday'] = 'nedelja';
$labels['monday'] = 'ponedeljek';
$labels['tuesday'] = 'torek';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'sreda';
$labels['thursday'] = 'Äetrtek';
$labels['friday'] = 'petek';
$labels['saturday'] = 'sobota';
-
-// months short
$labels['jan'] = 'jan';
$labels['feb'] = 'feb';
$labels['mar'] = 'mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'sep';
$labels['oct'] = 'okt';
$labels['nov'] = 'nov';
$labels['dec'] = 'dec';
-
-// months long
$labels['longjan'] = 'januar';
$labels['longfeb'] = 'februar';
$labels['longmar'] = 'marec';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'september';
$labels['longoct'] = 'oktober';
$labels['longnov'] = 'november';
$labels['longdec'] = 'december';
-
$labels['today'] = 'Danes';
-
-// toolbar buttons
$labels['refresh'] = 'Osveži';
$labels['checkmail'] = 'Preglej nova sporoÄila';
$labels['compose'] = 'Sestavi sporoÄilo';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'VeÄ možnosti...';
$labels['more'] = 'VeÄ';
$labels['back'] = 'Nazaj';
$labels['options'] = 'Možnosti';
-
$labels['select'] = 'Izberi';
$labels['all'] = 'Vse';
$labels['none'] = 'Brez';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Razširi vse';
$labels['expand-unread'] = 'Razširi neprebrano';
$labels['collapse-all'] = 'Zloži vse';
$labels['threaded'] = 'Nitno';
-
$labels['autoexpand_threads'] = 'Razširi niti';
$labels['do_expand'] = 'vse niti';
$labels['expand_only_unread'] = 'samo niti z neprebranimi sporoÄili';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Seznam stolpcev';
$labels['listsorting'] = 'Urejanje stolpcev';
$labels['listorder'] = 'Vrstni red';
$labels['listmode'] = 'NaÄin prikaza seznama';
-
$labels['folderactions'] = 'Upravljanje map...';
$labels['compact'] = 'Stisni';
$labels['empty'] = 'Izprazni';
$labels['importmessages'] = 'Uvozi sporoÄila';
-
$labels['quota'] = 'Poraba prostora';
$labels['unknown'] = 'neznana';
$labels['unlimited'] = 'neomejena';
-
$labels['quicksearch'] = 'Hitri iskalnik';
$labels['resetsearch'] = 'PrekliÄi iskanje';
$labels['searchmod'] = 'Spremembe iskanja';
$labels['msgtext'] = 'Celotno sporoÄilo';
$labels['body'] = 'Vsebina sporoÄila';
$labels['type'] = 'Tip';
-
+$labels['namex'] = 'Ime';
$labels['openinextwin'] = 'Odpri v novem oknu';
$labels['emlsave'] = 'Prenos datoteke (.eml)';
$labels['changeformattext'] = 'Prikaži kot golo besedilo';
$labels['changeformathtml'] = 'Prikaži v formatu HTML';
-
-// message compose
$labels['editasnew'] = 'Uredi kot novo';
$labels['send'] = 'Pošlji';
$labels['sendmessage'] = 'PoÅ¡lji sporoÄilo';
@@ -224,26 +192,30 @@ $labels['returnreceipt'] = 'Potrdilo prejemnika';
$labels['dsn'] = 'Status dostave sporoÄila';
$labels['mailreplyintro'] = '$date, je $sender napisal';
$labels['originalmessage'] = 'Izvorno sporoÄilo';
-
$labels['editidents'] = 'Uredi identitete';
$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';
$labels['uploadprogress'] = '$percent ($current od $total)';
$labels['close'] = 'Zapri';
$labels['messageoptions'] = 'Možnosti';
-
$labels['low'] = 'Nizka';
$labels['lowest'] = 'Najnižja';
$labels['normal'] = 'ObiÄajna';
$labels['high'] = 'Visoka';
$labels['highest'] = 'Najvišja';
-
$labels['nosubject'] = '(brez naslova)';
$labels['showimages'] = 'Prikaži slike';
$labels['alwaysshow'] = 'Vedno prikaži slike od $sender';
@@ -251,25 +223,19 @@ $labels['isdraft'] = 'To je osnutek sporoÄila.';
$labels['andnmore'] = '$nr veÄ...';
$labels['togglemoreheaders'] = 'Prikaži veÄ glav sporoÄila';
$labels['togglefullheaders'] = 'Preklopi na neobdelan zapis glave sporoÄila';
-
$labels['htmltoggle'] = 'Obogateno besedilo (HTML)';
$labels['plaintoggle'] = 'Samo besedilo';
$labels['savesentmessagein'] = 'Shrani poslana sporoÄila v';
$labels['dontsave'] = 'Ne shrani';
$labels['maxuploadsize'] = 'NajveÄja dovoljena velikost datoteke je $size';
-
$labels['addcc'] = 'Dodaj Kp';
$labels['addbcc'] = 'Dodaj Skp';
$labels['addreplyto'] = 'Dodaj naslov za odgovor';
$labels['addfollowupto'] = 'Dodaj naslov za odgovor';
-
-// mdn
$labels['mdnrequest'] = 'PoÅ¡iljatelj tega sporoÄila je zaprosil za potrdilo o branju. Želite o tem obvestiti poÅ¡iljatelja?';
$labels['receiptread'] = 'Potrdilo o branju';
$labels['yourmessage'] = 'To je potrdilo o branju.';
$labels['receiptnote'] = 'Pozor: to je samo potrdilo, da je bilo vaÅ¡e sporoÄilo prikazano na prejemnikovem raÄunalniku. To Å¡e ne pomeni, da je prejemnik prebral ali razumel vsebino vaÅ¡ega sporoÄila.';
-
-// address boook
$labels['name'] = 'Ime za prikaz';
$labels['firstname'] = 'Ime';
$labels['surname'] = 'Priimek';
@@ -304,7 +270,6 @@ $labels['search'] = 'Iskanje';
$labels['advsearch'] = 'Napredno iskanje';
$labels['advanced'] = 'Napredno';
$labels['other'] = 'Ostalo';
-
$labels['typehome'] = 'Doma';
$labels['typework'] = 'Služba';
$labels['typeother'] = 'Ostalo';
@@ -319,14 +284,12 @@ $labels['typeassistant'] = 'PomoÄ';
$labels['typehomepage'] = 'DomaÄa stran';
$labels['typeblog'] = 'Blog';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Dodaj polje...';
$labels['addcontact'] = 'Dodaj izbrane stike v imenik';
$labels['editcontact'] = 'Uredi vizitko';
$labels['contacts'] = 'Stiki';
$labels['contactproperties'] = 'Lastnosti stika';
$labels['personalinfo'] = 'Osebni podatki';
-
$labels['edit'] = 'Uredi';
$labels['cancel'] = 'PrekliÄi';
$labels['save'] = 'Shrani';
@@ -335,7 +298,6 @@ $labels['rename'] = 'Preimenuj';
$labels['addphoto'] = 'Dodaj';
$labels['replacephoto'] = 'Zamenjaj';
$labels['uploadphoto'] = 'Naloži sliko';
-
$labels['newcontact'] = 'Dodaj vizitko';
$labels['deletecontact'] = 'Izbriši izbrane vizitke';
$labels['composeto'] = 'Sestavi sporoÄilo za';
@@ -349,42 +311,36 @@ $labels['newcontactgroup'] = 'Ustvari novo skupino stikov';
$labels['grouprename'] = 'Preimenuj skupino';
$labels['groupdelete'] = 'Izbriši skupino';
$labels['groupremoveselected'] = 'Odstrani izbrane stike iz skupine';
-
$labels['previouspage'] = 'Prejšnja stran';
$labels['firstpage'] = 'Prva stran';
$labels['nextpage'] = 'Naslednja stran';
$labels['lastpage'] = 'Zadnja stran';
-
$labels['group'] = 'Skupina';
$labels['groups'] = 'Skupine';
$labels['listgroup'] = 'IzpiÅ¡i seznam Älanov skupine';
$labels['personaladrbook'] = 'Stiki';
-
$labels['searchsave'] = 'Shrani iskanje';
$labels['searchdelete'] = 'Izbriši iskanje';
-
$labels['import'] = 'Uvozi';
$labels['importcontacts'] = 'Uvozi stike';
$labels['importfromfile'] = 'Uvozi iz datoteke:';
-$labels['importtarget'] = 'Dodaj nove stike v imenik:';
+$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';
-
-// settings
$labels['settingsfor'] = 'Nastavitve za';
$labels['about'] = 'Vizitka';
$labels['preferences'] = 'Nastavitve';
$labels['userpreferences'] = 'Uporabniške nastavitve';
$labels['editpreferences'] = 'Uredi uporabniške nastavitve';
-
$labels['identities'] = 'Identitete';
$labels['manageidentities'] = 'Upravljaj identitete za ta raÄun';
$labels['newidentity'] = 'Nova identiteta';
-
$labels['newitem'] = 'Nov predmet';
$labels['edititem'] = 'Uredi predmet';
-
$labels['preferhtml'] = 'Prednostno HTML';
$labels['defaultcharset'] = 'Privzeto kodiranje znakov';
$labels['htmlmessage'] = 'HTML sporoÄilo';
@@ -480,7 +436,6 @@ $labels['standardwindows'] = 'Prikaži pojavna okna kot obiÄajna';
$labels['forwardmode'] = 'Posredovanje sporoÄil';
$labels['inline'] = 'medvrstiÄno';
$labels['asattachment'] = 'Kot priponka';
-
$labels['folder'] = 'Mapa';
$labels['folders'] = 'Mape';
$labels['foldername'] = 'Ime mape';
@@ -501,26 +456,20 @@ $labels['foldertype'] = 'Tip mape';
$labels['personalfolder'] = 'Zasebna mapa';
$labels['otherfolder'] = 'Mapa drugega uporabnika';
$labels['sharedfolder'] = 'Javna mapa';
-
$labels['sortby'] = 'Uredi po';
$labels['sortasc'] = 'Uredi naraÅ¡ÄajoÄe';
$labels['sortdesc'] = 'Uredi padajoÄe';
$labels['undo'] = 'PrekliÄi';
-
$labels['installedplugins'] = 'NameÅ¡Äeni vtiÄniki';
$labels['plugin'] = 'VtiÄnik';
$labels['version'] = 'RazliÄica';
$labels['source'] = 'Vir';
$labels['license'] = 'Licenca';
$labels['support'] = 'Podpora';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Angleško';
$labels['westerneuropean'] = 'Zahodnoevropsko';
@@ -539,5 +488,4 @@ $labels['vietnamese'] = 'Vietnamsko';
$labels['japanese'] = 'Japonsko';
$labels['korean'] = 'Korejsko';
$labels['chinese'] = 'Kitajsko';
-
?>
diff --git a/program/localization/sl_SI/messages.inc b/program/localization/sl_SI/messages.inc
index dc731d01b..3d1ea677c 100644
--- a/program/localization/sl_SI/messages.inc
+++ b/program/localization/sl_SI/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Prišlo je do napake!';
$messages['loginfailed'] = 'Prijava ni uspela';
$messages['cookiesdisabled'] = 'Vaš spletni brskalnik ne sprejema piškotkov.';
@@ -46,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';
@@ -101,13 +101,16 @@ $messages['converting'] = 'Odstranjevanje nastavitev oblikovanja...';
$messages['messageopenerror'] = 'SporoÄila ni bilo mogoÄe prenesti iz strežnika';
$messages['fileuploaderror'] = 'Prenos datoteke je spodletel';
$messages['filesizeerror'] = 'Naložena datoteka presega najveÄjo dovoljeno velikost $size';
-$messages['copysuccess'] = '$nr naslovov je bilo uspešno prenešenih';
-$messages['copyerror'] = 'Nobenih naslovov ni bilo mogoÄe kopirati';
+$messages['copysuccess'] = 'Uspešno ste kopirali $nr stikov.';
+$messages['movesuccess'] = 'Uspešno ste premaknili $nr stikov.';
+$messages['copyerror'] = 'Stikov ni bilo mogoÄe kopirati.';
+$messages['moveerror'] = 'Stikov ni bilo mogoÄe premakniti.';
$messages['sourceisreadonly'] = 'Ta naslov je na voljo samo za branje';
$messages['errorsavingcontact'] = 'Stika ni bilo mogoÄe shraniti';
$messages['movingmessage'] = 'Premikanje sporoÄila...';
$messages['copyingmessage'] = 'Kopiranje sporoÄila...';
$messages['copyingcontact'] = 'Kopiranje stika/ov';
+$messages['movingcontact'] = 'Premikanje stika(ov)...';
$messages['deletingmessage'] = 'Brisanje sporoÄil/a';
$messages['markingmessage'] = 'OznaÄevanje sporoÄil/a';
$messages['addingmember'] = 'Dodajanje stika/ov v skupino...';
@@ -169,5 +172,4 @@ $messages['parentnotwritable'] = 'Podmape v tej mapi ni bilo mogoÄe ustvariti/p
$messages['messagetoobig'] = 'SporoÄilo je preveliko za obdelavo.';
$messages['attachmentvalidationerror'] = 'OPOZORILO! Priponka vsebuje sumljivo vsebino, saj tip priponke ne ustreza tipu, doloÄenemu v sporoÄilu. ÄŒe ne zaupate poÅ¡iljatelju, priponke v brskalniku ne odpirajte, saj lahko vsebuje zlonamerno vsebino. <br/><br/><em>PriÄakovano: $expected; Najdeno: $detected</em>';
$messages['noscriptwarning'] = 'Opozorilo: Ta spletna stran zahteva Javascript! Za uporabo jo vkljuÄite v nastavitvah vaÅ¡ega brskalnika.';
-
?>
diff --git a/program/localization/sq_AL/labels.inc b/program/localization/sq_AL/labels.inc
index e2cb6791b..fa822a728 100644
--- a/program/localization/sq_AL/labels.inc
+++ b/program/localization/sq_AL/labels.inc
@@ -15,66 +15,39 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Mirëseerdhe te $product';
$labels['username'] = 'Përdoruesi';
$labels['password'] = 'Fjalëkalimi';
$labels['server'] = 'Serveri';
$labels['login'] = 'Hyr';
-
-// taskbar
$labels['logout'] = 'Dil';
$labels['mail'] = 'Mesazhet';
$labels['settings'] = 'Konfigurimi Personal';
$labels['addressbook'] = 'Libri i Adresave';
-
-// mailbox names
$labels['inbox'] = 'Ardhjet';
$labels['drafts'] = 'Drafte';
$labels['sent'] = 'Dërguar';
$labels['trash'] = 'Fshirë';
$labels['junk'] = 'Reklama';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Tema';
$labels['from'] = 'Dërguesi';
-$labels['sender'] = 'Sender';
$labels['to'] = 'Marrësi';
$labels['cc'] = 'Kopje';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Reply-To';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Data';
$labels['size'] = 'Madhësia';
$labels['priority'] = 'Përparësia';
$labels['organization'] = 'Organizata';
-$labels['readstatus'] = 'Read status';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'Kutitë';
$labels['messagesfromto'] = 'Mesazhet $from në $to nga $count';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = 'Mesazhi $nr nga $count';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'Kopje';
-$labels['move'] = 'Move';
$labels['moveto'] = 'ço te...';
$labels['download'] = 'shkarko';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'Emër skedari';
$labels['filesize'] = 'Madhësi skedari';
-
$labels['addtoaddressbook'] = 'Shto në librin e adresave';
-
-// weekdays short
$labels['sun'] = 'Dje';
$labels['mon'] = 'Hën';
$labels['tue'] = 'Mar';
@@ -82,8 +55,6 @@ $labels['wed'] = 'Mër';
$labels['thu'] = 'Enj';
$labels['fri'] = 'Pre';
$labels['sat'] = 'Sht';
-
-// weekdays long
$labels['sunday'] = 'e djelë';
$labels['monday'] = 'e hënë';
$labels['tuesday'] = 'e martë';
@@ -91,50 +62,12 @@ $labels['wednesday'] = 'e mërkurë';
$labels['thursday'] = 'e enjte';
$labels['friday'] = 'e premte';
$labels['saturday'] = 'e shtunë';
-
-// months short
-$labels['jan'] = 'Jan';
-$labels['feb'] = 'Feb';
-$labels['mar'] = 'Mar';
-$labels['apr'] = 'Apr';
-$labels['may'] = 'May';
-$labels['jun'] = 'Jun';
-$labels['jul'] = 'Jul';
-$labels['aug'] = 'Aug';
-$labels['sep'] = 'Sep';
-$labels['oct'] = 'Oct';
-$labels['nov'] = 'Nov';
-$labels['dec'] = 'Dec';
-
-// months long
-$labels['longjan'] = 'January';
-$labels['longfeb'] = 'February';
-$labels['longmar'] = 'March';
-$labels['longapr'] = 'April';
-$labels['longmay'] = 'May';
-$labels['longjun'] = 'June';
-$labels['longjul'] = 'July';
-$labels['longaug'] = 'August';
-$labels['longsep'] = 'September';
-$labels['longoct'] = 'October';
-$labels['longnov'] = 'November';
-$labels['longdec'] = 'December';
-
$labels['today'] = 'sot';
-
-// toolbar buttons
-$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'Shiko për mesazhe të reja';
$labels['compose'] = 'Shkruaj një mesazh';
$labels['writenewmessage'] = 'Krijo një mesazh të ri';
-$labels['reply'] = 'Reply';
$labels['replytomessage'] = 'Ktheji përgjigje mesazhit';
$labels['replytoallmessage'] = 'Ktheji përgjigje dërguesit dhe të gjithë marrësve';
-$labels['replyall'] = 'Reply all';
-$labels['replylist'] = 'Reply list';
-$labels['forward'] = 'Forward';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'Pasoje mesazhin';
$labels['deletemessage'] = 'Fshije mesazhin';
$labels['movemessagetotrash'] = 'Hidhe mesazhin në kosh';
@@ -145,342 +78,94 @@ $labels['nextmessage'] = 'Shfaq mesazhin pasardhës';
$labels['lastmessage'] = 'Shfaq mesazhin e fundit';
$labels['backtolist'] = 'Kthehu te lista e mesazheve';
$labels['viewsource'] = 'Shfaq tekstin';
-$labels['mark'] = 'Mark';
$labels['markmessages'] = 'Shëno mesazhet';
$labels['markread'] = 'Si të lexuara';
$labels['markunread'] = 'Si të palexuara';
-$labels['markflagged'] = 'As flagged';
-$labels['markunflagged'] = 'As unflagged';
-$labels['moreactions'] = 'More actions...';
-$labels['more'] = 'More';
-$labels['back'] = 'Back';
-$labels['options'] = 'Options';
-
$labels['select'] = 'Zgjidh';
$labels['all'] = 'Të gjitha';
$labels['none'] = 'Asnjë';
-$labels['currpage'] = 'Current page';
$labels['unread'] = 'Palexuar';
-$labels['flagged'] = 'Flagged';
-$labels['unanswered'] = 'Unanswered';
-$labels['withattachment'] = 'With attachment';
-$labels['deleted'] = 'Deleted';
-$labels['undeleted'] = 'Not deleted';
-$labels['invert'] = 'Invert';
-$labels['filter'] = 'Filter';
-$labels['list'] = 'List';
-$labels['threads'] = 'Threads';
-$labels['expand-all'] = 'Expand All';
-$labels['expand-unread'] = 'Expand Unread';
-$labels['collapse-all'] = 'Collapse All';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
-$labels['fromto'] = 'From/To';
-$labels['flag'] = 'Flag';
-$labels['attachment'] = 'Attachment';
$labels['nonesort'] = 'Asnjë';
-$labels['sentdate'] = 'Sent date';
-$labels['arrival'] = 'Arrival date';
-$labels['asc'] = 'ascending';
-$labels['desc'] = 'descending';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'Zvogëlo';
$labels['empty'] = 'Boshatis';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Përdorimi i diskut';
$labels['unknown'] = 'i panjohur';
$labels['unlimited'] = 'i pakufizuar';
-
$labels['quicksearch'] = 'Kërkim i shpejtë';
$labels['resetsearch'] = 'Pastro kërkimin';
-$labels['searchmod'] = 'Search modifiers';
-$labels['msgtext'] = 'Entire message';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
-$labels['openinextwin'] = 'Open in new window';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
-$labels['editasnew'] = 'Edit as new';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'Dërgoje mesazhin tani';
$labels['savemessage'] = 'Ruaje si draft';
$labels['addattachment'] = 'Bashkangjit një skedar';
$labels['charset'] = 'Bashkësi shkronjash';
$labels['editortype'] = 'Lloj editori';
$labels['returnreceipt'] = 'Njoftim marrje';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'Kontroll gabimesh';
$labels['resumeediting'] = 'Vazhdo editimin';
$labels['revertto'] = 'Ktheje te';
-
-$labels['attach'] = 'Attach';
$labels['attachments'] = 'Bashkangjitjet';
$labels['upload'] = 'Ngarko';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'Mbyll';
-$labels['messageoptions'] = 'Message options...';
-
$labels['low'] = 'I ulët';
$labels['lowest'] = 'Më i ulëti';
$labels['normal'] = 'Normal';
$labels['high'] = 'I lartë';
$labels['highest'] = 'Më i larti';
-
$labels['nosubject'] = '(pa subjekt)';
$labels['showimages'] = 'Shfaq imazhet';
-$labels['alwaysshow'] = 'Always show images from $sender';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'TEXT';
-$labels['savesentmessagein'] = 'Save sent message in';
-$labels['dontsave'] = 'don\'t save';
-$labels['maxuploadsize'] = 'Maximum allowed file size is $size';
-
$labels['addcc'] = 'Shto Cc';
$labels['addbcc'] = 'Shto Bcc';
$labels['addreplyto'] = 'Shto Reply-To';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Dërguesi i këtij mesazhi ka kërkuar që të njoftohet kur ju të lexoni këtë mesazh. Dëshironi ta njoftoni dërguesin?';
$labels['receiptread'] = 'Njoftim Leximi';
$labels['yourmessage'] = 'Ky është një njoftim leximi për mesazhin tuaj';
$labels['receiptnote'] = 'Shënim: Ky njoftim tregon vetëm që mesazhi u shfaq në kompjuterin e marrësit. Nuk ka siguri që marrësi e ka lexuar ose e ka kuptuar përmbajtjen e mesazhit.';
-
-// address boook
$labels['name'] = 'Emri që thirret';
$labels['firstname'] = 'Emri';
$labels['surname'] = 'Mbiemri';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'E-Mail';
-$labels['phone'] = 'Phone';
-$labels['address'] = 'Address';
-$labels['street'] = 'Street';
-$labels['locality'] = 'City';
-$labels['zipcode'] = 'ZIP Code';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
-$labels['typemobile'] = 'Mobile';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'Shto një kontakt të ri';
$labels['editcontact'] = 'Ndrysho kontaktin';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
-$labels['personalinfo'] = 'Personal information';
-
$labels['edit'] = 'Ndrysho';
$labels['cancel'] = 'Anullo';
$labels['save'] = 'Ruaj';
$labels['delete'] = 'Fshi';
-$labels['rename'] = 'Rename';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'Krijo nje kartë të re kontakti';
$labels['deletecontact'] = 'Fshi kontaktet e zgjedhura';
$labels['composeto'] = 'Shkruaj email për';
$labels['contactsfromto'] = 'Kontaktet $from në $to nga $count';
$labels['print'] = 'Shtyp';
$labels['export'] = 'Eksporto';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
-$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'Shfaq grupin e mëparshëm';
$labels['firstpage'] = 'Shfaq grupin e parë';
$labels['nextpage'] = 'Shfaq grupin tjetër';
$labels['lastpage'] = 'Shfaq grupin e fundit';
-
-$labels['group'] = 'Group';
$labels['groups'] = 'Grupet';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Adresat Personale';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
-$labels['import'] = 'Import';
-$labels['importcontacts'] = 'Import contacts';
-$labels['importfromfile'] = 'Import from file:';
-$labels['importtarget'] = 'Add new contacts to address book:';
-$labels['importreplace'] = 'Replace the entire address book';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
-$labels['done'] = 'Done';
-
-// settings
$labels['settingsfor'] = 'Konfigurimet për';
-$labels['about'] = 'About';
$labels['preferences'] = 'Preferencat';
$labels['userpreferences'] = 'Preferencat e përdoruesit';
$labels['editpreferences'] = 'Ndrysho preferencat e përdoruesit';
-
$labels['identities'] = 'Identitetet';
$labels['manageidentities'] = 'Manaxho identitetet per këtë llogari';
$labels['newidentity'] = 'Identitet i ri';
-
$labels['newitem'] = 'Element i ri';
$labels['edititem'] = 'Ndrysho element';
-
$labels['preferhtml'] = 'Shfaq HTML';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'Mesazh HTML';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'Data të këndshme';
$labels['setdefault'] = 'Bëje identitet kryesor';
-$labels['autodetect'] = 'Auto';
$labels['language'] = 'Gjuha';
$labels['timezone'] = 'Brezi orar';
$labels['pagesize'] = 'Rreshtat për faqe';
$labels['signature'] = 'Nënshkrim';
$labels['dstactive'] = 'Ndryshim ore';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'Shkruaj mesazhe HTML';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'Nënshkrimi HTML';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Shiko si duket';
-$labels['skin'] = 'Interface skin';
-$labels['logoutclear'] = 'Clear Trash on logout';
-$labels['logoutcompact'] = 'Compact Inbox on logout';
-$labels['uisettings'] = 'User Interface';
-$labels['serversettings'] = 'Server Settings';
-$labels['mailboxview'] = 'Mailbox View';
-$labels['mdnrequests'] = 'On request for return receipt';
-$labels['askuser'] = 'ask me';
-$labels['autosend'] = 'send receipt';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
-$labels['ignore'] = 'ignore';
-$labels['readwhendeleted'] = 'Mark the message as read on delete';
-$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
-$labels['skipdeleted'] = 'Do not show deleted messages';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
-$labels['always'] = 'always';
-$labels['showinlineimages'] = 'Display attached images below the message';
$labels['autosavedraft'] = 'Ruaje automatikisht si draft';
-$labels['everynminutes'] = 'every $n minute(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'kurrë';
-$labels['immediately'] = 'immediately';
-$labels['messagesdisplaying'] = 'Displaying Messages';
-$labels['messagescomposition'] = 'Composing Messages';
-$labels['mimeparamfolding'] = 'Attachment names';
-$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
-$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (other)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
-$labels['advancedoptions'] = 'Advanced options';
-$labels['focusonnewmessage'] = 'Focus browser window on new message';
-$labels['checkallfolders'] = 'Check all folders for new messages';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
-$labels['section'] = 'Section';
-$labels['maintenance'] = 'Maintenance';
-$labels['newmessage'] = 'New Message';
-$labels['signatureoptions'] = 'Signature Options';
-$labels['whenreplying'] = 'When replying';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
-$labels['autoaddsignature'] = 'Automatically add signature';
-$labels['newmessageonly'] = 'new message only';
-$labels['replyandforwardonly'] = 'replies and forwards only';
-$labels['insertsignature'] = 'Insert signature';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'Kutia';
$labels['folders'] = 'Kutitë';
$labels['foldername'] = 'Emër kutie';
@@ -489,55 +174,7 @@ $labels['messagecount'] = 'Mesazhe';
$labels['create'] = 'Krijo';
$labels['createfolder'] = 'Krijo kuti të re';
$labels['managefolders'] = 'Sistemo kutitë';
-$labels['specialfolders'] = 'Special Folders';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'Rradhit sipas';
$labels['sortasc'] = 'Rradhitje rritëse';
$labels['sortdesc'] = 'Rradhitje zbritëse';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
-$labels['B'] = 'B';
-$labels['KB'] = 'KB';
-$labels['MB'] = 'MB';
-$labels['GB'] = 'GB';
-
-// character sets
-$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/sq_AL/messages.inc b/program/localization/sq_AL/messages.inc
index 5a18aafca..d4b981318 100644
--- a/program/localization/sq_AL/messages.inc
+++ b/program/localization/sq_AL/messages.inc
@@ -15,30 +15,14 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'Hyrja dështoi';
$messages['cookiesdisabled'] = 'Shfletuesi juaj nuk i pranon sheqerkat';
$messages['sessionerror'] = 'Sesioni juaj është i pavlefshëm ose i ka kaluar afati';
$messages['storageerror'] = 'Lidhja me serverin IMAP dështoi';
-$messages['servererror'] = 'Server Error!';
-$messages['servererrormsg'] = 'Server Error: $msg';
-$messages['dberror'] = 'Database Error!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Invalid request! No data was saved.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'Nuk ka mesazhe në këtë kuti postare';
$messages['loggedout'] = 'Sesionin e mbyllët me sukses. Mirupafshim!';
$messages['mailboxempty'] = 'Kutia postare është bosh';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'Po ngarkohet...';
-$messages['uploading'] = 'Uploading file...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'Po ngarkohen të dhëna...';
$messages['checkingmail'] = 'Po shoh për mesazhe të reja...';
$messages['sendingmessage'] = 'Po dërgoj mesazhin...';
@@ -48,129 +32,42 @@ $messages['messagesaved'] = 'Mesazhi u ruajt te kutia Drafte';
$messages['successfullysaved'] = 'U ruajt me sukses';
$messages['addedsuccessfully'] = 'Kontakti u shtua me sukses në librin e adresave';
$messages['contactexists'] = 'Këtë adresë e-mail e ka një kontakt tjetër';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'Për të mbrojtur fshehtësinë tuaj, imazhet e largëta të këtij mesazhi janë bllokuar.';
$messages['encryptedmessage'] = 'Ky është një mesazh i koduar dhe nuk mund te shfaqet. Më vjen keq!';
$messages['nocontactsfound'] = 'Nuk ka kontakte';
$messages['contactnotfound'] = 'Kontakti që kërkoni nuk gjendet';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'Dërgimi i mesazhit dështoi';
-$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
-$messages['errorsavingsent'] = 'An error occured while saving sent message.';
-$messages['errorsaving'] = 'Pati nje problem gjatë ruajtjes';
$messages['errormoving'] = 'Nuk e lëviza dot mesazhin';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'Nuk e fshiva dot mesazhin';
-$messages['errormarking'] = 'Could not mark the message(s).';
$messages['deletecontactconfirm'] = 'Me të vërtetë doni ti fshini kontaktet e zgjedhura?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'Me të vërtetë doni ti fshini mesazhet e zgjedhura?';
$messages['deletefolderconfirm'] = 'Me të vërtetë doni ta fshini këtë kuti?';
$messages['purgefolderconfirm'] = 'Me të vërtetë doni ti fshini të gjitha mesazhet në këtë kuti?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
-$messages['folderdeleting'] = 'Deleting folder...';
-$messages['foldermoving'] = 'Moving folder...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'Formulari nuk ishte i gjithi i plotësuar';
$messages['noemailwarning'] = 'Ju lutem jepni një adresë email të rregullt';
$messages['nonamewarning'] = 'Ju lutem jepni një emër';
$messages['nopagesizewarning'] = 'Ju lutem jepni nje madhësi për faqen';
-$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
$messages['norecipientwarning'] = 'Ju lutem shënoni të paktën një marrës';
$messages['nosubjectwarning'] = 'Fusha e temës është bosh. Dëshironi të shënoni një temë tani?';
$messages['nobodywarning'] = 'Ta dërgoj mesazhin pa tekst?';
$messages['notsentwarning'] = 'Mesazhi nuk u dërgua. Doni ta hidhni poshtë mesazhin?';
$messages['noldapserver'] = 'Ju lutem jepni një server ldap për të kërkuar';
$messages['nosearchname'] = 'Ju lutem jepni një adresë email ose një emër kontakti';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = 'U gjetën $nr mesazhe';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'Kërkimi nuk gjeti gjë';
$messages['searching'] = 'Po kërkoj...';
$messages['checking'] = 'Po kontrolloj...';
$messages['nospellerrors'] = 'Nuk u gjetën gabime';
$messages['folderdeleted'] = 'Kutia u fshi me sukses';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'U fshi me sukses';
$messages['converting'] = 'Po i heq formatimin mesazhit...';
$messages['messageopenerror'] = 'Nuk marr dot mesazhe nga serveri';
$messages['fileuploaderror'] = 'Ngarkimi i skedarit dështoi';
$messages['filesizeerror'] = 'Skedari i ngarkuar e kalon madhësinë kufi prej $size';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Ky burim adrese është vetëm i lexueshëm';
$messages['errorsavingcontact'] = 'Nuk e ruajta dot adresën e kontaktit';
$messages['movingmessage'] = 'Po lëviz mesazhin...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'U dërgua me sukses një njoftim leximi';
$messages['errorsendingreceipt'] = 'Nuk mund të dërgohet njoftimi';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'Ju nuk mund ta fshini këtë identitet sepse nuk ju ka mbetur tjetër.';
-$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
-$messages['selectimportfile'] = 'Please select a file to upload.';
-$messages['addresswriterror'] = 'The selected address book is not writeable.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
-$messages['importwait'] = 'Importing, please wait...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operation not permitted!';
-$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/sr_CS/labels.inc b/program/localization/sr_CS/labels.inc
index 4bdf25020..e2d40b1b6 100644
--- a/program/localization/sr_CS/labels.inc
+++ b/program/localization/sr_CS/labels.inc
@@ -15,66 +15,44 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Добродошли на $product';
$labels['username'] = 'КориÑничко име';
$labels['password'] = 'Лозинка';
$labels['server'] = 'Сервер';
$labels['login'] = 'Пријава';
-
-// taskbar
$labels['logout'] = 'Одјава';
$labels['mail'] = 'Сандуче';
$labels['settings'] = 'Подешавања';
$labels['addressbook'] = 'Именик';
-
-// mailbox names
$labels['inbox'] = 'Примљене';
$labels['drafts'] = 'U pripremi';
$labels['sent'] = 'ПоÑлате';
$labels['trash'] = 'Канта';
$labels['junk'] = 'Смеће';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'ÐаÑлов';
$labels['from'] = 'Од';
-$labels['sender'] = 'Sender';
$labels['to'] = 'За';
$labels['cc'] = 'Cc';
$labels['bcc'] = 'Bcc';
$labels['replyto'] = 'Одговори';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'Датум';
$labels['size'] = 'Величина';
$labels['priority'] = 'Приоритет';
$labels['organization'] = 'Организација';
$labels['readstatus'] = 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ð¾Ñ€ÑƒÐºÐµ';
$labels['listoptions'] = 'ИзлиÑтај опције...';
-
$labels['mailboxlist'] = 'ФаÑцикле';
$labels['messagesfromto'] = 'Поруке $from до $to од укупно $count';
$labels['threadsfromto'] = 'Страница $from до $to од $count';
$labels['messagenrof'] = 'Порука број $nr од $count';
$labels['fromtoshort'] = '$from – $to од $count';
-
$labels['copy'] = 'Копирај';
$labels['move'] = 'Пребаци';
$labels['moveto'] = 'Пребаци у...';
$labels['download'] = 'Преузми (Ñкидање)';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'Име датотекеe';
$labels['filesize'] = 'Величина датотеке';
-
$labels['addtoaddressbook'] = 'Додај у именик';
-
-// weekdays short
$labels['sun'] = 'Ðед';
$labels['mon'] = 'Пон';
$labels['tue'] = 'Уто';
@@ -82,8 +60,6 @@ $labels['wed'] = 'Сре';
$labels['thu'] = 'Чет';
$labels['fri'] = 'Пет';
$labels['sat'] = 'Суб';
-
-// weekdays long
$labels['sunday'] = 'Ðедеља';
$labels['monday'] = 'Понедељак';
$labels['tuesday'] = 'Уторак';
@@ -91,8 +67,6 @@ $labels['wednesday'] = 'Среда';
$labels['thursday'] = 'Четвртак';
$labels['friday'] = 'Петак';
$labels['saturday'] = 'Субота';
-
-// months short
$labels['jan'] = 'Јан';
$labels['feb'] = 'Феб';
$labels['mar'] = 'Мар';
@@ -105,8 +79,6 @@ $labels['sep'] = 'Сеп';
$labels['oct'] = 'Окт';
$labels['nov'] = 'Ðов';
$labels['dec'] = 'Дец';
-
-// months long
$labels['longjan'] = 'Јануар';
$labels['longfeb'] = 'Фебруар';
$labels['longmar'] = 'Март';
@@ -119,10 +91,7 @@ $labels['longsep'] = 'Септембар';
$labels['longoct'] = 'Октобар';
$labels['longnov'] = 'Ðовембар';
$labels['longdec'] = 'Децембар';
-
$labels['today'] = 'ДанаÑ';
-
-// toolbar buttons
$labels['refresh'] = 'ОÑвежи';
$labels['checkmail'] = 'Провера нових порука';
$labels['compose'] = 'Ðова порука';
@@ -133,7 +102,6 @@ $labels['replytoallmessage'] = 'Одговори пошиљаоцу и Ñвим
$labels['replyall'] = 'Одговори Ñвима';
$labels['replylist'] = 'ЛиÑта за одговоре';
$labels['forward'] = 'ПроÑледи';
-$labels['forwardinline'] = 'Forward inline';
$labels['forwardattachment'] = 'ПроÑледи као прилог';
$labels['forwardmessage'] = 'ПроÑледи поруку';
$labels['deletemessage'] = 'Избриши поруку';
@@ -155,7 +123,6 @@ $labels['moreactions'] = 'ОÑтале радње...';
$labels['more'] = 'Више';
$labels['back'] = 'Ðазад';
$labels['options'] = 'Опције';
-
$labels['select'] = 'Одабери';
$labels['all'] = 'Све';
$labels['none'] = 'Ðишта';
@@ -163,20 +130,13 @@ $labels['currpage'] = 'Тренутна Ñтраница';
$labels['unread'] = 'Ðепрочитане';
$labels['flagged'] = 'Означено';
$labels['unanswered'] = 'Ðеодговорено';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'ОбриÑано';
-$labels['undeleted'] = 'Not deleted';
$labels['invert'] = 'Уведи';
$labels['filter'] = 'Филтер';
$labels['list'] = 'ЛиÑта';
$labels['threads'] = 'Ðити';
$labels['expand-all'] = 'Прошири Ñве';
-$labels['expand-unread'] = 'Expand Unread';
$labels['collapse-all'] = 'Сажми Ñве';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
$labels['expand_only_unread'] = 'Ñамо Ñа непрочитаним порукама';
$labels['fromto'] = 'Од/За';
$labels['flag'] = 'ЗаÑтава';
@@ -188,33 +148,19 @@ $labels['asc'] = 'раÑтући';
$labels['desc'] = 'опадајући';
$labels['listcolumns'] = 'ЛиÑÑ‚ колона';
$labels['listsorting'] = 'Сортирање колонe';
-$labels['listorder'] = 'Sorting order';
$labels['listmode'] = 'ЛиÑÑ‚ режим приказивања';
-
$labels['folderactions'] = 'ПоÑтавке фаÑцикле';
$labels['compact'] = 'Компакција';
$labels['empty'] = 'ИÑпразни';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Квота';
$labels['unknown'] = 'непозната';
$labels['unlimited'] = 'беÑконачна';
-
$labels['quicksearch'] = 'Брза претрага';
$labels['resetsearch'] = 'Прикажи Ñве поруке';
-$labels['searchmod'] = 'Search modifiers';
$labels['msgtext'] = 'Цела порука';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'Отвори у новом прозору';
$labels['emlsave'] = 'Довнлоад (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'Модификуј као ново';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'Пошаљи поруку';
$labels['savemessage'] = 'Сачувај у Снимљене';
$labels['addattachment'] = 'Приложи датотеку';
@@ -224,52 +170,37 @@ $labels['returnreceipt'] = 'Потврда о приÑпећу';
$labels['dsn'] = 'Обавештење о ÑтатуÑу Ñлања поруке';
$labels['mailreplyintro'] = 'Дана $date, $sender је напиÑао:';
$labels['originalmessage'] = 'Оригинална порука';
-
$labels['editidents'] = 'Модификуј пÑеудониме';
$labels['spellcheck'] = 'Провера правопиÑа';
$labels['checkspelling'] = 'Провера правопиÑа';
$labels['resumeediting'] = 'Повратак у режим пиÑања';
$labels['revertto'] = 'Врати Ñе на';
-
$labels['attach'] = 'Приложи';
$labels['attachments'] = 'Прилози';
$labels['upload'] = 'Додај';
$labels['uploadprogress'] = '$percent ($current од $total)';
$labels['close'] = 'Затвори';
$labels['messageoptions'] = 'Опције поруке';
-
$labels['low'] = 'Ðизак';
$labels['lowest'] = 'Ðајнижи';
$labels['normal'] = 'Средњи';
$labels['high'] = 'ВиÑок';
$labels['highest'] = 'Ðајвиши';
-
$labels['nosubject'] = '(без наÑлова)';
$labels['showimages'] = 'Прикажи Ñлике';
$labels['alwaysshow'] = 'Увек покажи Ñлике од $sender';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Обичан текÑÑ‚';
$labels['savesentmessagein'] = 'ПоÑлате поруке Ñачувај у';
$labels['dontsave'] = 'Ðе Ñачувај';
$labels['maxuploadsize'] = 'МакÑимална величина податка је $size';
-
$labels['addcc'] = 'Додај Cc';
$labels['addbcc'] = 'Додај Bcc';
$labels['addreplyto'] = 'Додај Одговор-за';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Пошиљалац ове поруке је замолио да буде обавештен када прочитате ову поруку. Да ли желите да обавеÑтите пошиљаоца?';
$labels['receiptread'] = 'Обавештење о приÑпећу (прочитана порука)';
$labels['yourmessage'] = 'Ово је обавештење о приÑпећу за вашу поруку';
$labels['receiptnote'] = 'Пажња: Ово обавештење Ñамо потврђује да је порука приказана на рачунару примаоца. Ðе поÑтоји гаранција да је прималац прочитао или разумео Ñадржај поруке.';
-
-// address boook
$labels['name'] = 'Пуно име';
$labels['firstname'] = 'Име';
$labels['surname'] = 'Презиме';
@@ -304,7 +235,6 @@ $labels['search'] = 'Тражи';
$labels['advsearch'] = 'Ðапредна претрага';
$labels['advanced'] = 'Ðапредно';
$labels['other'] = 'ОÑтало';
-
$labels['typehome'] = 'Кућа';
$labels['typework'] = 'ПоÑао';
$labels['typeother'] = 'ОÑтало';
@@ -319,14 +249,12 @@ $labels['typeassistant'] = 'ÐÑиÑтент';
$labels['typehomepage'] = 'Почетна Ñтраница';
$labels['typeblog'] = 'Блог';
$labels['typeprofile'] = 'Профил';
-
$labels['addfield'] = 'Додај поље';
$labels['addcontact'] = 'Додај нови контакт';
$labels['editcontact'] = 'Измени контакт';
$labels['contacts'] = 'Конакти';
$labels['contactproperties'] = 'СвојÑтва контакта';
$labels['personalinfo'] = 'Личне информације';
-
$labels['edit'] = 'Измени';
$labels['cancel'] = 'Откажи';
$labels['save'] = 'Сачувај';
@@ -335,61 +263,43 @@ $labels['rename'] = 'Преименуј';
$labels['addphoto'] = 'Додај';
$labels['replacephoto'] = 'Измени';
$labels['uploadphoto'] = 'ПоÑтави фотографију';
-
$labels['newcontact'] = 'Додај нови контакт';
$labels['deletecontact'] = 'Обриши одабране контакте';
$labels['composeto'] = 'Ðапиши поруку...';
$labels['contactsfromto'] = 'Контакти $from до $to од укупно $count';
$labels['print'] = 'Штампај';
$labels['export'] = 'Извези';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'Извези конакте у vCard формату';
$labels['newcontactgroup'] = 'Креирај нову контакт групу';
$labels['grouprename'] = 'Преименуј групу';
$labels['groupdelete'] = 'Обриши групу';
$labels['groupremoveselected'] = 'Избриши изабране контакте из групе';
-
$labels['previouspage'] = 'Прикажи претходну Ñтрану';
$labels['firstpage'] = 'Прикажи први Ñкуп';
$labels['nextpage'] = 'Прикажи Ñледећу Ñтрану';
$labels['lastpage'] = 'Прикажи поÑледњи Ñкуп';
-
$labels['group'] = 'Група';
$labels['groups'] = 'Групе';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'Личне адреÑе';
-
$labels['searchsave'] = 'Сачувај претрагу';
$labels['searchdelete'] = 'Избриши претрагу';
-
$labels['import'] = 'Увези';
$labels['importcontacts'] = 'Увези контакте';
$labels['importfromfile'] = 'Увези из датотеке:';
-$labels['importtarget'] = 'Додај нове контакте у адреÑар';
$labels['importreplace'] = 'Измени цели адреÑар';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'Готово';
-
-// settings
$labels['settingsfor'] = 'Подешавања за';
$labels['about'] = 'Инфо';
$labels['preferences'] = 'Подешавања';
$labels['userpreferences'] = 'Општа подешавања';
$labels['editpreferences'] = 'Измена општих подешавања';
-
$labels['identities'] = 'Идентитети';
$labels['manageidentities'] = 'ПодеÑи идентитете за овај налог';
$labels['newidentity'] = 'Додај идентитет';
-
$labels['newitem'] = 'Ðова Ñтавка';
$labels['edititem'] = 'Измена Ñтавке';
-
$labels['preferhtml'] = 'ПредноÑÑ‚ дај ХТМЛ формату';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'ХТМЛ формат поруке';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
$labels['dateformat'] = 'Формат датума';
$labels['timeformat'] = 'Формат времена';
$labels['prettydate'] = 'Форматирани датум';
@@ -400,13 +310,9 @@ $labels['timezone'] = 'ВременÑка зона';
$labels['pagesize'] = 'Редова по Ñтрани';
$labels['signature'] = 'ПотпиÑ';
$labels['dstactive'] = 'Летње померање времена';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'СаÑтави HTML поруке';
$labels['htmlonreply'] = 'Ñамо при одговору на HTML поруку';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'HTML потпиÑ';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Прикажи панел за преглед';
$labels['skin'] = 'ИнтерфејÑ';
$labels['logoutclear'] = 'Избриши Ñмеће при логовању';
@@ -414,24 +320,13 @@ $labels['logoutcompact'] = 'Компактно Ñандуче при логовÐ
$labels['uisettings'] = 'КориÑнички интерфејÑ';
$labels['serversettings'] = 'ПоÑтавке Ñервера';
$labels['mailboxview'] = 'Преглед Ñандучета';
-$labels['mdnrequests'] = 'On request for return receipt';
$labels['askuser'] = 'питај ме';
-$labels['autosend'] = 'send receipt';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['ignore'] = 'игнориÑати';
-$labels['readwhendeleted'] = 'Mark the message as read on delete';
-$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
$labels['skipdeleted'] = 'Ðе приказуј избриÑане поруке';
$labels['deletealways'] = 'Ðко Ñлање поруке у отпад не уÑпе, обришите их';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
$labels['always'] = 'увек';
$labels['showinlineimages'] = 'Покажи приложене Ñлике иÑпод поруке';
$labels['autosavedraft'] = 'ÐутоматÑки чувај у Снимљене';
-$labels['everynminutes'] = 'every $n minute(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'никад';
$labels['immediately'] = 'одмах';
$labels['messagesdisplaying'] = 'прикажи поруке';
@@ -440,7 +335,6 @@ $labels['mimeparamfolding'] = 'имена прилога';
$labels['2231folding'] = 'Full RFC 2231 (тхундербирд )';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'Full RFC 2047 (други)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
$labels['advancedoptions'] = 'Ðапредне опције';
$labels['focusonnewmessage'] = 'ФокуÑирати прозор претраживача на новој поруци';
$labels['checkallfolders'] = 'Проверите Ñве фаÑцикле за нове поруке';
@@ -453,7 +347,6 @@ $labels['maintenance'] = 'Поправке';
$labels['newmessage'] = 'Ðова порука';
$labels['signatureoptions'] = 'Опције потпиÑа';
$labels['whenreplying'] = 'При одговору';
-$labels['replyempty'] = 'do not quote the original message';
$labels['replytopposting'] = 'Почни нову поруку преко оригинала';
$labels['replybottomposting'] = 'Почни нову поруку иÑпод оригинала';
$labels['replyremovesignature'] = 'При одговору одÑтрани оригинални Ð¿Ð¾Ñ‚Ð¿Ð¸Ñ Ð¸Ð· поруке';
@@ -466,21 +359,12 @@ $labels['afternseconds'] = 'након $n Ñекунди';
$labels['reqmdn'] = 'Увек затражи повратну Ñкрипту';
$labels['reqdsn'] = 'Увек затражи обавештење о ÑтатуÑу Ñлања поруке';
$labels['replysamefolder'] = 'Сачувај одговоре у фаÑциклу поруке на коју Ñе одговара';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
$labels['listnamedisplay'] = 'ЛиÑти контакате као';
$labels['spellcheckbeforesend'] = 'Проверите Ð¿Ñ€Ð°Ð²Ð¾Ð¿Ð¸Ñ Ð¿Ñ€Ðµ Ñлања поруке';
$labels['spellcheckoptions'] = 'Опције Провере правопиÑа';
$labels['spellcheckignoresyms'] = 'игнориши речи Ñа Ñимболима';
$labels['spellcheckignorenums'] = 'игнориши речи Ñа бројевима';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
$labels['addtodict'] = 'Додај у речник';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'ФаÑцикла';
$labels['folders'] = 'ФаÑцикле';
$labels['foldername'] = 'Име фаÑцикле';
@@ -501,26 +385,19 @@ $labels['foldertype'] = 'типа фаÑцикле';
$labels['personalfolder'] = 'Приватна фаÑцикла';
$labels['otherfolder'] = 'ФаÑцикла Других КориÑникa';
$labels['sharedfolder'] = 'Јавна фаÑцикла';
-
$labels['sortby'] = 'Сортирај по';
$labels['sortasc'] = 'Сортирај раÑтуће';
$labels['sortdesc'] = 'Сортирај опадајуће';
$labels['undo'] = 'Унатраг';
-
-$labels['installedplugins'] = 'Installed plugins';
$labels['plugin'] = 'Додаци';
$labels['version'] = 'Верзија';
$labels['source'] = 'Извор';
$labels['license'] = 'Лиценца';
$labels['support'] = 'подршка';
-
-// units
$labels['B'] = 'Б';
$labels['KB'] = 'КБ';
$labels['MB'] = 'МБ';
$labels['GB'] = 'ГБ';
-
-// character sets
$labels['unicode'] = 'Универзални код';
$labels['english'] = 'ЕнглеÑки';
$labels['westerneuropean'] = 'Западна Европа';
@@ -539,5 +416,4 @@ $labels['vietnamese'] = 'ВијетнамÑки';
$labels['japanese'] = 'ЈапанÑки';
$labels['korean'] = 'КореанÑки';
$labels['chinese'] = 'КинеÑки';
-
?>
diff --git a/program/localization/sr_CS/messages.inc b/program/localization/sr_CS/messages.inc
index 016cef163..7a4c89356 100644
--- a/program/localization/sr_CS/messages.inc
+++ b/program/localization/sr_CS/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Дошло је до грешке!';
$messages['loginfailed'] = 'ÐеуÑпешно пријављивање';
$messages['cookiesdisabled'] = 'Ваш интернет прегледач не подржава колачиће';
@@ -28,8 +26,6 @@ $messages['dberror'] = 'Грешка у бази података!';
$messages['requesttimedout'] = 'Захтев је иÑтекао';
$messages['errorreadonly'] = 'Ðе може да изврши операцију. ФаÑцикла Ñе може Ñамо читати.';
$messages['errornoperm'] = 'Извршење операције није могуће. Одбијен захтев за дозволу.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'Погрешан захтев! Подаци ниÑу Ñачувани.';
$messages['invalidhost'] = 'Погрешно име Ñервера.';
$messages['nomessagesfound'] = 'Ðемате порука у Ñандучету.';
@@ -56,8 +52,6 @@ $messages['contactnotfound'] = 'Жељени контакт није нађен'
$messages['contactsearchonly'] = 'УнеÑите шта тражите да пронађете контакте';
$messages['sendingfailed'] = 'Грешка при Ñлању поруке';
$messages['senttooquickly'] = 'Молимо Ð’Ð°Ñ Ð´Ð° Ñачекате $sec Ñекунд(и) пре него пошаљете ову поруку';
-$messages['errorsavingsent'] = 'Приликом похрањивања поÑлате поруке деÑила Ñе грешка';
-$messages['errorsaving'] = 'Грешка при Ñнимању поруке';
$messages['errormoving'] = 'Грешка при премештању поруке';
$messages['errorcopying'] = 'Копирање поруке није било уÑпешно';
$messages['errordeleting'] = 'Грешка при бриÑању поруке';
@@ -101,16 +95,11 @@ $messages['converting'] = 'Уклањање форматирања из пору
$messages['messageopenerror'] = 'Порука Ñе не може учитати Ñа Ñервера';
$messages['fileuploaderror'] = 'Слање датотеке неуÑпешно';
$messages['filesizeerror'] = 'ПоÑлата датотека не може да прекорачи величину од $size';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Овај извор адреÑе је Ñамо за читање';
$messages['errorsavingcontact'] = 'ÐеуÑпело Ñнимање адреÑе контакта';
$messages['movingmessage'] = 'Премештам поруку...';
$messages['copyingmessage'] = 'Копирам поруке...';
$messages['copyingcontact'] = 'Умножава контакте...';
-$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'бришем поруке...';
$messages['markingmessage'] = 'Означавам поруке...';
$messages['addingmember'] = 'Додаје контакте у групу...';
@@ -129,8 +118,6 @@ $messages['importwait'] = 'Увоз података, молимо ÑачекаÑ
$messages['importformaterror'] = 'Увоз је неуÑпешан! ПоÑлата датотека није допуштена за увоз.';
$messages['importconfirm'] = '<b>УÑпешно увезжени $inserted контакти </b>';
$messages['importconfirmskipped'] = '<b>ПреÑкочени $skipped поÑтојећи уноÑи </b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'Операција није дозвољена!';
$messages['nofromaddress'] = 'ÐедоÑтаје имејл адреÑа у изабраном налогу';
$messages['editorwarning'] = 'Пребацивање на обичан текÑÑ‚ едитор ће изазвати губитак целог форматирања. Да ли желите да наÑтавите?';
@@ -144,7 +131,6 @@ $messages['smtperror'] = 'SMTP Error ($code): $msg';
$messages['emailformaterror'] = 'Имејл адреÑа није валидна: $email';
$messages['toomanyrecipients'] = 'Превише прималаца. Смањите број прималаца на $max.';
$messages['maxgroupmembersreached'] = 'Број чланова гупе прелази макÑимум од $max';
-$messages['internalerror'] = 'ДеÑила Ñе интерна грешка. Молимо покушајте поново';
$messages['contactdelerror'] = 'БриÑање контакта неуÑпешно';
$messages['contactdeleted'] = 'БриÑање контакта уÑпешно';
$messages['contactrestoreerror'] = 'Ðе може да врати обриÑане контакте.';
@@ -172,5 +158,4 @@ $messages['parentnotwritable'] = 'Ðе може да направи/премеÑ
$messages['messagetoobig'] = 'Део Ñа поруком је превелик за обраду.';
$messages['attachmentvalidationerror'] = 'УПОЗОРЕЊЕ! Овај прилог је Ñумњив зато што Ñе његов тип не поклапа Ñа типом објављеним у поруци. Уколико немате поверења у пошиљаоца, не отварајте је у прегледачу зато што може Ñадржати злонамерни Ñадржај.<br/><br/><em>Очекивао: $expected; нашао: $detected</em>';
$messages['noscriptwarning'] = 'Упозорење: ова поштанÑка уÑлуга захтева ЈаваÑкрипт! Да биÑте је кориÑтили, укључите ЈаваÑкрипт у подешавањима вашег прегледача.';
-
?>
diff --git a/program/localization/sv_SE/labels.inc b/program/localization/sv_SE/labels.inc
index 7169aeba8..3a8af75d8 100644
--- a/program/localization/sv_SE/labels.inc
+++ b/program/localization/sv_SE/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Välkommen till $product';
$labels['username'] = 'Användarnamn';
$labels['password'] = 'Lösenord';
$labels['server'] = 'Server';
$labels['login'] = 'Logga in';
-
-// taskbar
$labels['logout'] = 'Logga ut';
$labels['mail'] = 'Meddelanden';
$labels['settings'] = 'Inställningar';
$labels['addressbook'] = 'Adressbok';
-
-// mailbox names
$labels['inbox'] = 'Inkorg';
$labels['drafts'] = 'Utkast';
$labels['sent'] = 'Skickat';
$labels['trash'] = 'Papperskorg';
$labels['junk'] = 'Skräp';
$labels['show_real_foldernames'] = 'Visa verkliga namn på särskilda kataloger';
-
-// message listing
$labels['subject'] = 'Ämne';
$labels['from'] = 'Avsändare';
$labels['sender'] = 'Avsändare';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Prioritet';
$labels['organization'] = 'Organisation';
$labels['readstatus'] = 'Lässtatus';
$labels['listoptions'] = 'Listalternativ...';
-
$labels['mailboxlist'] = 'Kataloger';
$labels['messagesfromto'] = 'Meddelande $from till $to av $count';
$labels['threadsfromto'] = 'Tråd $from till $to av $count';
$labels['messagenrof'] = 'Meddelande $nr av $count';
$labels['fromtoshort'] = '$from – $to av $count';
-
$labels['copy'] = 'Kopiera';
$labels['move'] = 'Flytta';
$labels['moveto'] = 'Flytta till:';
@@ -68,13 +56,9 @@ $labels['download'] = 'Ladda ner';
$labels['open'] = 'Öppna';
$labels['showattachment'] = 'Visa';
$labels['showanyway'] = 'Visa det ändå';
-
$labels['filename'] = 'Filnamn';
$labels['filesize'] = 'Filstorlek';
-
$labels['addtoaddressbook'] = 'Lägg till i adressbok';
-
-// weekdays short
$labels['sun'] = 'sön';
$labels['mon'] = 'mån';
$labels['tue'] = 'tis';
@@ -82,8 +66,6 @@ $labels['wed'] = 'ons';
$labels['thu'] = 'tor';
$labels['fri'] = 'fre';
$labels['sat'] = 'lör';
-
-// weekdays long
$labels['sunday'] = 'söndag';
$labels['monday'] = 'måndag';
$labels['tuesday'] = 'tisdag';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'onsdag';
$labels['thursday'] = 'torsdag';
$labels['friday'] = 'fredag';
$labels['saturday'] = 'lördag';
-
-// months short
$labels['jan'] = 'jan';
$labels['feb'] = 'feb';
$labels['mar'] = 'mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'sep';
$labels['oct'] = 'okt';
$labels['nov'] = 'nov';
$labels['dec'] = 'dec';
-
-// months long
$labels['longjan'] = 'januari';
$labels['longfeb'] = 'februari';
$labels['longmar'] = 'mars';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'september';
$labels['longoct'] = 'oktober';
$labels['longnov'] = 'november';
$labels['longdec'] = 'december';
-
$labels['today'] = 'idag';
-
-// toolbar buttons
$labels['refresh'] = 'Uppdatera';
$labels['checkmail'] = 'Hämta nya meddelanden';
$labels['compose'] = 'Nytt meddelande';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'Fler åtgärder';
$labels['more'] = 'Fler';
$labels['back'] = 'Tillbaka';
$labels['options'] = 'Alternativ';
-
$labels['select'] = 'Välj';
$labels['all'] = 'Alla';
$labels['none'] = 'Ingen';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Visa alla';
$labels['expand-unread'] = 'Visa olästa';
$labels['collapse-all'] = 'Dölj alla';
$labels['threaded'] = 'Trådat';
-
$labels['autoexpand_threads'] = 'Visa trådade meddelanden';
$labels['do_expand'] = 'Alla trådar';
$labels['expand_only_unread'] = 'Trådar med olästa meddelanden';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Kolumner';
$labels['listsorting'] = 'Sortering';
$labels['listorder'] = 'Ordning';
$labels['listmode'] = 'Visningsläge';
-
$labels['folderactions'] = 'Hantera kataloger';
$labels['compact'] = 'Packa';
$labels['empty'] = 'Töm';
$labels['importmessages'] = 'Importera meddelanden';
-
$labels['quota'] = 'Diskutrymme';
$labels['unknown'] = 'okänt';
$labels['unlimited'] = 'obegränsat';
-
$labels['quicksearch'] = 'Snabbsök';
$labels['resetsearch'] = 'Återställ sökning';
$labels['searchmod'] = 'Sökalternativ';
$labels['msgtext'] = 'Hela meddelandet';
$labels['body'] = 'Innehåll';
$labels['type'] = 'Typ';
-
+$labels['namex'] = 'Namn';
$labels['openinextwin'] = 'Öppna i nytt fönster';
$labels['emlsave'] = 'Spara (.eml)';
$labels['changeformattext'] = 'Visa i text-format';
$labels['changeformathtml'] = 'Visa i HTML-format';
-
-// message compose
$labels['editasnew'] = 'Redigera som nytt';
$labels['send'] = 'Skicka';
$labels['sendmessage'] = 'Skicka meddelande';
@@ -224,26 +192,32 @@ $labels['returnreceipt'] = 'Mottagarkvitto';
$labels['dsn'] = 'Leveransstatusmeddelande';
$labels['mailreplyintro'] = '$date skrev $sender:';
$labels['originalmessage'] = 'Ursprungligt meddelande';
-
$labels['editidents'] = 'Ändra identiteter';
$labels['spellcheck'] = 'Rättstava';
$labels['checkspelling'] = 'Kontrollera stavning';
$labels['resumeediting'] = 'Ã…teruppta redigering';
$labels['revertto'] = 'Återgå till';
-
+$labels['restore'] = 'Ã…terskapa';
+$labels['restoremessage'] = 'Ã…terskapa meddelande?';
+$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';
$labels['uploadprogress'] = '$percent ($current av $total)';
$labels['close'] = 'Stäng';
$labels['messageoptions'] = 'Meddelandealternativ';
-
$labels['low'] = 'LÃ¥g';
$labels['lowest'] = 'Lägst';
$labels['normal'] = 'Normal';
$labels['high'] = 'Hög';
$labels['highest'] = 'Högst';
-
$labels['nosubject'] = '(inget ämne)';
$labels['showimages'] = 'Visa bilder';
$labels['alwaysshow'] = 'Visa alltid bilder från $sender';
@@ -251,25 +225,19 @@ $labels['isdraft'] = 'Detta meddelande är ett utkast.';
$labels['andnmore'] = '$nr fler...';
$labels['togglemoreheaders'] = 'Visa fler meddelandehuvuden';
$labels['togglefullheaders'] = 'Växla meddelandehuvuden';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Text';
$labels['savesentmessagein'] = 'Spara kopia i';
$labels['dontsave'] = 'Spara inte';
$labels['maxuploadsize'] = 'Tillåten filstorlek är $size';
-
$labels['addcc'] = 'Kopia';
$labels['addbcc'] = 'Dold kopia';
$labels['addreplyto'] = 'Svar till';
$labels['addfollowupto'] = 'Uppföljning till';
-
-// mdn
$labels['mdnrequest'] = 'Avsändaren har begärt mottagarkvitto för det här meddelandet. Vill du skicka ett mottagarkvitto?';
$labels['receiptread'] = 'Mottagarkvitto (läst)';
$labels['yourmessage'] = 'Det här är ett mottagarkvitto för ditt meddelande';
$labels['receiptnote'] = 'Notera: Mottagarkvittot innebär bara att meddelandet visats på mottagarens dator. Därmed finns ingen garanti att mottagaren har läst och förstått meddelandet.';
-
-// address boook
$labels['name'] = 'Namn';
$labels['firstname'] = 'Förnamn';
$labels['surname'] = 'Efternamn';
@@ -304,7 +272,6 @@ $labels['search'] = 'Sök';
$labels['advsearch'] = 'Avancerad sökning';
$labels['advanced'] = 'Avancerad';
$labels['other'] = 'Annat';
-
$labels['typehome'] = 'Hem';
$labels['typework'] = 'Arbete';
$labels['typeother'] = 'Annat';
@@ -319,14 +286,12 @@ $labels['typeassistant'] = 'Assistent';
$labels['typehomepage'] = 'Webbsida';
$labels['typeblog'] = 'Blogg';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Lägg till fält...';
$labels['addcontact'] = 'Lägg till ny kontakt';
$labels['editcontact'] = 'Ändra kontakt';
$labels['contacts'] = 'Kontakter';
$labels['contactproperties'] = 'Kontaktegenskaper';
$labels['personalinfo'] = 'Personlig information';
-
$labels['edit'] = 'Redigera';
$labels['cancel'] = 'Avbryt';
$labels['save'] = 'Spara';
@@ -335,7 +300,6 @@ $labels['rename'] = 'Ändra namn';
$labels['addphoto'] = 'Lägg till';
$labels['replacephoto'] = 'Ersätt';
$labels['uploadphoto'] = 'Ladda upp foto';
-
$labels['newcontact'] = 'Ny kontakt';
$labels['deletecontact'] = 'Ta bort vald kontakt';
$labels['composeto'] = 'Nytt meddelande till';
@@ -349,42 +313,36 @@ $labels['newcontactgroup'] = 'Ny kontaktgrupp';
$labels['grouprename'] = 'Ändra gruppnamn';
$labels['groupdelete'] = 'Ta bort grupp';
$labels['groupremoveselected'] = 'Ta bort markerade kontakter från gruppen';
-
$labels['previouspage'] = 'Visa föregående sida';
$labels['firstpage'] = 'Visa första sidan';
$labels['nextpage'] = 'Visa nästa sida';
$labels['lastpage'] = 'Visa sista sidan';
-
$labels['group'] = 'Grupp';
$labels['groups'] = 'Kontaktgrupper';
$labels['listgroup'] = 'Visa gruppmedlemmar';
$labels['personaladrbook'] = 'Personliga adresser';
-
$labels['searchsave'] = 'Lägg till sökning';
$labels['searchdelete'] = 'Ta bort sökning';
-
$labels['import'] = 'Importera';
$labels['importcontacts'] = 'Importera kontakter';
$labels['importfromfile'] = 'Importera från fil:';
-$labels['importtarget'] = 'Lägg till nya kontakter till adressbok:';
+$labels['importtarget'] = 'Lägg till kontakter i';
$labels['importreplace'] = 'Ersätt samtliga kontakter i adressboken';
+$labels['importgroups'] = 'Importera grupptillhörigheter';
+$labels['importgroupsall'] = 'Alla (skapa grupper om nödvändigt)';
+$labels['importgroupsexisting'] = 'Endast till befintliga grupper';
$labels['importdesc'] = 'Kontakter kan importeras från en befintlig adressbok.<br/>Programmet stödjer inläsning av kontakter i formatet <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> eller formatet CSV (kommaseparerad data).';
$labels['done'] = 'Klart';
-
-// settings
$labels['settingsfor'] = 'Inställningar för';
$labels['about'] = 'Om';
$labels['preferences'] = 'Inställningar';
$labels['userpreferences'] = 'Användarinställningar';
$labels['editpreferences'] = 'Ändra användarinställningar';
-
$labels['identities'] = 'Identiteter';
$labels['manageidentities'] = 'Hantera identiteter';
$labels['newidentity'] = 'Ny identitet';
-
$labels['newitem'] = 'Ny information';
$labels['edititem'] = 'Ändra information';
-
$labels['preferhtml'] = 'Visa meddelanden i HTML-format';
$labels['defaultcharset'] = 'Förvald teckenkodning';
$labels['htmlmessage'] = 'HTML-meddelande';
@@ -480,7 +438,9 @@ $labels['standardwindows'] = 'Hantera popup-rutor som standardfönster';
$labels['forwardmode'] = 'Vidarebefordra meddelande';
$labels['inline'] = 'Infogat';
$labels['asattachment'] = 'Bilaga';
-
+$labels['replyallmode'] = 'Standardfunktion för knappen [Svara alla]';
+$labels['replyalldefault'] = 'Svara alla';
+$labels['replyalllist'] = 'Svara endast lista (i förekommande fall)';
$labels['folder'] = 'Katalog';
$labels['folders'] = 'Kataloger';
$labels['foldername'] = 'Katalognamn';
@@ -501,26 +461,20 @@ $labels['foldertype'] = 'Katalogtyp';
$labels['personalfolder'] = 'Privat katalog';
$labels['otherfolder'] = 'Annan användares katalog';
$labels['sharedfolder'] = 'Publik katalog';
-
$labels['sortby'] = 'Sortera på';
$labels['sortasc'] = 'Sortera stigande';
$labels['sortdesc'] = 'Sortera fallande';
$labels['undo'] = 'Ã…ngra';
-
$labels['installedplugins'] = 'Installerade tillägg';
$labels['plugin'] = 'Tillägg';
$labels['version'] = 'Version';
$labels['source'] = 'Källkod';
$labels['license'] = 'Licens';
$labels['support'] = 'Hjälp';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Engelsk';
$labels['westerneuropean'] = 'Västeuropeisk';
@@ -539,5 +493,4 @@ $labels['vietnamese'] = 'Vietnamesisk';
$labels['japanese'] = 'Japansk';
$labels['korean'] = 'Koreansk';
$labels['chinese'] = 'Kinesisk';
-
?>
diff --git a/program/localization/sv_SE/messages.inc b/program/localization/sv_SE/messages.inc
index d0c58a97d..a61b7ccc4 100644
--- a/program/localization/sv_SE/messages.inc
+++ b/program/localization/sv_SE/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Ett fel uppstod!';
$messages['loginfailed'] = 'Inloggningen misslyckades';
$messages['cookiesdisabled'] = 'Din webbläsare accepterar inte cookies';
@@ -46,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';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'Ange minst en mottagare';
$messages['nosubjectwarning'] = 'Ämnesraden är tom. Vill du ange ämne nu?';
$messages['nobodywarning'] = 'Skicka det här meddelandet utan text?';
$messages['notsentwarning'] = 'Meddelandet har inte skickats. Vill du avbryta meddelandet?';
+$messages['restoresavedcomposedata'] = 'Ett tidigare skrivet men inte skickat meddelande upptäcktes.\n\nÄmne: $subject\nSparat: $date\n\nVill du återskapa meddelandet?';
$messages['noldapserver'] = 'Ange en LDAP-server för att söka';
$messages['nosearchname'] = 'Ange ett kontaktnamn eller en adress';
$messages['notuploadedwarning'] = 'Alla bilagor har inte överförts ännu. Vänta eller avbryt överföringen.';
@@ -172,5 +173,4 @@ $messages['parentnotwritable'] = 'Katalogen kunde inte skapas eller flyttas. Ã…t
$messages['messagetoobig'] = 'Denna del av meddelandet är alltför stor för att hantera.';
$messages['attachmentvalidationerror'] = 'VARNING! Bilagan misstänks vara av annan typ än vad som anges i meddelandet. Om du inte litar på avsändaren ska du inte öppna bilagan.<br/><br/><em>Angiven typ: $expected; funnen typ: $detected</em>';
$messages['noscriptwarning'] = 'Varning: Denna webbmailtjänst fungerar inte utan Javascript! Aktivera Javascript i webbläsarens inställningar.';
-
?>
diff --git a/program/localization/ta_IN/labels.inc b/program/localization/ta_IN/labels.inc
index 197e80606..dd8c134ba 100644
--- a/program/localization/ta_IN/labels.inc
+++ b/program/localization/ta_IN/labels.inc
@@ -15,66 +15,39 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'நலà¯à®µà®°à®µà¯';
$labels['username'] = 'பயனரà¯';
$labels['password'] = 'கடவà¯à®šà¯à®šà¯†à®¾à®²à¯';
$labels['server'] = 'சேவையகமà¯';
$labels['login'] = 'நà¯à®´à¯ˆ';
-
-// taskbar
$labels['logout'] = 'வெளியேறà¯';
$labels['mail'] = 'மினà¯à®©à®žà¯à®šà®²à¯';
$labels['settings'] = 'அமைபà¯à®ªà¯à®•à®³à¯';
$labels['addressbook'] = 'தொடரà¯à®ªà¯à®•à®³à¯';
-
-// mailbox names
$labels['inbox'] = 'அகபà¯à®ªà¯†à®Ÿà¯à®Ÿà®¿';
$labels['drafts'] = 'வரைவà¯à®•à®³à¯';
$labels['sent'] = 'அனà¯à®ªà¯à®ªà®¿à®¯ அஞà¯à®šà®²à¯';
$labels['trash'] = 'கà¯à®ªà¯à®ªà¯ˆ';
$labels['junk'] = 'எரிதமà¯';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'தலைபà¯à®ªà¯';
$labels['from'] = 'அனà¯à®ªà¯à®ªà¯à®©à®°à¯';
-$labels['sender'] = 'Sender';
$labels['to'] = 'பெறà¯à®©à®°à¯';
$labels['cc'] = 'நகலà¯';
$labels['bcc'] = 'மறை நகலà¯';
$labels['replyto'] = 'பதிலளி';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'தேதி';
$labels['size'] = 'அளவà¯';
$labels['priority'] = 'à®®à¯à®•à¯à®•à®¿à®¯à®¤à¯à®¤à¯à®µà®®à¯';
$labels['organization'] = 'நிறà¯à®µà®©à®®à¯';
-$labels['readstatus'] = 'Read status';
-$labels['listoptions'] = 'List options...';
-
$labels['mailboxlist'] = 'அடைவà¯à®•à®³à¯';
$labels['messagesfromto'] = 'செயà¯à®¤à®¿à®•à®³à¯ $countல௠$from லிரà¯à®¨à¯à®¤à¯ $to வரை';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = '$countல௠$nr வத௠செயà¯à®¤à®¿';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'நகலà¯';
-$labels['move'] = 'Move';
$labels['moveto'] = 'இதறà¯à®•à¯ அனà¯à®ªà¯à®ªà¯...';
$labels['download'] = 'பதிவிறகà¯à®•à¯';
-$labels['open'] = 'Open';
-$labels['showattachment'] = 'Show';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'கோபà¯à®ªà¯ பெயரà¯';
$labels['filesize'] = 'கோபà¯à®ªà¯ அளவà¯';
-
$labels['addtoaddressbook'] = 'தொடரà¯à®ªà¯à®•à®³à¯à®•à¯à®•à¯ சேரà¯à®•à¯à®•à®µà¯à®®à¯';
-
-// weekdays short
$labels['sun'] = 'ஞாயிறà¯';
$labels['mon'] = 'திஙà¯à®•à®³à¯';
$labels['tue'] = 'செவà¯à®µà®¾à®¯à¯';
@@ -82,8 +55,6 @@ $labels['wed'] = 'பà¯à®¤à®©à¯';
$labels['thu'] = 'வியாழனà¯';
$labels['fri'] = 'வெளà¯à®³à®¿';
$labels['sat'] = 'சனி';
-
-// weekdays long
$labels['sunday'] = 'ஞாயிறà¯';
$labels['monday'] = 'திஙà¯à®•à®³à¯';
$labels['tuesday'] = 'செவà¯à®µà®¾à®¯à¯';
@@ -91,8 +62,6 @@ $labels['wednesday'] = 'பà¯à®¤à®©à¯';
$labels['thursday'] = 'வியாழனà¯';
$labels['friday'] = 'வெளà¯à®³à®¿';
$labels['saturday'] = 'சனி';
-
-// months short
$labels['jan'] = 'சனவரி';
$labels['feb'] = 'பிபà¯à®°à®µà®°à®¿';
$labels['mar'] = 'மாரà¯à®šà¯';
@@ -105,8 +74,6 @@ $labels['sep'] = 'செபà¯à®Ÿà®®à¯à®ªà®°à¯';
$labels['oct'] = 'அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯';
$labels['nov'] = 'நவமà¯à®ªà®°à¯';
$labels['dec'] = 'டிசமà¯à®ªà®°à¯';
-
-// months long
$labels['longjan'] = 'சனவரி';
$labels['longfeb'] = 'பிபà¯à®°à®µà®°à®¿';
$labels['longmar'] = 'மாரà¯à®šà¯';
@@ -119,22 +86,12 @@ $labels['longsep'] = 'செபà¯à®Ÿà®®à¯à®ªà®°à¯';
$labels['longoct'] = 'அகà¯à®Ÿà¯‡à®¾à®ªà®°à¯';
$labels['longnov'] = 'நவமà¯à®ªà®°à¯';
$labels['longdec'] = 'டிசமà¯à®ªà®°à¯';
-
$labels['today'] = 'இனà¯à®±à¯';
-
-// toolbar buttons
-$labels['refresh'] = 'Refresh';
$labels['checkmail'] = 'பà¯à®¤à¯ அஞà¯à®šà®²à¯à®•à®³à¯ˆ பாரà¯à®•à¯à®•à®µà¯à®®à¯';
$labels['compose'] = 'அஞà¯à®šà®²à¯ எழà¯à®¤à¯';
$labels['writenewmessage'] = 'பà¯à®¤à¯ அஞà¯à®šà®²à¯ எழà¯à®¤à®µà¯à®®à¯';
-$labels['reply'] = 'Reply';
$labels['replytomessage'] = 'அனà¯à®ªà¯à®ªà¯à®©à®°à¯à®•à¯à®•à¯ பதிலளி';
$labels['replytoallmessage'] = 'அனà¯à®ªà¯à®ªà¯à®©à®°à¯ மறà¯à®±à¯à®®à¯ எலà¯à®²à®¾ பெறà¯à®©à®°à¯à®•à®³à¯à®•à¯à®•à¯à®®à¯ பதிலளி';
-$labels['replyall'] = 'Reply all';
-$labels['replylist'] = 'Reply list';
-$labels['forward'] = 'Forward';
-$labels['forwardinline'] = 'Forward inline';
-$labels['forwardattachment'] = 'Forward as attachment';
$labels['forwardmessage'] = 'செயà¯à®¤à®¿à®¯à¯ˆ à®®à¯à®©à¯à®…னà¯à®ªà¯à®ªà¯';
$labels['deletemessage'] = 'செயà¯à®¤à®¿à®¯à¯ˆ நீகà¯à®•à¯';
$labels['movemessagetotrash'] = 'செயà¯à®¤à®¿à®¯à¯ˆ கà¯à®ªà¯à®ªà¯ˆà®•à¯à®•à¯ நகரà¯à®¤à¯à®¤à¯';
@@ -145,253 +102,104 @@ $labels['nextmessage'] = 'அடà¯à®¤à¯à®¤ செயà¯à®¤à®¿à®¯à¯ˆ கà®
$labels['lastmessage'] = 'கடைசி செயà¯à®¤à®¿à®¯à¯ˆ காடà¯à®Ÿà¯';
$labels['backtolist'] = 'செயà¯à®¤à®¿ படà¯à®Ÿà®¿à®¯à®²à¯à®•à¯à®•à¯ செலà¯à®²à®µà¯à®®à¯';
$labels['viewsource'] = 'மூலதà¯à®¤à¯ˆ காடà¯à®Ÿà¯';
-$labels['mark'] = 'Mark';
$labels['markmessages'] = 'செயà¯à®¤à®¿à®•à®³à¯ˆ கà¯à®±à®¿à®¯à®¿à®Ÿà¯';
$labels['markread'] = 'படிதà¯à®¤à®¤à®¾à®• கà¯à®±à®¿à®¯à®¿à®Ÿà¯';
$labels['markunread'] = 'படிகà¯à®•à®¾à®¤à®¤à®¾à®• கà¯à®±à®¿à®¯à®¿à®Ÿà¯';
$labels['markflagged'] = 'நடà¯à®šà®¤à¯à®¤à®¿à®°à®®à®¿à®Ÿà¯à®Ÿà®¤à®¾à®• கà¯à®±à®¿à®¯à®¿à®Ÿà¯';
$labels['markunflagged'] = 'நடà¯à®šà®¤à¯à®¤à®¿à®°à®®à®¿à®Ÿà®¾à®¤à®¤à®¾à®• கà¯à®±à®¿à®¯à®¿à®Ÿà¯';
-$labels['moreactions'] = 'More actions...';
-$labels['more'] = 'More';
-$labels['back'] = 'Back';
-$labels['options'] = 'Options';
-
$labels['select'] = 'தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯';
$labels['all'] = 'எலà¯à®²à®¾à®®à¯';
$labels['none'] = 'எதà¯à®µà¯à®®à®¿à®²à¯à®²à¯ˆ';
-$labels['currpage'] = 'Current page';
$labels['unread'] = 'படிகà¯à®•à®¾à®¤à®¤à¯';
$labels['flagged'] = 'நடà¯à®šà®¤à¯à®¤à®¿à®°à®®à®¿à®Ÿà¯à®Ÿà®¤à¯';
$labels['unanswered'] = 'பதிலளிகà¯à®•à®¾à®¤à®¤à¯';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'நீகà¯à®•à®¿à®¯à®¤à¯';
-$labels['undeleted'] = 'Not deleted';
$labels['invert'] = 'தலைகீழà¯';
$labels['filter'] = 'வடிபà¯à®ªà®¾à®©à¯';
-$labels['list'] = 'List';
-$labels['threads'] = 'Threads';
-$labels['expand-all'] = 'Expand All';
-$labels['expand-unread'] = 'Expand Unread';
-$labels['collapse-all'] = 'Collapse All';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
-$labels['fromto'] = 'From/To';
-$labels['flag'] = 'Flag';
-$labels['attachment'] = 'Attachment';
$labels['nonesort'] = 'எதà¯à®µà¯à®®à®¿à®²à¯à®²à¯ˆ';
-$labels['sentdate'] = 'Sent date';
-$labels['arrival'] = 'Arrival date';
-$labels['asc'] = 'ascending';
-$labels['desc'] = 'descending';
-$labels['listcolumns'] = 'List columns';
-$labels['listsorting'] = 'Sorting column';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'கà¯à®±à¯à®•à®¿à®¯';
$labels['empty'] = 'காலி';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'பயனà¯à®ªà®¾à®Ÿà¯à®Ÿà¯ அளவà¯';
$labels['unknown'] = 'தெரியாத';
$labels['unlimited'] = 'அளவிலà¯à®²à®¾';
-
$labels['quicksearch'] = 'விரைவ௠தேடலà¯';
$labels['resetsearch'] = 'தேடலை மறà¯à®…மை';
$labels['searchmod'] = 'மாறà¯à®±à®¿à®•à®³à¯ˆ தேடà¯';
$labels['msgtext'] = 'à®®à¯à®´à¯ செயà¯à®¤à®¿';
-$labels['body'] = 'Body';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = 'பà¯à®¤à¯ சாளரதà¯à®¤à®¿à®²à¯ திற';
$labels['emlsave'] = 'பதிவிறகà¯à®•à¯ (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
$labels['editasnew'] = 'பà¯à®¤à®¿à®¯à®¤à®¾à®• திரà¯à®¤à¯à®¤à¯';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'இபà¯à®ªà¯‡à®¾à®¤à¯ அனà¯à®ªà¯à®ªà¯';
$labels['savemessage'] = 'இநà¯à®¤ வரைவை சேமி';
$labels['addattachment'] = 'ஒர௠கோபà¯à®ªà¯ˆ இணைகà¯à®•à®µà¯à®®à¯';
$labels['charset'] = 'எழà¯à®¤à¯à®¤à¯ கà¯à®±à®¿à®®à¯à®±à¯ˆ';
$labels['editortype'] = 'திரà¯à®¤à¯à®¤à¯à®®à¯ வகை';
$labels['returnreceipt'] = 'திரà¯à®®à¯à®ªà¯ சீடà¯à®Ÿà¯';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'எழà¯à®¤à¯à®¤à¯à®ªà¯à®ªà®¿à®´à¯ˆ சரிபாரà¯';
$labels['resumeediting'] = 'திரà¯à®¤à¯à®¤à¯à®µà®¤à¯ˆ தொடரவà¯à®®à¯';
$labels['revertto'] = 'à®®à¯à®¨à¯à®¤à®¿à®¯ நிலைகà¯à®•à¯ திரà¯à®®à¯à®ªà®µà¯à®®à¯';
-
-$labels['attach'] = 'Attach';
$labels['attachments'] = 'கோபà¯à®ªà¯ இணைபà¯à®ªà¯à®•à®³à¯';
$labels['upload'] = 'பதிவேறà¯à®±à¯';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'மூடà¯';
-$labels['messageoptions'] = 'Message options...';
-
$labels['low'] = 'கà¯à®±à¯ˆà®¨à¯à®¤';
$labels['lowest'] = 'மிக கà¯à®±à¯ˆà®¨à¯à®¤';
$labels['normal'] = 'சாதாரண';
$labels['high'] = 'அதிக';
$labels['highest'] = 'மிக அதிக';
-
$labels['nosubject'] = '(தலைபà¯à®ªà®¿à®²à¯à®²à®¾)';
$labels['showimages'] = 'படஙà¯à®•à®³à¯ˆ காடà¯à®Ÿà¯';
$labels['alwaysshow'] = '$-னிடமிரà¯à®¨à¯à®¤à¯ வரà¯à®®à¯ படஙà¯à®•à®³à¯ˆ காடà¯à®Ÿà¯';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'எளிய உரை';
$labels['savesentmessagein'] = 'அனà¯à®ªà¯à®ªà®¿à®¯ அஞà¯à®šà®²à¯ˆ இஙà¯à®•à¯ சேமிகà¯à®•à®µà¯à®®à¯';
$labels['dontsave'] = 'சேமிகà¯à®•à®¾à®¤à¯‡';
$labels['maxuploadsize'] = 'அனà¯à®®à®¤à®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®®à¯ அதிகபடà¯à®š கோபà¯à®ªà¯ அளவ௠$';
-
$labels['addcc'] = 'நகல௠சேரà¯';
$labels['addbcc'] = 'மறை நகல௠சேரà¯';
$labels['addreplyto'] = 'பதிலளிகà¯à®• வேணà¯à®Ÿà®¿à®¯à®µà®°à¯à®•à®³à¯ˆ சேரà¯';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'இநà¯à®¤ செயà¯à®¤à®¿à®¯à®¿à®©à¯ அனà¯à®ªà¯à®ªà¯à®©à®°à¯ இதை படிதà¯à®¤à®µà¯à®Ÿà®©à¯ அறிவிகà¯à®•à¯à®®à¯à®ªà®Ÿà®¿ கேடà¯à®Ÿà®¾à®°à¯. அறிவிகà¯à®• விரà¯à®®à¯à®ªà¯à®•à®¿à®±à¯€à®°à¯à®•à®³à®¾ ?';
$labels['receiptread'] = 'திரà¯à®®à¯à®ªà¯ சீடà¯à®Ÿà¯ (படி)';
$labels['yourmessage'] = 'இத௠உஙà¯à®•à®³à¯ செயà¯à®¤à®¿à®¯à®¿à®©à¯ திரà¯à®®à¯à®ªà¯ சீடà¯à®Ÿà¯';
$labels['receiptnote'] = 'கà¯à®±à®¿à®ªà¯à®ªà¯: இநà¯à®¤ ஒபà¯à®ªà¯à®•à¯ˆ பெறà¯à®©à®°à®¿à®Ÿà®®à¯ செயà¯à®¤à®¿à®¯à¯ˆ காடà¯à®Ÿà®¿à®¯à®¤à®±à¯à®•à®¾à®• வரà¯à®•à®¿à®±à®¤à¯. அவர௠அதை படிதà¯à®¤à®¤à®±à¯à®•à¯ எநà¯à®¤ உதà¯à®¤à®¿à®°à®µà®¾à®¤à®®à¯à®®à¯ இலà¯à®²à¯ˆ';
-
-// address boook
$labels['name'] = 'காடà¯à®šà®¿ பெயரà¯';
$labels['firstname'] = 'à®®à¯à®¤à®±à¯ பெயரà¯';
$labels['surname'] = 'கடைசி பெயரà¯';
-$labels['middlename'] = 'Middle Name';
-$labels['nameprefix'] = 'Prefix';
-$labels['namesuffix'] = 'Suffix';
-$labels['nickname'] = 'Nickname';
-$labels['jobtitle'] = 'Job Title';
-$labels['department'] = 'Department';
-$labels['gender'] = 'Gender';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'மினà¯à®©à®žà¯à®šà®²à¯';
-$labels['phone'] = 'Phone';
-$labels['address'] = 'Address';
-$labels['street'] = 'Street';
-$labels['locality'] = 'City';
-$labels['zipcode'] = 'ZIP Code';
-$labels['region'] = 'State/Province';
-$labels['country'] = 'Country';
-$labels['birthday'] = 'Birthday';
-$labels['anniversary'] = 'Anniversary';
-$labels['website'] = 'Website';
-$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
-$labels['male'] = 'male';
-$labels['female'] = 'female';
-$labels['manager'] = 'Manager';
-$labels['assistant'] = 'Assistant';
-$labels['spouse'] = 'Spouse';
-$labels['allfields'] = 'All fields';
-$labels['search'] = 'Search';
-$labels['advsearch'] = 'Advanced Search';
-$labels['advanced'] = 'Advanced';
-$labels['other'] = 'Other';
-
-$labels['typehome'] = 'Home';
-$labels['typework'] = 'Work';
-$labels['typeother'] = 'Other';
-$labels['typemobile'] = 'Mobile';
-$labels['typemain'] = 'Main';
-$labels['typehomefax'] = 'Home Fax';
-$labels['typeworkfax'] = 'Work Fax';
-$labels['typecar'] = 'Car';
-$labels['typepager'] = 'Pager';
-$labels['typevideo'] = 'Video';
-$labels['typeassistant'] = 'Assistant';
-$labels['typehomepage'] = 'Home Page';
-$labels['typeblog'] = 'Blog';
-$labels['typeprofile'] = 'Profile';
-
-$labels['addfield'] = 'Add field...';
$labels['addcontact'] = 'பà¯à®¤à¯ தொடரà¯à®ªà¯ˆ சேரà¯';
$labels['editcontact'] = 'தொடரà¯à®ªà¯ˆ திரà¯à®¤à¯à®¤à¯';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
-$labels['personalinfo'] = 'Personal information';
-
$labels['edit'] = 'திரà¯à®¤à¯à®¤à¯';
$labels['cancel'] = 'ரதà¯à®¤à¯';
$labels['save'] = 'சேமி';
$labels['delete'] = 'நீகà¯à®•à¯';
-$labels['rename'] = 'Rename';
-$labels['addphoto'] = 'Add';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'பà¯à®¤à¯ தொடரà¯à®ªà¯ அடà¯à®Ÿà¯ˆà®¯à¯ˆ உரà¯à®µà®¾à®•à¯à®•à¯';
$labels['deletecontact'] = 'தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®¤à¯à®¤ தொடரà¯à®ªà¯à®•à®³à¯ˆ நீகà¯à®•à¯';
$labels['composeto'] = 'இவரà¯-க௠அஞà¯à®šà®²à¯ எழà¯à®¤à¯';
$labels['contactsfromto'] = 'தொடரà¯à®ªà¯à®•à®³à¯ $countல௠$from லிரà¯à®¨à¯à®¤à¯ $to வரை';
$labels['print'] = 'அசà¯à®šà®¿à®Ÿà¯';
$labels['export'] = 'à®à®±à¯à®±à¯à®®à®¤à®¿';
-$labels['exportall'] = 'Export all';
-$labels['exportsel'] = 'Export selected';
$labels['exportvcards'] = 'தொடரà¯à®ªà¯à®•à®³à¯ˆ vCard வடிவதà¯à®¤à®¿à®²à¯ à®à®±à¯à®±à¯à®®à®¤à®¿ செயà¯à®¯à®µà¯à®®à¯';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'à®®à¯à®¨à¯à®¤à®¿à®¯ கà¯à®´à¯à®µà¯ˆ காடà¯à®Ÿà¯';
$labels['firstpage'] = 'à®®à¯à®¤à®²à¯ கà¯à®´à¯à®µà¯ˆ காடà¯à®Ÿà¯';
$labels['nextpage'] = 'அடà¯à®¤à¯à®¤ கà¯à®´à¯à®µà¯ˆ காடà¯à®Ÿà¯';
$labels['lastpage'] = 'கடைசி கà¯à®´à¯à®µà¯ˆ காடà¯à®Ÿà¯';
-
-$labels['group'] = 'Group';
$labels['groups'] = 'கà¯à®´à¯à®•à¯à®•à®³à¯';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'சà¯à®¯ à®®à¯à®•à®µà®°à®¿';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
$labels['import'] = 'இறகà¯à®•à¯à®®à®¤à®¿';
$labels['importcontacts'] = 'தொடரà¯à®ªà¯à®•à®³à¯ˆ இறகà¯à®•à¯à®®à®¤à®¿ செயà¯à®¯à®µà¯à®®à¯';
$labels['importfromfile'] = 'இநà¯à®¤ கோபà¯à®ªà®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ இறகà¯à®•à¯à®®à®¤à®¿ செயà¯à®¯à®µà¯à®®à¯:';
-$labels['importtarget'] = 'Add new contacts to address book:';
$labels['importreplace'] = 'எலà¯à®²à®¾ தொடரà¯à®ªà¯à®•à®³à¯ˆà®¯à¯à®®à¯ மாறà¯à®±à®¿ அமை';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
$labels['done'] = 'à®®à¯à®Ÿà®¿à®¨à¯à®¤à®¤à¯';
-
-// settings
$labels['settingsfor'] = 'இதறà¯à®•à®¾à®© அமைபà¯à®ªà¯à®•à®³à¯';
-$labels['about'] = 'About';
$labels['preferences'] = 'விரà¯à®ªà¯à®ªà®™à¯à®•à®³à¯';
$labels['userpreferences'] = 'பயனர௠விரà¯à®ªà¯à®ªà®™à¯à®•à®³à¯';
$labels['editpreferences'] = 'பயனர௠விரà¯à®ªà¯à®ªà®™à¯à®•à®³à¯ˆ திரà¯à®¤à¯à®¤à¯';
-
$labels['identities'] = 'அடையாளஙà¯à®•à®³à¯';
$labels['manageidentities'] = 'இநà¯à®¤ கணகà¯à®•à®¿à®±à¯à®•à®¾à®© அடையாளஙà¯à®•à®³à¯ˆ நிறà¯à®µà®¾à®•à®¿à®•à¯à®•à®µà¯à®®à¯';
$labels['newidentity'] = 'பà¯à®¤à¯ அடையாளமà¯';
-
$labels['newitem'] = 'பà¯à®¤à¯ உரà¯à®ªà¯à®ªà®Ÿà®¿';
$labels['edititem'] = 'உரà¯à®ªà¯à®ªà®Ÿà®¿à®¯à¯ˆ திரà¯à®¤à¯à®¤à¯';
-
$labels['preferhtml'] = 'HTML காடà¯à®Ÿà¯';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'HTML செயà¯à®¤à®¿';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'நலà¯à®² தேதி';
$labels['setdefault'] = 'இயலà¯à®ªà¯ˆ அமை';
$labels['autodetect'] = 'தானியஙà¯à®•à®¿';
@@ -400,13 +208,8 @@ $labels['timezone'] = 'நேர மணà¯à®Ÿà®²à®®à¯';
$labels['pagesize'] = 'ஒர௠பகà¯à®•à®¤à¯à®¤à®¿à®±à¯à®•à®¾à®© வரிகளà¯';
$labels['signature'] = 'கையொபà¯à®ªà®®à¯';
$labels['dstactive'] = 'பகல௠ஒளி சேமிபà¯à®ªà¯ நேரமà¯';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'HTML செயà¯à®¤à®¿à®•à®³à¯ˆ எழà¯à®¤à¯';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'HTML கையொபà¯à®ªà®®à¯';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'à®®à¯à®¨à¯à®¤à®¿à®¯ பாதà¯à®¤à®¿à®¯à¯ˆ காடà¯à®Ÿà¯';
$labels['skin'] = 'à®®à¯à®•à®ªà¯à®ªà¯ தோறà¯à®±à®®à¯';
$labels['logoutclear'] = 'வெளியேறà¯à®®à¯ போத௠கà¯à®ªà¯à®ªà¯ˆà®¯à¯ˆ காலி செயà¯';
@@ -417,43 +220,33 @@ $labels['mailboxview'] = 'அஞà¯à®šà®²à¯ பெடà¯à®Ÿà®¿ காடà¯à®šà
$labels['mdnrequests'] = 'அனà¯à®ªà¯à®ªà¯à®©à®°à¯ அறிவிபà¯à®ªà¯à®•à®³à¯';
$labels['askuser'] = 'பயனரை கேளà¯';
$labels['autosend'] = 'தானாக அனà¯à®ªà¯à®ªà¯';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
$labels['ignore'] = 'தவிரà¯';
$labels['readwhendeleted'] = 'செயà¯à®¤à®¿à®¯à¯ˆ நீகà¯à®•à¯à®®à¯ போத௠படிதà¯à®¤à®¤à®¾à®• கà¯à®±à®¿';
$labels['flagfordeletion'] = 'நீகà¯à®•à¯à®µà®¤à®±à¯à®•à¯ பதிலாக நீகà¯à®•à¯à®µà®¤à®¾à®• நடà¯à®šà®¤à¯à®¤à®¿à®°à®®à®¿à®Ÿà¯';
$labels['skipdeleted'] = 'நீகà¯à®•à®¿à®¯ செயà¯à®¤à®¿à®•à®³à¯ˆ காடà¯à®Ÿà®¾à®¤à¯‡';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
$labels['showremoteimages'] = 'தொலை தூர தà¯à®£à¯ˆ படஙà¯à®•à®³à¯ˆ காடà¯à®Ÿà¯';
$labels['fromknownsenders'] = 'தெரிநà¯à®¤ அனà¯à®ªà¯à®ªà¯à®©à®°à®¿à®Ÿà®®à®¿à®°à¯à®¨à¯à®¤à¯';
$labels['always'] = 'எபà¯à®ªà¯‡à®¾à®¤à¯à®®à¯';
$labels['showinlineimages'] = 'இணைதà¯à®¤ படஙà¯à®•à®³à¯ˆ செயà¯à®¤à®¿à®•à®³à¯à®•à¯à®•à¯ கீழே காடà¯à®Ÿà®µà¯à®®à¯';
$labels['autosavedraft'] = 'தானாக வரைவà¯à®•à®³à¯ˆ சேமி';
$labels['everynminutes'] = 'ஒவà¯à®µà¯†à®¾à®°à¯ $n நிமிடஙà¯à®•à®³à¯à®•à¯à®•à¯à®®à¯';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'எபà¯à®ªà¯‡à®¾à®¤à¯à®®à®¿à®²à¯à®²à¯ˆ';
-$labels['immediately'] = 'immediately';
$labels['messagesdisplaying'] = 'செயà¯à®¤à®¿à®•à®³à¯ˆ காடà¯à®Ÿà¯à®•à®¿à®±à®¤à¯';
$labels['messagescomposition'] = 'செயà¯à®¤à®¿à®•à®³à¯ˆ எழà¯à®¤à¯à®•à®¿à®±à®¤à¯';
$labels['mimeparamfolding'] = 'இணைபà¯à®ªà¯ பெயரà¯à®•à®³à¯';
$labels['2231folding'] = 'à®®à¯à®´à¯ RFC 2231 (Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
$labels['2047folding'] = 'à®®à¯à®´à¯ RFC 2047 (மறà¯à®±)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
$labels['advancedoptions'] = 'மேமà¯à®ªà®Ÿà¯à®Ÿ விரà¯à®ªà¯à®ªà®™à¯à®•à®³à¯';
$labels['focusonnewmessage'] = 'உலாவி சாளரதà¯à®¤à¯ˆ பà¯à®¤à¯ செயà¯à®¤à®¿à®•à¯à®•à®¾à®• கவனி';
$labels['checkallfolders'] = 'பà¯à®¤à¯ செயà¯à®¤à®¿à®•à®³à¯à®•à¯à®•à®¾à®• எலà¯à®²à®¾ அடைவà¯à®•à®³à¯ˆà®¯à¯à®®à¯ சரிபாரà¯';
$labels['displaynext'] = 'செயà¯à®¤à®¿à®¯à¯ˆ நீகà¯à®•à¯/நகர௠பிறக௠அடà¯à®¤à¯à®¤ செயà¯à®¤à®¿à®¯à¯ˆ காடà¯à®Ÿà¯';
-$labels['defaultfont'] = 'Default font of HTML message';
$labels['mainoptions'] = 'à®®à¯à®•à¯à®•à®¿à®¯ விரà¯à®ªà¯à®ªà®™à¯à®•à®³à¯';
-$labels['browseroptions'] = 'Browser Options';
$labels['section'] = 'பிரிவà¯';
$labels['maintenance'] = 'பராமரிபà¯à®ªà¯';
$labels['newmessage'] = 'பà¯à®¤à¯ செயà¯à®¤à®¿';
$labels['signatureoptions'] = 'கையொபà¯à®ª விரà¯à®ªà¯à®ªà®™à¯à®•à®³à¯';
$labels['whenreplying'] = 'பதிலளிகà¯à®•à¯à®®à¯ போதà¯';
-$labels['replyempty'] = 'do not quote the original message';
$labels['replytopposting'] = 'பà¯à®¤à¯ செயà¯à®¤à®¿à®¯à¯ˆ அசலின௠மேல௠தà¯à®µà®•à¯à®•à¯';
$labels['replybottomposting'] = 'பà¯à®¤à¯ செயà¯à®¤à®¿à®¯à¯ˆ அசலின௠கீழ௠தà¯à®µà®•à¯à®•à¯';
$labels['replyremovesignature'] = 'பதிலளிகà¯à®•à¯à®®à¯ போத௠அசல௠கையெழà¯à®¤à¯à®¤à¯ˆ செயà¯à®¤à®¿à®¯à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ நீகà¯à®•à®µà¯à®®à¯';
@@ -461,26 +254,6 @@ $labels['autoaddsignature'] = 'தானாக கையொபà¯à®ªà®¤à¯à®¤
$labels['newmessageonly'] = 'பà¯à®¤à¯ செயà¯à®¤à®¿ மடà¯à®Ÿà¯à®®à¯';
$labels['replyandforwardonly'] = 'பதிலளிபà¯à®ªà¯ à®®à¯à®©à¯à®…னà¯à®ªà¯à®ªà¯ மடà¯à®Ÿà¯à®®à¯';
$labels['insertsignature'] = 'கையோபà¯à®ªà®®à®¿à®Ÿà¯';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
-$labels['asattachment'] = 'as attachment';
-
$labels['folder'] = 'அடைவà¯';
$labels['folders'] = 'அடைவà¯à®•à®³à¯';
$labels['foldername'] = 'அடைவ௠பெயரà¯';
@@ -490,54 +263,11 @@ $labels['create'] = 'உரà¯à®µà®¾à®•à¯à®•à¯';
$labels['createfolder'] = 'பà¯à®¤à¯ அடைவ௠உரà¯à®µà®¾à®•à¯à®•à¯';
$labels['managefolders'] = 'அடைவà¯à®•à®³à¯ˆ நிறà¯à®µà®•à®¿';
$labels['specialfolders'] = 'சிறபà¯à®ªà¯ அடைவà¯à®•à®³à¯';
-$labels['properties'] = 'Properties';
-$labels['folderproperties'] = 'Folder properties';
-$labels['parentfolder'] = 'Parent folder';
-$labels['location'] = 'Location';
-$labels['info'] = 'Information';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
-$labels['foldertype'] = 'Folder Type';
-$labels['personalfolder'] = 'Private Folder';
-$labels['otherfolder'] = 'Other User\'s Folder';
-$labels['sharedfolder'] = 'Public Folder';
-
$labels['sortby'] = 'வாரியாக அடà¯à®•à¯à®•à¯';
$labels['sortasc'] = 'à®à®±à¯ வரிசையாக அடà¯à®•à¯à®•à¯';
$labels['sortdesc'] = 'இறஙà¯à®•à¯ வரிசையாக அடà¯à®•à¯à®•à¯';
-$labels['undo'] = 'Undo';
-
-$labels['installedplugins'] = 'Installed plugins';
-$labels['plugin'] = 'Plugin';
-$labels['version'] = 'Version';
-$labels['source'] = 'Source';
-$labels['license'] = 'License';
-$labels['support'] = 'Get support';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
-$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/ta_IN/messages.inc b/program/localization/ta_IN/messages.inc
index 22466351a..d496b3836 100644
--- a/program/localization/ta_IN/messages.inc
+++ b/program/localization/ta_IN/messages.inc
@@ -15,30 +15,17 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
-$messages['errortitle'] = 'An error occurred!';
$messages['loginfailed'] = 'நà¯à®´à¯ˆà®µà¯ தோலà¯à®µà®¿à®¯à®Ÿà¯ˆà®¨à¯à®¤à®¤à¯';
$messages['cookiesdisabled'] = 'உஙà¯à®•à®³à¯ உலாவி நினைவிகளை அனà¯à®®à®¤à®¿à®ªà¯à®ªà®¤à®¿à®²à¯à®²à¯ˆ';
$messages['sessionerror'] = 'உஙà¯à®•à®³à¯ அமரà¯à®µà¯ செலà¯à®²à®¾à®¤à¯ அலà¯à®²à®¤à¯ à®®à¯à®Ÿà®¿à®µà¯à®±à¯à®±à®¤à¯';
$messages['storageerror'] = 'IMAP சேவையகதà¯à®¤à®¿à®±à¯à®•à®¾à®© இணைபà¯à®ªà¯ தோலà¯à®µà®¿à®¯à®Ÿà¯ˆà®¨à¯à®¤à®¤à¯';
$messages['servererror'] = 'சேவையக பிழை!';
-$messages['servererrormsg'] = 'Server Error: $msg';
-$messages['dberror'] = 'Database Error!';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'செலà¯à®²à®¾à®¤ வேணà¯à®Ÿà¯à®•à¯‹à®³à¯! எநà¯à®¤ தரவà¯à®®à¯ சேமிகà¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ.';
-$messages['invalidhost'] = 'Invalid server name.';
$messages['nomessagesfound'] = 'இநà¯à®¤ தபால௠பெடà¯à®Ÿà®¿à®¯à®¿à®²à¯ எநà¯à®¤ தரவà¯à®®à¯ சேமிகà¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ';
$messages['loggedout'] = 'நீஙà¯à®•à®³à¯ அமரà¯à®µà¯ˆ வெறà¯à®±à®¿à®•à®°à®®à®¾à®• à®®à¯à®Ÿà®¿à®¤à¯à®¤à¯€à®°à¯à®•à®³à¯. வணகà¯à®•à®®à¯';
$messages['mailboxempty'] = 'தபால௠பெடà¯à®Ÿà®¿ காலியாக உளà¯à®³à®¤à¯';
-$messages['refreshing'] = 'Refreshing...';
$messages['loading'] = 'à®à®±à¯à®±à¯à®•à®¿à®±à®¤à¯...';
$messages['uploading'] = 'கோபà¯à®ªà¯ˆ à®à®±à¯à®±à¯à®•à®¿à®±à®¤à¯...';
-$messages['uploadingmany'] = 'Uploading files...';
$messages['loadingdata'] = 'தரவை à®à®±à¯à®±à¯à®•à®¿à®±à®¤à¯...';
$messages['checkingmail'] = 'பà¯à®¤à¯ செயà¯à®¤à®¿à®•à®³à¯ˆ சரிபாரà¯à®•à¯à®•à®¿à®±à®¤à¯...';
$messages['sendingmessage'] = 'செயà¯à®¤à®¿à®¯à¯ˆ அனà¯à®ªà¯à®ªà¯à®•à®¿à®±à®¤à¯...';
@@ -48,31 +35,21 @@ $messages['messagesaved'] = 'செயà¯à®¤à®¿ வரைவில௠சேமà
$messages['successfullysaved'] = 'வெறà¯à®±à®¿à®•à®°à®®à®¾à®• சேமிகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯';
$messages['addedsuccessfully'] = 'தொடரà¯à®ªà¯ சேமிகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯';
$messages['contactexists'] = 'இநà¯à®¤ மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•à®µà®°à®¿à®¯à¯à®Ÿà®©à¯ ஒர௠தொடரà¯à®ªà¯ à®à®±à¯à®•à®©à®µà¯‡ உளà¯à®³à®¤à¯';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'உஙà¯à®•à®³à¯ தனிபà¯à®ªà®Ÿà¯à®Ÿ தகவலை பாதà¯à®•à®¾à®•à¯à®•, தொலை தூரப௠படஙà¯à®•à®³à¯ இநà¯à®¤ செயà¯à®¤à®¿à®¯à®¿à®²à¯ தடà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯';
$messages['encryptedmessage'] = 'மனà¯à®©à®¿à®•à¯à®•à®µà¯à®®à¯! இநà¯à®¤ செயà¯à®¤à®¿ கà¯à®±à®¿à®®à¯à®±à¯ˆà®¯à®¾à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯ அதனால௠காடà¯à®Ÿ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯.';
$messages['nocontactsfound'] = 'எநà¯à®¤ தொடரà¯à®ªà¯à®•à®³à¯à®®à¯ காணபà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ';
$messages['contactnotfound'] = 'நீஙà¯à®•à®³à¯ வேணà¯à®Ÿà®¿à®¯ தொடரà¯à®ªà¯ காணபà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'செயà¯à®¤à®¿ அனà¯à®ªà¯à®ªà¯à®µà®¤à¯ தோலà¯à®µà®¿à®¯à¯à®±à¯à®±à®¤à¯';
$messages['senttooquickly'] = 'இநà¯à®¤ செயà¯à®¤à®¿ அனà¯à®ªà¯à®ªà¯à®µà®¤à®±à¯à®•à¯ à®®à¯à®©à¯à®ªà¯ தயவ௠செயà¯à®¤à¯ $sec வினாடி(களà¯) காதà¯à®¤à®¿à®°à¯à®•à¯à®•à®µà¯à®®à¯.';
-$messages['errorsavingsent'] = 'அனà¯à®ªà¯à®ªà®¿à®¯ அஞà¯à®šà®²à¯ˆ சேமிகà¯à®•à¯à®®à¯ போத௠பிழை à®à®±à¯à®ªà®Ÿà¯à®Ÿà®¤à¯';
-$messages['errorsaving'] = 'சேமிகà¯à®•à¯à®®à¯ போத௠பிழை à®à®±à¯à®ªà®Ÿà¯à®Ÿà®¤à¯';
$messages['errormoving'] = 'செயà¯à®¤à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'செயà¯à®¤à®¿à®¯à¯ˆ நீகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ';
$messages['errormarking'] = 'செயà¯à®¤à®¿à®¯à¯ˆ நடà¯à®šà®¤à¯à®¤à®¿à®°à®®à®¿à®Ÿ à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ';
$messages['deletecontactconfirm'] = 'நீஙà¯à®•à®³à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®¤à¯à®¤ தொடரà¯à®ªà¯à®•à®³à¯ˆ நீகà¯à®• விரà¯à®®à¯à®ªà¯à®•à®¿à®±à¯€à®°à¯à®•à®³à®¾ ?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'நீஙà¯à®•à®³à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®¤à¯à®¤ செயà¯à®¤à®¿à®•à®³à¯ˆ நீகà¯à®• விரà¯à®®à¯à®ªà¯à®•à®¿à®±à¯€à®°à¯à®•à®³à®¾ ?';
$messages['deletefolderconfirm'] = 'நீஙà¯à®•à®³à¯ இநà¯à®¤ அடைவை நீகà¯à®• விரà¯à®®à¯à®ªà¯à®•à®¿à®±à¯€à®°à¯à®•à®³à®¾ ?';
$messages['purgefolderconfirm'] = 'நீஙà¯à®•à®³à¯ இநà¯à®¤ அடைவிலிரà¯à®•à¯à®•à¯à®®à¯ எலà¯à®²à®¾ செயà¯à®¤à®¿à®•à®³à¯ˆà®¯à¯à®®à¯ நீகà¯à®• விரà¯à®®à¯à®ªà¯à®•à®¿à®±à¯€à®°à¯à®•à®³à®¾ ?';
-$messages['contactdeleting'] = 'Deleting contact(s)...';
-$messages['groupdeleting'] = 'Deleting group...';
$messages['folderdeleting'] = 'அடைவை நீகà¯à®•à¯à®•à®¿à®±à®¤à¯...';
$messages['foldermoving'] = 'அடைவை நகரà¯à®¤à¯à®¤à¯à®•à®¿à®±à®¤à¯...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'விணà¯à®£à®ªà¯à®ªà®¤à¯à®¤à¯ˆ à®®à¯à®´à¯à®®à¯ˆà®¯à®¾à®• நிறைவ௠செயà¯à®¯à®µà®¿à®²à¯à®²à¯ˆ';
$messages['noemailwarning'] = 'தயவ௠செயà¯à®¤à¯ உணà¯à®®à¯ˆà®¯à®¾à®© மினà¯à®©à®žà¯à®šà®²à¯ˆ எழà¯à®¤à¯à®™à¯à®•à®³à¯';
$messages['nonamewarning'] = 'தயவ௠செயà¯à®¤à¯ பெயரை எழà¯à®¤à¯à®™à¯à®•à®³à¯';
@@ -86,51 +63,27 @@ $messages['noldapserver'] = 'தயவ௠செயà¯à®¤à¯ தேடà¯à®µà®¤à
$messages['nosearchname'] = 'தயவ௠செயà¯à®¤à¯ தொடரà¯à®ªà®¿à®©à¯ பெயரோ மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•à®µà®°à®¿à®¯à¯‡à®¾ எழà¯à®¤à¯à®™à¯à®•à®³à¯';
$messages['notuploadedwarning'] = 'எலà¯à®²à®¾ இணைபà¯à®ªà¯à®•à®³à¯à®®à¯ à®à®±à¯à®±à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ. தயவ௠செயà¯à®¤à¯ காதà¯à®¤à®¿à®°à¯à®™à¯à®•à®³à¯ அலà¯à®²à®¤à¯ à®à®±à¯à®±à®¤à¯à®¤à¯ˆ ரதà¯à®¤à¯ செயà¯à®¯à¯à®™à¯à®•à®³à¯.';
$messages['searchsuccessful'] = '$nr செயà¯à®¤à®¿à®•à®³à¯ கணà¯à®Ÿà¯à®ªà®¿à®Ÿà®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'தேடà¯à®¤à®²à¯ எநà¯à®¤ பொரà¯à®¤à¯à®¤à®¤à¯à®¤à¯ˆà®¯à¯à®®à¯ அனà¯à®ªà¯à®ªà®µà®¿à®²à¯à®²à¯ˆ';
$messages['searching'] = 'தேடà¯à®•à®¿à®±à®¤à¯...';
$messages['checking'] = 'சரி பாரà¯à®•à¯à®•à®¿à®±à®¤à¯...';
$messages['nospellerrors'] = 'எழà¯à®¤à¯à®¤à¯ பிழைகள௠இலà¯à®²à¯ˆ';
$messages['folderdeleted'] = 'அடைவ௠வெறà¯à®±à®¿à®•à®°à®®à®¾à®• நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'வெறà¯à®±à®¿à®•à®°à®®à®¾à®• நீகà¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯';
$messages['converting'] = 'வடிவதà¯à®¤à¯ˆ நீகà¯à®•à¯à®•à®¿à®±à®¤à¯...';
$messages['messageopenerror'] = 'சேவையகதà¯à®¤à®¿à®²à®¿à®°à¯à®¨à¯à®¤à¯ செயà¯à®¤à®¿à®¯à¯ˆ à®à®±à¯à®± à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ';
$messages['fileuploaderror'] = 'கோபà¯à®ªà¯ à®à®±à¯à®±à®®à¯ தோலà¯à®µà®¿à®¯à®Ÿà®¾à®¨à¯à®¤à®¤à¯';
$messages['filesizeerror'] = 'à®à®±à¯à®±à®¿à®¯ கோபà¯à®ªà¯ அதிகபடà¯à®š அளவான $size-஠மீறியதà¯';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'இநà¯à®¤ à®®à¯à®•à®µà®°à®¿à®¯à®¿à®©à¯ மூலதà¯à®¤à¯ˆ படிகà¯à®• மடà¯à®Ÿà¯à®®à¯à®¤à®¾à®©à¯ à®®à¯à®Ÿà®¿à®¯à¯à®®à¯';
$messages['errorsavingcontact'] = 'தொடரà¯à®ªà¯ à®®à¯à®•à®µà®°à®¿à®¯à¯ˆ சேமிகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ';
$messages['movingmessage'] = 'செயà¯à®¤à®¿à®¯à¯ˆ நகரà¯à®¤à¯à®¤à¯à®•à®¿à®±à®¤à¯...';
-$messages['copyingmessage'] = 'Copying message(s)...';
-$messages['copyingcontact'] = 'Copying contact(s)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
-$messages['deletingmessage'] = 'Deleting message(s)...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
$messages['receiptsent'] = 'படிதà¯à®¤ சீடà¯à®Ÿà¯ வெறà¯à®±à®¿à®•à®°à®®à®¾à®• அனà¯à®ªà¯à®ªà®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯';
$messages['errorsendingreceipt'] = 'சீடà¯à®Ÿà¯ˆ அனà¯à®ªà¯à®ª à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
$messages['nodeletelastidentity'] = 'நீஙà¯à®•à®³à¯ இநà¯à®¤ அடையாளதà¯à®¤à¯ˆ நீகà¯à®• à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯ இத௠தான௠கடைசி';
$messages['forbiddencharacter'] = 'அடைவ௠பெயரில௠தடை செயà¯à®¯à®ªà¯à®ªà®Ÿà¯à®Ÿ எழà¯à®¤à¯à®¤à¯à®•à¯à®•à®³à¯ உளà¯à®³à®¤à¯';
$messages['selectimportfile'] = 'தயவ௠செயà¯à®¤à¯ à®à®±à¯à®±à¯à®µà®¤à®±à¯à®•à¯ ஒர௠கோபà¯à®ªà¯ˆ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®™à¯à®•à®³à¯';
$messages['addresswriterror'] = 'நீஙà¯à®•à®³à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®¤à¯à®¤ தொடரà¯à®ªà¯à®•à®³à®¿à®²à¯ எழà¯à®¤ à®®à¯à®Ÿà®¿à®¯à®¾à®¤à¯';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'à®à®±à¯à®±à¯à®•à®¿à®±à®¤à¯, தயவ௠செயà¯à®¤à¯ காதà¯à®¤à®¿à®°à¯à®™à¯à®•à®³à¯...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
$messages['importconfirm'] = '<b>வெறà¯à®±à®¿à®•à®°à®®à®¾à®• $inserted தொடரà¯à®ªà¯à®•à®³à¯ à®à®±à¯à®±à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯, à®à®±à¯à®•à®©à®µà¯‡ உளà¯à®³ $skipped தொடரà¯à®ªà¯à®•à®³à¯ தவிரà¯à®•à¯à®•à®ªà¯à®ªà®Ÿà¯à®Ÿà®¤à¯</b>: <p><em>$names</em></p>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'பணி அனà¯à®®à®¤à®¿à®•à¯à®•à®ªà¯à®ªà®Ÿà®µà®¿à®²à¯à®²à¯ˆ!';
$messages['nofromaddress'] = 'நீஙà¯à®•à®³à¯ தேரà¯à®¨à¯à®¤à¯†à®Ÿà¯à®¤à¯à®¤ அடையாளதà¯à®¤à®¿à®²à¯ மினà¯à®©à®žà¯à®šà®²à¯ இலà¯à®²à¯ˆ';
$messages['editorwarning'] = 'எளிய உரை திரà¯à®¤à¯à®¤à®¿à®•à¯à®•à¯ மாறà¯à®µà®¤à®©à¯ மூலம௠எலà¯à®²à®¾ உரை வடிவஙà¯à®•à®³à¯à®®à¯ தொலைநà¯à®¤à¯ போகக௠கூடà¯à®®à¯. தொடர விரà¯à®®à¯à®ªà¯à®•à®¿à®±à¯€à®°à¯à®•à®³à®¾ ?';
@@ -142,35 +95,4 @@ $messages['smtptoerror'] = 'SMTP பிழை ($code): "$to" பெறà¯à®©à®°à
$messages['smtprecipientserror'] = 'SMTP பிழை : பெறà¯à®©à®°à¯ படà¯à®Ÿà®¿à®¯à®²à¯ˆ பிரிகà¯à®• à®®à¯à®Ÿà®¿à®¯à®µà®¿à®²à¯à®²à¯ˆ';
$messages['smtperror'] = 'SMTP பிழை: $msg';
$messages['emailformaterror'] = 'தவறான மினà¯à®©à®žà¯à®šà®²à¯ à®®à¯à®•à®µà®°à®¿: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/th_TH/labels.inc b/program/localization/th_TH/labels.inc
index 85b091e5b..9ee0858e2 100644
--- a/program/localization/th_TH/labels.inc
+++ b/program/localization/th_TH/labels.inc
@@ -15,31 +15,20 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'ยินดีต้อนรับสู่ $product';
$labels['username'] = 'บัà¸à¸Šà¸µà¸œà¸¹à¹‰à¹ƒà¸Šà¹‰';
$labels['password'] = 'รหัสผ่าน';
$labels['server'] = 'เซิร์ฟเวอร์';
$labels['login'] = 'เข้าสู่ระบบ';
-
-// taskbar
$labels['logout'] = 'ออà¸à¸ˆà¸²à¸à¸£à¸°à¸šà¸š';
$labels['mail'] = 'อีเมล์';
$labels['settings'] = 'ปรับà¹à¸•à¹ˆà¸‡à¸„่าส่วนตัว';
$labels['addressbook'] = 'สมุดรายชื่อ';
-
-// mailbox names
$labels['inbox'] = 'à¸à¸¥à¹ˆà¸­à¸‡à¸‚าเข้า';
$labels['drafts'] = 'à¸à¸¥à¹ˆà¸­à¸‡à¸ˆà¸”หมายร่าง';
$labels['sent'] = 'à¸à¸¥à¹ˆà¸­à¸‡à¸‚าออà¸';
$labels['trash'] = 'ถังขยะ';
$labels['junk'] = 'à¸à¸¥à¹ˆà¸­à¸‡à¸ˆà¸”หมายขยะ';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'หัวจดหมาย';
$labels['from'] = 'ผู้ส่ง';
$labels['sender'] = 'ผู้ส่ง';
@@ -47,34 +36,23 @@ $labels['to'] = 'ผู้รับ';
$labels['cc'] = 'คัดลอà¸';
$labels['bcc'] = 'à¹à¸­à¸šà¸ªà¸³à¹€à¸™à¸²à¸–ึง';
$labels['replyto'] = 'ตอบà¸à¸¥à¸±à¸š';
-$labels['followupto'] = 'Followup-To';
$labels['date'] = 'วันที่';
$labels['size'] = 'ขนาด';
$labels['priority'] = 'ระดับความสำคัà¸';
$labels['organization'] = 'องค์à¸à¸£';
$labels['readstatus'] = 'สถานะà¸à¸²à¸£à¹€à¸›à¸´à¸”อ่าน';
$labels['listoptions'] = 'ตัวเลือà¸à¸à¸²à¸£à¹à¸ªà¸”งรายà¸à¸²à¸£';
-
$labels['mailboxlist'] = 'à¸à¸¥à¹ˆà¸­à¸‡à¸ˆà¸”หมาย';
$labels['messagesfromto'] = 'จดหมายจาภ$from ถึง $to จำนวน $count ฉบับ';
-$labels['threadsfromto'] = 'Threads $from to $to of $count';
$labels['messagenrof'] = 'จดหมายฉบับที่ $nr จาภ$count ฉบับ';
-$labels['fromtoshort'] = '$from – $to of $count';
-
$labels['copy'] = 'คัดลอà¸';
$labels['move'] = 'เลื่อน';
$labels['moveto'] = 'ย้ายไป...';
$labels['download'] = 'ดาวน์โหลด';
-$labels['open'] = 'Open';
$labels['showattachment'] = 'à¹à¸ªà¸”ง';
-$labels['showanyway'] = 'Show it anyway';
-
$labels['filename'] = 'ชื่อไฟล์';
$labels['filesize'] = 'ขนาดไฟล์';
-
$labels['addtoaddressbook'] = 'บันทึà¸à¹ƒà¸™à¸ªà¸¡à¸¸à¸”รายชื่อ';
-
-// weekdays short
$labels['sun'] = 'อ';
$labels['mon'] = 'จ';
$labels['tue'] = 'อ';
@@ -82,8 +60,6 @@ $labels['wed'] = 'พ';
$labels['thu'] = 'พฤ';
$labels['fri'] = 'ศ';
$labels['sat'] = 'ส';
-
-// weekdays long
$labels['sunday'] = 'วันอาทิตย์';
$labels['monday'] = 'วันจันทร์';
$labels['tuesday'] = 'วันอังคาร';
@@ -91,8 +67,6 @@ $labels['wednesday'] = 'วันพุธ';
$labels['thursday'] = 'วันพฤหัสบดี';
$labels['friday'] = 'วันศุà¸à¸£à¹Œ';
$labels['saturday'] = 'วันเสาร์';
-
-// months short
$labels['jan'] = 'ม.ค.';
$labels['feb'] = 'à¸.พ.';
$labels['mar'] = 'มี.ค.';
@@ -105,8 +79,6 @@ $labels['sep'] = 'à¸.ย.';
$labels['oct'] = 'ต.ค.';
$labels['nov'] = 'พ.ย.';
$labels['dec'] = 'ธ.ค.';
-
-// months long
$labels['longjan'] = 'มà¸à¸£à¸²à¸„ม';
$labels['longfeb'] = 'à¸à¸¸à¸¡à¸ à¸²à¸žà¸±à¸™à¸˜à¹Œ';
$labels['longmar'] = 'มีนาคม';
@@ -119,10 +91,7 @@ $labels['longsep'] = 'à¸à¸±à¸™à¸¢à¸²à¸¢à¸™';
$labels['longoct'] = 'ตุลาคม';
$labels['longnov'] = 'พฤศจิà¸à¸²à¸¢à¸™';
$labels['longdec'] = 'ธันวาคม';
-
$labels['today'] = 'วันนี้';
-
-// toolbar buttons
$labels['refresh'] = 'รีเฟรช';
$labels['checkmail'] = 'ตรวจสอบจดหมายใหม่';
$labels['compose'] = 'เขียนจดหมายใหม่';
@@ -133,7 +102,6 @@ $labels['replytoallmessage'] = 'ตอบà¸à¸¥à¸±à¸šà¸–ึงทุà¸à¸„นใ
$labels['replyall'] = 'ตอบà¸à¸¥à¸±à¸šà¸—ั้งหมด';
$labels['replylist'] = 'รายชื่อตอบà¸à¸¥à¸±à¸š';
$labels['forward'] = 'ส่งต่อ';
-$labels['forwardinline'] = 'Forward inline';
$labels['forwardattachment'] = 'ส่งต่อเป็นไฟล์à¹à¸™à¸š';
$labels['forwardmessage'] = 'ส่งต่อจดหมาย';
$labels['deletemessage'] = 'ลบจดหมาย';
@@ -149,127 +117,59 @@ $labels['mark'] = 'ทำเครื่องหมาย';
$labels['markmessages'] = 'ทำเครื่องหมายข้อความ';
$labels['markread'] = 'ว่าอ่านà¹à¸¥à¹‰à¸§';
$labels['markunread'] = 'ว่ายังไม่ได้อ่าน';
-$labels['markflagged'] = 'As flagged';
-$labels['markunflagged'] = 'As unflagged';
$labels['moreactions'] = 'à¸à¸²à¸£à¸à¸£à¸°à¸—ำเพิ่มเติม...';
$labels['more'] = 'เพิ่มเติม';
$labels['back'] = 'ย้อนà¸à¸¥à¸±à¸š';
$labels['options'] = 'ตัวเลือà¸';
-
$labels['select'] = 'เลือà¸';
$labels['all'] = 'ทั้งหมด';
$labels['none'] = 'ไม่เลือà¸';
$labels['currpage'] = 'หน้าปัจจุบัน';
$labels['unread'] = 'จดหมายที่ไม่ได้อ่าน';
-$labels['flagged'] = 'Flagged';
$labels['unanswered'] = 'ยังไม่ได้ตอบ';
-$labels['withattachment'] = 'With attachment';
$labels['deleted'] = 'ลบà¹à¸¥à¹‰à¸§';
$labels['undeleted'] = 'ยังไม่ได้ลบ';
-$labels['invert'] = 'Invert';
$labels['filter'] = 'ตัวà¸à¸£à¸­à¸‡à¸‚้อมูล';
$labels['list'] = 'รายà¸à¸²à¸£';
-$labels['threads'] = 'Threads';
$labels['expand-all'] = 'à¹à¸ªà¸”งทั้งหมด';
$labels['expand-unread'] = 'à¹à¸ªà¸”งเฉพาะที่ยังไม่ได้อ่าน';
$labels['collapse-all'] = 'ปิดทั้งหมด';
-$labels['threaded'] = 'Threaded';
-
-$labels['autoexpand_threads'] = 'Expand message threads';
-$labels['do_expand'] = 'all threads';
-$labels['expand_only_unread'] = 'only with unread messages';
$labels['fromto'] = 'จาà¸/ถึง';
-$labels['flag'] = 'Flag';
$labels['attachment'] = 'ไฟล์à¹à¸™à¸š';
$labels['nonesort'] = 'ไม่เลือà¸';
$labels['sentdate'] = 'วันที่ส่ง';
$labels['arrival'] = 'วันที่มาถึง';
$labels['asc'] = 'เรียงจาà¸à¸™à¹‰à¸­à¸¢à¸¡à¸²à¸¡à¸²à¸';
$labels['desc'] = 'เรีียงจาà¸à¸¡à¸²à¸à¹„ปน้อย';
-$labels['listcolumns'] = 'List columns';
$labels['listsorting'] = 'จัดเรียงคอลัมน์';
-$labels['listorder'] = 'Sorting order';
-$labels['listmode'] = 'List view mode';
-
-$labels['folderactions'] = 'Folder actions...';
$labels['compact'] = 'à¹à¸šà¸šà¸¢à¹ˆà¸­';
$labels['empty'] = 'ว่างเปล่า';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'พื้นที่ใช้งาน';
$labels['unknown'] = 'ไม่ทราบ';
$labels['unlimited'] = 'ไม่จำà¸à¸±à¸”';
-
$labels['quicksearch'] = 'ค้นหาà¹à¸šà¸šà¸”่วน';
$labels['resetsearch'] = 'ล้างà¸à¸²à¸£à¸„้นหา';
-$labels['searchmod'] = 'Search modifiers';
-$labels['msgtext'] = 'Entire message';
$labels['body'] = 'เนื้อหา';
-$labels['type'] = 'Type';
-
-$labels['openinextwin'] = 'Open in new window';
-$labels['emlsave'] = 'Download (.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
-$labels['editasnew'] = 'Edit as new';
-$labels['send'] = 'Send';
$labels['sendmessage'] = 'ส่งจดหมาย';
$labels['savemessage'] = 'บันทึà¸à¸‰à¸šà¸±à¸šà¸£à¹ˆà¸²à¸‡';
$labels['addattachment'] = 'à¹à¸™à¸šà¹„ฟล์';
$labels['charset'] = 'Charset';
-$labels['editortype'] = 'Editor type';
$labels['returnreceipt'] = 'ตอบà¸à¸¥à¸±à¸šà¸œà¸¹à¹‰à¸£à¸±à¸š';
-$labels['dsn'] = 'Delivery status notification';
-$labels['mailreplyintro'] = 'On $date, $sender wrote:';
-$labels['originalmessage'] = 'Original Message';
-
-$labels['editidents'] = 'Edit identities';
-$labels['spellcheck'] = 'Spell';
$labels['checkspelling'] = 'ตรวจสอบคำผิด';
$labels['resumeediting'] = 'à¹à¸à¹‰à¹„ขต่อ';
$labels['revertto'] = 'ย้นà¸à¸¥à¸±à¸šà¹„ปยัง';
-
-$labels['attach'] = 'Attach';
$labels['attachments'] = 'ไฟล์à¹à¸™à¸š';
$labels['upload'] = 'อัพโหลด';
-$labels['uploadprogress'] = '$percent ($current from $total)';
$labels['close'] = 'ปิด';
-$labels['messageoptions'] = 'Message options...';
-
$labels['low'] = 'ต่ำ';
$labels['lowest'] = 'ต่ำสุด';
$labels['normal'] = 'ปà¸à¸•à¸´';
$labels['high'] = 'สูง';
$labels['highest'] = 'สูงสุด';
-
$labels['nosubject'] = '(ไม่มีหัวข้อ)';
$labels['showimages'] = 'à¹à¸ªà¸”งรูป';
-$labels['alwaysshow'] = 'Always show images from $sender';
-$labels['isdraft'] = 'This is a draft message.';
-$labels['andnmore'] = '$nr more...';
-$labels['togglemoreheaders'] = 'Show more message headers';
-$labels['togglefullheaders'] = 'Toggle raw message headers';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Plain text';
-$labels['savesentmessagein'] = 'Save sent message in';
-$labels['dontsave'] = 'don\'t save';
-$labels['maxuploadsize'] = 'Maximum allowed file size is $size';
-
-$labels['addcc'] = 'Add Cc';
-$labels['addbcc'] = 'Add Bcc';
-$labels['addreplyto'] = 'Add Reply-To';
-$labels['addfollowupto'] = 'Add Followup-To';
-
-// mdn
-$labels['mdnrequest'] = 'The sender of this message has asked to be notified when you read this message. Do you wish to notify the sender?';
-$labels['receiptread'] = 'Return Receipt (read)';
-$labels['yourmessage'] = 'This is a Return Receipt for your message';
-$labels['receiptnote'] = 'Note: This receipt only acknowledges that the message was displayed on the recipient\'s computer. There is no guarantee that the recipient has read or understood the message contents.';
-
-// address boook
$labels['name'] = 'ชื่อà¹à¸ªà¸”ง';
$labels['firstname'] = 'ชื่อ';
$labels['surname'] = 'สà¸à¸¸à¸¥';
@@ -280,7 +180,6 @@ $labels['nickname'] = 'ชื่อเล่น';
$labels['jobtitle'] = 'ตำà¹à¸«à¸™à¹ˆà¸‡à¸‡à¸²à¸™';
$labels['department'] = 'à¹à¸œà¸™à¸';
$labels['gender'] = 'เพศ';
-$labels['maidenname'] = 'Maiden Name';
$labels['email'] = 'อีเมล์';
$labels['phone'] = 'โทรศัพท์';
$labels['address'] = 'ที่อยู่';
@@ -290,52 +189,38 @@ $labels['zipcode'] = 'รหัสไปรษณีย์';
$labels['region'] = 'รัà¸/จังหวัด';
$labels['country'] = 'ประเทศ';
$labels['birthday'] = 'วันเà¸à¸´à¸”';
-$labels['anniversary'] = 'Anniversary';
$labels['website'] = 'เว็บไซต์';
$labels['instantmessenger'] = 'IM';
-$labels['notes'] = 'Notes';
$labels['male'] = 'ชาย';
$labels['female'] = 'หà¸à¸´à¸‡';
$labels['manager'] = 'ผู้จัดà¸à¸²à¸£';
$labels['assistant'] = 'ผู้ช่วย';
-$labels['spouse'] = 'Spouse';
$labels['allfields'] = 'ช่องข้อมูลทั้่งหมด';
$labels['search'] = 'ค้นหา';
$labels['advsearch'] = 'ค้นหาขั้นสูง';
$labels['advanced'] = 'ขั้นสูง';
$labels['other'] = 'อื่นๆ';
-
$labels['typehome'] = 'บ้าน';
$labels['typework'] = 'สถานที่ทำงาน';
$labels['typeother'] = 'อื่นๆ';
$labels['typemobile'] = 'มือถือ';
-$labels['typemain'] = 'Main';
$labels['typehomefax'] = 'โทรสารที่บ้าน';
$labels['typeworkfax'] = 'โทรสารที่ทำงาน';
$labels['typecar'] = 'รถ';
$labels['typepager'] = 'เพจเจอร์';
$labels['typevideo'] = 'วีดีโอ';
-$labels['typeassistant'] = 'Assistant';
$labels['typehomepage'] = 'โฮมเพจ';
$labels['typeblog'] = 'บล็อà¸';
$labels['typeprofile'] = 'โปรไฟล์';
-
$labels['addfield'] = 'เพิ่มช่องข้อมูล...';
$labels['addcontact'] = 'เพิ่มรายชื่อ';
$labels['editcontact'] = 'à¹à¸à¹‰à¹„ขรายชื่อ';
-$labels['contacts'] = 'Contacts';
-$labels['contactproperties'] = 'Contact properties';
-$labels['personalinfo'] = 'Personal information';
-
$labels['edit'] = 'à¹à¸à¹‰à¹„ข';
$labels['cancel'] = 'ยà¸à¹€à¸¥à¸´à¸';
$labels['save'] = 'บันทึà¸';
$labels['delete'] = 'ลบ';
$labels['rename'] = 'เปลี่ยนชื่อ';
$labels['addphoto'] = 'เพิ่ม';
-$labels['replacephoto'] = 'Replace';
-$labels['uploadphoto'] = 'Upload photo';
-
$labels['newcontact'] = 'สร้างรายชื่อใหม่';
$labels['deletecontact'] = 'ลบรายชื่อที่เลือà¸';
$labels['composeto'] = 'เขียนจดหมายถึง';
@@ -344,143 +229,40 @@ $labels['print'] = 'พิมพ์';
$labels['export'] = 'ส่งออà¸';
$labels['exportall'] = 'ส่งออà¸à¸—ั้งหมด';
$labels['exportsel'] = 'ส่งออà¸à¹€à¸‰à¸žà¸²à¸°à¸—ี่เลือà¸';
-$labels['exportvcards'] = 'Export contacts in vCard format';
-$labels['newcontactgroup'] = 'Create new contact group';
-$labels['grouprename'] = 'Rename group';
-$labels['groupdelete'] = 'Delete group';
-$labels['groupremoveselected'] = 'Remove selected contacts from group';
-
$labels['previouspage'] = 'หน้าที่à¹à¸¥à¹‰à¸§';
-$labels['firstpage'] = 'Show first page';
$labels['nextpage'] = 'หน้าถัดไป';
-$labels['lastpage'] = 'Show last page';
-
-$labels['group'] = 'Group';
-$labels['groups'] = 'Groups';
-$labels['listgroup'] = 'List group members';
-$labels['personaladrbook'] = 'Personal Addresses';
-
-$labels['searchsave'] = 'Save search';
-$labels['searchdelete'] = 'Delete search';
-
-$labels['import'] = 'Import';
-$labels['importcontacts'] = 'Import contacts';
-$labels['importfromfile'] = 'Import from file:';
-$labels['importtarget'] = 'Add new contacts to address book:';
-$labels['importreplace'] = 'Replace the entire address book';
-$labels['importdesc'] = 'You can upload contacts from an existing address book.<br/>We currently support importing addresses from the <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> or CSV (comma-separated) data format.';
-$labels['done'] = 'Done';
-
-// settings
$labels['settingsfor'] = 'ตั้งค่าสำหรับ';
-$labels['about'] = 'About';
$labels['preferences'] = 'ปรับà¹à¸•à¹ˆà¸‡';
$labels['userpreferences'] = 'ข้อมูลส่วนตัว';
$labels['editpreferences'] = 'à¹à¸à¹‰à¹„ขข้อมูลส่วนตัว';
-
$labels['identities'] = 'ชื่อà¹à¸ªà¸”งตัว';
$labels['manageidentities'] = 'จัดà¸à¸²à¸£à¸Šà¸·à¹ˆà¸­à¹à¸ªà¸”งตัวสำหรับรายชื่อนี้';
$labels['newidentity'] = 'ชื่อà¹à¸ªà¸”งตัวใหม่';
-
$labels['newitem'] = 'New item';
$labels['edititem'] = 'Edit item';
-
$labels['preferhtml'] = 'อ่านà¹à¸šà¸š HTML';
-$labels['defaultcharset'] = 'Default Character Set';
$labels['htmlmessage'] = 'จดหมาย HTML';
-$labels['messagepart'] = 'Part';
-$labels['digitalsig'] = 'Digital Signature';
-$labels['dateformat'] = 'Date format';
-$labels['timeformat'] = 'Time format';
$labels['prettydate'] = 'à¹à¸ªà¸”งวันที่à¹à¸šà¸šà¸¢à¹ˆà¸­';
$labels['setdefault'] = 'ตั้งเป็นค่าใช้งาน';
-$labels['autodetect'] = 'Auto';
$labels['language'] = 'ภาษา';
$labels['timezone'] = 'เขตเวลา';
$labels['pagesize'] = 'จำนวนจดหมายต่อหน้า';
$labels['signature'] = 'ลายมือชื่อ';
$labels['dstactive'] = 'Daylight savings';
-$labels['showinextwin'] = 'Open message in a new window';
-$labels['composeextwin'] = 'Compose in a new window';
$labels['htmleditor'] = 'เขียนจดหมายà¹à¸šà¸š HTML';
-$labels['htmlonreply'] = 'on reply to HTML message';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
$labels['htmlsignature'] = 'ลายมือชื่อà¹à¸šà¸š HTML';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'à¹à¸ªà¸”งหน้าต่างตัวอย่างà¹à¸ªà¸”งผล';
-$labels['skin'] = 'Interface skin';
-$labels['logoutclear'] = 'Clear Trash on logout';
-$labels['logoutcompact'] = 'Compact Inbox on logout';
-$labels['uisettings'] = 'User Interface';
-$labels['serversettings'] = 'Server Settings';
-$labels['mailboxview'] = 'Mailbox View';
-$labels['mdnrequests'] = 'On request for return receipt';
-$labels['askuser'] = 'ask me';
-$labels['autosend'] = 'send receipt';
-$labels['autosendknown'] = 'send receipt to my contacts, otherwise ask me';
-$labels['autosendknownignore'] = 'send receipt to my contacts, otherwise ignore';
-$labels['ignore'] = 'ignore';
-$labels['readwhendeleted'] = 'Mark the message as read on delete';
-$labels['flagfordeletion'] = 'Flag the message for deletion instead of delete';
-$labels['skipdeleted'] = 'Do not show deleted messages';
-$labels['deletealways'] = 'If moving messages to Trash fails, delete them';
-$labels['deletejunk'] = 'Directly delete messages in Junk';
-$labels['showremoteimages'] = 'Display remote inline images';
-$labels['fromknownsenders'] = 'from known senders';
-$labels['always'] = 'always';
-$labels['showinlineimages'] = 'Display attached images below the message';
$labels['autosavedraft'] = 'บันทึà¸à¹€à¸›à¹‡à¸™à¸ˆà¸”หมายร่างอัตโนมัติ';
-$labels['everynminutes'] = 'every $n minute(s)';
-$labels['refreshinterval'] = 'Refresh (check for new messages, etc.)';
$labels['never'] = 'ไม่ใช้';
-$labels['immediately'] = 'immediately';
-$labels['messagesdisplaying'] = 'Displaying Messages';
-$labels['messagescomposition'] = 'Composing Messages';
-$labels['mimeparamfolding'] = 'Attachment names';
-$labels['2231folding'] = 'Full RFC 2231 (Thunderbird)';
-$labels['miscfolding'] = 'RFC 2047/2231 (MS Outlook)';
-$labels['2047folding'] = 'Full RFC 2047 (other)';
-$labels['force7bit'] = 'Use MIME encoding for 8-bit characters';
$labels['advancedoptions'] = 'ตัวเลือà¸à¸‚ั้นสูง';
-$labels['focusonnewmessage'] = 'Focus browser window on new message';
-$labels['checkallfolders'] = 'Check all folders for new messages';
-$labels['displaynext'] = 'After message delete/move display the next message';
-$labels['defaultfont'] = 'Default font of HTML message';
-$labels['mainoptions'] = 'Main Options';
-$labels['browseroptions'] = 'Browser Options';
-$labels['section'] = 'Section';
-$labels['maintenance'] = 'Maintenance';
$labels['newmessage'] = 'ข้อความใหม่';
$labels['signatureoptions'] = 'ตัวเลือà¸à¸ªà¸³à¸«à¸£à¸±à¸šà¸¥à¸²à¸¢à¹€à¸‹à¹‡à¹‡à¸™à¸•à¹Œ';
$labels['whenreplying'] = 'เมื่อตอบà¸à¸¥à¸±à¸š';
-$labels['replyempty'] = 'do not quote the original message';
-$labels['replytopposting'] = 'start new message above the quote';
-$labels['replybottomposting'] = 'start new message below the quote';
-$labels['replyremovesignature'] = 'When replying remove original signature from message';
$labels['autoaddsignature'] = 'เพิ่มลายเซ็นต์เข้าไปอัตโนมัติ';
$labels['newmessageonly'] = 'เฉพาะข้อความใหม่เท่านั้น';
$labels['replyandforwardonly'] = 'ตอบà¸à¸¥à¸±à¸šà¹à¸¥à¸°à¸ªà¹ˆà¸‡à¸•à¹ˆà¸­à¹€à¸—่านั้น';
$labels['insertsignature'] = 'à¹à¸—รà¸à¸¥à¸²à¸¢à¹€à¸‹à¹‡à¸™à¸•à¹Œ';
-$labels['previewpanemarkread'] = 'Mark previewed messages as read';
-$labels['afternseconds'] = 'after $n seconds';
-$labels['reqmdn'] = 'Always request a return receipt';
-$labels['reqdsn'] = 'Always request a delivery status notification';
-$labels['replysamefolder'] = 'Place replies in the folder of the message being replied to';
-$labels['defaultabook'] = 'Default address book';
-$labels['autocompletesingle'] = 'Skip alternative email addresses in autocompletion';
-$labels['listnamedisplay'] = 'List contacts as';
-$labels['spellcheckbeforesend'] = 'Check spelling before sending a message';
-$labels['spellcheckoptions'] = 'Spellcheck Options';
-$labels['spellcheckignoresyms'] = 'Ignore words with symbols';
-$labels['spellcheckignorenums'] = 'Ignore words with numbers';
-$labels['spellcheckignorecaps'] = 'Ignore words with all letters capitalized';
-$labels['addtodict'] = 'Add to dictionary';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
-$labels['forwardmode'] = 'Messages forwarding';
-$labels['inline'] = 'inline';
$labels['asattachment'] = 'เป็นไฟล์à¹à¸™à¸š';
-
$labels['folder'] = 'à¸à¸¥à¹ˆà¸­à¸‡à¸ˆà¸”หมาย';
$labels['folders'] = 'à¸à¸¥à¹ˆà¸­à¸‡à¸ˆà¸”หมาย';
$labels['foldername'] = 'ชื่อà¸à¸¥à¹ˆà¸­à¸‡à¸ˆà¸”หมาย';
@@ -493,51 +275,21 @@ $labels['specialfolders'] = 'โฟลเดอร์พิเศษ';
$labels['properties'] = 'คุณสมบัติ';
$labels['folderproperties'] = 'คุณสมบัติเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¹‚ฟลเดอร์';
$labels['parentfolder'] = 'โฟลเดอร์à¹à¸¡à¹ˆ';
-$labels['location'] = 'Location';
$labels['info'] = 'ข้อมูล';
-$labels['getfoldersize'] = 'Click to get folder size';
-$labels['changesubscription'] = 'Click to change subscription';
$labels['foldertype'] = 'ประเภทโฟลเดอร์';
$labels['personalfolder'] = 'โฟลเดอร์ส่วนตัว';
-$labels['otherfolder'] = 'Other User\'s Folder';
$labels['sharedfolder'] = 'โฟลเดอร์สาธารณะ';
-
$labels['sortby'] = 'เรียงตาม';
$labels['sortasc'] = 'เรียงจาà¸à¸«à¸™à¹‰à¸²à¹„ปหลัง';
$labels['sortdesc'] = 'เรียงจาà¸à¸«à¸¥à¸±à¸‡à¹„ปหน้า';
$labels['undo'] = 'เลิà¸à¸—ำ';
-
$labels['installedplugins'] = 'ปลั๊à¸à¸­à¸´à¸™à¸—ี่ติดตั้ง';
$labels['plugin'] = 'ปลั๊à¸à¸­à¸´à¸™';
$labels['version'] = 'รุ่น';
-$labels['source'] = 'Source';
$labels['license'] = 'สัà¸à¸à¸²à¸­à¸™à¸¸à¸à¸²à¸•';
-$labels['support'] = 'Get support';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
-$labels['english'] = 'English';
-$labels['westerneuropean'] = 'Western European';
-$labels['easterneuropean'] = 'Eastern European';
-$labels['southeasterneuropean'] = 'South-Eastern European';
-$labels['baltic'] = 'Baltic';
-$labels['cyrillic'] = 'Cyrillic';
-$labels['arabic'] = 'Arabic';
-$labels['greek'] = 'Greek';
-$labels['hebrew'] = 'Hebrew';
-$labels['turkish'] = 'Turkish';
-$labels['nordic'] = 'Nordic';
-$labels['thai'] = 'Thai';
-$labels['celtic'] = 'Celtic';
-$labels['vietnamese'] = 'Vietnamese';
-$labels['japanese'] = 'Japanese';
-$labels['korean'] = 'Korean';
-$labels['chinese'] = 'Chinese';
-
?>
diff --git a/program/localization/th_TH/messages.inc b/program/localization/th_TH/messages.inc
index cf9a1cde8..46d960aff 100644
--- a/program/localization/th_TH/messages.inc
+++ b/program/localization/th_TH/messages.inc
@@ -15,22 +15,13 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'เà¸à¸´à¸”ข้อผิดพลาดบางประà¸à¸²à¸£!';
$messages['loginfailed'] = 'ไม่สามารถเข้าสู่ระบบได้';
$messages['cookiesdisabled'] = 'Browser ของคุณไม่ได้เปิดà¸à¸²à¸£à¹ƒà¸Šà¹‰à¸‡à¸²à¸™ Cookie ไว้';
$messages['sessionerror'] = 'Your session is invalid or expired';
$messages['storageerror'] = 'ไม่สามารถติดต่อ IMAP Server ได้';
$messages['servererror'] = 'เà¸à¸´à¸”ข้อผิดพลาดเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¹€à¸‹à¸´à¸£à¹Œà¸Ÿà¹€à¸§à¸­à¸£à¹Œ';
-$messages['servererrormsg'] = 'Server Error: $msg';
$messages['dberror'] = 'เà¸à¸´à¸”ข้อผิดพลาดเà¸à¸µà¹ˆà¸¢à¸§à¸à¸±à¸šà¸à¸²à¸™à¸‚้อมูล';
-$messages['requesttimedout'] = 'Request timed out';
-$messages['errorreadonly'] = 'Unable to perform operation. Folder is read-only.';
-$messages['errornoperm'] = 'Unable to perform operation. Permission denied.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
-$messages['invalidrequest'] = 'Invalid request! No data was saved.';
$messages['invalidhost'] = 'ชื่อเซิร์ฟเวอร์ไม่ถูà¸à¸•à¹‰à¸­à¸‡';
$messages['nomessagesfound'] = 'ไม่มีจดหมายในà¸à¸¥à¹ˆà¸­à¸‡à¸ˆà¸”หมายนี้';
$messages['loggedout'] = 'ทำà¸à¸²à¸£à¸­à¸­à¸à¸ˆà¸²à¸à¸£à¸°à¸šà¸šà¹€à¸£à¸µà¸¢à¸šà¸£à¹‰à¸­à¸¢';
@@ -48,22 +39,14 @@ $messages['messagesaved'] = 'จดหมายถูà¸à¸šà¸±à¸™à¸—ึà¸à¹€à¸›
$messages['successfullysaved'] = 'บันทึà¸à¹€à¸£à¸µà¸¢à¸šà¸£à¹‰à¸­à¸¢à¹à¸¥à¹‰à¸§';
$messages['addedsuccessfully'] = 'รายชื่อถูà¸à¸šà¸±à¸™à¸—ึà¸à¹€à¸£à¸µà¸¢à¸šà¸£à¹‰à¸­à¸¢à¹à¸¥à¹‰à¸§';
$messages['contactexists'] = 'อีเมล์นี้มีอยู่à¹à¸¥à¹‰à¸§';
-$messages['contactnameexists'] = 'A contact with the same name already exists.';
$messages['blockedimages'] = 'เพื่อปà¸à¸›à¹‰à¸­à¸‡à¸„วามส่วนตัว รูปจาà¸à¸ à¸²à¸¢à¸™à¸­à¸à¹ƒà¸™à¸ˆà¸”หมายนี้จะถูà¸à¸›à¸´à¸”บังไว้';
$messages['encryptedmessage'] = 'จดหมายถูà¸à¹€à¸‚้ารหัสไม่สามารถà¹à¸ªà¸”งผลได้';
$messages['nocontactsfound'] = 'ไม่พบรายชื่อที่ค้นหา';
$messages['contactnotfound'] = 'ไม่พบรายชื่อที่ค้นหา';
-$messages['contactsearchonly'] = 'Enter some search terms to find contacts';
$messages['sendingfailed'] = 'à¸à¸²à¸£à¸ªà¹ˆà¸‡à¸ˆà¸”หมายล้มเหลว';
-$messages['senttooquickly'] = 'Please wait $sec sec(s). before sending this message.';
-$messages['errorsavingsent'] = 'An error occured while saving sent message.';
-$messages['errorsaving'] = 'เà¸à¸´à¸”ข้อผิดพลาดระหว่างà¸à¸²à¸£à¸šà¸±à¸™à¸—ึà¸';
$messages['errormoving'] = 'ไม่สามารถย้ายจดหมายได้';
-$messages['errorcopying'] = 'Could not copy the message(s).';
$messages['errordeleting'] = 'ไม่สามารถลบจดหมายได้';
-$messages['errormarking'] = 'Could not mark the message(s).';
$messages['deletecontactconfirm'] = 'คุณมั่นใจที่ต้องà¸à¸²à¸£à¸¥à¸šà¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¸—ี่เลือà¸à¹ƒà¸Šà¹ˆà¸«à¸£à¸·à¸­à¹„ม่?';
-$messages['deletegroupconfirm'] = 'Do you really want to delete selected group?';
$messages['deletemessagesconfirm'] = 'คุณมั่นใจที่ต้องà¸à¸²à¸£à¸¥à¸šà¸ˆà¸”หมายที่เลือà¸à¹ƒà¸Šà¹ˆà¸«à¸£à¸·à¸­à¹„ม่?';
$messages['deletefolderconfirm'] = 'คุณมั่นใจที่ต้องà¸à¸²à¸£à¸¥à¸šà¹à¸Ÿà¹‰à¸¡à¸™à¸µà¹‰à¸«à¸£à¸·à¸­à¹„ม่?';
$messages['purgefolderconfirm'] = 'คุณมั่นใจที่ต้องà¸à¸²à¸£à¸¥à¸šà¸ˆà¸”หมายทั้งหมดในà¹à¸Ÿà¹‰à¸¡à¸™à¸µà¹‰à¹ƒà¸Šà¹ˆà¸«à¸£à¸·à¸­à¹„ม่?';
@@ -71,106 +54,32 @@ $messages['contactdeleting'] = 'à¸à¸³à¸¥à¸±à¸‡à¸¥à¸šà¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¸œà¸¹
$messages['groupdeleting'] = 'à¸à¸³à¸¥à¸±à¸‡à¸¥à¸šà¸à¸¥à¸¸à¹ˆà¸¡...';
$messages['folderdeleting'] = 'à¸à¸³à¸¥à¸±à¸‡à¸¥à¸šà¹‚ฟลเดอร์...';
$messages['foldermoving'] = 'à¸à¸³à¸¥à¸±à¸‡à¸¢à¹‰à¸²à¸¢à¹‚ฟลเดอร์...';
-$messages['foldersubscribing'] = 'Subscribing folder...';
-$messages['folderunsubscribing'] = 'Unsubscribing folder...';
$messages['formincomplete'] = 'ฟอร์มยังไม่ครบถ้วนสมบูรณ์';
$messages['noemailwarning'] = 'โปรดใส่อีเมล์ให้ถูà¸à¸•à¹‰à¸­à¸‡';
$messages['nonamewarning'] = 'โปรดใส่ชื่อ';
$messages['nopagesizewarning'] = 'โปรดใส่จำนวนหน้า';
-$messages['nosenderwarning'] = 'Please enter sender e-mail address.';
$messages['norecipientwarning'] = 'โปรดใส่ผู้รับอย่างน้อย 1 ชื่อ';
$messages['nosubjectwarning'] = 'หัวจดหมายว่างเปล่า คุณต้องà¸à¸²à¸£à¹ƒà¸ªà¹ˆà¸«à¸±à¸§à¸ˆà¸”หมายเดี๋ยวนี้หรือไม่?';
$messages['nobodywarning'] = 'คุณต้องà¸à¸²à¸£à¸ªà¹ˆà¸‡à¸ˆà¸”หมายโดยไม่มีข้อความใช่หรือไม่?';
$messages['notsentwarning'] = 'จดหมายยังไม่ถูà¸à¸ªà¹ˆà¸‡ คุณต้องà¸à¸²à¸£à¸¢à¸à¹€à¸¥à¸´à¸à¸«à¸£à¸·à¸­à¹„ม่?';
$messages['noldapserver'] = 'โปรดเลือภLDAP Server เพื่อค้นหา';
$messages['nosearchname'] = 'โปรดใสชื่อหรืออีเมล์';
-$messages['notuploadedwarning'] = 'Not all attachments have been uploaded yet. Please wait or cancel the upload.';
$messages['searchsuccessful'] = 'พบจดหมายจำนวน $nr ฉบับ';
-$messages['contactsearchsuccessful'] = '$nr contacts found.';
$messages['searchnomatch'] = 'à¸à¸²à¸£à¸„้นหาไม่พบ';
$messages['searching'] = 'à¸à¸³à¸¥à¸±à¸‡à¸„้นหา...';
$messages['checking'] = 'à¸à¸³à¸¥à¸±à¸‡à¸•à¸£à¸§à¸ˆà¸ªà¸­à¸š...';
$messages['nospellerrors'] = 'ไม่พบคำที่สะà¸à¸”ผิด';
$messages['folderdeleted'] = 'ลบà¹à¸Ÿà¹‰à¸¡à¹€à¸ªà¸£à¹‡à¸ˆà¸ªà¸¡à¸šà¸¹à¸£à¸“์';
-$messages['foldersubscribed'] = 'Folder successfully subscribed.';
-$messages['folderunsubscribed'] = 'Folder successfully unsubscribed.';
-$messages['folderpurged'] = 'Folder has successfully been emptied.';
-$messages['folderexpunged'] = 'Folder has successfully been compacted.';
$messages['deletedsuccessfully'] = 'ลบเสร็จสมบูรณ์';
$messages['converting'] = 'นำเอาหารจัดรูปà¹à¸šà¸šà¹ƒà¸™à¸ˆà¸”หมายออà¸...';
$messages['messageopenerror'] = 'ไม่สามารถอ่านจดหมายจาภServer ได้';
$messages['fileuploaderror'] = 'à¸à¸²à¸£à¸­à¸±à¸žà¹‚หลดล้มเหลว';
$messages['filesizeerror'] = 'ไฟล์มีขนาดใหà¸à¹ˆà¹€à¸à¸´à¸™ $size';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'จดหมายนี้เป็นà¹à¸šà¸šà¸­à¹ˆà¸²à¸™à¸­à¸¢à¹ˆà¸²à¸‡à¹€à¸”ียว';
$messages['errorsavingcontact'] = 'ไม่สามารถบันทึà¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¹„ด้';
$messages['movingmessage'] = 'à¸à¸³à¸¥à¸±à¸‡à¸¢à¹‰à¸²à¸¢à¸‚้อความ...';
$messages['copyingmessage'] = 'à¸à¸³à¸¥à¸±à¸‡à¸„ัดลอà¸à¸‚้อความ...';
$messages['copyingcontact'] = 'à¸à¸³à¸¥à¸±à¸‡à¸„ัดลอà¸à¸£à¸²à¸¢à¸Šà¸·à¹ˆà¸­à¸œà¸¹à¹‰à¸•à¸´à¸”ต่อ...';
-$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'à¸à¸³à¸¥à¸±à¸‡à¸¥à¸šà¸‚้อความ...';
-$messages['markingmessage'] = 'Marking message(s)...';
-$messages['addingmember'] = 'Adding contact(s) to the group...';
-$messages['removingmember'] = 'Removing contact(s) from the group...';
-$messages['receiptsent'] = 'Successfully sent a read receipt.';
-$messages['errorsendingreceipt'] = 'Could not send the receipt.';
-$messages['deleteidentityconfirm'] = 'Do you really want to delete this identity?';
-$messages['nodeletelastidentity'] = 'You cannot delete this identity, it\'s your last one.';
-$messages['forbiddencharacter'] = 'Folder name contains a forbidden character.';
-$messages['selectimportfile'] = 'Please select a file to upload.';
-$messages['addresswriterror'] = 'The selected address book is not writeable.';
-$messages['contactaddedtogroup'] = 'Successfully added the contacts to this group.';
-$messages['contactremovedfromgroup'] = 'Successfully removed contacts from this group.';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
$messages['importwait'] = 'à¸à¸³à¸¥à¸±à¸‡à¸™à¸³à¹€à¸‚้าข้อมูล, โปรดรอสัà¸à¸„รู่';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
-$messages['importconfirm'] = '<b>Successfully imported $inserted contacts</b>';
-$messages['importconfirmskipped'] = '<b>Skipped $skipped existing entries</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
-$messages['opnotpermitted'] = 'Operation not permitted!';
-$messages['nofromaddress'] = 'Missing e-mail address in selected identity.';
-$messages['editorwarning'] = 'Switching to the plain text editor will cause all text formatting to be lost. Do you wish to continue?';
-$messages['httpreceivedencrypterror'] = 'A fatal configuration error occurred. Contact your administrator immediately. <b>Your message can not be sent.</b>';
-$messages['smtpconnerror'] = 'SMTP Error ($code): Connection to server failed.';
-$messages['smtpautherror'] = 'SMTP Error ($code): Authentication failed.';
-$messages['smtpfromerror'] = 'SMTP Error ($code): Failed to set sender "$from" ($msg).';
-$messages['smtptoerror'] = 'SMTP Error ($code): Failed to add recipient "$to" ($msg).';
-$messages['smtprecipientserror'] = 'SMTP Error: Unable to parse recipients list.';
-$messages['smtperror'] = 'SMTP Error: $msg';
-$messages['emailformaterror'] = 'Invalid e-mail address: $email';
-$messages['toomanyrecipients'] = 'Too many recipients. Reduce the number of recipients to $max.';
-$messages['maxgroupmembersreached'] = 'The number of group members exceeds the maximum of $max.';
-$messages['internalerror'] = 'An internal error occured. Please try again.';
-$messages['contactdelerror'] = 'Could not delete contact(s).';
-$messages['contactdeleted'] = 'Contact(s) deleted successfully.';
-$messages['contactrestoreerror'] = 'Could not restore deleted contact(s).';
-$messages['contactrestored'] = 'Contact(s) restored successfully.';
-$messages['groupdeleted'] = 'Group deleted successfully.';
-$messages['grouprenamed'] = 'Group renamed successfully.';
-$messages['groupcreated'] = 'Group created successfully.';
-$messages['savedsearchdeleted'] = 'Saved search deleted successfully.';
-$messages['savedsearchdeleteerror'] = 'Could not delete saved search.';
-$messages['savedsearchcreated'] = 'Saved search created successfully.';
-$messages['savedsearchcreateerror'] = 'Could not create saved search.';
-$messages['messagedeleted'] = 'Message(s) deleted successfully.';
-$messages['messagemoved'] = 'Message(s) moved successfully.';
-$messages['messagecopied'] = 'Message(s) copied successfully.';
-$messages['messagemarked'] = 'Message(s) marked successfully.';
-$messages['autocompletechars'] = 'Enter at least $min characters for autocompletion.';
-$messages['autocompletemore'] = 'More matching entries found. Please type more characters.';
-$messages['namecannotbeempty'] = 'Name cannot be empty.';
-$messages['nametoolong'] = 'Name is too long.';
-$messages['folderupdated'] = 'Folder updated successfully.';
-$messages['foldercreated'] = 'Folder created successfully.';
-$messages['invalidimageformat'] = 'Not a valid image format.';
-$messages['mispellingsfound'] = 'Spelling errors detected in the message.';
-$messages['parentnotwritable'] = 'Unable to create/move folder into selected parent folder. No access rights.';
-$messages['messagetoobig'] = 'The message part is too big to process it.';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
?>
diff --git a/program/localization/tr_TR/labels.inc b/program/localization/tr_TR/labels.inc
index c62c5c079..1f20a22bc 100644
--- a/program/localization/tr_TR/labels.inc
+++ b/program/localization/tr_TR/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
-$labels['welcome'] = '$product, HoÅŸ Geldiniz';
+$labels['welcome'] = '$product E-Posta Sistemine HoÅŸ Geldiniz';
$labels['username'] = 'Kullanıcı Adı';
$labels['password'] = 'Parola';
$labels['server'] = 'Sunucu';
$labels['login'] = 'Oturum Aç';
-
-// taskbar
$labels['logout'] = 'Oturumu Kapat';
$labels['mail'] = 'E-Posta';
$labels['settings'] = 'KiÅŸisel Ayarlar';
$labels['addressbook'] = 'Adres Defteri';
-
-// mailbox names
$labels['inbox'] = 'Gelen';
$labels['drafts'] = 'Taslaklar';
$labels['sent'] = 'Giden';
$labels['trash'] = 'Çöp';
$labels['junk'] = 'Ä°stenmeyen';
$labels['show_real_foldernames'] = 'Özel klasörler için gerçek isimleri göster';
-
-// message listing
$labels['subject'] = 'Konu';
$labels['from'] = 'Gönderen';
$labels['sender'] = 'Gönderici';
@@ -54,13 +44,11 @@ $labels['priority'] = 'Öncelik';
$labels['organization'] = 'KuruluÅŸ';
$labels['readstatus'] = 'Okunma durumu';
$labels['listoptions'] = 'Seçenekleri listele...';
-
$labels['mailboxlist'] = 'Klasörler';
$labels['messagesfromto'] = 'Postalar: $from - $to , Toplam: $count';
$labels['threadsfromto'] = 'Postalar: $from - $to, Toplam $count';
$labels['messagenrof'] = 'Posta: $nr / $count';
$labels['fromtoshort'] = '$from - $to , Toplam: $count';
-
$labels['copy'] = 'Kopyala';
$labels['move'] = 'Taşı';
$labels['moveto'] = 'Şuraya taşı...';
@@ -68,13 +56,9 @@ $labels['download'] = 'Ä°ndir';
$labels['open'] = 'Aç';
$labels['showattachment'] = 'Göster';
$labels['showanyway'] = 'Yine de göster';
-
$labels['filename'] = 'Dosya Adı';
$labels['filesize'] = 'Dosya Boyutu';
-
$labels['addtoaddressbook'] = 'Adres Defterine Ekle';
-
-// weekdays short
$labels['sun'] = 'Paz';
$labels['mon'] = 'Pzt';
$labels['tue'] = 'Sal';
@@ -82,8 +66,6 @@ $labels['wed'] = 'Çrş';
$labels['thu'] = 'Per';
$labels['fri'] = 'Cum';
$labels['sat'] = 'Cts';
-
-// weekdays long
$labels['sunday'] = 'Paz';
$labels['monday'] = 'Pazartesi';
$labels['tuesday'] = 'Salı';
@@ -91,8 +73,6 @@ $labels['wednesday'] = 'Çarşamba';
$labels['thursday'] = 'PerÅŸembe';
$labels['friday'] = 'Cuma';
$labels['saturday'] = 'Cumartesi';
-
-// months short
$labels['jan'] = 'Oca';
$labels['feb'] = 'Åžub';
$labels['mar'] = 'Mar';
@@ -105,8 +85,6 @@ $labels['sep'] = 'Eyl';
$labels['oct'] = 'Eki';
$labels['nov'] = 'Kas';
$labels['dec'] = 'Ara';
-
-// months long
$labels['longjan'] = 'Ocak';
$labels['longfeb'] = 'Åžubat';
$labels['longmar'] = 'Mart';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'Eylül';
$labels['longoct'] = 'Ekim';
$labels['longnov'] = 'Kasım';
$labels['longdec'] = 'Aralık';
-
$labels['today'] = 'Bugün';
-
-// toolbar buttons
$labels['refresh'] = 'Yenile';
$labels['checkmail'] = 'Yeni Postaları Kontrol Et';
$labels['compose'] = 'E-Posta Yaz';
@@ -155,7 +130,6 @@ $labels['moreactions'] = 'DiÄŸer Ä°ÅŸlemler';
$labels['more'] = 'Daha Fazla';
$labels['back'] = 'Geri';
$labels['options'] = 'Seçenekler';
-
$labels['select'] = 'Seç';
$labels['all'] = 'Hepsini';
$labels['none'] = 'Yok';
@@ -174,7 +148,6 @@ $labels['expand-all'] = 'Tümünü genişlet';
$labels['expand-unread'] = 'Okunmamışları genişlet';
$labels['collapse-all'] = 'Tümünü daralt';
$labels['threaded'] = 'Dizilimli';
-
$labels['autoexpand_threads'] = 'Dizilimleri aç';
$labels['do_expand'] = 'tüm dizilimler';
$labels['expand_only_unread'] = 'sadece okunmamış posta içeren dizilimler';
@@ -190,29 +163,24 @@ $labels['listcolumns'] = 'Sütunları listele';
$labels['listsorting'] = 'Sıralama sütunu';
$labels['listorder'] = 'Sıralama düzeni';
$labels['listmode'] = 'Liste görünümü';
-
$labels['folderactions'] = 'Klasör eylemleri...';
$labels['compact'] = 'Sıklaştır';
$labels['empty'] = 'BoÅŸalt';
$labels['importmessages'] = 'Mesajları içe aktar';
-
$labels['quota'] = 'Disk kullanımı';
$labels['unknown'] = 'bilinmeyen';
$labels['unlimited'] = 'sınırsız';
-
$labels['quicksearch'] = 'Hızlı arama';
$labels['resetsearch'] = 'Aramayı bitir';
$labels['searchmod'] = 'Arama detayları';
$labels['msgtext'] = 'Tüm posta gövdesi';
$labels['body'] = 'Gövde';
$labels['type'] = 'Tip';
-
+$labels['namex'] = 'Ad';
$labels['openinextwin'] = 'Yeni pencerede aç';
$labels['emlsave'] = 'Ä°ndir (.eml)';
$labels['changeformattext'] = 'Düz yazı formatında göster';
$labels['changeformathtml'] = 'HTML formatında göster';
-
-// message compose
$labels['editasnew'] = 'Postayı yeni olarak düzenle';
$labels['send'] = 'Gönder';
$labels['sendmessage'] = 'Postayı gönder';
@@ -224,26 +192,32 @@ $labels['returnreceipt'] = 'Alındı onayı';
$labels['dsn'] = 'Teslimat durumu bildirisi';
$labels['mailreplyintro'] = '$date, $sender yazmış:';
$labels['originalmessage'] = 'Özgün ileti';
-
$labels['editidents'] = 'Kimlikleri düzenle';
$labels['spellcheck'] = 'Yazım denetimi';
$labels['checkspelling'] = 'Yazım denetimi yap';
$labels['resumeediting'] = 'Düzenlemeye devam et';
$labels['revertto'] = 'Geri çevir:';
-
+$labels['restore'] = 'Geri yükle';
+$labels['restoremessage'] = 'Mesajı geri yükle?';
+$labels['responses'] = 'Yanıtlar';
+$labels['insertresponse'] = 'Yanıt ekle';
+$labels['manageresponses'] = 'Yanıtları yönet';
+$labels['savenewresponse'] = 'Yeni yanıt kaydet';
+$labels['editresponses'] = 'Yanıtları düzenle';
+$labels['editresponse'] = 'Yanıtı düzenle';
+$labels['responsename'] = 'Ad';
+$labels['responsetext'] = 'Yanıt metni';
$labels['attach'] = 'Ekle';
$labels['attachments'] = 'Ekler';
$labels['upload'] = 'Yükle';
$labels['uploadprogress'] = '$percent ($current / $total)';
$labels['close'] = 'Kapat';
$labels['messageoptions'] = 'İleti seçenekleri...';
-
$labels['low'] = 'Düşük';
$labels['lowest'] = 'En Düşük';
$labels['normal'] = 'Normal';
$labels['high'] = 'Yüksek';
$labels['highest'] = 'En yüksek';
-
$labels['nosubject'] = '(Konu BelirtilmemiÅŸ)';
$labels['showimages'] = 'Resimleri göster';
$labels['alwaysshow'] = '$sender tarafından gönderilen resimleri her zaman göster';
@@ -251,25 +225,19 @@ $labels['isdraft'] = 'Bu posta taslaktır.';
$labels['andnmore'] = '$nr daha...';
$labels['togglemoreheaders'] = 'Daha fazla posta başlığı göster';
$labels['togglefullheaders'] = 'Posta başlıklarını göster/gizle';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Düz metin';
$labels['savesentmessagein'] = 'Gönderileni buraya kaydet';
$labels['dontsave'] = 'kaydetme';
$labels['maxuploadsize'] = 'İzin verilen en büyük dosya boyutu $size';
-
$labels['addcc'] = 'İlgili kopyası ekle';
$labels['addbcc'] = 'Gizli kopya ekle';
$labels['addreplyto'] = 'Yanıtlama adresi ekle';
$labels['addfollowupto'] = 'Takip adresi ekle';
-
-// mdn
$labels['mdnrequest'] = 'Bu postayı gönderen kişi, postayı okuduğunuza dair alındı onayı istedi. Alındı onayını göndermek ister misiniz ?';
$labels['receiptread'] = 'Alındı Onayı (okundu)';
$labels['yourmessage'] = 'Bu, postanız için alındı onayıdır';
$labels['receiptnote'] = 'Not: Bu alındı onayı sadece postanızın alıcının bilgisayarında gösterildiğini belirtir. Alıcının posta içeriğini okuduğunu veya anladığını garantilemez.';
-
-// address boook
$labels['name'] = 'Görüntülenen isim';
$labels['firstname'] = 'Ad';
$labels['surname'] = 'Soyad';
@@ -304,7 +272,6 @@ $labels['search'] = 'Ara';
$labels['advsearch'] = 'GeliÅŸmiÅŸ ara';
$labels['advanced'] = 'GeliÅŸmiÅŸ';
$labels['other'] = 'DiÄŸer';
-
$labels['typehome'] = 'Ev';
$labels['typework'] = 'Ä°ÅŸ';
$labels['typeother'] = 'DiÄŸer';
@@ -319,14 +286,12 @@ $labels['typeassistant'] = 'Asistan';
$labels['typehomepage'] = 'Ev sayfası';
$labels['typeblog'] = 'Günlük';
$labels['typeprofile'] = 'Profil';
-
$labels['addfield'] = 'Alan ekle...';
$labels['addcontact'] = 'Adres defterine ekle';
$labels['editcontact'] = 'Kişiyi düzenle';
$labels['contacts'] = 'KiÅŸiler';
$labels['contactproperties'] = 'Kişi özellikleri';
$labels['personalinfo'] = 'KiÅŸisel bilgiler';
-
$labels['edit'] = 'Düzenle';
$labels['cancel'] = 'Ä°ptal';
$labels['save'] = 'Kaydet';
@@ -335,7 +300,6 @@ $labels['rename'] = 'Yeniden adlandır';
$labels['addphoto'] = 'Ekle';
$labels['replacephoto'] = 'DeÄŸiÅŸtir';
$labels['uploadphoto'] = 'Fotoğraf yükle';
-
$labels['newcontact'] = 'Yeni adres kartı ekle';
$labels['deletecontact'] = 'Seçili kişileri sil';
$labels['composeto'] = 'Seçili kişiye posta gönder';
@@ -349,42 +313,36 @@ $labels['newcontactgroup'] = 'Yeni kiÅŸi grubu oluÅŸtur';
$labels['grouprename'] = 'Grubu yeniden adlandır';
$labels['groupdelete'] = 'Grubu sil';
$labels['groupremoveselected'] = 'Seçili kişileri gruptan sil';
-
$labels['previouspage'] = 'Öncekileri göster';
$labels['firstpage'] = 'İlkini göster';
$labels['nextpage'] = 'Sonrakileri göster';
$labels['lastpage'] = 'Sonuncuyu göster';
-
$labels['group'] = 'Grup';
$labels['groups'] = 'Gruplar';
$labels['listgroup'] = 'Grup üyelerini listele';
$labels['personaladrbook'] = 'Adresler';
-
$labels['searchsave'] = 'Aramayı kaydet';
$labels['searchdelete'] = 'Aramayı sil';
-
$labels['import'] = 'İçe aktar';
$labels['importcontacts'] = 'Kişileri içe aktar';
$labels['importfromfile'] = 'Dosyadan içe aktar:';
-$labels['importtarget'] = 'Yeni kiÅŸiler eklenecek adres defteri:';
+$labels['importtarget'] = 'KiÅŸileri ekle';
$labels['importreplace'] = 'Tüm adres defterinin yerine geçsin';
+$labels['importgroups'] = 'Grup atamalarını içe aktar';
+$labels['importgroupsall'] = 'Tümü (Gerekirse grupları oluştur)';
+$labels['importgroupsexisting'] = 'Sadece mevcut gruplar için';
$labels['importdesc'] = 'Mevcut bir adres defterinden kişileri yükleyebilirsiniz.<br/> Şu anda <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> veya CSV (virgülle ayrılmış) veri formatları desteklenmektedir.';
$labels['done'] = 'Tamam';
-
-// settings
$labels['settingsfor'] = 'Ayarlar';
$labels['about'] = 'Hakkında';
$labels['preferences'] = 'Tercihler';
$labels['userpreferences'] = 'Kullanıcı tercihleri';
$labels['editpreferences'] = 'Kullanıcı tercihlerini düzenle';
-
$labels['identities'] = 'Kimlikler';
$labels['manageidentities'] = 'Bu hesap için kimlikleri düzenle';
$labels['newidentity'] = 'Yeni kimlik';
-
$labels['newitem'] = 'Yeni öğe';
$labels['edititem'] = 'Öğe düzenle';
-
$labels['preferhtml'] = 'HTML görüntüle';
$labels['defaultcharset'] = 'Varsayılan Karakter Kümesi';
$labels['htmlmessage'] = 'HTML Posta';
@@ -480,7 +438,9 @@ $labels['standardwindows'] = 'Popup pencerelerini standart pencere olarak yönet
$labels['forwardmode'] = 'Posta yönlendirme';
$labels['inline'] = 'postanın içinde';
$labels['asattachment'] = 'ek olarak';
-
+$labels['replyallmode'] = '[Tümünü yanıtla] düğmesinin varsayılan eylemi';
+$labels['replyalldefault'] = 'Hepsini yanıtla';
+$labels['replyalllist'] = 'Sadece postalama listesindekileri yanıtla (eğer varsa)';
$labels['folder'] = 'Klasör';
$labels['folders'] = 'Klasörler';
$labels['foldername'] = 'Klasör Adı';
@@ -501,26 +461,20 @@ $labels['foldertype'] = 'Klasör Türü';
$labels['personalfolder'] = 'Kişisel Klasör';
$labels['otherfolder'] = 'Diğer Kullanıcıların Klasörü';
$labels['sharedfolder'] = 'Genel Klasör';
-
$labels['sortby'] = 'Sırala';
$labels['sortasc'] = 'Artarak';
$labels['sortdesc'] = 'Azalarak';
$labels['undo'] = 'Geri al';
-
$labels['installedplugins'] = 'Yüklü eklentiler';
$labels['plugin'] = 'Eklenti';
$labels['version'] = 'Sürüm';
$labels['source'] = 'Kaynak';
$labels['license'] = 'Lisans';
$labels['support'] = 'Destek Al';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Ä°ngilizce';
$labels['westerneuropean'] = 'Batı Avrupa';
@@ -539,5 +493,4 @@ $labels['vietnamese'] = 'Vietnamca';
$labels['japanese'] = 'Japonca';
$labels['korean'] = 'Korece';
$labels['chinese'] = 'Çince';
-
?>
diff --git a/program/localization/tr_TR/messages.inc b/program/localization/tr_TR/messages.inc
index 3f728b523..ede900d01 100644
--- a/program/localization/tr_TR/messages.inc
+++ b/program/localization/tr_TR/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Bir hata oluÅŸtu!';
$messages['loginfailed'] = 'Giriş Başarısız';
$messages['cookiesdisabled'] = 'Tarayıcınız çerezleri kabul etmiyor';
@@ -46,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.';
@@ -56,8 +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['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';
@@ -82,6 +82,7 @@ $messages['norecipientwarning'] = 'Lütfen en az bir alıcı belirtin';
$messages['nosubjectwarning'] = '"Konu" kutusu boş bırakılmış. Şimdi bir konu belirtmek ister misiniz?';
$messages['nobodywarning'] = 'Postayı boş olarak gönder?';
$messages['notsentwarning'] = 'Posta gönderilmedi. Postanızı iptal etmek istiyor musunuz?';
+$messages['restoresavedcomposedata'] = 'Daha önce oluşturulmuş fakat gönderilmemiş mesaj bulundu.\n\nKonu: $subject\Kaydetme zamanı: $date\n\nBu mesajı geri yüklemek istiyor musunuz?';
$messages['noldapserver'] = 'Lütfen arama için bir LDAP sunucu seçin';
$messages['nosearchname'] = 'Lütfen bir kişi ismi veya e-posta adresi girin';
$messages['notuploadedwarning'] = 'Henüz tüm ekli dosyalar yüklenmedi. Lütfen bekleyin ya da yüklemeyi iptal edin.';
@@ -101,13 +102,16 @@ $messages['converting'] = 'Postanın biçimlendirmesi kaldırılıyor...';
$messages['messageopenerror'] = 'Sunucudan posta yüklenemedi';
$messages['fileuploaderror'] = 'Dosya yükleme başarısız';
$messages['filesizeerror'] = 'Yüklenen dosya en büyük dosya boyunu ($size) aşıyor';
-$messages['copysuccess'] = '$nr adres kopyalandı';
-$messages['copyerror'] = 'Hiçbir adres kopyalanamadı';
+$messages['copysuccess'] = '$nr adet kişi başarıyla kopyalandı.';
+$messages['movesuccess'] = '$nr adet kişi başarıyla taşındı.';
+$messages['copyerror'] = 'Kişiler kopyalanamadı.';
+$messages['moveerror'] = 'Kişiler taşınamadı.';
$messages['sourceisreadonly'] = 'Adres kaynağı salt okunur durumda';
$messages['errorsavingcontact'] = 'KiÅŸinin adresi kaydedilemedi';
$messages['movingmessage'] = 'Posta(lar) taşınıyor...';
$messages['copyingmessage'] = 'Posta(lar) kopyalanıyor...';
$messages['copyingcontact'] = 'Kişile(ler) kopyalanıyor...';
+$messages['movingcontact'] = 'Kişi(ler) taşınıyor...';
$messages['deletingmessage'] = 'Posta(lar) siliniyor...';
$messages['markingmessage'] = 'Posta(lar) iÅŸaretleniyor...';
$messages['addingmember'] = 'Gruba kiÅŸi(ler) ekleniyor...';
@@ -141,7 +145,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'] = 'Bir hata oluştu. Lütfen tekrar deneyin.';
+$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.';
@@ -169,5 +173,4 @@ $messages['parentnotwritable'] = 'Klasör, seçilen üst klasöre taşınamıyor
$messages['messagetoobig'] = 'Bu ileti parçası işlenemeyecek kadar büyük.';
$messages['attachmentvalidationerror'] = 'UYARI! Bu eklenti mesajda belirtilenden farklı olduğu için şüpheli bulundu. Eğer göndericiye güvenmiyorsanız eki web tarayıcısında açmayın. Şüpheli içerik bulunabilir.';
$messages['noscriptwarning'] = 'Uyarı: Bu e-posta servisi Javascript gerektirmektedir! Servisi kullanabilmek için lütfen web tarayıcınızın ayarlarından Javascript\'i etkinleştiriniz.';
-
?>
diff --git a/program/localization/uk_UA/labels.inc b/program/localization/uk_UA/labels.inc
index bb483012b..8603dd10c 100644
--- a/program/localization/uk_UA/labels.inc
+++ b/program/localization/uk_UA/labels.inc
@@ -15,31 +15,20 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'ЛаÑкаво проÑимо до $product';
$labels['username'] = 'Ім\'Ñ ÐºÐ¾Ñ€Ð¸Ñтувача';
$labels['password'] = 'Пароль';
$labels['server'] = 'Сервер';
$labels['login'] = 'Увійти';
-
-// taskbar
$labels['logout'] = 'Вийти';
$labels['mail'] = 'Пошта';
$labels['settings'] = 'ÐалаштуваннÑ';
$labels['addressbook'] = 'Контакти';
-
-// mailbox names
$labels['inbox'] = 'Вхідні';
$labels['drafts'] = 'Чернетки';
$labels['sent'] = 'ÐадіÑлані';
$labels['trash'] = 'Кошик';
$labels['junk'] = 'Спам';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Тема';
$labels['from'] = 'Відправник';
$labels['sender'] = 'Відправник';
@@ -54,13 +43,11 @@ $labels['priority'] = 'Пріоритет';
$labels['organization'] = 'ОрганізаціÑ';
$labels['readstatus'] = 'Ð¡Ñ‚Ð°Ñ‚ÑƒÑ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ';
$labels['listoptions'] = 'ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÑпиÑку...';
-
$labels['mailboxlist'] = 'Папки';
$labels['messagesfromto'] = 'ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð· $from по $to із $count';
$labels['threadsfromto'] = 'ÐžÐ±Ð³Ð¾Ð²Ð¾Ñ€ÐµÐ½Ð½Ñ Ð· $from по $to із $count';
$labels['messagenrof'] = 'ЛиÑÑ‚ $nr із $count';
$labels['fromtoshort'] = '$from – $to з $count';
-
$labels['copy'] = 'Копіювати';
$labels['move'] = 'ПереміÑтити';
$labels['moveto'] = 'ПереміÑтити до...';
@@ -68,13 +55,9 @@ $labels['download'] = 'Завантажити';
$labels['open'] = 'Відкрити';
$labels['showattachment'] = 'Показати';
$labels['showanyway'] = 'Ð’Ñе одно показати';
-
$labels['filename'] = 'Ім\'Ñ Ñ„Ð°Ð¹Ð»Ñƒ';
$labels['filesize'] = 'Розмір файлу';
-
$labels['addtoaddressbook'] = 'Додати до контактів';
-
-// weekdays short
$labels['sun'] = 'Ðд';
$labels['mon'] = 'Пн';
$labels['tue'] = 'Ð’Ñ‚';
@@ -82,8 +65,6 @@ $labels['wed'] = 'Ср';
$labels['thu'] = 'Чт';
$labels['fri'] = 'Пт';
$labels['sat'] = 'Сб';
-
-// weekdays long
$labels['sunday'] = 'ÐеділÑ';
$labels['monday'] = 'Понеділок';
$labels['tuesday'] = 'Вівторок';
@@ -91,8 +72,6 @@ $labels['wednesday'] = 'Середа';
$labels['thursday'] = 'Четвер';
$labels['friday'] = 'П\'ÑтницÑ';
$labels['saturday'] = 'Субота';
-
-// months short
$labels['jan'] = 'Ñіч';
$labels['feb'] = 'лют';
$labels['mar'] = 'бер';
@@ -105,8 +84,6 @@ $labels['sep'] = 'вер';
$labels['oct'] = 'жов';
$labels['nov'] = 'лиÑ';
$labels['dec'] = 'гр';
-
-// months long
$labels['longjan'] = 'Січень';
$labels['longfeb'] = 'Лютий';
$labels['longmar'] = 'Березень';
@@ -119,10 +96,7 @@ $labels['longsep'] = 'ВереÑень';
$labels['longoct'] = 'Жовтень';
$labels['longnov'] = 'ЛиÑтопад';
$labels['longdec'] = 'Грудень';
-
$labels['today'] = 'Сьогодні';
-
-// toolbar buttons
$labels['refresh'] = 'Оновити';
$labels['checkmail'] = 'Перевірити пошту';
$labels['compose'] = 'ÐапиÑати лиÑта';
@@ -155,7 +129,6 @@ $labels['moreactions'] = 'Інші дії...';
$labels['more'] = 'Ще';
$labels['back'] = 'Ðазад';
$labels['options'] = 'Параметри';
-
$labels['select'] = 'Вибрати';
$labels['all'] = 'Ð’ÑÑ–';
$labels['none'] = 'Ðе Ñортувати';
@@ -163,7 +136,7 @@ $labels['currpage'] = 'Поточна Ñторінка';
$labels['unread'] = 'Ðепрочитані';
$labels['flagged'] = 'Із зірочкою';
$labels['unanswered'] = 'Без відповіді';
-$labels['withattachment'] = 'With attachment';
+$labels['withattachment'] = 'З вкладеннÑм';
$labels['deleted'] = 'Видалені';
$labels['undeleted'] = 'Ðе видалено';
$labels['invert'] = 'Інвертувати виділеннÑ';
@@ -174,7 +147,6 @@ $labels['expand-all'] = 'Розкрити вÑÑ–';
$labels['expand-unread'] = 'Розкрити непрочитані';
$labels['collapse-all'] = 'Згорнути вÑÑ–';
$labels['threaded'] = 'Гілками';
-
$labels['autoexpand_threads'] = 'Розкривати гілки';
$labels['do_expand'] = 'уÑÑ– гілки';
$labels['expand_only_unread'] = 'тільки з непрочитаними лиÑтами';
@@ -190,32 +162,26 @@ $labels['listcolumns'] = 'Ðтрибути Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ';
$labels['listsorting'] = 'Сортувати за атрибутом';
$labels['listorder'] = 'ПорÑдок ÑортуваннÑ';
$labels['listmode'] = 'Режим переглÑду';
-
$labels['folderactions'] = 'Операції з папкою...';
$labels['compact'] = 'СтиÑнути';
$labels['empty'] = 'Спорожнити';
$labels['importmessages'] = 'Імпорт повідомлень';
-
$labels['quota'] = 'ВикориÑтано';
$labels['unknown'] = 'невідомо';
$labels['unlimited'] = 'без обмеженнÑ';
-
$labels['quicksearch'] = 'Швидкий пошук';
$labels['resetsearch'] = 'ОчиÑтити пошук';
$labels['searchmod'] = 'Де шукати';
$labels['msgtext'] = 'Ð’ уÑьому лиÑÑ‚Ñ–';
$labels['body'] = 'Тіло повідомленнÑ';
-$labels['type'] = 'Type';
+$labels['type'] = 'Тип';
$labels['namex'] = 'Ім\'Ñ';
-
$labels['openinextwin'] = 'Відкрити в новому вікні';
$labels['emlsave'] = 'Зберегти (.eml)';
$labels['changeformattext'] = 'Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð² текÑтовому форматі';
$labels['changeformathtml'] = 'Ð’Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ñƒ форматі HTML';
-
-// message compose
$labels['editasnew'] = 'Редагувати Ñк новий';
-$labels['send'] = 'Відправлено';
+$labels['send'] = 'Відправити';
$labels['sendmessage'] = 'ÐадіÑлати зараз';
$labels['savemessage'] = 'Зберегти чернетку';
$labels['addattachment'] = 'ВклаÑти файл';
@@ -225,26 +191,25 @@ $labels['returnreceipt'] = 'Запит відповіді';
$labels['dsn'] = 'ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ доÑтавку';
$labels['mailreplyintro'] = '$date, $sender напиÑав:';
$labels['originalmessage'] = 'Оригінальне повідомленнÑ';
-
$labels['editidents'] = 'Змінити данні';
$labels['spellcheck'] = 'ОрфографіÑ';
$labels['checkspelling'] = 'Перевірити орфографію';
$labels['resumeediting'] = 'Продовжити редагуваннÑ';
$labels['revertto'] = 'Відмінити редагуваннÑ';
-
+$labels['restore'] = 'Відновити';
+$labels['restoremessage'] = 'ВІдновити повідомленнÑ?';
+$labels['responsename'] = 'Ім’Ñ';
$labels['attach'] = 'ВклаÑти';
$labels['attachments'] = 'Вкладені файли';
$labels['upload'] = 'ВклаÑти';
$labels['uploadprogress'] = '$percent ($current з $total)';
$labels['close'] = 'Закрити';
$labels['messageoptions'] = 'ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð»Ð¸Ñтів';
-
$labels['low'] = 'Ðизький';
$labels['lowest'] = 'Ðайнижчий';
$labels['normal'] = 'Ðормальний';
$labels['high'] = 'ВиÑокий';
$labels['highest'] = 'Ðайвищий';
-
$labels['nosubject'] = '(без теми)';
$labels['showimages'] = 'Показувати зображеннÑ';
$labels['alwaysshow'] = 'Завжди показувати Ð·Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ Ð²Ñ–Ð´ $sender';
@@ -252,25 +217,19 @@ $labels['isdraft'] = 'Це чернетка.';
$labels['andnmore'] = 'ще $nr...';
$labels['togglemoreheaders'] = 'Завантажити ще заголовки повідомлень';
$labels['togglefullheaders'] = 'Показати оригінальні заголовки повідомленнÑ';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = 'Звичайний текÑÑ‚';
$labels['savesentmessagein'] = 'зберегти надіÑланого лиÑта в';
$labels['dontsave'] = 'не зберігати';
$labels['maxuploadsize'] = 'МакÑимальний розмір файлу $size';
-
$labels['addcc'] = 'Додати копію';
$labels['addbcc'] = 'Додати приховану копію';
$labels['addreplyto'] = 'Додати зворотню адреÑу';
$labels['addfollowupto'] = 'Додати Followup-To';
-
-// mdn
$labels['mdnrequest'] = 'Відправник цього лиÑта запитав про прочитаннÑ. Повідомити відправника?';
$labels['receiptread'] = 'ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ прочитаннÑ';
$labels['yourmessage'] = 'ÐŸÐ¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¿Ñ€Ð¾ Ð¿Ñ€Ð¾Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ Ð’Ð°ÑˆÐ¾Ð³Ð¾ лиÑта';
$labels['receiptnote'] = 'ЗауваженнÑ: Це Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð¾Ð·Ð½Ð°Ñ‡Ð°Ñ” лише, що лиÑта було відкрито одержувачем, Ñ– не гарантує того, що його було прочитано.';
-
-// address boook
$labels['name'] = 'Ім`Ñ Ð´Ð»Ñ Ð²Ñ–Ð´Ð¾Ð±Ñ€Ð°Ð¶ÐµÐ½Ð½Ñ';
$labels['firstname'] = 'Ім`Ñ';
$labels['surname'] = 'Прізвище';
@@ -305,7 +264,6 @@ $labels['search'] = 'Пошук';
$labels['advsearch'] = 'Розширений пошук';
$labels['advanced'] = 'Додатково';
$labels['other'] = 'Інше';
-
$labels['typehome'] = 'Дім';
$labels['typework'] = 'Робота';
$labels['typeother'] = 'Інше';
@@ -320,14 +278,12 @@ $labels['typeassistant'] = 'Помічник';
$labels['typehomepage'] = 'Ð”Ð¾Ð¼Ð°ÑˆÐ½Ñ Ñторінка';
$labels['typeblog'] = 'Блог';
$labels['typeprofile'] = 'Профіль';
-
$labels['addfield'] = 'Додати поле...';
$labels['addcontact'] = 'Додати вибрані контакти до ÑпиÑку контактів';
$labels['editcontact'] = 'Редагувати контакт';
$labels['contacts'] = 'Контакти';
$labels['contactproperties'] = 'ВлаÑтивоÑÑ‚Ñ– контакта';
$labels['personalinfo'] = 'ОÑобова інформаціÑ';
-
$labels['edit'] = 'Правка';
$labels['cancel'] = 'СкаÑувати';
$labels['save'] = 'Зберегти';
@@ -336,7 +292,6 @@ $labels['rename'] = 'Перейменувати';
$labels['addphoto'] = 'Додати';
$labels['replacephoto'] = 'Замінити';
$labels['uploadphoto'] = 'Завантажити фотографію';
-
$labels['newcontact'] = 'Створити новий контакт';
$labels['deletecontact'] = 'Видалити вибрані контакти';
$labels['composeto'] = 'Створити лиÑта Ð´Ð»Ñ Ð²Ð¸Ð±Ñ€Ð°Ð½Ð½Ð¸Ñ… контактів';
@@ -350,45 +305,33 @@ $labels['newcontactgroup'] = 'Створити нову групу контакÑ
$labels['grouprename'] = 'Перейменувати групу';
$labels['groupdelete'] = 'Видалити групу';
$labels['groupremoveselected'] = 'Видалити обрані контакти з групи';
-
$labels['previouspage'] = 'ÐŸÐ¾Ð¿ÐµÑ€ÐµÐ´Ð½Ñ Ñторінка';
$labels['firstpage'] = 'Перша Ñторінка';
$labels['nextpage'] = 'ÐаÑтупна Ñторінка';
$labels['lastpage'] = 'ОÑÑ‚Ð°Ð½Ð½Ñ Ñторінка';
-
$labels['group'] = 'Група';
$labels['groups'] = 'Групи';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = 'ПерÑональні адреÑи';
-
$labels['searchsave'] = 'Зберегти пошук';
$labels['searchdelete'] = 'Видалити пошук';
-
$labels['import'] = 'Імпорт';
$labels['importcontacts'] = 'Імпортувати контакти';
$labels['importfromfile'] = 'Імпортувати з файлу:';
-$labels['importtarget'] = 'Add contacts to';
+$labels['importtarget'] = 'Додати контакт до';
$labels['importreplace'] = 'Замінити вÑÑŽ адреÑну книгу';
-$labels['importgroups'] = 'Import group assignments';
-$labels['importgroupsall'] = 'All (create groups if necessary)';
$labels['importgroupsexisting'] = 'Лише Ð´Ð»Ñ Ñ–Ñнуючих груп';
$labels['importdesc'] = 'Ви можете завантажити контакти з Ñ–Ñнуючої адреÑної книги.<br/>Ð’ даний Ñ‡Ð°Ñ Ð¼Ð¸ підтримуємо імпорт Ð°Ð´Ñ€ÐµÑ Ð² форматі візитної картки <a href="http://en.wikipedia.org/wiki/VCard"> vCard</ a> або CSV (дані розділені комами).';
$labels['done'] = 'Готово';
-
-// settings
$labels['settingsfor'] = 'ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ Ð´Ð»Ñ';
$labels['about'] = 'Про програму';
$labels['preferences'] = 'Параметри';
$labels['userpreferences'] = 'ÐÐ°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача';
$labels['editpreferences'] = 'Редагувати Ð½Ð°Ð»Ð°ÑˆÑ‚ÑƒÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ñ€Ð¸Ñтувача';
-
$labels['identities'] = 'Профілі';
$labels['manageidentities'] = 'ÐšÐµÑ€ÑƒÐ²Ð°Ð½Ð½Ñ Ð¿Ñ€Ð¾Ñ„Ñ–Ð»Ñми';
$labels['newidentity'] = 'Ðовий профіль';
-
$labels['newitem'] = 'Ðовий';
$labels['edititem'] = 'Редагувати';
-
$labels['preferhtml'] = 'Показувати в HTML';
$labels['defaultcharset'] = 'ÐšÐ¾Ð´ÑƒÐ²Ð°Ð½Ð½Ñ Ð·Ð° замовчуванннÑм';
$labels['htmlmessage'] = 'ЛиÑÑ‚ у HTML';
@@ -410,7 +353,6 @@ $labels['htmleditor'] = 'Створювати лиÑти в HTML';
$labels['htmlonreply'] = 'тільки у відповідь на HTML повідомленнÑ';
$labels['htmlonreplyandforward'] = 'під Ñ‡Ð°Ñ Ð¿ÐµÑ€ÐµÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð°Ð±Ð¾ відповіді на Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ HTML';
$labels['htmlsignature'] = 'ÐŸÑ–Ð´Ð¿Ð¸Ñ Ð² HTML';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Показати панель переглÑду';
$labels['skin'] = 'Тема';
$labels['logoutclear'] = 'Очищати кошик при виході';
@@ -480,11 +422,11 @@ $labels['spellcheckignorenums'] = 'Ігнорувати Ñлова із чиÑл
$labels['spellcheckignorecaps'] = 'Ігнорувати Ñлова із великими буквами';
$labels['addtodict'] = 'Додати до Ñловника';
$labels['mailtoprotohandler'] = 'ЗареєÑтрувати обробник Ð´Ð»Ñ Ð¿Ð¾Ñилань mailto';
-$labels['standardwindows'] = 'Handle popups as standard windows';
$labels['forwardmode'] = 'ПереÑÐ¸Ð»Ð°Ð½Ð½Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½ÑŒ';
$labels['inline'] = 'у текÑÑ‚Ñ–';
$labels['asattachment'] = 'Ñк вкладеннÑ';
-
+$labels['replyallmode'] = 'Типова Ð´Ñ–Ñ Ð´Ð»Ñ ÐºÐ½Ð¾Ð¿ÐºÐ¸ [ВідповіÑти вÑім]';
+$labels['replyalldefault'] = 'відповіÑти уÑім';
$labels['folder'] = 'Папка';
$labels['folders'] = 'Папки';
$labels['foldername'] = 'Ðазва папки';
@@ -505,26 +447,20 @@ $labels['foldertype'] = 'Тип каталогу';
$labels['personalfolder'] = 'Приватний каталог';
$labels['otherfolder'] = 'Каталог іншого кориÑтувача';
$labels['sharedfolder'] = 'Публічний каталог';
-
$labels['sortby'] = 'ВідÑортувати за';
$labels['sortasc'] = 'Сортувати за зроÑтаннÑм';
$labels['sortdesc'] = 'Сортувати за ÑпаданнÑм';
$labels['undo'] = 'Відмінити';
-
$labels['installedplugins'] = 'Ð’Ñтановлені плагіни';
$labels['plugin'] = 'ДоповненнÑ';
$labels['version'] = 'ВерÑÑ–Ñ';
$labels['source'] = 'Джерело';
$labels['license'] = 'ЛіцензіÑ';
$labels['support'] = 'Отримати підтримку';
-
-// units
$labels['B'] = 'б';
$labels['KB'] = 'Кб';
$labels['MB'] = 'Мб';
$labels['GB'] = 'Гб';
-
-// character sets
$labels['unicode'] = 'Юнікод';
$labels['english'] = 'ÐнглійÑьке';
$labels['westerneuropean'] = 'ЗахідноєвропейÑьке';
@@ -543,5 +479,4 @@ $labels['vietnamese'] = 'Ð’\'єтнамÑьке';
$labels['japanese'] = 'ЯпонÑьке';
$labels['korean'] = 'КорейÑьке';
$labels['chinese'] = 'КитайÑьке';
-
?>
diff --git a/program/localization/uk_UA/messages.inc b/program/localization/uk_UA/messages.inc
index 2a114803f..fb3539467 100644
--- a/program/localization/uk_UA/messages.inc
+++ b/program/localization/uk_UA/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Виникла помилка!';
$messages['loginfailed'] = 'Ðевдала Ñпроба входу';
$messages['cookiesdisabled'] = 'Ваш переглÑдач не приймає cookie';
@@ -28,8 +26,8 @@ $messages['dberror'] = 'Помилка бази даних!';
$messages['requesttimedout'] = 'Тайм-аут запиту';
$messages['errorreadonly'] = 'Ðеможливо виконати операцію. Папка доÑтупна тільки Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ.';
$messages['errornoperm'] = 'Ðеможливо виконати операцію. ДоÑтуп заборонено';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
+$messages['erroroverquota'] = 'Ðеможливо виконати операцію. Ðемає вільного міÑÑ†Ñ Ð½Ð° диÑку.';
+$messages['erroroverquotadelete'] = 'ÐедоÑтатньо вільного міÑÑ†Ñ Ð½Ð° диÑку. СкориÑтайтеÑÑŒ SHIFT+DEL Ð´Ð»Ñ Ð²Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ.';
$messages['invalidrequest'] = 'Ðевірний запит! Дані не збережено.';
$messages['invalidhost'] = 'Ðевірне ім\'Ñ Ñерверу.';
$messages['nomessagesfound'] = 'ЛиÑтів не знайдено';
@@ -56,8 +54,8 @@ $messages['contactnotfound'] = 'Запитаний контакт не знайÐ
$messages['contactsearchonly'] = 'Введіть деÑкі критерії пошуку, щоб знайти контакти';
$messages['sendingfailed'] = 'Ðе вдалоÑÑ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²Ð¸Ñ‚Ð¸ лиÑта';
$messages['senttooquickly'] = 'Будь лаÑка, зачекайте $sec Ñекунд Ð´Ð»Ñ Ð²Ñ–Ð´Ð¿Ñ€Ð°Ð²ÐºÐ¸ лиÑта';
-$messages['errorsavingsent'] = 'Помилка при збереженні відправленого лиÑта';
-$messages['errorsaving'] = 'Помилка при збереженні';
+$messages['errorsavingsent'] = 'Помилка при збереженні відправленого повідомленнÑ.';
+$messages['errorsaving'] = 'Помилка при збереженні.';
$messages['errormoving'] = 'Ðе вдалоÑÑ Ð¿ÐµÑ€ÐµÐ¼Ñ–Ñтити лиÑти';
$messages['errorcopying'] = 'Ðе вдалоÑÑ Ð·ÐºÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ñ‚Ð¸ лиÑти';
$messages['errordeleting'] = 'Ðе вдалоÑÑ Ð²Ð¸Ð´Ð°Ð»Ð¸Ñ‚Ð¸ лиÑти';
@@ -101,16 +99,16 @@ $messages['converting'] = 'Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ñ„Ð¾Ñ€Ð¼Ð°Ñ‚ÑƒÐ²Ð°Ð½Ð½Ñ...';
$messages['messageopenerror'] = 'Ðе вдалоÑÑ Ð·Ð°Ð²Ð°Ð½Ñ‚Ð°Ð¶Ð¸Ñ‚Ð¸ Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð· Ñервера';
$messages['fileuploaderror'] = 'Ðе вдалоÑÑ Ð²ÐºÐ»Ð°Ñти файл';
$messages['filesizeerror'] = 'Розмір вибраного файлу перевищує макÑимально дозволений ($size)';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
+$messages['copysuccess'] = 'УÑпішно Ñкопійовано $nr контактів';
+$messages['movesuccess'] = 'УÑпішно переміщено $nr контактів';
+$messages['copyerror'] = 'Ðе вдалоÑÑ Ñкопіювати жодного контакту.';
+$messages['moveerror'] = 'ÐевдалоÑÑŒ переміÑтити контакти.';
$messages['sourceisreadonly'] = 'Дане джерело Ð°Ð´Ñ€ÐµÑ Ð´Ð¾Ñтупне лише Ð´Ð»Ñ Ñ‡Ð¸Ñ‚Ð°Ð½Ð½Ñ';
$messages['errorsavingcontact'] = 'Ðеможливо зберегти адреÑу контакту';
$messages['movingmessage'] = 'ÐŸÐµÑ€ÐµÐ¼Ñ–Ñ‰ÐµÐ½Ð½Ñ Ð»Ð¸Ñта...';
$messages['copyingmessage'] = 'ÐšÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ Ð»Ð¸Ñта...';
$messages['copyingcontact'] = 'ÐšÐ¾Ð¿Ñ–ÑŽÐ²Ð°Ð½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ñƒ(ів)...';
-$messages['movingcontact'] = 'Moving contact(s)...';
+$messages['movingcontact'] = 'ПеренеÑÐµÐ½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ñƒ(ів)...';
$messages['deletingmessage'] = 'Ð’Ð¸Ð´Ð°Ð»ÐµÐ½Ð½Ñ Ð»Ð¸Ñта (ів)';
$messages['markingmessage'] = 'ÐŸÐ¾Ð·Ð½Ð°Ñ‡ÐµÐ½Ð½Ñ Ð»Ð¸Ñта (ів)';
$messages['addingmember'] = 'Ð”Ð¾Ð´Ð°Ð½Ð½Ñ ÐºÐ¾Ð½Ñ‚Ð°ÐºÑ‚Ñƒ(ів) до групи...';
@@ -129,8 +127,8 @@ $messages['importwait'] = 'ІмпортуваннÑ, будь лаÑка, зач
$messages['importformaterror'] = 'Помилка імпорту! Завантажений файл має невідомий формат даних.';
$messages['importconfirm'] = '<b>УÑпішно імпортовано $inserted контактів, пропущено $skipped Ñ–Ñнуючих</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>Пропущені $skipped наÑвні запиÑи</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
+$messages['importmessagesuccess'] = 'УÑпішно імпортовано $nr повідомлень';
+$messages['importmessageerror'] = 'Імпорт не вдавÑÑ! Завантажений файл не Ñ” припуÑтимим Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð°Ð±Ð¾ файлом поштової Ñкриньки';
$messages['opnotpermitted'] = 'Ð”Ñ–Ñ Ð·Ð°Ð±Ð¾Ñ€Ð¾Ð½ÐµÐ½Ð°!';
$messages['nofromaddress'] = 'Ð’ обраному профілі не виÑтачає адреÑи електронної пошти';
$messages['editorwarning'] = 'ÐŸÐµÑ€ÐµÐ¼Ð¸ÐºÐ°Ð½Ð½Ñ Ð² режим звичайного текÑту Ñпричинить втрату вÑього форматуваннÑ. Продовжити?';
@@ -144,7 +142,7 @@ $messages['smtperror'] = 'Помилка SMTP: $msg';
$messages['emailformaterror'] = 'Ðевірна електронна адреÑа: $email';
$messages['toomanyrecipients'] = 'Занадто багато отримувачів. Зменшіть Ñ—Ñ… чиÑло до $max.';
$messages['maxgroupmembersreached'] = 'ЧиÑло Ð°Ð´Ñ€ÐµÑ Ñƒ групі перевищило макÑимум у $max.';
-$messages['internalerror'] = 'Виникла Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°. Будь лаÑка, Ñпробуйте ще раз';
+$messages['internalerror'] = 'Виникла Ð²Ð½ÑƒÑ‚Ñ€Ñ–ÑˆÐ½Ñ Ð¿Ð¾Ð¼Ð¸Ð»ÐºÐ°. Будь лаÑка, Ñпробуйте ще раз.';
$messages['contactdelerror'] = 'Ðеможливо видалити контакт(и)';
$messages['contactdeleted'] = 'Контакт(и) видалено уÑпішно';
$messages['contactrestoreerror'] = 'Ðеможливо відновити видалений(Ñ–) контакт(и).';
@@ -172,5 +170,4 @@ $messages['parentnotwritable'] = 'Ðеможливо Ñтворити/перем
$messages['messagetoobig'] = 'ЧаÑтина Ð¿Ð¾Ð²Ñ–Ð´Ð¾Ð¼Ð»ÐµÐ½Ð½Ñ Ð·Ð°Ð½Ð°Ð´Ñ‚Ð¾ велика Ð´Ð»Ñ Ð¾Ð¿Ñ€Ð°Ñ†ÑŽÐ²Ð°Ð½Ð½Ñ.';
$messages['attachmentvalidationerror'] = 'УВÐГÐ! Це Ð²ÐºÐ»Ð°Ð´ÐµÐ½Ð½Ñ Ñ” підозрілим, тому що його тип не збігаєтьÑÑ Ð· типом, оголошеним у повідомленні. Якщо ви не довірÑєте відправнику, ви не повинні відкривати його в браузері, оÑкільки його вміÑÑ‚ може бути шкідливим.<br/><br/><em>Очікуване: $expected; знайдене: $detected </em>';
$messages['noscriptwarning'] = 'Увага: Даний клієнт електронної пошти потрібує Javascript! Ð”Ð»Ñ Ñ‚Ð¾Ð³Ð¾, щоб викориÑтовувати його необхідно включити підтримку Javascript в налаштуваннÑÑ… вашого браузера.';
-
?>
diff --git a/program/localization/ur_PK/labels.inc b/program/localization/ur_PK/labels.inc
new file mode 100644
index 000000000..797c98f11
--- /dev/null
+++ b/program/localization/ur_PK/labels.inc
@@ -0,0 +1,40 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/<lang>/labels.inc |
+ | |
+ | Localization file of the Roundcube Webmail client |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
+*/
+$labels['welcome'] = ' $product میں خوش آمدید';
+$labels['server'] = 'سَروَر';
+$labels['mail'] = 'میل';
+$labels['settings'] = 'ترتیبات';
+$labels['download'] = 'ڈاؤن لوڈ';
+$labels['showanyway'] = 'جیسا بھی ÛÛ’ ظاÛر کر دیں';
+$labels['markread'] = 'جیسے Ù¾Ú‘Ú¾ لیا ÛÙˆ';
+$labels['markunread'] = 'جیسے ابھی Ù†Û Ù¾Ú‘Ú¾Ø§ ÛÙˆ';
+$labels['more'] = 'مزید';
+$labels['back'] = 'واپس';
+$labels['select'] = 'مۃنتخب کریں';
+$labels['all'] = 'تمام';
+$labels['none'] = 'کوئی Ù†Ûیں';
+$labels['currpage'] = 'Ù…ÙˆØ¬ÙˆØ¯Û Ø­ÙØ­Û';
+$labels['unread'] = 'Ù†Ûیں پڑھا';
+$labels['deleted'] = 'ختم ÛÙˆ گیا';
+$labels['undeleted'] = 'ختم Ù†Ûیں ÛÙوا';
+$labels['invert'] = 'شکل تبدیل کریں';
+$labels['list'] = 'Ù„Ùسٹ';
+$labels['expand-all'] = 'تمام کھولیں';
+$labels['attachment'] = 'Ù…Ùنسلَک Ø´ÙدÛ';
+$labels['nonesort'] = 'کوئی Ù†Ûیں';
+?>
diff --git a/program/localization/ur_PK/messages.inc b/program/localization/ur_PK/messages.inc
new file mode 100644
index 000000000..da4e39679
--- /dev/null
+++ b/program/localization/ur_PK/messages.inc
@@ -0,0 +1,18 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | localization/<lang>/messages.inc |
+ | |
+ | Localization file of the Roundcube Webmail client |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ +-----------------------------------------------------------------------+
+
+ For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
+*/
+?>
diff --git a/program/localization/vi_VN/labels.inc b/program/localization/vi_VN/labels.inc
index aad0dafe6..6bd6d4402 100644
--- a/program/localization/vi_VN/labels.inc
+++ b/program/localization/vi_VN/labels.inc
@@ -15,31 +15,20 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = 'Chào bạn đã đến với $product';
$labels['username'] = 'Tên đăng nhập';
$labels['password'] = 'Mật khẩu';
$labels['server'] = 'Máy chủ';
$labels['login'] = 'Äăng nhập';
-
-// taskbar
$labels['logout'] = 'Thoát';
$labels['mail'] = 'ThÆ°';
$labels['settings'] = 'Tùy chá»n';
$labels['addressbook'] = 'Sổ địa chỉ';
-
-// mailbox names
$labels['inbox'] = 'Há»™p thÆ°';
$labels['drafts'] = 'Thư nháp';
$labels['sent'] = 'Äã gá»­i';
$labels['trash'] = 'Sá»t rác';
$labels['junk'] = 'Thư rác';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = 'Tiêu Ä‘á»';
$labels['from'] = 'NgÆ°á»i gá»­i';
$labels['sender'] = 'NgÆ°á»i gá»­i';
@@ -54,27 +43,20 @@ $labels['priority'] = 'Äá»™ Æ°u tiên';
$labels['organization'] = 'Tổ chức';
$labels['readstatus'] = 'Trạng thái của thư';
$labels['listoptions'] = 'Danh sách lá»±a chá»n';
-
$labels['mailboxlist'] = 'Các thư mục';
$labels['messagesfromto'] = 'Thư từ $from đến $to trong tổng số $count';
$labels['threadsfromto'] = 'Dòng thư từ $from đến $to của tổng số $count';
$labels['messagenrof'] = 'Thư thứ $nr trong tổng số $count';
$labels['fromtoshort'] = '$from - $to của $count';
-
$labels['copy'] = 'Sao chép';
$labels['move'] = 'Di Chuyển';
$labels['moveto'] = 'Di chuyển tới...';
$labels['download'] = 'Tải vá»';
-$labels['open'] = 'Open';
$labels['showattachment'] = 'Hiển thị';
$labels['showanyway'] = 'Tiếp tục hiển thị';
-
$labels['filename'] = 'Tên tập tin';
$labels['filesize'] = 'Kích cỡ tập tin';
-
$labels['addtoaddressbook'] = 'Thêm vào danh bạ';
-
-// weekdays short
$labels['sun'] = 'Chủ Nhật';
$labels['mon'] = 'Thứ Hai';
$labels['tue'] = 'Thứ Ba';
@@ -82,8 +64,6 @@ $labels['wed'] = 'Thứ Tư';
$labels['thu'] = 'Thứ Năm';
$labels['fri'] = 'Thứ Sáu';
$labels['sat'] = 'Thứ Bảy';
-
-// weekdays long
$labels['sunday'] = 'Chủ Nhật';
$labels['monday'] = 'Thứ Hai';
$labels['tuesday'] = 'Thứ Ba';
@@ -91,8 +71,6 @@ $labels['wednesday'] = 'Thứ Tư';
$labels['thursday'] = 'Thứ Năm';
$labels['friday'] = 'Thứ Sáu';
$labels['saturday'] = 'Thứ Bảy';
-
-// months short
$labels['jan'] = 'Tháng Một';
$labels['feb'] = 'Tháng Hai';
$labels['mar'] = 'Tháng Ba';
@@ -105,8 +83,6 @@ $labels['sep'] = 'Tháng Chín';
$labels['oct'] = 'Tháng MÆ°á»i';
$labels['nov'] = 'Tháng MÆ°á»i Má»™t';
$labels['dec'] = 'Tháng MÆ°á»i Hai';
-
-// months long
$labels['longjan'] = 'Tháng Một';
$labels['longfeb'] = 'Tháng Hai';
$labels['longmar'] = 'Tháng Ba';
@@ -119,10 +95,7 @@ $labels['longsep'] = 'Tháng Chín';
$labels['longoct'] = 'Tháng MÆ°á»i';
$labels['longnov'] = 'Tháng MÆ°á»i Má»™t';
$labels['longdec'] = 'Tháng MÆ°á»i Hai';
-
$labels['today'] = 'Hôm nay';
-
-// toolbar buttons
$labels['refresh'] = 'Nạp lại';
$labels['checkmail'] = 'Kiểm tra thư mới';
$labels['compose'] = 'Soạn thư';
@@ -155,7 +128,6 @@ $labels['moreactions'] = 'Thêm hành động...';
$labels['more'] = 'Thêm';
$labels['back'] = 'Quay lại';
$labels['options'] = 'Tuỳ chá»n';
-
$labels['select'] = 'Lá»±a chá»n';
$labels['all'] = 'Tất cả';
$labels['none'] = 'Không có';
@@ -163,7 +135,7 @@ $labels['currpage'] = 'Trang hiện tại';
$labels['unread'] = 'ChÆ°a Ä‘á»c';
$labels['flagged'] = 'Äã đánh dấu';
$labels['unanswered'] = 'ChÆ°a trả lá»i';
-$labels['withattachment'] = 'With attachment';
+$labels['withattachment'] = 'Có tệp tin đính kèm';
$labels['deleted'] = 'Äã xóa';
$labels['undeleted'] = 'Chưa xóa được';
$labels['invert'] = 'Äảo ngược';
@@ -174,7 +146,6 @@ $labels['expand-all'] = 'Mở rộng tất cả';
$labels['expand-unread'] = 'Mở rá»™ng thÆ° chÆ°a Ä‘á»c';
$labels['collapse-all'] = 'Äóng hết';
$labels['threaded'] = 'Äã nhóm theo chủ Ä‘á» thÆ°';
-
$labels['autoexpand_threads'] = 'Mở rộng các chủ đỠthư';
$labels['do_expand'] = 'Tất cả các chủ đỠthư';
$labels['expand_only_unread'] = 'Chỉ vá»›i những thÆ° chÆ°a Ä‘á»c';
@@ -190,29 +161,23 @@ $labels['listcolumns'] = 'Các cột danh sách';
$labels['listsorting'] = 'Cột sắp xếp';
$labels['listorder'] = 'Thứ tự sắp xếp';
$labels['listmode'] = 'Xem dạng danh sách';
-
$labels['folderactions'] = 'Thao tác với thư mục';
$labels['compact'] = 'Nén';
$labels['empty'] = 'Trống';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = 'Lượng đĩa sử dụng';
$labels['unknown'] = 'Không rõ';
$labels['unlimited'] = 'không giới hạn';
-
$labels['quicksearch'] = 'Tìm nhanh';
$labels['resetsearch'] = 'Thiết lập lại tìm kiếm';
$labels['searchmod'] = 'Tìm kiếm với từ khóa và ký tự đặc biệt [() : " - ]';
$labels['msgtext'] = 'Toàn bộ thư';
$labels['body'] = 'Ná»™i dung thÆ°';
-$labels['type'] = 'Type';
-
+$labels['type'] = 'Äịnh dạng';
+$labels['namex'] = 'HỠtên';
$labels['openinextwin'] = 'Mở trong khung cửa mới';
$labels['emlsave'] = 'Tải vỠtheo định dạng .eml';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
+$labels['changeformattext'] = 'Hiển thị ở chế độ text';
+$labels['changeformathtml'] = 'Hiển thị ở chế độ HTML';
$labels['editasnew'] = 'Sá»­a nhÆ° má»™t email má»›i';
$labels['send'] = 'Gá»­i';
$labels['sendmessage'] = 'Gá»­i thÆ°';
@@ -224,26 +189,22 @@ $labels['returnreceipt'] = 'Báo nhận';
$labels['dsn'] = 'Thông báo trạng thái gửi thư';
$labels['mailreplyintro'] = 'Vào ngày $date, $sender viết:';
$labels['originalmessage'] = 'Thư gốc';
-
$labels['editidents'] = 'Chỉnh sửa nhận diện';
$labels['spellcheck'] = 'Äánh vần';
$labels['checkspelling'] = 'Kiểm tra chính tả';
$labels['resumeediting'] = 'Tiếp tục soạn thảo';
$labels['revertto'] = 'Trở lại với';
-
$labels['attach'] = 'Äính kèm';
$labels['attachments'] = 'Các đính kèm';
$labels['upload'] = 'Tải lên';
$labels['uploadprogress'] = '$percent ($current từ $total)';
$labels['close'] = 'Äóng';
$labels['messageoptions'] = 'Tùy chá»n cho thÆ°...';
-
$labels['low'] = 'Thấp';
$labels['lowest'] = 'Thấp nhất';
$labels['normal'] = 'Bình thÆ°á»ng';
$labels['high'] = 'Cao';
$labels['highest'] = 'Cao nhất';
-
$labels['nosubject'] = '(Không có chủ Ä‘á»)';
$labels['showimages'] = 'Hiển thị ảnh';
$labels['alwaysshow'] = 'Luôn luôn hiển thị ảnh từ $sender';
@@ -251,25 +212,19 @@ $labels['isdraft'] = 'Äây là thÆ° nháp';
$labels['andnmore'] = 'Thêm $nr';
$labels['togglemoreheaders'] = 'Hiển thị chi tiết thông tin thư';
$labels['togglefullheaders'] = 'Mở/đóng chi tiết thông tin thư';
-
$labels['htmltoggle'] = 'Mã HTML';
$labels['plaintoggle'] = 'Văn bản thô';
$labels['savesentmessagein'] = 'Lưu thư đã gửi trong';
$labels['dontsave'] = 'Không lưu';
$labels['maxuploadsize'] = 'Dung lượng tập tin tối đa cho phép là $size';
-
$labels['addcc'] = 'Thêm Cc';
$labels['addbcc'] = 'Thêm Bcc';
$labels['addreplyto'] = 'Thêm trả lá»i tá»›i';
$labels['addfollowupto'] = 'Thêm sự theo dõi tới';
-
-// mdn
$labels['mdnrequest'] = 'NgÆ°á»i gá»­i thÆ° này muốn nhận được thông báo khi bạn Ä‘á»c thÆ°. Bạn có muốn cho ngÆ°á»i gá»­i biết thông báo này không?';
$labels['receiptread'] = 'Biên nhận (đã Ä‘á»c)';
$labels['yourmessage'] = 'Äây là sá»± trả lại xác nhận cho thÆ° của bạn';
$labels['receiptnote'] = 'LÆ°u ý: Biên nhận này chỉ báo rằng thÆ° đã được hiển thị trên máy tính của ngÆ°á»i nhận. Không bảo đảm rằng ngÆ°á»i nhận đó đã có Ä‘á»c hoặc hiểu ná»™i dung thÆ°.';
-
-// address boook
$labels['name'] = 'Tên hiển thị';
$labels['firstname'] = 'Tên Gá»i';
$labels['surname'] = 'Tên Há»';
@@ -304,7 +259,6 @@ $labels['search'] = 'Tìm kiếm';
$labels['advsearch'] = 'Tìm kiếm chi tiết';
$labels['advanced'] = 'Nâng cao';
$labels['other'] = 'Loại khác';
-
$labels['typehome'] = 'Thư mục chính';
$labels['typework'] = 'CÆ¡ quan';
$labels['typeother'] = 'Loại khác';
@@ -319,14 +273,12 @@ $labels['typeassistant'] = 'Trợ lý';
$labels['typehomepage'] = 'Trang nhà';
$labels['typeblog'] = 'Trang nhật ký';
$labels['typeprofile'] = 'Lý lịch';
-
$labels['addfield'] = 'Thêm lĩnh vực...';
$labels['addcontact'] = 'Thêm một liên hệ mới';
$labels['editcontact'] = 'Sửa liên lạc';
$labels['contacts'] = 'Danh bạ';
$labels['contactproperties'] = 'Tính chất của liên hệ';
$labels['personalinfo'] = 'Thông tin cá nhân';
-
$labels['edit'] = 'Chỉnh sửa';
$labels['cancel'] = 'Huá»·';
$labels['save'] = 'LÆ°u';
@@ -335,7 +287,6 @@ $labels['rename'] = 'Äổi tên';
$labels['addphoto'] = 'Thêm';
$labels['replacephoto'] = 'Thay thế';
$labels['uploadphoto'] = 'Tải ảnh lên';
-
$labels['newcontact'] = 'Tạo danh bạ mới';
$labels['deletecontact'] = 'Xoá các liên lạc đã chá»n';
$labels['composeto'] = 'Soạn thư cho';
@@ -349,42 +300,32 @@ $labels['newcontactgroup'] = 'Tạo nhóm liên lạc mới';
$labels['grouprename'] = 'Äổi tên nhóm';
$labels['groupdelete'] = 'Xóa nhóm';
$labels['groupremoveselected'] = 'Xóa bá» các liên lạc được chá»n từ nhóm';
-
$labels['previouspage'] = 'Hiển thị trang trước';
$labels['firstpage'] = 'Hiển thị trang đầu tiên';
$labels['nextpage'] = 'Hiển thị trang kế tiếp';
$labels['lastpage'] = 'Hiển thị trang cuối';
-
$labels['group'] = 'Nhóm';
$labels['groups'] = 'Các nhóm';
-$labels['listgroup'] = 'List group members';
+$labels['listgroup'] = 'Danh sách các thành viên nhóm';
$labels['personaladrbook'] = 'Các địa chỉ cá nhân';
-
$labels['searchsave'] = 'Lưu tìm kiếm';
$labels['searchdelete'] = 'Xóa tìm kiếm';
-
$labels['import'] = 'Nhập';
$labels['importcontacts'] = 'Nhập liên lạc';
$labels['importfromfile'] = 'Nhập từ tập tin:';
-$labels['importtarget'] = 'Thêm liên lạc mới vào sổ địa chỉ';
$labels['importreplace'] = 'Thay thế toàn bộ sổ địa chỉ';
$labels['importdesc'] = 'Bạn có thể cập nhật các liên hệ từ một sổ địa chỉ có sẵn.<br />Hiện tại, chúng tôi hỗ trợ nhập địa chỉ từ dạng dữ liệu <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> hoặc CSV (dạng thức dữ liệu ngăn cách bằng dấu phẩy)';
$labels['done'] = 'Hoàn tất';
-
-// settings
$labels['settingsfor'] = 'Thiết lập cho';
$labels['about'] = 'Lá»i ngõ';
$labels['preferences'] = 'Sở thích';
$labels['userpreferences'] = 'Sở thích ngÆ°á»i dùng';
$labels['editpreferences'] = 'Chỉnh sửa sở thích';
-
$labels['identities'] = 'Các nhận diện';
$labels['manageidentities'] = 'Quản lý nhận diện cho trương mục này';
$labels['newidentity'] = 'Nhận diện mới';
-
$labels['newitem'] = 'Mục mới';
$labels['edititem'] = 'Sửa đổi mục';
-
$labels['preferhtml'] = 'Hiển thị HTML';
$labels['defaultcharset'] = 'Bộ ký tự mặc định';
$labels['htmlmessage'] = 'Thư theo định dạng HTML';
@@ -406,7 +347,6 @@ $labels['htmleditor'] = 'Soạn thư dạng HTML';
$labels['htmlonreply'] = 'Chỉ trả lá»i lại bằng thÆ° HTML';
$labels['htmlonreplyandforward'] = 'Khi chuyển tiếp hoặc trả lá»i thÆ° theo định dạng HTML';
$labels['htmlsignature'] = 'Chữ ký HTML';
-$labels['showemail'] = 'Show email address with display name';
$labels['previewpane'] = 'Hiển thị ô Xem thử';
$labels['skin'] = 'BỠmặt giao diện';
$labels['logoutclear'] = 'Xóa sạch rác khi thoát';
@@ -476,11 +416,9 @@ $labels['spellcheckignorenums'] = 'BỠqua các từ kèm số';
$labels['spellcheckignorecaps'] = 'BỠqua các từ được viết hoa';
$labels['addtodict'] = 'Thêm vào từ điển';
$labels['mailtoprotohandler'] = 'Xác định cách xử lý giao thức mailto: liên kết';
-$labels['standardwindows'] = 'Handle popups as standard windows';
$labels['forwardmode'] = 'Chuyển tiếp thư';
$labels['inline'] = 'nội tuyến';
$labels['asattachment'] = 'dạng gửi kèm';
-
$labels['folder'] = 'Thư mục';
$labels['folders'] = 'Các thư mục';
$labels['foldername'] = 'Tên thư mục';
@@ -501,26 +439,20 @@ $labels['foldertype'] = 'Kiểu thư mục';
$labels['personalfolder'] = 'Thư mục cá nhân';
$labels['otherfolder'] = 'ThÆ° mục khác của NgÆ°á»i dùng';
$labels['sharedfolder'] = 'Thư mục công khai';
-
$labels['sortby'] = 'Soạn theo';
$labels['sortasc'] = 'Soạn tăng dần';
$labels['sortdesc'] = 'Soạn giảm dần';
$labels['undo'] = 'Hoàn lại';
-
$labels['installedplugins'] = 'Các chương trình phụ trợ đã được cài đặt';
$labels['plugin'] = 'Phần bổ sung';
$labels['version'] = 'Phiên bản';
$labels['source'] = 'Nguồn';
$labels['license'] = 'Bản quyá»n';
$labels['support'] = 'Yêu cầu hỗ trợ';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = 'Tiếng Anh';
$labels['westerneuropean'] = 'Tiếng Tây Âu';
@@ -539,5 +471,4 @@ $labels['vietnamese'] = 'Tiếng Việt';
$labels['japanese'] = 'Tiếng Nhật';
$labels['korean'] = 'Tiếng Hàn';
$labels['chinese'] = 'Tiếng Hoa';
-
?>
diff --git a/program/localization/vi_VN/messages.inc b/program/localization/vi_VN/messages.inc
index 769a21afd..b2d7c71ff 100644
--- a/program/localization/vi_VN/messages.inc
+++ b/program/localization/vi_VN/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'Xuất hiện 1 lỗi';
$messages['loginfailed'] = 'Không đăng nhập được';
$messages['cookiesdisabled'] = 'Trình duyệt không hỗ trợ cookies';
@@ -28,8 +26,6 @@ $messages['dberror'] = 'Lỗi cơ sở dữ liệu';
$messages['requesttimedout'] = 'Yêu cầu hết hạn';
$messages['errorreadonly'] = 'Không thể thá»±c hiện thao tác. ThÆ° mục chỉ cho phép Ä‘á»c.';
$messages['errornoperm'] = 'Bạn không đủ quyá»n hạn để thá»±c hiện thao tác này.';
-$messages['erroroverquota'] = 'Unable to perform operation. No free disk space.';
-$messages['erroroverquotadelete'] = 'No free disk space. Use SHIFT+DEL to delete a message.';
$messages['invalidrequest'] = 'Yêu cầu không hợp lệ! Không có dữ liệu nào được lưu.';
$messages['invalidhost'] = 'Sai thông tin máy chủ';
$messages['nomessagesfound'] = 'Không thấy có thư nào trong hộp thư này.';
@@ -56,8 +52,6 @@ $messages['contactnotfound'] = 'Không tìm thấy liên lạc được yêu cáº
$messages['contactsearchonly'] = 'Gõ một vài từ tìm kiếm để tìm liên hệ';
$messages['sendingfailed'] = 'Không gửi được thư';
$messages['senttooquickly'] = 'Xin đợi vài giây trước khi gửi thư này';
-$messages['errorsavingsent'] = 'Xuất hiện một lỗi trong khi lưu thư đã gửi';
-$messages['errorsaving'] = 'Lỗi trong quá trình lưu.';
$messages['errormoving'] = 'Không thể chuyển được thư';
$messages['errorcopying'] = 'Không thể sao chép thư';
$messages['errordeleting'] = 'Không thể xóa được thư';
@@ -101,16 +95,11 @@ $messages['converting'] = 'Loại bỠđịnh dạng...';
$messages['messageopenerror'] = 'Không thể tải thư từ máy chủ';
$messages['fileuploaderror'] = 'Tải tập tin lên thất bại';
$messages['filesizeerror'] = 'Tập tin được tải lên vượt quá dung lượng tối đa....';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
$messages['sourceisreadonly'] = 'Nguồn địa chỉ này chỉ cho Ä‘á»c';
$messages['errorsavingcontact'] = 'Không thể lưu địa chỉ liên lạc';
$messages['movingmessage'] = 'Äang chuyển thÆ°...';
$messages['copyingmessage'] = 'Äang sao chép thÆ°...';
$messages['copyingcontact'] = 'Äang sao chép liên lạc...';
-$messages['movingcontact'] = 'Moving contact(s)...';
$messages['deletingmessage'] = 'Äang xóa thÆ°...';
$messages['markingmessage'] = 'Äánh dấu thÆ°...';
$messages['addingmember'] = 'Äang thêm liên lạc vào nhóm...';
@@ -129,8 +118,6 @@ $messages['importwait'] = 'Äang nhập, xin chá»...';
$messages['importformaterror'] = 'Nhập dữ liệu lỗi. Tệp tin vừa tải lên không phải tệp dữ liệu chính xác.';
$messages['importconfirm'] = 'Äã nhập $inserted liên hệ đã chèn vào thành công.';
$messages['importconfirmskipped'] = 'Äã bá» qua được $skipped mục tồn tại.';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
$messages['opnotpermitted'] = 'Thao tác không được cho phép!';
$messages['nofromaddress'] = 'Äịa chỉ email mất ở trong nhận dạng đã chá»n';
$messages['editorwarning'] = 'Việc chuyển soạn thảo text gốc sẽ gây ra toàn bộ định dạng text đã có bị mất. Bạn có muốn tiếp tục không?';
@@ -144,7 +131,6 @@ $messages['smtperror'] = 'Lá»—i SMTP: $msg';
$messages['emailformaterror'] = 'Äịa chỉ email không hợp lệ';
$messages['toomanyrecipients'] = 'Quá nhiá»u ngÆ°á»i nhận. Hãy giảm số lượng ngÆ°á»i nhận xuống tối Ä‘a là $max.';
$messages['maxgroupmembersreached'] = 'Số lượng thành viên trong nhóm vượt quá mức tối đa là $max.';
-$messages['internalerror'] = 'Xuất hiện một lỗi nội bộ. Xin hãy thử lại';
$messages['contactdelerror'] = 'Không thể xóa liên lạc';
$messages['contactdeleted'] = 'Liên lạc được xóa thành công';
$messages['contactrestoreerror'] = 'Không thể khôi phục liên lạc đã xóa';
@@ -172,5 +158,4 @@ $messages['parentnotwritable'] = 'Không thể tạo/chuyển folder vào folder
$messages['messagetoobig'] = 'Một phần thư quá lớn để xử lý nó.';
$messages['attachmentvalidationerror'] = 'Cảnh báo: Tệp tin đính kèm có dấu hiệu nguy hiểm, vì kiểu tệp tin không trùng vá»›i kiểu được khai báo sá»­ dụng trong thÆ°. Nếu bạn không biết ngÆ°á»i gá»­i, bạn không nên mở thÆ° vì nó có thể có các dữ liệu gây hại. <br/><br/><em>Dá»± kiến: $expected; được tìm thấy: $detected</em>';
$messages['noscriptwarning'] = 'Cảnh báo: Dịch vụ webmail này yêu cầu sá»­ dụng Javascript. Äể sá»­ dụng, bạn cần kích hoạt há»— trợ Javascript trong cấu hình trình duyệt Internet Ä‘ang sá»­ dụng.';
-
?>
diff --git a/program/localization/zh_CN/labels.inc b/program/localization/zh_CN/labels.inc
index b568a7008..1d9c04733 100644
--- a/program/localization/zh_CN/labels.inc
+++ b/program/localization/zh_CN/labels.inc
@@ -15,31 +15,20 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = '欢迎使用 $product';
$labels['username'] = '用户å';
$labels['password'] = '密ç ';
$labels['server'] = 'æœåŠ¡å™¨';
$labels['login'] = '登录';
-
-// taskbar
$labels['logout'] = '注销';
$labels['mail'] = '邮件';
$labels['settings'] = '设置';
$labels['addressbook'] = '通讯录';
-
-// mailbox names
$labels['inbox'] = '收件箱';
$labels['drafts'] = 'è‰ç¨¿ç®±';
$labels['sent'] = 'å·²å‘é€é‚®ä»¶';
$labels['trash'] = '已删除邮件';
$labels['junk'] = '垃圾邮件';
-$labels['show_real_foldernames'] = 'Show real names for special folders';
-
-// message listing
$labels['subject'] = '主题';
$labels['from'] = 'å‘件人';
$labels['sender'] = 'å‘件人';
@@ -54,13 +43,11 @@ $labels['priority'] = '优先级';
$labels['organization'] = '组织';
$labels['readstatus'] = '阅读状æ€';
$labels['listoptions'] = '列表选项';
-
$labels['mailboxlist'] = '邮件夹';
-$labels['messagesfromto'] = '第 $from 到 $to,共计 $count å°é‚®ä»¶';
-$labels['threadsfromto'] = '第 $from 到 $to,共计 $count 个主题';
+$labels['messagesfromto'] = '从 $from 到 $to,共计 $count å°é‚®ä»¶';
+$labels['threadsfromto'] = '从 $from 到 $to,共计 $count 个主题';
$labels['messagenrof'] = '第 $nr å°é‚®ä»¶ï¼Œå…±è®¡ $count å°';
-$labels['fromtoshort'] = '自 $from – $to 统计 $count';
-
+$labels['fromtoshort'] = '$from – $to 共计 $count 个';
$labels['copy'] = 'å¤åˆ¶';
$labels['move'] = '移动';
$labels['moveto'] = '移至...';
@@ -68,13 +55,9 @@ $labels['download'] = '下载';
$labels['open'] = '打开';
$labels['showattachment'] = '显示';
$labels['showanyway'] = '总是显示';
-
$labels['filename'] = '文件å';
$labels['filesize'] = '文件大å°';
-
$labels['addtoaddressbook'] = '添加至通讯录';
-
-// weekdays short
$labels['sun'] = '星期日';
$labels['mon'] = '星期一';
$labels['tue'] = '星期二';
@@ -82,8 +65,6 @@ $labels['wed'] = '星期三';
$labels['thu'] = '星期四';
$labels['fri'] = '星期五';
$labels['sat'] = '星期六';
-
-// weekdays long
$labels['sunday'] = '星期日';
$labels['monday'] = '星期一';
$labels['tuesday'] = '星期二';
@@ -91,8 +72,6 @@ $labels['wednesday'] = '星期三';
$labels['thursday'] = '星期四';
$labels['friday'] = '星期五';
$labels['saturday'] = '星期六';
-
-// months short
$labels['jan'] = '一月';
$labels['feb'] = '二月';
$labels['mar'] = '三月';
@@ -105,8 +84,6 @@ $labels['sep'] = 'ä¹æœˆ';
$labels['oct'] = 'å月';
$labels['nov'] = 'å一月';
$labels['dec'] = 'å二月';
-
-// months long
$labels['longjan'] = '一月';
$labels['longfeb'] = '二月';
$labels['longmar'] = '三月';
@@ -119,10 +96,7 @@ $labels['longsep'] = 'ä¹æœˆ';
$labels['longoct'] = 'å月';
$labels['longnov'] = 'å一月';
$labels['longdec'] = 'å二月';
-
$labels['today'] = '今天';
-
-// toolbar buttons
$labels['refresh'] = '刷新';
$labels['checkmail'] = '检查新邮件';
$labels['compose'] = '撰写新邮件';
@@ -144,18 +118,17 @@ $labels['firstmessage'] = '显示第一å°é‚®ä»¶';
$labels['nextmessage'] = '下一å°';
$labels['lastmessage'] = '最åŽä¸€å°';
$labels['backtolist'] = '返回邮件列表';
-$labels['viewsource'] = '显示原始邮件文件';
-$labels['mark'] = '标记';
+$labels['viewsource'] = '显示æ¥æº';
+$labels['mark'] = '标记为';
$labels['markmessages'] = '标记选中的邮件为';
$labels['markread'] = '已读';
$labels['markunread'] = '未读';
-$labels['markflagged'] = '已标记';
-$labels['markunflagged'] = '未标记';
+$labels['markflagged'] = 'é‡è¦';
+$labels['markunflagged'] = ' ä¸é‡è¦';
$labels['moreactions'] = '更多æ“作...';
$labels['more'] = '更多';
$labels['back'] = '返回';
-$labels['options'] = '选项';
-
+$labels['options'] = '个人选项';
$labels['select'] = '选择';
$labels['all'] = '全部';
$labels['none'] = 'æ— ';
@@ -163,7 +136,7 @@ $labels['currpage'] = '当å‰é¡µ';
$labels['unread'] = '未读邮件';
$labels['flagged'] = '已标记邮件';
$labels['unanswered'] = '未回å¤é‚®ä»¶';
-$labels['withattachment'] = 'With attachment';
+$labels['withattachment'] = '包å«é™„件';
$labels['deleted'] = '已删除邮件';
$labels['undeleted'] = '未删除邮件';
$labels['invert'] = 'å选';
@@ -174,7 +147,6 @@ $labels['expand-all'] = '展开全部';
$labels['expand-unread'] = '展开未读';
$labels['collapse-all'] = '收起全部';
$labels['threaded'] = '所有邮件';
-
$labels['autoexpand_threads'] = '展开消æ¯ä¸»é¢˜';
$labels['do_expand'] = '所有主题';
$labels['expand_only_unread'] = '仅未读消æ¯';
@@ -190,29 +162,21 @@ $labels['listcolumns'] = '列表列';
$labels['listsorting'] = '排åºåˆ—';
$labels['listorder'] = '排åº';
$labels['listmode'] = '列表视图样å¼';
-
$labels['folderactions'] = '文件夹æ“作...';
$labels['compact'] = '压缩';
$labels['empty'] = '清空';
-$labels['importmessages'] = 'Import messages';
-
$labels['quota'] = '邮箱容é‡';
$labels['unknown'] = '未知';
$labels['unlimited'] = 'æ— é™åˆ¶';
-
$labels['quicksearch'] = '快速查找';
$labels['resetsearch'] = '清空';
$labels['searchmod'] = '修改æœç´¢';
$labels['msgtext'] = 'æ•´å°é‚®ä»¶';
$labels['body'] = '正文';
-$labels['type'] = 'Type';
-
$labels['openinextwin'] = '在新窗å£ä¸­æ‰“å¼€';
$labels['emlsave'] = '下载(.eml)';
-$labels['changeformattext'] = 'Display in plain text format';
-$labels['changeformathtml'] = 'Display in HTML format';
-
-// message compose
+$labels['changeformattext'] = '以文本格å¼æ˜¾ç¤º';
+$labels['changeformathtml'] = '以 HTML æ ¼å¼æ˜¾ç¤º';
$labels['editasnew'] = '以新邮件编辑';
$labels['send'] = 'å‘é€';
$labels['sendmessage'] = 'ç«‹å³å‘é€';
@@ -224,52 +188,42 @@ $labels['returnreceipt'] = '需è¦å·²è¯»å›žæ‰§';
$labels['dsn'] = '投递状æ€é€šçŸ¥';
$labels['mailreplyintro'] = '在 $date,$sender 写é“:';
$labels['originalmessage'] = '原始邮件';
-
$labels['editidents'] = '编辑身份';
$labels['spellcheck'] = '拼写';
$labels['checkspelling'] = '拼写检查';
$labels['resumeediting'] = '继续编辑';
$labels['revertto'] = 'æ¢å¤è‡³';
-
$labels['attach'] = '附加';
$labels['attachments'] = '附件';
$labels['upload'] = '上传';
$labels['uploadprogress'] = '$percent ($current / $total)';
$labels['close'] = '关闭';
$labels['messageoptions'] = '邮件选项...';
-
$labels['low'] = '低';
$labels['lowest'] = '最低';
$labels['normal'] = '普通';
$labels['high'] = '高';
$labels['highest'] = '最高';
-
$labels['nosubject'] = '(无主题)';
$labels['showimages'] = '显示图片';
-$labels['alwaysshow'] = '总是在æ¥è‡ª $sender 的邮件中显示图片';
+$labels['alwaysshow'] = '总是显示æ¥è‡ª $sender 的图片';
$labels['isdraft'] = '这是一å°è‰ç¨¿';
-$labels['andnmore'] = '第$nrå°æˆ–更多...';
+$labels['andnmore'] = '第 $nr å°æˆ–更多...';
$labels['togglemoreheaders'] = '显示更多消æ¯å¤´';
$labels['togglefullheaders'] = '切æ¢è‡³åŽŸå§‹æ¶ˆæ¯å¤´';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = '纯文本';
$labels['savesentmessagein'] = 'ä¿å­˜å·²å‘é€é‚®ä»¶è‡³';
$labels['dontsave'] = 'ä¸ä¿å­˜';
$labels['maxuploadsize'] = '上传附件最大ä¸è¶…过 $size';
-
$labels['addcc'] = '添加抄é€';
$labels['addbcc'] = '添加密é€';
$labels['addreplyto'] = '添加回å¤';
$labels['addfollowupto'] = '添加投递组';
-
-// mdn
$labels['mdnrequest'] = 'å‘件人è¦æ±‚在您阅读这å°é‚®ä»¶æ—¶å‘é€å·²è¯»é€šçŸ¥ã€‚您是å¦å¸Œæœ›é€šçŸ¥å‘件人?';
$labels['receiptread'] = 'å‘é€å›žæ‰§(已读)';
$labels['yourmessage'] = '这是您的邮件回执';
$labels['receiptnote'] = '注æ„:回执åªè¡¨ç¤ºé‚®ä»¶åœ¨æ”¶ä»¶äººçš„电脑上被打开过,ä¸è¡¨ç¤ºæ”¶ä»¶äººå·²ç»é˜…读或了解邮件内容。';
-
-// address boook
$labels['name'] = '显示å称';
$labels['firstname'] = 'åå­—';
$labels['surname'] = '姓æ°';
@@ -304,7 +258,6 @@ $labels['search'] = '查询';
$labels['advsearch'] = '高级查询';
$labels['advanced'] = '高级选项';
$labels['other'] = '其他';
-
$labels['typehome'] = '家庭';
$labels['typework'] = '工作';
$labels['typeother'] = '其他';
@@ -319,14 +272,12 @@ $labels['typeassistant'] = '助ç†';
$labels['typehomepage'] = '主页';
$labels['typeblog'] = 'åšå®¢';
$labels['typeprofile'] = '资料';
-
$labels['addfield'] = '新增æ¡ç›®...';
$labels['addcontact'] = '新建è”系人';
$labels['editcontact'] = '编辑è”系人';
$labels['contacts'] = 'è”系人';
$labels['contactproperties'] = 'è”系人信æ¯';
$labels['personalinfo'] = '个人信æ¯';
-
$labels['edit'] = '编辑';
$labels['cancel'] = 'å–消';
$labels['save'] = 'ä¿å­˜';
@@ -335,7 +286,6 @@ $labels['rename'] = 'é‡å‘½å';
$labels['addphoto'] = '上传';
$labels['replacephoto'] = '替æ¢ç…§ç‰‡';
$labels['uploadphoto'] = '上传照片';
-
$labels['newcontact'] = '新建è”系人';
$labels['deletecontact'] = '删除选中的è”系人';
$labels['composeto'] = '写信至选中的è”系人';
@@ -347,44 +297,33 @@ $labels['exportsel'] = '导出选中';
$labels['exportvcards'] = '导出è”系人为 vCard æ ¼å¼';
$labels['newcontactgroup'] = '创建新的è”系人群组';
$labels['grouprename'] = 'é‡å‘½å群组';
-$labels['groupdelete'] = '删除群组组';
+$labels['groupdelete'] = '删除群组';
$labels['groupremoveselected'] = '删除选中';
-
$labels['previouspage'] = '上一页';
-$labels['firstpage'] = '第一页';
+$labels['firstpage'] = '首页';
$labels['nextpage'] = '下一页';
-$labels['lastpage'] = '最åŽä¸€é¡µ';
-
+$labels['lastpage'] = '末页';
$labels['group'] = '分组';
$labels['groups'] = '分组';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = '个人通讯录';
-
$labels['searchsave'] = 'ä¿å­˜æœç´¢';
$labels['searchdelete'] = '删除æœç´¢';
-
$labels['import'] = '导入';
$labels['importcontacts'] = '导入通讯录';
$labels['importfromfile'] = '从文件导入';
-$labels['importtarget'] = '添加新è”系人至通讯录:';
$labels['importreplace'] = '替æ¢å…¨éƒ¨é€šè®¯å½•';
$labels['importdesc'] = '您å¯ä»¥ä»Žé€šè®¯å½•æ–‡ä»¶ä¸Šä¼ è”系人,目å‰å·²æ”¯æŒ <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> å’Œ CSV(逗å·åˆ†éš”)æ ¼å¼';
$labels['done'] = '完æˆ';
-
-// settings
$labels['settingsfor'] = '设置';
$labels['about'] = '关于';
$labels['preferences'] = '选项';
$labels['userpreferences'] = '个人选项';
$labels['editpreferences'] = '修改个人选项';
-
-$labels['identities'] = 'å‘件身份';
+$labels['identities'] = 'å‘件人身份';
$labels['manageidentities'] = '管ç†æ­¤è´¦å·çš„身份';
$labels['newidentity'] = '添加身份';
-
$labels['newitem'] = '添加æ¡ç›®';
$labels['edititem'] = '编辑æ¡ç›®';
-
$labels['preferhtml'] = '以 HTML æ ¼å¼æ˜¾ç¤º';
$labels['defaultcharset'] = '默认字符集';
$labels['htmlmessage'] = 'HTML 邮件';
@@ -403,16 +342,16 @@ $labels['dstactive'] = 'å¤ä»¤æ—¶';
$labels['showinextwin'] = '在新窗å£ä¸­æ‰“å¼€';
$labels['composeextwin'] = '在新窗å£ä¸­æ’°å†™';
$labels['htmleditor'] = '使用 HTML 编辑器';
-$labels['htmlonreply'] = 'ä»…å½“å›žå¤ HTML 邮件';
-$labels['htmlonreplyandforward'] = 'on forward or reply to HTML message';
+$labels['htmlonreply'] = 'ä»…å½“å›žå¤ HTML 邮件时';
+$labels['htmlonreplyandforward'] = '仅当回å¤æˆ–è½¬å‘ HTML 邮件时';
$labels['htmlsignature'] = '使用 HTML ç­¾å';
-$labels['showemail'] = 'Show email address with display name';
+$labels['showemail'] = '显示邮件地å€æ—¶æ˜¾ç¤ºåå­—';
$labels['previewpane'] = '显示预览窗å£';
$labels['skin'] = 'ç•Œé¢çš®è‚¤';
$labels['logoutclear'] = '退出时清空回收站';
$labels['logoutcompact'] = '退出时压缩收件箱';
$labels['uisettings'] = '用户界é¢';
-$labels['serversettings'] = 'æœåŠ¡å™¨è®¾ç½®';
+$labels['serversettings'] = 'æœåŠ¡ç«¯è®¾ç½®';
$labels['mailboxview'] = '显示邮件';
$labels['mdnrequests'] = 'å‘件人请求回执';
$labels['askuser'] = '询问用户';
@@ -424,7 +363,7 @@ $labels['readwhendeleted'] = '删除åŽæ ‡è®°ä¸ºå·²è¯»';
$labels['flagfordeletion'] = '标记邮件为已删除而ä¸æ˜¯å®žé™…删除';
$labels['skipdeleted'] = 'ä¸æ˜¾ç¤ºæ ‡è®°ä¸ºå·²åˆ é™¤çš„邮件';
$labels['deletealways'] = '如果移动邮件到回收站失败,则删除';
-$labels['deletejunk'] = '在ã€';
+$labels['deletejunk'] = '直接删除垃圾邮箱中的邮件';
$labels['showremoteimages'] = '显示内嵌的图片';
$labels['fromknownsenders'] = 'æ¥è‡ªå·²çŸ¥å‘件人';
$labels['always'] = '总是';
@@ -440,7 +379,7 @@ $labels['mimeparamfolding'] = '附件å';
$labels['2231folding'] = '完整的 RFC 2231(Thunderbird)';
$labels['miscfolding'] = 'RFC 2047/2232(MS Outlook)';
$labels['2047folding'] = '完整的 RFC 2047(其它)';
-$labels['force7bit'] = '对8ä½å­—符使用 MIME ç¼–ç ';
+$labels['force7bit'] = '对 8 ä½å­—符使用 MIME ç¼–ç ';
$labels['advancedoptions'] = '高级选项';
$labels['focusonnewmessage'] = '新邮件到达时将窗å£æå‡ä¸ºç„¦ç‚¹çª—å£';
$labels['checkallfolders'] = '检查所有邮件夹里的新邮件';
@@ -465,7 +404,7 @@ $labels['previewpanemarkread'] = '标记预览邮件为已读';
$labels['afternseconds'] = '$n 秒之åŽ';
$labels['reqmdn'] = '总是è¦æ±‚回执';
$labels['reqdsn'] = '总是è¦æ±‚投递状æ€é€šçŸ¥';
-$labels['replysamefolder'] = 'ä¿å­˜å›žå¤é‚®ä»¶åˆ°é‚®ä»¶ç›¸åŒçš„目录';
+$labels['replysamefolder'] = 'ä¿å­˜å›žå¤é‚®ä»¶åˆ°é‚®ä»¶ç›¸åŒçš„文件夹';
$labels['defaultabook'] = '默认地å€è–„';
$labels['autocompletesingle'] = '跳过自动完æˆçš„电å­é‚®ä»¶åœ°å€';
$labels['listnamedisplay'] = '列出è”系人为';
@@ -475,21 +414,19 @@ $labels['spellcheckignoresyms'] = '忽略带符å·çš„å•è¯';
$labels['spellcheckignorenums'] = '忽略带数字的å•è¯';
$labels['spellcheckignorecaps'] = '忽略所有大写字æ¯çš„å•è¯';
$labels['addtodict'] = '添加到字典中';
-$labels['mailtoprotohandler'] = 'Register protocol handler for mailto: links';
-$labels['standardwindows'] = 'Handle popups as standard windows';
+$labels['mailtoprotohandler'] = 'æ³¨å†Œä¸ºå¤„ç† mailto 链接的程åº';
$labels['forwardmode'] = '邮件转å‘æ–¹å¼';
$labels['inline'] = '内嵌';
$labels['asattachment'] = '作为附件';
-
-$labels['folder'] = '目录管ç†';
-$labels['folders'] = '目录管ç†';
+$labels['folder'] = '文件夹管ç†';
+$labels['folders'] = '文件夹管ç†';
$labels['foldername'] = '邮件夹å称';
$labels['subscribed'] = '已订阅';
$labels['messagecount'] = '邮件数é‡';
$labels['create'] = '建立';
$labels['createfolder'] = '建立新邮件夹';
$labels['managefolders'] = '管ç†é‚®ä»¶å¤¹';
-$labels['specialfolders'] = '定义邮件夹';
+$labels['specialfolders'] = '自定义邮件夹';
$labels['properties'] = '属性';
$labels['folderproperties'] = '文件夹属性';
$labels['parentfolder'] = '父文件夹';
@@ -497,30 +434,24 @@ $labels['location'] = 'ä½ç½®';
$labels['info'] = 'ä¿¡æ¯';
$labels['getfoldersize'] = '获得文件夹容é‡';
$labels['changesubscription'] = '更改订阅';
-$labels['foldertype'] = '目录类型';
-$labels['personalfolder'] = 'ç§æœ‰ç›®å½•';
-$labels['otherfolder'] = '他人目录';
-$labels['sharedfolder'] = '共享目录';
-
+$labels['foldertype'] = '文件夹类型';
+$labels['personalfolder'] = 'ç§æœ‰æ–‡ä»¶å¤¹';
+$labels['otherfolder'] = '他人文件夹';
+$labels['sharedfolder'] = '共享文件夹';
$labels['sortby'] = '排åº';
$labels['sortasc'] = '递增排åº';
$labels['sortdesc'] = '递å‡æŽ’åº';
$labels['undo'] = '撤销';
-
$labels['installedplugins'] = '已安装æ’件';
$labels['plugin'] = 'æ’件';
$labels['version'] = '版本';
$labels['source'] = 'æºä»£ç ';
$labels['license'] = '许å¯åè®®';
$labels['support'] = '支æŒ';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'Unicode';
$labels['english'] = '英语';
$labels['westerneuropean'] = '西欧';
@@ -539,5 +470,4 @@ $labels['vietnamese'] = '越å—语';
$labels['japanese'] = '日文';
$labels['korean'] = '韩语';
$labels['chinese'] = '中文';
-
?>
diff --git a/program/localization/zh_CN/messages.inc b/program/localization/zh_CN/messages.inc
index 4c47f833e..bf6e8cf2f 100644
--- a/program/localization/zh_CN/messages.inc
+++ b/program/localization/zh_CN/messages.inc
@@ -15,119 +15,122 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = 'å‘生错误ï¼';
$messages['loginfailed'] = '登录失败。';
-$messages['cookiesdisabled'] = '您的æµè§ˆå™¨ä¸æŽ¥å— cookies。';
-$messages['sessionerror'] = '会è¯å·²è¿‡æœŸã€‚';
-$messages['storageerror'] = '连接到邮件æœåŠ¡å™¨å¤±è´¥ã€‚';
+$messages['cookiesdisabled'] = '您的æµè§ˆå™¨ä¸æ”¯æŒ Cookies。';
+$messages['sessionerror'] = '会è¯æ— æ•ˆæˆ–已过期。';
+$messages['storageerror'] = '连接至 IMAP æœåŠ¡å™¨å¤±è´¥ã€‚';
$messages['servererror'] = 'æœåŠ¡å™¨é”™è¯¯ï¼';
-$messages['servererrormsg'] = 'æœåŠ¡å™¨é”™è¯¯: $msg';
+$messages['servererrormsg'] = 'æœåŠ¡å™¨é”™è¯¯ï¼š$msg';
$messages['dberror'] = 'æ•°æ®åº“错误ï¼';
$messages['requesttimedout'] = '请求超时';
-$messages['errorreadonly'] = 'ä¸å¯å¯¹åªè¯»æ–‡ä»¶å¤¹è¿›è¡Œæ“作。';
-$messages['errornoperm'] = 'æ— æƒé™æ“作';
-$messages['invalidrequest'] = '无效的请求ï¼æ•°æ®ä¿å­˜å¤±è´¥ã€‚';
-$messages['invalidhost'] = 'éžæ³•ä¸»æœºå。';
+$messages['errorreadonly'] = '无法完æˆæ“作。文件夹为åªè¯»ã€‚';
+$messages['errornoperm'] = '无法完æˆæ“作。没有æƒé™ã€‚';
+$messages['erroroverquota'] = '无法完æˆæ“作。没有足够的ç£ç›˜ç©ºé—´ã€‚';
+$messages['erroroverquotadelete'] = '没有足够的ç£ç›˜ç©ºé—´ã€‚请使用 SHIFT+DEL 删除一部分邮件。';
+$messages['invalidrequest'] = '请求无效ï¼æœªä¿å­˜æ•°æ®ã€‚';
+$messages['invalidhost'] = '无效的主机å。';
$messages['nomessagesfound'] = '此邮件夹内无邮件。';
$messages['loggedout'] = '您已æˆåŠŸæ³¨é”€ï¼Œå†è§ï¼';
-$messages['mailboxempty'] = '邮件夹为空';
-$messages['refreshing'] = '刷新中...';
+$messages['mailboxempty'] = '邮件夹为空。';
+$messages['refreshing'] = '正在刷新...';
$messages['loading'] = '正在载入...';
$messages['uploading'] = '正在上传文件...';
$messages['uploadingmany'] = '正在上传文件...';
$messages['loadingdata'] = '正在载入数æ®...';
$messages['checkingmail'] = '正在检查新邮件...';
-$messages['sendingmessage'] = '正在å‘é€é‚®ä»¶...';
-$messages['messagesent'] = '邮件å‘é€æˆåŠŸã€‚';
+$messages['sendingmessage'] = '正在å‘é€...';
+$messages['messagesent'] = '邮件已å‘é€ã€‚';
$messages['savingmessage'] = '正在ä¿å­˜é‚®ä»¶...';
-$messages['messagesaved'] = '邮件已暂存到è‰ç¨¿ç®±ã€‚';
+$messages['messagesaved'] = '邮件已暂存至è‰ç¨¿ç®±ã€‚';
$messages['successfullysaved'] = 'ä¿å­˜æˆåŠŸã€‚';
-$messages['addedsuccessfully'] = 'æˆåŠŸæ·»åŠ è”系人。';
+$messages['addedsuccessfully'] = 'è”系人已添加。';
$messages['contactexists'] = '当å‰è”系人的电å­é‚®ä»¶åœ°å€å·²å­˜åœ¨ã€‚';
-$messages['contactnameexists'] = '已存在åŒåçš„è”系人。';
-$messages['blockedimages'] = '为ä¿æŠ¤éšç§ï¼Œæ­¤é‚®ä»¶ä¸­çš„远程图片未显示。';
+$messages['contactnameexists'] = '已存在åŒåè”系人。';
+$messages['blockedimages'] = '由于ä¿æŠ¤éšç§ï¼Œæ­¤é‚®ä»¶ä¸­çš„远程图片未予显示。';
$messages['encryptedmessage'] = '抱歉ï¼è¯¥é‚®ä»¶å·²è¢«åŠ å¯†ï¼Œæ— æ³•æ˜¾ç¤ºã€‚';
$messages['nocontactsfound'] = '未找到è”系人。';
$messages['contactnotfound'] = '未找到指定的è”系人。';
$messages['contactsearchonly'] = '请输入è”系人的æœç´¢æ¡ä»¶';
$messages['sendingfailed'] = 'å‘é€å¤±è´¥ã€‚';
-$messages['senttooquickly'] = '您需è¦ç­‰å¾… $sec 秒æ‰èƒ½å‘é€é‚®ä»¶ã€‚';
-$messages['errorsavingsent'] = 'ä¿å­˜å·²å‘é€é‚®ä»¶æ—¶å‘生错误。';
-$messages['errorsaving'] = 'ä¿å­˜æ—¶å‘生错误。';
+$messages['senttooquickly'] = '您需è¦ç­‰å¾…$sec秒æ‰èƒ½å‘é€é‚®ä»¶ã€‚';
$messages['errormoving'] = '无法移动邮件。';
$messages['errorcopying'] = '无法å¤åˆ¶é‚®ä»¶ã€‚';
$messages['errordeleting'] = '无法删除邮件。';
$messages['errormarking'] = '无法标记邮件。';
-$messages['deletecontactconfirm'] = '确定è¦åˆ é™¤å·²é€‰ä¸­çš„è”系人?';
-$messages['deletegroupconfirm'] = '确定è¦åˆ é™¤ä»¥é€‰ä¸­çš„组?';
-$messages['deletemessagesconfirm'] = '确定è¦åˆ é™¤å·²é€‰ä¸­çš„邮件?';
-$messages['deletefolderconfirm'] = '确定è¦åˆ é™¤å·²é€‰ä¸­çš„邮件夹?';
-$messages['purgefolderconfirm'] = '是å¦ç¡®è®¤è¦åˆ é™¤å½“å‰é‚®ä»¶å¤¹ä¸­çš„所有邮件?';
+$messages['deletecontactconfirm'] = '是å¦åˆ é™¤é€‰ä¸­çš„è”系人?';
+$messages['deletegroupconfirm'] = '是å¦åˆ é™¤é€‰ä¸­çš„群组?';
+$messages['deletemessagesconfirm'] = '是å¦åˆ é™¤é€‰ä¸­çš„邮件?';
+$messages['deletefolderconfirm'] = '是å¦åˆ é™¤é€‰ä¸­çš„邮件夹?';
+$messages['purgefolderconfirm'] = '是å¦åˆ é™¤å½“å‰é‚®ä»¶å¤¹ä¸­çš„全部邮件?';
$messages['contactdeleting'] = '正在删除è”系人...';
-$messages['groupdeleting'] = '正在删除组...';
+$messages['groupdeleting'] = '正在删除群组...';
$messages['folderdeleting'] = '正在删除文件夹...';
$messages['foldermoving'] = '正在移动文件夹...';
$messages['foldersubscribing'] = '订阅文件夹中...';
$messages['folderunsubscribing'] = '退订中...';
-$messages['formincomplete'] = '当å‰è¡¨å•æœªå¡«å†™å®Œæ•´ï¼Œè¯·å®Œæ•´å¡«å†™ã€‚';
+$messages['formincomplete'] = '表å•æœªå¡«å†™å®Œæ•´ã€‚';
$messages['noemailwarning'] = '请输入一个有效的邮件地å€ã€‚';
-$messages['nonamewarning'] = '请输入å字。';
-$messages['nopagesizewarning'] = '请输入æ¯é¡µæ˜¾ç¤ºçš„邮件数é‡';
+$messages['nonamewarning'] = '请输入å称。';
+$messages['nopagesizewarning'] = '请输入æ¯é¡µæ˜¾ç¤ºçš„邮件数é‡ã€‚';
$messages['nosenderwarning'] = '请输入å‘件人地å€ã€‚';
-$messages['norecipientwarning'] = '至少需è¦ä¸€ä¸ªæ”¶ä»¶äººã€‚';
+$messages['norecipientwarning'] = '至少输入一个收件人。';
$messages['nosubjectwarning'] = '主题为空。您è¦è¾“入一个主题å—?';
-$messages['nobodywarning'] = 'è¦å‘é€æ— æ­£æ–‡çš„邮件å—?';
+$messages['nobodywarning'] = 'è¦å‘é€æ²¡æœ‰æ­£æ–‡çš„邮件å—?';
$messages['notsentwarning'] = '邮件未å‘é€ã€‚您确定è¦ç¦»å¼€å¹¶èˆå¼ƒå½“å‰é‚®ä»¶å—?';
-$messages['noldapserver'] = '请选择一个LDAPæœåŠ¡å™¨è¿›è¡ŒæŸ¥æ‰¾ã€‚';
-$messages['nosearchname'] = '请输入一个è”系人姓å或电å­é‚®ä»¶åœ°å€ã€‚';
-$messages['notuploadedwarning'] = '附件还没有全部上传,请等待或者å–消上传。';
+$messages['noldapserver'] = '请选择一个用æ¥æŸ¥æ‰¾çš„ LDAP æœåŠ¡å™¨ã€‚';
+$messages['nosearchname'] = '请输入è”系人姓å或电å­é‚®ä»¶åœ°å€ã€‚';
+$messages['notuploadedwarning'] = '附件尚未全部上传,请è€å¿ƒç­‰å¾…或者å–消上传。';
$messages['searchsuccessful'] = '共找到 $nr å°é‚®ä»¶ã€‚';
$messages['contactsearchsuccessful'] = '共找到 $nr ä½è”系人。';
-$messages['searchnomatch'] = '未找到任何符åˆæ¡ä»¶çš„邮件';
+$messages['searchnomatch'] = '未找到任何符åˆæ¡ä»¶çš„邮件。';
$messages['searching'] = '正在æœç´¢...';
$messages['checking'] = '正在检查...';
-$messages['nospellerrors'] = '未å‘现拼写错误';
-$messages['folderdeleted'] = '文件夹已被æˆåŠŸåˆ é™¤ã€‚';
-$messages['foldersubscribed'] = 'æˆåŠŸè®¢é˜…文件夹。';
-$messages['folderunsubscribed'] = 'æˆåŠŸé€€è®¢çš„文件夹。';
-$messages['folderpurged'] = 'æˆåŠŸæ¸…空文件夹。';
+$messages['nospellerrors'] = '未å‘现拼写错误。';
+$messages['folderdeleted'] = '删除文件夹æˆåŠŸã€‚';
+$messages['foldersubscribed'] = '订阅文件夹æˆåŠŸã€‚';
+$messages['folderunsubscribed'] = '退订文件夹æˆåŠŸã€‚';
+$messages['folderpurged'] = '清空文件夹æˆåŠŸã€‚';
$messages['folderexpunged'] = '文件夹已清空。';
$messages['deletedsuccessfully'] = '删除æˆåŠŸã€‚';
$messages['converting'] = 'æ ¼å¼è½¬æ¢ä¸­...';
-$messages['messageopenerror'] = '无法从æœåŠ¡å™¨ä¸ŠåŠ è½½é‚®ä»¶å†…容。';
+$messages['messageopenerror'] = '无法从æœåŠ¡å™¨åŠ è½½é‚®ä»¶å†…容。';
$messages['fileuploaderror'] = '文件上传失败。';
$messages['filesizeerror'] = '上传的文件超过了 $size 的大å°é™åˆ¶ã€‚';
-$messages['copysuccess'] = 'æˆåŠŸå¤åˆ¶ $nr 个地å€ã€‚';
-$messages['copyerror'] = '无法å¤åˆ¶åœ°å€ã€‚';
+$messages['copysuccess'] = 'æˆåŠŸå¤åˆ¶ $nr 个è”系人。';
+$messages['movesuccess'] = 'æˆåŠŸç§»åŠ¨ $nr 个è”系人。';
+$messages['copyerror'] = '无法å¤åˆ¶è”系人。';
+$messages['moveerror'] = '无法移动è”系人。';
$messages['sourceisreadonly'] = 'æºåœ°å€ä¸ºåªè¯»ã€‚';
-$messages['errorsavingcontact'] = '无法ä¿å­˜è”系人的地å€ã€‚';
-$messages['movingmessage'] = '移动邮件到...';
-$messages['copyingmessage'] = 'å¤åˆ¶é‚®ä»¶åˆ°...';
-$messages['copyingcontact'] = 'å¤åˆ¶è”系人...';
+$messages['errorsavingcontact'] = '无法ä¿å­˜è”系人地å€ã€‚';
+$messages['movingmessage'] = '正在移动邮件...';
+$messages['copyingmessage'] = '正在å¤åˆ¶é‚®ä»¶...';
+$messages['copyingcontact'] = '正在å¤åˆ¶è”系人...';
+$messages['movingcontact'] = '移动è”系人...';
$messages['deletingmessage'] = '正在删除邮件...';
$messages['markingmessage'] = '正在标记邮件...';
-$messages['addingmember'] = '正在添加è”系人到组...';
-$messages['removingmember'] = '正在从组中删除è”系人...';
-$messages['receiptsent'] = 'æˆåŠŸå‘é€äº†ä¸€ä¸ªå·²è¯»å›žæ‰§ã€‚';
-$messages['errorsendingreceipt'] = '无法å‘é€å›žæ‰§ã€‚';
-$messages['deleteidentityconfirm'] = '您真的想删除这个验è¯ä¿¡æ¯å—?';
-$messages['nodeletelastidentity'] = '无法删除这个身份,这是最åŽä¸€ä¸ªã€‚';
-$messages['forbiddencharacter'] = '目录å包å«éšè—字符。';
+$messages['addingmember'] = '正在添加è”系人至群组...';
+$messages['removingmember'] = '正在从群组中删除è”系人...';
+$messages['receiptsent'] = 'æˆåŠŸå‘é€ä¸€ä¸ªå·²è¯»å›žæ‰§ã€‚';
+$messages['errorsendingreceipt'] = '无法å‘é€å·²è¯»å›žæ‰§ã€‚';
+$messages['deleteidentityconfirm'] = '是å¦åˆ é™¤è¯¥èº«ä»½ï¼Ÿ';
+$messages['nodeletelastidentity'] = '无法删除该身份,这是最åŽä¸€ä¸ªã€‚';
+$messages['forbiddencharacter'] = '文件夹å包å«ç¦æ­¢å­—符。';
$messages['selectimportfile'] = '请选择è¦ä¸Šä¼ çš„文件。';
-$messages['addresswriterror'] = '已选择的地å€ç°¿ä¸å¯å†™ã€‚';
-$messages['contactaddedtogroup'] = 'æˆåŠŸæ·»åŠ è”系人至该分组。';
-$messages['contactremovedfromgroup'] = 'æˆåŠŸä»Žè¯¥åˆ†ç»„移除è”系人。';
-$messages['nogroupassignmentschanged'] = 'No group assignments changed.';
+$messages['addresswriterror'] = '选中的通讯录ä¸å¯å†™ã€‚';
+$messages['contactaddedtogroup'] = '添加è”系人至该群组æˆåŠŸã€‚';
+$messages['contactremovedfromgroup'] = '从该群组移除è”系人æˆåŠŸã€‚';
+$messages['nogroupassignmentschanged'] = '群组资料没有å˜æ›´ã€‚';
$messages['importwait'] = '正在导入,请ç¨åŽ...';
-$messages['importformaterror'] = 'Import failed! The uploaded file is not a valid import data file.';
+$messages['importformaterror'] = '导入失败ï¼æ–‡ä»¶æ— æ•ˆã€‚';
$messages['importconfirm'] = '<b>æˆåŠŸå¯¼å…¥ $inserted è”系人</b>';
$messages['importconfirmskipped'] = '<b>跳过已存在的 $skipped 项目</b>';
+$messages['importmessagesuccess'] = 'æˆåŠŸå¯¼å…¥ $nr æ¡ä¿¡æ¯';
+$messages['importmessageerror'] = '导入失败ï¼æ–‡ä»¶æ— æ•ˆ';
$messages['opnotpermitted'] = 'ä¸å…许的æ“作!';
-$messages['nofromaddress'] = '选中的身份中没有邮件地å€ã€‚';
-$messages['editorwarning'] = '切æ¢åˆ°çº¯æ–‡æœ¬ç¼–辑器将导致邮件正文中的所有文本格å¼å¤±æ•ˆï¼Œæ‚¨ç¡®å®šè¦è¿™æ ·åšå—?';
-$messages['httpreceivedencrypterror'] = 'å‘生了一个致命的é…置错误,请立å³è”系管ç†å‘˜ã€‚<b>您的邮件无法å‘é€ã€‚</b>';
+$messages['nofromaddress'] = '选中的身份没有邮件地å€ã€‚';
+$messages['editorwarning'] = '切æ¢è‡³çº¯æ–‡æœ¬ç¼–辑器将导致邮件正文中的所有文本格å¼å¤±æ•ˆï¼Œæ‚¨ç¡®å®šè¦è¿™æ ·åšå—?';
+$messages['httpreceivedencrypterror'] = '<b>您的邮件无法å‘é€</b>,因为å‘生了一个严é‡çš„é…置错误,请立å³è”系管ç†å‘˜ã€‚';
$messages['smtpconnerror'] = 'SMTP 错误 ($code):连接æœåŠ¡å™¨å¤±è´¥ã€‚';
$messages['smtpautherror'] = 'SMTP 错误 ($code): 认è¯å¤±è´¥ã€‚';
$messages['smtpfromerror'] = 'SMTP 错误 ($code):添加å‘件人失败 "$from" ($msg)。';
@@ -137,17 +140,16 @@ $messages['smtperror'] = 'SMTP 错误: $msg';
$messages['emailformaterror'] = '无效的邮件地å€ï¼š$email';
$messages['toomanyrecipients'] = '收件人太多,请å‡å°‘人数至 $max。';
$messages['maxgroupmembersreached'] = '组员数é‡è¶…过最大值 $max。';
-$messages['internalerror'] = 'é‡åˆ°ä¸€ä¸ªå†…部错误,请é‡è¯•ã€‚';
$messages['contactdelerror'] = '无法删除è”系人。';
$messages['contactdeleted'] = '删除è”系人æˆåŠŸã€‚';
$messages['contactrestoreerror'] = '无法æ¢å¤å·²åˆ é™¤çš„è”系人。';
$messages['contactrestored'] = 'è”系人æ¢å¤æˆåŠŸã€‚';
-$messages['groupdeleted'] = 'æˆåŠŸåˆ é™¤ç»„。';
-$messages['grouprenamed'] = '组改åæˆåŠŸã€‚';
-$messages['groupcreated'] = 'æˆåŠŸåˆ›å»ºç»„';
+$messages['groupdeleted'] = '删除群组æˆåŠŸã€‚';
+$messages['grouprenamed'] = '群组改åæˆåŠŸã€‚';
+$messages['groupcreated'] = 'æˆåŠŸåˆ›å»ºç¾¤ç»„';
$messages['savedsearchdeleted'] = 'æˆåŠŸåˆ é™¤ä¿å­˜çš„æœç´¢';
$messages['savedsearchdeleteerror'] = '无法删除ä¿å­˜çš„æœç´¢';
-$messages['savedsearchcreated'] = 'æˆåŠŸå»ºç«‹ä¿å­˜çš„æœç´¢';
+$messages['savedsearchcreated'] = 'æˆåŠŸåˆ›å»ºä¿å­˜çš„æœç´¢';
$messages['savedsearchcreateerror'] = '无法创建ä¿å­˜çš„æœç´¢ã€‚';
$messages['messagedeleted'] = '删除邮件æˆåŠŸã€‚';
$messages['messagemoved'] = '移动邮件æˆåŠŸã€‚';
@@ -161,9 +163,8 @@ $messages['folderupdated'] = 'æˆåŠŸæ›´æ–°æ–‡ä»¶å¤¹';
$messages['foldercreated'] = 'æˆåŠŸåˆ›å»ºæ–‡ä»¶å¤¹';
$messages['invalidimageformat'] = 'éžæ³•çš„图åƒç±»åž‹ã€‚';
$messages['mispellingsfound'] = '检查到拼写错误。';
-$messages['parentnotwritable'] = '无法创建和转移到所选的目录,æƒé™ä¸è¶³ã€‚';
-$messages['messagetoobig'] = '由于邮件部分过大无法处ç†ã€‚';
-$messages['attachmentvalidationerror'] = 'WARNING! This attachment is suspicious because its type doesn\'t match the type declared in the message. If you do not trust the sender, you shouldn\'t open it in the browser because it may contain malicious contents.<br/><br/><em>Expected: $expected; found: $detected</em>';
-$messages['noscriptwarning'] = 'Warning: This webmail service requires Javascript! In order to use it please enable Javascript in your browser\'s settings.';
-
+$messages['parentnotwritable'] = '无法创建/转移文件夹至指定的上级文件夹,没有æƒé™ã€‚';
+$messages['messagetoobig'] = '邮件过大无法处ç†ã€‚';
+$messages['attachmentvalidationerror'] = '警告ï¼è¯¥é™„件很å¯ç–‘,因为其自身的格å¼ä¸Žé‚®ä»¶ä¸­å£°æ˜Žçš„æ ¼å¼ä¸ç¬¦ã€‚如果您ä¸ä¿¡ä»»å‘é€äººï¼Œåˆ™ä¸åº”该在æµè§ˆå™¨ä¸­æ‰“开该附件。<br/><br/><em>声明格å¼ï¼š$expected;实际格å¼ï¼š$detected</em>';
+$messages['noscriptwarning'] = '警告:本程åºéœ€è¦ Javascript 支æŒï¼è¯·åœ¨æµè§ˆå™¨è®¾ç½®ä¸­å¯ç”¨ Javascript。';
?>
diff --git a/program/localization/zh_TW/csv2vcard.inc b/program/localization/zh_TW/csv2vcard.inc
index 9fcacc818..36c5495e1 100644
--- a/program/localization/zh_TW/csv2vcard.inc
+++ b/program/localization/zh_TW/csv2vcard.inc
@@ -15,14 +15,7 @@
| Author: Aleksander Machniak <alec@alec.pl> |
+-----------------------------------------------------------------------+
*/
-
-// This is a list of CSV column names specified in CSV file header
-// These must be original texts used in Outlook/Thunderbird exported csv files
-// Encoding UTF-8
-
$map = array();
-
-// MS Outlook 2010
$map['anniversary'] = "紀念日";
$map['assistants_name'] = "助ç†";
$map['assistants_phone'] = "助ç†é›»è©±";
@@ -69,8 +62,6 @@ $map['spouse'] = "é…å¶";
$map['suffix'] = "稱謂";
$map['title'] = "頭銜";
$map['web_page'] = "網é ";
-
-// Thunderbird
$map['last'] = "姓";
$map['first'] = "å";
$map['birth_day'] = "生日 (日)";
diff --git a/program/localization/zh_TW/labels.inc b/program/localization/zh_TW/labels.inc
index 5706ca7b1..ca7debdea 100644
--- a/program/localization/zh_TW/labels.inc
+++ b/program/localization/zh_TW/labels.inc
@@ -15,31 +15,21 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/labels/
*/
-
-$labels = array();
-
-// login page
$labels['welcome'] = '歡迎使用 $product';
$labels['username'] = '使用者å稱';
$labels['password'] = '使用者密碼';
$labels['server'] = '伺æœå™¨';
$labels['login'] = '登入';
-
-// taskbar
$labels['logout'] = '登出';
$labels['mail'] = 'é›»å­éƒµä»¶';
$labels['settings'] = '設定';
$labels['addressbook'] = '通訊錄';
-
-// mailbox names
$labels['inbox'] = '收件匣';
$labels['drafts'] = 'è‰ç¨¿åŒ£';
$labels['sent'] = '寄件備份';
$labels['trash'] = '垃圾桶';
$labels['junk'] = '垃圾郵件';
$labels['show_real_foldernames'] = '顯示特殊資料夾的實際å稱';
-
-// message listing
$labels['subject'] = '主旨';
$labels['from'] = '寄件者';
$labels['sender'] = '寄件者';
@@ -54,13 +44,11 @@ $labels['priority'] = '優先順åº';
$labels['organization'] = '組織';
$labels['readstatus'] = '讀信狀態';
$labels['listoptions'] = '列表é¸é …...';
-
$labels['mailboxlist'] = '資料夾';
$labels['messagesfromto'] = '郵件 $from 至 $to,共有 $count å°éƒµä»¶';
$labels['threadsfromto'] = '郵件串 $from 至 $to,共有 $count 個';
$labels['messagenrof'] = '第 $nr å°éƒµä»¶ï¼Œå…±æœ‰ $count å°';
$labels['fromtoshort'] = '自 $from – $to 統計 $count';
-
$labels['copy'] = '複製';
$labels['move'] = '移動';
$labels['moveto'] = '移至...';
@@ -68,13 +56,9 @@ $labels['download'] = '下載';
$labels['open'] = 'é–‹å•Ÿ';
$labels['showattachment'] = '顯示';
$labels['showanyway'] = '總是顯示';
-
$labels['filename'] = '檔案å稱';
$labels['filesize'] = '檔案大å°';
-
$labels['addtoaddressbook'] = '新增至通訊錄';
-
-// weekdays short
$labels['sun'] = '週日';
$labels['mon'] = '週一';
$labels['tue'] = '週二';
@@ -82,8 +66,6 @@ $labels['wed'] = '週三';
$labels['thu'] = '週四';
$labels['fri'] = '週五';
$labels['sat'] = '週六';
-
-// weekdays long
$labels['sunday'] = '星期日';
$labels['monday'] = '星期一';
$labels['tuesday'] = '星期二';
@@ -91,8 +73,6 @@ $labels['wednesday'] = '星期三';
$labels['thursday'] = '星期四';
$labels['friday'] = '星期五';
$labels['saturday'] = '星期六';
-
-// months short
$labels['jan'] = '一';
$labels['feb'] = '二';
$labels['mar'] = '三';
@@ -105,8 +85,6 @@ $labels['sep'] = 'ä¹';
$labels['oct'] = 'å';
$labels['nov'] = 'å一';
$labels['dec'] = 'å二';
-
-// months long
$labels['longjan'] = '一月';
$labels['longfeb'] = '二月';
$labels['longmar'] = '三月';
@@ -119,10 +97,7 @@ $labels['longsep'] = 'ä¹æœˆ';
$labels['longoct'] = 'å月';
$labels['longnov'] = 'å一月';
$labels['longdec'] = 'å二月';
-
$labels['today'] = '今日';
-
-// toolbar buttons
$labels['refresh'] = 'é‡æ–°æ•´ç†';
$labels['checkmail'] = '檢查新郵件';
$labels['compose'] = '撰寫新郵件';
@@ -155,7 +130,6 @@ $labels['moreactions'] = '更多動作...';
$labels['more'] = '更多';
$labels['back'] = '返回';
$labels['options'] = 'é¸é …';
-
$labels['select'] = 'é¸å–';
$labels['all'] = '全部郵件';
$labels['none'] = 'ç„¡';
@@ -174,7 +148,6 @@ $labels['expand-all'] = '全部展開';
$labels['expand-unread'] = '展開未讀å–';
$labels['collapse-all'] = '全部收起';
$labels['threaded'] = '郵件串';
-
$labels['autoexpand_threads'] = 'åªå±•é–‹éƒµä»¶ä¸²';
$labels['do_expand'] = '所有郵件串';
$labels['expand_only_unread'] = 'åªå±•é–‹æœªè®€è¨Šæ¯';
@@ -190,30 +163,23 @@ $labels['listcolumns'] = '列出欄ä½';
$labels['listsorting'] = '排åºæ¬„ä½';
$labels['listorder'] = '排åºé †åº';
$labels['listmode'] = '清單檢視模å¼';
-
$labels['folderactions'] = '資料夾動作...';
$labels['compact'] = '壓縮';
$labels['empty'] = '清空';
$labels['importmessages'] = '匯入郵件';
-
$labels['quota'] = 'ç£ç¢Ÿä½¿ç”¨é‡';
$labels['unknown'] = '未知';
$labels['unlimited'] = 'ç„¡é™åˆ¶';
-
$labels['quicksearch'] = '快速æœå°‹';
$labels['resetsearch'] = 'é‡è¨­æœå°‹';
$labels['searchmod'] = '修改æœå°‹';
$labels['msgtext'] = 'æ•´å°éƒµä»¶';
$labels['body'] = '內文';
-$labels['type'] = 'Type';
$labels['namex'] = 'å稱';
-
$labels['openinextwin'] = '在新視窗開啟';
$labels['emlsave'] = '下載(.eml)';
$labels['changeformattext'] = '以純文字格å¼é¡¯ç¤º';
$labels['changeformathtml'] = '以 HTML æ ¼å¼é¡¯ç¤º';
-
-// message compose
$labels['editasnew'] = '以新郵件編輯';
$labels['send'] = '寄出';
$labels['sendmessage'] = 'ç«‹å³å¯„出';
@@ -225,26 +191,22 @@ $labels['returnreceipt'] = 'è¦æ±‚讀å–回æ¢';
$labels['dsn'] = '傳é€ç‹€æ…‹é€šçŸ¥';
$labels['mailreplyintro'] = '$sender 於 $date 寫到:';
$labels['originalmessage'] = '原始郵件';
-
$labels['editidents'] = '編輯身份資訊';
$labels['spellcheck'] = '拼字';
$labels['checkspelling'] = '拼字檢查';
$labels['resumeediting'] = '繼續編輯';
$labels['revertto'] = 'æ¢å¾©è‡³';
-
$labels['attach'] = '附件';
$labels['attachments'] = '附加檔案';
$labels['upload'] = '上傳';
$labels['uploadprogress'] = '$percent ($current / $total)';
$labels['close'] = '關閉';
$labels['messageoptions'] = '郵件é¸é …...';
-
$labels['low'] = '低';
$labels['lowest'] = '最低';
$labels['normal'] = '普通';
$labels['high'] = '高';
$labels['highest'] = '最高';
-
$labels['nosubject'] = '(沒有主旨)';
$labels['showimages'] = '顯示圖片';
$labels['alwaysshow'] = 'æ°¸é é¡¯ç¤ºä¾†è‡ª $sender 的圖片';
@@ -252,25 +214,19 @@ $labels['isdraft'] = '這是一å°è‰ç¨¿';
$labels['andnmore'] = '第$nrå°æˆ–是更多...';
$labels['togglemoreheaders'] = '顯示更多的訊æ¯è¡¨é ­';
$labels['togglefullheaders'] = '切æ›åŽŸå§‹è¨Šæ¯è¡¨é ­';
-
$labels['htmltoggle'] = 'HTML';
$labels['plaintoggle'] = '純文字';
$labels['savesentmessagein'] = '儲存寄件備份至';
$labels['dontsave'] = 'ä¸è¦å„²å­˜';
$labels['maxuploadsize'] = '上傳檔案大å°é™åˆ¶ç‚º $size';
-
$labels['addcc'] = '新增副本';
$labels['addbcc'] = '新增密件副本';
$labels['addreplyto'] = '新增回覆地å€';
$labels['addfollowupto'] = '新增 信件跟隨至';
-
-// mdn
$labels['mdnrequest'] = '此郵件的寄件者希望在你閱讀此郵件時å—到通知。你想è¦é€šçŸ¥å¯„件者嗎?';
$labels['receiptread'] = '郵件回æ¢ï¼ˆå·²é–±è®€ï¼‰';
$labels['yourmessage'] = '這是你郵件的郵件回æ¢';
$labels['receiptnote'] = '注æ„:此回æ¢åªèƒ½ç¢ºèªæ”¶ä»¶è€…的電腦顯示了郵件,並ä¸èƒ½ä¿è­‰æ”¶ä»¶è€…已閱讀或了解郵件的內容。';
-
-// address boook
$labels['name'] = '顯示å稱';
$labels['firstname'] = 'å稱';
$labels['surname'] = '姓æ°';
@@ -305,7 +261,6 @@ $labels['search'] = 'æœå°‹';
$labels['advsearch'] = '進階æœå°‹';
$labels['advanced'] = '進階設定';
$labels['other'] = '其他';
-
$labels['typehome'] = 'ä½å®¶';
$labels['typework'] = '工作';
$labels['typeother'] = '其他';
@@ -320,14 +275,12 @@ $labels['typeassistant'] = '助ç†';
$labels['typehomepage'] = '首é ';
$labels['typeblog'] = '部è½æ ¼';
$labels['typeprofile'] = '設定檔';
-
$labels['addfield'] = '新增欄ä½...';
$labels['addcontact'] = '新增è¯çµ¡äºº';
$labels['editcontact'] = '編輯è¯çµ¡äºº';
$labels['contacts'] = 'è¯çµ¡äºº';
$labels['contactproperties'] = 'è¯çµ¡äººè³‡è¨Š';
$labels['personalinfo'] = '個人資訊';
-
$labels['edit'] = '編輯';
$labels['cancel'] = 'å–消';
$labels['save'] = '儲存';
@@ -336,7 +289,6 @@ $labels['rename'] = 'é‡æ–°å‘½å';
$labels['addphoto'] = '新增';
$labels['replacephoto'] = 'å–代';
$labels['uploadphoto'] = '上傳相片';
-
$labels['newcontact'] = '建立新è¯çµ¡äººè³‡æ–™';
$labels['deletecontact'] = '刪除所é¸æ“‡çš„è¯çµ¡äºº';
$labels['composeto'] = '寄信至所é¸æ“‡çš„è¯çµ¡äºº';
@@ -350,45 +302,33 @@ $labels['newcontactgroup'] = '新增è¯çµ¡äººç¾¤çµ„';
$labels['grouprename'] = 'é‡æ–°å‘½å群組';
$labels['groupdelete'] = '刪除群組';
$labels['groupremoveselected'] = '從群組中刪除é¸æ“‡çš„è¯çµ¡äºº';
-
$labels['previouspage'] = '顯示上一é ';
$labels['firstpage'] = '顯示第一é ';
$labels['nextpage'] = '顯示下一é ';
$labels['lastpage'] = '顯示最後一é ';
-
$labels['group'] = '群組';
$labels['groups'] = '群組';
-$labels['listgroup'] = 'List group members';
$labels['personaladrbook'] = '個人通訊錄';
-
$labels['searchsave'] = '儲存æœå°‹çµæžœ';
$labels['searchdelete'] = '刪除æœå°‹çµæžœ';
-
$labels['import'] = '匯入通訊錄';
$labels['importcontacts'] = '由檔案匯入通訊錄';
$labels['importfromfile'] = 'é¸æ“‡ä½ è¦åŒ¯å…¥çš„檔案:';
-$labels['importtarget'] = 'Add contacts to';
$labels['importreplace'] = '以匯入的資料å–代已存在的é‡è¤‡è³‡æ–™';
-$labels['importgroups'] = 'Import group assignments';
$labels['importgroupsall'] = '全部(如有必è¦,新增群組)';
$labels['importgroupsexisting'] = '僅é™æ–¼æ—¢æœ‰ç¾¤çµ„';
$labels['importdesc'] = '您å¯ä»¥å°‡å·²å­˜åœ¨çš„資料匯入通訊錄,目å‰æ”¯æ´åŒ¯å…¥ <a href="http://en.wikipedia.org/wiki/VCard">vCard</a> 與 CSV (逗點分隔)æ ¼å¼è³‡æ–™';
$labels['done'] = '完æˆ';
-
-// settings
$labels['settingsfor'] = '設定';
$labels['about'] = '關於';
$labels['preferences'] = '設定';
$labels['userpreferences'] = '個人設定';
$labels['editpreferences'] = '編輯個人設定';
-
$labels['identities'] = '身份資訊';
$labels['manageidentities'] = '管ç†æ­¤å¸³è™Ÿçš„身份資訊';
$labels['newidentity'] = '新增身份資訊';
-
$labels['newitem'] = '新增項目';
$labels['edititem'] = '編輯項目';
-
$labels['preferhtml'] = '使用 HTML 顯示';
$labels['defaultcharset'] = 'é è¨­ç·¨ç¢¼';
$labels['htmlmessage'] = 'HTML 郵件';
@@ -480,11 +420,12 @@ $labels['spellcheckignorenums'] = '忽略數字';
$labels['spellcheckignorecaps'] = '忽略大寫字æ¯';
$labels['addtodict'] = '加入詞典';
$labels['mailtoprotohandler'] = '註冊mailto:å”定處ç†ç¨‹å¼';
-$labels['standardwindows'] = 'Handle popups as standard windows';
$labels['forwardmode'] = '郵件轉寄方å¼';
$labels['inline'] = '放入內文';
$labels['asattachment'] = '當æˆé™„件';
-
+$labels['replyallmode'] = '「全部回覆ã€æŒ‰éˆ•çš„é è¨­å‹•ä½œ';
+$labels['replyalldefault'] = '全部回覆';
+$labels['replyalllist'] = 'åªå›žè¦†éƒµä»¶åˆ—表 (如有)';
$labels['folder'] = '資料夾';
$labels['folders'] = '資料夾';
$labels['foldername'] = '資料夾å稱';
@@ -505,26 +446,20 @@ $labels['foldertype'] = '資料夾類型';
$labels['personalfolder'] = 'ç§äººè³‡æ–™å¤¾';
$labels['otherfolder'] = '其他使用者資料夾';
$labels['sharedfolder'] = '公用資料夾';
-
$labels['sortby'] = '排åº';
$labels['sortasc'] = 'éžå¢žæŽ’åº';
$labels['sortdesc'] = 'éžæ¸›æŽ’åº';
$labels['undo'] = '復原';
-
$labels['installedplugins'] = '已安è£çš„æ’件';
$labels['plugin'] = '擴充套件';
$labels['version'] = '版本';
$labels['source'] = '來æº';
$labels['license'] = '授權許å¯';
$labels['support'] = 'å–得支æ´';
-
-// units
$labels['B'] = 'B';
$labels['KB'] = 'KB';
$labels['MB'] = 'MB';
$labels['GB'] = 'GB';
-
-// character sets
$labels['unicode'] = 'è¬åœ‹ç¢¼';
$labels['english'] = '英語';
$labels['westerneuropean'] = '西æ­èªžç³»';
@@ -543,5 +478,4 @@ $labels['vietnamese'] = '越å—';
$labels['japanese'] = '日本';
$labels['korean'] = '韓國';
$labels['chinese'] = '國語';
-
?>
diff --git a/program/localization/zh_TW/messages.inc b/program/localization/zh_TW/messages.inc
index b6fdcccae..c52116a55 100644
--- a/program/localization/zh_TW/messages.inc
+++ b/program/localization/zh_TW/messages.inc
@@ -15,8 +15,6 @@
For translation see https://www.transifex.com/projects/p/roundcube-webmail/resource/messages/
*/
-
-$messages = array();
$messages['errortitle'] = '發生錯誤ï¼';
$messages['loginfailed'] = '登入失敗';
$messages['cookiesdisabled'] = 'ä½ çš„ç€è¦½å™¨ä¸æŽ¥å— cookies';
@@ -44,7 +42,7 @@ $messages['checkingmail'] = '檢查新郵件...';
$messages['sendingmessage'] = '寄出郵件中...';
$messages['messagesent'] = '郵件寄出æˆåŠŸ';
$messages['savingmessage'] = '儲存郵件中...';
-$messages['messagesaved'] = '訊æ¯å·²ç¶“存至';
+$messages['messagesaved'] = '郵件已經儲存至è‰ç¨¿åŒ£';
$messages['successfullysaved'] = '儲存æˆåŠŸ';
$messages['addedsuccessfully'] = 'è¯çµ¡äººå·²ç¶“æˆåŠŸåœ°æ–°å¢žè‡³é€šè¨ŠéŒ„';
$messages['contactexists'] = 'æ­¤è¯çµ¡äººçš„é›»å­éƒµä»¶ä½å€å·²å­˜åœ¨';
@@ -56,8 +54,6 @@ $messages['contactnotfound'] = '找ä¸åˆ°è¦æ±‚çš„è¯çµ¡äºº';
$messages['contactsearchonly'] = '輸入關éµå­—找尋連絡人';
$messages['sendingfailed'] = '郵件寄出失敗';
$messages['senttooquickly'] = '你寄出的郵件太éŽæ–¼é »ç¹ï¼Œè«‹ç¨å€™ $sec 秒後å†è©¦ä¸€æ¬¡ã€‚';
-$messages['errorsavingsent'] = '儲存寄件備份時發生錯誤';
-$messages['errorsaving'] = '儲存時發生錯誤';
$messages['errormoving'] = '無法移動此郵件';
$messages['errorcopying'] = '無法訊æ¯';
$messages['errordeleting'] = '無法刪除此郵件';
@@ -101,16 +97,16 @@ $messages['converting'] = '移除郵件格å¼ä¸­...';
$messages['messageopenerror'] = '無法從伺æœå™¨è¼‰å…¥éƒµä»¶';
$messages['fileuploaderror'] = '檔案上傳失敗';
$messages['filesizeerror'] = '上傳的檔案超éŽäº† $size 的大å°é™åˆ¶';
-$messages['copysuccess'] = 'Successfully copied $nr contacts.';
-$messages['movesuccess'] = 'Successfully moved $nr contacts.';
-$messages['copyerror'] = 'Could not copy any contacts.';
-$messages['moveerror'] = 'Could not move any contacts.';
+$messages['copysuccess'] = 'æˆåŠŸè¤‡è£½ $nr 個è¯çµ¡äººã€‚';
+$messages['movesuccess'] = 'æˆåŠŸç§»å‹• $nr 個è¯çµ¡äººã€‚';
+$messages['copyerror'] = '無法複製任何è¯çµ¡äººã€‚';
+$messages['moveerror'] = '無法移動任何è¯çµ¡äººã€‚';
$messages['sourceisreadonly'] = '此來æºä½å€æ˜¯å”¯è®€çš„';
$messages['errorsavingcontact'] = '無法儲存連絡人的ä½å€';
$messages['movingmessage'] = '移動郵件中...';
$messages['copyingmessage'] = '複製訊æ¯...';
$messages['copyingcontact'] = '複製群組...';
-$messages['movingcontact'] = 'Moving contact(s)...';
+$messages['movingcontact'] = '正在移動連絡人...';
$messages['deletingmessage'] = '刪除訊æ¯...';
$messages['markingmessage'] = '標示訊æ¯...';
$messages['addingmember'] = '新增連絡人至群組';
@@ -129,8 +125,8 @@ $messages['importwait'] = '匯入中,請ç¨å€™...';
$messages['importformaterror'] = '匯入失敗ï¼ä¸Šè¼‰çš„檔案格å¼ä¸æ”¯æ´';
$messages['importconfirm'] = '<b>æˆåŠŸåŒ¯å…¥ $inserted ç­†è³‡æ–™ï¼Œç•¥éŽ $skipped 筆已存在的資料</b>:<p><em>$names</em></p>';
$messages['importconfirmskipped'] = '<b>ç•¥éŽ $skipped 個已存在的項目</b>';
-$messages['importmessagesuccess'] = 'Successfully imported $nr messages';
-$messages['importmessageerror'] = 'Import failed! The uploaded file is not a valid message or mailbox file';
+$messages['importmessagesuccess'] = 'æˆåŠŸåŒ¯å…¥ $nr å°éƒµä»¶';
+$messages['importmessageerror'] = '匯入失敗ï¼ä¸Šè¼‰çš„檔案ä¸æ˜¯æœ‰æ•ˆçš„郵件或資料夾檔案';
$messages['opnotpermitted'] = 'ä¸å…許的æ“作';
$messages['nofromaddress'] = '在é¸æ“‡çš„身分中éºå¤±äº†é›»å­éƒµä»¶ä½å€';
$messages['editorwarning'] = '切æ›åˆ°ç´”文字編輯模å¼å°‡æœƒéºå¤±æ‰€æœ‰è¨­å®šçš„樣å¼ã€‚您確定è¦ç¹¼çºŒå—Žï¼Ÿ';
@@ -144,7 +140,6 @@ $messages['smtperror'] = 'SMTP 錯誤:$msg';
$messages['emailformaterror'] = '錯誤電å­éƒµä»¶ï¼š$email';
$messages['toomanyrecipients'] = '太多收件人。請減少至 $max 人';
$messages['maxgroupmembersreached'] = '太多群組æˆå“¡ï¼Œè¶…éŽæœ€å¤§äººæ•¸ $max 人';
-$messages['internalerror'] = '內部發生錯誤。請å†æ¬¡å˜—試';
$messages['contactdelerror'] = '無法刪除è¯çµ¡äºº';
$messages['contactdeleted'] = 'è¯çµ¡äººæˆåŠŸåˆªé™¤';
$messages['contactrestoreerror'] = '無法復原刪除的連絡人';
@@ -173,5 +168,4 @@ $messages['messagetoobig'] = '郵件太大無法處ç†';
$messages['attachmentvalidationerror'] = '警告ï¼é€™å€‹é™„件是å¯ç–‘的,因為它的檔案類型與其宣稱的ä¸åŒã€‚如果您ä¸èƒ½ç›¸ä¿¡å¯„件者請ä¸è¦é–‹å•Ÿé™„件,它å¯èƒ½å«æœ‰æƒ¡æ„的內容。<br /><br />
<em>Expected: $expected; found: $detected</em>';
$messages['noscriptwarning'] = '警告:使用Webmail需è¦Javascript支æ´ï¼Œè«‹æª¢æŸ¥æ‚¨ç€è¦½å™¨çš„Javascript設定';
-
?>
diff --git a/program/steps/addressbook/copy.inc b/program/steps/addressbook/copy.inc
index d4387194a..9114cb1fd 100644
--- a/program/steps/addressbook/copy.inc
+++ b/program/steps/addressbook/copy.inc
@@ -5,7 +5,7 @@
| program/steps/addressbook/copy.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2007, The Roundcube Dev Team |
+ | Copyright (C) 2007-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -25,15 +25,14 @@ if (!$OUTPUT->ajax_call)
$cids = rcmail_get_cids();
-$target = get_input_value('_to', RCUBE_INPUT_POST);
-$target_group = get_input_value('_togid', RCUBE_INPUT_POST);
+$target = rcube_utils::get_input_value('_to', rcube_utils::INPUT_POST);
+$target_group = rcube_utils::get_input_value('_togid', rcube_utils::INPUT_POST);
$success = 0;
$errormsg = 'copyerror';
$maxnum = $RCMAIL->config->get('max_group_members', 0);
-foreach ($cids as $source => $cid)
-{
+foreach ($cids as $source => $cid) {
// Something wrong, target not specified
if (!strlen($target)) {
break;
diff --git a/program/steps/addressbook/delete.inc b/program/steps/addressbook/delete.inc
index 3bb2ef500..3d57d7074 100644
--- a/program/steps/addressbook/delete.inc
+++ b/program/steps/addressbook/delete.inc
@@ -5,7 +5,7 @@
| program/steps/addressbook/delete.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2009, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -30,8 +30,7 @@ $delcnt = 0;
$undo_time = $RCMAIL->config->get('undo_timeout', 0);
$RCMAIL->session->remove('contact_undo');
-foreach ($cids as $source => $cid)
-{
+foreach ($cids as $source => $cid) {
$CONTACTS = rcmail_contact_source($source);
if ($CONTACTS->readonly) {
@@ -51,8 +50,21 @@ foreach ($cids as $source => $cid)
$deleted = !$plugin['abort'] ? $CONTACTS->delete($cid, $undo_time < 1) : $plugin['result'];
if (!$deleted) {
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'contactdelerror', 'error');
- $OUTPUT->command('list_contacts');
+ if ($plugin['message']) {
+ $error = $plugin['message'];
+ }
+ else if (($error = $CONTACTS->get_error()) && $error['message']) {
+ $error = $error['message'];
+ }
+ else {
+ $error = 'contactdelerror';
+ }
+
+ $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC);
+ $group = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_GPC);
+
+ $OUTPUT->show_message($error, 'error');
+ $OUTPUT->command('list_contacts', $source, $group);
$OUTPUT->send();
}
else {
@@ -113,8 +125,8 @@ $OUTPUT->command('set_rowcount', rcmail_get_rowcount_text($result));
if (!empty($_SESSION['contact_undo'])) {
$_SESSION['contact_undo']['ts'] = time();
- $msg = html::span(null, rcube_label('contactdeleted'))
- . ' ' . html::a(array('onclick' => JS_OBJECT_NAME.".command('undo', '', this)"), rcube_label('undo'));
+ $msg = html::span(null, $RCMAIL->gettext('contactdeleted'))
+ . ' ' . html::a(array('onclick' => rcmail_output::JS_OBJECT_NAME.".command('undo', '', this)"), $RCMAIL->gettext('undo'));
$OUTPUT->show_message($msg, 'confirmation', null, true, $undo_time);
}
diff --git a/program/steps/addressbook/edit.inc b/program/steps/addressbook/edit.inc
index 7ddd3e516..3bbbfccdf 100644
--- a/program/steps/addressbook/edit.inc
+++ b/program/steps/addressbook/edit.inc
@@ -5,7 +5,7 @@
| program/steps/addressbook/edit.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2007, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -36,12 +36,12 @@ if ($RCMAIL->action == 'edit') {
// editing not allowed here
if ($CONTACTS->readonly || $record['readonly']) {
$OUTPUT->show_message('sourceisreadonly');
- rcmail_overwrite_action('show');
+ $RCMAIL->overwrite_action('show');
return;
}
}
else {
- $source = get_input_value('_source', RCUBE_INPUT_GPC);
+ $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC);
if (strlen($source)) {
$CONTACTS = $RCMAIL->get_address_book($source, true);
@@ -59,6 +59,25 @@ else {
$SOURCE_ID = $source;
rcmail_set_sourcename($CONTACTS);
+
+$OUTPUT->add_handlers(array(
+ 'contactedithead' => 'rcmail_contact_edithead',
+ 'contacteditform' => 'rcmail_contact_editform',
+ 'contactphoto' => 'rcmail_contact_photo',
+ 'photouploadform' => 'rcmail_upload_photo_form',
+ 'sourceselector' => 'rcmail_source_selector',
+ 'filedroparea' => 'rcmail_photo_drop_area',
+));
+
+if ($RCMAIL->action == 'add' && $OUTPUT->template_exists('contactadd')) {
+ $OUTPUT->send('contactadd');
+}
+
+// this will be executed if no template for addcontact exists
+$OUTPUT->send('contactedit');
+
+
+
function rcmail_get_edit_record()
{
global $RCMAIL, $CONTACTS;
@@ -70,7 +89,7 @@ function rcmail_get_edit_record()
else if ($RCMAIL->action != 'add'
&& !(($result = $CONTACTS->get_result()) && ($record = $result->first()))
) {
- $RCMAIL->output->show_message('contactnotfound');
+ $RCMAIL->output->show_message('contactnotfound', 'error');
return false;
}
@@ -125,7 +144,7 @@ function rcmail_contact_editform($attrib)
$form = array(
'contact' => array(
- 'name' => rcube_label('properties'),
+ 'name' => $RCMAIL->gettext('properties'),
'content' => array(
'email' => array('size' => $i_size, 'visible' => true),
'phone' => array('size' => $i_size, 'visible' => true),
@@ -135,7 +154,7 @@ function rcmail_contact_editform($attrib)
),
),
'personal' => array(
- 'name' => rcube_label('personalinfo'),
+ 'name' => $RCMAIL->gettext('personalinfo'),
'content' => array(
'gender' => array('visible' => true),
'maidenname' => array('size' => $i_size),
@@ -150,7 +169,7 @@ function rcmail_contact_editform($attrib)
if (isset($CONTACT_COLTYPES['notes'])) {
$form['notes'] = array(
- 'name' => rcube_label('notes'),
+ 'name' => $RCMAIL->gettext('notes'),
'content' => array(
'notes' => array('size' => $t_cols, 'rows' => $t_rows, 'label' => false, 'visible' => true, 'limit' => 1),
),
@@ -169,37 +188,56 @@ function rcmail_contact_editform($attrib)
function rcmail_upload_photo_form($attrib)
{
- global $OUTPUT;
-
- // set defaults
- $attrib += array('id' => 'rcmUploadform', 'buttons' => 'yes');
-
- // find max filesize value
- $max_filesize = parse_bytes(ini_get('upload_max_filesize'));
- $max_postsize = parse_bytes(ini_get('post_max_size'));
- if ($max_postsize && $max_postsize < $max_filesize)
- $max_filesize = $max_postsize;
- $max_filesize = show_bytes($max_filesize);
-
- $hidden = new html_hiddenfield(array('name' => '_cid', 'value' => $GLOBALS['cid']));
- $input = new html_inputfield(array('type' => 'file', 'name' => '_photo', 'size' => $attrib['size']));
- $button = new html_inputfield(array('type' => 'button'));
-
- $out = html::div($attrib,
- $OUTPUT->form_tag(array('id' => $attrib['id'].'Frm', 'name' => 'uploadform', 'method' => 'post', 'enctype' => 'multipart/form-data'),
- $hidden->show() .
- html::div(null, $input->show()) .
- html::div('hint', rcube_label(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize)))) .
- (get_boolean($attrib['buttons']) ? html::div('buttons',
- $button->show(rcube_label('close'), array('class' => 'button', 'onclick' => "$('#$attrib[id]').hide()")) . ' ' .
- $button->show(rcube_label('upload'), array('class' => 'button mainaction', 'onclick' => JS_OBJECT_NAME . ".command('upload-photo', this.form)"))
- ) : '')
- )
- );
-
- $OUTPUT->add_label('addphoto','replacephoto');
- $OUTPUT->add_gui_object('uploadform', $attrib['id'].'Frm');
- return $out;
+ global $RCMAIL, $OUTPUT;
+
+ // set defaults
+ $attrib += array('id' => 'rcmUploadform', 'buttons' => 'yes');
+
+ // find max filesize value
+ $max_filesize = parse_bytes(ini_get('upload_max_filesize'));
+ $max_postsize = parse_bytes(ini_get('post_max_size'));
+
+ if ($max_postsize && $max_postsize < $max_filesize) {
+ $max_filesize = $max_postsize;
+ }
+ $max_filesize = $RCMAIL->show_bytes($max_filesize);
+
+ $hidden = new html_hiddenfield(array('name' => '_cid', 'value' => $GLOBALS['cid']));
+ $input = new html_inputfield(array('type' => 'file', 'name' => '_photo', 'size' => $attrib['size']));
+ $button = new html_inputfield(array('type' => 'button'));
+
+ $content = $hidden->show() . html::div(null, $input->show())
+ . html::div('hint', $RCMAIL->gettext(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize))));
+
+ if (rcube_utils::get_boolean($attrib['buttons'])) {
+ $content .= html::div('buttons',
+ $button->show($RCMAIL->gettext('close'), array(
+ 'class' => 'button',
+ 'onclick' => "$('#$attrib[id]').hide()"
+ ))
+ . ' ' .
+ $button->show($RCMAIL->gettext('upload'), array(
+ 'class' => 'button mainaction',
+ 'onclick' => rcmail_output::JS_OBJECT_NAME . ".command('upload-photo', this.form)"
+ ))
+ );
+ }
+
+ $out = html::div($attrib,
+ $OUTPUT->form_tag(array(
+ 'id' => $attrib['id'] . 'Frm',
+ 'name' => 'uploadform',
+ 'method' => 'post',
+ 'enctype' => 'multipart/form-data'
+ ),
+ $content
+ )
+ );
+
+ $OUTPUT->add_label('addphoto','replacephoto');
+ $OUTPUT->add_gui_object('uploadform', $attrib['id'].'Frm');
+
+ return $out;
}
// similar function as in /steps/settings/edit_identity.inc
@@ -247,7 +285,7 @@ function rcmail_source_selector($attrib)
$attrib['name'] = '_source';
$attrib['is_escaped'] = true;
- $attrib['onchange'] = JS_OBJECT_NAME . ".command('save', 'reload', this.form)";
+ $attrib['onchange'] = rcmail_output::JS_OBJECT_NAME . ".command('save', 'reload', this.form)";
$select = new html_select($attrib);
@@ -270,19 +308,3 @@ function rcmail_photo_drop_area($attrib)
$OUTPUT->set_env('filedrop', array('action' => 'upload-photo', 'fieldname' => '_photo', 'single' => 1, 'filter' => '^image/.+'));
}
}
-
-
-$OUTPUT->add_handlers(array(
- 'contactedithead' => 'rcmail_contact_edithead',
- 'contacteditform' => 'rcmail_contact_editform',
- 'contactphoto' => 'rcmail_contact_photo',
- 'photouploadform' => 'rcmail_upload_photo_form',
- 'sourceselector' => 'rcmail_source_selector',
- 'filedroparea' => 'rcmail_photo_drop_area',
-));
-
-if ($RCMAIL->action == 'add' && $OUTPUT->template_exists('contactadd'))
- $OUTPUT->send('contactadd');
-
-// this will be executed if no template for addcontact exists
-$OUTPUT->send('contactedit');
diff --git a/program/steps/addressbook/export.inc b/program/steps/addressbook/export.inc
index 1e988feab..2b45e5cd1 100644
--- a/program/steps/addressbook/export.inc
+++ b/program/steps/addressbook/export.inc
@@ -6,7 +6,7 @@
| |
| This file is part of the Roundcube Webmail client |
| Copyright (C) 2008-2013, The Roundcube Dev Team |
- | Copyright (C) 2011, Kolab Systems AG |
+ | Copyright (C) 2011-2013, Kolab Systems AG |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -21,49 +21,8 @@
+-----------------------------------------------------------------------+
*/
-
-/**
- * Copy contact record properties into a vcard object
- */
-function prepare_for_export(&$record, $source = null)
-{
- $groups = $source && $source->groups && $source->export_groups ? $source->get_record_groups($record['ID']) : null;
-
- if (empty($record['vcard'])) {
- $vcard = new rcube_vcard();
- if ($source) {
- $vcard->extend_fieldmap($source->vcard_map);
- }
- $vcard->load($record['vcard']);
- $vcard->reset();
-
- foreach ($record as $key => $values) {
- list($field, $section) = explode(':', $key);
- foreach ((array)$values as $value) {
- if (is_array($value) || @strlen($value)) {
- $vcard->set($field, $value, strtoupper($section));
- }
- }
- }
-
- // append group names
- if ($groups) {
- $vcard->set('groups', join(',', $groups), null);
- }
-
- $record['vcard'] = $vcard->export(true);
- }
- // patch categories to alread existing vcard block
- else if ($record['vcard'] && !empty($groups) && !strpos($record['vcard'], 'CATEGORIES:')) {
- $vgroups = 'CATEGORIES:' . rcube_vcard::vcard_quote(join(',', $groups));
- $record['vcard'] = str_replace('END:VCARD', $vgroups . rcube_vcard::$eol . 'END:VCARD', $record['vcard']);
- }
-}
-
-
// Use search result
-if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search']]))
-{
+if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search']])) {
$sort_col = $RCMAIL->config->get('addressbook_sort_col', 'name');
$search = (array)$_SESSION['search'][$_REQUEST['_search']];
$records = array();
@@ -140,7 +99,7 @@ else {
}
// send downlaod headers
-header('Content-Type: text/x-vcard; charset='.RCMAIL_CHARSET);
+header('Content-Type: text/x-vcard; charset='.RCUBE_CHARSET);
header('Content-Disposition: attachment; filename="contacts.vcf"');
while ($result && ($row = $result->next())) {
@@ -153,3 +112,42 @@ while ($result && ($row = $result->next())) {
}
exit;
+
+
+/**
+ * Copy contact record properties into a vcard object
+ */
+function prepare_for_export(&$record, $source = null)
+{
+ $groups = $source && $source->groups && $source->export_groups ? $source->get_record_groups($record['ID']) : null;
+
+ if (empty($record['vcard'])) {
+ $vcard = new rcube_vcard();
+ if ($source) {
+ $vcard->extend_fieldmap($source->vcard_map);
+ }
+ $vcard->load($record['vcard']);
+ $vcard->reset();
+
+ foreach ($record as $key => $values) {
+ list($field, $section) = explode(':', $key);
+ foreach ((array)$values as $value) {
+ if (is_array($value) || @strlen($value)) {
+ $vcard->set($field, $value, strtoupper($section));
+ }
+ }
+ }
+
+ // append group names
+ if ($groups) {
+ $vcard->set('groups', join(',', $groups), null);
+ }
+
+ $record['vcard'] = $vcard->export(true);
+ }
+ // patch categories to alread existing vcard block
+ else if ($record['vcard'] && !empty($groups) && !strpos($record['vcard'], 'CATEGORIES:')) {
+ $vgroups = 'CATEGORIES:' . rcube_vcard::vcard_quote(join(',', $groups));
+ $record['vcard'] = str_replace('END:VCARD', $vgroups . rcube_vcard::$eol . 'END:VCARD', $record['vcard']);
+ }
+}
diff --git a/program/steps/addressbook/func.inc b/program/steps/addressbook/func.inc
index f94d15338..b33396baf 100644
--- a/program/steps/addressbook/func.inc
+++ b/program/steps/addressbook/func.inc
@@ -5,7 +5,7 @@
| program/steps/addressbook/func.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2012, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -23,37 +23,37 @@ $SEARCH_MODS_DEFAULT = array('name'=>1, 'firstname'=>1, 'surname'=>1, 'email'=>1
// general definition of contact coltypes
$CONTACT_COLTYPES = array(
- 'name' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('name'), 'category' => 'main'),
- 'firstname' => array('type' => 'text', 'size' => 19, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('firstname'), 'category' => 'main'),
- 'surname' => array('type' => 'text', 'size' => 19, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('surname'), 'category' => 'main'),
- 'email' => array('type' => 'text', 'size' => 40, 'maxlength' => 254, 'label' => rcube_label('email'), 'subtypes' => array('home','work','other'), 'category' => 'main'),
- 'middlename' => array('type' => 'text', 'size' => 19, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('middlename'), 'category' => 'main'),
- 'prefix' => array('type' => 'text', 'size' => 8, 'maxlength' => 20, 'limit' => 1, 'label' => rcube_label('nameprefix'), 'category' => 'main'),
- 'suffix' => array('type' => 'text', 'size' => 8, 'maxlength' => 20, 'limit' => 1, 'label' => rcube_label('namesuffix'), 'category' => 'main'),
- 'nickname' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('nickname'), 'category' => 'main'),
- 'jobtitle' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('jobtitle'), 'category' => 'main'),
- 'organization' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('organization'), 'category' => 'main'),
- 'department' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('department'), 'category' => 'main'),
- 'gender' => array('type' => 'select', 'limit' => 1, 'label' => rcube_label('gender'), 'options' => array('male' => rcube_label('male'), 'female' => rcube_label('female')), 'category' => 'personal'),
- 'maidenname' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('maidenname'), 'category' => 'personal'),
- 'phone' => array('type' => 'text', 'size' => 40, 'maxlength' => 20, 'label' => rcube_label('phone'), 'subtypes' => array('home','home2','work','work2','mobile','main','homefax','workfax','car','pager','video','assistant','other'), 'category' => 'main'),
- 'address' => array('type' => 'composite', 'label' => rcube_label('address'), 'subtypes' => array('home','work','other'), 'childs' => array(
- 'street' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => rcube_label('street'), 'category' => 'main'),
- 'locality' => array('type' => 'text', 'size' => 28, 'maxlength' => 50, 'label' => rcube_label('locality'), 'category' => 'main'),
- 'zipcode' => array('type' => 'text', 'size' => 8, 'maxlength' => 15, 'label' => rcube_label('zipcode'), 'category' => 'main'),
- 'region' => array('type' => 'text', 'size' => 12, 'maxlength' => 50, 'label' => rcube_label('region'), 'category' => 'main'),
- 'country' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => rcube_label('country'), 'category' => 'main'),
- ), 'category' => 'main'),
- 'birthday' => array('type' => 'date', 'size' => 12, 'maxlength' => 16, 'label' => rcube_label('birthday'), 'limit' => 1, 'render_func' => 'rcmail_format_date_col', 'category' => 'personal'),
- 'anniversary' => array('type' => 'date', 'size' => 12, 'maxlength' => 16, 'label' => rcube_label('anniversary'), 'limit' => 1, 'render_func' => 'rcmail_format_date_col', 'category' => 'personal'),
- 'website' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => rcube_label('website'), 'subtypes' => array('homepage','work','blog','profile','other'), 'category' => 'main'),
- 'im' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => rcube_label('instantmessenger'), 'subtypes' => array('aim','icq','msn','yahoo','jabber','skype','other'), 'category' => 'main'),
- 'notes' => array('type' => 'textarea', 'size' => 40, 'rows' => 15, 'maxlength' => 500, 'label' => rcube_label('notes'), 'limit' => 1),
- 'photo' => array('type' => 'image', 'limit' => 1, 'category' => 'main'),
- 'assistant' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('assistant'), 'category' => 'personal'),
- 'manager' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('manager'), 'category' => 'personal'),
- 'spouse' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => rcube_label('spouse'), 'category' => 'personal'),
- // TODO: define fields for vcards like GEO, KEY
+ 'name' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('name'), 'category' => 'main'),
+ 'firstname' => array('type' => 'text', 'size' => 19, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('firstname'), 'category' => 'main'),
+ 'surname' => array('type' => 'text', 'size' => 19, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('surname'), 'category' => 'main'),
+ 'email' => array('type' => 'text', 'size' => 40, 'maxlength' => 254, 'label' => $RCMAIL->gettext('email'), 'subtypes' => array('home','work','other'), 'category' => 'main'),
+ 'middlename' => array('type' => 'text', 'size' => 19, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('middlename'), 'category' => 'main'),
+ 'prefix' => array('type' => 'text', 'size' => 8, 'maxlength' => 20, 'limit' => 1, 'label' => $RCMAIL->gettext('nameprefix'), 'category' => 'main'),
+ 'suffix' => array('type' => 'text', 'size' => 8, 'maxlength' => 20, 'limit' => 1, 'label' => $RCMAIL->gettext('namesuffix'), 'category' => 'main'),
+ 'nickname' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('nickname'), 'category' => 'main'),
+ 'jobtitle' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('jobtitle'), 'category' => 'main'),
+ 'organization' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('organization'), 'category' => 'main'),
+ 'department' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('department'), 'category' => 'main'),
+ 'gender' => array('type' => 'select', 'limit' => 1, 'label' => $RCMAIL->gettext('gender'), 'options' => array('male' => $RCMAIL->gettext('male'), 'female' => $RCMAIL->gettext('female')), 'category' => 'personal'),
+ 'maidenname' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('maidenname'), 'category' => 'personal'),
+ 'phone' => array('type' => 'text', 'size' => 40, 'maxlength' => 20, 'label' => $RCMAIL->gettext('phone'), 'subtypes' => array('home','home2','work','work2','mobile','main','homefax','workfax','car','pager','video','assistant','other'), 'category' => 'main'),
+ 'address' => array('type' => 'composite', 'label' => $RCMAIL->gettext('address'), 'subtypes' => array('home','work','other'), 'childs' => array(
+ 'street' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => $RCMAIL->gettext('street'), 'category' => 'main'),
+ 'locality' => array('type' => 'text', 'size' => 28, 'maxlength' => 50, 'label' => $RCMAIL->gettext('locality'), 'category' => 'main'),
+ 'zipcode' => array('type' => 'text', 'size' => 8, 'maxlength' => 15, 'label' => $RCMAIL->gettext('zipcode'), 'category' => 'main'),
+ 'region' => array('type' => 'text', 'size' => 12, 'maxlength' => 50, 'label' => $RCMAIL->gettext('region'), 'category' => 'main'),
+ 'country' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => $RCMAIL->gettext('country'), 'category' => 'main'),
+ ), 'category' => 'main'),
+ 'birthday' => array('type' => 'date', 'size' => 12, 'maxlength' => 16, 'label' => $RCMAIL->gettext('birthday'), 'limit' => 1, 'render_func' => 'rcmail_format_date_col', 'category' => 'personal'),
+ 'anniversary' => array('type' => 'date', 'size' => 12, 'maxlength' => 16, 'label' => $RCMAIL->gettext('anniversary'), 'limit' => 1, 'render_func' => 'rcmail_format_date_col', 'category' => 'personal'),
+ 'website' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => $RCMAIL->gettext('website'), 'subtypes' => array('homepage','work','blog','profile','other'), 'category' => 'main'),
+ 'im' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'label' => $RCMAIL->gettext('instantmessenger'), 'subtypes' => array('aim','icq','msn','yahoo','jabber','skype','other'), 'category' => 'main'),
+ 'notes' => array('type' => 'textarea', 'size' => 40, 'rows' => 15, 'maxlength' => 500, 'label' => $RCMAIL->gettext('notes'), 'limit' => 1),
+ 'photo' => array('type' => 'image', 'limit' => 1, 'category' => 'main'),
+ 'assistant' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('assistant'), 'category' => 'personal'),
+ 'manager' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('manager'), 'category' => 'personal'),
+ 'spouse' => array('type' => 'text', 'size' => 40, 'maxlength' => 50, 'limit' => 1, 'label' => $RCMAIL->gettext('spouse'), 'category' => 'personal'),
+ // TODO: define fields for vcards like GEO, KEY
);
$PAGE_SIZE = $RCMAIL->config->get('addressbook_pagesize', $RCMAIL->config->get('pagesize', 50));
@@ -83,12 +83,12 @@ if (!$RCMAIL->action && !$OUTPUT->ajax_call) {
$OUTPUT->set_env('writable_source', $writeable);
$OUTPUT->set_env('compose_extwin', $RCMAIL->config->get('compose_extwin',false));
- $OUTPUT->set_pagetitle(rcube_label('addressbook'));
+ $OUTPUT->set_pagetitle($RCMAIL->gettext('addressbook'));
$_SESSION['addressbooks_count'] = $count;
$_SESSION['addressbooks_count_writeable'] = $writeable;
// select address book
- $source = get_input_value('_source', RCUBE_INPUT_GPC);
+ $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC);
// use first directory by default
if (!strlen($source) || !isset($js_list[$source])) {
@@ -109,13 +109,38 @@ if ($undo = $_SESSION['contact_undo']) {
$RCMAIL->session->remove('contact_undo');
}
+// register UI objects
+$OUTPUT->add_handlers(array(
+ 'directorylist' => 'rcmail_directory_list',
+// 'groupslist' => 'rcmail_contact_groups',
+ 'addresslist' => 'rcmail_contacts_list',
+ 'addresslisttitle' => 'rcmail_contacts_list_title',
+ 'addressframe' => 'rcmail_contact_frame',
+ 'recordscountdisplay' => 'rcmail_rowcount_display',
+ 'searchform' => array($OUTPUT, 'search_form')
+));
+
+// register action aliases
+$RCMAIL->register_action_map(array(
+ 'add' => 'edit.inc',
+ 'group-create' => 'groups.inc',
+ 'group-rename' => 'groups.inc',
+ 'group-delete' => 'groups.inc',
+ 'group-addmembers' => 'groups.inc',
+ 'group-delmembers' => 'groups.inc',
+ 'search-create' => 'search.inc',
+ 'search-delete' => 'search.inc',
+));
+
+
+
// instantiate a contacts object according to the given source
function rcmail_contact_source($source=null, $init_env=false, $writable=false)
{
global $RCMAIL, $OUTPUT, $CONTACT_COLTYPES, $PAGE_SIZE;
if (!strlen($source)) {
- $source = get_input_value('_source', RCUBE_INPUT_GPC);
+ $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC);
}
// Get object
@@ -129,7 +154,7 @@ function rcmail_contact_source($source=null, $init_env=false, $writable=false)
$CONTACTS->set_page(isset($_SESSION['page']) ? $_SESSION['page'] : 1);
if (!empty($_REQUEST['_gid']))
- $CONTACTS->set_group(get_input_value('_gid', RCUBE_INPUT_GPC));
+ $CONTACTS->set_group(rcube_utils::get_input_value('_gid', rcube_utils::INPUT_GPC));
if (!$init_env)
return $CONTACTS;
@@ -162,13 +187,13 @@ function rcmail_contact_source($source=null, $init_env=false, $writable=false)
function rcmail_set_sourcename($abook)
{
- global $OUTPUT;
+ global $OUTPUT, $RCMAIL;
// get address book name (for display)
if ($abook && $_SESSION['addressbooks_count'] > 1) {
$name = $abook->get_name();
if (!$name) {
- $name = rcube_label('personaladrbook');
+ $name = $RCMAIL->gettext('personaladrbook');
}
$OUTPUT->set_env('sourcename', html_entity_decode($name, ENT_COMPAT, 'UTF-8'));
}
@@ -189,17 +214,17 @@ function rcmail_directory_list($attrib)
'id' => 'rcmli%s', 'class' => '%s', 'noclose' => true),
html::a(array('href' => '%s',
'rel' => '%s',
- 'onclick' => "return ".JS_OBJECT_NAME.".command('list','%s',this)"), '%s'));
+ 'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('list','%s',this)"), '%s'));
$sources = (array) $OUTPUT->get_env('address_sources');
reset($sources);
// currently selected source
- $current = get_input_value('_source', RCUBE_INPUT_GPC);
+ $current = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC);
foreach ($sources as $j => $source) {
$id = strval(strlen($source['id']) ? $source['id'] : $j);
- $js_id = JQ($id);
+ $js_id = rcube::JQ($id);
// set class name(s)
$class_name = 'addressbook';
@@ -214,7 +239,7 @@ function rcmail_directory_list($attrib)
$out .= sprintf($line_templ,
rcube_utils::html_identifier($id, true),
$class_name,
- Q(rcmail_url(null, array('_source' => $id))),
+ rcube::Q($RCMAIL->url(array('_source' => $id))),
$source['id'],
$js_id, $name);
@@ -229,13 +254,13 @@ function rcmail_directory_list($attrib)
$line_templ = html::tag('li', array(
'id' => 'rcmli%s', 'class' => '%s'),
html::a(array('href' => '#', 'rel' => 'S%s',
- 'onclick' => "return ".JS_OBJECT_NAME.".command('listsearch', '%s', this)"), '%s'));
+ 'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('listsearch', '%s', this)"), '%s'));
// Saved searches
$sources = $RCMAIL->user->list_searches(rcube_user::SEARCH_ADDRESSBOOK);
foreach ($sources as $j => $source) {
$id = $source['id'];
- $js_id = JQ($id);
+ $js_id = rcube::JQ($id);
// set class name(s)
$class_name = 'contactsearch';
@@ -248,7 +273,7 @@ function rcmail_directory_list($attrib)
rcube_utils::html_identifier('S'.$id, true),
$class_name,
$id,
- $js_id, (!empty($source['name']) ? Q($source['name']) : Q($id)));
+ $js_id, (!empty($source['name']) ? rcube::Q($source['name']) : rcube::Q($id)));
}
$OUTPUT->set_env('contactgroups', $jsdata);
@@ -275,7 +300,7 @@ function rcmail_contact_groups($args)
'id' => 'rcmli%s', 'class' => 'contactgroup'),
html::a(array('href' => '#',
'rel' => '%s:%s',
- 'onclick' => "return ".JS_OBJECT_NAME.".command('listgroup',{'source':'%s','id':'%s'},this)"), '%s'));
+ 'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('listgroup',{'source':'%s','id':'%s'},this)"), '%s'));
// append collapse/expand toggle and open a new <ul>
$is_collapsed = strpos($RCMAIL->config->get('collapsed_abooks',''), '&'.rawurlencode($args['source']).'&') !== false;
@@ -285,7 +310,7 @@ function rcmail_contact_groups($args)
$groups_html .= sprintf($line_templ,
rcube_utils::html_identifier('G' . $args['source'] . $group['ID'], true),
$args['source'], $group['ID'],
- $args['source'], $group['ID'], Q($group['name'])
+ $args['source'], $group['ID'], rcube::Q($group['name'])
);
$args['jsdata']['G'.$args['source'].$group['ID']] = array(
'source' => $args['source'], 'id' => $group['ID'],
@@ -304,7 +329,7 @@ function rcmail_contact_groups($args)
// return the contacts list as HTML table
function rcmail_contacts_list($attrib)
{
- global $CONTACTS, $OUTPUT;
+ global $RCMAIL, $CONTACTS, $OUTPUT;
// define list of cols to be displayed
$a_show_cols = array('name','action');
@@ -314,7 +339,7 @@ function rcmail_contacts_list($attrib)
$attrib['id'] = 'rcmAddressList';
// create XHTML table
- $out = rcube_table_output($attrib, array(), $a_show_cols, $CONTACTS->primary_key);
+ $out = $RCMAIL->table_output($attrib, array(), $a_show_cols, $CONTACTS->primary_key);
// set client env
$OUTPUT->add_gui_object('contactslist', $attrib['id']);
@@ -330,7 +355,7 @@ function rcmail_contacts_list($attrib)
function rcmail_js_contacts_list($result, $prefix='')
{
- global $OUTPUT;
+ global $OUTPUT, $RCMAIL;
if (empty($result) || $result->count == 0)
return;
@@ -357,7 +382,7 @@ function rcmail_js_contacts_list($result, $prefix='')
$val = '';
switch ($col) {
case 'name':
- $val = Q(rcube_addressbook::compose_list_name($row));
+ $val = rcube::Q(rcube_addressbook::compose_list_name($row));
break;
case 'action':
@@ -365,8 +390,8 @@ function rcmail_js_contacts_list($result, $prefix='')
$val = html::a(array(
'href' => '#list',
'rel' => $row['ID'],
- 'title' => rcube_label('listgroup'),
- 'onclick' => sprintf("return %s.command('pushgroup',{'source':'%s','id':'%s'},this,event)", JS_OBJECT_NAME, $source_id, $row['CID']),
+ 'title' => $RCMAIL->gettext('listgroup'),
+ 'onclick' => sprintf("return %s.command('pushgroup',{'source':'%s','id':'%s'},this,event)", rcmail_output::JS_OBJECT_NAME, $source_id, $row['CID']),
), '&raquo;');
}
else
@@ -374,7 +399,7 @@ function rcmail_js_contacts_list($result, $prefix='')
break;
default:
- $val = Q($row[$col]);
+ $val = rcube::Q($row[$col]);
break;
}
@@ -391,7 +416,7 @@ function rcmail_js_contacts_list($result, $prefix='')
function rcmail_contacts_list_title($attrib)
{
- global $OUTPUT;
+ global $OUTPUT, $RCMAIL;
$attrib += array('label' => 'contacts', 'id' => 'rcmabooklisttitle', 'tag' => 'span');
unset($attrib['name']);
@@ -399,7 +424,7 @@ function rcmail_contacts_list_title($attrib)
$OUTPUT->add_gui_object('addresslist_title', $attrib['id']);
$OUTPUT->add_label('contacts');
- return html::tag($attrib['tag'], $attrib, rcube_label($attrib['label']), html::$common_attrib);
+ return html::tag($attrib['tag'], $attrib, $RCMAIL->gettext($attrib['label']), html::$common_attrib);
}
@@ -417,23 +442,23 @@ function rcmail_contact_frame($attrib)
function rcmail_rowcount_display($attrib)
{
- global $OUTPUT;
+ global $RCMAIL;
if (!$attrib['id'])
$attrib['id'] = 'rcmcountdisplay';
- $OUTPUT->add_gui_object('countdisplay', $attrib['id']);
+ $RCMAIL->output->add_gui_object('countdisplay', $attrib['id']);
if ($attrib['label'])
$_SESSION['contactcountdisplay'] = $attrib['label'];
- return html::span($attrib, rcube_label('loading'));
+ return html::span($attrib, $RCMAIL->gettext('loading'));
}
function rcmail_get_rowcount_text($result=null)
{
- global $CONTACTS, $PAGE_SIZE;
+ global $RCMAIL, $CONTACTS, $PAGE_SIZE;
// read nr of contacts
if (!$result) {
@@ -441,9 +466,9 @@ function rcmail_get_rowcount_text($result=null)
}
if ($result->count == 0)
- $out = rcube_label('nocontactsfound');
+ $out = $RCMAIL->gettext('nocontactsfound');
else
- $out = rcube_label(array(
+ $out = $RCMAIL->gettext(array(
'name' => $_SESSION['contactcountdisplay'] ? $_SESSION['contactcountdisplay'] : 'contactsfromto',
'vars' => array(
'from' => $result->first + 1,
@@ -457,13 +482,15 @@ function rcmail_get_rowcount_text($result=null)
function rcmail_get_type_label($type)
{
+ global $RCMAIL;
+
$label = 'type'.$type;
- if (rcube_label_exists($label, '*', $domain))
- return rcube_label($label, $domain);
+ if ($RCMAIL->text_exists($label, '*', $domain))
+ return $RCMAIL->gettext($label, $domain);
else if (preg_match('/\w+(\d+)$/', $label, $m)
&& ($label = preg_replace('/(\d+)$/', '', $label))
- && rcube_label_exists($label, '*', $domain))
- return rcube_label($label, $domain) . ' ' . $m[1];
+ && $RCMAIL->text_exists($label, '*', $domain))
+ return $RCMAIL->gettext($label, $domain) . ' ' . $m[1];
return ucfirst($type);
}
@@ -480,7 +507,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
$form = $plugin['form'];
$record = $plugin['record'];
$edit_mode = $RCMAIL->action != 'show';
- $del_button = $attrib['deleteicon'] ? html::img(array('src' => $RCMAIL->output->get_skin_file($attrib['deleteicon']), 'alt' => rcube_label('delete'))) : rcube_label('delete');
+ $del_button = $attrib['deleteicon'] ? html::img(array('src' => $RCMAIL->output->get_skin_file($attrib['deleteicon']), 'alt' => $RCMAIL->gettext('delete'))) : $RCMAIL->gettext('delete');
unset($attrib['deleteicon']);
$out = '';
@@ -507,7 +534,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
continue;
$select_add = new html_select(array('class' => 'addfieldmenu', 'rel' => $section));
- $select_add->add(rcube_label('addfield'), '');
+ $select_add->add($RCMAIL->gettext('addfield'), '');
// render head section with name fields (not a regular list of rows)
if ($section == 'head') {
@@ -539,7 +566,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
if ($RCMAIL->action == 'show') {
if (!empty($record[$col]))
- $fields .= html::span('namefield ' . $col, Q($record[$col])) . " ";
+ $fields .= html::span('namefield ' . $col, rcube::Q($record[$col])) . " ";
}
else {
$colprop = (array)$fieldset['content'][$col] + (array)$coltypes[$col];
@@ -548,7 +575,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
$colprop['style'] = 'display:none';
$select_add->add($colprop['label'], $col);
}
- $fields .= rcmail_get_edit_field($col, $record[$col], $colprop, $colprop['type']);
+ $fields .= rcube_output::get_edit_field($col, $record[$col], $colprop, $colprop['type']);
}
}
$content .= html::div($blockname, $fields);
@@ -557,7 +584,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
if ($edit_mode)
$content .= html::p('addfield', $select_add->show(null));
- $out .= html::tag('fieldset', $attrib, (!empty($fieldset['name']) ? html::tag('legend', null, Q($fieldset['name'])) : '') . $content) ."\n";
+ $out .= html::tag('fieldset', $attrib, (!empty($fieldset['name']) ? html::tag('legend', null, rcube::Q($fieldset['name'])) : '') . $content) ."\n";
continue;
}
@@ -575,7 +602,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
// merge colprop with global coltype configuration
$colprop += $coltypes[$field];
- $label = isset($colprop['label']) ? $colprop['label'] : rcube_label($col);
+ $label = isset($colprop['label']) ? $colprop['label'] : $RCMAIL->gettext($col);
// prepare subtype selector in edit mode
if ($edit_mode && is_array($colprop['subtypes'])) {
@@ -636,10 +663,10 @@ function rcmail_contact_form($form, $record, $attrib = null)
if ($edit_mode) {
if ($colprop['subtypes'] || $colprop['limit'] != 1) $cp['array'] = true;
- $composite['{'.$childcol.'}'] = rcmail_get_edit_field($childcol, $childvalue, $cp, $cp['type']) . " ";
+ $composite['{'.$childcol.'}'] = rcube_output::get_edit_field($childcol, $childvalue, $cp, $cp['type']) . " ";
}
else {
- $childval = $cp['render_func'] ? call_user_func($cp['render_func'], $childvalue, $childcol) : Q($childvalue);
+ $childval = $cp['render_func'] ? call_user_func($cp['render_func'], $childvalue, $childcol) : rcube::Q($childvalue);
$composite['{'.$childcol.'}'] = html::span('data ' . $childcol, $childval) . " ";
}
$j++;
@@ -666,7 +693,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
$val = rcmail_format_date_col($val);
}
- $val = rcmail_get_edit_field($col, $val, $colprop, $colprop['type']);
+ $val = rcube_output::get_edit_field($col, $val, $colprop, $colprop['type']);
$coltypes[$field]['count']++;
}
else if ($colprop['render_func'])
@@ -674,7 +701,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
else if (is_array($colprop['options']) && isset($colprop['options'][$val]))
$val = $colprop['options'][$val];
else
- $val = Q($val);
+ $val = rcube::Q($val);
// use subtype as label
if ($colprop['subtypes'])
@@ -682,12 +709,12 @@ function rcmail_contact_form($form, $record, $attrib = null)
// add delete button/link
if ($edit_mode && !($colprop['visible'] && $colprop['limit'] == 1))
- $val .= html::a(array('href' => '#del', 'class' => 'contactfieldbutton deletebutton', 'title' => rcube_label('delete'), 'rel' => $col), $del_button);
+ $val .= html::a(array('href' => '#del', 'class' => 'contactfieldbutton deletebutton', 'title' => $RCMAIL->gettext('delete'), 'rel' => $col), $del_button);
// display row with label
if ($label) {
$rows .= html::div('row',
- html::div('contactfieldlabel label', $select_subtype ? $select_subtype->show($subtype) : Q($label)) .
+ html::div('contactfieldlabel label', $select_subtype ? $select_subtype->show($subtype) : rcube::Q($label)) .
html::div('contactfieldcontent '.$colprop['type'], $val));
}
else // row without label
@@ -703,7 +730,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
// wrap rows in fieldgroup container
if ($rows) {
$content .= html::tag('fieldset', array('class' => 'contactfieldgroup ' . ($colprop['subtypes'] ? 'contactfieldgroupmulti ' : '') . 'contactcontroller' . $col, 'style' => ($rows ? null : 'display:none')),
- ($colprop['subtypes'] ? html::tag('legend', null, Q($colprop['label'])) : ' ') .
+ ($colprop['subtypes'] ? html::tag('legend', null, rcube::Q($colprop['label'])) : ' ') .
$rows);
}
}
@@ -722,7 +749,7 @@ function rcmail_contact_form($form, $record, $attrib = null)
}
if ($content)
- $out .= html::tag('fieldset', null, html::tag('legend', null, Q($fieldset['name'])) . $content) ."\n";
+ $out .= html::tag('fieldset', null, html::tag('legend', null, rcube::Q($fieldset['name'])) . $content) ."\n";
}
if ($edit_mode) {
@@ -792,7 +819,7 @@ function rcmail_contact_photo($attrib)
function rcmail_format_date_col($val)
{
global $RCMAIL;
- return format_date($val, $RCMAIL->config->get('date_format', 'Y-m-d'), false);
+ return $RCMAIL->format_date($val, $RCMAIL->config->get('date_format', 'Y-m-d'), false);
}
/**
@@ -855,8 +882,8 @@ function rcmail_get_cids($filter = null)
// forms. If _source is an empty string then the ID is a string
// containing contact ID and source name in form: <ID>-<SOURCE>
- $cid = get_input_value('_cid', RCUBE_INPUT_GPC);
- $source = (string) get_input_value('_source', RCUBE_INPUT_GPC);
+ $cid = rcube_utils::get_input_value('_cid', rcube_utils::INPUT_GPC);
+ $source = (string) rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC);
if (is_array($cid)) {
return $cid;
@@ -893,27 +920,3 @@ function rcmail_get_cids($filter = null)
return $filter !== null ? $result[$filter] : $result;
}
-
-
-// register UI objects
-$OUTPUT->add_handlers(array(
- 'directorylist' => 'rcmail_directory_list',
-// 'groupslist' => 'rcmail_contact_groups',
- 'addresslist' => 'rcmail_contacts_list',
- 'addresslisttitle' => 'rcmail_contacts_list_title',
- 'addressframe' => 'rcmail_contact_frame',
- 'recordscountdisplay' => 'rcmail_rowcount_display',
- 'searchform' => array($OUTPUT, 'search_form')
-));
-
-// register action aliases
-$RCMAIL->register_action_map(array(
- 'add' => 'edit.inc',
- 'group-create' => 'groups.inc',
- 'group-rename' => 'groups.inc',
- 'group-delete' => 'groups.inc',
- 'group-addmembers' => 'groups.inc',
- 'group-delmembers' => 'groups.inc',
- 'search-create' => 'search.inc',
- 'search-delete' => 'search.inc',
-));
diff --git a/program/steps/addressbook/groups.inc b/program/steps/addressbook/groups.inc
index 3b9288a2b..aef93f2c7 100644
--- a/program/steps/addressbook/groups.inc
+++ b/program/steps/addressbook/groups.inc
@@ -5,7 +5,7 @@
| program/steps/addressbook/groups.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2010, The Roundcube Dev Team |
+ | Copyright (C) 2010-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -19,117 +19,136 @@
+-----------------------------------------------------------------------+
*/
-$source = get_input_value('_source', RCUBE_INPUT_GPC);
+$source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC);
$CONTACTS = rcmail_contact_source($source);
if ($CONTACTS->readonly || !$CONTACTS->groups) {
- $OUTPUT->show_message('sourceisreadonly', 'warning');
- $OUTPUT->send();
+ $OUTPUT->show_message('sourceisreadonly', 'warning');
+ $OUTPUT->send();
}
if ($RCMAIL->action == 'group-addmembers') {
- if (($gid = get_input_value('_gid', RCUBE_INPUT_POST)) && ($ids = rcmail_get_cids($source))) {
- $plugin = $RCMAIL->plugins->exec_hook('group_addmembers', array('group_id' => $gid, 'ids' => $ids, 'source' => $source));
-
- $CONTACTS->set_group($gid);
- $num2add = count($plugin['ids']);
-
- if (!$plugin['abort']) {
- if (($maxnum = $RCMAIL->config->get('max_group_members', 0)) && ($CONTACTS->count()->count + $num2add > $maxnum)) {
- $OUTPUT->show_message('maxgroupmembersreached', 'warning', array('max' => $maxnum));
- $OUTPUT->send();
- }
- $result = $CONTACTS->add_to_group($gid, $plugin['ids']);
+ if (($gid = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_POST)) && ($ids = rcmail_get_cids($source))) {
+ $plugin = $RCMAIL->plugins->exec_hook('group_addmembers', array(
+ 'group_id' => $gid,
+ 'ids' => $ids,
+ 'source' => $source,
+ ));
+
+ $CONTACTS->set_group($gid);
+ $num2add = count($plugin['ids']);
+
+ if (!$plugin['abort']) {
+ if (($maxnum = $RCMAIL->config->get('max_group_members', 0)) && ($CONTACTS->count()->count + $num2add > $maxnum)) {
+ $OUTPUT->show_message('maxgroupmembersreached', 'warning', array('max' => $maxnum));
+ $OUTPUT->send();
+ }
+
+ $result = $CONTACTS->add_to_group($gid, $plugin['ids']);
+ }
+ else {
+ $result = $plugin['result'];
+ }
+
+ if ($result)
+ $OUTPUT->show_message('contactaddedtogroup');
+ else if ($plugin['abort'] || $CONTACTS->get_error())
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
+ else
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'nogroupassignmentschanged');
}
- else {
- $result = $plugin['result'];
- }
-
- if ($result)
- $OUTPUT->show_message('contactaddedtogroup');
- else if ($plugin['abort'] || $CONTACTS->get_error())
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
- else
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'nogroupassignmentschanged');
- }
}
-
else if ($RCMAIL->action == 'group-delmembers') {
- if (($gid = get_input_value('_gid', RCUBE_INPUT_POST)) && ($ids = rcmail_get_cids($source))) {
- $plugin = $RCMAIL->plugins->exec_hook('group_delmembers', array('group_id' => $gid, 'ids' => $ids, 'source' => $source));
+ if (($gid = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_POST)) && ($ids = rcmail_get_cids($source))) {
+ $plugin = $RCMAIL->plugins->exec_hook('group_delmembers', array(
+ 'group_id' => $gid,
+ 'ids' => $ids,
+ 'source' => $source,
+ ));
+
+ if (!$plugin['abort'])
+ $result = $CONTACTS->remove_from_group($gid, $plugin['ids']);
+ else
+ $result = $plugin['result'];
+
+ if ($result) {
+ $OUTPUT->show_message('contactremovedfromgroup');
+ $OUTPUT->command('remove_group_contacts',array('source' => $source, 'gid' => $gid));
+ }
+ else {
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
+ }
+ }
+}
+else if ($RCMAIL->action == 'group-create') {
+ if ($name = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true))) {
+ $plugin = $RCMAIL->plugins->exec_hook('group_create', array(
+ 'name' => $name,
+ 'source' => $source,
+ ));
+
+ if (!$plugin['abort'])
+ $created = $CONTACTS->create_group($plugin['name']);
+ else
+ $created = $plugin['result'];
+ }
- if (!$plugin['abort'])
- $result = $CONTACTS->remove_from_group($gid, $plugin['ids']);
- else
- $result = $plugin['result'];
+ if ($created && $OUTPUT->ajax_call) {
+ $created['name'] = rcube::Q($created['name']);
- if ($result) {
- $OUTPUT->show_message('contactremovedfromgroup');
- $OUTPUT->command('remove_group_contacts',array('source' => $source, 'gid' => $gid));
+ $OUTPUT->show_message('groupcreated', 'confirmation');
+ $OUTPUT->command('insert_contact_group', array('source' => $source) + $created);
}
- else {
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
+ else if (!$created) {
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
}
- }
-}
-
-else if ($RCMAIL->action == 'group-create') {
- if ($name = trim(get_input_value('_name', RCUBE_INPUT_POST, true))) {
- $plugin = $RCMAIL->plugins->exec_hook('group_create', array('name' => $name, 'source' => $source));
-
- if (!$plugin['abort'])
- $created = $CONTACTS->create_group($plugin['name']);
- else
- $created = $plugin['result'];
- }
-
- if ($created && $OUTPUT->ajax_call) {
- $created['name'] = Q($created['name']);
- $OUTPUT->show_message('groupcreated', 'confirmation');
- $OUTPUT->command('insert_contact_group', array('source' => $source) + $created);
- }
- else if (!$created) {
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
- }
}
-
else if ($RCMAIL->action == 'group-rename') {
- if (($gid = get_input_value('_gid', RCUBE_INPUT_POST)) && ($name = trim(get_input_value('_name', RCUBE_INPUT_POST, true)))) {
- $plugin = $RCMAIL->plugins->exec_hook('group_rename', array('group_id' => $gid, 'name' => $name, 'source' => $source));
-
- if (!$plugin['abort'])
- $newname = $CONTACTS->rename_group($gid, $plugin['name'], $newgid);
- else
- $newname = $plugin['result'];
- }
-
- if ($newname && $OUTPUT->ajax_call) {
- $OUTPUT->show_message('grouprenamed', 'confirmation');
- $OUTPUT->command('update_contact_group', array(
- 'source' => $source, 'id' => $gid, 'name' => Q($newname), 'newid' => $newgid));
- }
- else if (!$newname)
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
-}
+ if (($gid = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_POST))
+ && ($name = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true)))
+ ) {
+ $plugin = $RCMAIL->plugins->exec_hook('group_rename', array(
+ 'group_id' => $gid,
+ 'name' => $name,
+ 'source' => $source,
+ ));
+
+ if (!$plugin['abort'])
+ $newname = $CONTACTS->rename_group($gid, $plugin['name'], $newgid);
+ else
+ $newname = $plugin['result'];
+ }
+ if ($newname && $OUTPUT->ajax_call) {
+ $OUTPUT->show_message('grouprenamed', 'confirmation');
+ $OUTPUT->command('update_contact_group', array(
+ 'source' => $source, 'id' => $gid, 'name' => rcube::Q($newname), 'newid' => $newgid));
+ }
+ else if (!$newname) {
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
+ }
+}
else if ($RCMAIL->action == 'group-delete') {
- if ($gid = get_input_value('_gid', RCUBE_INPUT_POST)) {
- $plugin = $RCMAIL->plugins->exec_hook('group_delete', array('group_id' => $gid, 'source' => $source));
-
- if (!$plugin['abort'])
- $deleted = $CONTACTS->delete_group($gid);
- else
- $deleted = $plugin['result'];
- }
-
- if ($deleted) {
- $OUTPUT->show_message('groupdeleted', 'confirmation');
- $OUTPUT->command('remove_group_item', array('source' => $source, 'id' => $gid));
- }
- else
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
+ if ($gid = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_POST)) {
+ $plugin = $RCMAIL->plugins->exec_hook('group_delete', array(
+ 'group_id' => $gid,
+ 'source' => $source,
+ ));
+
+ if (!$plugin['abort'])
+ $deleted = $CONTACTS->delete_group($gid);
+ else
+ $deleted = $plugin['result'];
+ }
+
+ if ($deleted) {
+ $OUTPUT->show_message('groupdeleted', 'confirmation');
+ $OUTPUT->command('remove_group_item', array('source' => $source, 'id' => $gid));
+ }
+ else {
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
+ }
}
// send response
$OUTPUT->send();
-
diff --git a/program/steps/addressbook/import.inc b/program/steps/addressbook/import.inc
index 60f5d7b61..33e473242 100644
--- a/program/steps/addressbook/import.inc
+++ b/program/steps/addressbook/import.inc
@@ -5,7 +5,7 @@
| program/steps/addressbook/import.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2008-2009, The Roundcube Dev Team |
+ | Copyright (C) 2008-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -20,169 +20,14 @@
+-----------------------------------------------------------------------+
*/
-/**
- * Handler function to display the import/upload form
- */
-function rcmail_import_form($attrib)
-{
- global $RCMAIL, $OUTPUT;
- $target = get_input_value('_target', RCUBE_INPUT_GPC);
-
- $attrib += array('id' => "rcmImportForm");
-
- $writable_books = $RCMAIL->get_address_sources(true, true);
-
- $upload = new html_inputfield(array(
- 'type' => 'file',
- 'name' => '_file[]',
- 'id' => 'rcmimportfile',
- 'size' => 40,
- 'multiple' => 'multiple',
- ));
- $form = html::p(null, html::label('rcmimportfile', rcube_label('importfromfile')) . $upload->show());
- $table = new html_table(array('cols' => 2));
-
- // addressbook selector
- if (count($writable_books) > 1) {
- $select = new html_select(array('name' => '_target', 'id' => 'rcmimporttarget', 'is_escaped' => true));
-
- foreach ($writable_books as $book)
- $select->add($book['name'], $book['id']);
-
- $table->add('title', html::label('rcmimporttarget', rcube_label('importtarget')));
- $table->add(null, $select->show($target));
- }
- else {
- $abook = new html_hiddenfield(array('name' => '_target', 'value' => key($writable_books)));
- $form .= $abook->show();
- }
-
- // selector for group import options
- if (count($writable_books) >= 1 || $writable_books[0]->groups) {
- $select = new html_select(array('name' => '_groups', 'id' => 'rcmimportgroups', 'is_escaped' => true));
- $select->add(rcube_label('none'), '0');
- $select->add(rcube_label('importgroupsall'), '1');
- $select->add(rcube_label('importgroupsexisting'), '2');
-
- $table->add('title', html::label('rcmimportgroups', rcube_label('importgroups')));
- $table->add(null, $select->show(get_input_value('_groups', RCUBE_INPUT_GPC)));
- }
-
- // checkbox to replace the entire address book
- $check_replace = new html_checkbox(array('name' => '_replace', 'value' => 1, 'id' => 'rcmimportreplace'));
- $table->add('title', html::label('rcmimportreplace', rcube_label('importreplace')));
- $table->add(null, $check_replace->show(get_input_value('_replace', RCUBE_INPUT_GPC)));
-
- $form .= $table->show(array('id' => null) + $attrib);
-
- $OUTPUT->set_env('writable_source', !empty($writable_books));
- $OUTPUT->add_label('selectimportfile','importwait');
- $OUTPUT->add_gui_object('importform', $attrib['id']);
-
- $out = html::p(null, Q(rcube_label('importdesc'), 'show'));
-
- $out .= $OUTPUT->form_tag(array(
- 'action' => $RCMAIL->url('import'),
- 'method' => 'post',
- 'enctype' => 'multipart/form-data') + $attrib,
- $form);
-
- return $out;
-}
-
-
-/**
- * Render the confirmation page for the import process
- */
-function rcmail_import_confirm($attrib)
-{
- global $IMPORT_STATS;
-
- $vars = get_object_vars($IMPORT_STATS);
- $vars['names'] = $vars['skipped_names'] = '';
-
- $content = html::p(null, rcube_label(array(
- 'name' => 'importconfirm',
- 'nr' => $IMPORT_STATS->inserted,
- 'vars' => $vars,
- )) . ($IMPORT_STATS->names ? ':' : '.'));
-
- if ($IMPORT_STATS->names)
- $content .= html::p('em', join(', ', array_map('Q', $IMPORT_STATS->names)));
-
- if ($IMPORT_STATS->skipped) {
- $content .= html::p(null, rcube_label(array(
- 'name' => 'importconfirmskipped',
- 'nr' => $IMPORT_STATS->skipped,
- 'vars' => $vars,
- )) . ':');
- $content .= html::p('em', join(', ', array_map('Q', $IMPORT_STATS->skipped_names)));
- }
-
- return html::div($attrib, $content);
-}
-
-
-/**
- * Create navigation buttons for the current import step
- */
-function rcmail_import_buttons($attrib)
-{
- global $IMPORT_STATS, $OUTPUT;
- $target = get_input_value('_target', RCUBE_INPUT_GPC);
-
- $attrib += array('type' => 'input');
- unset($attrib['name']);
-
- if (is_object($IMPORT_STATS)) {
- $attrib['class'] = trim($attrib['class'] . ' mainaction');
- $out = $OUTPUT->button(array('command' => 'list', 'prop' => $target, 'label' => 'done') + $attrib);
- }
- else {
- $out = $OUTPUT->button(array('command' => 'list', 'label' => 'cancel') + $attrib);
- $out .= '&nbsp;';
- $attrib['class'] = trim($attrib['class'] . ' mainaction');
- $out .= $OUTPUT->button(array('command' => 'import', 'label' => 'import') + $attrib);
- }
-
- return $out;
-}
-
-
-/**
- * Returns the matching group id. If group doesn't exist, it'll be created if allowed.
- */
-function rcmail_import_group_id($group_name, $CONTACTS, $create, &$import_groups)
-{
- $group_id = 0;
- foreach ($import_groups as $key => $group) {
- if (strtolower($group['name']) == strtolower($group_name)) {
- $group_id = $group['ID'];
- break;
- }
- }
-
- // create a new group
- if (!$group_id && $create) {
- $new_group = $CONTACTS->create_group($group_name);
- if (!$new_group['ID'])
- $new_group['ID'] = $new_group['id'];
- $import_groups[] = $new_group;
- $group_id = $new_group['ID'];
- }
-
- return $group_id;
-}
-
-
/** The import process **/
$importstep = 'rcmail_import_form';
if (is_array($_FILES['_file'])) {
- $replace = (bool)get_input_value('_replace', RCUBE_INPUT_GPC);
- $target = get_input_value('_target', RCUBE_INPUT_GPC);
- $with_groups = intval(get_input_value('_groups', RCUBE_INPUT_GPC));
+ $replace = (bool)rcube_utils::get_input_value('_replace', rcube_utils::INPUT_GPC);
+ $target = rcube_utils::get_input_value('_target', rcube_utils::INPUT_GPC);
+ $with_groups = intval(rcube_utils::get_input_value('_groups', rcube_utils::INPUT_GPC));
$vcards = array();
$upload_error = null;
@@ -232,7 +77,8 @@ if (is_array($_FILES['_file'])) {
// no vcards detected
if (!count($vcards)) {
if ($upload_error == UPLOAD_ERR_INI_SIZE || $err == UPLOAD_ERR_FORM_SIZE) {
- $OUTPUT->show_message('filesizeerror', 'error', array('size' => show_bytes(parse_bytes(ini_get('upload_max_filesize')))));
+ $size = $RCMAIL->show_bytes(parse_bytes(ini_get('upload_max_filesize')));
+ $OUTPUT->show_message('filesizeerror', 'error', array('size' => $size));
}
else if ($upload_error) {
$OUTPUT->show_message('fileuploaderror', 'error');
@@ -249,7 +95,7 @@ if (is_array($_FILES['_file'])) {
$IMPORT_STATS->inserted = $IMPORT_STATS->skipped = $IMPORT_STATS->invalid = $IMPORT_STATS->errors = 0;
if ($replace) {
- $CONTACTS->delete_all();
+ $CONTACTS->delete_all($CONTACTS->groups && $with_groups < 2);
}
if ($with_groups) {
@@ -276,7 +122,7 @@ if (is_array($_FILES['_file'])) {
// We're using UTF8 internally
$email = $vcard->email[0];
- $email = rcube_idn_to_utf8($email);
+ $email = rcube_utils::idn_to_utf8($email);
if (!$replace) {
$existing = null;
@@ -330,12 +176,168 @@ if (is_array($_FILES['_file'])) {
}
-$OUTPUT->set_pagetitle(rcube_label('importcontacts'));
+$OUTPUT->set_pagetitle($RCMAIL->gettext('importcontacts'));
$OUTPUT->add_handlers(array(
- 'importstep' => $importstep,
- 'importnav' => 'rcmail_import_buttons',
+ 'importstep' => $importstep,
+ 'importnav' => 'rcmail_import_buttons',
));
// render page
$OUTPUT->send('importcontacts');
+
+
+
+/**
+ * Handler function to display the import/upload form
+ */
+function rcmail_import_form($attrib)
+{
+ global $RCMAIL, $OUTPUT;
+
+ $target = rcube_utils::get_input_value('_target', rcube_utils::INPUT_GPC);
+
+ $attrib += array('id' => "rcmImportForm");
+
+ $writable_books = $RCMAIL->get_address_sources(true, true);
+
+ $upload = new html_inputfield(array(
+ 'type' => 'file',
+ 'name' => '_file[]',
+ 'id' => 'rcmimportfile',
+ 'size' => 40,
+ 'multiple' => 'multiple',
+ ));
+ $form = html::p(null, html::label('rcmimportfile', $RCMAIL->gettext('importfromfile')) . $upload->show());
+ $table = new html_table(array('cols' => 2));
+
+ // addressbook selector
+ if (count($writable_books) > 1) {
+ $select = new html_select(array('name' => '_target', 'id' => 'rcmimporttarget', 'is_escaped' => true));
+
+ foreach ($writable_books as $book) {
+ $select->add($book['name'], $book['id']);
+ }
+
+ $table->add('title', html::label('rcmimporttarget', $RCMAIL->gettext('importtarget')));
+ $table->add(null, $select->show($target));
+ }
+ else {
+ $abook = new html_hiddenfield(array('name' => '_target', 'value' => key($writable_books)));
+ $form .= $abook->show();
+ }
+
+ // selector for group import options
+ if (count($writable_books) >= 1 || $writable_books[0]->groups) {
+ $select = new html_select(array('name' => '_groups', 'id' => 'rcmimportgroups', 'is_escaped' => true));
+ $select->add($RCMAIL->gettext('none'), '0');
+ $select->add($RCMAIL->gettext('importgroupsall'), '1');
+ $select->add($RCMAIL->gettext('importgroupsexisting'), '2');
+
+ $table->add('title', html::label('rcmimportgroups', $RCMAIL->gettext('importgroups')));
+ $table->add(null, $select->show(rcube_utils::get_input_value('_groups', rcube_utils::INPUT_GPC)));
+ }
+
+ // checkbox to replace the entire address book
+ $check_replace = new html_checkbox(array('name' => '_replace', 'value' => 1, 'id' => 'rcmimportreplace'));
+ $table->add('title', html::label('rcmimportreplace', $RCMAIL->gettext('importreplace')));
+ $table->add(null, $check_replace->show(rcube_utils::get_input_value('_replace', rcube_utils::INPUT_GPC)));
+
+ $form .= $table->show(array('id' => null) + $attrib);
+
+ $OUTPUT->set_env('writable_source', !empty($writable_books));
+ $OUTPUT->add_label('selectimportfile','importwait');
+ $OUTPUT->add_gui_object('importform', $attrib['id']);
+
+ $out = html::p(null, rcube::Q($RCMAIL->gettext('importdesc'), 'show'))
+ . $OUTPUT->form_tag(array(
+ 'action' => $RCMAIL->url('import'),
+ 'method' => 'post',
+ 'enctype' => 'multipart/form-data') + $attrib,
+ $form);
+
+ return $out;
+}
+
+/**
+ * Render the confirmation page for the import process
+ */
+function rcmail_import_confirm($attrib)
+{
+ global $IMPORT_STATS, $RCMAIL;
+
+ $vars = get_object_vars($IMPORT_STATS);
+ $vars['names'] = $vars['skipped_names'] = '';
+
+ $content = html::p(null, $RCMAIL->gettext(array(
+ 'name' => 'importconfirm',
+ 'nr' => $IMPORT_STATS->inserted,
+ 'vars' => $vars,
+ )) . ($IMPORT_STATS->names ? ':' : '.'));
+
+ if ($IMPORT_STATS->names) {
+ $content .= html::p('em', join(', ', array_map('Q', $IMPORT_STATS->names)));
+ }
+
+ if ($IMPORT_STATS->skipped) {
+ $content .= html::p(null, $RCMAIL->gettext(array(
+ 'name' => 'importconfirmskipped',
+ 'nr' => $IMPORT_STATS->skipped,
+ 'vars' => $vars,
+ )) . ':')
+ . html::p('em', join(', ', array_map('Q', $IMPORT_STATS->skipped_names)));
+ }
+
+ return html::div($attrib, $content);
+}
+
+/**
+ * Create navigation buttons for the current import step
+ */
+function rcmail_import_buttons($attrib)
+{
+ global $IMPORT_STATS, $OUTPUT;
+
+ $target = rcube_utils::get_input_value('_target', rcube_utils::INPUT_GPC);
+
+ $attrib += array('type' => 'input');
+ unset($attrib['name']);
+
+ if (is_object($IMPORT_STATS)) {
+ $attrib['class'] = trim($attrib['class'] . ' mainaction');
+ $out = $OUTPUT->button(array('command' => 'list', 'prop' => $target, 'label' => 'done') + $attrib);
+ }
+ else {
+ $out = $OUTPUT->button(array('command' => 'list', 'label' => 'cancel') + $attrib);
+ $out .= '&nbsp;';
+ $attrib['class'] = trim($attrib['class'] . ' mainaction');
+ $out .= $OUTPUT->button(array('command' => 'import', 'label' => 'import') + $attrib);
+ }
+
+ return $out;
+}
+
+/**
+ * Returns the matching group id. If group doesn't exist, it'll be created if allowed.
+ */
+function rcmail_import_group_id($group_name, $CONTACTS, $create, &$import_groups)
+{
+ $group_id = 0;
+ foreach ($import_groups as $key => $group) {
+ if (strtolower($group['name']) == strtolower($group_name)) {
+ $group_id = $group['ID'];
+ break;
+ }
+ }
+
+ // create a new group
+ if (!$group_id && $create) {
+ $new_group = $CONTACTS->create_group($group_name);
+ if (!$new_group['ID'])
+ $new_group['ID'] = $new_group['id'];
+ $import_groups[] = $new_group;
+ $group_id = $new_group['ID'];
+ }
+
+ return $group_id;
+}
diff --git a/program/steps/addressbook/mailto.inc b/program/steps/addressbook/mailto.inc
index c3cbcadca..f5ff20bc0 100644
--- a/program/steps/addressbook/mailto.inc
+++ b/program/steps/addressbook/mailto.inc
@@ -5,7 +5,7 @@
| program/steps/addressbook/mailto.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2007, The Roundcube Dev Team |
+ | Copyright (C) 2007-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -19,30 +19,27 @@
+-----------------------------------------------------------------------+
*/
-$cids = rcmail_get_cids();
-$mailto = array();
+$cids = rcmail_get_cids();
+$mailto = array();
$recipients = null;
-foreach ($cids as $source => $cid)
-{
+foreach ($cids as $source => $cid) {
$CONTACTS = $RCMAIL->get_address_book($source);
- if ($CONTACTS->ready)
- {
+ if ($CONTACTS->ready) {
$CONTACTS->set_page(1);
$CONTACTS->set_pagesize(count($cid) + 2); // +2 to skip counting query
$recipients = $CONTACTS->search($CONTACTS->primary_key, $cid, 0, true, true, 'email');
}
}
-if (!empty($_REQUEST['_gid']) && isset($_REQUEST['_source']))
-{
- $source = get_input_value('_source', RCUBE_INPUT_GPC);
+if (!empty($_REQUEST['_gid']) && isset($_REQUEST['_source'])) {
+ $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC);
$CONTACTS = $RCMAIL->get_address_book($source);
-
- $group_id = get_input_value('_gid', RCUBE_INPUT_GPC);
+
+ $group_id = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_GPC);
$group_data = $CONTACTS->get_group($group_id);
-
+
// group has an email address assigned: use that
if ($group_data['email']) {
$mailto[] = format_email_recipient($group_data['email'][0], $group_data['name']);
@@ -55,16 +52,14 @@ if (!empty($_REQUEST['_gid']) && isset($_REQUEST['_source']))
}
}
-if ($recipients)
-{
+if ($recipients) {
while (is_object($recipients) && ($rec = $recipients->iterate())) {
$emails = $CONTACTS->get_col_values('email', $rec, true);
$mailto[] = format_email_recipient($emails[0], $rec['name']);
}
}
-if (!empty($mailto))
-{
+if (!empty($mailto)) {
$mailto_str = join(', ', $mailto);
$mailto_id = substr(md5($mailto_str), 0, 16);
$_SESSION['mailto'][$mailto_id] = urlencode($mailto_str);
diff --git a/program/steps/addressbook/move.inc b/program/steps/addressbook/move.inc
index f8204e9ee..6a70e7bda 100644
--- a/program/steps/addressbook/move.inc
+++ b/program/steps/addressbook/move.inc
@@ -25,8 +25,8 @@ if (!$OUTPUT->ajax_call) {
}
$cids = rcmail_get_cids();
-$target = get_input_value('_to', RCUBE_INPUT_POST);
-$target_group = get_input_value('_togid', RCUBE_INPUT_POST);
+$target = rcube_utils::get_input_value('_to', rcube_utils::INPUT_POST);
+$target_group = rcube_utils::get_input_value('_togid', rcube_utils::INPUT_POST);
$all = 0;
$deleted = 0;
diff --git a/program/steps/addressbook/photo.inc b/program/steps/addressbook/photo.inc
index 658027de4..482185735 100644
--- a/program/steps/addressbook/photo.inc
+++ b/program/steps/addressbook/photo.inc
@@ -26,7 +26,7 @@ $source = key($cids);
$cid = $cids ? array_shift($cids[$source]) : null;
// read the referenced file
-if (($file_id = get_input_value('_photo', RCUBE_INPUT_GPC)) && ($tempfile = $_SESSION['contacts']['files'][$file_id])) {
+if (($file_id = rcube_utils::get_input_value('_photo', rcube_utils::INPUT_GPC)) && ($tempfile = $_SESSION['contacts']['files'][$file_id])) {
$tempfile = $RCMAIL->plugins->exec_hook('attachment_display', $tempfile);
if ($tempfile['status']) {
if ($tempfile['data'])
@@ -37,7 +37,7 @@ if (($file_id = get_input_value('_photo', RCUBE_INPUT_GPC)) && ($tempfile = $_SE
}
else {
// by email, search for contact first
- if ($email = get_input_value('_email', RCUBE_INPUT_GPC)) {
+ if ($email = rcube_utils::get_input_value('_email', rcube_utils::INPUT_GPC)) {
foreach ($RCMAIL->get_address_sources() as $s) {
$abook = $RCMAIL->get_address_book($s['id']);
$result = $abook->search(array('email'), $email, 1, true, true, 'photo');
@@ -77,7 +77,7 @@ else {
}
// deliver alt image
-if (!$data && ($alt_img = get_input_value('_alt', RCUBE_INPUT_GPC)) && is_file($alt_img)) {
+if (!$data && ($alt_img = rcube_utils::get_input_value('_alt', rcube_utils::INPUT_GPC)) && is_file($alt_img)) {
$data = file_get_contents($alt_img);
}
@@ -86,6 +86,6 @@ if (!$cid && $email) {
$RCMAIL->output->future_expire_header(86400);
}
-header('Content-Type: ' . rc_image_content_type($data));
+header('Content-Type: ' . rcube_mime::image_content_type($data));
echo $data ? $data : file_get_contents('program/resources/blank.gif');
exit;
diff --git a/program/steps/addressbook/save.inc b/program/steps/addressbook/save.inc
index 2adc53bcf..94556f96b 100644
--- a/program/steps/addressbook/save.inc
+++ b/program/steps/addressbook/save.inc
@@ -5,7 +5,7 @@
| program/steps/addressbook/save.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2011, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -19,80 +19,87 @@
+-----------------------------------------------------------------------+
*/
-$CONTACTS = rcmail_contact_source(null, true, true);
-$cid = get_input_value('_cid', RCUBE_INPUT_POST);
+$CONTACTS = rcmail_contact_source(null, true, true);
+$cid = rcube_utils::get_input_value('_cid', rcube_utils::INPUT_POST);
$return_action = empty($cid) ? 'add' : 'edit';
// Source changed, display the form again
if (!empty($_GET['_reload'])) {
- rcmail_overwrite_action($return_action);
- return;
+ $RCMAIL->overwrite_action($return_action);
+ return;
}
// cannot edit record
if ($CONTACTS->readonly) {
- $OUTPUT->show_message('contactreadonly', 'error');
- rcmail_overwrite_action($return_action);
- return;
+ $OUTPUT->show_message('contactreadonly', 'error');
+ $RCMAIL->overwrite_action($return_action);
+ return;
}
// read POST values into hash array
$a_record = array();
foreach ($GLOBALS['CONTACT_COLTYPES'] as $col => $colprop) {
- $fname = '_'.$col;
- if ($colprop['composite'])
- continue;
- // gather form data of composite fields
- if ($colprop['childs']) {
- $values = array();
- foreach ($colprop['childs'] as $childcol => $cp) {
- $vals = get_input_value('_'.$childcol, RCUBE_INPUT_POST, true);
- foreach ((array)$vals as $i => $val)
- $values[$i][$childcol] = $val;
+ if ($colprop['composite']) {
+ continue;
}
- $subtypes = isset($_REQUEST['_subtype_' . $col]) ? (array)get_input_value('_subtype_' . $col, RCUBE_INPUT_POST) : array('');
- foreach ($subtypes as $i => $subtype) {
- $suffix = $subtype ? ':'.$subtype : '';
- if ($values[$i])
- $a_record[$col.$suffix][] = $values[$i];
- }
- }
- // assign values and subtypes
- else if (is_array($_POST[$fname])) {
- $values = get_input_value($fname, RCUBE_INPUT_POST, true);
- $subtypes = get_input_value('_subtype_' . $col, RCUBE_INPUT_POST);
-
- foreach ($values as $i => $val) {
- if ($col == 'email') {
- // extract email from full address specification, e.g. "Name" <addr@domain.tld>
- $addr = rcube_mime::decode_address_list($val, 1, false);
- if (!empty($addr) && ($addr = array_pop($addr)) && $addr['mailto']) {
- $val = $addr['mailto'];
+
+ $fname = '_'.$col;
+
+ // gather form data of composite fields
+ if ($colprop['childs']) {
+ $values = array();
+ foreach ($colprop['childs'] as $childcol => $cp) {
+ $vals = rcube_utils::get_input_value('_'.$childcol, rcube_utils::INPUT_POST, true);
+ foreach ((array)$vals as $i => $val) {
+ $values[$i][$childcol] = $val;
+ }
}
- }
- $subtype = $subtypes[$i] ? ':'.$subtypes[$i] : '';
- $a_record[$col.$subtype][] = $val;
+ $subtypes = isset($_REQUEST['_subtype_' . $col]) ? (array)rcube_utils::get_input_value('_subtype_' . $col, rcube_utils::INPUT_POST) : array('');
+ foreach ($subtypes as $i => $subtype) {
+ $suffix = $subtype ? ':'.$subtype : '';
+ if ($values[$i]) {
+ $a_record[$col.$suffix][] = $values[$i];
+ }
+ }
}
- }
- else if (isset($_POST[$fname])) {
- $a_record[$col] = get_input_value($fname, RCUBE_INPUT_POST, true);
-
- // 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);
+ // assign values and subtypes
+ else if (is_array($_POST[$fname])) {
+ $values = rcube_utils::get_input_value($fname, rcube_utils::INPUT_POST, true);
+ $subtypes = rcube_utils::get_input_value('_subtype_' . $col, rcube_utils::INPUT_POST);
+
+ foreach ($values as $i => $val) {
+ if ($col == 'email') {
+ // extract email from full address specification, e.g. "Name" <addr@domain.tld>
+ $addr = rcube_mime::decode_address_list($val, 1, false);
+ if (!empty($addr) && ($addr = array_pop($addr)) && $addr['mailto']) {
+ $val = $addr['mailto'];
+ }
+ }
+
+ $subtype = $subtypes[$i] ? ':'.$subtypes[$i] : '';
+ $a_record[$col.$subtype][] = $val;
}
- else {
- unset($a_record[$col]);
+ }
+ else if (isset($_POST[$fname])) {
+ $a_record[$col] = rcube_utils::get_input_value($fname, rcube_utils::INPUT_POST, true);
+
+ // normalize the submitted date strings
+ if ($colprop['type'] == 'date') {
+ if ($a_record[$col] && ($dt = rcube_utils::anytodatetime($a_record[$col]))) {
+ $a_record[$col] = $dt->format('Y-m-d');
+ }
+ else {
+ unset($a_record[$col]);
+ }
}
}
- }
}
// Generate contact's display name (must be before validation)
if (empty($a_record['name'])) {
$a_record['name'] = rcube_addressbook::compose_display_name($a_record, true);
+
// Reset it if equals to email address (from compose_display_name())
$email = rcube_addressbook::get_col_values('email', $a_record, true);
if ($a_record['name'] == $email[0]) {
@@ -103,9 +110,9 @@ if (empty($a_record['name'])) {
// do input checks (delegated to $CONTACTS instance)
if (!$CONTACTS->validate($a_record)) {
$err = (array)$CONTACTS->get_error();
- $OUTPUT->show_message($err['message'] ? Q($err['message']) : 'formincomplete', 'warning');
+ $OUTPUT->show_message($err['message'] ? rcube::Q($err['message']) : 'formincomplete', 'warning');
$GLOBALS['EDIT_RECORD'] = $a_record; // store submitted data to be used in edit form
- rcmail_overwrite_action($return_action);
+ $RCMAIL->overwrite_action($return_action);
return;
}
@@ -127,123 +134,125 @@ if (isset($a_record['photo'])) {
$RCMAIL->session->remove('contacts');
}
-$source = get_input_value('_source', RCUBE_INPUT_GPC);
+$source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC);
// update an existing contact
-if (!empty($cid))
-{
- $plugin = $RCMAIL->plugins->exec_hook('contact_update',
- array('id' => $cid, 'record' => $a_record, 'source' => $source));
- $a_record = $plugin['record'];
-
- if (!$plugin['abort'])
- $result = $CONTACTS->update($cid, $a_record);
- else
- $result = $plugin['result'];
-
- if ($result) {
- // LDAP DN change
- if (is_string($result) && strlen($result)>1) {
- $newcid = $result;
- // change cid in POST for 'show' action
- $_POST['_cid'] = $newcid;
- }
+if (!empty($cid)) {
+ $plugin = $RCMAIL->plugins->exec_hook('contact_update',
+ array('id' => $cid, 'record' => $a_record, 'source' => $source));
+ $a_record = $plugin['record'];
- // define list of cols to be displayed
- $a_js_cols = array();
- $record = $CONTACTS->get_record($newcid ? $newcid : $cid, true);
- $record['email'] = reset($CONTACTS->get_col_values('email', $record, true));
- $record['name'] = rcube_addressbook::compose_list_name($record);
-
- foreach (array('name') as $col)
- $a_js_cols[] = Q((string)$record[$col]);
-
- // update the changed col in list
- $OUTPUT->command('parent.update_contact_row', $cid, $a_js_cols, $newcid, $source, $record);
-
- // show confirmation
- $OUTPUT->show_message('successfullysaved', 'confirmation', null, false);
- rcmail_overwrite_action('show');
- }
- else {
- // show error message
- $err = $CONTACTS->get_error();
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : ($err['message'] ? $err['message'] : 'errorsaving'), 'error', null, false);
- rcmail_overwrite_action('show');
- }
+ if (!$plugin['abort'])
+ $result = $CONTACTS->update($cid, $a_record);
+ else
+ $result = $plugin['result'];
+
+ if ($result) {
+ // LDAP DN change
+ if (is_string($result) && strlen($result)>1) {
+ $newcid = $result;
+ // change cid in POST for 'show' action
+ $_POST['_cid'] = $newcid;
+ }
+
+ // define list of cols to be displayed
+ $a_js_cols = array();
+ $record = $CONTACTS->get_record($newcid ? $newcid : $cid, true);
+ $record['email'] = reset($CONTACTS->get_col_values('email', $record, true));
+ $record['name'] = rcube_addressbook::compose_list_name($record);
+
+ foreach (array('name') as $col) {
+ $a_js_cols[] = rcube::Q((string)$record[$col]);
+ }
+
+ // update the changed col in list
+ $OUTPUT->command('parent.update_contact_row', $cid, $a_js_cols, $newcid, $source, $record);
+
+ // show confirmation
+ $OUTPUT->show_message('successfullysaved', 'confirmation', null, false);
+ $RCMAIL->overwrite_action('show');
+ }
+ else {
+ // show error message
+ $err = $CONTACTS->get_error();
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : ($err['message'] ? $err['message'] : 'errorsaving'), 'error', null, false);
+ $RCMAIL->overwrite_action('show');
+ }
}
// insert a new contact
else {
- // Name of the addressbook already selected on the list
- $orig_source = get_input_value('_orig_source', RCUBE_INPUT_GPC);
-
- if (!strlen($source))
- $source = $orig_source;
-
- // show notice if existing contacts with same e-mail are found
- foreach ($CONTACTS->get_col_values('email', $a_record, true) as $email) {
- if ($email && ($res = $CONTACTS->search('email', $email, 1, false, true)) && $res->count) {
- $OUTPUT->show_message('contactexists', 'notice', null, false);
- break;
- }
- }
-
- $plugin = $RCMAIL->plugins->exec_hook('contact_create', array(
- 'record' => $a_record, 'source' => $source));
- $a_record = $plugin['record'];
-
- // insert record and send response
- if (!$plugin['abort'])
- $insert_id = $CONTACTS->insert($a_record);
- else
- $insert_id = $plugin['result'];
-
- if ($insert_id) {
- $CONTACTS->reset();
-
- // add new contact to the specified group
- if ($CONTACTS->groups && $CONTACTS->group_id) {
- $plugin = $RCMAIL->plugins->exec_hook('group_addmembers', array(
- 'group_id' => $CONTACTS->group_id, 'ids' => $insert_id, 'source' => $source));
-
- $counts = $CONTACTS->count();
-
- if (!$plugin['abort']) {
- if (($maxnum = $RCMAIL->config->get('max_group_members', 0)) && ($counts->count + 1 > $maxnum))
- $OUTPUT->show_message('maxgroupmembersreached', 'warning', array('max' => $maxnum));
-
- $CONTACTS->add_to_group($plugin['group_id'], $plugin['ids']);
- }
+ // Name of the addressbook already selected on the list
+ $orig_source = rcube_utils::get_input_value('_orig_source', rcube_utils::INPUT_GPC);
+
+ if (!strlen($source)) {
+ $source = $orig_source;
}
+
+ // show notice if existing contacts with same e-mail are found
+ foreach ($CONTACTS->get_col_values('email', $a_record, true) as $email) {
+ if ($email && ($res = $CONTACTS->search('email', $email, 1, false, true)) && $res->count) {
+ $OUTPUT->show_message('contactexists', 'notice', null, false);
+ break;
+ }
+ }
+
+ $plugin = $RCMAIL->plugins->exec_hook('contact_create', array(
+ 'record' => $a_record, 'source' => $source));
+ $a_record = $plugin['record'];
+
+ // insert record and send response
+ if (!$plugin['abort'])
+ $insert_id = $CONTACTS->insert($a_record);
else
- $counts = $CONTACTS->count();
+ $insert_id = $plugin['result'];
+
+ if ($insert_id) {
+ $CONTACTS->reset();
+
+ // add new contact to the specified group
+ if ($CONTACTS->groups && $CONTACTS->group_id) {
+ $plugin = $RCMAIL->plugins->exec_hook('group_addmembers', array(
+ 'group_id' => $CONTACTS->group_id, 'ids' => $insert_id, 'source' => $source));
- if ((string)$source === (string)$orig_source) {
- // add contact row or jump to the page where it should appear
- $CONTACTS->reset();
- $result = $CONTACTS->search($CONTACTS->primary_key, $insert_id);
+ $counts = $CONTACTS->count();
- rcmail_js_contacts_list($result, 'parent.');
- $OUTPUT->command('parent.contact_list.select', html_identifier($insert_id));
+ if (!$plugin['abort']) {
+ if (($maxnum = $RCMAIL->config->get('max_group_members', 0)) && ($counts->count + 1 > $maxnum))
+ $OUTPUT->show_message('maxgroupmembersreached', 'warning', array('max' => $maxnum));
- // update record count display
- $CONTACTS->reset();
- $OUTPUT->command('parent.set_rowcount', rcmail_get_rowcount_text($counts));
+ $CONTACTS->add_to_group($plugin['group_id'], $plugin['ids']);
+ }
+ }
+ else {
+ $counts = $CONTACTS->count();
+ }
+
+ if ((string)$source === (string)$orig_source) {
+ // add contact row or jump to the page where it should appear
+ $CONTACTS->reset();
+ $result = $CONTACTS->search($CONTACTS->primary_key, $insert_id);
+
+ rcmail_js_contacts_list($result, 'parent.');
+ $OUTPUT->command('parent.contact_list.select', rcube_utils::html_identifier($insert_id));
+
+ // update record count display
+ $CONTACTS->reset();
+ $OUTPUT->command('parent.set_rowcount', rcmail_get_rowcount_text($counts));
+ }
+ else {
+ // re-set iframe
+ $OUTPUT->command('parent.show_contentframe');
+ }
+
+ // show confirmation
+ $OUTPUT->show_message('successfullysaved', 'confirmation', null, false);
+ $OUTPUT->send('iframe');
}
else {
- // re-set iframe
- $OUTPUT->command('parent.show_contentframe');
+ // show error message
+ $err = $CONTACTS->get_error();
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : ($err['message'] ? $err['message'] : 'errorsaving'), 'error', null, false);
+ $RCMAIL->overwrite_action('add');
}
-
- // show confirmation
- $OUTPUT->show_message('successfullysaved', 'confirmation', null, false);
- $OUTPUT->send('iframe');
- }
- else {
- // show error message
- $err = $CONTACTS->get_error();
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : ($err['message'] ? $err['message'] : 'errorsaving'), 'error', null, false);
- rcmail_overwrite_action('add');
- }
}
diff --git a/program/steps/addressbook/search.inc b/program/steps/addressbook/search.inc
index d153c255a..bb22ec139 100644
--- a/program/steps/addressbook/search.inc
+++ b/program/steps/addressbook/search.inc
@@ -22,8 +22,8 @@
*/
if ($RCMAIL->action == 'search-create') {
- $id = get_input_value('_search', RCUBE_INPUT_POST);
- $name = get_input_value('_name', RCUBE_INPUT_POST, true);
+ $id = rcube_utils::get_input_value('_search', rcube_utils::INPUT_POST);
+ $name = rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true);
if (($params = $_SESSION['search_params']) && $params['id'] == $id) {
@@ -46,7 +46,7 @@ if ($RCMAIL->action == 'search-create') {
if ($result) {
$OUTPUT->show_message('savedsearchcreated', 'confirmation');
- $OUTPUT->command('insert_saved_search', Q($name), Q($result));
+ $OUTPUT->command('insert_saved_search', rcube::Q($name), rcube::Q($result));
}
else
$OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'savedsearchcreateerror', 'error');
@@ -55,7 +55,7 @@ if ($RCMAIL->action == 'search-create') {
}
if ($RCMAIL->action == 'search-delete') {
- $id = get_input_value('_sid', RCUBE_INPUT_POST);
+ $id = rcube_utils::get_input_value('_sid', rcube_utils::INPUT_POST);
$plugin = $RCMAIL->plugins->exec_hook('saved_search_delete', array('id' => $id));
@@ -66,9 +66,9 @@ if ($RCMAIL->action == 'search-delete') {
if ($result) {
$OUTPUT->show_message('savedsearchdeleted', 'confirmation');
- $OUTPUT->command('remove_search_item', Q($id));
+ $OUTPUT->command('remove_search_item', rcube::Q($id));
// contact list will be cleared, clear also page counter
- $OUTPUT->command('set_rowcount', rcube_label('nocontactsfound'));
+ $OUTPUT->command('set_rowcount', $RCMAIL->gettext('nocontactsfound'));
$OUTPUT->set_env('pagecount', 0);
}
else
@@ -91,7 +91,7 @@ function rcmail_contact_search()
global $RCMAIL, $OUTPUT, $SEARCH_MODS_DEFAULT, $PAGE_SIZE;
$adv = isset($_POST['_adv']);
- $sid = get_input_value('_sid', RCUBE_INPUT_GET);
+ $sid = rcube_utils::get_input_value('_sid', rcube_utils::INPUT_GET);
// get search criteria from saved search
if ($sid && ($search = $RCMAIL->user->get_search($sid))) {
@@ -101,7 +101,7 @@ function rcmail_contact_search()
// get fields/values from advanced search form
else if ($adv) {
foreach (array_keys($_POST) as $key) {
- $s = trim(get_input_value($key, RCUBE_INPUT_POST, true));
+ $s = trim(rcube_utils::get_input_value($key, rcube_utils::INPUT_POST, true));
if (strlen($s) && preg_match('/^_search_([a-zA-Z0-9_-]+)$/', $key, $m)) {
$search[] = $s;
$fields[] = $m[1];
@@ -115,8 +115,8 @@ function rcmail_contact_search()
}
// quick-search
else {
- $search = trim(get_input_value('_q', RCUBE_INPUT_GET, true));
- $fields = explode(',', get_input_value('_headers', RCUBE_INPUT_GET));
+ $search = trim(rcube_utils::get_input_value('_q', rcube_utils::INPUT_GET, true));
+ $fields = explode(',', rcube_utils::get_input_value('_headers', rcube_utils::INPUT_GET));
if (empty($fields)) {
$fields = array_keys($SEARCH_MODS_DEFAULT);
@@ -257,17 +257,17 @@ function rcmail_contact_search_form($attrib)
$form = array(
'main' => array(
- 'name' => rcube_label('properties'),
+ 'name' => $RCMAIL->gettext('properties'),
'content' => array(
),
),
'personal' => array(
- 'name' => rcube_label('personalinfo'),
+ 'name' => $RCMAIL->gettext('personalinfo'),
'content' => array(
),
),
'other' => array(
- 'name' => rcube_label('other'),
+ 'name' => $RCMAIL->gettext('other'),
'content' => array(
),
),
@@ -297,7 +297,7 @@ function rcmail_contact_search_form($attrib)
if ($colprop['type'] != 'image' && !$colprop['nosearch'])
{
$ftype = $colprop['type'] == 'select' ? 'select' : 'text';
- $label = isset($colprop['label']) ? $colprop['label'] : rcube_label($col);
+ $label = isset($colprop['label']) ? $colprop['label'] : $RCMAIL->gettext($col);
$category = $colprop['category'] ? $colprop['category'] : 'other';
// load jquery UI datepicker for date fields
@@ -307,8 +307,8 @@ function rcmail_contact_search_form($attrib)
$colprop['size'] = $i_size;
- $content = html::div('row', html::div('contactfieldlabel label', Q($label))
- . html::div('contactfieldcontent', rcmail_get_edit_field('search_'.$col, '', $colprop, $ftype)));
+ $content = html::div('row', html::div('contactfieldlabel label', rcube::Q($label))
+ . html::div('contactfieldcontent', rcube_output::get_edit_field('search_'.$col, '', $colprop, $ftype)));
$form[$category]['content'][] = $content;
}
@@ -332,7 +332,7 @@ function rcmail_contact_search_form($attrib)
$content = html::div('contactfieldgroup', join("\n", $f['content']));
$out .= html::tag('fieldset', $attrib,
- html::tag('legend', null, Q($f['name']))
+ html::tag('legend', null, rcube::Q($f['name']))
. $content) . "\n";
}
}
diff --git a/program/steps/addressbook/show.inc b/program/steps/addressbook/show.inc
index efab5e9e5..f4224a3e2 100644
--- a/program/steps/addressbook/show.inc
+++ b/program/steps/addressbook/show.inc
@@ -5,7 +5,7 @@
| program/steps/addressbook/show.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2012, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -38,6 +38,15 @@ if ($cid && ($record = $CONTACTS->get_record($cid, true))) {
// get address book name (for display)
rcmail_set_sourcename($CONTACTS);
+$OUTPUT->add_handlers(array(
+ 'contacthead' => 'rcmail_contact_head',
+ 'contactdetails' => 'rcmail_contact_details',
+ 'contactphoto' => 'rcmail_contact_photo',
+));
+
+$OUTPUT->send('contact');
+
+
function rcmail_contact_head($attrib)
{
@@ -45,7 +54,7 @@ function rcmail_contact_head($attrib)
// check if we have a valid result
if (!(($result = $CONTACTS->get_result()) && ($record = $result->first()))) {
- $RCMAIL->output->show_message('contactnotfound');
+ $RCMAIL->output->show_message('contactnotfound', 'error');
return false;
}
@@ -72,7 +81,6 @@ function rcmail_contact_details($attrib)
// check if we have a valid result
if (!(($result = $CONTACTS->get_result()) && ($record = $result->first()))) {
- //$RCMAIL->output->show_message('contactnotfound');
return false;
}
@@ -80,7 +88,7 @@ function rcmail_contact_details($attrib)
$form = array(
'contact' => array(
- 'name' => rcube_label('properties'),
+ 'name' => $RCMAIL->gettext('properties'),
'content' => array(
'email' => array('size' => $i_size, 'render_func' => 'rcmail_render_email_value'),
'phone' => array('size' => $i_size),
@@ -90,7 +98,7 @@ function rcmail_contact_details($attrib)
),
),
'personal' => array(
- 'name' => rcube_label('personalinfo'),
+ 'name' => $RCMAIL->gettext('personalinfo'),
'content' => array(
'gender' => array('size' => $i_size),
'maidenname' => array('size' => $i_size),
@@ -102,19 +110,19 @@ function rcmail_contact_details($attrib)
),
),
);
-
+
if (isset($CONTACT_COLTYPES['notes'])) {
$form['notes'] = array(
- 'name' => rcube_label('notes'),
+ 'name' => $RCMAIL->gettext('notes'),
'content' => array(
'notes' => array('type' => 'textarea', 'label' => false),
),
);
}
-
+
if ($CONTACTS->groups) {
$form['groups'] = array(
- 'name' => rcube_label('groups'),
+ 'name' => $RCMAIL->gettext('groups'),
'content' => rcmail_contact_record_groups($record['ID']),
);
}
@@ -125,12 +133,14 @@ function rcmail_contact_details($attrib)
function rcmail_render_email_value($email)
{
+ global $RCMAIL;
+
return html::a(array(
'href' => 'mailto:' . $email,
- 'onclick' => sprintf("return %s.command('compose','%s',this)", JS_OBJECT_NAME, JQ($email)),
- 'title' => rcube_label('composeto'),
+ 'onclick' => sprintf("return %s.command('compose','%s',this)", rcmail_output::JS_OBJECT_NAME, rcube::JQ($email)),
+ 'title' => $RCMAIL->gettext('composeto'),
'class' => 'email',
- ), Q($email));
+ ), rcube::Q($email));
}
@@ -141,7 +151,7 @@ function rcmail_render_url_value($url)
'href' => $prefix . $url,
'target' => '_blank',
'class' => 'url',
- ), Q($url));
+ ), rcube::Q($url));
}
@@ -164,10 +174,10 @@ function rcmail_contact_record_groups($contact_id)
$gid = $group['ID'];
$table->add(null, $checkbox->show($members[$gid] ? $gid : null,
array('value' => $gid, 'id' => 'ff_gid' . $gid)));
- $table->add(null, html::label('ff_gid' . $gid, Q($group['name'])));
+ $table->add(null, html::label('ff_gid' . $gid, rcube::Q($group['name'])));
}
- $hiddenfields = new html_hiddenfield(array('name' => '_source', 'value' => get_input_value('_source', RCUBE_INPUT_GPC)));
+ $hiddenfields = new html_hiddenfield(array('name' => '_source', 'value' => rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC)));
$hiddenfields->add(array('name' => '_cid', 'value' => $contact_id));
$form_start = $RCMAIL->output->request_form(array(
@@ -182,12 +192,3 @@ function rcmail_contact_record_groups($contact_id)
return $form_start . html::tag('fieldset', 'contactfieldgroup contactgroups', $table->show()) . $form_end;
}
-
-
-$OUTPUT->add_handlers(array(
- 'contacthead' => 'rcmail_contact_head',
- 'contactdetails' => 'rcmail_contact_details',
- 'contactphoto' => 'rcmail_contact_photo',
-));
-
-$OUTPUT->send('contact');
diff --git a/program/steps/addressbook/undo.inc b/program/steps/addressbook/undo.inc
index c23bd1cb6..ec3feb9c0 100644
--- a/program/steps/addressbook/undo.inc
+++ b/program/steps/addressbook/undo.inc
@@ -5,7 +5,7 @@
| program/steps/addressbook/undo.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2011, Kolab Systems AG |
+ | Copyright (C) 2011-2013, Kolab Systems AG |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -20,14 +20,14 @@
*/
// process ajax requests only
-if (!$OUTPUT->ajax_call)
+if (!$OUTPUT->ajax_call) {
return;
+}
$undo = $_SESSION['contact_undo'];
$delcnt = 0;
-foreach ((array)$undo['data'] as $source => $cid)
-{
+foreach ((array)$undo['data'] as $source => $cid) {
$CONTACTS = rcmail_contact_source($source);
$plugin = $RCMAIL->plugins->exec_hook('contact_undelete', array(
diff --git a/program/steps/addressbook/upload_photo.inc b/program/steps/addressbook/upload_photo.inc
index 035d67e83..dbb76d229 100644
--- a/program/steps/addressbook/upload_photo.inc
+++ b/program/steps/addressbook/upload_photo.inc
@@ -54,7 +54,7 @@ if ($filepath = $_FILES['_photo']['tmp_name']) {
));
}
else {
- $attachment['error'] = rcube_label('invalidimageformat');
+ $attachment['error'] = $RCMAIL->gettext('invalidimageformat');
}
if ($attachment['status'] && !$attachment['abort']) {
@@ -63,14 +63,16 @@ if ($filepath = $_FILES['_photo']['tmp_name']) {
$OUTPUT->command('replace_contact_photo', $file_id);
}
else { // upload failed
- $err = $_FILES['_photo']['error'];
+ $err = $_FILES['_photo']['error'];
+ $size = $RCMAIL->show_bytes(parse_bytes(ini_get('upload_max_filesize')));
+
if ($err == UPLOAD_ERR_INI_SIZE || $err == UPLOAD_ERR_FORM_SIZE)
- $msg = rcube_label(array('name' => 'filesizeerror', 'vars' => array('size' => show_bytes(parse_bytes(ini_get('upload_max_filesize'))))));
+ $msg = $RCMAIL->gettext(array('name' => 'filesizeerror', 'vars' => array('size' => $size)));
else if ($attachment['error'])
$msg = $attachment['error'];
else
- $msg = rcube_label('fileuploaderror');
-
+ $msg = $RCMAIL->gettext('fileuploaderror');
+
$OUTPUT->command('display_message', $msg, 'error');
}
}
@@ -78,9 +80,9 @@ else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// if filesize exceeds post_max_size then $_FILES array is empty,
// show filesizeerror instead of fileuploaderror
if ($maxsize = ini_get('post_max_size'))
- $msg = rcube_label(array('name' => 'filesizeerror', 'vars' => array('size' => show_bytes(parse_bytes($maxsize)))));
+ $msg = $RCMAIL->gettext(array('name' => 'filesizeerror', 'vars' => array('size' => $RCMAIL->show_bytes(parse_bytes($maxsize)))));
else
- $msg = rcube_label('fileuploaderror');
+ $msg = $RCMAIL->gettext('fileuploaderror');
$OUTPUT->command('display_message', $msg, 'error');
}
diff --git a/program/steps/mail/addcontact.inc b/program/steps/mail/addcontact.inc
index 380557766..76bf2ee32 100644
--- a/program/steps/mail/addcontact.inc
+++ b/program/steps/mail/addcontact.inc
@@ -5,7 +5,7 @@
| program/steps/mail/addcontact.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2009, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -20,69 +20,74 @@
*/
// only process ajax requests
-if (!$OUTPUT->ajax_call)
- return;
+if (!$OUTPUT->ajax_call) {
+ return;
+}
// Get default addressbook
$CONTACTS = $RCMAIL->get_address_book(-1, true);
-if (!empty($_POST['_address']) && is_object($CONTACTS))
-{
- $contact_arr = rcube_mime::decode_address_list(get_input_value('_address', RCUBE_INPUT_POST, true), 1, false);
-
- if (!empty($contact_arr[1]['mailto'])) {
- $contact = array(
- 'email' => $contact_arr[1]['mailto'],
- 'name' => $contact_arr[1]['name']
- );
-
- // Validity checks
- if (empty($contact['email'])) {
- $OUTPUT->show_message('errorsavingcontact', 'error');
- $OUTPUT->send();
- }
-
- $email = rcube_idn_to_ascii($contact['email']);
- if (!check_email($email, false)) {
- $OUTPUT->show_message('emailformaterror', 'error', array('email' => $contact['email']));
- $OUTPUT->send();
+if (!empty($_POST['_address']) && is_object($CONTACTS)) {
+ $address = rcube_utils::get_input_value('_address', rcube_utils::INPUT_POST, true);
+ $contact_arr = rcube_mime::decode_address_list($address, 1, false);
+
+ if (!empty($contact_arr[1]['mailto'])) {
+ $contact = array(
+ 'email' => $contact_arr[1]['mailto'],
+ 'name' => $contact_arr[1]['name'],
+ );
+
+ // Validity checks
+ if (empty($contact['email'])) {
+ $OUTPUT->show_message('errorsavingcontact', 'error');
+ $OUTPUT->send();
+ }
+
+ $email = rcube_utils::idn_to_ascii($contact['email']);
+ if (!rcube_utils::check_email($email, false)) {
+ $OUTPUT->show_message('emailformaterror', 'error', array('email' => $contact['email']));
+ $OUTPUT->send();
+ }
+
+ $contact['email'] = rcube_utils::idn_to_utf8($contact['email']);
+
+ $contact = $RCMAIL->plugins->exec_hook('contact_displayname', $contact);
+
+ if (empty($contact['firstname']) || empty($contact['surname'])) {
+ $contact['name'] = rcube_addressbook::compose_display_name($contact);
+ }
+
+ // validate contact record
+ if (!$CONTACTS->validate($contact, true)) {
+ $error = $CONTACTS->get_error();
+ // TODO: show dialog to complete record
+ // if ($error['type'] == rcube_addressbook::ERROR_VALIDATE) { }
+
+ $OUTPUT->show_message($error['message'] ? $error['message'] : 'errorsavingcontact', 'error');
+ $OUTPUT->send();
+ }
+
+ // check for existing contacts
+ $existing = $CONTACTS->search('email', $contact['email'], 1, false);
+
+ if ($done = $existing->count) {
+ $OUTPUT->show_message('contactexists', 'warning');
+ }
+ else {
+ $plugin = $RCMAIL->plugins->exec_hook('contact_create', array('record' => $contact, 'source' => null));
+ $contact = $plugin['record'];
+
+ $done = !$plugin['abort'] ? $CONTACTS->insert($contact) : $plugin['result'];
+
+ if ($done) {
+ $OUTPUT->show_message('addedsuccessfully', 'confirmation');
+ }
+ }
}
-
- $contact['email'] = rcube_idn_to_utf8($contact['email']);
- $contact = $RCMAIL->plugins->exec_hook('contact_displayname', $contact);
-
- if (empty($contact['firstname']) || empty($contact['surname']))
- $contact['name'] = rcube_addressbook::compose_display_name($contact);
-
- // validate contact record
- if (!$CONTACTS->validate($contact, true)) {
- $error = $CONTACTS->get_error();
- // TODO: show dialog to complete record
- // if ($error['type'] == rcube_addressbook::ERROR_VALIDATE) { }
-
- $OUTPUT->show_message($error['message'] ? $error['message'] : 'errorsavingcontact', 'error');
- $OUTPUT->send();
- }
-
- // check for existing contacts
- $existing = $CONTACTS->search('email', $contact['email'], 1, false);
-
- if ($done = $existing->count)
- $OUTPUT->show_message('contactexists', 'warning');
- else {
- $plugin = $RCMAIL->plugins->exec_hook('contact_create', array('record' => $contact, 'source' => null));
- $contact = $plugin['record'];
-
- $done = !$plugin['abort'] ? $CONTACTS->insert($contact) : $plugin['result'];
-
- if ($done)
- $OUTPUT->show_message('addedsuccessfully', 'confirmation');
- }
- }
}
-if (!$done)
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsavingcontact', 'error');
+if (!$done) {
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsavingcontact', 'error');
+}
$OUTPUT->send();
-
diff --git a/program/steps/mail/attachments.inc b/program/steps/mail/attachments.inc
index 85aa9542b..85bc36cac 100644
--- a/program/steps/mail/attachments.inc
+++ b/program/steps/mail/attachments.inc
@@ -5,7 +5,7 @@
| program/steps/mail/attachments.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2009, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -21,62 +21,73 @@
// Upload progress update
if (!empty($_GET['_progress'])) {
- rcube_upload_progress();
+ $RCMAIL->upload_progress();
}
-$COMPOSE_ID = get_input_value('_id', RCUBE_INPUT_GPC);
+$COMPOSE_ID = rcube_utils::get_input_value('_id', rcube_utils::INPUT_GPC);
$COMPOSE = null;
if ($COMPOSE_ID && $_SESSION['compose_data_' . $COMPOSE_ID]) {
- $SESSION_KEY = 'compose_data_' . $COMPOSE_ID;
- $COMPOSE =& $_SESSION[$SESSION_KEY];
+ $SESSION_KEY = 'compose_data_' . $COMPOSE_ID;
+ $COMPOSE =& $_SESSION[$SESSION_KEY];
}
if (!$COMPOSE) {
- die("Invalid session var!");
+ die("Invalid session var!");
}
// remove an attachment
-if ($RCMAIL->action=='remove-attachment')
-{
- $id = 'undefined';
- if (preg_match('/^rcmfile(\w+)$/', $_POST['_file'], $regs))
- $id = $regs[1];
- if ($attachment = $COMPOSE['attachments'][$id])
- $attachment = $RCMAIL->plugins->exec_hook('attachment_delete', $attachment);
- if ($attachment['status']) {
- if (is_array($COMPOSE['attachments'][$id])) {
- $RCMAIL->session->remove($SESSION_KEY.'.attachments.'.$id);
- $OUTPUT->command('remove_from_attachment_list', "rcmfile$id");
+if ($RCMAIL->action=='remove-attachment') {
+ $id = 'undefined';
+
+ if (preg_match('/^rcmfile(\w+)$/', $_POST['_file'], $regs)) {
+ $id = $regs[1];
+ }
+
+ if ($attachment = $COMPOSE['attachments'][$id]) {
+ $attachment = $RCMAIL->plugins->exec_hook('attachment_delete', $attachment);
}
- }
- $OUTPUT->send();
- exit;
+ if ($attachment['status']) {
+ if (is_array($COMPOSE['attachments'][$id])) {
+ $RCMAIL->session->remove($SESSION_KEY.'.attachments.'.$id);
+ $OUTPUT->command('remove_from_attachment_list', "rcmfile$id");
+ }
+ }
+
+ $OUTPUT->send();
+ exit;
}
-if ($RCMAIL->action=='display-attachment')
-{
- $id = 'undefined';
- if (preg_match('/^rcmfile(\w+)$/', $_GET['_file'], $regs))
- $id = $regs[1];
- if ($attachment = $COMPOSE['attachments'][$id])
- $attachment = $RCMAIL->plugins->exec_hook('attachment_display', $attachment);
-
- if ($attachment['status']) {
- if (empty($attachment['size']))
- $attachment['size'] = $attachment['data'] ? strlen($attachment['data']) : @filesize($attachment['path']);
-
- header('Content-Type: ' . $attachment['mimetype']);
- header('Content-Length: ' . $attachment['size']);
-
- if ($attachment['data'])
- echo $attachment['data'];
- else if ($attachment['path'])
- readfile($attachment['path']);
- }
- exit;
+if ($RCMAIL->action=='display-attachment') {
+ $id = 'undefined';
+
+ if (preg_match('/^rcmfile(\w+)$/', $_GET['_file'], $regs)) {
+ $id = $regs[1];
+ }
+
+ if ($attachment = $COMPOSE['attachments'][$id]) {
+ $attachment = $RCMAIL->plugins->exec_hook('attachment_display', $attachment);
+ }
+
+ if ($attachment['status']) {
+ if (empty($attachment['size'])) {
+ $attachment['size'] = $attachment['data'] ? strlen($attachment['data']) : @filesize($attachment['path']);
+ }
+
+ header('Content-Type: ' . $attachment['mimetype']);
+ header('Content-Length: ' . $attachment['size']);
+
+ if ($attachment['data']) {
+ echo $attachment['data'];
+ }
+ else if ($attachment['path']) {
+ readfile($attachment['path']);
+ }
+ }
+
+ exit;
}
/***** attachment upload action *****/
@@ -84,93 +95,97 @@ if ($RCMAIL->action=='display-attachment')
// clear all stored output properties (like scripts and env vars)
$OUTPUT->reset();
-$uploadid = get_input_value('_uploadid', RCUBE_INPUT_GET);
+$uploadid = rcube_utils::get_input_value('_uploadid', rcube_utils::INPUT_GET);
if (is_array($_FILES['_attachments']['tmp_name'])) {
- $multiple = count($_FILES['_attachments']['tmp_name']) > 1;
-
- foreach ($_FILES['_attachments']['tmp_name'] as $i => $filepath) {
- // Process uploaded attachment if there is no error
- $err = $_FILES['_attachments']['error'][$i];
-
- if (!$err) {
- $attachment = array(
- 'path' => $filepath,
- 'size' => $_FILES['_attachments']['size'][$i],
- 'name' => $_FILES['_attachments']['name'][$i],
- 'mimetype' => rc_mime_content_type($filepath, $_FILES['_attachments']['name'][$i], $_FILES['_attachments']['type'][$i]),
- 'group' => $COMPOSE_ID,
- );
-
- $attachment = $RCMAIL->plugins->exec_hook('attachment_upload', $attachment);
+ $multiple = count($_FILES['_attachments']['tmp_name']) > 1;
+
+ foreach ($_FILES['_attachments']['tmp_name'] as $i => $filepath) {
+ // Process uploaded attachment if there is no error
+ $err = $_FILES['_attachments']['error'][$i];
+
+ if (!$err) {
+ $attachment = $RCMAIL->plugins->exec_hook('attachment_upload', array(
+ 'path' => $filepath,
+ 'size' => $_FILES['_attachments']['size'][$i],
+ 'name' => $_FILES['_attachments']['name'][$i],
+ 'mimetype' => rcube_mime::file_content_type($filepath, $_FILES['_attachments']['name'][$i], $_FILES['_attachments']['type'][$i]),
+ 'group' => $COMPOSE_ID,
+ ));
+ }
+
+ if (!$err && $attachment['status'] && !$attachment['abort']) {
+ $id = $attachment['id'];
+
+ // store new attachment in session
+ unset($attachment['status'], $attachment['abort']);
+ $RCMAIL->session->append($SESSION_KEY.'.attachments', $id, $attachment);
+
+ if (($icon = $COMPOSE['deleteicon']) && is_file($icon)) {
+ $button = html::img(array(
+ 'src' => $icon,
+ 'alt' => $RCMAIL->gettext('delete')
+ ));
+ }
+ else if ($COMPOSE['textbuttons']) {
+ $button = rcube::Q($RCMAIL->gettext('delete'));
+ }
+ else {
+ $button = '';
+ }
+
+ $content = html::a(array(
+ 'href' => "#delete",
+ 'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", rcmail_output::JS_OBJECT_NAME, $id),
+ 'title' => $RCMAIL->gettext('delete'),
+ 'class' => 'delete',
+ ), $button);
+
+ $content .= rcube::Q($attachment['name']);
+
+ $OUTPUT->command('add2attachment_list', "rcmfile$id", array(
+ 'html' => $content,
+ 'name' => $attachment['name'],
+ 'mimetype' => $attachment['mimetype'],
+ 'classname' => rcube_utils::file2class($attachment['mimetype'], $attachment['name']),
+ 'complete' => true), $uploadid);
+ }
+ else { // upload failed
+ if ($err == UPLOAD_ERR_INI_SIZE || $err == UPLOAD_ERR_FORM_SIZE) {
+ $size = $RCMAIL->show_bytes(parse_bytes(ini_get('upload_max_filesize')));
+ $msg = $RCMAIL->gettext(array('name' => 'filesizeerror', 'vars' => array('size' => $size)));
+ }
+ else if ($attachment['error']) {
+ $msg = $attachment['error'];
+ }
+ else {
+ $msg = $RCMAIL->gettext('fileuploaderror');
+ }
+
+ if ($attachment['error'] || $err != UPLOAD_ERR_NO_FILE) {
+ $OUTPUT->command('display_message', $msg, 'error');
+ $OUTPUT->command('remove_from_attachment_list', $uploadid);
+ }
+ }
}
-
- if (!$err && $attachment['status'] && !$attachment['abort']) {
- $id = $attachment['id'];
-
- // store new attachment in session
- unset($attachment['status'], $attachment['abort']);
- $RCMAIL->session->append($SESSION_KEY.'.attachments', $id, $attachment);
-
- if (($icon = $COMPOSE['deleteicon']) && is_file($icon)) {
- $button = html::img(array(
- 'src' => $icon,
- 'alt' => rcube_label('delete')
+}
+else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
+ // if filesize exceeds post_max_size then $_FILES array is empty,
+ // show filesizeerror instead of fileuploaderror
+ if ($maxsize = ini_get('post_max_size')) {
+ $msg = $RCMAIL->gettext(array(
+ 'name' => 'filesizeerror',
+ 'vars' => array('size' => $RCMAIL->show_bytes(parse_bytes($maxsize)))
));
- }
- else if ($COMPOSE['textbuttons']) {
- $button = Q(rcube_label('delete'));
- }
- else {
- $button = '';
- }
-
- $content = html::a(array(
- 'href' => "#delete",
- 'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", JS_OBJECT_NAME, $id),
- 'title' => rcube_label('delete'),
- 'class' => 'delete',
- ), $button);
-
- $content .= Q($attachment['name']);
-
- $OUTPUT->command('add2attachment_list', "rcmfile$id", array(
- 'html' => $content,
- 'name' => $attachment['name'],
- 'mimetype' => $attachment['mimetype'],
- 'classname' => rcmail_filetype2classname($attachment['mimetype'], $attachment['name']),
- 'complete' => true), $uploadid);
}
- else { // upload failed
- if ($err == UPLOAD_ERR_INI_SIZE || $err == UPLOAD_ERR_FORM_SIZE) {
- $msg = rcube_label(array('name' => 'filesizeerror', 'vars' => array('size' => show_bytes(parse_bytes(ini_get('upload_max_filesize'))))));
- }
- else if ($attachment['error']) {
- $msg = $attachment['error'];
- }
- else {
- $msg = rcube_label('fileuploaderror');
- }
-
- if ($attachment['error'] || $err != UPLOAD_ERR_NO_FILE) {
- $OUTPUT->command('display_message', $msg, 'error');
- $OUTPUT->command('remove_from_attachment_list', $uploadid);
- }
+ else {
+ $msg = $RCMAIL->gettext('fileuploaderror');
}
- }
-}
-else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
- // if filesize exceeds post_max_size then $_FILES array is empty,
- // show filesizeerror instead of fileuploaderror
- if ($maxsize = ini_get('post_max_size'))
- $msg = rcube_label(array('name' => 'filesizeerror', 'vars' => array('size' => show_bytes(parse_bytes($maxsize)))));
- else
- $msg = rcube_label('fileuploaderror');
- $OUTPUT->command('display_message', $msg, 'error');
- $OUTPUT->command('remove_from_attachment_list', $uploadid);
+
+ $OUTPUT->command('display_message', $msg, 'error');
+ $OUTPUT->command('remove_from_attachment_list', $uploadid);
}
// send html page with JS calls as response
$OUTPUT->command('auto_save_start', false);
$OUTPUT->send('iframe');
-
diff --git a/program/steps/mail/autocomplete.inc b/program/steps/mail/autocomplete.inc
index c34133a28..5b8b49dba 100644
--- a/program/steps/mail/autocomplete.inc
+++ b/program/steps/mail/autocomplete.inc
@@ -5,8 +5,8 @@
| program/steps/mail/autocomplete.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2008-2011, Roundcube Dev Team |
- | Copyright (C) 2011, Kolab Systems AG |
+ | Copyright (C) 2008-2013, Roundcube Dev Team |
+ | Copyright (C) 2011-2013, Kolab Systems AG |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -21,124 +21,137 @@
*/
if ($RCMAIL->action == 'group-expand') {
- $abook = $RCMAIL->get_address_book(get_input_value('_source', RCUBE_INPUT_GPC));
- if ($gid = get_input_value('_gid', RCUBE_INPUT_GPC)) {
- $members = array();
- $abook->set_group($gid);
- $abook->set_pagesize(1000); // TODO: limit number of group members by config
- $result = $abook->list_records($RCMAIL->config->get('contactlist_fields'));
- while ($result && ($sql_arr = $result->iterate())) {
- foreach ((array)$sql_arr['email'] as $email) {
- $members[] = format_email_recipient($email, rcube_addressbook::compose_list_name($sql_arr));
- break; // only expand one email per contact
- }
- }
+ $abook = $RCMAIL->get_address_book(rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC));
+ if ($gid = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_GPC)) {
+ $abook->set_group($gid);
+ $abook->set_pagesize(1000); // TODO: limit number of group members by config
+
+ $separator = trim($RCMAIL->config->get('recipients_separator', ',')) . ' ';
+ $result = $abook->list_records($RCMAIL->config->get('contactlist_fields'));
+ $members = array();
+
+ while ($result && ($sql_arr = $result->iterate())) {
+ $emails = (array) $abook->get_col_values('email', $sql_arr, true);
+ if (!empty($emails) && ($email = array_shift($emails))) {
+ $members[] = format_email_recipient($email, rcube_addressbook::compose_list_name($sql_arr));
+ }
+ }
- $separator = trim($RCMAIL->config->get('recipients_separator', ',')) . ' ';
- $OUTPUT->command('replace_group_recipients', $gid, join($separator, array_unique($members)));
- }
+ $OUTPUT->command('replace_group_recipients', $gid, join($separator, array_unique($members)));
+ }
- $OUTPUT->send();
+ $OUTPUT->send();
}
$MAXNUM = (int) $RCMAIL->config->get('autocomplete_max', 15);
$mode = (int) $RCMAIL->config->get('addressbook_search_mode');
$single = (bool) $RCMAIL->config->get('autocomplete_single');
-$search = get_input_value('_search', RCUBE_INPUT_GPC, true);
-$source = get_input_value('_source', RCUBE_INPUT_GPC);
-$reqid = get_input_value('_reqid', RCUBE_INPUT_GPC);
+$search = rcube_utils::get_input_value('_search', rcube_utils::INPUT_GPC, true);
+$source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC);
+$reqid = rcube_utils::get_input_value('_reqid', rcube_utils::INPUT_GPC);
-if (strlen($source))
- $book_types = array($source);
-else
- $book_types = (array) $RCMAIL->config->get('autocomplete_addressbooks', 'sql');
+if (strlen($source)) {
+ $book_types = array($source);
+}
+else {
+ $book_types = (array) $RCMAIL->config->get('autocomplete_addressbooks', 'sql');
+}
if (!empty($book_types) && strlen($search)) {
- $contacts = array();
- $sort_keys = array();
- $books_num = count($book_types);
- $search_lc = mb_strtolower($search);
-
- foreach ($book_types as $id) {
- $abook = $RCMAIL->get_address_book($id);
- $abook->set_pagesize($MAXNUM);
-
- if ($result = $abook->search($RCMAIL->config->get('contactlist_fields'), $search, $mode, true, true, 'email')) {
- while ($sql_arr = $result->iterate()) {
- // Contact can have more than one e-mail address
- $email_arr = (array)$abook->get_col_values('email', $sql_arr, true);
- $email_cnt = count($email_arr);
- $idx = 0;
- foreach ($email_arr as $email) {
- if (empty($email)) {
- continue;
- }
-
- $sql_arr['name'] = rcube_addressbook::compose_list_name($sql_arr);
- $contact = format_email_recipient($email, $sql_arr['name']);
-
- // skip entries that don't match
- if ($email_cnt > 1 && strpos(mb_strtolower($contact), $search_lc) === false) {
- continue;
- }
-
- // skip duplicates
- if (!in_array($contact, $contacts)) {
- $contacts[] = $contact;
- $sort_keys[] = sprintf('%s %03d', $sql_arr['name'] , $idx++);
-
- if (count($contacts) >= $MAXNUM)
- break 2;
- }
-
- // skip redundant entries (show only first email address)
- if ($single) {
- break;
- }
+ $contacts = array();
+ $sort_keys = array();
+ $books_num = count($book_types);
+ $search_lc = mb_strtolower($search);
+
+ foreach ($book_types as $id) {
+ $abook = $RCMAIL->get_address_book($id);
+ $abook->set_pagesize($MAXNUM);
+
+ if ($result = $abook->search($RCMAIL->config->get('contactlist_fields'), $search, $mode, true, true, 'email')) {
+ while ($sql_arr = $result->iterate()) {
+ // Contact can have more than one e-mail address
+ $email_arr = (array)$abook->get_col_values('email', $sql_arr, true);
+ $email_cnt = count($email_arr);
+ $idx = 0;
+
+ foreach ($email_arr as $email) {
+ if (empty($email)) {
+ continue;
+ }
+
+ $name = rcube_addressbook::compose_list_name($sql_arr);
+ $contact = format_email_recipient($email, $name);
+
+ // skip entries that don't match
+ if ($email_cnt > 1 && strpos(mb_strtolower($contact), $search_lc) === false) {
+ continue;
+ }
+
+ // skip duplicates
+ if (!in_array($contact, $contacts)) {
+ $contacts[] = $contact;
+ $sort_keys[] = sprintf('%s %03d', $sql_arr['name'] , $idx++);
+
+ if (count($contacts) >= $MAXNUM) {
+ break 2;
+ }
+ }
+
+ // skip redundant entries (show only first email address)
+ if ($single) {
+ break;
+ }
+ }
+ }
}
- }
- }
- // also list matching contact groups
- if ($abook->groups && count($contacts) < $MAXNUM) {
- foreach ($abook->list_groups($search, $mode) as $group) {
- $abook->reset();
- $abook->set_group($group['ID']);
- $group_prop = $abook->get_group($group['ID']);
-
- // group (distribution list) with email address(es)
- if ($group_prop['email']) {
- $idx = 0;
- foreach ((array)$group_prop['email'] as $email) {
- $contacts[] = format_email_recipient($email, $group['name']);
- $sort_keys[] = sprintf('%s %03d', $group['name'] , $idx++);
-
- if (count($contacts) >= $MAXNUM)
- break 2;
+ // also list matching contact groups
+ if ($abook->groups && count($contacts) < $MAXNUM) {
+ foreach ($abook->list_groups($search, $mode) as $group) {
+ $abook->reset();
+ $abook->set_group($group['ID']);
+
+ $group_prop = $abook->get_group($group['ID']);
+
+ // group (distribution list) with email address(es)
+ if ($group_prop['email']) {
+ $idx = 0;
+ foreach ((array)$group_prop['email'] as $email) {
+ $contacts[] = format_email_recipient($email, $group['name']);
+ $sort_keys[] = sprintf('%s %03d', $group['name'] , $idx++);
+
+ if (count($contacts) >= $MAXNUM) {
+ break 2;
+ }
+ }
+ }
+ // show group with count
+ else if (($result = $abook->count()) && $result->count) {
+ $sort_keys[] = $group['name'];
+ $contacts[] = array(
+ 'name' => $group['name'] . ' (' . intval($result->count) . ')',
+ 'id' => $group['ID'],
+ 'source' => $id
+ );
+
+ if (count($contacts) >= $MAXNUM) {
+ break;
+ }
+ }
}
}
- // show group with count
- else if (($result = $abook->count()) && $result->count) {
- $contacts[] = array('name' => $group['name'] . ' (' . intval($result->count) . ')', 'id' => $group['ID'], 'source' => $id);
- $sort_keys[] = $group['name'];
+ }
- if (count($contacts) >= $MAXNUM)
- break;
+ if (count($contacts)) {
+ // sort contacts index
+ asort($sort_keys, SORT_LOCALE_STRING);
+ // re-sort contacts according to index
+ foreach ($sort_keys as $idx => $val) {
+ $sort_keys[$idx] = $contacts[$idx];
}
- }
- }
- }
-
- if (count($contacts)) {
- // sort contacts index
- asort($sort_keys, SORT_LOCALE_STRING);
- // re-sort contacts according to index
- foreach ($sort_keys as $idx => $val) {
- $sort_keys[$idx] = $contacts[$idx];
+ $contacts = array_values($sort_keys);
}
- $contacts = array_values($sort_keys);
- }
}
$OUTPUT->command('ksearch_query_results', $contacts, $search, $reqid);
diff --git a/program/steps/mail/check_recent.inc b/program/steps/mail/check_recent.inc
index 8c0b1ffc0..d2d27a2ca 100644
--- a/program/steps/mail/check_recent.inc
+++ b/program/steps/mail/check_recent.inc
@@ -25,6 +25,7 @@ if (empty($_REQUEST['_folderlist']) && empty($_REQUEST['_list'])) {
return;
}
+$trash = $RCMAIL->config->get('trash_mbox');
$current = $RCMAIL->storage->get_folder();
$check_all = $RCMAIL->action != 'refresh' || (bool)$RCMAIL->config->get('check_all_folders');
@@ -65,7 +66,7 @@ foreach ($a_mailboxes as $mbox_name) {
if ($status && $is_current) {
// refresh saved search set
- $search_request = get_input_value('_search', RCUBE_INPUT_GPC);
+ $search_request = rcube_utils::get_input_value('_search', rcube_utils::INPUT_GPC);
if ($search_request && isset($_SESSION['search'])
&& $_SESSION['search_request'] == $search_request
) {
@@ -73,7 +74,7 @@ foreach ($a_mailboxes as $mbox_name) {
}
if (!empty($_GET['_quota']))
- $OUTPUT->command('set_quota', rcmail_quota_content());
+ $OUTPUT->command('set_quota', $RCMAIL->quota_content());
$OUTPUT->set_env('exists', $RCMAIL->storage->count($mbox_name, 'EXISTS'));
@@ -114,6 +115,29 @@ foreach ($a_mailboxes as $mbox_name) {
$OUTPUT->command('update_selection');
}
}
+ // handle flag updates
+ else if ($is_current && ($uids = rcube_utils::get_input_value('_uids', rcube_utils::INPUT_GPC))) {
+ $data = $RCMAIL->storage->folder_data($mbox_name);
+
+ if (empty($_SESSION['list_mod_seq']) || $_SESSION['list_mod_seq'] != $data['HIGHESTMODSEQ']) {
+ $flags = $RCMAIL->storage->list_flags($mbox_name, explode(',', $uids), $_SESSION['list_mod_seq']);
+ foreach ($flags as $idx => $row) {
+ $flags[$idx] = array_change_key_case(array_map('intval', $row));
+ }
+
+ // remember last HIGHESTMODSEQ value (if supported)
+ if (!empty($data['HIGHESTMODSEQ'])) {
+ $_SESSION['list_mod_seq'] = $data['HIGHESTMODSEQ'];
+ }
+
+ $RCMAIL->output->set_env('recent_flags', $flags);
+ }
+ }
+
+ // set trash folder state
+ if ($mbox_name === $trash) {
+ $OUTPUT->command('set_trash_count', $RCMAIL->storage->count($mbox_name, 'EXISTS'));
+ }
}
// trigger refresh hook
diff --git a/program/steps/mail/compose.inc b/program/steps/mail/compose.inc
index dc2452506..db001d54e 100644
--- a/program/steps/mail/compose.inc
+++ b/program/steps/mail/compose.inc
@@ -5,7 +5,7 @@
| program/steps/mail/compose.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2012, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -26,7 +26,7 @@ define('RCUBE_COMPOSE_DRAFT', 'draft');
define('RCUBE_COMPOSE_EDIT', 'edit');
$MESSAGE_FORM = null;
-$COMPOSE_ID = get_input_value('_id', RCUBE_INPUT_GET);
+$COMPOSE_ID = rcube_utils::get_input_value('_id', rcube_utils::INPUT_GET);
$COMPOSE = null;
if ($COMPOSE_ID && $_SESSION['compose_data_'.$COMPOSE_ID])
@@ -35,73 +35,74 @@ if ($COMPOSE_ID && $_SESSION['compose_data_'.$COMPOSE_ID])
// give replicated session storage some time to synchronize
$retries = 0;
while ($COMPOSE_ID && !is_array($COMPOSE) && $RCMAIL->db->is_replicated() && $retries++ < 5) {
- usleep(500000);
- $RCMAIL->session->reload();
- if ($_SESSION['compose_data_'.$COMPOSE_ID])
- $COMPOSE =& $_SESSION['compose_data_'.$COMPOSE_ID];
+ usleep(500000);
+ $RCMAIL->session->reload();
+ if ($_SESSION['compose_data_'.$COMPOSE_ID]) {
+ $COMPOSE =& $_SESSION['compose_data_'.$COMPOSE_ID];
+ }
}
// Nothing below is called during message composition, only at "new/forward/reply/draft" initialization or
// if a compose-ID is given (i.e. when the compose step is opened in a new window/tab).
-if (!is_array($COMPOSE))
-{
- // Infinite redirect prevention in case of broken session (#1487028)
- if ($COMPOSE_ID)
- raise_error(array('code' => 500, 'type' => 'php',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Invalid compose ID"), true, true);
-
- $COMPOSE_ID = uniqid(mt_rand());
- $_SESSION['compose_data_'.$COMPOSE_ID] = array(
- 'id' => $COMPOSE_ID,
- 'param' => rcube_utils::request2param(RCUBE_INPUT_GET, 'task|action', true),
- 'mailbox' => $RCMAIL->storage->get_folder(),
- );
- $COMPOSE =& $_SESSION['compose_data_'.$COMPOSE_ID];
+if (!is_array($COMPOSE)) {
+ // Infinite redirect prevention in case of broken session (#1487028)
+ if ($COMPOSE_ID) {
+ rcube::raise_error(array('code' => 500, 'type' => 'php',
+ 'file' => __FILE__, 'line' => __LINE__,
+ 'message' => "Invalid compose ID"), true, true);
+ }
- rcmail_process_compose_params($COMPOSE);
-
- // add attachments listed by message_compose hook
- if (is_array($plugin['attachments'])) {
- foreach ($plugin['attachments'] as $attach) {
- // we have structured data
- if (is_array($attach)) {
- $attachment = $attach;
- }
- // only a file path is given
- else {
- $filename = basename($attach);
- $attachment = array(
- 'group' => $COMPOSE_ID,
- 'name' => $filename,
- 'mimetype' => rc_mime_content_type($attach, $filename),
- 'path' => $attach,
- );
- }
-
- // save attachment if valid
- if (($attachment['data'] && $attachment['name']) || ($attachment['path'] && file_exists($attachment['path']))) {
- $attachment = rcmail::get_instance()->plugins->exec_hook('attachment_save', $attachment);
- }
-
- if ($attachment['status'] && !$attachment['abort']) {
- unset($attachment['data'], $attachment['status'], $attachment['abort']);
- $COMPOSE['attachments'][$attachment['id']] = $attachment;
- }
- }
- }
-
- // check if folder for saving sent messages exists and is subscribed (#1486802)
- if ($sent_folder = $COMPOSE['param']['sent_mbox']) {
- rcmail_check_sent_folder($sent_folder, true);
- }
-
- // redirect to a unique URL with all parameters stored in session
- $OUTPUT->redirect(array(
- '_action' => 'compose',
- '_id' => $COMPOSE['id'],
- '_search' => $_REQUEST['_search'],
- ));
+ $COMPOSE_ID = uniqid(mt_rand());
+ $_SESSION['compose_data_'.$COMPOSE_ID] = array(
+ 'id' => $COMPOSE_ID,
+ 'param' => rcube_utils::request2param(rcube_utils::INPUT_GET, 'task|action', true),
+ 'mailbox' => $RCMAIL->storage->get_folder(),
+ );
+ $COMPOSE =& $_SESSION['compose_data_'.$COMPOSE_ID];
+
+ rcmail_process_compose_params($COMPOSE);
+
+ // add attachments listed by message_compose hook
+ if (is_array($plugin['attachments'])) {
+ foreach ($plugin['attachments'] as $attach) {
+ // we have structured data
+ if (is_array($attach)) {
+ $attachment = $attach;
+ }
+ // only a file path is given
+ else {
+ $filename = basename($attach);
+ $attachment = array(
+ 'group' => $COMPOSE_ID,
+ 'name' => $filename,
+ 'mimetype' => rcube_mime::file_content_type($attach, $filename),
+ 'path' => $attach,
+ );
+ }
+
+ // save attachment if valid
+ if (($attachment['data'] && $attachment['name']) || ($attachment['path'] && file_exists($attachment['path']))) {
+ $attachment = rcmail::get_instance()->plugins->exec_hook('attachment_save', $attachment);
+ }
+
+ if ($attachment['status'] && !$attachment['abort']) {
+ unset($attachment['data'], $attachment['status'], $attachment['abort']);
+ $COMPOSE['attachments'][$attachment['id']] = $attachment;
+ }
+ }
+ }
+
+ // check if folder for saving sent messages exists and is subscribed (#1486802)
+ if ($sent_folder = $COMPOSE['param']['sent_mbox']) {
+ rcmail_check_sent_folder($sent_folder, true);
+ }
+
+ // redirect to a unique URL with all parameters stored in session
+ $OUTPUT->redirect(array(
+ '_action' => 'compose',
+ '_id' => $COMPOSE['id'],
+ '_search' => $_REQUEST['_search'],
+ ));
}
@@ -109,147 +110,165 @@ if (!is_array($COMPOSE))
$OUTPUT->add_label('nosubject', 'nosenderwarning', 'norecipientwarning', 'nosubjectwarning', 'cancel',
'nobodywarning', 'notsentwarning', 'notuploadedwarning', 'savingmessage', 'sendingmessage',
'messagesaved', 'converting', 'editorwarning', 'searching', 'uploading', 'uploadingmany',
- 'fileuploaderror', 'sendmessage');
+ 'fileuploaderror', 'sendmessage', 'savenewresponse', 'responsename', 'responsetext', 'save',
+ 'savingresponse', 'restoresavedcomposedata', 'restoremessage', 'delete', 'restore', 'ignore');
-$OUTPUT->set_env('compose_id', $COMPOSE['id']);
-$OUTPUT->set_pagetitle(rcube_label('compose'));
+$OUTPUT->set_pagetitle($RCMAIL->gettext('compose'));
-// add config parameters to client script
-if (!empty($CONFIG['drafts_mbox'])) {
- $OUTPUT->set_env('drafts_mailbox', $CONFIG['drafts_mbox']);
- $OUTPUT->set_env('draft_autosave', $CONFIG['draft_autosave']);
-}
-// set current mailbox in client environment
+$OUTPUT->set_env('compose_id', $COMPOSE['id']);
+$OUTPUT->set_env('session_id', session_id());
$OUTPUT->set_env('mailbox', $RCMAIL->storage->get_folder());
$OUTPUT->set_env('top_posting', intval($RCMAIL->config->get('reply_mode')) > 0);
$OUTPUT->set_env('recipients_separator', trim($RCMAIL->config->get('recipients_separator', ',')));
+$drafts_mbox = $RCMAIL->config->get('drafts_mbox');
+$config_show_sig = $RCMAIL->config->get('show_sig', 1);
+
+// add config parameters to client script
+if (strlen($drafts_mbox)) {
+ $OUTPUT->set_env('drafts_mailbox', $drafts_mbox);
+ $OUTPUT->set_env('draft_autosave', $RCMAIL->config->get('draft_autosave'));
+}
+
// default font for HTML editor
-$font = rcube_fontdefs($RCMAIL->config->get('default_font'));
+$font = rcmail::font_defs($RCMAIL->config->get('default_font'));
if ($font && !is_array($font)) {
- $OUTPUT->set_env('default_font', $font);
+ $OUTPUT->set_env('default_font', $font);
}
// default font size for HTML editor
if ($font_size = $RCMAIL->config->get('default_font_size')) {
- $OUTPUT->set_env('default_font_size', $font_size);
+ $OUTPUT->set_env('default_font_size', $font_size);
}
// get reference message and set compose mode
if ($msg_uid = $COMPOSE['param']['draft_uid']) {
- $compose_mode = RCUBE_COMPOSE_DRAFT;
- $OUTPUT->set_env('draft_id', $msg_uid);
- $RCMAIL->storage->set_folder($CONFIG['drafts_mbox']);
+ $compose_mode = RCUBE_COMPOSE_DRAFT;
+ $OUTPUT->set_env('draft_id', $msg_uid);
+ $RCMAIL->storage->set_folder($drafts_mbox);
}
else if ($msg_uid = $COMPOSE['param']['reply_uid']) {
- $compose_mode = RCUBE_COMPOSE_REPLY;
+ $compose_mode = RCUBE_COMPOSE_REPLY;
}
else if ($msg_uid = $COMPOSE['param']['forward_uid']) {
- $compose_mode = RCUBE_COMPOSE_FORWARD;
- $COMPOSE['forward_uid'] = $msg_uid;
- $COMPOSE['as_attachment'] = !empty($COMPOSE['param']['attachment']);
+ $compose_mode = RCUBE_COMPOSE_FORWARD;
+ $COMPOSE['forward_uid'] = $msg_uid;
+ $COMPOSE['as_attachment'] = !empty($COMPOSE['param']['attachment']);
}
else if ($msg_uid = $COMPOSE['param']['uid']) {
- $compose_mode = RCUBE_COMPOSE_EDIT;
+ $compose_mode = RCUBE_COMPOSE_EDIT;
}
$COMPOSE['mode'] = $compose_mode;
$OUTPUT->set_env('compose_mode', $compose_mode);
-$config_show_sig = $RCMAIL->config->get('show_sig', 1);
if ($compose_mode == RCUBE_COMPOSE_EDIT || $compose_mode == RCUBE_COMPOSE_DRAFT) {
- // don't add signature in draft/edit mode, we'll also not remove the old-one
- // but only on page display, later we should be able to change identity/sig (#1489229)
- if ($config_show_sig == 1 || $config_show_sig == 2)
- $OUTPUT->set_env('show_sig_later', true);
+ // don't add signature in draft/edit mode, we'll also not remove the old-one
+ // but only on page display, later we should be able to change identity/sig (#1489229)
+ if ($config_show_sig == 1 || $config_show_sig == 2) {
+ $OUTPUT->set_env('show_sig_later', true);
+ }
}
else if ($config_show_sig == 1)
- $OUTPUT->set_env('show_sig', true);
+ $OUTPUT->set_env('show_sig', true);
else if ($config_show_sig == 2 && empty($compose_mode))
- $OUTPUT->set_env('show_sig', true);
+ $OUTPUT->set_env('show_sig', true);
else if ($config_show_sig == 3 && ($compose_mode == RCUBE_COMPOSE_REPLY || $compose_mode == RCUBE_COMPOSE_FORWARD))
- $OUTPUT->set_env('show_sig', true);
+ $OUTPUT->set_env('show_sig', true);
// set line length for body wrapping
$LINE_LENGTH = $RCMAIL->config->get('line_length', 72);
-if (!empty($msg_uid) && empty($COMPOSE['as_attachment']))
-{
- $mbox_name = $RCMAIL->storage->get_folder();
-
- // set format before rcube_message construction
- // use the same format as for the message view
- if (isset($_SESSION['msg_formats'][$mbox_name.':'.$msg_uid])) {
- $RCMAIL->config->set('prefer_html', $_SESSION['msg_formats'][$mbox_name.':'.$msg_uid]);
- }
- else {
- $prefer_html = $CONFIG['prefer_html'] || $CONFIG['htmleditor'] || $compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT;
- $RCMAIL->config->set('prefer_html', $prefer_html);
- }
-
- $MESSAGE = new rcube_message($msg_uid);
-
- // make sure message is marked as read
- if ($MESSAGE->headers && empty($MESSAGE->headers->flags['SEEN']))
- $RCMAIL->storage->set_flag($msg_uid, 'SEEN');
-
- if (!empty($MESSAGE->headers->charset))
- $RCMAIL->storage->set_charset($MESSAGE->headers->charset);
-
- if (!$MESSAGE->headers) {
- // error
- }
- else if ($compose_mode == RCUBE_COMPOSE_REPLY) {
- $COMPOSE['reply_uid'] = $msg_uid;
- $COMPOSE['reply_msgid'] = $MESSAGE->headers->messageID;
- $COMPOSE['references'] = trim($MESSAGE->headers->references . " " . $MESSAGE->headers->messageID);
-
- if (!empty($COMPOSE['param']['all']))
- $MESSAGE->reply_all = $COMPOSE['param']['all'];
-
- // Save the sent message in the same folder of the message being replied to
- if ($RCMAIL->config->get('reply_same_folder') && ($sent_folder = $COMPOSE['mailbox'])
- && rcmail_check_sent_folder($sent_folder, false)
- ) {
- $COMPOSE['param']['sent_mbox'] = $sent_folder;
+if (!empty($msg_uid) && empty($COMPOSE['as_attachment'])) {
+ $mbox_name = $RCMAIL->storage->get_folder();
+
+ // set format before rcube_message construction
+ // use the same format as for the message view
+ if (isset($_SESSION['msg_formats'][$mbox_name.':'.$msg_uid])) {
+ $RCMAIL->config->set('prefer_html', $_SESSION['msg_formats'][$mbox_name.':'.$msg_uid]);
+ }
+ else {
+ $prefer_html = $RCMAIL->config->get('prefer_html') || $RCMAIL->config->get('htmleditor')
+ || $compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT;
+
+ $RCMAIL->config->set('prefer_html', $prefer_html);
+ }
+
+ $MESSAGE = new rcube_message($msg_uid);
+
+ // make sure message is marked as read
+ if ($MESSAGE->headers && empty($MESSAGE->headers->flags['SEEN'])) {
+ $RCMAIL->storage->set_flag($msg_uid, 'SEEN');
+ }
+
+ if (!empty($MESSAGE->headers->charset)) {
+ $RCMAIL->storage->set_charset($MESSAGE->headers->charset);
}
- }
- else if ($compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT) {
- if ($compose_mode == RCUBE_COMPOSE_DRAFT && ($draft_info = $MESSAGE->headers->get('x-draft-info'))) {
- // get reply_uid/forward_uid to flag the original message when sending
- $info = rcmail_draftinfo_decode($draft_info);
- if ($info['type'] == 'reply')
- $COMPOSE['reply_uid'] = $info['uid'];
- else if ($info['type'] == 'forward')
- $COMPOSE['forward_uid'] = $info['uid'];
+ if (!$MESSAGE->headers) {
+ // error
+ }
+ else if ($compose_mode == RCUBE_COMPOSE_REPLY) {
+ $COMPOSE['reply_uid'] = $msg_uid;
+ $COMPOSE['reply_msgid'] = $MESSAGE->headers->messageID;
+ $COMPOSE['references'] = trim($MESSAGE->headers->references . " " . $MESSAGE->headers->messageID);
- $COMPOSE['mailbox'] = $info['folder'];
+ if (!empty($COMPOSE['param']['all'])) {
+ $MESSAGE->reply_all = $COMPOSE['param']['all'];
+ }
- // Save the sent message in the same folder of the message being replied to
- if ($RCMAIL->config->get('reply_same_folder') && ($sent_folder = $info['folder'])
- && rcmail_check_sent_folder($sent_folder, false)
- ) {
- $COMPOSE['param']['sent_mbox'] = $sent_folder;
- }
+ // Save the sent message in the same folder of the message being replied to
+ if ($RCMAIL->config->get('reply_same_folder') && ($sent_folder = $COMPOSE['mailbox'])
+ && rcmail_check_sent_folder($sent_folder, false)
+ ) {
+ $COMPOSE['param']['sent_mbox'] = $sent_folder;
+ }
}
+ else if ($compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT) {
+ if ($compose_mode == RCUBE_COMPOSE_DRAFT) {
+ if ($draft_info = $MESSAGE->headers->get('x-draft-info')) {
+ // get reply_uid/forward_uid to flag the original message when sending
+ $info = rcmail_draftinfo_decode($draft_info);
+
+ if ($info['type'] == 'reply')
+ $COMPOSE['reply_uid'] = $info['uid'];
+ else if ($info['type'] == 'forward')
+ $COMPOSE['forward_uid'] = $info['uid'];
+
+ $COMPOSE['mailbox'] = $info['folder'];
+
+ // Save the sent message in the same folder of the message being replied to
+ if ($RCMAIL->config->get('reply_same_folder') && ($sent_folder = $info['folder'])
+ && rcmail_check_sent_folder($sent_folder, false)
+ ) {
+ $COMPOSE['param']['sent_mbox'] = $sent_folder;
+ }
+ }
- if ($in_reply_to = $MESSAGE->headers->get('in-reply-to'))
- $COMPOSE['reply_msgid'] = '<' . $in_reply_to . '>';
+ $COMPOSE['param']['message-id'] = $MESSAGE->headers->get('message-id');
- $COMPOSE['references'] = $MESSAGE->headers->references;
- }
+ // use message UID as draft_id
+ $OUTPUT->set_env('draft_id', $msg_uid);
+ }
+
+ if ($in_reply_to = $MESSAGE->headers->get('in-reply-to')) {
+ $COMPOSE['reply_msgid'] = '<' . $in_reply_to . '>';
+ }
+
+ $COMPOSE['references'] = $MESSAGE->headers->references;
+ }
}
else {
- $MESSAGE = new stdClass();
-
- // apply mailto: URL parameters
- if (!empty($COMPOSE['param']['in-reply-to'])) {
- $COMPOSE['reply_msgid'] = '<' . $COMPOSE['param']['in-reply-to'] . '>';
- }
- if (!empty($COMPOSE['param']['references'])) {
- $COMPOSE['references'] = $COMPOSE['param']['references'];
- }
+ $MESSAGE = new stdClass();
+
+ // apply mailto: URL parameters
+ if (!empty($COMPOSE['param']['in-reply-to'])) {
+ $COMPOSE['reply_msgid'] = '<' . $COMPOSE['param']['in-reply-to'] . '>';
+ }
+
+ if (!empty($COMPOSE['param']['references'])) {
+ $COMPOSE['references'] = $COMPOSE['param']['references'];
+ }
}
$MESSAGE->compose = array();
@@ -259,142 +278,141 @@ $MESSAGE->identities = $RCMAIL->user->list_identities(null, true);
// Set From field value
if (!empty($_POST['_from'])) {
- $MESSAGE->compose['from'] = get_input_value('_from', RCUBE_INPUT_POST);
+ $MESSAGE->compose['from'] = rcube_utils::get_input_value('_from', rcube_utils::INPUT_POST);
}
else if (!empty($COMPOSE['param']['from'])) {
- $MESSAGE->compose['from'] = $COMPOSE['param']['from'];
+ $MESSAGE->compose['from'] = $COMPOSE['param']['from'];
}
else if (count($MESSAGE->identities)) {
- $ident = rcmail_identity_select($MESSAGE, $MESSAGE->identities, $compose_mode);
+ $ident = rcmail_identity_select($MESSAGE, $MESSAGE->identities, $compose_mode);
- $MESSAGE->compose['from_email'] = $ident['email'];
- $MESSAGE->compose['from'] = $ident['identity_id'];
+ $MESSAGE->compose['from_email'] = $ident['email'];
+ $MESSAGE->compose['from'] = $ident['identity_id'];
}
// Set other headers
$a_recipients = array();
$parts = array('to', 'cc', 'bcc', 'replyto', 'followupto');
$separator = trim($RCMAIL->config->get('recipients_separator', ',')) . ' ';
+$from_email = @mb_strtolower($MESSAGE->compose['from_email']);
foreach ($parts as $header) {
- $fvalue = '';
- $decode_header = true;
-
- // we have a set of recipients stored is session
- if ($header == 'to' && ($mailto_id = $COMPOSE['param']['mailto'])
- && $_SESSION['mailto'][$mailto_id]
- ) {
- $fvalue = urldecode($_SESSION['mailto'][$mailto_id]);
- $decode_header = false;
-
- // make session to not grow up too much
- unset($_SESSION['mailto'][$mailto_id]);
- $COMPOSE['param']['to'] = $fvalue;
- }
- else if (!empty($_POST['_'.$header])) {
- $fvalue = get_input_value('_'.$header, RCUBE_INPUT_POST, TRUE);
- }
- else if (!empty($COMPOSE['param'][$header])) {
- $fvalue = $COMPOSE['param'][$header];
- }
- else if ($compose_mode == RCUBE_COMPOSE_REPLY) {
- // get recipent address(es) out of the message headers
- if ($header == 'to') {
- $mailfollowup = $MESSAGE->headers->others['mail-followup-to'];
- $mailreplyto = $MESSAGE->headers->others['mail-reply-to'];
-
- // Reply to mailing list...
- if ($MESSAGE->reply_all == 'list' && $mailfollowup)
- $fvalue = $mailfollowup;
- else if ($MESSAGE->reply_all == 'list'
- && preg_match('/<mailto:([^>]+)>/i', $MESSAGE->headers->others['list-post'], $m))
- $fvalue = $m[1];
- // Reply to...
- else if ($MESSAGE->reply_all && $mailfollowup)
- $fvalue = $mailfollowup;
- else if ($mailreplyto)
- $fvalue = $mailreplyto;
- else if (!empty($MESSAGE->headers->replyto))
- $fvalue = $MESSAGE->headers->replyto;
- else if (!empty($MESSAGE->headers->from))
- $fvalue = $MESSAGE->headers->from;
-
- // Reply to message sent by yourself (#1487074, #1489230)
- if (!empty($ident) && in_array($ident['ident'], array($fvalue, $MESSAGE->headers->from))) {
- $fvalue = $MESSAGE->headers->to;
- }
- }
- // add recipient of original message if reply to all
- else if ($header == 'cc' && !empty($MESSAGE->reply_all) && $MESSAGE->reply_all != 'list') {
- if ($v = $MESSAGE->headers->to)
- $fvalue .= $v;
- if ($v = $MESSAGE->headers->cc)
- $fvalue .= (!empty($fvalue) ? $separator : '') . $v;
- // Use Sender header (#1489011)
- if (($v = $MESSAGE->headers->get('Sender', false)) && strpos($v, '-bounces@') === false)
- $fvalue .= (!empty($fvalue) ? $separator : '') . $v;
-
- // When To: and Reply-To: are the same we add From: address to the list (#1489037)
- if ($v = $MESSAGE->headers->from) {
- $from = rcube_mime::decode_address_list($v, null, false, $MESSAGE->headers->charset, true);
- $to = rcube_mime::decode_address_list($MESSAGE->headers->to, null, false, $MESSAGE->headers->charset, true);
- $replyto = rcube_mime::decode_address_list($MESSAGE->headers->replyto, null, false, $MESSAGE->headers->charset, true);
-
- if (count($replyto) && !count(array_diff($to, $replyto)) && count(array_diff($from, $to))) {
- $fvalue .= (!empty($fvalue) ? $separator : '') . $v;
- }
- }
- }
- }
- else if (in_array($compose_mode, array(RCUBE_COMPOSE_DRAFT, RCUBE_COMPOSE_EDIT))) {
- // get drafted headers
- if ($header=='to' && !empty($MESSAGE->headers->to))
- $fvalue = $MESSAGE->get_header('to', true);
- else if ($header=='cc' && !empty($MESSAGE->headers->cc))
- $fvalue = $MESSAGE->get_header('cc', true);
- else if ($header=='bcc' && !empty($MESSAGE->headers->bcc))
- $fvalue = $MESSAGE->get_header('bcc', true);
- else if ($header=='replyto' && !empty($MESSAGE->headers->others['mail-reply-to']))
- $fvalue = $MESSAGE->get_header('mail-reply-to');
- else if ($header=='replyto' && !empty($MESSAGE->headers->replyto))
- $fvalue = $MESSAGE->get_header('reply-to');
- else if ($header=='followupto' && !empty($MESSAGE->headers->others['mail-followup-to']))
- $fvalue = $MESSAGE->get_header('mail-followup-to');
- }
-
- // split recipients and put them back together in a unique way
- if (!empty($fvalue) && in_array($header, array('to', 'cc', 'bcc'))) {
- $to_addresses = rcube_mime::decode_address_list($fvalue, null, $decode_header, $MESSAGE->headers->charset);
- $fvalue = array();
-
- foreach ($to_addresses as $addr_part) {
- if (empty($addr_part['mailto']))
- continue;
-
- $mailto = format_email(rcube_idn_to_utf8($addr_part['mailto']));
-
- if (!in_array($mailto, $a_recipients)
- && (
- $header == 'to'
- || $compose_mode != RCUBE_COMPOSE_REPLY
- || empty($MESSAGE->compose['from_email'])
- || $mailto != $MESSAGE->compose['from_email']
- )
- ) {
- if ($addr_part['name'] && $addr_part['mailto'] != $addr_part['name'])
- $string = format_email_recipient($mailto, $addr_part['name']);
- else
- $string = $mailto;
+ $fvalue = '';
+ $decode_header = true;
+
+ // we have a set of recipients stored is session
+ if ($header == 'to' && ($mailto_id = $COMPOSE['param']['mailto'])
+ && $_SESSION['mailto'][$mailto_id]
+ ) {
+ $fvalue = urldecode($_SESSION['mailto'][$mailto_id]);
+ $decode_header = false;
- $fvalue[] = $string;
- $a_recipients[] = $addr_part['mailto'];
- }
+ // make session to not grow up too much
+ unset($_SESSION['mailto'][$mailto_id]);
+ $COMPOSE['param']['to'] = $fvalue;
+ }
+ else if (!empty($_POST['_'.$header])) {
+ $fvalue = rcube_utils::get_input_value('_'.$header, rcube_utils::INPUT_POST, TRUE);
+ }
+ else if (!empty($COMPOSE['param'][$header])) {
+ $fvalue = $COMPOSE['param'][$header];
}
+ else if ($compose_mode == RCUBE_COMPOSE_REPLY) {
+ // get recipent address(es) out of the message headers
+ if ($header == 'to') {
+ $mailfollowup = $MESSAGE->headers->others['mail-followup-to'];
+ $mailreplyto = $MESSAGE->headers->others['mail-reply-to'];
+
+ // Reply to mailing list...
+ if ($MESSAGE->reply_all == 'list' && $mailfollowup)
+ $fvalue = $mailfollowup;
+ else if ($MESSAGE->reply_all == 'list'
+ && preg_match('/<mailto:([^>]+)>/i', $MESSAGE->headers->others['list-post'], $m))
+ $fvalue = $m[1];
+ // Reply to...
+ else if ($MESSAGE->reply_all && $mailfollowup)
+ $fvalue = $mailfollowup;
+ else if ($mailreplyto)
+ $fvalue = $mailreplyto;
+ else if (!empty($MESSAGE->headers->replyto))
+ $fvalue = $MESSAGE->headers->replyto;
+ else if (!empty($MESSAGE->headers->from))
+ $fvalue = $MESSAGE->headers->from;
+
+ // Reply to message sent by yourself (#1487074, #1489230)
+ if (!empty($ident) && in_array($ident['ident'], array($fvalue, $MESSAGE->headers->from))) {
+ $fvalue = $MESSAGE->headers->to;
+ }
+ }
+ // add recipient of original message if reply to all
+ else if ($header == 'cc' && !empty($MESSAGE->reply_all) && $MESSAGE->reply_all != 'list') {
+ if ($v = $MESSAGE->headers->to)
+ $fvalue .= $v;
+ if ($v = $MESSAGE->headers->cc)
+ $fvalue .= (!empty($fvalue) ? $separator : '') . $v;
+ // Use Sender header (#1489011)
+ if (($v = $MESSAGE->headers->get('Sender', false)) && strpos($v, '-bounces@') === false)
+ $fvalue .= (!empty($fvalue) ? $separator : '') . $v;
+
+ // When To: and Reply-To: are the same we add From: address to the list (#1489037)
+ if ($v = $MESSAGE->headers->from) {
+ $from = rcube_mime::decode_address_list($v, null, false, $MESSAGE->headers->charset, true);
+ $to = rcube_mime::decode_address_list($MESSAGE->headers->to, null, false, $MESSAGE->headers->charset, true);
+ $replyto = rcube_mime::decode_address_list($MESSAGE->headers->replyto, null, false, $MESSAGE->headers->charset, true);
+
+ if (count($replyto) && !count(array_diff($to, $replyto)) && count(array_diff($from, $to))) {
+ $fvalue .= (!empty($fvalue) ? $separator : '') . $v;
+ }
+ }
+ }
+ }
+ else if (in_array($compose_mode, array(RCUBE_COMPOSE_DRAFT, RCUBE_COMPOSE_EDIT))) {
+ // get drafted headers
+ if ($header=='to' && !empty($MESSAGE->headers->to))
+ $fvalue = $MESSAGE->get_header('to', true);
+ else if ($header=='cc' && !empty($MESSAGE->headers->cc))
+ $fvalue = $MESSAGE->get_header('cc', true);
+ else if ($header=='bcc' && !empty($MESSAGE->headers->bcc))
+ $fvalue = $MESSAGE->get_header('bcc', true);
+ else if ($header=='replyto' && !empty($MESSAGE->headers->others['mail-reply-to']))
+ $fvalue = $MESSAGE->get_header('mail-reply-to');
+ else if ($header=='replyto' && !empty($MESSAGE->headers->replyto))
+ $fvalue = $MESSAGE->get_header('reply-to');
+ else if ($header=='followupto' && !empty($MESSAGE->headers->others['mail-followup-to']))
+ $fvalue = $MESSAGE->get_header('mail-followup-to');
+ }
+
+ // split recipients and put them back together in a unique way
+ if (!empty($fvalue) && in_array($header, array('to', 'cc', 'bcc'))) {
+ $to_addresses = rcube_mime::decode_address_list($fvalue, null, $decode_header, $MESSAGE->headers->charset);
+ $fvalue = array();
- $fvalue = implode($separator, $fvalue);
- }
+ foreach ($to_addresses as $addr_part) {
+ if (empty($addr_part['mailto'])) {
+ continue;
+ }
- $MESSAGE->compose[$header] = $fvalue;
+ // According to RFC5321 local part of email address is case-sensitive
+ // however, here it is better to compare addresses in case-insensitive manner
+ $mailto = format_email(rcube_utils::idn_to_utf8($addr_part['mailto']));
+ $mailto_lc = mb_strtolower($addr_part['mailto']);
+
+ if (($header == 'to' || $compose_mode != RCUBE_COMPOSE_REPLY || $mailto_lc != $from_email)
+ && !in_array($mailto_lc, $a_recipients)
+ ) {
+ if ($addr_part['name'] && $mailto != $addr_part['name']) {
+ $mailto = format_email_recipient($mailto, $addr_part['name']);
+ }
+
+ $fvalue[] = $mailto;
+ $a_recipients[] = $mailto_lc;
+ }
+ }
+
+ $fvalue = implode($separator, $fvalue);
+ }
+
+ $MESSAGE->compose[$header] = $fvalue;
}
unset($a_recipients);
@@ -402,322 +420,354 @@ unset($a_recipients);
$MESSAGE_BODY = rcmail_prepare_message_body();
+// register UI objects
+$OUTPUT->add_handlers(array(
+ 'composeheaders' => 'rcmail_compose_headers',
+ 'composesubject' => 'rcmail_compose_subject',
+ 'composebody' => 'rcmail_compose_body',
+ 'composeattachmentlist' => 'rcmail_compose_attachment_list',
+ 'composeattachmentform' => 'rcmail_compose_attachment_form',
+ 'composeattachment' => 'rcmail_compose_attachment_field',
+ 'filedroparea' => 'compose_file_drop_area',
+ 'priorityselector' => 'rcmail_priority_selector',
+ 'editorselector' => 'rcmail_editor_selector',
+ 'receiptcheckbox' => 'rcmail_receipt_checkbox',
+ 'dsncheckbox' => 'rcmail_dsn_checkbox',
+ 'storetarget' => 'rcmail_store_target_selection',
+ 'addressbooks' => 'rcmail_addressbook_list',
+ 'addresslist' => 'rcmail_contacts_list',
+ 'responseslist' => 'rcmail_compose_responses_list',
+));
+
+$OUTPUT->send('compose');
+
+
/****** compose mode functions ********/
// process compose request parameters
function rcmail_process_compose_params(&$COMPOSE)
{
- if ($COMPOSE['param']['to']) {
- $mailto = explode('?', $COMPOSE['param']['to'], 2);
+ if ($COMPOSE['param']['to']) {
+ $mailto = explode('?', $COMPOSE['param']['to'], 2);
- // #1486037: remove "mailto:" prefix
- $COMPOSE['param']['to'] = preg_replace('/^mailto:/i', '', $mailto[0]);
+ // #1486037: remove "mailto:" prefix
+ $COMPOSE['param']['to'] = preg_replace('/^mailto:/i', '', $mailto[0]);
- // Supported case-insensitive tokens in mailto URL
- $url_tokens = array('to', 'cc', 'bcc', 'reply-to', 'in-reply-to', 'references', 'subject', 'body');
+ // Supported case-insensitive tokens in mailto URL
+ $url_tokens = array('to', 'cc', 'bcc', 'reply-to', 'in-reply-to', 'references', 'subject', 'body');
- if (!empty($mailto[1])) {
- parse_str($mailto[1], $query);
- foreach ($query as $f => $val) {
- if (($key = array_search(strtolower($f), $url_tokens)) !== false) {
- $f = $url_tokens[$key];
- }
+ if (!empty($mailto[1])) {
+ parse_str($mailto[1], $query);
+ foreach ($query as $f => $val) {
+ if (($key = array_search(strtolower($f), $url_tokens)) !== false) {
+ $f = $url_tokens[$key];
+ }
- // merge mailto: addresses with addresses from 'to' parameter
- if ($f == 'to' && !empty($COMPOSE['param']['to'])) {
- $to_addresses = rcube_mime::decode_address_list($COMPOSE['param']['to'], null, true, null, true);
- $add_addresses = rcube_mime::decode_address_list($val, null, true);
- foreach ($add_addresses as $addr) {
- if (!in_array($addr['mailto'], $to_addresses)) {
- $to_addresses[] = $addr['mailto'];
- $COMPOSE['param']['to'] = (!empty($to_addresses) ? ', ' : '') . $addr['string'];
+ // merge mailto: addresses with addresses from 'to' parameter
+ if ($f == 'to' && !empty($COMPOSE['param']['to'])) {
+ $to_addresses = rcube_mime::decode_address_list($COMPOSE['param']['to'], null, true, null, true);
+ $add_addresses = rcube_mime::decode_address_list($val, null, true);
+
+ foreach ($add_addresses as $addr) {
+ if (!in_array($addr['mailto'], $to_addresses)) {
+ $to_addresses[] = $addr['mailto'];
+ $COMPOSE['param']['to'] = (!empty($to_addresses) ? ', ' : '') . $addr['string'];
+ }
+ }
+ }
+ else {
+ $COMPOSE['param'][$f] = $val;
+ }
}
- }
- }
- else {
- $COMPOSE['param'][$f] = $val;
}
- }
}
- }
- $RCMAIL = rcmail::get_instance();
+ // clean HTML message body which can be submitted by URL
+ if (!empty($COMPOSE['param']['body'])) {
+ $COMPOSE['param']['body'] = rcmail_wash_html($COMPOSE['param']['body'], array('safe' => false, 'inline_html' => true), array());
+ }
+
+ $RCMAIL = rcmail::get_instance();
- // select folder where to save the sent message
- $COMPOSE['param']['sent_mbox'] = $RCMAIL->config->get('sent_mbox');
+ // select folder where to save the sent message
+ $COMPOSE['param']['sent_mbox'] = $RCMAIL->config->get('sent_mbox');
- // pipe compose parameters thru plugins
- $plugin = $RCMAIL->plugins->exec_hook('message_compose', $COMPOSE);
- $COMPOSE['param'] = array_merge($COMPOSE['param'], $plugin['param']);
+ // pipe compose parameters thru plugins
+ $plugin = $RCMAIL->plugins->exec_hook('message_compose', $COMPOSE);
+ $COMPOSE['param'] = array_merge($COMPOSE['param'], $plugin['param']);
}
function rcmail_compose_headers($attrib)
{
- global $MESSAGE;
+ global $RCMAIL, $MESSAGE;
- list($form_start,) = get_form_tags($attrib);
+ list($form_start,) = get_form_tags($attrib);
- $out = '';
- $part = strtolower($attrib['part']);
+ $out = '';
+ $part = strtolower($attrib['part']);
- switch ($part)
- {
+ switch ($part) {
case 'from':
- return $form_start . rcmail_compose_header_from($attrib);
+ return $form_start . rcmail_compose_header_from($attrib);
case 'to':
case 'cc':
case 'bcc':
- $fname = '_' . $part;
- $header = $param = $part;
+ $fname = '_' . $part;
+ $header = $param = $part;
- $allow_attrib = array('id', 'class', 'style', 'cols', 'rows', 'tabindex');
- $field_type = 'html_textarea';
- break;
+ $allow_attrib = array('id', 'class', 'style', 'cols', 'rows', 'tabindex');
+ $field_type = 'html_textarea';
+ break;
case 'replyto':
case 'reply-to':
- $fname = '_replyto';
- $param = 'replyto';
- $header = 'reply-to';
+ $fname = '_replyto';
+ $param = 'replyto';
+ $header = 'reply-to';
case 'followupto':
case 'followup-to':
- if (!$fname) {
- $fname = '_followupto';
- $param = 'followupto';
- $header = 'mail-followup-to';
- }
-
- $allow_attrib = array('id', 'class', 'style', 'size', 'tabindex');
- $field_type = 'html_inputfield';
- break;
- }
-
- if ($fname && $field_type)
- {
- // pass the following attributes to the form class
- $field_attrib = array('name' => $fname, 'spellcheck' => 'false');
- foreach ($attrib as $attr => $value)
- if (in_array($attr, $allow_attrib))
- $field_attrib[$attr] = $value;
+ if (!$fname) {
+ $fname = '_followupto';
+ $param = 'followupto';
+ $header = 'mail-followup-to';
+ }
- // create teaxtarea object
- $input = new $field_type($field_attrib);
- $out = $input->show($MESSAGE->compose[$param]);
- }
+ $allow_attrib = array('id', 'class', 'style', 'size', 'tabindex');
+ $field_type = 'html_inputfield';
+ break;
+ }
- if ($form_start)
- $out = $form_start.$out;
+ if ($fname && $field_type) {
+ // pass the following attributes to the form class
+ $field_attrib = array('name' => $fname, 'spellcheck' => 'false');
+ foreach ($attrib as $attr => $value) {
+ if (in_array($attr, $allow_attrib)) {
+ $field_attrib[$attr] = $value;
+ }
+ }
- // configure autocompletion
- rcube_autocomplete_init();
+ // create teaxtarea object
+ $input = new $field_type($field_attrib);
+ $out = $input->show($MESSAGE->compose[$param]);
+ }
+
+ if ($form_start) {
+ $out = $form_start . $out;
+ }
- return $out;
+ // configure autocompletion
+ $RCMAIL->autocomplete_init();
+
+ return $out;
}
function rcmail_compose_header_from($attrib)
{
- global $MESSAGE, $OUTPUT, $RCMAIL, $COMPOSE, $compose_mode;
-
- // pass the following attributes to the form class
- $field_attrib = array('name' => '_from');
- foreach ($attrib as $attr => $value)
- if (in_array($attr, array('id', 'class', 'style', 'size', 'tabindex')))
- $field_attrib[$attr] = $value;
-
- if (count($MESSAGE->identities))
- {
- $a_signatures = array();
- $identities = array();
- $separator = intval($RCMAIL->config->get('reply_mode')) > 0
- && ($compose_mode == RCUBE_COMPOSE_REPLY || $compose_mode == RCUBE_COMPOSE_FORWARD) ? '---' : '-- ';
-
- $field_attrib['onchange'] = JS_OBJECT_NAME.".change_identity(this)";
- $select_from = new html_select($field_attrib);
-
- // create SELECT element
- foreach ($MESSAGE->identities as $sql_arr)
- {
- $identity_id = $sql_arr['identity_id'];
- $select_from->add(format_email_recipient($sql_arr['email'], $sql_arr['name']), $identity_id);
-
- // add signature to array
- if (!empty($sql_arr['signature']) && empty($COMPOSE['param']['nosig']))
- {
- $text = $html = $sql_arr['signature'];
-
- if ($sql_arr['html_signature']) {
- $h2t = new rcube_html2text($sql_arr['signature'], false, false);
- $text = trim($h2t->get_text());
- }
- else {
- $html = htmlentities($html, ENT_NOQUOTES, RCMAIL_CHARSET);
- }
+ global $MESSAGE, $OUTPUT, $RCMAIL, $COMPOSE, $compose_mode;
- if (!preg_match('/^--[ -]\r?\n/m', $text)) {
- $text = $separator . "\n" . $text;
- $html = $separator . "<br>" . $html;
+ // pass the following attributes to the form class
+ $field_attrib = array('name' => '_from');
+ foreach ($attrib as $attr => $value) {
+ if (in_array($attr, array('id', 'class', 'style', 'size', 'tabindex'))) {
+ $field_attrib[$attr] = $value;
}
+ }
+
+ if (count($MESSAGE->identities)) {
+ $a_signatures = array();
+ $identities = array();
+ $separator = intval($RCMAIL->config->get('reply_mode')) > 0
+ && ($compose_mode == RCUBE_COMPOSE_REPLY || $compose_mode == RCUBE_COMPOSE_FORWARD) ? '---' : '-- ';
+
+ $field_attrib['onchange'] = rcmail_output::JS_OBJECT_NAME.".change_identity(this)";
+ $select_from = new html_select($field_attrib);
+
+ // create SELECT element
+ foreach ($MESSAGE->identities as $sql_arr) {
+ $identity_id = $sql_arr['identity_id'];
+ $select_from->add(format_email_recipient($sql_arr['email'], $sql_arr['name']), $identity_id);
+
+ // add signature to array
+ if (!empty($sql_arr['signature']) && empty($COMPOSE['param']['nosig'])) {
+ $text = $html = $sql_arr['signature'];
+
+ if ($sql_arr['html_signature']) {
+ $h2t = new rcube_html2text($sql_arr['signature'], false, false);
+ $text = trim($h2t->get_text());
+ }
+ else {
+ $html = htmlentities($html, ENT_NOQUOTES, RCUBE_CHARSET);
+ }
- if (!$sql_arr['html_signature']) {
- $html = "<pre>" . $html . "</pre>";
+ if (!preg_match('/^--[ -]\r?\n/m', $text)) {
+ $text = $separator . "\n" . $text;
+ $html = $separator . "<br>" . $html;
+ }
+
+ if (!$sql_arr['html_signature']) {
+ $html = "<pre>" . $html . "</pre>";
+ }
+
+ $a_signatures[$identity_id]['text'] = $text;
+ $a_signatures[$identity_id]['html'] = $html;
+ }
+
+ // add bcc and reply-to
+ if (!empty($sql_arr['reply-to'])) {
+ $identities[$identity_id]['replyto'] = $sql_arr['reply-to'];
+ }
+ if (!empty($sql_arr['bcc'])) {
+ $identities[$identity_id]['bcc'] = $sql_arr['bcc'];
+ }
}
- $a_signatures[$identity_id]['text'] = $text;
- $a_signatures[$identity_id]['html'] = $html;
- }
-
- // add bcc and reply-to
- if (!empty($sql_arr['reply-to'])) {
- $identities[$identity_id]['replyto'] = $sql_arr['reply-to'];
- }
- if (!empty($sql_arr['bcc'])) {
- $identities[$identity_id]['bcc'] = $sql_arr['bcc'];
- }
- }
-
- $out = $select_from->show($MESSAGE->compose['from']);
-
- // add signatures to client
- $OUTPUT->set_env('signatures', $a_signatures);
- $OUTPUT->set_env('identities', $identities);
- }
- // no identities, display text input field
- else {
- $field_attrib['class'] = 'from_address';
- $input_from = new html_inputfield($field_attrib);
- $out = $input_from->show($MESSAGE->compose['from']);
- }
-
- return $out;
+ $out = $select_from->show($MESSAGE->compose['from']);
+
+ // add signatures to client
+ $OUTPUT->set_env('signatures', $a_signatures);
+ $OUTPUT->set_env('identities', $identities);
+ }
+ // no identities, display text input field
+ else {
+ $field_attrib['class'] = 'from_address';
+ $input_from = new html_inputfield($field_attrib);
+ $out = $input_from->show($MESSAGE->compose['from']);
+ }
+
+ return $out;
}
function rcmail_compose_editor_mode()
{
- global $RCMAIL, $compose_mode;
- static $useHtml;
+ global $RCMAIL, $compose_mode;
+ static $useHtml;
- if ($useHtml !== null)
- return $useHtml;
+ if ($useHtml !== null) {
+ return $useHtml;
+ }
+
+ $html_editor = intval($RCMAIL->config->get('htmleditor'));
+
+ if (isset($_POST['_is_html'])) {
+ $useHtml = !empty($_POST['_is_html']);
+ }
+ else if ($compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT) {
+ $useHtml = rcmail_message_is_html();
+ }
+ else if ($compose_mode == RCUBE_COMPOSE_REPLY) {
+ $useHtml = ($html_editor == 1 || ($html_editor >= 2 && rcmail_message_is_html()));
+ }
+ else if ($compose_mode == RCUBE_COMPOSE_FORWARD) {
+ $useHtml = ($html_editor == 1 || ($html_editor == 3 && rcmail_message_is_html()));
+ }
+ else {
+ $useHtml = ($html_editor == 1);
+ }
- $html_editor = intval($RCMAIL->config->get('htmleditor'));
-
- if (isset($_POST['_is_html'])) {
- $useHtml = !empty($_POST['_is_html']);
- }
- else if ($compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT) {
- $useHtml = rcmail_message_is_html();
- }
- else if ($compose_mode == RCUBE_COMPOSE_REPLY) {
- $useHtml = ($html_editor == 1 || ($html_editor >= 2 && rcmail_message_is_html()));
- }
- else if ($compose_mode == RCUBE_COMPOSE_FORWARD) {
- $useHtml = ($html_editor == 1 || ($html_editor == 3 && rcmail_message_is_html()));
- }
- else {
- $useHtml = ($html_editor == 1);
- }
-
- return $useHtml;
+ return $useHtml;
}
function rcmail_message_is_html()
{
global $RCMAIL, $MESSAGE;
+
return $RCMAIL->config->get('prefer_html') && ($MESSAGE instanceof rcube_message) && $MESSAGE->has_html_part(true);
}
function rcmail_prepare_message_body()
{
- global $RCMAIL, $MESSAGE, $COMPOSE, $compose_mode, $HTML_MODE;
-
- // use posted message body
- if (!empty($_POST['_message'])) {
- $body = get_input_value('_message', RCUBE_INPUT_POST, true);
- $isHtml = (bool) get_input_value('_is_html', RCUBE_INPUT_POST);
- }
- else if ($COMPOSE['param']['body']) {
- $body = $COMPOSE['param']['body'];
- $isHtml = false;
- }
- // forward as attachment
- else if ($compose_mode == RCUBE_COMPOSE_FORWARD && $COMPOSE['as_attachment']) {
- $isHtml = rcmail_compose_editor_mode();
- $body = '';
- rcmail_write_forward_attachments();
- }
- // reply/edit/draft/forward
- else if ($compose_mode && ($compose_mode != RCUBE_COMPOSE_REPLY || intval($RCMAIL->config->get('reply_mode')) != -1)) {
- $isHtml = rcmail_compose_editor_mode();
- $messages = array();
+ global $RCMAIL, $MESSAGE, $COMPOSE, $compose_mode, $HTML_MODE;
- if (!empty($MESSAGE->parts)) {
- // collect IDs of message/rfc822 parts
- if ($compose_mode == RCUBE_COMPOSE_EDIT || $compose_mode == RCUBE_COMPOSE_DRAFT) {
- foreach ($MESSAGE->attachments as $part) {
- if ($part->mimetype == 'message/rfc822') {
- $messages[] = $part->mime_id;
- }
- }
- }
+ // use posted message body
+ if (!empty($_POST['_message'])) {
+ $body = rcube_utils::get_input_value('_message', rcube_utils::INPUT_POST, true);
+ $isHtml = (bool) rcube_utils::get_input_value('_is_html', rcube_utils::INPUT_POST);
+ }
+ else if ($COMPOSE['param']['body']) {
+ $body = $COMPOSE['param']['body'];
+ $isHtml = (bool) $COMPOSE['param']['html'];
+ }
+ // forward as attachment
+ else if ($compose_mode == RCUBE_COMPOSE_FORWARD && $COMPOSE['as_attachment']) {
+ $isHtml = rcmail_compose_editor_mode();
+ $body = '';
- foreach ($MESSAGE->parts as $part) {
- // skip no-content and attachment parts (#1488557)
- if ($part->type != 'content' || !$part->size || $MESSAGE->is_attachment($part)) {
- continue;
- }
+ rcmail_write_forward_attachments();
+ }
+ // reply/edit/draft/forward
+ else if ($compose_mode && ($compose_mode != RCUBE_COMPOSE_REPLY || intval($RCMAIL->config->get('reply_mode')) != -1)) {
+ $isHtml = rcmail_compose_editor_mode();
+ $messages = array();
+
+ if (!empty($MESSAGE->parts)) {
+ // collect IDs of message/rfc822 parts
+ if ($compose_mode == RCUBE_COMPOSE_EDIT || $compose_mode == RCUBE_COMPOSE_DRAFT) {
+ foreach ($MESSAGE->attachments as $part) {
+ if ($part->mimetype == 'message/rfc822') {
+ $messages[] = $part->mime_id;
+ }
+ }
+ }
+
+ foreach ($MESSAGE->parts as $part) {
+ // skip no-content and attachment parts (#1488557)
+ if ($part->type != 'content' || !$part->size || $MESSAGE->is_attachment($part)) {
+ continue;
+ }
- // skip all content parts inside the message/rfc822 part in DRAFT/EDIT mode
- foreach ($messages as $mimeid) {
- if (strpos($part->mime_id, $mimeid . '.') === 0) {
- continue 2;
- }
+ // skip all content parts inside the message/rfc822 part in DRAFT/EDIT mode
+ foreach ($messages as $mimeid) {
+ if (strpos($part->mime_id, $mimeid . '.') === 0) {
+ continue 2;
+ }
+ }
+
+ if ($part_body = rcmail_compose_part_body($part, $isHtml)) {
+ $body .= ($body ? ($isHtml ? '<br/>' : "\n") : '') . $part_body;
+ }
+ }
+ }
+ else {
+ $body = rcmail_compose_part_body($MESSAGE, $isHtml);
}
- if ($part_body = rcmail_compose_part_body($part, $isHtml)) {
- $body .= ($body ? ($isHtml ? '<br/>' : "\n") : '') . $part_body;
+ // compose reply-body
+ if ($compose_mode == RCUBE_COMPOSE_REPLY)
+ $body = rcmail_create_reply_body($body, $isHtml);
+ // forward message body inline
+ else if ($compose_mode == RCUBE_COMPOSE_FORWARD)
+ $body = rcmail_create_forward_body($body, $isHtml);
+ // load draft message body
+ else if ($compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT)
+ $body = rcmail_create_draft_body($body, $isHtml);
+ }
+ else { // new message
+ $isHtml = rcmail_compose_editor_mode();
+ }
+
+ $plugin = $RCMAIL->plugins->exec_hook('message_compose_body',
+ array('body' => $body, 'html' => $isHtml, 'mode' => $compose_mode));
+
+ $body = $plugin['body'];
+ unset($plugin);
+
+ // add blocked.gif attachment (#1486516)
+ if ($isHtml && preg_match('#<img src="\./program/resources/blocked\.gif"#', $body)) {
+ if ($attachment = rcmail_save_image('program/resources/blocked.gif', 'image/gif')) {
+ $COMPOSE['attachments'][$attachment['id']] = $attachment;
+ $url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s',
+ $RCMAIL->comm_path, $COMPOSE['id'], $attachment['id']);
+ $body = preg_replace('#\./program/resources/blocked\.gif#', $url, $body);
}
- }
}
- else {
- $body = rcmail_compose_part_body($MESSAGE, $isHtml);
- }
-
- // compose reply-body
- if ($compose_mode == RCUBE_COMPOSE_REPLY)
- $body = rcmail_create_reply_body($body, $isHtml);
- // forward message body inline
- else if ($compose_mode == RCUBE_COMPOSE_FORWARD)
- $body = rcmail_create_forward_body($body, $isHtml);
- // load draft message body
- else if ($compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT)
- $body = rcmail_create_draft_body($body, $isHtml);
- }
- else { // new message
- $isHtml = rcmail_compose_editor_mode();
- }
-
- $plugin = $RCMAIL->plugins->exec_hook('message_compose_body',
- array('body' => $body, 'html' => $isHtml, 'mode' => $compose_mode));
- $body = $plugin['body'];
- unset($plugin);
-
- // add blocked.gif attachment (#1486516)
- if ($isHtml && preg_match('#<img src="\./program/resources/blocked\.gif"#', $body)) {
- if ($attachment = rcmail_save_image('program/resources/blocked.gif', 'image/gif')) {
- $COMPOSE['attachments'][$attachment['id']] = $attachment;
- $url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s',
- $RCMAIL->comm_path, $COMPOSE['id'], $attachment['id']);
- $body = preg_replace('#\./program/resources/blocked\.gif#', $url, $body);
- }
- }
-
- $HTML_MODE = $isHtml;
-
- return $body;
+
+ $HTML_MODE = $isHtml;
+
+ return $body;
}
function rcmail_compose_part_body($part, $isHtml = false)
@@ -726,7 +776,7 @@ function rcmail_compose_part_body($part, $isHtml = false)
// Check if we have enough memory to handle the message in it
// #1487424: we need up to 10x more memory than the body
- if (!rcmail_mem_check($part->size * 10)) {
+ if (!rcube_utils::mem_check($part->size * 10)) {
return '';
}
@@ -803,892 +853,903 @@ function rcmail_compose_part_body($part, $isHtml = false)
function rcmail_compose_body($attrib)
{
- global $RCMAIL, $CONFIG, $OUTPUT, $MESSAGE, $compose_mode, $HTML_MODE, $MESSAGE_BODY;
+ global $RCMAIL, $OUTPUT, $HTML_MODE, $MESSAGE_BODY;
- list($form_start, $form_end) = get_form_tags($attrib);
- unset($attrib['form']);
+ list($form_start, $form_end) = get_form_tags($attrib);
+ unset($attrib['form']);
- if (empty($attrib['id']))
- $attrib['id'] = 'rcmComposeBody';
+ if (empty($attrib['id']))
+ $attrib['id'] = 'rcmComposeBody';
- $attrib['name'] = '_message';
+ $attrib['name'] = '_message';
- $isHtml = $HTML_MODE;
+ $isHtml = $HTML_MODE;
- $out = $form_start ? "$form_start\n" : '';
+ $out = $form_start ? "$form_start\n" : '';
- $saveid = new html_hiddenfield(array('name' => '_draft_saveid', 'value' => $compose_mode==RCUBE_COMPOSE_DRAFT ? str_replace(array('<','>'), "", $MESSAGE->headers->messageID) : ''));
- $out .= $saveid->show();
+ $saveid = new html_hiddenfield(array('name' => '_draft_saveid', 'value' => $RCMAIL->output->get_env('draft_id')));
+ $out .= $saveid->show();
- $drafttoggle = new html_hiddenfield(array('name' => '_draft', 'value' => 'yes'));
- $out .= $drafttoggle->show();
+ $drafttoggle = new html_hiddenfield(array('name' => '_draft', 'value' => 'yes'));
+ $out .= $drafttoggle->show();
- $msgtype = new html_hiddenfield(array('name' => '_is_html', 'value' => ($isHtml?"1":"0")));
- $out .= $msgtype->show();
+ $msgtype = new html_hiddenfield(array('name' => '_is_html', 'value' => ($isHtml ? "1" : "0")));
+ $out .= $msgtype->show();
- // If desired, set this textarea to be editable by TinyMCE
- if ($isHtml) {
- $MESSAGE_BODY = htmlentities($MESSAGE_BODY, ENT_NOQUOTES, RCMAIL_CHARSET);
- $attrib['class'] = 'mce_editor';
- $attrib['is_escaped'] = true;
- $textarea = new html_textarea($attrib);
- $out .= $textarea->show($MESSAGE_BODY);
- }
- else {
- $textarea = new html_textarea($attrib);
- $out .= $textarea->show('');
- // quote plain text, inject into textarea
- $table = get_html_translation_table(HTML_SPECIALCHARS);
- $MESSAGE_BODY = strtr($MESSAGE_BODY, $table);
- $out = substr($out, 0, -11) . $MESSAGE_BODY . '</textarea>';
- }
+ $framed = new html_hiddenfield(array('name' => '_framed', 'value' => '1'));
+ $out .= $framed->show();
- $out .= $form_end ? "\n$form_end" : '';
+ // If desired, set this textarea to be editable by TinyMCE
+ if ($isHtml) {
+ $MESSAGE_BODY = htmlentities($MESSAGE_BODY, ENT_NOQUOTES, RCUBE_CHARSET);
+ $attrib['class'] = 'mce_editor';
+ $attrib['is_escaped'] = true;
+ $textarea = new html_textarea($attrib);
+ $out .= $textarea->show($MESSAGE_BODY);
+ }
+ else {
+ $textarea = new html_textarea($attrib);
+ $out .= $textarea->show('');
- $OUTPUT->set_env('composebody', $attrib['id']);
+ // quote plain text, inject into textarea
+ $table = get_html_translation_table(HTML_SPECIALCHARS);
+ $MESSAGE_BODY = strtr($MESSAGE_BODY, $table);
+ $out = substr($out, 0, -11) . $MESSAGE_BODY . '</textarea>';
+ }
+
+ $out .= $form_end ? "\n$form_end" : '';
+
+ $OUTPUT->set_env('composebody', $attrib['id']);
- // include HTML editor
- rcube_html_editor();
+ // include HTML editor
+ $RCMAIL->html_editor();
- // Set language list
- if (!empty($CONFIG['enable_spellcheck'])) {
- $engine = $RCMAIL->config->get('spellcheck_engine','googie');
- $dictionary = (bool) $RCMAIL->config->get('spellcheck_dictionary');
- $spellcheck_langs = (array) $RCMAIL->config->get('spellcheck_languages',
- array('da'=>'Dansk', 'de'=>'Deutsch', 'en' => 'English', 'es'=>'Español',
- 'fr'=>'Français', 'it'=>'Italiano', 'nl'=>'Nederlands', 'pl'=>'Polski',
- 'pt'=>'Português', 'ru'=>'РуÑÑкий', 'fi'=>'Suomi', 'sv'=>'Svenska'));
+ // Set language list
+ if ($RCMAIL->config->get('enable_spellcheck')) {
+ $engine = new rcube_spellchecker();
+ $dictionary = (bool) $RCMAIL->config->get('spellcheck_dictionary');
+ $spellcheck_langs = $engine->languages();
+ $lang = $_SESSION['language'];
- // googie works only with two-letter codes
- if ($engine == 'googie') {
- $lang = strtolower(substr($_SESSION['language'], 0, 2));
+ // if not found in the list, try with two-letter code
+ if (!$spellcheck_langs[$lang]) {
+ $lang = strtolower(substr($lang, 0, 2));
+ }
+
+ if (!$spellcheck_langs[$lang]) {
+ $lang = 'en';
+ }
- $spellcheck_langs_googie = array();
- foreach ($spellcheck_langs as $key => $name)
- $spellcheck_langs_googie[strtolower(substr($key,0,2))] = $name;
- $spellcheck_langs = $spellcheck_langs_googie;
+ $OUTPUT->set_env('spell_langs', $spellcheck_langs);
+ $OUTPUT->set_env('spell_lang', $lang);
+
+ $editor_lang_set = array();
+ foreach ($spellcheck_langs as $key => $name) {
+ $editor_lang_set[] = ($key == $lang ? '+' : '') . rcube::JQ($name).'='.rcube::JQ($key);
+ }
+
+ // include GoogieSpell
+ $OUTPUT->include_script('googiespell.js');
+ $OUTPUT->add_script(sprintf(
+ "var googie = new GoogieSpell('%s/images/googiespell/','%s&lang=', %s);\n".
+ "googie.lang_chck_spell = \"%s\";\n".
+ "googie.lang_rsm_edt = \"%s\";\n".
+ "googie.lang_close = \"%s\";\n".
+ "googie.lang_revert = \"%s\";\n".
+ "googie.lang_no_error_found = \"%s\";\n".
+ "googie.lang_learn_word = \"%s\";\n".
+ "googie.setLanguages(%s);\n".
+ "googie.setCurrentLanguage('%s');\n".
+ "googie.setDecoration(false);\n".
+ "googie.decorateTextarea('%s');\n".
+ "%s.set_env('spellcheck', googie);",
+ $RCMAIL->output->get_skin_path(),
+ $RCMAIL->url(array('_task' => 'utils', '_action' => 'spell', '_remote' => 1)),
+ !empty($dictionary) ? 'true' : 'false',
+ rcube::JQ(rcube::Q($RCMAIL->gettext('checkspelling'))),
+ rcube::JQ(rcube::Q($RCMAIL->gettext('resumeediting'))),
+ rcube::JQ(rcube::Q($RCMAIL->gettext('close'))),
+ rcube::JQ(rcube::Q($RCMAIL->gettext('revertto'))),
+ rcube::JQ(rcube::Q($RCMAIL->gettext('nospellerrors'))),
+ rcube::JQ(rcube::Q($RCMAIL->gettext('addtodict'))),
+ rcube_output::json_serialize($spellcheck_langs),
+ $lang,
+ $attrib['id'],
+ rcmail_output::JS_OBJECT_NAME), 'foot');
+
+ $OUTPUT->add_label('checking');
+ $OUTPUT->set_env('spellcheck_langs', join(',', $editor_lang_set));
}
- else {
- $lang = $_SESSION['language'];
-
- // if not found in the list, try with two-letter code
- if (!$spellcheck_langs[$lang])
- $lang = strtolower(substr($lang, 0, 2));
- }
-
- if (!$spellcheck_langs[$lang])
- $lang = 'en';
-
- $OUTPUT->set_env('spell_langs', $spellcheck_langs);
- $OUTPUT->set_env('spell_lang', $lang);
-
- $editor_lang_set = array();
- foreach ($spellcheck_langs as $key => $name) {
- $editor_lang_set[] = ($key == $lang ? '+' : '') . JQ($name).'='.JQ($key);
- }
-
- // include GoogieSpell
- $OUTPUT->include_script('googiespell.js');
- $OUTPUT->add_script(sprintf(
- "var googie = new GoogieSpell('%s/images/googiespell/','%s&lang=', %s);\n".
- "googie.lang_chck_spell = \"%s\";\n".
- "googie.lang_rsm_edt = \"%s\";\n".
- "googie.lang_close = \"%s\";\n".
- "googie.lang_revert = \"%s\";\n".
- "googie.lang_no_error_found = \"%s\";\n".
- "googie.lang_learn_word = \"%s\";\n".
- "googie.setLanguages(%s);\n".
- "googie.setCurrentLanguage('%s');\n".
- "googie.setDecoration(false);\n".
- "googie.decorateTextarea('%s');\n".
- "%s.set_env('spellcheck', googie);",
- $RCMAIL->output->get_skin_path(),
- $RCMAIL->url(array('_task' => 'utils', '_action' => 'spell', '_remote' => 1)),
- !empty($dictionary) ? 'true' : 'false',
- JQ(Q(rcube_label('checkspelling'))),
- JQ(Q(rcube_label('resumeediting'))),
- JQ(Q(rcube_label('close'))),
- JQ(Q(rcube_label('revertto'))),
- JQ(Q(rcube_label('nospellerrors'))),
- JQ(Q(rcube_label('addtodict'))),
- json_serialize($spellcheck_langs),
- $lang,
- $attrib['id'],
- JS_OBJECT_NAME), 'foot');
-
- $OUTPUT->add_label('checking');
- $OUTPUT->set_env('spellcheck_langs', join(',', $editor_lang_set));
- }
-
- $out .= "\n".'<iframe name="savetarget" src="program/resources/blank.gif" style="width:0;height:0;border:none;visibility:hidden;"></iframe>';
-
- return $out;
+
+ $out .= "\n".'<iframe name="savetarget" src="program/resources/blank.gif" style="width:0;height:0;border:none;visibility:hidden;"></iframe>';
+
+ return $out;
}
function rcmail_create_reply_body($body, $bodyIsHtml)
{
- global $RCMAIL, $MESSAGE, $LINE_LENGTH;
-
- // build reply prefix
- $from = array_pop(rcube_mime::decode_address_list($MESSAGE->get_header('from'), 1, false, $MESSAGE->headers->charset));
- $prefix = rcube_label(array(
- 'name' => 'mailreplyintro',
- 'vars' => array(
- 'date' => format_date($MESSAGE->headers->date, $RCMAIL->config->get('date_long')),
- 'sender' => $from['name'] ? $from['name'] : rcube_idn_to_utf8($from['mailto']),
- )
- ));
-
- if (!$bodyIsHtml) {
- $body = preg_replace('/\r?\n/', "\n", $body);
- $body = trim($body, "\n");
-
- // soft-wrap and quote message text
- $body = rcmail_wrap_and_quote($body, $LINE_LENGTH);
-
- $prefix .= "\n";
- $suffix = '';
-
- if (intval($RCMAIL->config->get('reply_mode')) > 0) { // top-posting
- $prefix = "\n\n\n" . $prefix;
- }
- }
- else {
- // save inline images to files
- $cid_map = rcmail_write_inline_attachments($MESSAGE);
- // set is_safe flag (we need this for html body washing)
- rcmail_check_safe($MESSAGE);
- // clean up html tags
- $body = rcmail_wash_html($body, array('safe' => $MESSAGE->is_safe), $cid_map);
-
- // build reply (quote content)
- $prefix = '<p>' . Q($prefix) . "</p>\n";
- $prefix .= '<blockquote>';
-
- if (intval($RCMAIL->config->get('reply_mode')) > 0) { // top-posting
- $prefix = '<br>' . $prefix;
- $suffix = '</blockquote>';
+ global $RCMAIL, $MESSAGE, $LINE_LENGTH;
+
+ // build reply prefix
+ $from = array_pop(rcube_mime::decode_address_list($MESSAGE->get_header('from'), 1, false, $MESSAGE->headers->charset));
+ $prefix = $RCMAIL->gettext(array(
+ 'name' => 'mailreplyintro',
+ 'vars' => array(
+ 'date' => $RCMAIL->format_date($MESSAGE->headers->date, $RCMAIL->config->get('date_long')),
+ 'sender' => $from['name'] ? $from['name'] : rcube_utils::idn_to_utf8($from['mailto']),
+ )
+ ));
+
+ if (!$bodyIsHtml) {
+ $body = preg_replace('/\r?\n/', "\n", $body);
+ $body = trim($body, "\n");
+
+ // soft-wrap and quote message text
+ $body = rcmail_wrap_and_quote($body, $LINE_LENGTH);
+
+ $prefix .= "\n";
+ $suffix = '';
+
+ if (intval($RCMAIL->config->get('reply_mode')) > 0) { // top-posting
+ $prefix = "\n\n\n" . $prefix;
+ }
}
else {
- $suffix = '</blockquote><p></p>';
+ // save inline images to files
+ $cid_map = rcmail_write_inline_attachments($MESSAGE);
+ // set is_safe flag (we need this for html body washing)
+ rcmail_check_safe($MESSAGE);
+ // clean up html tags
+ $body = rcmail_wash_html($body, array('safe' => $MESSAGE->is_safe), $cid_map);
+
+ // build reply (quote content)
+ $prefix = '<p>' . rcube::Q($prefix) . "</p>\n";
+ $prefix .= '<blockquote>';
+
+ if (intval($RCMAIL->config->get('reply_mode')) > 0) { // top-posting
+ $prefix = '<br>' . $prefix;
+ $suffix = '</blockquote>';
+ }
+ else {
+ $suffix = '</blockquote><p></p>';
+ }
}
- }
- return $prefix.$body.$suffix;
+ return $prefix . $body . $suffix;
}
function rcmail_create_forward_body($body, $bodyIsHtml)
{
- global $RCMAIL, $MESSAGE, $COMPOSE;
-
- // add attachments
- if (!isset($COMPOSE['forward_attachments']) && is_array($MESSAGE->mime_parts))
- $cid_map = rcmail_write_compose_attachments($MESSAGE, $bodyIsHtml);
-
- $date = format_date($MESSAGE->headers->date, $RCMAIL->config->get('date_long'));
-
- if (!$bodyIsHtml) {
- $prefix = "\n\n\n-------- " . rcube_label('originalmessage') . " --------\n";
- $prefix .= rcube_label('subject') . ': ' . $MESSAGE->subject . "\n";
- $prefix .= rcube_label('date') . ': ' . $date . "\n";
- $prefix .= rcube_label('from') . ': ' . $MESSAGE->get_header('from') . "\n";
- $prefix .= rcube_label('to') . ': ' . $MESSAGE->get_header('to') . "\n";
-
- if ($cc = $MESSAGE->headers->get('cc'))
- $prefix .= rcube_label('cc') . ': ' . $cc . "\n";
- if (($replyto = $MESSAGE->headers->get('reply-to')) && $replyto != $MESSAGE->get_header('from'))
- $prefix .= rcube_label('replyto') . ': ' . $replyto . "\n";
-
- $prefix .= "\n";
- $body = trim($body, "\r\n");
- }
- else {
- // set is_safe flag (we need this for html body washing)
- rcmail_check_safe($MESSAGE);
- // clean up html tags
- $body = rcmail_wash_html($body, array('safe' => $MESSAGE->is_safe), $cid_map);
-
- $prefix = sprintf(
- "<br /><p>-------- " . rcube_label('originalmessage') . " --------</p>" .
- "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody>" .
- "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>" .
- "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>" .
- "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>" .
- "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>",
- rcube_label('subject'), Q($MESSAGE->subject),
- rcube_label('date'), Q($date),
- rcube_label('from'), Q($MESSAGE->get_header('from'), 'replace'),
- rcube_label('to'), Q($MESSAGE->get_header('to'), 'replace'));
-
- if ($cc = $MESSAGE->headers->get('cc'))
- $prefix .= sprintf("<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>",
- rcube_label('cc'), Q($cc, 'replace'));
-
- if (($replyto = $MESSAGE->headers->get('reply-to')) && $replyto != $MESSAGE->get_header('from'))
- $prefix .= sprintf("<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>",
- rcube_label('replyto'), Q($replyto, 'replace'));
-
- $prefix .= "</tbody></table><br>";
- }
-
- return $prefix.$body;
+ global $RCMAIL, $MESSAGE, $COMPOSE;
+
+ // add attachments
+ if (!isset($COMPOSE['forward_attachments']) && is_array($MESSAGE->mime_parts)) {
+ $cid_map = rcmail_write_compose_attachments($MESSAGE, $bodyIsHtml);
+ }
+
+ $date = $RCMAIL->format_date($MESSAGE->headers->date, $RCMAIL->config->get('date_long'));
+
+ if (!$bodyIsHtml) {
+ $prefix = "\n\n\n-------- " . $RCMAIL->gettext('originalmessage') . " --------\n";
+ $prefix .= $RCMAIL->gettext('subject') . ': ' . $MESSAGE->subject . "\n";
+ $prefix .= $RCMAIL->gettext('date') . ': ' . $date . "\n";
+ $prefix .= $RCMAIL->gettext('from') . ': ' . $MESSAGE->get_header('from') . "\n";
+ $prefix .= $RCMAIL->gettext('to') . ': ' . $MESSAGE->get_header('to') . "\n";
+
+ if ($cc = $MESSAGE->headers->get('cc')) {
+ $prefix .= $RCMAIL->gettext('cc') . ': ' . $cc . "\n";
+ }
+ if (($replyto = $MESSAGE->headers->get('reply-to')) && $replyto != $MESSAGE->get_header('from')) {
+ $prefix .= $RCMAIL->gettext('replyto') . ': ' . $replyto . "\n";
+ }
+
+ $prefix .= "\n";
+ $body = trim($body, "\r\n");
+ }
+ else {
+ // set is_safe flag (we need this for html body washing)
+ rcmail_check_safe($MESSAGE);
+
+ // clean up html tags
+ $body = rcmail_wash_html($body, array('safe' => $MESSAGE->is_safe), $cid_map);
+
+ $prefix = sprintf(
+ "<br /><p>-------- " . $RCMAIL->gettext('originalmessage') . " --------</p>" .
+ "<table border=\"0\" cellpadding=\"0\" cellspacing=\"0\"><tbody>" .
+ "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>" .
+ "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>" .
+ "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>" .
+ "<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>",
+ $RCMAIL->gettext('subject'), rcube::Q($MESSAGE->subject),
+ $RCMAIL->gettext('date'), rcube::Q($date),
+ $RCMAIL->gettext('from'), rcube::Q($MESSAGE->get_header('from'), 'replace'),
+ $RCMAIL->gettext('to'), rcube::Q($MESSAGE->get_header('to'), 'replace'));
+
+ if ($cc = $MESSAGE->headers->get('cc'))
+ $prefix .= sprintf("<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>",
+ $RCMAIL->gettext('cc'), rcube::Q($cc, 'replace'));
+
+ if (($replyto = $MESSAGE->headers->get('reply-to')) && $replyto != $MESSAGE->get_header('from'))
+ $prefix .= sprintf("<tr><th align=\"right\" nowrap=\"nowrap\" valign=\"baseline\">%s: </th><td>%s</td></tr>",
+ $RCMAIL->gettext('replyto'), rcube::Q($replyto, 'replace'));
+
+ $prefix .= "</tbody></table><br>";
+ }
+
+ return $prefix . $body;
}
function rcmail_create_draft_body($body, $bodyIsHtml)
{
- global $MESSAGE, $COMPOSE;
+ global $MESSAGE, $COMPOSE;
- /**
- * add attachments
- * sizeof($MESSAGE->mime_parts can be 1 - e.g. attachment, but no text!
- */
- if (empty($COMPOSE['forward_attachments'])
- && is_array($MESSAGE->mime_parts)
- && count($MESSAGE->mime_parts) > 0)
- {
- $cid_map = rcmail_write_compose_attachments($MESSAGE, $bodyIsHtml);
- }
+ // add attachments
+ // sizeof($MESSAGE->mime_parts can be 1 - e.g. attachment, but no text!
+ if (empty($COMPOSE['forward_attachments'])
+ && is_array($MESSAGE->mime_parts)
+ && count($MESSAGE->mime_parts) > 0
+ ) {
+ $cid_map = rcmail_write_compose_attachments($MESSAGE, $bodyIsHtml);
+ }
- // clean up HTML tags - XSS prevention (#1489251)
- if ($bodyIsHtml) {
- $body = rcmail_wash_html($body, array('safe' => 1), $cid_map);
+ // clean up HTML tags - XSS prevention (#1489251)
+ if ($bodyIsHtml) {
+ $body = rcmail_wash_html($body, array('safe' => 1), $cid_map);
- // remove comments (produced by washtml)
- $body = preg_replace('/<!--[^>]+-->/', '', $body);
+ // remove comments (produced by washtml)
+ $body = preg_replace('/<!--[^>]+-->/', '', $body);
- // replace cid with href in inline images links
- if (!empty($cid_map)) {
- $body = str_replace(array_keys($cid_map), array_values($cid_map), $body);
+ // replace cid with href in inline images links
+ if (!empty($cid_map)) {
+ $body = str_replace(array_keys($cid_map), array_values($cid_map), $body);
+ }
}
- }
- return $body;
+ return $body;
}
function rcmail_remove_signature($body)
{
- global $RCMAIL;
+ global $RCMAIL;
- $body = str_replace("\r\n", "\n", $body);
- $len = strlen($body);
- $sig_max_lines = $RCMAIL->config->get('sig_max_lines', 15);
+ $body = str_replace("\r\n", "\n", $body);
+ $len = strlen($body);
+ $sig_max_lines = $RCMAIL->config->get('sig_max_lines', 15);
- while (($sp = strrpos($body, "-- \n", $sp ? -$len+$sp-1 : 0)) !== false) {
- if ($sp == 0 || $body[$sp-1] == "\n") {
- // do not touch blocks with more that X lines
- if (substr_count($body, "\n", $sp) < $sig_max_lines) {
- $body = substr($body, 0, max(0, $sp-1));
- }
- break;
+ while (($sp = strrpos($body, "-- \n", $sp ? -$len+$sp-1 : 0)) !== false) {
+ if ($sp == 0 || $body[$sp-1] == "\n") {
+ // do not touch blocks with more that X lines
+ if (substr_count($body, "\n", $sp) < $sig_max_lines) {
+ $body = substr($body, 0, max(0, $sp-1));
+ }
+ break;
+ }
}
- }
- return $body;
+ return $body;
}
function rcmail_write_compose_attachments(&$message, $bodyIsHtml)
{
- global $RCMAIL, $COMPOSE, $compose_mode;
-
- $loaded_attachments = array();
- foreach ((array)$COMPOSE['attachments'] as $attachment) {
- $loaded_attachments[$attachment['name'] . $attachment['mimetype']] = $attachment;
- }
-
- $cid_map = array();
- $messages = array();
-
- foreach ((array)$message->mime_parts as $pid => $part)
- {
- if ($part->disposition == 'attachment' || ($part->disposition == 'inline' && $bodyIsHtml) || $part->filename) {
- // skip parts that aren't valid attachments
- if ($part->ctype_primary == 'multipart' || $part->mimetype == 'application/ms-tnef') {
- continue;
- }
- // skip message attachments in reply mode
- if ($part->ctype_primary == 'message' && $compose_mode == RCUBE_COMPOSE_REPLY) {
- continue;
- }
- // skip inline images when forwarding in text mode
- if ($part->content_id && $part->disposition == 'inline' && !$bodyIsHtml && $compose_mode == RCUBE_COMPOSE_FORWARD) {
- continue;
- }
-
- // skip message/rfc822 attachments on forwards (#1489214)
- // Thunderbird when forwarding in inline mode displays such attachments
- // and skips any attachments from inside of such part, this however
- // skipped e.g. images used in HTML body or other attachments. So,
- // better to skip .eml attachments but not their content (included files).
- if ($part->mimetype == 'message/rfc822') {
- if ($compose_mode == RCUBE_COMPOSE_FORWARD) {
- continue;
- }
- $messages[] = $part->mime_id;
- }
- else if ($compose_mode != RCUBE_COMPOSE_FORWARD) {
- // skip attachments included in message/rfc822 attachment (#1486487)
- foreach ($messages as $mimeid)
- if (strpos($part->mime_id, $mimeid . '.') === 0) {
- continue 2;
- }
- }
-
- if (($attachment = $loaded_attachments[rcmail_attachment_name($part) . $part->mimetype])
- || ($attachment = rcmail_save_attachment($message, $pid))) {
- $COMPOSE['attachments'][$attachment['id']] = $attachment;
- if ($bodyIsHtml && ($part->content_id || $part->content_location)) {
- $url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s',
- $RCMAIL->comm_path, $COMPOSE['id'], $attachment['id']);
- if ($part->content_id)
- $cid_map['cid:'.$part->content_id] = $url;
- else
- $cid_map[$part->content_location] = $url;
+ global $RCMAIL, $COMPOSE, $compose_mode;
+
+ $loaded_attachments = array();
+ foreach ((array)$COMPOSE['attachments'] as $attachment) {
+ $loaded_attachments[$attachment['name'] . $attachment['mimetype']] = $attachment;
+ }
+
+ $cid_map = array();
+ $messages = array();
+
+ foreach ((array)$message->mime_parts as $pid => $part) {
+ if ($part->disposition == 'attachment' || ($part->disposition == 'inline' && $bodyIsHtml) || $part->filename) {
+ // skip parts that aren't valid attachments
+ if ($part->ctype_primary == 'multipart' || $part->mimetype == 'application/ms-tnef') {
+ continue;
+ }
+
+ // skip message attachments in reply mode
+ if ($part->ctype_primary == 'message' && $compose_mode == RCUBE_COMPOSE_REPLY) {
+ continue;
+ }
+
+ // skip inline images when forwarding in text mode
+ if ($part->content_id && $part->disposition == 'inline' && !$bodyIsHtml && $compose_mode == RCUBE_COMPOSE_FORWARD) {
+ continue;
+ }
+
+ // skip message/rfc822 attachments on forwards (#1489214)
+ // Thunderbird when forwarding in inline mode displays such attachments
+ // and skips any attachments from inside of such part, this however
+ // skipped e.g. images used in HTML body or other attachments. So,
+ // better to skip .eml attachments but not their content (included files).
+ if ($part->mimetype == 'message/rfc822') {
+ if ($compose_mode == RCUBE_COMPOSE_FORWARD) {
+ continue;
+ }
+ $messages[] = $part->mime_id;
+ }
+ else if ($compose_mode != RCUBE_COMPOSE_FORWARD) {
+ // skip attachments included in message/rfc822 attachment (#1486487)
+ foreach ($messages as $mimeid) {
+ if (strpos($part->mime_id, $mimeid . '.') === 0) {
+ continue 2;
+ }
+ }
+ }
+
+ if (($attachment = $loaded_attachments[rcmail_attachment_name($part) . $part->mimetype])
+ || ($attachment = rcmail_save_attachment($message, $pid))
+ ) {
+ $COMPOSE['attachments'][$attachment['id']] = $attachment;
+
+ if ($bodyIsHtml && ($part->content_id || $part->content_location)) {
+ $url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s',
+ $RCMAIL->comm_path, $COMPOSE['id'], $attachment['id']);
+
+ if ($part->content_id)
+ $cid_map['cid:'.$part->content_id] = $url;
+ else
+ $cid_map[$part->content_location] = $url;
+ }
+ }
}
- }
}
- }
- $COMPOSE['forward_attachments'] = true;
+ $COMPOSE['forward_attachments'] = true;
- return $cid_map;
+ return $cid_map;
}
function rcmail_write_inline_attachments(&$message)
{
- global $RCMAIL, $COMPOSE;
-
- $cid_map = array();
- foreach ((array)$message->mime_parts as $pid => $part) {
- if (($part->content_id || $part->content_location) && $part->filename) {
- if ($attachment = rcmail_save_attachment($message, $pid)) {
- $COMPOSE['attachments'][$attachment['id']] = $attachment;
- $url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s',
- $RCMAIL->comm_path, $COMPOSE['id'], $attachment['id']);
- if ($part->content_id)
- $cid_map['cid:'.$part->content_id] = $url;
- else
- $cid_map[$part->content_location] = $url;
- }
+ global $RCMAIL, $COMPOSE;
+
+ $cid_map = array();
+ foreach ((array)$message->mime_parts as $pid => $part) {
+ if (($part->content_id || $part->content_location) && $part->filename) {
+ if ($attachment = rcmail_save_attachment($message, $pid)) {
+ $COMPOSE['attachments'][$attachment['id']] = $attachment;
+ $url = sprintf('%s&_id=%s&_action=display-attachment&_file=rcmfile%s',
+ $RCMAIL->comm_path, $COMPOSE['id'], $attachment['id']);
+
+ if ($part->content_id)
+ $cid_map['cid:'.$part->content_id] = $url;
+ else
+ $cid_map[$part->content_location] = $url;
+ }
+ }
}
- }
- return $cid_map;
+ return $cid_map;
}
// Creates attachment(s) from the forwarded message(s)
function rcmail_write_forward_attachments()
{
- global $RCMAIL, $COMPOSE, $MESSAGE;
+ global $RCMAIL, $COMPOSE, $MESSAGE;
- $storage = $RCMAIL->get_storage();
- $mem_limit = parse_bytes(ini_get('memory_limit'));
- $curr_mem = function_exists('memory_get_usage') ? memory_get_usage() : 16*1024*1024; // safe value: 16MB
- $names = array();
+ $storage = $RCMAIL->get_storage();
+ $names = array();
- $loaded_attachments = array();
- foreach ((array)$COMPOSE['attachments'] as $attachment) {
- $loaded_attachments[$attachment['name'] . $attachment['mimetype']] = $attachment;
- }
+ $loaded_attachments = array();
+ foreach ((array)$COMPOSE['attachments'] as $attachment) {
+ $loaded_attachments[$attachment['name'] . $attachment['mimetype']] = $attachment;
+ }
- if ($COMPOSE['forward_uid'] == '*') {
- $index = $storage->index(null, rcmail_sort_column(), rcmail_sort_order());
- $COMPOSE['forward_uid'] = $index->get();
- }
- else {
- $COMPOSE['forward_uid'] = explode(',', $COMPOSE['forward_uid']);
- }
+ if ($COMPOSE['forward_uid'] == '*') {
+ $index = $storage->index(null, rcmail_sort_column(), rcmail_sort_order());
+ $COMPOSE['forward_uid'] = $index->get();
+ }
+ else {
+ $COMPOSE['forward_uid'] = explode(',', $COMPOSE['forward_uid']);
+ }
- foreach ((array)$COMPOSE['forward_uid'] as $uid) {
- $message = new rcube_message($uid);
+ foreach ((array)$COMPOSE['forward_uid'] as $uid) {
+ $message = new rcube_message($uid);
- if (empty($message->headers)) {
- continue;
- }
+ if (empty($message->headers)) {
+ continue;
+ }
- if (!empty($message->headers->charset)) {
- $storage->set_charset($message->headers->charset);
- }
+ if (!empty($message->headers->charset)) {
+ $storage->set_charset($message->headers->charset);
+ }
- if (empty($MESSAGE->subject)) {
- $MESSAGE->subject = $message->subject;
- }
+ if (empty($MESSAGE->subject)) {
+ $MESSAGE->subject = $message->subject;
+ }
- // generate (unique) attachment name
- $name = strlen($message->subject) ? mb_substr($message->subject, 0, 64) : 'message_rfc822';
- if (!empty($names[$name])) {
- $names[$name]++;
- $name .= '_' . $names[$name];
- }
- $names[$name] = 1;
- $name .= '.eml';
+ // generate (unique) attachment name
+ $name = strlen($message->subject) ? mb_substr($message->subject, 0, 64) : 'message_rfc822';
+ if (!empty($names[$name])) {
+ $names[$name]++;
+ $name .= '_' . $names[$name];
+ }
+ $names[$name] = 1;
+ $name .= '.eml';
- $data = $path = null;
+ $data = $path = null;
- if (!empty($loaded_attachments[$name . 'message/rfc822'])) {
- continue;
+ if (!empty($loaded_attachments[$name . 'message/rfc822'])) {
+ continue;
+ }
+
+ // don't load too big attachments into memory
+ if (!rcube_utils::mem_check($message->size)) {
+ $temp_dir = unslashify($RCMAIL->config->get('temp_dir'));
+ $path = tempnam($temp_dir, 'rcmAttmnt');
+ if ($fp = fopen($path, 'w')) {
+ $storage->get_raw_body($message->uid, $fp);
+ fclose($fp);
+ }
+ else {
+ return false;
+ }
+ }
+ else {
+ $data = $storage->get_raw_body($message->uid);
+ $curr_mem += $message->size;
+ }
+
+ $attachment = array(
+ 'group' => $COMPOSE['id'],
+ 'name' => $name,
+ 'mimetype' => 'message/rfc822',
+ 'data' => $data,
+ 'path' => $path,
+ 'size' => $path ? filesize($path) : strlen($data),
+ );
+
+ $attachment = $RCMAIL->plugins->exec_hook('attachment_save', $attachment);
+
+ if ($attachment['status']) {
+ unset($attachment['data'], $attachment['status'], $attachment['content_id'], $attachment['abort']);
+ $COMPOSE['attachments'][$attachment['id']] = $attachment;
+ }
+ else if ($path) {
+ @unlink($path);
+ }
}
+}
+
+
+function rcmail_save_attachment(&$message, $pid)
+{
+ global $COMPOSE;
+
+ $rcmail = rcmail::get_instance();
+ $part = $message->mime_parts[$pid];
+ $data = $path = null;
// don't load too big attachments into memory
- if ($mem_limit > 0 && $message->size > $mem_limit - $curr_mem) {
- $temp_dir = unslashify($RCMAIL->config->get('temp_dir'));
- $path = tempnam($temp_dir, 'rcmAttmnt');
- if ($fp = fopen($path, 'w')) {
- $storage->get_raw_body($message->uid, $fp);
- fclose($fp);
- }
- else {
- return false;
- }
+ if (!rcube_utils::mem_check($part->size)) {
+ $temp_dir = unslashify($rcmail->config->get('temp_dir'));
+ $path = tempnam($temp_dir, 'rcmAttmnt');
+
+ if ($fp = fopen($path, 'w')) {
+ $message->get_part_content($pid, $fp, true, 0, false);
+ fclose($fp);
+ }
+ else {
+ return false;
+ }
}
else {
- $data = $storage->get_raw_body($message->uid);
- $curr_mem += $message->size;
+ $data = $message->get_part_content($pid, null, true, 0, false);
}
+ $mimetype = $part->ctype_primary . '/' . $part->ctype_secondary;
+ $filename = rcmail_attachment_name($part);
+
$attachment = array(
- 'group' => $COMPOSE['id'],
- 'name' => $name,
- 'mimetype' => 'message/rfc822',
- 'data' => $data,
- 'path' => $path,
- 'size' => $path ? filesize($path) : strlen($data),
+ 'group' => $COMPOSE['id'],
+ 'name' => $filename,
+ 'mimetype' => $mimetype,
+ 'content_id' => $part->content_id,
+ 'data' => $data,
+ 'path' => $path,
+ 'size' => $path ? filesize($path) : strlen($data),
);
- $attachment = $RCMAIL->plugins->exec_hook('attachment_save', $attachment);
+ $attachment = $rcmail->plugins->exec_hook('attachment_save', $attachment);
if ($attachment['status']) {
- unset($attachment['data'], $attachment['status'], $attachment['content_id'], $attachment['abort']);
- $COMPOSE['attachments'][$attachment['id']] = $attachment;
+ unset($attachment['data'], $attachment['status'], $attachment['content_id'], $attachment['abort']);
+ return $attachment;
}
else if ($path) {
- @unlink($path);
+ @unlink($path);
}
- }
-}
-
-function rcmail_save_attachment(&$message, $pid)
-{
- global $COMPOSE;
-
- $rcmail = rcmail::get_instance();
- $part = $message->mime_parts[$pid];
- $mem_limit = parse_bytes(ini_get('memory_limit'));
- $curr_mem = function_exists('memory_get_usage') ? memory_get_usage() : 16*1024*1024; // safe value: 16MB
- $data = $path = null;
-
- // don't load too big attachments into memory
- if ($mem_limit > 0 && $part->size > $mem_limit - $curr_mem) {
- $temp_dir = unslashify($rcmail->config->get('temp_dir'));
- $path = tempnam($temp_dir, 'rcmAttmnt');
- if ($fp = fopen($path, 'w')) {
- $message->get_part_content($pid, $fp);
- fclose($fp);
- } else
- return false;
- } else {
- $data = $message->get_part_content($pid);
- }
-
- $mimetype = $part->ctype_primary . '/' . $part->ctype_secondary;
- $filename = rcmail_attachment_name($part);
-
- $attachment = array(
- 'group' => $COMPOSE['id'],
- 'name' => $filename,
- 'mimetype' => $mimetype,
- 'content_id' => $part->content_id,
- 'data' => $data,
- 'path' => $path,
- 'size' => $path ? filesize($path) : strlen($data),
- );
-
- $attachment = $rcmail->plugins->exec_hook('attachment_save', $attachment);
-
- if ($attachment['status']) {
- unset($attachment['data'], $attachment['status'], $attachment['content_id'], $attachment['abort']);
- return $attachment;
- } else if ($path) {
- @unlink($path);
- }
-
- return false;
+ return false;
}
function rcmail_save_image($path, $mimetype='')
{
- global $COMPOSE;
+ global $COMPOSE;
- // handle attachments in memory
- $data = file_get_contents($path);
- $name = rcmail_basename($path);
+ // handle attachments in memory
+ $data = file_get_contents($path);
+ $name = rcmail_basename($path);
- $attachment = array(
- 'group' => $COMPOSE['id'],
- 'name' => $name,
- 'mimetype' => $mimetype ? $mimetype : rc_mime_content_type($path, $name),
- 'data' => $data,
- 'size' => strlen($data),
- );
+ $attachment = array(
+ 'group' => $COMPOSE['id'],
+ 'name' => $name,
+ 'mimetype' => $mimetype ? $mimetype : rcube_mime::file_content_type($path, $name),
+ 'data' => $data,
+ 'size' => strlen($data),
+ );
- $attachment = rcmail::get_instance()->plugins->exec_hook('attachment_save', $attachment);
+ $attachment = rcmail::get_instance()->plugins->exec_hook('attachment_save', $attachment);
- if ($attachment['status']) {
- unset($attachment['data'], $attachment['status'], $attachment['content_id'], $attachment['abort']);
- return $attachment;
- }
+ if ($attachment['status']) {
+ unset($attachment['data'], $attachment['status'], $attachment['content_id'], $attachment['abort']);
+ return $attachment;
+ }
- return false;
+ return false;
}
function rcmail_basename($filename)
{
- // basename() is not unicode safe and locale dependent
- if (stristr(PHP_OS, 'win') || stristr(PHP_OS, 'netware')) {
- return preg_replace('/^.*[\\\\\\/]/', '', $filename);
- } else {
- return preg_replace('/^.*[\/]/', '', $filename);
- }
+ // basename() is not unicode safe and locale dependent
+ if (stristr(PHP_OS, 'win') || stristr(PHP_OS, 'netware')) {
+ return preg_replace('/^.*[\\\\\\/]/', '', $filename);
+ }
+ else {
+ return preg_replace('/^.*[\/]/', '', $filename);
+ }
}
function rcmail_compose_subject($attrib)
{
- global $MESSAGE, $COMPOSE, $compose_mode;
+ global $MESSAGE, $COMPOSE, $compose_mode;
- list($form_start, $form_end) = get_form_tags($attrib);
- unset($attrib['form']);
+ list($form_start, $form_end) = get_form_tags($attrib);
+ unset($attrib['form']);
- $attrib['name'] = '_subject';
- $attrib['spellcheck'] = 'true';
- $textfield = new html_inputfield($attrib);
+ $attrib['name'] = '_subject';
+ $attrib['spellcheck'] = 'true';
- $subject = '';
+ $textfield = new html_inputfield($attrib);
+ $subject = '';
- // use subject from post
- if (isset($_POST['_subject'])) {
- $subject = get_input_value('_subject', RCUBE_INPUT_POST, TRUE);
- }
- // create a reply-subject
- else if ($compose_mode == RCUBE_COMPOSE_REPLY) {
- if (preg_match('/^re:/i', $MESSAGE->subject))
- $subject = $MESSAGE->subject;
- else
- $subject = 'Re: '.$MESSAGE->subject;
- }
- // create a forward-subject
- else if ($compose_mode == RCUBE_COMPOSE_FORWARD) {
- if (preg_match('/^fwd:/i', $MESSAGE->subject))
- $subject = $MESSAGE->subject;
- else
- $subject = 'Fwd: '.$MESSAGE->subject;
- }
- // creeate a draft-subject
- else if ($compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT) {
- $subject = $MESSAGE->subject;
- }
- else if (!empty($COMPOSE['param']['subject'])) {
- $subject = $COMPOSE['param']['subject'];
- }
-
- $out = $form_start ? "$form_start\n" : '';
- $out .= $textfield->show($subject);
- $out .= $form_end ? "\n$form_end" : '';
-
- return $out;
+ // use subject from post
+ if (isset($_POST['_subject'])) {
+ $subject = rcube_utils::get_input_value('_subject', rcube_utils::INPUT_POST, TRUE);
+ }
+ // create a reply-subject
+ else if ($compose_mode == RCUBE_COMPOSE_REPLY) {
+ if (preg_match('/^re:/i', $MESSAGE->subject))
+ $subject = $MESSAGE->subject;
+ else
+ $subject = 'Re: '.$MESSAGE->subject;
+ }
+ // create a forward-subject
+ else if ($compose_mode == RCUBE_COMPOSE_FORWARD) {
+ if (preg_match('/^fwd:/i', $MESSAGE->subject))
+ $subject = $MESSAGE->subject;
+ else
+ $subject = 'Fwd: '.$MESSAGE->subject;
+ }
+ // creeate a draft-subject
+ else if ($compose_mode == RCUBE_COMPOSE_DRAFT || $compose_mode == RCUBE_COMPOSE_EDIT) {
+ $subject = $MESSAGE->subject;
+ }
+ else if (!empty($COMPOSE['param']['subject'])) {
+ $subject = $COMPOSE['param']['subject'];
+ }
+
+ $out = $form_start ? "$form_start\n" : '';
+ $out .= $textfield->show($subject);
+ $out .= $form_end ? "\n$form_end" : '';
+
+ return $out;
}
function rcmail_compose_attachment_list($attrib)
{
- global $OUTPUT, $CONFIG, $COMPOSE;
-
- // add ID if not given
- if (!$attrib['id'])
- $attrib['id'] = 'rcmAttachmentList';
-
- $out = "\n";
- $jslist = array();
- $button = '';
-
- if (is_array($COMPOSE['attachments'])) {
- if ($attrib['deleteicon']) {
- $button = html::img(array(
- 'src' => $CONFIG['skin_path'] . $attrib['deleteicon'],
- 'alt' => rcube_label('delete')
- ));
- }
- else if (rcube_utils::get_boolean($attrib['textbuttons'])) {
- $button = Q(rcube_label('delete'));
- }
-
- foreach ($COMPOSE['attachments'] as $id => $a_prop) {
- if (empty($a_prop))
- continue;
-
- $out .= html::tag('li',
- array(
- 'id' => 'rcmfile'.$id,
- 'class' => rcmail_filetype2classname($a_prop['mimetype'], $a_prop['name']),
- 'onmouseover' => "rcube_webmail.long_subject_title_ex(this, 0)",
- ),
- html::a(array(
- 'href' => "#delete",
- 'title' => rcube_label('delete'),
- 'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", JS_OBJECT_NAME, $id),
- 'class' => 'delete'
- ),
- $button
- ) . Q($a_prop['name'])
- );
-
- $jslist['rcmfile'.$id] = array('name' => $a_prop['name'], 'complete' => true, 'mimetype' => $a_prop['mimetype']);
- }
- }
-
- if ($attrib['deleteicon'])
- $COMPOSE['deleteicon'] = $CONFIG['skin_path'] . $attrib['deleteicon'];
- else if (rcube_utils::get_boolean($attrib['textbuttons']))
- $COMPOSE['textbuttons'] = true;
- if ($attrib['cancelicon'])
- $OUTPUT->set_env('cancelicon', $CONFIG['skin_path'] . $attrib['cancelicon']);
- if ($attrib['loadingicon'])
- $OUTPUT->set_env('loadingicon', $CONFIG['skin_path'] . $attrib['loadingicon']);
-
- $OUTPUT->set_env('attachments', $jslist);
- $OUTPUT->add_gui_object('attachmentlist', $attrib['id']);
-
- return html::tag('ul', $attrib, $out, html::$common_attrib);
+ global $RCMAIL, $OUTPUT, $COMPOSE;
+
+ // add ID if not given
+ if (!$attrib['id'])
+ $attrib['id'] = 'rcmAttachmentList';
+
+ $out = "\n";
+ $jslist = array();
+ $button = '';
+ $skin_path = $RCMAIL->config->get('skin_path');
+
+ if (is_array($COMPOSE['attachments'])) {
+ if ($attrib['deleteicon']) {
+ $button = html::img(array(
+ 'src' => $skin_path . $attrib['deleteicon'],
+ 'alt' => $RCMAIL->gettext('delete')
+ ));
+ }
+ else if (rcube_utils::get_boolean($attrib['textbuttons'])) {
+ $button = rcube::Q($RCMAIL->gettext('delete'));
+ }
+
+ foreach ($COMPOSE['attachments'] as $id => $a_prop) {
+ if (empty($a_prop)) {
+ continue;
+ }
+
+ $out .= html::tag('li', array(
+ 'id' => 'rcmfile'.$id,
+ 'class' => rcube_utils::file2class($a_prop['mimetype'], $a_prop['name']),
+ 'onmouseover' => "rcube_webmail.long_subject_title_ex(this, 0)",
+ ),
+ html::a(array(
+ 'href' => "#delete",
+ 'title' => $RCMAIL->gettext('delete'),
+ 'onclick' => sprintf("return %s.command('remove-attachment','rcmfile%s', this)", rcmail_output::JS_OBJECT_NAME, $id),
+ 'class' => 'delete'
+ ),
+ $button
+ ) . rcube::Q($a_prop['name'])
+ );
+
+ $jslist['rcmfile'.$id] = array(
+ 'name' => $a_prop['name'],
+ 'complete' => true,
+ 'mimetype' => $a_prop['mimetype']
+ );
+ }
+ }
+
+ if ($attrib['deleteicon'])
+ $COMPOSE['deleteicon'] = $skin_path . $attrib['deleteicon'];
+ else if (rcube_utils::get_boolean($attrib['textbuttons']))
+ $COMPOSE['textbuttons'] = true;
+ if ($attrib['cancelicon'])
+ $OUTPUT->set_env('cancelicon', $skin_path . $attrib['cancelicon']);
+ if ($attrib['loadingicon'])
+ $OUTPUT->set_env('loadingicon', $skin_path . $attrib['loadingicon']);
+
+ $OUTPUT->set_env('attachments', $jslist);
+ $OUTPUT->add_gui_object('attachmentlist', $attrib['id']);
+
+ return html::tag('ul', $attrib, $out, html::$common_attrib);
}
function rcmail_compose_attachment_form($attrib)
{
- global $OUTPUT;
+ global $OUTPUT, $RCMAIL;
- // set defaults
- $attrib += array('id' => 'rcmUploadbox', 'buttons' => 'yes');
+ // set defaults
+ $attrib += array('id' => 'rcmUploadbox', 'buttons' => 'yes');
- // Get filesize, enable upload progress bar
- $max_filesize = rcube_upload_init();
+ // Get filesize, enable upload progress bar
+ $max_filesize = $RCMAIL->upload_init();
- $button = new html_inputfield(array('type' => 'button'));
+ $button = new html_inputfield(array('type' => 'button'));
+ $content = html::div(null, rcmail_compose_attachment_field())
+ . html::div('hint', $RCMAIL->gettext(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize))));
- $out = html::div($attrib,
- $OUTPUT->form_tag(array('id' => $attrib['id'].'Frm', 'name' => 'uploadform', 'method' => 'post', 'enctype' => 'multipart/form-data'),
- html::div(null, rcmail_compose_attachment_field()) .
- html::div('hint', rcube_label(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize)))) .
- (get_boolean($attrib['buttons']) ? html::div('buttons',
- $button->show(rcube_label('close'), array('class' => 'button', 'onclick' => "$('#$attrib[id]').hide()")) . ' ' .
- $button->show(rcube_label('upload'), array('class' => 'button mainaction', 'onclick' => JS_OBJECT_NAME . ".command('send-attachment', this.form)"))
- ) : '')
- )
- );
+ if (rcube_utils::get_boolean($attrib['buttons'])) {
+ $content .= html::div('buttons',
+ $button->show($RCMAIL->gettext('close'), array('class' => 'button', 'onclick' => "$('#$attrib[id]').hide()")) . ' ' .
+ $button->show($RCMAIL->gettext('upload'), array('class' => 'button mainaction', 'onclick' => rcmail_output::JS_OBJECT_NAME . ".command('send-attachment', this.form)"))
+ );
+ }
+
+ $out = html::div($attrib, $OUTPUT->form_tag(array(
+ 'id' => $attrib['id'] . 'Frm',
+ 'name' => 'uploadform',
+ 'method' => 'post',
+ 'enctype' => 'multipart/form-data'
+ ), $content
+ ));
+
+ $OUTPUT->add_gui_object('uploadform', $attrib['id'] . 'Frm');
- $OUTPUT->add_gui_object('uploadform', $attrib['id'].'Frm');
- return $out;
+ return $out;
}
function rcmail_compose_attachment_field($attrib = array())
{
- $attrib['type'] = 'file';
- $attrib['name'] = '_attachments[]';
- $attrib['multiple'] = 'multiple';
+ $attrib['type'] = 'file';
+ $attrib['name'] = '_attachments[]';
+ $attrib['multiple'] = 'multiple';
- $field = new html_inputfield($attrib);
- return $field->show();
+ $field = new html_inputfield($attrib);
+
+ return $field->show();
}
function rcmail_priority_selector($attrib)
{
- global $MESSAGE;
+ global $RCMAIL, $MESSAGE;
- list($form_start, $form_end) = get_form_tags($attrib);
- unset($attrib['form']);
+ list($form_start, $form_end) = get_form_tags($attrib);
+ unset($attrib['form']);
- $attrib['name'] = '_priority';
- $selector = new html_select($attrib);
+ $attrib['name'] = '_priority';
+ $prio_list = array(
+ $RCMAIL->gettext('lowest') => 5,
+ $RCMAIL->gettext('low') => 4,
+ $RCMAIL->gettext('normal') => 0,
+ $RCMAIL->gettext('high') => 2,
+ $RCMAIL->gettext('highest') => 1,
+ );
- $selector->add(array(rcube_label('lowest'),
- rcube_label('low'),
- rcube_label('normal'),
- rcube_label('high'),
- rcube_label('highest')),
- array('5', '4', '0', '2', '1'));
+ $selector = new html_select($attrib);
+ $selector->add(array_keys($prio_list), array_values($prio_list));
- if (isset($_POST['_priority']))
- $sel = $_POST['_priority'];
- else if (isset($MESSAGE->headers->priority) && intval($MESSAGE->headers->priority) != 3)
- $sel = $MESSAGE->headers->priority;
- else
- $sel = 0;
+ if (isset($_POST['_priority']))
+ $sel = $_POST['_priority'];
+ else if (isset($MESSAGE->headers->priority) && intval($MESSAGE->headers->priority) != 3)
+ $sel = $MESSAGE->headers->priority;
+ else
+ $sel = 0;
- $out = $form_start ? "$form_start\n" : '';
- $out .= $selector->show(strval($sel));
- $out .= $form_end ? "\n$form_end" : '';
+ $out = $form_start ? "$form_start\n" : '';
+ $out .= $selector->show((int) $sel);
+ $out .= $form_end ? "\n$form_end" : '';
- return $out;
+ return $out;
}
function rcmail_receipt_checkbox($attrib)
{
- global $RCMAIL, $MESSAGE, $compose_mode;
+ global $RCMAIL, $MESSAGE, $compose_mode;
- list($form_start, $form_end) = get_form_tags($attrib);
- unset($attrib['form']);
+ list($form_start, $form_end) = get_form_tags($attrib);
+ unset($attrib['form']);
- if (!isset($attrib['id']))
- $attrib['id'] = 'receipt';
+ if (!isset($attrib['id']))
+ $attrib['id'] = 'receipt';
- $attrib['name'] = '_receipt';
- $attrib['value'] = '1';
- $checkbox = new html_checkbox($attrib);
+ $attrib['name'] = '_receipt';
+ $attrib['value'] = '1';
- if (isset($_POST['_receipt']))
- $mdn_default = $_POST['_receipt'];
- else if (in_array($compose_mode, array(RCUBE_COMPOSE_DRAFT, RCUBE_COMPOSE_EDIT)))
- $mdn_default = (bool) $MESSAGE->headers->mdn_to;
- else
- $mdn_default = $RCMAIL->config->get('mdn_default');
+ $checkbox = new html_checkbox($attrib);
- $out = $form_start ? "$form_start\n" : '';
- $out .= $checkbox->show($mdn_default);
- $out .= $form_end ? "\n$form_end" : '';
+ if (isset($_POST['_receipt']))
+ $mdn_default = $_POST['_receipt'];
+ else if (in_array($compose_mode, array(RCUBE_COMPOSE_DRAFT, RCUBE_COMPOSE_EDIT)))
+ $mdn_default = (bool) $MESSAGE->headers->mdn_to;
+ else
+ $mdn_default = $RCMAIL->config->get('mdn_default');
- return $out;
+ $out = $form_start ? "$form_start\n" : '';
+ $out .= $checkbox->show($mdn_default);
+ $out .= $form_end ? "\n$form_end" : '';
+
+ return $out;
}
function rcmail_dsn_checkbox($attrib)
{
- global $RCMAIL;
+ global $RCMAIL;
+
+ list($form_start, $form_end) = get_form_tags($attrib);
+ unset($attrib['form']);
- list($form_start, $form_end) = get_form_tags($attrib);
- unset($attrib['form']);
+ if (!isset($attrib['id']))
+ $attrib['id'] = 'dsn';
- if (!isset($attrib['id']))
- $attrib['id'] = 'dsn';
+ $attrib['name'] = '_dsn';
+ $attrib['value'] = '1';
- $attrib['name'] = '_dsn';
- $attrib['value'] = '1';
- $checkbox = new html_checkbox($attrib);
+ $checkbox = new html_checkbox($attrib);
- if (isset($_POST['_dsn']))
- $dsn_value = $_POST['_dsn'];
- else
- $dsn_value = $RCMAIL->config->get('dsn_default');
+ if (isset($_POST['_dsn']))
+ $dsn_value = (int) $_POST['_dsn'];
+ else
+ $dsn_value = $RCMAIL->config->get('dsn_default');
- $out = $form_start ? "$form_start\n" : '';
- $out .= $checkbox->show($dsn_value);
- $out .= $form_end ? "\n$form_end" : '';
+ $out = $form_start ? "$form_start\n" : '';
+ $out .= $checkbox->show($dsn_value);
+ $out .= $form_end ? "\n$form_end" : '';
- return $out;
+ return $out;
}
function rcmail_editor_selector($attrib)
{
- // determine whether HTML or plain text should be checked
- $useHtml = rcmail_compose_editor_mode();
+ global $RCMAIL;
- if (empty($attrib['editorid']))
- $attrib['editorid'] = 'rcmComposeBody';
+ // determine whether HTML or plain text should be checked
+ $useHtml = rcmail_compose_editor_mode();
- if (empty($attrib['name']))
- $attrib['name'] = 'editorSelect';
+ if (empty($attrib['editorid']))
+ $attrib['editorid'] = 'rcmComposeBody';
- $attrib['onchange'] = "return rcmail_toggle_editor(this, '".$attrib['editorid']."', '_is_html')";
+ if (empty($attrib['name']))
+ $attrib['name'] = 'editorSelect';
- $select = new html_select($attrib);
+ $attrib['onchange'] = "return rcmail_toggle_editor(this, '".$attrib['editorid']."', '_is_html')";
- $select->add(Q(rcube_label('htmltoggle')), 'html');
- $select->add(Q(rcube_label('plaintoggle')), 'plain');
+ $select = new html_select($attrib);
- return $select->show($useHtml ? 'html' : 'plain');
-/*
- foreach ($choices as $value => $text) {
- $attrib['id'] = '_' . $value;
- $attrib['value'] = $value;
- $selector .= $radio->show($chosenvalue, $attrib) . html::label($attrib['id'], Q(rcube_label($text)));
- }
+ $select->add(rcube::Q($RCMAIL->gettext('htmltoggle')), 'html');
+ $select->add(rcube::Q($RCMAIL->gettext('plaintoggle')), 'plain');
- return $selector;
-*/
+ return $select->show($useHtml ? 'html' : 'plain');
}
function rcmail_store_target_selection($attrib)
{
- global $COMPOSE;
-
- $attrib['name'] = '_store_target';
- $select = rcmail_mailbox_select(array_merge($attrib, array(
- 'noselection' => '- '.rcube_label('dontsave').' -',
- 'folder_filter' => 'mail',
- 'folder_rights' => 'w',
- )));
- return $select->show(isset($_POST['_store_target']) ? $_POST['_store_target'] : $COMPOSE['param']['sent_mbox'], $attrib);
+ global $COMPOSE, $RCMAIL;
+
+ $attrib['name'] = '_store_target';
+ $select = $RCMAIL->folder_selector(array_merge($attrib, array(
+ 'noselection' => '- ' . $RCMAIL->gettext('dontsave') . ' -',
+ 'folder_filter' => 'mail',
+ 'folder_rights' => 'w',
+ )));
+
+ return $select->show(isset($_POST['_store_target']) ? $_POST['_store_target'] : $COMPOSE['param']['sent_mbox'], $attrib);
}
function rcmail_check_sent_folder($folder, $create=false)
{
- global $RCMAIL;
+ global $RCMAIL;
- // we'll not save the message, so it doesn't matter
- if ($RCMAIL->config->get('no_save_sent_messages')) {
- return true;
- }
+ // we'll not save the message, so it doesn't matter
+ if ($RCMAIL->config->get('no_save_sent_messages')) {
+ return true;
+ }
- if ($RCMAIL->storage->folder_exists($folder, true)) {
- return true;
- }
+ if ($RCMAIL->storage->folder_exists($folder, true)) {
+ return true;
+ }
- // folder may exist but isn't subscribed (#1485241)
- if ($create) {
- if (!$RCMAIL->storage->folder_exists($folder))
- return $RCMAIL->storage->create_folder($folder, true);
- else
- return $RCMAIL->storage->subscribe($folder);
- }
+ // folder may exist but isn't subscribed (#1485241)
+ if ($create) {
+ if (!$RCMAIL->storage->folder_exists($folder))
+ return $RCMAIL->storage->create_folder($folder, true);
+ else
+ return $RCMAIL->storage->subscribe($folder);
+ }
- return false;
+ return false;
}
function get_form_tags($attrib)
{
- global $RCMAIL, $MESSAGE_FORM, $COMPOSE;
+ global $RCMAIL, $MESSAGE_FORM, $COMPOSE;
- $form_start = '';
- if (!$MESSAGE_FORM)
- {
- $hiddenfields = new html_hiddenfield(array('name' => '_task', 'value' => $RCMAIL->task));
- $hiddenfields->add(array('name' => '_action', 'value' => 'send'));
- $hiddenfields->add(array('name' => '_id', 'value' => $COMPOSE['id']));
- $hiddenfields->add(array('name' => '_attachments'));
+ $form_start = '';
+ if (!$MESSAGE_FORM) {
+ $hiddenfields = new html_hiddenfield(array('name' => '_task', 'value' => $RCMAIL->task));
+ $hiddenfields->add(array('name' => '_action', 'value' => 'send'));
+ $hiddenfields->add(array('name' => '_id', 'value' => $COMPOSE['id']));
+ $hiddenfields->add(array('name' => '_attachments'));
- $form_start = empty($attrib['form']) ? $RCMAIL->output->form_tag(array('name' => "form", 'method' => "post")) : '';
- $form_start .= $hiddenfields->show();
- }
+ $form_start = empty($attrib['form']) ? $RCMAIL->output->form_tag(array('name' => "form", 'method' => "post")) : '';
+ $form_start .= $hiddenfields->show();
+ }
- $form_end = ($MESSAGE_FORM && !strlen($attrib['form'])) ? '</form>' : '';
- $form_name = !empty($attrib['form']) ? $attrib['form'] : 'form';
+ $form_end = ($MESSAGE_FORM && !strlen($attrib['form'])) ? '</form>' : '';
+ $form_name = !empty($attrib['form']) ? $attrib['form'] : 'form';
- if (!$MESSAGE_FORM)
- $RCMAIL->output->add_gui_object('messageform', $form_name);
+ if (!$MESSAGE_FORM)
+ $RCMAIL->output->add_gui_object('messageform', $form_name);
- $MESSAGE_FORM = $form_name;
+ $MESSAGE_FORM = $form_name;
- return array($form_start, $form_end);
+ return array($form_start, $form_end);
}
@@ -1703,11 +1764,11 @@ function rcmail_addressbook_list($attrib = array())
'id' => 'rcmli%s', 'class' => '%s'),
html::a(array('href' => '#list',
'rel' => '%s',
- 'onclick' => "return ".JS_OBJECT_NAME.".command('list-adresses','%s',this)"), '%s'));
+ 'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('list-adresses','%s',this)"), '%s'));
foreach ($RCMAIL->get_address_sources(false, true) as $j => $source) {
$id = strval(strlen($source['id']) ? $source['id'] : $j);
- $js_id = JQ($id);
+ $js_id = rcube::JQ($id);
// set class name(s)
$class_name = 'addressbook';
@@ -1715,7 +1776,7 @@ function rcmail_addressbook_list($attrib = array())
$class_name .= ' ' . $source['class_name'];
$out .= sprintf($line_templ,
- html_identifier($id,true),
+ rcube_utils::html_identifier($id,true),
$class_name,
$source['id'],
$js_id, (!empty($source['name']) ? $source['name'] : $id));
@@ -1729,7 +1790,7 @@ function rcmail_addressbook_list($attrib = array())
// return the contacts list as HTML table
function rcmail_contacts_list($attrib = array())
{
- global $OUTPUT;
+ global $RCMAIL, $OUTPUT;
$attrib += array('id' => 'rcmAddressList');
@@ -1739,7 +1800,7 @@ function rcmail_contacts_list($attrib = array())
$OUTPUT->set_env('current_page', 0);
$OUTPUT->include_script('list.js');
- return rcube_table_output($attrib, array(), array('name'), 'ID');
+ return $RCMAIL->table_output($attrib, array(), array('name'), 'ID');
}
@@ -1757,22 +1818,33 @@ function compose_file_drop_area($attrib)
}
-// register UI objects
-$OUTPUT->add_handlers(array(
- 'composeheaders' => 'rcmail_compose_headers',
- 'composesubject' => 'rcmail_compose_subject',
- 'composebody' => 'rcmail_compose_body',
- 'composeattachmentlist' => 'rcmail_compose_attachment_list',
- 'composeattachmentform' => 'rcmail_compose_attachment_form',
- 'composeattachment' => 'rcmail_compose_attachment_field',
- 'filedroparea' => 'compose_file_drop_area',
- 'priorityselector' => 'rcmail_priority_selector',
- 'editorselector' => 'rcmail_editor_selector',
- 'receiptcheckbox' => 'rcmail_receipt_checkbox',
- 'dsncheckbox' => 'rcmail_dsn_checkbox',
- 'storetarget' => 'rcmail_store_target_selection',
- 'addressbooks' => 'rcmail_addressbook_list',
- 'addresslist' => 'rcmail_contacts_list',
-));
+/**
+ *
+ */
+function rcmail_compose_responses_list($attrib)
+{
+ global $RCMAIL, $OUTPUT;
-$OUTPUT->send('compose');
+ $attrib += array('id' => 'rcmresponseslist', 'tagname' => 'ul', 'cols' => 1);
+
+ $jsenv = array();
+ $list = new html_table($attrib);
+ foreach ($RCMAIL->get_compose_responses(true) as $response) {
+ $key = $response['key'];
+ $item = html::a(array(
+ 'href '=> '#'.urlencode($response['name']),
+ 'class' => rtrim('insertresponse ' . $attrib['itemclass']),
+ 'unselectable' => 'on',
+ 'rel' => $key,
+ ), rcube::Q($response['name']));
+
+ $jsenv[$key] = $response;
+ $list->add(array(), $item);
+ }
+
+ // set client env
+ $OUTPUT->set_env('textresponses', $jsenv);
+ $OUTPUT->add_gui_object('responseslist', $attrib['id']);
+
+ return $list->show();
+}
diff --git a/program/steps/mail/copy.inc b/program/steps/mail/copy.inc
index 0ed0d05a1..0f7b1a03a 100644
--- a/program/steps/mail/copy.inc
+++ b/program/steps/mail/copy.inc
@@ -5,7 +5,7 @@
| program/steps/mail/copy.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2010, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -20,12 +20,13 @@
*/
// only process ajax requests
-if (!$OUTPUT->ajax_call)
- return;
+if (!$OUTPUT->ajax_call) {
+ return;
+}
// move messages
if (!empty($_POST['_uid']) && strlen($_POST['_target_mbox'])) {
- $target = get_input_value('_target_mbox', RCUBE_INPUT_POST, true);
+ $target = rcube_utils::get_input_value('_target_mbox', rcube_utils::INPUT_POST, true);
foreach (rcmail_get_uids() as $mbox => $uids) {
$copied += (int)$RCMAIL->storage->copy_message($uids, $target, $mbox);
@@ -33,7 +34,7 @@ if (!empty($_POST['_uid']) && strlen($_POST['_target_mbox'])) {
if (!$copied) {
// send error message
- rcmail_display_server_error('errorcopying');
+ $RCMAIL->display_server_error('errorcopying');
$OUTPUT->send();
exit;
}
@@ -43,7 +44,7 @@ if (!empty($_POST['_uid']) && strlen($_POST['_target_mbox'])) {
rcmail_send_unread_count($target, true);
- $OUTPUT->command('set_quota', rcmail_quota_content());
+ $OUTPUT->command('set_quota', $RCMAIL->quota_content());
}
// unknown action or missing query param
else {
diff --git a/program/steps/mail/folders.inc b/program/steps/mail/folders.inc
index 574d6e975..519a41fdd 100644
--- a/program/steps/mail/folders.inc
+++ b/program/steps/mail/folders.inc
@@ -5,7 +5,7 @@
| program/steps/mail/folders.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2009, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -20,14 +20,14 @@
*/
// only process ajax requests
-if (!$OUTPUT->ajax_call)
+if (!$OUTPUT->ajax_call) {
return;
+}
-$mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true);
+$mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true);
// send EXPUNGE command
if ($RCMAIL->action == 'expunge') {
-
$success = $RCMAIL->storage->expunge_folder($mbox);
// reload message list if current mailbox
@@ -35,26 +35,26 @@ if ($RCMAIL->action == 'expunge') {
$OUTPUT->show_message('folderexpunged', 'confirmation');
if (!empty($_REQUEST['_reload'])) {
- $OUTPUT->command('set_quota', rcmail_quota_content());
+ $OUTPUT->command('set_quota', $RCMAIL->quota_content());
$OUTPUT->command('message_list.clear');
$RCMAIL->action = 'list';
return;
}
}
else {
- rcmail_display_server_error();
+ $RCMAIL->display_server_error();
}
}
-
// clear mailbox
-else if ($RCMAIL->action == 'purge')
-{
- $delimiter = $RCMAIL->storage->get_hierarchy_delimiter();
- $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/';
- $junk_regexp = '/^' . preg_quote($CONFIG['junk_mbox'] . $delimiter, '/') . '/';
+else if ($RCMAIL->action == 'purge') {
+ $delimiter = $RCMAIL->storage->get_hierarchy_delimiter();
+ $trash_mbox = $RCMAIL->config->get('trash_mbox');
+ $junk_mbox = $RCMAIL->config->get('junk_mbox');
+ $trash_regexp = '/^' . preg_quote($trash_mbox . $delimiter, '/') . '/';
+ $junk_regexp = '/^' . preg_quote($junk_mbox . $delimiter, '/') . '/';
// we should only be purging trash and junk (or their subfolders)
- if ($mbox == $CONFIG['trash_mbox'] || $mbox == $CONFIG['junk_mbox']
+ if ($mbox == $trash_mbox || $mbox == $junk_mbox
|| preg_match($trash_regexp, $mbox) || preg_match($junk_regexp, $mbox)
) {
$success = $RCMAIL->storage->clear_folder($mbox);
@@ -69,12 +69,17 @@ else if ($RCMAIL->action == 'purge')
$OUTPUT->command('message_list.clear');
$OUTPUT->command('set_rowcount', rcmail_get_messagecount_text(), $mbox);
$OUTPUT->command('set_unread_count', $mbox, 0);
- $OUTPUT->command('set_quota', rcmail_quota_content());
+ $OUTPUT->command('set_quota', $RCMAIL->quota_content());
rcmail_set_unseen_count($mbox, 0);
+
+ // set trash folder state
+ if ($mbox === $trash_mbox) {
+ $OUTPUT->command('set_trash_count', 0);
+ }
}
}
else {
- rcmail_display_server_error();
+ $RCMAIL->display_server_error();
}
}
}
diff --git a/program/steps/mail/func.inc b/program/steps/mail/func.inc
index 807ec3ce9..3848ec540 100644
--- a/program/steps/mail/func.inc
+++ b/program/steps/mail/func.inc
@@ -5,7 +5,7 @@
| program/steps/mail/func.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2012, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -16,44 +16,45 @@
| |
+-----------------------------------------------------------------------+
| Author: Thomas Bruederli <roundcube@gmail.com> |
+ | Author: Aleksander Machniak <alec@alec.pl> |
+-----------------------------------------------------------------------+
*/
-// setup some global vars used by mail steps
-$SENT_MBOX = $RCMAIL->config->get('sent_mbox');
-$DRAFTS_MBOX = $RCMAIL->config->get('drafts_mbox');
-$SEARCH_MODS_DEFAULT = array(
- '*' => array('subject'=>1, 'from'=>1),
- $SENT_MBOX => array('subject'=>1, 'to'=>1),
- $DRAFTS_MBOX => array('subject'=>1, 'to'=>1)
-);
-
// always instantiate storage object (but not connect to server yet)
$RCMAIL->storage_init();
// set imap properties and session vars
-if (strlen(trim($mbox = get_input_value('_mbox', RCUBE_INPUT_GPC, true))))
- $RCMAIL->storage->set_folder(($_SESSION['mbox'] = $mbox));
-else if ($RCMAIL->storage)
- $_SESSION['mbox'] = $RCMAIL->storage->get_folder();
+if (strlen(trim($mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_GPC, true)))) {
+ $RCMAIL->storage->set_folder(($_SESSION['mbox'] = $mbox));
+}
+else if ($RCMAIL->storage) {
+ $_SESSION['mbox'] = $RCMAIL->storage->get_folder();
+}
-if (!empty($_GET['_page']))
- $RCMAIL->storage->set_page(($_SESSION['page'] = intval($_GET['_page'])));
+if (!empty($_GET['_page'])) {
+ $RCMAIL->storage->set_page(($_SESSION['page'] = intval($_GET['_page'])));
+}
+
+$a_threading = $RCMAIL->config->get('message_threading', array());
+$message_sort_col = $RCMAIL->config->get('message_sort_col');
+$message_sort_order = $RCMAIL->config->get('message_sort_col');
// set default sort col/order to session
-if (!isset($_SESSION['sort_col']))
- $_SESSION['sort_col'] = !empty($CONFIG['message_sort_col']) ? $CONFIG['message_sort_col'] : '';
-if (!isset($_SESSION['sort_order']))
- $_SESSION['sort_order'] = strtoupper($CONFIG['message_sort_order']) == 'ASC' ? 'ASC' : 'DESC';
+if (!isset($_SESSION['sort_col'])) {
+ $_SESSION['sort_col'] = $message_sort_col ? $message_sort_col : '';
+}
+if (!isset($_SESSION['sort_order'])) {
+ $_SESSION['sort_order'] = strtoupper($message_sort_order) == 'ASC' ? 'ASC' : 'DESC';
+}
// set threads mode
-$a_threading = $RCMAIL->config->get('message_threading', array());
if (isset($_GET['_threads'])) {
- if ($_GET['_threads'])
- $a_threading[$_SESSION['mbox']] = true;
- else
- unset($a_threading[$_SESSION['mbox']]);
- $RCMAIL->user->save_prefs(array('message_threading' => $a_threading));
+ if ($_GET['_threads'])
+ $a_threading[$_SESSION['mbox']] = true;
+ else
+ unset($a_threading[$_SESSION['mbox']]);
+
+ $RCMAIL->user->save_prefs(array('message_threading' => $a_threading));
}
$RCMAIL->storage->set_threading($a_threading[$_SESSION['mbox']]);
@@ -61,9 +62,10 @@ $RCMAIL->storage->set_threading($a_threading[$_SESSION['mbox']]);
if (!empty($_REQUEST['_search']) && isset($_SESSION['search'])
&& $_SESSION['search_request'] == $_REQUEST['_search']
) {
- $RCMAIL->storage->set_search_set($_SESSION['search']);
- $OUTPUT->set_env('search_request', $_REQUEST['_search']);
- $OUTPUT->set_env('search_text', $_SESSION['last_text_search']);
+ $RCMAIL->storage->set_search_set($_SESSION['search']);
+
+ $OUTPUT->set_env('search_request', $_REQUEST['_search']);
+ $OUTPUT->set_env('search_text', $_SESSION['last_text_search']);
}
// remove mbox part from _uid
@@ -83,80 +85,83 @@ if (($_uid = get_input_value('_uid', RCUBE_INPUT_GPC)) && preg_match('/^\d+-[^,
// set main env variables, labels and page title
if (empty($RCMAIL->action) || $RCMAIL->action == 'list') {
- // connect to storage server and trigger error on failure
- $RCMAIL->storage_connect();
+ // connect to storage server and trigger error on failure
+ $RCMAIL->storage_connect();
+
+ $mbox_name = $RCMAIL->storage->get_folder();
+
+ if (empty($RCMAIL->action)) {
+ // initialize searching result if search_filter is used
+ if ($_SESSION['search_filter'] && $_SESSION['search_filter'] != 'ALL') {
+ $RCMAIL->storage->search($mbox_name, $_SESSION['search_filter'], RCUBE_CHARSET, rcmail_sort_column());
- $mbox_name = $RCMAIL->storage->get_folder();
+ $search_request = md5($mbox_name.$_SESSION['search_filter']);
+ $_SESSION['search'] = $RCMAIL->storage->get_search_set();
+ $_SESSION['search_request'] = $search_request;
- if (empty($RCMAIL->action)) {
- // initialize searching result if search_filter is used
- if ($_SESSION['search_filter'] && $_SESSION['search_filter'] != 'ALL') {
- $search_request = md5($mbox_name.$_SESSION['search_filter']);
+ $OUTPUT->set_env('search_request', $search_request);
+ }
- $RCMAIL->storage->search($mbox_name, $_SESSION['search_filter'], RCMAIL_CHARSET, rcmail_sort_column());
- $_SESSION['search'] = $RCMAIL->storage->get_search_set();
- $_SESSION['search_request'] = $search_request;
- $OUTPUT->set_env('search_request', $search_request);
+ $OUTPUT->set_env('search_mods', rcmail_search_mods());
}
- $search_mods = $RCMAIL->config->get('search_mods', $SEARCH_MODS_DEFAULT);
- $OUTPUT->set_env('search_mods', $search_mods);
- }
+ $threading = (bool) $RCMAIL->storage->get_threading();
+ $delimiter = $RCMAIL->storage->get_hierarchy_delimiter();
- $threading = (bool) $RCMAIL->storage->get_threading();
- $delimiter = $RCMAIL->storage->get_hierarchy_delimiter();
-
- // set current mailbox and some other vars in client environment
- $OUTPUT->set_env('mailbox', $mbox_name);
- $OUTPUT->set_env('pagesize', $RCMAIL->storage->get_pagesize());
- $OUTPUT->set_env('delimiter', $delimiter);
- $OUTPUT->set_env('threading', $threading);
- $OUTPUT->set_env('threads', $threading || $RCMAIL->storage->get_capability('THREAD'));
- $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);
- }
+ // set current mailbox and some other vars in client environment
+ $OUTPUT->set_env('mailbox', $mbox_name);
+ $OUTPUT->set_env('pagesize', $RCMAIL->storage->get_pagesize());
+ $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));
- foreach (array('delete_junk','flag_for_deletion','read_when_deleted','skip_deleted','display_next','message_extwin','compose_extwin','forward_attachment') as $prop) {
- if ($CONFIG[$prop])
- $OUTPUT->set_env($prop, true);
- }
+ if ($RCMAIL->storage->get_capability('QUOTA')) {
+ $OUTPUT->set_env('quota', true);
+ }
- if ($CONFIG['trash_mbox'])
- $OUTPUT->set_env('trash_mailbox', $CONFIG['trash_mbox']);
- if ($CONFIG['drafts_mbox'])
- $OUTPUT->set_env('drafts_mailbox', $CONFIG['drafts_mbox']);
- if ($CONFIG['junk_mbox'])
- $OUTPUT->set_env('junk_mailbox', $CONFIG['junk_mbox']);
+ // set special folders
+ foreach (array('drafts', 'trash', 'junk') as $mbox) {
+ if ($folder = $RCMAIL->config->get($mbox . '_mbox')) {
+ $OUTPUT->set_env($mbox . '_mailbox', $folder);
+ }
+ }
- if (!empty($_SESSION['browser_caps']))
- $OUTPUT->set_env('browser_capabilities', $_SESSION['browser_caps']);
+ // set configuration
+ $RCMAIL->set_env_config(array('delete_junk', 'flag_for_deletion', 'read_when_deleted',
+ 'skip_deleted', 'display_next', 'message_extwin', 'compose_extwin', 'forward_attachment'));
- if (!$OUTPUT->ajax_call)
- $OUTPUT->add_label('checkingmail', 'deletemessage', 'movemessagetotrash',
- 'movingmessage', 'copyingmessage', 'deletingmessage', 'markingmessage',
- 'copy', 'move', 'quota', 'replyall', 'replylist', 'importwait');
+ if (!empty($_SESSION['browser_caps'])) {
+ $OUTPUT->set_env('browser_capabilities', $_SESSION['browser_caps']);
+ }
+
+ if (!$OUTPUT->ajax_call) {
+ $OUTPUT->add_label('checkingmail', 'deletemessage', 'movemessagetotrash',
+ 'movingmessage', 'copyingmessage', 'deletingmessage', 'markingmessage',
+ 'copy', 'move', 'quota', 'replyall', 'replylist', 'importwait');
+ }
- $pagetitle = $RCMAIL->localize_foldername($RCMAIL->storage->mod_folder($mbox_name), true);
- $pagetitle = str_replace($delimiter, " \xC2\xBB ", $pagetitle);
+ $pagetitle = $RCMAIL->localize_foldername($RCMAIL->storage->mod_folder($mbox_name), true);
+ $pagetitle = str_replace($delimiter, " \xC2\xBB ", $pagetitle);
- $OUTPUT->set_pagetitle($pagetitle);
+ $OUTPUT->set_pagetitle($pagetitle);
}
// register UI objects
$OUTPUT->add_handlers(array(
- 'mailboxlist' => 'rcmail_mailbox_list',
- 'messages' => 'rcmail_message_list',
- 'messagecountdisplay' => 'rcmail_messagecount_display',
- 'quotadisplay' => 'rcmail_quota_display',
- 'mailboxname' => 'rcmail_mailbox_name_display',
- 'messageheaders' => 'rcmail_message_headers',
- 'messagefullheaders' => 'rcmail_message_full_headers',
- 'messagebody' => 'rcmail_message_body',
- 'messagecontentframe' => 'rcmail_messagecontent_frame',
- 'messageimportform' => 'rcmail_message_import_form',
- 'searchfilter' => 'rcmail_search_filter',
- 'searchform' => array($OUTPUT, 'search_form'),
+ 'mailboxlist' => array($RCMAIL, 'folder_list'),
+ 'quotadisplay' => array($RCMAIL, 'quota_display'),
+ 'messages' => 'rcmail_message_list',
+ 'messagecountdisplay' => 'rcmail_messagecount_display',
+ 'mailboxname' => 'rcmail_mailbox_name_display',
+ 'messageheaders' => 'rcmail_message_headers',
+ 'messagefullheaders' => 'rcmail_message_full_headers',
+ 'messagebody' => 'rcmail_message_body',
+ 'messagecontentframe' => 'rcmail_messagecontent_frame',
+ 'messageimportform' => 'rcmail_message_import_form',
+ 'searchfilter' => 'rcmail_search_filter',
+ 'searchform' => array($OUTPUT, 'search_form'),
));
// register action aliases
@@ -205,6 +210,27 @@ function rcmail_get_uids()
return $result;
}
+/**
+ * Returns default search mods
+ */
+function rcmail_search_mods()
+{
+ global $RCMAIL;
+
+ $mods = $RCMAIL->config->get('search_mods');
+
+ if (empty($mods)) {
+ $mods = array('*' => array('subject' => 1, 'from' => 1));
+
+ foreach (array('sent', 'drafts') as $mbox) {
+ if ($mbox = $RCMAIL->config->get($mbox . '_mbox')) {
+ $mods[$mbox] = array('subject' => 1, 'to' => 1);
+ }
+ }
+ }
+
+ return $mods;
+}
/**
* Returns 'to' if current folder is configured Sent or Drafts
@@ -214,20 +240,20 @@ function rcmail_get_uids()
*/
function rcmail_message_list_smart_column_name()
{
- global $RCMAIL;
+ global $RCMAIL;
- $delim = $RCMAIL->storage->get_hierarchy_delimiter();
- $mbox = $RCMAIL->storage->get_folder();
- $sent_mbox = $RCMAIL->config->get('sent_mbox');
- $drafts_mbox = $RCMAIL->config->get('drafts_mbox');
+ $delim = $RCMAIL->storage->get_hierarchy_delimiter();
+ $mbox = $RCMAIL->storage->get_folder();
+ $sent_mbox = $RCMAIL->config->get('sent_mbox');
+ $drafts_mbox = $RCMAIL->config->get('drafts_mbox');
- if ((strpos($mbox.$delim, $sent_mbox.$delim) === 0 || strpos($mbox.$delim, $drafts_mbox.$delim) === 0)
- && strtoupper($mbox) != 'INBOX'
- ) {
- return 'to';
- }
+ if ((strpos($mbox.$delim, $sent_mbox.$delim) === 0 || strpos($mbox.$delim, $drafts_mbox.$delim) === 0)
+ && strtoupper($mbox) != 'INBOX'
+ ) {
+ return 'to';
+ }
- return 'from';
+ return 'from';
}
/**
@@ -239,21 +265,21 @@ function rcmail_message_list_smart_column_name()
*/
function rcmail_sort_column()
{
- global $RCMAIL;
+ global $RCMAIL;
- if (isset($_SESSION['sort_col'])) {
- $column = $_SESSION['sort_col'];
- }
- else {
- $column = $RCMAIL->config->get('message_sort_col');
- }
+ if (isset($_SESSION['sort_col'])) {
+ $column = $_SESSION['sort_col'];
+ }
+ else {
+ $column = $RCMAIL->config->get('message_sort_col');
+ }
- // get name of smart From/To column in folder context
- if ($column == 'fromto') {
- $column = rcmail_message_list_smart_column_name();
- }
+ // get name of smart From/To column in folder context
+ if ($column == 'fromto') {
+ $column = rcmail_message_list_smart_column_name();
+ }
- return $column;
+ return $column;
}
/**
@@ -263,13 +289,13 @@ function rcmail_sort_column()
*/
function rcmail_sort_order()
{
- global $RCMAIL;
+ global $RCMAIL;
- if (isset($_SESSION['sort_order'])) {
- return $_SESSION['sort_order'];
- }
+ if (isset($_SESSION['sort_order'])) {
+ return $_SESSION['sort_order'];
+ }
- return $RCMAIL->config->get('message_sort_order');
+ return $RCMAIL->config->get('message_sort_order');
}
/**
@@ -277,392 +303,398 @@ function rcmail_sort_order()
*/
function rcmail_message_list($attrib)
{
- global $CONFIG, $OUTPUT;
+ global $RCMAIL, $OUTPUT;
- // add some labels to client
- $OUTPUT->add_label('from', 'to');
+ // add some labels to client
+ $OUTPUT->add_label('from', 'to');
- // add id to message list table if not specified
- if (!strlen($attrib['id']))
- $attrib['id'] = 'rcubemessagelist';
+ // add id to message list table if not specified
+ if (!strlen($attrib['id']))
+ $attrib['id'] = 'rcubemessagelist';
- // define list of cols to be displayed based on parameter or config
- if (empty($attrib['columns'])) {
- $a_show_cols = is_array($CONFIG['list_cols']) ? $CONFIG['list_cols'] : array('subject');
- $OUTPUT->set_env('col_movable', !in_array('list_cols', (array)$CONFIG['dont_override']));
- }
- else {
- $a_show_cols = preg_split('/[\s,;]+/', strip_quotes($attrib['columns']));
- $attrib['columns'] = $a_show_cols;
- }
+ // define list of cols to be displayed based on parameter or config
+ if (empty($attrib['columns'])) {
+ $list_cols = $RCMAIL->config->get('list_cols');
+ $a_show_cols = !empty($list_cols) && is_array($list_cols) ? $list_cols : array('subject');
- // save some variables for use in ajax list
- $_SESSION['list_attrib'] = $attrib;
- // make sure 'threads' and 'subject' columns are present
- if (!in_array('subject', $a_show_cols))
- array_unshift($a_show_cols, 'subject');
- if (!in_array('threads', $a_show_cols))
- array_unshift($a_show_cols, 'threads');
-
- $_SESSION['skin_path'] = $CONFIG['skin_path'];
-
- // set client env
- $OUTPUT->add_gui_object('messagelist', $attrib['id']);
- $OUTPUT->set_env('autoexpand_threads', intval($CONFIG['autoexpand_threads']));
- $OUTPUT->set_env('sort_col', $_SESSION['sort_col']);
- $OUTPUT->set_env('sort_order', $_SESSION['sort_order']);
- $OUTPUT->set_env('messages', array());
- $OUTPUT->set_env('coltypes', $a_show_cols);
-
- $OUTPUT->include_script('list.js');
-
- $table = new html_table($attrib);
- if (!$attrib['noheader']) {
- foreach (rcmail_message_list_head($attrib, $a_show_cols) as $cell)
- $table->add_header(array('class' => $cell['className'], 'id' => $cell['id']), $cell['html']);
- }
+ $OUTPUT->set_env('col_movable', !in_array('list_cols', (array)$RCMAIL->config->get('dont_override')));
+ }
+ else {
+ $a_show_cols = preg_split('/[\s,;]+/', str_replace(array("'", '"'), '', $attrib['columns']));
+ $attrib['columns'] = $a_show_cols;
+ }
- return $table->show();
-}
+ // save some variables for use in ajax list
+ $_SESSION['list_attrib'] = $attrib;
+
+ // make sure 'threads' and 'subject' columns are present
+ if (!in_array('subject', $a_show_cols))
+ array_unshift($a_show_cols, 'subject');
+ if (!in_array('threads', $a_show_cols))
+ array_unshift($a_show_cols, 'threads');
+
+ $_SESSION['skin_path'] = $RCMAIL->config->get('skin_path');
+
+ // set client env
+ $OUTPUT->add_gui_object('messagelist', $attrib['id']);
+ $OUTPUT->set_env('autoexpand_threads', intval($RCMAIL->config->get('autoexpand_threads')));
+ $OUTPUT->set_env('sort_col', $_SESSION['sort_col']);
+ $OUTPUT->set_env('sort_order', $_SESSION['sort_order']);
+ $OUTPUT->set_env('messages', array());
+ $OUTPUT->set_env('coltypes', $a_show_cols);
+ $OUTPUT->include_script('list.js');
+
+ $table = new html_table($attrib);
+
+ if (!$attrib['noheader']) {
+ foreach (rcmail_message_list_head($attrib, $a_show_cols) as $cell)
+ $table->add_header(array('class' => $cell['className'], 'id' => $cell['id']), $cell['html']);
+ }
+
+ return $table->show();
+}
/**
* return javascript commands to add rows to the message list
*/
function rcmail_js_message_list($a_headers, $insert_top=FALSE, $a_show_cols=null)
{
- global $CONFIG, $RCMAIL, $OUTPUT;
+ global $RCMAIL, $OUTPUT;
- if (empty($a_show_cols)) {
- if (!empty($_SESSION['list_attrib']['columns']))
- $a_show_cols = $_SESSION['list_attrib']['columns'];
- else
- $a_show_cols = is_array($CONFIG['list_cols']) ? $CONFIG['list_cols'] : array('subject');
- }
- else {
- if (!is_array($a_show_cols))
- $a_show_cols = preg_split('/[\s,;]+/', strip_quotes($a_show_cols));
- $head_replace = true;
- }
+ if (empty($a_show_cols)) {
+ if (!empty($_SESSION['list_attrib']['columns']))
+ $a_show_cols = $_SESSION['list_attrib']['columns'];
+ else {
+ $list_cols = $RCMAIL->config->get('list_cols');
+ $a_show_cols = !empty($list_cols) && is_array($list_cols) ? $list_cols : array('subject');
+ }
+ }
+ else {
+ if (!is_array($a_show_cols)) {
+ $a_show_cols = preg_split('/[\s,;]+/', str_replace(array("'", '"'), '', $a_show_cols));
+ }
+ $head_replace = true;
+ }
- $mbox = $RCMAIL->storage->get_folder();
+ $mbox = $RCMAIL->storage->get_folder();
- // make sure 'threads' and 'subject' columns are present
- if (!in_array('subject', $a_show_cols))
- array_unshift($a_show_cols, 'subject');
- if (!in_array('threads', $a_show_cols))
- array_unshift($a_show_cols, 'threads');
+ // make sure 'threads' and 'subject' columns are present
+ if (!in_array('subject', $a_show_cols))
+ array_unshift($a_show_cols, 'subject');
+ if (!in_array('threads', $a_show_cols))
+ array_unshift($a_show_cols, 'threads');
- $_SESSION['list_attrib']['columns'] = $a_show_cols;
+ $_SESSION['list_attrib']['columns'] = $a_show_cols;
- // Make sure there are no duplicated columns (#1486999)
- $a_show_cols = array_unique($a_show_cols);
+ // Make sure there are no duplicated columns (#1486999)
+ $a_show_cols = array_unique($a_show_cols);
- // Plugins may set header's list_cols/list_flags and other rcube_message_header variables
- // and list columns
- $plugin = $RCMAIL->plugins->exec_hook('messages_list',
- array('messages' => $a_headers, 'cols' => $a_show_cols));
+ // Plugins may set header's list_cols/list_flags and other rcube_message_header variables
+ // and list columns
+ $plugin = $RCMAIL->plugins->exec_hook('messages_list',
+ array('messages' => $a_headers, 'cols' => $a_show_cols));
- $a_show_cols = $plugin['cols'];
- $a_headers = $plugin['messages'];
+ $a_show_cols = $plugin['cols'];
+ $a_headers = $plugin['messages'];
- $thead = $head_replace ? rcmail_message_list_head($_SESSION['list_attrib'], $a_show_cols) : NULL;
+ $thead = $head_replace ? rcmail_message_list_head($_SESSION['list_attrib'], $a_show_cols) : NULL;
- // get name of smart From/To column in folder context
- if (array_search('fromto', $a_show_cols) !== false) {
- $smart_col = rcmail_message_list_smart_column_name();
- }
+ // get name of smart From/To column in folder context
+ if (array_search('fromto', $a_show_cols) !== false) {
+ $smart_col = rcmail_message_list_smart_column_name();
+ }
- $OUTPUT->command('set_message_coltypes', $a_show_cols, $thead, $smart_col);
+ $OUTPUT->command('set_message_coltypes', $a_show_cols, $thead, $smart_col);
- if (empty($a_headers))
- return;
+ if (empty($a_headers)) {
+ return;
+ }
- // remove 'threads', 'attachment', 'flag', 'status' columns, we don't need them here
- foreach (array('threads', 'attachment', 'flag', 'status', 'priority') as $col) {
- if (($key = array_search($col, $a_show_cols)) !== FALSE)
- unset($a_show_cols[$key]);
- }
+ // remove 'threads', 'attachment', 'flag', 'status' columns, we don't need them here
+ foreach (array('threads', 'attachment', 'flag', 'status', 'priority') as $col) {
+ if (($key = array_search($col, $a_show_cols)) !== FALSE) {
+ unset($a_show_cols[$key]);
+ }
+ }
- // loop through message headers
- foreach ($a_headers as $header) {
- if (empty($header))
- continue;
+ // loop through message headers
+ foreach ($a_headers as $header) {
+ if (empty($header))
+ continue;
- $a_msg_cols = array();
- $a_msg_flags = array();
+ $a_msg_cols = array();
+ $a_msg_flags = array();
- // format each col; similar as in rcmail_message_list()
- foreach ($a_show_cols as $col) {
- $col_name = $col == 'fromto' ? $smart_col : $col;
-
- if (in_array($col_name, array('from', 'to', 'cc', 'replyto')))
- $cont = rcmail_address_string($header->$col_name, 3, false, null, $header->charset);
- else if ($col == 'subject') {
- $cont = trim(rcube_mime::decode_header($header->$col, $header->charset));
- if (!$cont) $cont = rcube_label('nosubject');
- $cont = Q($cont);
- }
- else if ($col == 'size')
- $cont = show_bytes($header->$col);
- else if ($col == 'date')
- $cont = format_date($header->date);
- else if ($col == 'folder')
- $cont = Q(rcube_charset::convert($header->folder, 'UTF7-IMAP'));
- else
- $cont = Q($header->$col);
-
- $a_msg_cols[$col] = $cont;
- }
-
- $a_msg_flags = array_change_key_case(array_map('intval', (array) $header->flags));
- if ($header->depth)
- $a_msg_flags['depth'] = $header->depth;
- else if ($header->has_children)
- $roots[] = $header->uid;
- if ($header->parent_uid)
- $a_msg_flags['parent_uid'] = $header->parent_uid;
- if ($header->has_children)
- $a_msg_flags['has_children'] = $header->has_children;
- if ($header->unread_children)
- $a_msg_flags['unread_children'] = $header->unread_children;
- if ($header->others['list-post'])
- $a_msg_flags['ml'] = 1;
- if ($header->priority)
- $a_msg_flags['prio'] = (int) $header->priority;
-
- $a_msg_flags['ctype'] = Q($header->ctype);
- $a_msg_flags['mbox'] = $header->folder;
-
- // merge with plugin result (Deprecated, use $header->flags)
- if (!empty($header->list_flags) && is_array($header->list_flags))
- $a_msg_flags = array_merge($a_msg_flags, $header->list_flags);
- if (!empty($header->list_cols) && is_array($header->list_cols))
- $a_msg_cols = array_merge($a_msg_cols, $header->list_cols);
-
- $OUTPUT->command('add_message_row',
- $header->uid,
- $a_msg_cols,
- $a_msg_flags,
- $insert_top);
- }
+ // format each col; similar as in rcmail_message_list()
+ foreach ($a_show_cols as $col) {
+ $col_name = $col == 'fromto' ? $smart_col : $col;
- if ($RCMAIL->storage->get_threading()) {
- $OUTPUT->command('init_threads', (array) $roots, $mbox);
- }
-}
+ if (in_array($col_name, array('from', 'to', 'cc', 'replyto')))
+ $cont = rcmail_address_string($header->$col_name, 3, false, null, $header->charset);
+ else if ($col == 'subject') {
+ $cont = trim(rcube_mime::decode_header($header->$col, $header->charset));
+ if (!$cont) $cont = $RCMAIL->gettext('nosubject');
+ $cont = rcube::Q($cont);
+ }
+ else if ($col == 'size')
+ $cont = show_bytes($header->$col);
+ else if ($col == 'date')
+ $cont = $RCMAIL->format_date($header->date);
+ else if ($col == 'folder')
+ $cont = rcube::Q(rcube_charset::convert($header->folder, 'UTF7-IMAP'));
+ else
+ $cont = rcube::Q($header->$col);
+
+ $a_msg_cols[$col] = $cont;
+ }
+ $a_msg_flags = array_change_key_case(array_map('intval', (array) $header->flags));
+ if ($header->depth)
+ $a_msg_flags['depth'] = $header->depth;
+ else if ($header->has_children)
+ $roots[] = $header->uid;
+ if ($header->parent_uid)
+ $a_msg_flags['parent_uid'] = $header->parent_uid;
+ if ($header->has_children)
+ $a_msg_flags['has_children'] = $header->has_children;
+ if ($header->unread_children)
+ $a_msg_flags['unread_children'] = $header->unread_children;
+ if ($header->others['list-post'])
+ $a_msg_flags['ml'] = 1;
+ if ($header->priority)
+ $a_msg_flags['prio'] = (int) $header->priority;
+
+ $a_msg_flags['ctype'] = rcube::Q($header->ctype);
+ $a_msg_flags['mbox'] = $header->folder;
+
+ // merge with plugin result (Deprecated, use $header->flags)
+ if (!empty($header->list_flags) && is_array($header->list_flags))
+ $a_msg_flags = array_merge($a_msg_flags, $header->list_flags);
+ if (!empty($header->list_cols) && is_array($header->list_cols))
+ $a_msg_cols = array_merge($a_msg_cols, $header->list_cols);
+
+ $OUTPUT->command('add_message_row',
+ $header->uid,
+ $a_msg_cols,
+ $a_msg_flags,
+ $insert_top);
+ }
+
+ if ($RCMAIL->storage->get_threading()) {
+ $OUTPUT->command('init_threads', (array) $roots, $mbox);
+ }
+}
/*
* Creates <THEAD> for message list table
*/
function rcmail_message_list_head($attrib, $a_show_cols)
{
- global $RCMAIL;
-
- $skin_path = $_SESSION['skin_path'];
+ global $RCMAIL;
- // check to see if we have some settings for sorting
- $sort_col = $_SESSION['sort_col'];
- $sort_order = $_SESSION['sort_order'];
+ $skin_path = $_SESSION['skin_path'];
- $dont_override = (array)$RCMAIL->config->get('dont_override');
- $disabled_sort = in_array('message_sort_col', $dont_override);
- $disabled_order = in_array('message_sort_order', $dont_override);
+ // check to see if we have some settings for sorting
+ $sort_col = $_SESSION['sort_col'];
+ $sort_order = $_SESSION['sort_order'];
- $RCMAIL->output->set_env('disabled_sort_col', $disabled_sort);
- $RCMAIL->output->set_env('disabled_sort_order', $disabled_order);
+ $dont_override = (array) $RCMAIL->config->get('dont_override');
+ $disabled_sort = in_array('message_sort_col', $dont_override);
+ $disabled_order = in_array('message_sort_order', $dont_override);
- // define sortable columns
- if ($disabled_sort)
- $a_sort_cols = $sort_col && !$disabled_order ? array($sort_col) : array();
- else
- $a_sort_cols = array('subject', 'date', 'from', 'to', 'fromto', 'size', 'cc');
+ $RCMAIL->output->set_env('disabled_sort_col', $disabled_sort);
+ $RCMAIL->output->set_env('disabled_sort_order', $disabled_order);
- if (!empty($attrib['optionsmenuicon'])) {
- $onclick = 'return ' . JS_OBJECT_NAME . ".command('menu-open', 'messagelistmenu')";
- if ($attrib['optionsmenuicon'] === true || $attrib['optionsmenuicon'] == 'true')
- $list_menu = html::div(array('onclick' => $onclick, 'class' => 'listmenu',
- 'id' => 'listmenulink', 'title' => rcube_label('listoptions')));
+ // define sortable columns
+ if ($disabled_sort)
+ $a_sort_cols = $sort_col && !$disabled_order ? array($sort_col) : array();
else
- $list_menu = html::a(array('href' => '#', 'onclick' => $onclick),
- html::img(array('src' => $skin_path . $attrib['optionsmenuicon'],
- 'id' => 'listmenulink', 'title' => rcube_label('listoptions')))
- );
- }
- else
- $list_menu = '';
+ $a_sort_cols = array('subject', 'date', 'from', 'to', 'fromto', 'size', 'cc');
- $cells = array();
+ if (!empty($attrib['optionsmenuicon'])) {
+ $onclick = 'return ' . rcmail_output::JS_OBJECT_NAME . ".command('menu-open', 'messagelistmenu')";
+ if ($attrib['optionsmenuicon'] === true || $attrib['optionsmenuicon'] == 'true')
+ $list_menu = html::div(array('onclick' => $onclick, 'class' => 'listmenu',
+ 'id' => 'listmenulink', 'title' => $RCMAIL->gettext('listoptions')));
+ else
+ $list_menu = html::a(array('href' => '#', 'onclick' => $onclick),
+ html::img(array('src' => $skin_path . $attrib['optionsmenuicon'],
+ 'id' => 'listmenulink', 'title' => $RCMAIL->gettext('listoptions'))));
+ }
+ else {
+ $list_menu = '';
+ }
- // get name of smart From/To column in folder context
- if (array_search('fromto', $a_show_cols) !== false) {
- $smart_col = rcmail_message_list_smart_column_name();
- }
+ $cells = array();
- foreach ($a_show_cols as $col) {
- // get column name
- switch ($col) {
- case 'flag':
- $col_name = '<span class="flagged">&nbsp;</span>';
- break;
- case 'attachment':
- case 'priority':
- case 'status':
- $col_name = '<span class="' . $col .'">&nbsp;</span>';
- break;
- case 'threads':
- $col_name = $list_menu;
- break;
- case 'fromto':
- $col_name = Q(rcube_label($smart_col));
- break;
- default:
- $col_name = Q(rcube_label($col));
+ // get name of smart From/To column in folder context
+ if (array_search('fromto', $a_show_cols) !== false) {
+ $smart_col = rcmail_message_list_smart_column_name();
}
- // make sort links
- if (in_array($col, $a_sort_cols))
- $col_name = html::a(array('href'=>"./#sort", 'onclick' => 'return '.JS_OBJECT_NAME.".command('sort','".$col."',this)", 'title' => rcube_label('sortby')), $col_name);
- else if ($col_name[0] != '<')
- $col_name = '<span class="' . $col .'">' . $col_name . '</span>';
+ foreach ($a_show_cols as $col) {
+ // get column name
+ switch ($col) {
+ case 'flag':
+ $col_name = '<span class="flagged">&nbsp;</span>';
+ break;
+ case 'attachment':
+ case 'priority':
+ case 'status':
+ $col_name = '<span class="' . $col .'">&nbsp;</span>';
+ break;
+ case 'threads':
+ $col_name = $list_menu;
+ break;
+ case 'fromto':
+ $col_name = rcube::Q($RCMAIL->gettext($smart_col));
+ break;
+ default:
+ $col_name = rcube::Q($RCMAIL->gettext($col));
+ }
- $sort_class = $col == $sort_col && !$disabled_order ? " sorted$sort_order" : '';
- $class_name = $col.$sort_class;
+ // make sort links
+ if (in_array($col, $a_sort_cols)) {
+ $col_name = html::a(array(
+ 'href' => "./#sort",
+ 'onclick' => 'return '.rcmail_output::JS_OBJECT_NAME.".command('sort','".$col."',this)",
+ 'title' => $RCMAIL->gettext('sortby')
+ ), $col_name);
+ }
+ else if ($col_name[0] != '<') {
+ $col_name = '<span class="' . $col .'">' . $col_name . '</span>';
+ }
- // put it all together
- $cells[] = array('className' => $class_name, 'id' => "rcm$col", 'html' => $col_name);
- }
+ $sort_class = $col == $sort_col && !$disabled_order ? " sorted$sort_order" : '';
+ $class_name = $col.$sort_class;
- return $cells;
-}
+ // put it all together
+ $cells[] = array('className' => $class_name, 'id' => "rcm$col", 'html' => $col_name);
+ }
+ return $cells;
+}
/**
* return an HTML iframe for loading mail content
*/
function rcmail_messagecontent_frame($attrib)
{
- global $OUTPUT, $RCMAIL;
+ global $OUTPUT, $RCMAIL;
- if (empty($attrib['id']))
- $attrib['id'] = 'rcmailcontentwindow';
+ if (empty($attrib['id']))
+ $attrib['id'] = 'rcmailcontentwindow';
- $attrib['name'] = $attrib['id'];
+ $attrib['name'] = $attrib['id'];
- if ($RCMAIL->config->get('preview_pane'))
- $OUTPUT->set_env('contentframe', $attrib['id']);
- $OUTPUT->set_env('blankpage', $attrib['src'] ? $OUTPUT->abs_url($attrib['src']) : 'program/resources/blank.gif');
+ if ($RCMAIL->config->get('preview_pane')) {
+ $OUTPUT->set_env('contentframe', $attrib['id']);
+ }
- return $OUTPUT->frame($attrib, true);
-}
+ $OUTPUT->set_env('blankpage', $attrib['src'] ? $OUTPUT->abs_url($attrib['src']) : 'program/resources/blank.gif');
+ return $OUTPUT->frame($attrib, true);
+}
function rcmail_messagecount_display($attrib)
{
- global $RCMAIL;
+ global $RCMAIL;
- if (!$attrib['id'])
- $attrib['id'] = 'rcmcountdisplay';
+ if (!$attrib['id'])
+ $attrib['id'] = 'rcmcountdisplay';
- $RCMAIL->output->add_gui_object('countdisplay', $attrib['id']);
+ $RCMAIL->output->add_gui_object('countdisplay', $attrib['id']);
- $content = $RCMAIL->action != 'show' ? rcmail_get_messagecount_text() : rcube_label('loading');
+ $content = $RCMAIL->action != 'show' ? rcmail_get_messagecount_text() : $RCMAIL->gettext('loading');
- return html::span($attrib, $content);
+ return html::span($attrib, $content);
}
-
-function rcmail_get_messagecount_text($count=NULL, $page=NULL)
+function rcmail_get_messagecount_text($count = null, $page = null)
{
- global $RCMAIL;
+ global $RCMAIL;
- if ($page === NULL) {
- $page = $RCMAIL->storage->get_page();
- }
+ if ($page === null) {
+ $page = $RCMAIL->storage->get_page();
+ }
- $page_size = $RCMAIL->storage->get_pagesize();
- $start_msg = ($page-1) * $page_size + 1;
+ $page_size = $RCMAIL->storage->get_pagesize();
+ $start_msg = ($page-1) * $page_size + 1;
- if ($count!==NULL)
- $max = $count;
- else if ($RCMAIL->action)
- $max = $RCMAIL->storage->count(NULL, $RCMAIL->storage->get_threading() ? 'THREADS' : 'ALL');
+ if ($count !== null)
+ $max = $count;
+ else if ($RCMAIL->action)
+ $max = $RCMAIL->storage->count(NULL, $RCMAIL->storage->get_threading() ? 'THREADS' : 'ALL');
- if ($max==0)
- $out = rcube_label('mailboxempty');
- else
- $out = rcube_label(array('name' => $RCMAIL->storage->get_threading() ? 'threadsfromto' : 'messagesfromto',
+ if ($max == 0)
+ $out = $RCMAIL->gettext('mailboxempty');
+ else
+ $out = $RCMAIL->gettext(array('name' => $RCMAIL->storage->get_threading() ? 'threadsfromto' : 'messagesfromto',
'vars' => array('from' => $start_msg,
'to' => min($max, $start_msg + $page_size - 1),
'count' => $max)));
- return Q($out);
+ return rcube::Q($out);
}
-
function rcmail_mailbox_name_display($attrib)
{
- global $RCMAIL;
+ global $RCMAIL;
- if (!$attrib['id'])
- $attrib['id'] = 'rcmmailboxname';
+ if (!$attrib['id'])
+ $attrib['id'] = 'rcmmailboxname';
- $RCMAIL->output->add_gui_object('mailboxname', $attrib['id']);
+ $RCMAIL->output->add_gui_object('mailboxname', $attrib['id']);
- return html::span($attrib, rcmail_get_mailbox_name_text());
+ return html::span($attrib, rcmail_get_mailbox_name_text());
}
-
function rcmail_get_mailbox_name_text()
{
- global $RCMAIL;
- return rcmail_localize_foldername($RCMAIL->storage->get_folder());
+ global $RCMAIL;
+ return $RCMAIL->localize_foldername($RCMAIL->storage->get_folder());
}
-
function rcmail_send_unread_count($mbox_name, $force=false, $count=null, $mark='')
{
- global $RCMAIL;
+ global $RCMAIL;
- $old_unseen = rcmail_get_unseen_count($mbox_name);
+ $old_unseen = rcmail_get_unseen_count($mbox_name);
- if ($count === null)
- $unseen = $RCMAIL->storage->count($mbox_name, 'UNSEEN', $force);
- else
- $unseen = $count;
+ if ($count === null)
+ $unseen = $RCMAIL->storage->count($mbox_name, 'UNSEEN', $force);
+ else
+ $unseen = $count;
- if ($unseen != $old_unseen || ($mbox_name == 'INBOX'))
- $RCMAIL->output->command('set_unread_count', $mbox_name, $unseen,
- ($mbox_name == 'INBOX'), $unseen && $mark ? $mark : '');
+ if ($unseen != $old_unseen || ($mbox_name == 'INBOX'))
+ $RCMAIL->output->command('set_unread_count', $mbox_name, $unseen,
+ ($mbox_name == 'INBOX'), $unseen && $mark ? $mark : '');
- rcmail_set_unseen_count($mbox_name, $unseen);
+ rcmail_set_unseen_count($mbox_name, $unseen);
- return $unseen;
+ return $unseen;
}
-
function rcmail_set_unseen_count($mbox_name, $count)
{
- // @TODO: this data is doubled (session and cache tables) if caching is enabled
+ // @TODO: this data is doubled (session and cache tables) if caching is enabled
- // Make sure we have an array here (#1487066)
- if (!is_array($_SESSION['unseen_count']))
- $_SESSION['unseen_count'] = array();
+ // Make sure we have an array here (#1487066)
+ if (!is_array($_SESSION['unseen_count'])) {
+ $_SESSION['unseen_count'] = array();
+ }
- $_SESSION['unseen_count'][$mbox_name] = $count;
+ $_SESSION['unseen_count'][$mbox_name] = $count;
}
-
function rcmail_get_unseen_count($mbox_name)
{
- if (is_array($_SESSION['unseen_count']) && array_key_exists($mbox_name, $_SESSION['unseen_count']))
- return $_SESSION['unseen_count'][$mbox_name];
- else
- return null;
+ if (is_array($_SESSION['unseen_count']) && array_key_exists($mbox_name, $_SESSION['unseen_count'])) {
+ return $_SESSION['unseen_count'][$mbox_name];
+ }
}
-
/**
* Sets message is_safe flag according to 'show_images' option value
*
@@ -670,35 +702,34 @@ function rcmail_get_unseen_count($mbox_name)
*/
function rcmail_check_safe(&$message)
{
- global $RCMAIL;
-
- if (!$message->is_safe
- && ($show_images = $RCMAIL->config->get('show_images'))
- && $message->has_html_part()
- ) {
- switch ($show_images) {
- case 1: // known senders only
- // get default addressbook, like in addcontact.inc
- $CONTACTS = $RCMAIL->get_address_book(-1, true);
-
- if ($CONTACTS) {
- $result = $CONTACTS->search('email', $message->sender['mailto'], 1, false);
- if ($result->count) {
- $message->set_safe(true);
- }
- }
+ global $RCMAIL;
+
+ if (!$message->is_safe
+ && ($show_images = $RCMAIL->config->get('show_images'))
+ && $message->has_html_part()
+ ) {
+ switch ($show_images) {
+ case 1: // known senders only
+ // get default addressbook, like in addcontact.inc
+ $CONTACTS = $RCMAIL->get_address_book(-1, true);
+
+ if ($CONTACTS) {
+ $result = $CONTACTS->search('email', $message->sender['mailto'], 1, false);
+ if ($result->count) {
+ $message->set_safe(true);
+ }
+ }
- $RCMAIL->plugins->exec_hook('message_check_safe', array('message' => $message));
- break;
+ $RCMAIL->plugins->exec_hook('message_check_safe', array('message' => $message));
+ break;
- case 2: // always
- $message->set_safe(true);
- break;
+ case 2: // always
+ $message->set_safe(true);
+ break;
+ }
}
- }
}
-
/**
* Cleans up the given message HTML Body (for displaying)
*
@@ -709,67 +740,68 @@ function rcmail_check_safe(&$message)
*/
function rcmail_wash_html($html, $p, $cid_replaces)
{
- global $REMOTE_OBJECTS;
+ global $REMOTE_OBJECTS;
- $p += array('safe' => false, 'inline_html' => true);
+ $p += array('safe' => false, 'inline_html' => true);
- // charset was converted to UTF-8 in rcube_storage::get_message_part(),
- // change/add charset specification in HTML accordingly,
- // washtml cannot work without that
- $meta = '<meta http-equiv="Content-Type" content="text/html; charset='.RCMAIL_CHARSET.'" />';
+ // charset was converted to UTF-8 in rcube_storage::get_message_part(),
+ // change/add charset specification in HTML accordingly,
+ // washtml cannot work without that
+ $meta = '<meta http-equiv="Content-Type" content="text/html; charset='.RCUBE_CHARSET.'" />';
- // remove old meta tag and add the new one, making sure
- // that it is placed in the head (#1488093)
- $html = preg_replace('/<meta[^>]+charset=[a-z0-9-_]+[^>]*>/Ui', '', $html);
- $html = preg_replace('/(<head[^>]*>)/Ui', '\\1'.$meta, $html, -1, $rcount);
- if (!$rcount) {
- $html = '<head>' . $meta . '</head>' . $html;
- }
+ // remove old meta tag and add the new one, making sure
+ // that it is placed in the head (#1488093)
+ $html = preg_replace('/<meta[^>]+charset=[a-z0-9-_]+[^>]*>/Ui', '', $html);
+ $html = preg_replace('/(<head[^>]*>)/Ui', '\\1'.$meta, $html, -1, $rcount);
+ if (!$rcount) {
+ $html = '<head>' . $meta . '</head>' . $html;
+ }
- // clean HTML with washhtml by Frederic Motte
- $wash_opts = array(
- 'show_washed' => false,
- 'allow_remote' => $p['safe'],
- 'blocked_src' => "./program/resources/blocked.gif",
- 'charset' => RCMAIL_CHARSET,
- 'cid_map' => $cid_replaces,
- 'html_elements' => array('body'),
- );
-
- if (!$p['inline_html']) {
- $wash_opts['html_elements'] = array('html','head','title','body');
- }
- if ($p['safe']) {
- $wash_opts['html_elements'][] = 'link';
- $wash_opts['html_attribs'] = array('rel','type');
- }
+ // clean HTML with washhtml by Frederic Motte
+ $wash_opts = array(
+ 'show_washed' => false,
+ 'allow_remote' => $p['safe'],
+ 'blocked_src' => "./program/resources/blocked.gif",
+ 'charset' => RCUBE_CHARSET,
+ 'cid_map' => $cid_replaces,
+ 'html_elements' => array('body'),
+ );
- // overwrite washer options with options from plugins
- if (isset($p['html_elements']))
- $wash_opts['html_elements'] = $p['html_elements'];
- if (isset($p['html_attribs']))
- $wash_opts['html_attribs'] = $p['html_attribs'];
+ if (!$p['inline_html']) {
+ $wash_opts['html_elements'] = array('html','head','title','body');
+ }
+ if ($p['safe']) {
+ $wash_opts['html_elements'][] = 'link';
+ $wash_opts['html_attribs'] = array('rel','type');
+ }
+
+ // overwrite washer options with options from plugins
+ if (isset($p['html_elements']))
+ $wash_opts['html_elements'] = $p['html_elements'];
+ if (isset($p['html_attribs']))
+ $wash_opts['html_attribs'] = $p['html_attribs'];
- // initialize HTML washer
- $washer = new rcube_washtml($wash_opts);
+ // initialize HTML washer
+ $washer = new rcube_washtml($wash_opts);
- if (!$p['skip_washer_form_callback'])
- $washer->add_callback('form', 'rcmail_washtml_callback');
+ if (!$p['skip_washer_form_callback']) {
+ $washer->add_callback('form', 'rcmail_washtml_callback');
+ }
- // allow CSS styles, will be sanitized by rcmail_washtml_callback()
- if (!$p['skip_washer_style_callback'])
- $washer->add_callback('style', 'rcmail_washtml_callback');
+ // allow CSS styles, will be sanitized by rcmail_washtml_callback()
+ if (!$p['skip_washer_style_callback']) {
+ $washer->add_callback('style', 'rcmail_washtml_callback');
+ }
- // Remove non-UTF8 characters (#1487813)
- $html = rc_utf8_clean($html);
+ // Remove non-UTF8 characters (#1487813)
+ $html = rcube_charset::clean($html);
- $html = $washer->wash($html);
- $REMOTE_OBJECTS = $washer->extlinks;
+ $html = $washer->wash($html);
+ $REMOTE_OBJECTS = $washer->extlinks;
- return $html;
+ return $html;
}
-
/**
* Convert the given message part to proper HTML
* which can be displayed the message view
@@ -780,59 +812,59 @@ function rcmail_wash_html($html, $p, $cid_replaces)
*/
function rcmail_print_body($part, $p = array())
{
- global $RCMAIL;
+ global $RCMAIL;
- // trigger plugin hook
- $data = $RCMAIL->plugins->exec_hook('message_part_before',
- array('type' => $part->ctype_secondary, 'body' => $part->body, 'id' => $part->mime_id)
- + $p + array('safe' => false, 'plain' => false, 'inline_html' => true));
+ // trigger plugin hook
+ $data = $RCMAIL->plugins->exec_hook('message_part_before',
+ array('type' => $part->ctype_secondary, 'body' => $part->body, 'id' => $part->mime_id)
+ + $p + array('safe' => false, 'plain' => false, 'inline_html' => true));
- // convert html to text/plain
- if ($data['plain'] && ($data['type'] == 'html' || $data['type'] == 'enriched')) {
- if ($data['type'] == 'enriched') {
- $data['body'] = rcube_enriched::to_html($data['body']);
+ // convert html to text/plain
+ if ($data['plain'] && ($data['type'] == 'html' || $data['type'] == 'enriched')) {
+ if ($data['type'] == 'enriched') {
+ $data['body'] = rcube_enriched::to_html($data['body']);
+ }
+
+ $txt = new rcube_html2text($data['body'], false, true);
+ $body = $txt->get_text();
+ $part->ctype_secondary = 'plain';
+ }
+ // text/html
+ else if ($data['type'] == 'html') {
+ $body = rcmail_wash_html($data['body'], $data, $part->replaces);
+ $part->ctype_secondary = $data['type'];
+ }
+ // text/enriched
+ else if ($data['type'] == 'enriched') {
+ $body = rcube_enriched::to_html($data['body']);
+ $body = rcmail_wash_html($body, $data, $part->replaces);
+ $part->ctype_secondary = 'html';
+ }
+ else {
+ // assert plaintext
+ $body = $part->body;
+ $part->ctype_secondary = $data['type'] = 'plain';
}
- $txt = new rcube_html2text($data['body'], false, true);
- $body = $txt->get_text();
- $part->ctype_secondary = 'plain';
- }
- // text/html
- else if ($data['type'] == 'html') {
- $body = rcmail_wash_html($data['body'], $data, $part->replaces);
- $part->ctype_secondary = $data['type'];
- }
- // text/enriched
- else if ($data['type'] == 'enriched') {
- $body = rcube_enriched::to_html($data['body']);
- $body = rcmail_wash_html($body, $data, $part->replaces);
- $part->ctype_secondary = 'html';
- }
- else {
- // assert plaintext
- $body = $part->body;
- $part->ctype_secondary = $data['type'] = 'plain';
- }
- // free some memory (hopefully)
- unset($data['body']);
+ // free some memory (hopefully)
+ unset($data['body']);
- // plaintext postprocessing
- if ($part->ctype_secondary == 'plain') {
- if ($part->ctype_secondary == 'plain' && $part->ctype_parameters['format'] == 'flowed') {
- $body = rcube_mime::unfold_flowed($body);
- }
+ // plaintext postprocessing
+ if ($part->ctype_secondary == 'plain') {
+ if ($part->ctype_secondary == 'plain' && $part->ctype_parameters['format'] == 'flowed') {
+ $body = rcube_mime::unfold_flowed($body);
+ }
- $body = rcmail_plain_body($body);
- }
+ $body = rcmail_plain_body($body);
+ }
- // allow post-processing of the message body
- $data = $RCMAIL->plugins->exec_hook('message_part_after',
- array('type' => $part->ctype_secondary, 'body' => $body, 'id' => $part->mime_id) + $data);
+ // allow post-processing of the message body
+ $data = $RCMAIL->plugins->exec_hook('message_part_after',
+ array('type' => $part->ctype_secondary, 'body' => $body, 'id' => $part->mime_id) + $data);
- return $data['type'] == 'html' ? $data['body'] : html::tag('pre', array(), $data['body']);
+ return $data['type'] == 'html' ? $data['body'] : html::tag('pre', array(), $data['body']);
}
-
/**
* Handle links and citation marks in plain text message
*
@@ -842,232 +874,245 @@ function rcmail_print_body($part, $p = array())
*/
function rcmail_plain_body($body)
{
- global $RCMAIL;
-
- // make links and email-addresses clickable
- $attribs = array('link_attribs' => array('rel' => 'noreferrer', 'target' => '_blank'));
- $replacer = new rcmail_string_replacer($attribs);
-
- // search for patterns like links and e-mail addresses and replace with tokens
- $body = $replacer->replace($body);
-
- // split body into single lines
- $body = preg_split('/\r?\n/', $body);
- $quote_level = 0;
- $last = -1;
-
- // find/mark quoted lines...
- for ($n=0, $cnt=count($body); $n < $cnt; $n++) {
- if ($body[$n][0] == '>' && preg_match('/^(>+ {0,1})+/', $body[$n], $regs)) {
- $q = substr_count($regs[0], '>');
- $body[$n] = substr($body[$n], strlen($regs[0]));
-
- if ($q > $quote_level) {
- $body[$n] = $replacer->get_replacement($replacer->add(
- str_repeat('<blockquote>', $q - $quote_level))) . $body[$n];
- $last = $n;
- }
- else if ($q < $quote_level) {
- $body[$n] = $replacer->get_replacement($replacer->add(
- str_repeat('</blockquote>', $quote_level - $q))) . $body[$n];
- $last = $n;
- }
- }
- else {
- $q = 0;
- if ($quote_level > 0)
- $body[$n] = $replacer->get_replacement($replacer->add(
- str_repeat('</blockquote>', $quote_level))) . $body[$n];
+ global $RCMAIL;
+
+ // make links and email-addresses clickable
+ $attribs = array('link_attribs' => array('rel' => 'noreferrer', 'target' => '_blank'));
+ $replacer = new rcmail_string_replacer($attribs);
+
+ // search for patterns like links and e-mail addresses and replace with tokens
+ $body = $replacer->replace($body);
+
+ // split body into single lines
+ $body = preg_split('/\r?\n/', $body);
+ $quote_level = 0;
+ $last = -1;
+
+ // find/mark quoted lines...
+ for ($n=0, $cnt=count($body); $n < $cnt; $n++) {
+ if ($body[$n][0] == '>' && preg_match('/^(>+ {0,1})+/', $body[$n], $regs)) {
+ $q = substr_count($regs[0], '>');
+ $body[$n] = substr($body[$n], strlen($regs[0]));
+
+ if ($q > $quote_level) {
+ $body[$n] = $replacer->get_replacement($replacer->add(
+ str_repeat('<blockquote>', $q - $quote_level))) . $body[$n];
+ $last = $n;
+ }
+ else if ($q < $quote_level) {
+ $body[$n] = $replacer->get_replacement($replacer->add(
+ str_repeat('</blockquote>', $quote_level - $q))) . $body[$n];
+ $last = $n;
+ }
+ }
+ else {
+ $q = 0;
+ if ($quote_level > 0)
+ $body[$n] = $replacer->get_replacement($replacer->add(
+ str_repeat('</blockquote>', $quote_level))) . $body[$n];
+ }
+
+ $quote_level = $q;
}
- $quote_level = $q;
- }
+ $body = join("\n", $body);
+
+ // quote plain text (don't use rcube::Q() here, to display entities "as is")
+ $table = get_html_translation_table(HTML_SPECIALCHARS);
+ unset($table['?']);
+ $body = strtr($body, $table);
- $body = join("\n", $body);
+ // colorize signature (up to <sig_max_lines> lines)
+ $len = strlen($body);
+ $sig_max_lines = $RCMAIL->config->get('sig_max_lines', 15);
- // quote plain text (don't use Q() here, to display entities "as is")
- $table = get_html_translation_table(HTML_SPECIALCHARS);
- unset($table['?']);
- $body = strtr($body, $table);
+ while (($sp = strrpos($body, "-- \n", $sp ? -$len+$sp-1 : 0)) !== false) {
+ if ($sp == 0 || $body[$sp-1] == "\n") {
+ // do not touch blocks with more that X lines
+ if (substr_count($body, "\n", $sp) < $sig_max_lines) {
+ $body = substr($body, 0, max(0, $sp))
+ . '<span class="sig">'.substr($body, $sp).'</span>';
+ }
- // colorize signature (up to <sig_max_lines> lines)
- $len = strlen($body);
- $sig_max_lines = $RCMAIL->config->get('sig_max_lines', 15);
- while (($sp = strrpos($body, "-- \n", $sp ? -$len+$sp-1 : 0)) !== false) {
- if ($sp == 0 || $body[$sp-1] == "\n") {
- // do not touch blocks with more that X lines
- if (substr_count($body, "\n", $sp) < $sig_max_lines)
- $body = substr($body, 0, max(0, $sp))
- .'<span class="sig">'.substr($body, $sp).'</span>';
- break;
+ break;
+ }
}
- }
- // insert url/mailto links and citation tags
- $body = $replacer->resolve($body);
+ // insert url/mailto links and citation tags
+ $body = $replacer->resolve($body);
- return $body;
+ return $body;
}
-
/**
* Callback function for washtml cleaning class
*/
function rcmail_washtml_callback($tagname, $attrib, $content, $washtml)
{
- switch ($tagname) {
+ switch ($tagname) {
case 'form':
- $out = html::div('form', $content);
- break;
+ $out = html::div('form', $content);
+ break;
case 'style':
- // decode all escaped entities and reduce to ascii strings
- $stripped = preg_replace('/[^a-zA-Z\(:;]/', '', rcmail_xss_entity_decode($content));
-
- // now check for evil strings like expression, behavior or url()
- if (!preg_match('/expression|behavior|javascript:|import[^a]/i', $stripped)) {
- if (!$washtml->get_config('allow_remote') && stripos($stripped, 'url('))
- $washtml->extlinks = true;
- else
- $out = html::tag('style', array('type' => 'text/css'), $content);
- break;
- }
+ // decode all escaped entities and reduce to ascii strings
+ $stripped = preg_replace('/[^a-zA-Z\(:;]/', '', rcube_utils::xss_entity_decode($content));
+
+ // now check for evil strings like expression, behavior or url()
+ if (!preg_match('/expression|behavior|javascript:|import[^a]/i', $stripped)) {
+ if (!$washtml->get_config('allow_remote') && stripos($stripped, 'url('))
+ $washtml->extlinks = true;
+ else
+ $out = html::tag('style', array('type' => 'text/css'), $content);
+ break;
+ }
default:
- $out = '';
- }
+ $out = '';
+ }
- return $out;
+ return $out;
}
-
/**
* return table with message headers
*/
function rcmail_message_headers($attrib, $headers=null)
{
- global $MESSAGE, $PRINT_MODE, $RCMAIL;
- static $sa_attrib;
-
- // keep header table attrib
- if (is_array($attrib) && !$sa_attrib && !$attrib['valueof'])
- $sa_attrib = $attrib;
- else if (!is_array($attrib) && is_array($sa_attrib))
- $attrib = $sa_attrib;
-
- if (!isset($MESSAGE))
- return FALSE;
-
- // get associative array of headers object
- if (!$headers) {
- $headers_obj = $MESSAGE->headers;
- $headers = get_object_vars($MESSAGE->headers);
- }
- else if (is_object($headers)) {
- $headers_obj = $headers;
- $headers = get_object_vars($headers_obj);
- }
- else {
- $headers_obj = rcube_message_header::from_array($headers);
- }
+ global $MESSAGE, $PRINT_MODE, $RCMAIL;
+ static $sa_attrib;
- // show these headers
- $standard_headers = array('subject', 'from', 'sender', 'to', 'cc', 'bcc', 'replyto',
- 'mail-reply-to', 'mail-followup-to', 'date', 'priority');
- $exclude_headers = $attrib['exclude'] ? explode(',', $attrib['exclude']) : array();
- $output_headers = array();
-
- foreach ($standard_headers as $hkey) {
- $ishtml = false;
-
- if ($headers[$hkey])
- $value = $headers[$hkey];
- else if ($headers['others'][$hkey])
- $value = $headers['others'][$hkey];
- else if (!$attrib['valueof'])
- continue;
-
- if (in_array($hkey, $exclude_headers))
- continue;
-
- $header_title = rcube_label(preg_replace('/(^mail-|-)/', '', $hkey));
-
- if ($hkey == 'date') {
- if ($PRINT_MODE)
- $header_value = format_date($value, $RCMAIL->config->get('date_long', 'x'));
- else
- $header_value = format_date($value);
- }
- else if ($hkey == 'priority') {
- if ($value) {
- $header_value = html::span('prio' . $value, rcmail_localized_priority($value));
- }
- else
- continue;
- }
- else if ($hkey == 'replyto') {
- if ($headers['replyto'] != $headers['from']) {
- $header_value = rcmail_address_string($value, $attrib['max'], true, $attrib['addicon'], $headers['charset'], $header_title);
- $ishtml = true;
- }
- else
- continue;
- }
- else if ($hkey == 'mail-reply-to') {
- if ($headers['mail-replyto'] != $headers['reply-to']
- && $headers['reply-to'] != $headers['from']
- ) {
- $header_value = rcmail_address_string($value, $attrib['max'], true, $attrib['addicon'], $headers['charset'], $header_title);
- $ishtml = true;
- }
- else
- continue;
- }
- else if ($hkey == 'sender') {
- if ($headers['sender'] != $headers['from']) {
- $header_value = rcmail_address_string($value, $attrib['max'], true, $attrib['addicon'], $headers['charset'], $header_title);
- $ishtml = true;
- }
- else
- continue;
- }
- else if ($hkey == 'mail-followup-to') {
- $header_value = rcmail_address_string($value, $attrib['max'], true, $attrib['addicon'], $headers['charset'], $header_title);
- $ishtml = true;
- }
- else if (in_array($hkey, array('from', 'to', 'cc', 'bcc'))) {
- $header_value = rcmail_address_string($value, $attrib['max'], true, $attrib['addicon'], $headers['charset'], $header_title);
- $ishtml = true;
- }
- else if ($hkey == 'subject' && empty($value))
- $header_value = rcube_label('nosubject');
- else
- $header_value = trim(rcube_mime::decode_header($value, $headers['charset']));
+ // keep header table attrib
+ if (is_array($attrib) && !$sa_attrib && !$attrib['valueof'])
+ $sa_attrib = $attrib;
+ else if (!is_array($attrib) && is_array($sa_attrib))
+ $attrib = $sa_attrib;
- $output_headers[$hkey] = array(
- 'title' => $header_title,
- 'value' => $header_value,
- 'raw' => $value,
- 'html' => $ishtml,
- );
- }
+ if (!isset($MESSAGE)) {
+ return false;
+ }
+
+ // get associative array of headers object
+ if (!$headers) {
+ $headers_obj = $MESSAGE->headers;
+ $headers = get_object_vars($MESSAGE->headers);
+ }
+ else if (is_object($headers)) {
+ $headers_obj = $headers;
+ $headers = get_object_vars($headers_obj);
+ }
+ else {
+ $headers_obj = rcube_message_header::from_array($headers);
+ }
- $plugin = $RCMAIL->plugins->exec_hook('message_headers_output',
- array('output' => $output_headers, 'headers' => $headers_obj, 'exclude' => $exclude_headers));
+ // show these headers
+ $standard_headers = array('subject', 'from', 'sender', 'to', 'cc', 'bcc', 'replyto',
+ 'mail-reply-to', 'mail-followup-to', 'date', 'priority');
+ $exclude_headers = $attrib['exclude'] ? explode(',', $attrib['exclude']) : array();
+ $output_headers = array();
- // single header value is requested
- if (!empty($attrib['valueof']))
- return Q($plugin['output'][$attrib['valueof']]['value'], ($attrib['valueof'] == 'subject' ? 'strict' : 'show'));
+ foreach ($standard_headers as $hkey) {
+ $ishtml = false;
- // compose html table
- $table = new html_table(array('cols' => 2));
+ if ($headers[$hkey])
+ $value = $headers[$hkey];
+ else if ($headers['others'][$hkey])
+ $value = $headers['others'][$hkey];
+ else if (!$attrib['valueof'])
+ continue;
- foreach ($plugin['output'] as $hkey => $row) {
- $table->add(array('class' => 'header-title'), Q($row['title']));
- $table->add(array('class' => 'header '.$hkey), $row['html'] ? $row['value'] : Q($row['value'], ($hkey == 'subject' ? 'strict' : 'show')));
- }
+ if (in_array($hkey, $exclude_headers))
+ continue;
+
+ $header_title = $RCMAIL->gettext(preg_replace('/(^mail-|-)/', '', $hkey));
+
+ if ($hkey == 'date') {
+ if ($PRINT_MODE)
+ $header_value = $RCMAIL->format_date($value, $RCMAIL->config->get('date_long', 'x'));
+ else
+ $header_value = $RCMAIL->format_date($value);
+ }
+ else if ($hkey == 'priority') {
+ if ($value) {
+ $header_value = html::span('prio' . $value, rcmail_localized_priority($value));
+ }
+ else
+ continue;
+ }
+ else if ($hkey == 'replyto') {
+ if ($headers['replyto'] != $headers['from']) {
+ $header_value = rcmail_address_string($value, $attrib['max'], true,
+ $attrib['addicon'], $headers['charset'], $header_title);
+ $ishtml = true;
+ }
+ else
+ continue;
+ }
+ else if ($hkey == 'mail-reply-to') {
+ if ($headers['mail-replyto'] != $headers['reply-to']
+ && $headers['reply-to'] != $headers['from']
+ ) {
+ $header_value = rcmail_address_string($value, $attrib['max'], true,
+ $attrib['addicon'], $headers['charset'], $header_title);
+ $ishtml = true;
+ }
+ else
+ continue;
+ }
+ else if ($hkey == 'sender') {
+ if ($headers['sender'] != $headers['from']) {
+ $header_value = rcmail_address_string($value, $attrib['max'], true,
+ $attrib['addicon'], $headers['charset'], $header_title);
+ $ishtml = true;
+ }
+ else
+ continue;
+ }
+ else if ($hkey == 'mail-followup-to') {
+ $header_value = rcmail_address_string($value, $attrib['max'], true,
+ $attrib['addicon'], $headers['charset'], $header_title);
+ $ishtml = true;
+ }
+ else if (in_array($hkey, array('from', 'to', 'cc', 'bcc'))) {
+ $header_value = rcmail_address_string($value, $attrib['max'], true,
+ $attrib['addicon'], $headers['charset'], $header_title);
+ $ishtml = true;
+ }
+ else if ($hkey == 'subject' && empty($value))
+ $header_value = $RCMAIL->gettext('nosubject');
+ else
+ $header_value = trim(rcube_mime::decode_header($value, $headers['charset']));
+
+ $output_headers[$hkey] = array(
+ 'title' => $header_title,
+ 'value' => $header_value,
+ 'raw' => $value,
+ 'html' => $ishtml,
+ );
+ }
- return $table->show($attrib);
+ $plugin = $RCMAIL->plugins->exec_hook('message_headers_output', array(
+ 'output' => $output_headers,
+ 'headers' => $headers_obj,
+ 'exclude' => $exclude_headers
+ ));
+
+ // single header value is requested
+ if (!empty($attrib['valueof'])) {
+ return rcube::Q($plugin['output'][$attrib['valueof']]['value'], ($attrib['valueof'] == 'subject' ? 'strict' : 'show'));
+ }
+
+ // compose html table
+ $table = new html_table(array('cols' => 2));
+
+ foreach ($plugin['output'] as $hkey => $row) {
+ $val = $row['html'] ? $row['value'] : rcube::Q($row['value'], ($hkey == 'subject' ? 'strict' : 'show'));
+
+ $table->add(array('class' => 'header-title'), rcube::Q($row['title']));
+ $table->add(array('class' => 'header '.$hkey), $val);
+ }
+
+ return $table->show($attrib);
}
/**
@@ -1075,18 +1120,21 @@ function rcmail_message_headers($attrib, $headers=null)
*/
function rcmail_localized_priority($value)
{
- $labels_map = array(
- '1' => 'highest',
- '2' => 'high',
- '3' => 'normal',
- '4' => 'low',
- '5' => 'lowest',
- );
-
- if ($value && $labels_map[$value])
- return rcube_label($labels_map[$value]);
-
- return '';
+ global $RCMAIL;
+
+ $labels_map = array(
+ '1' => 'highest',
+ '2' => 'high',
+ '3' => 'normal',
+ '4' => 'low',
+ '5' => 'lowest',
+ );
+
+ if ($value && $labels_map[$value]) {
+ return $RCMAIL->gettext($labels_map[$value]);
+ }
+
+ return '';
}
/**
@@ -1094,18 +1142,21 @@ function rcmail_localized_priority($value)
*/
function rcmail_message_full_headers($attrib, $headers=NULL)
{
- global $OUTPUT;
+ global $OUTPUT, $RCMAIL;
- $html = html::div(array('id' => "all-headers", 'class' => "all", 'style' => 'display:none'), html::div(array('id' => 'headers-source'), ''));
- $html .= html::div(array('class' => "more-headers show-headers", 'onclick' => "return ".JS_OBJECT_NAME.".command('show-headers','',this)", 'title' => rcube_label('togglefullheaders')), '');
+ $html = html::div(array('id' => "all-headers", 'class' => "all", 'style' => 'display:none'), html::div(array('id' => 'headers-source'), ''));
+ $html .= html::div(array(
+ 'class' => "more-headers show-headers",
+ 'onclick' => "return ".rcmail_output::JS_OBJECT_NAME.".command('show-headers','',this)",
+ 'title' => $RCMAIL->gettext('togglefullheaders')
+ ), '');
- $OUTPUT->add_gui_object('all_headers_row', 'all-headers');
- $OUTPUT->add_gui_object('all_headers_box', 'headers-source');
+ $OUTPUT->add_gui_object('all_headers_row', 'all-headers');
+ $OUTPUT->add_gui_object('all_headers_box', 'headers-source');
- return html::div($attrib, $html);
+ return html::div($attrib, $html);
}
-
/**
* Handler for the 'messagebody' GUI object
*
@@ -1114,518 +1165,530 @@ function rcmail_message_full_headers($attrib, $headers=NULL)
*/
function rcmail_message_body($attrib)
{
- global $CONFIG, $OUTPUT, $MESSAGE, $RCMAIL, $REMOTE_OBJECTS;
+ global $OUTPUT, $MESSAGE, $RCMAIL, $REMOTE_OBJECTS;
- if (!is_array($MESSAGE->parts) && empty($MESSAGE->body))
- return '';
+ if (!is_array($MESSAGE->parts) && empty($MESSAGE->body)) {
+ return '';
+ }
- if (!$attrib['id'])
- $attrib['id'] = 'rcmailMsgBody';
-
- $safe_mode = $MESSAGE->is_safe || intval($_GET['_safe']);
- $out = '';
-
- $header_attrib = array();
- foreach ($attrib as $attr => $value)
- if (preg_match('/^headertable([a-z]+)$/i', $attr, $regs))
- $header_attrib[$regs[1]] = $value;
-
- if (!empty($MESSAGE->parts)) {
- foreach ($MESSAGE->parts as $part) {
- if ($part->type == 'headers') {
- $out .= html::div('message-partheaders', rcmail_message_headers(sizeof($header_attrib) ? $header_attrib : null, $part->headers));
- }
- else if ($part->type == 'content') {
- // unsupported (e.g. encrypted)
- if ($part->realtype) {
- if ($part->realtype == 'multipart/encrypted' || $part->realtype == 'application/pkcs7-mime') {
- $out .= html::span('part-notice', rcube_label('encryptedmessage'));
- }
- continue;
- }
- else if (!$part->size) {
- continue;
- }
- // Check if we have enough memory to handle the message in it
- // #1487424: we need up to 10x more memory than the body
- else if (!rcmail_mem_check($part->size * 10)) {
- $out .= html::span('part-notice', rcube_label('messagetoobig'). ' '
- . html::a('?_task=mail&_action=get&_download=1&_uid='.$MESSAGE->uid.'&_part='.$part->mime_id
- .'&_mbox='. urlencode($RCMAIL->storage->get_folder()), rcube_label('download')));
- continue;
+ if (!$attrib['id'])
+ $attrib['id'] = 'rcmailMsgBody';
+
+ $safe_mode = $MESSAGE->is_safe || intval($_GET['_safe']);
+ $out = '';
+
+ $header_attrib = array();
+ foreach ($attrib as $attr => $value) {
+ if (preg_match('/^headertable([a-z]+)$/i', $attr, $regs)) {
+ $header_attrib[$regs[1]] = $value;
}
+ }
- if (empty($part->ctype_parameters) || empty($part->ctype_parameters['charset']))
- $part->ctype_parameters['charset'] = $MESSAGE->headers->charset;
+ if (!empty($MESSAGE->parts)) {
+ foreach ($MESSAGE->parts as $part) {
+ if ($part->type == 'headers') {
+ $out .= html::div('message-partheaders', rcmail_message_headers(sizeof($header_attrib) ? $header_attrib : null, $part->headers));
+ }
+ else if ($part->type == 'content') {
+ // unsupported (e.g. encrypted)
+ if ($part->realtype) {
+ if ($part->realtype == 'multipart/encrypted' || $part->realtype == 'application/pkcs7-mime') {
+ $out .= html::span('part-notice', $RCMAIL->gettext('encryptedmessage'));
+ }
+ continue;
+ }
+ else if (!$part->size) {
+ continue;
+ }
- // fetch part if not available
- if (!isset($part->body))
- $part->body = $MESSAGE->get_part_content($part->mime_id);
+ // Check if we have enough memory to handle the message in it
+ // #1487424: we need up to 10x more memory than the body
+ else if (!rcube_utils::mem_check($part->size * 10)) {
+ $out .= html::span('part-notice', $RCMAIL->gettext('messagetoobig'). ' '
+ . html::a('?_task=mail&_action=get&_download=1&_uid='.$MESSAGE->uid.'&_part='.$part->mime_id
+ .'&_mbox='. urlencode($RCMAIL->storage->get_folder()), $RCMAIL->gettext('download')));
+ continue;
+ }
- // extract headers from message/rfc822 parts
- if ($part->mimetype == 'message/rfc822') {
- $msgpart = rcube_mime::parse_message($part->body);
- if (!empty($msgpart->headers)) {
- $part = $msgpart;
- $out .= html::div('message-partheaders', rcmail_message_headers(sizeof($header_attrib) ? $header_attrib : null, $part->headers));
- }
- }
+ if (empty($part->ctype_parameters) || empty($part->ctype_parameters['charset'])) {
+ $part->ctype_parameters['charset'] = $MESSAGE->headers->charset;
+ }
- // message is cached but not exists (#1485443), or other error
- if ($part->body === false) {
- rcmail_message_error($MESSAGE->uid);
- }
+ // fetch part if not available
+ if (!isset($part->body)) {
+ $part->body = $MESSAGE->get_part_content($part->mime_id);
+ }
+
+ // extract headers from message/rfc822 parts
+ if ($part->mimetype == 'message/rfc822') {
+ $msgpart = rcube_mime::parse_message($part->body);
+ if (!empty($msgpart->headers)) {
+ $part = $msgpart;
+ $out .= html::div('message-partheaders', rcmail_message_headers(sizeof($header_attrib) ? $header_attrib : null, $part->headers));
+ }
+ }
- $plugin = $RCMAIL->plugins->exec_hook('message_body_prefix', array(
- 'part' => $part, 'prefix' => ''));
+ // message is cached but not exists (#1485443), or other error
+ if ($part->body === false) {
+ rcmail_message_error($MESSAGE->uid);
+ }
+
+ $plugin = $RCMAIL->plugins->exec_hook('message_body_prefix',
+ array('part' => $part, 'prefix' => ''));
- $body = rcmail_print_body($part, array('safe' => $safe_mode, 'plain' => !$CONFIG['prefer_html']));
+ $body = rcmail_print_body($part, array('safe' => $safe_mode, 'plain' => !$RCMAIL->config->get('prefer_html')));
- if ($part->ctype_secondary == 'html') {
- $body = rcmail_html4inline($body, $attrib['id'], 'rcmBody', $attrs, $safe_mode);
- $div_attr = array('class' => 'message-htmlpart');
- $style = array();
+ if ($part->ctype_secondary == 'html') {
+ $body = rcmail_html4inline($body, $attrib['id'], 'rcmBody', $attrs, $safe_mode);
+ $div_attr = array('class' => 'message-htmlpart');
+ $style = array();
- if (!empty($attrs)) {
- foreach ($attrs as $a_idx => $a_val)
- $style[] = $a_idx . ': ' . $a_val;
- if (!empty($style))
- $div_attr['style'] = implode('; ', $style);
- }
+ if (!empty($attrs)) {
+ foreach ($attrs as $a_idx => $a_val)
+ $style[] = $a_idx . ': ' . $a_val;
+ if (!empty($style))
+ $div_attr['style'] = implode('; ', $style);
+ }
- $out .= html::div($div_attr, $plugin['prefix'] . $body);
+ $out .= html::div($div_attr, $plugin['prefix'] . $body);
+ }
+ else
+ $out .= html::div('message-part', $plugin['prefix'] . $body);
+ }
}
- else
- $out .= html::div('message-part', $plugin['prefix'] . $body);
- }
- }
- }
- else {
- // Check if we have enough memory to handle the message in it
- // #1487424: we need up to 10x more memory than the body
- if (!rcmail_mem_check(strlen($MESSAGE->body) * 10)) {
- $out .= html::span('part-notice', rcube_label('messagetoobig'). ' '
- . html::a('?_task=mail&_action=get&_download=1&_uid='.$MESSAGE->uid.'&_part=0'
- .'&_mbox='. urlencode($RCMAIL->storage->get_folder()), rcube_label('download')));
}
else {
- $plugin = $RCMAIL->plugins->exec_hook('message_body_prefix', array(
- 'part' => $MESSAGE, 'prefix' => ''));
+ // Check if we have enough memory to handle the message in it
+ // #1487424: we need up to 10x more memory than the body
+ if (!rcube_utils::mem_check(strlen($MESSAGE->body) * 10)) {
+ $out .= html::span('part-notice', $RCMAIL->gettext('messagetoobig'). ' '
+ . html::a('?_task=mail&_action=get&_download=1&_uid='.$MESSAGE->uid.'&_part=0'
+ .'&_mbox='. urlencode($RCMAIL->storage->get_folder()), $RCMAIL->gettext('download')));
+ }
+ else {
+ $plugin = $RCMAIL->plugins->exec_hook('message_body_prefix',
+ array('part' => $MESSAGE, 'prefix' => ''));
- $out .= html::div('message-part', $plugin['prefix'] . html::tag('pre', array(),
- rcmail_plain_body(Q($MESSAGE->body, 'strict', false))));
+ $out .= html::div('message-part', $plugin['prefix'] . html::tag('pre', array(),
+ rcmail_plain_body(rcube::Q($MESSAGE->body, 'strict', false))));
+ }
}
- }
- // list images after mail body
- if ($RCMAIL->config->get('inline_images', true) && !empty($MESSAGE->attachments)) {
- $thumbnail_size = $RCMAIL->config->get('image_thumbnail_size', 240);
- $client_mimetypes = (array)$RCMAIL->config->get('client_mimetypes');
-
- foreach ($MESSAGE->attachments as $attach_prop) {
- // skip inline images
- if ($attach_prop->content_id && $attach_prop->disposition == 'inline') {
- continue;
- }
-
- // Content-Type: image/*...
- if ($mimetype = rcmail_part_image_type($attach_prop)) {
- // display thumbnails
- if ($thumbnail_size) {
- $show_link = array(
- 'href' => $MESSAGE->get_part_url($attach_prop->mime_id, false),
- 'onclick' => sprintf(
- 'return %s.command(\'load-attachment\',\'%s\',this)',
- JS_OBJECT_NAME,
- $attach_prop->mime_id)
- );
- $out .= html::p('image-attachment',
- html::a($show_link + array('class' => 'image-link', 'style' => sprintf('width:%dpx', $thumbnail_size)),
- html::img(array(
- 'class' => 'image-thumbnail',
- 'src' => $MESSAGE->get_part_url($attach_prop->mime_id, 'image') . '&_thumb=1',
- 'title' => $attach_prop->filename,
- 'alt' => $attach_prop->filename,
- 'style' => sprintf('max-width:%dpx; max-height:%dpx', $thumbnail_size, $thumbnail_size),
- ))
- ) .
- html::span('image-filename', Q($attach_prop->filename)) .
- html::span('image-filesize', Q($RCMAIL->message_part_size($attach_prop))) .
- html::span('attachment-links',
- (in_array($mimetype, $client_mimetypes) ? html::a($show_link, rcube_label('showattachment')) . '&nbsp;' : '') .
- html::a($show_link['href'] . '&_download=1', rcube_label('download'))
- ) .
- html::br(array('style' => 'clear:both'))
- );
- }
- else {
- $out .= html::tag('fieldset', 'image-attachment',
- html::tag('legend', 'image-filename', Q($attach_prop->filename)) .
- html::p(array('align' => "center"),
- html::img(array(
- 'src' => $MESSAGE->get_part_url($attach_prop->mime_id, 'image'),
- 'title' => $attach_prop->filename,
- 'alt' => $attach_prop->filename,
- )))
- );
+ // list images after mail body
+ if ($RCMAIL->config->get('inline_images', true) && !empty($MESSAGE->attachments)) {
+ $thumbnail_size = $RCMAIL->config->get('image_thumbnail_size', 240);
+ $client_mimetypes = (array)$RCMAIL->config->get('client_mimetypes');
+
+ foreach ($MESSAGE->attachments as $attach_prop) {
+ // skip inline images
+ if ($attach_prop->content_id && $attach_prop->disposition == 'inline') {
+ continue;
+ }
+
+ // Content-Type: image/*...
+ if ($mimetype = rcmail_part_image_type($attach_prop)) {
+ // display thumbnails
+ if ($thumbnail_size) {
+ $show_link = array(
+ 'href' => $MESSAGE->get_part_url($attach_prop->mime_id, false),
+ 'onclick' => sprintf(
+ 'return %s.command(\'load-attachment\',\'%s\',this)',
+ rcmail_output::JS_OBJECT_NAME,
+ $attach_prop->mime_id)
+ );
+ $out .= html::p('image-attachment',
+ html::a($show_link + array('class' => 'image-link', 'style' => sprintf('width:%dpx', $thumbnail_size)),
+ html::img(array(
+ 'class' => 'image-thumbnail',
+ 'src' => $MESSAGE->get_part_url($attach_prop->mime_id, 'image') . '&_thumb=1',
+ 'title' => $attach_prop->filename,
+ 'alt' => $attach_prop->filename,
+ 'style' => sprintf('max-width:%dpx; max-height:%dpx', $thumbnail_size, $thumbnail_size),
+ ))
+ ) .
+ html::span('image-filename', rcube::Q($attach_prop->filename)) .
+ html::span('image-filesize', rcube::Q($RCMAIL->message_part_size($attach_prop))) .
+ html::span('attachment-links',
+ (in_array($mimetype, $client_mimetypes) ? html::a($show_link, $RCMAIL->gettext('showattachment')) . '&nbsp;' : '') .
+ html::a($show_link['href'] . '&_download=1', $RCMAIL->gettext('download'))
+ ) .
+ html::br(array('style' => 'clear:both'))
+ );
+ }
+ else {
+ $out .= html::tag('fieldset', 'image-attachment',
+ html::tag('legend', 'image-filename', rcube::Q($attach_prop->filename)) .
+ html::p(array('align' => 'center'),
+ html::img(array(
+ 'src' => $MESSAGE->get_part_url($attach_prop->mime_id, 'image'),
+ 'title' => $attach_prop->filename,
+ 'alt' => $attach_prop->filename,
+ )))
+ );
+ }
+ }
}
- }
}
- }
- // tell client that there are blocked remote objects
- if ($REMOTE_OBJECTS && !$safe_mode)
- $OUTPUT->set_env('blockedobjects', true);
+ // tell client that there are blocked remote objects
+ if ($REMOTE_OBJECTS && !$safe_mode) {
+ $OUTPUT->set_env('blockedobjects', true);
+ }
- return html::div($attrib, $out);
+ return html::div($attrib, $out);
}
function rcmail_part_image_type($part)
{
- $rcmail = rcmail::get_instance();
+ $rcmail = rcmail::get_instance();
- // Skip TIFF images if browser doesn't support this format...
- $tiff_support = !empty($_SESSION['browser_caps']) && !empty($_SESSION['browser_caps']['tif']);
- // until we can convert them to JPEG
- $tiff_support = $tiff_support || $rcmail->config->get('im_convert_path');
+ // Skip TIFF images if browser doesn't support this format...
+ $tiff_support = !empty($_SESSION['browser_caps']) && !empty($_SESSION['browser_caps']['tif']);
+ // until we can convert them to JPEG
+ $tiff_support = $tiff_support || $rcmail->config->get('im_convert_path');
- // Content-type regexp
- $mime_regex = $tiff_support ? '/^image\//i' : '/^image\/(?!tif)/i';
+ // Content-type regexp
+ $mime_regex = $tiff_support ? '/^image\//i' : '/^image\/(?!tif)/i';
- // Content-Type: image/*...
- if (preg_match($mime_regex, $part->mimetype)) {
- return rcmail_fix_mimetype($part->mimetype);
- }
+ // Content-Type: image/*...
+ if (preg_match($mime_regex, $part->mimetype)) {
+ return rcmail_fix_mimetype($part->mimetype);
+ }
- // Many clients use application/octet-stream, we'll detect mimetype
- // by checking filename extension
-
- // Supported image filename extensions to image type map
- $types = array(
- 'jpg' => 'image/jpeg',
- 'jpeg' => 'image/jpeg',
- 'png' => 'image/png',
- 'gif' => 'image/gif',
- 'bmp' => 'image/bmp',
- );
- if ($tiff_support) {
- $types['tif'] = 'image/tiff';
- $types['tiff'] = 'image/tiff';
- }
+ // Many clients use application/octet-stream, we'll detect mimetype
+ // by checking filename extension
- if ($part->filename
- && preg_match('/^application\/octet-stream$/i', $part->mimetype)
- && preg_match('/\.([^.]+)$/i', $part->filename, $m)
- && ($extension = strtolower($m[1]))
- && isset($types[$extension])
- ) {
- return $types[$extension];
- }
-}
+ // Supported image filename extensions to image type map
+ $types = array(
+ 'jpg' => 'image/jpeg',
+ 'jpeg' => 'image/jpeg',
+ 'png' => 'image/png',
+ 'gif' => 'image/gif',
+ 'bmp' => 'image/bmp',
+ );
+ if ($tiff_support) {
+ $types['tif'] = 'image/tiff';
+ $types['tiff'] = 'image/tiff';
+ }
+ if ($part->filename
+ && preg_match('/^application\/octet-stream$/i', $part->mimetype)
+ && preg_match('/\.([^.]+)$/i', $part->filename, $m)
+ && ($extension = strtolower($m[1]))
+ && isset($types[$extension])
+ ) {
+ return $types[$extension];
+ }
+}
/**
* modify a HTML message that it can be displayed inside a HTML page
*/
function rcmail_html4inline($body, $container_id, $body_id='', &$attributes=null, $allow_remote=false)
{
- $last_style_pos = 0;
- $cont_id = $container_id.($body_id ? ' div.'.$body_id : '');
+ $last_style_pos = 0;
+ $cont_id = $container_id.($body_id ? ' div.'.$body_id : '');
- // find STYLE tags
- while (($pos = stripos($body, '<style', $last_style_pos)) && ($pos2 = stripos($body, '</style>', $pos)))
- {
- $pos = strpos($body, '>', $pos) + 1;
- $len = $pos2 - $pos;
+ // find STYLE tags
+ while (($pos = stripos($body, '<style', $last_style_pos)) && ($pos2 = stripos($body, '</style>', $pos))) {
+ $pos = strpos($body, '>', $pos) + 1;
+ $len = $pos2 - $pos;
- // replace all css definitions with #container [def]
- $styles = substr($body, $pos, $len);
- $styles = rcmail_mod_css_styles($styles, $cont_id, $allow_remote);
+ // replace all css definitions with #container [def]
+ $styles = substr($body, $pos, $len);
+ $styles = rcube_utils::mod_css_styles($styles, $cont_id, $allow_remote);
- $body = substr_replace($body, $styles, $pos, $len);
- $last_style_pos = $pos2 + strlen($styles) - $len;
- }
+ $body = substr_replace($body, $styles, $pos, $len);
+ $last_style_pos = $pos2 + strlen($styles) - $len;
+ }
+
+ // modify HTML links to open a new window if clicked
+ $GLOBALS['rcmail_html_container_id'] = $container_id;
+ $body = preg_replace_callback('/<(a|link|area)\s+([^>]+)>/Ui', 'rcmail_alter_html_link', $body);
+ unset($GLOBALS['rcmail_html_container_id']);
+
+ $body = preg_replace(array(
+ // add comments arround html and other tags
+ '/(<!DOCTYPE[^>]*>)/i',
+ '/(<\?xml[^>]*>)/i',
+ '/(<\/?html[^>]*>)/i',
+ '/(<\/?head[^>]*>)/i',
+ '/(<title[^>]*>.*<\/title>)/Ui',
+ '/(<\/?meta[^>]*>)/i',
+ // quote <? of php and xml files that are specified as text/html
+ '/<\?/',
+ '/\?>/',
+ // replace <body> with <div>
+ '/<body([^>]*)>/i',
+ '/<\/body>/i',
+ ),
+ array(
+ '<!--\\1-->',
+ '<!--\\1-->',
+ '<!--\\1-->',
+ '<!--\\1-->',
+ '<!--\\1-->',
+ '<!--\\1-->',
+ '&lt;?',
+ '?&gt;',
+ '<div class="'.$body_id.'"\\1>',
+ '</div>',
+ ),
+ $body);
+
+ $attributes = array();
+
+ // Handle body attributes that doesn't play nicely with div elements
+ $regexp = '/<div class="' . preg_quote($body_id, '/') . '"([^>]*)/';
+ if (preg_match($regexp, $body, $m)) {
+ $attrs = $m[0];
- // modify HTML links to open a new window if clicked
- $GLOBALS['rcmail_html_container_id'] = $container_id;
- $body = preg_replace_callback('/<(a|link|area)\s+([^>]+)>/Ui', 'rcmail_alter_html_link', $body);
- unset($GLOBALS['rcmail_html_container_id']);
-
- $body = preg_replace(array(
- // add comments arround html and other tags
- '/(<!DOCTYPE[^>]*>)/i',
- '/(<\?xml[^>]*>)/i',
- '/(<\/?html[^>]*>)/i',
- '/(<\/?head[^>]*>)/i',
- '/(<title[^>]*>.*<\/title>)/Ui',
- '/(<\/?meta[^>]*>)/i',
- // quote <? of php and xml files that are specified as text/html
- '/<\?/',
- '/\?>/',
- // replace <body> with <div>
- '/<body([^>]*)>/i',
- '/<\/body>/i',
- ),
- array(
- '<!--\\1-->',
- '<!--\\1-->',
- '<!--\\1-->',
- '<!--\\1-->',
- '<!--\\1-->',
- '<!--\\1-->',
- '&lt;?',
- '?&gt;',
- '<div class="'.$body_id.'"\\1>',
- '</div>',
- ),
- $body);
-
- $attributes = array();
-
- // Handle body attributes that doesn't play nicely with div elements
- $regexp = '/<div class="' . preg_quote($body_id, '/') . '"([^>]*)/';
- if (preg_match($regexp, $body, $m)) {
- $attrs = $m[0];
- // Get bgcolor, we'll set it as background-color of the message container
- if ($m[1] && preg_match('/bgcolor=["\']*([a-z0-9#]+)["\']*/', $attrs, $mb)) {
- $attributes['background-color'] = $mb[1];
- $attrs = preg_replace('/bgcolor=["\']*([a-z0-9#]+)["\']*/', '', $attrs);
- }
- // Get background, we'll set it as background-image of the message container
- if ($m[1] && preg_match('/background=["\']*([^"\'>\s]+)["\']*/', $attrs, $mb)) {
- $attributes['background-image'] = 'url('.$mb[1].')';
- $attrs = preg_replace('/background=["\']*([^"\'>\s]+)["\']*/', '', $attrs);
- }
- if (!empty($attributes)) {
- $body = preg_replace($regexp, rtrim($attrs), $body, 1);
- }
-
- // handle body styles related to background image
- if ($attributes['background-image']) {
- // get body style
- if (preg_match('/#'.preg_quote($cont_id, '/').'\s+\{([^}]+)}/i', $body, $m)) {
- // get background related style
- if (preg_match_all('/(background-position|background-repeat)\s*:\s*([^;]+);/i', $m[1], $ma, PREG_SET_ORDER)) {
- foreach ($ma as $style)
- $attributes[$style[1]] = $style[2];
+ // Get bgcolor, we'll set it as background-color of the message container
+ if ($m[1] && preg_match('/bgcolor=["\']*([a-z0-9#]+)["\']*/i', $attrs, $mb)) {
+ $attributes['background-color'] = $mb[1];
+ $attrs = preg_replace('/bgcolor=["\']*[a-z0-9#]+["\']*/i', '', $attrs);
+ }
+
+ // Get background, we'll set it as background-image of the message container
+ if ($m[1] && preg_match('/background=["\']*([^"\'>\s]+)["\']*/', $attrs, $mb)) {
+ $attributes['background-image'] = 'url('.$mb[1].')';
+ $attrs = preg_replace('/background=["\']*([^"\'>\s]+)["\']*/', '', $attrs);
+ }
+
+ if (!empty($attributes)) {
+ $body = preg_replace($regexp, rtrim($attrs), $body, 1);
+ }
+
+ // handle body styles related to background image
+ if ($attributes['background-image']) {
+ // get body style
+ if (preg_match('/#'.preg_quote($cont_id, '/').'\s+\{([^}]+)}/i', $body, $m)) {
+ // get background related style
+ $regexp = '/(background-position|background-repeat)\s*:\s*([^;]+);/i';
+ if (preg_match_all($regexp, $m[1], $ma, PREG_SET_ORDER)) {
+ foreach ($ma as $style) {
+ $attributes[$style[1]] = $style[2];
+ }
+ }
+ }
}
- }
}
- }
- // make sure there's 'rcmBody' div, we need it for proper css modification
- // its name is hardcoded in rcmail_message_body() also
- else {
- $body = '<div class="' . $body_id . '">' . $body . '</div>';
- }
+ // make sure there's 'rcmBody' div, we need it for proper css modification
+ // its name is hardcoded in rcmail_message_body() also
+ else {
+ $body = '<div class="' . $body_id . '">' . $body . '</div>';
+ }
- return $body;
+ return $body;
}
-
/**
* parse link (a, link, area) attributes and set correct target
*/
function rcmail_alter_html_link($matches)
{
- global $RCMAIL;
+ global $RCMAIL;
- $tag = strtolower($matches[1]);
- $attrib = parse_attrib_string($matches[2]);
- $end = '>';
+ $tag = strtolower($matches[1]);
+ $attrib = html::parse_attrib_string($matches[2]);
+ $end = '>';
- // Remove non-printable characters in URL (#1487805)
- if ($attrib['href'])
- $attrib['href'] = preg_replace('/[\x00-\x1F]/', '', $attrib['href']);
+ // Remove non-printable characters in URL (#1487805)
+ if ($attrib['href'])
+ $attrib['href'] = preg_replace('/[\x00-\x1F]/', '', $attrib['href']);
- if ($tag == 'link' && preg_match('/^https?:\/\//i', $attrib['href'])) {
- $tempurl = 'tmp-' . md5($attrib['href']) . '.css';
- $_SESSION['modcssurls'][$tempurl] = $attrib['href'];
- $attrib['href'] = $RCMAIL->url(array('task' => 'utils', 'action' => 'modcss', 'u' => $tempurl, 'c' => $GLOBALS['rcmail_html_container_id']));
- $end = ' />';
- }
- else if (preg_match('/^mailto:(.+)/i', $attrib['href'], $mailto)) {
- list($mailto, $url) = explode('?', html_entity_decode($mailto[1], ENT_QUOTES, 'UTF-8'), 2);
-
- $url = urldecode($url);
- $mailto = urldecode($mailto);
- $addresses = rcube_mime::decode_address_list($mailto, null, true);
- $mailto = array();
-
- // do sanity checks on recipients
- foreach ($addresses as $idx => $addr) {
- if (rcube_utils::check_email($addr['mailto'], false)) {
- $addresses[$idx] = $addr['mailto'];
- $mailto[] = $addr['string'];
- }
- else {
- unset($addresses[$idx]);
- }
- }
-
- if (!empty($addresses)) {
- $attrib['href'] = 'mailto:' . implode(',', $addresses);
- $attrib['onclick'] = sprintf(
- "return %s.command('compose','%s',this)",
- JS_OBJECT_NAME,
- JQ(implode(',', $mailto) . ($url ? "?$url" : '')));
+ if ($tag == 'link' && preg_match('/^https?:\/\//i', $attrib['href'])) {
+ $tempurl = 'tmp-' . md5($attrib['href']) . '.css';
+ $_SESSION['modcssurls'][$tempurl] = $attrib['href'];
+ $attrib['href'] = $RCMAIL->url(array('task' => 'utils', 'action' => 'modcss', 'u' => $tempurl, 'c' => $GLOBALS['rcmail_html_container_id']));
+ $end = ' />';
}
- else {
- $attrib['href'] = '#NOP';
- $attrib['onclick'] = '';
+ else if (preg_match('/^mailto:(.+)/i', $attrib['href'], $mailto)) {
+ list($mailto, $url) = explode('?', html_entity_decode($mailto[1], ENT_QUOTES, 'UTF-8'), 2);
+
+ $url = urldecode($url);
+ $mailto = urldecode($mailto);
+ $addresses = rcube_mime::decode_address_list($mailto, null, true);
+ $mailto = array();
+
+ // do sanity checks on recipients
+ foreach ($addresses as $idx => $addr) {
+ if (rcube_utils::check_email($addr['mailto'], false)) {
+ $addresses[$idx] = $addr['mailto'];
+ $mailto[] = $addr['string'];
+ }
+ else {
+ unset($addresses[$idx]);
+ }
+ }
+
+ if (!empty($addresses)) {
+ $attrib['href'] = 'mailto:' . implode(',', $addresses);
+ $attrib['onclick'] = sprintf(
+ "return %s.command('compose','%s',this)",
+ rcmail_output::JS_OBJECT_NAME,
+ rcube::JQ(implode(',', $mailto) . ($url ? "?$url" : '')));
+ }
+ else {
+ $attrib['href'] = '#NOP';
+ $attrib['onclick'] = '';
+ }
+ }
+ else if (empty($attrib['href']) && !$attrib['name']) {
+ $attrib['href'] = './#NOP';
+ $attrib['onclick'] = 'return false';
+ }
+ else if (!empty($attrib['href']) && $attrib['href'][0] != '#') {
+ $attrib['target'] = '_blank';
}
- }
- else if (empty($attrib['href']) && !$attrib['name']) {
- $attrib['href'] = './#NOP';
- $attrib['onclick'] = 'return false';
- }
- else if (!empty($attrib['href']) && $attrib['href'][0] != '#') {
- $attrib['target'] = '_blank';
- }
- // Better security by adding rel="noreferrer" (#1484686)
- if (($tag == 'a' || $tag == 'area') && $attrib['href'] && $attrib['href'][0] != '#') {
- $attrib['rel'] = 'noreferrer';
- }
+ // Better security by adding rel="noreferrer" (#1484686)
+ if (($tag == 'a' || $tag == 'area') && $attrib['href'] && $attrib['href'][0] != '#') {
+ $attrib['rel'] = 'noreferrer';
+ }
- // allowed attributes for a|link|area tags
- $allow = array('href','name','target','onclick','id','class','style','title',
- 'rel','type','media','alt','coords','nohref','hreflang','shape');
+ // allowed attributes for a|link|area tags
+ $allow = array('href','name','target','onclick','id','class','style','title',
+ 'rel','type','media','alt','coords','nohref','hreflang','shape');
- return "<$tag" . html::attrib_string($attrib, $allow) . $end;
+ return "<$tag" . html::attrib_string($attrib, $allow) . $end;
}
-
/**
* decode address string and re-format it as HTML links
*/
function rcmail_address_string($input, $max=null, $linked=false, $addicon=null, $default_charset=null, $title=null)
{
- global $RCMAIL, $PRINT_MODE, $CONFIG;
+ global $RCMAIL, $PRINT_MODE;
+
+ $a_parts = rcube_mime::decode_address_list($input, null, true, $default_charset);
- $a_parts = rcube_mime::decode_address_list($input, null, true, $default_charset);
+ if (!sizeof($a_parts)) {
+ return $input;
+ }
- if (!sizeof($a_parts))
- return $input;
+ $c = count($a_parts);
+ $j = 0;
+ $out = '';
+ $allvalues = array();
+ $show_email = $RCMAIL->config->get('message_show_email');
- $c = count($a_parts);
- $j = 0;
- $out = '';
- $allvalues = array();
- $show_email = $RCMAIL->config->get('message_show_email');
+ if ($addicon && !isset($_SESSION['writeable_abook'])) {
+ $_SESSION['writeable_abook'] = $RCMAIL->get_address_sources(true) ? true : false;
+ }
- if ($addicon && !isset($_SESSION['writeable_abook'])) {
- $_SESSION['writeable_abook'] = $RCMAIL->get_address_sources(true) ? true : false;
- }
+ foreach ($a_parts as $part) {
+ $j++;
- foreach ($a_parts as $part) {
- $j++;
- $name = $part['name'];
- $mailto = $part['mailto'];
- $string = $part['string'];
- $valid = check_email($mailto, false);
-
- // phishing email prevention (#1488981), e.g. "valid@email.addr <phishing@email.addr>"
- if (!$show_email && $valid && $name && $name != $mailto && strpos($name, '@')) {
- $name = '';
- }
-
- // IDNA ASCII to Unicode
- if ($name == $mailto)
- $name = rcube_idn_to_utf8($name);
- if ($string == $mailto)
- $string = rcube_idn_to_utf8($string);
- $mailto = rcube_idn_to_utf8($mailto);
-
- if ($PRINT_MODE) {
- $address = sprintf('%s &lt;%s&gt;', Q($name), Q($mailto));
- }
- else if ($valid) {
- if ($linked) {
- $attrs = array(
- 'href' => 'mailto:' . $mailto,
- 'onclick' => sprintf("return %s.command('compose','%s',this)", JS_OBJECT_NAME, JQ(format_email_recipient($mailto, $name))),
- 'class' => "rcmContactAddress",
- );
+ $name = $part['name'];
+ $mailto = $part['mailto'];
+ $string = $part['string'];
+ $valid = rcube_utils::check_email($mailto, false);
- if ($show_email && $name && $mailto) {
- $content = Q($name ? sprintf('%s <%s>', $name, $mailto) : $mailto);
+ // phishing email prevention (#1488981), e.g. "valid@email.addr <phishing@email.addr>"
+ if (!$show_email && $valid && $name && $name != $mailto && strpos($name, '@')) {
+ $name = '';
}
- else {
- $content = Q($name ? $name : $mailto);
- $attrs['title'] = $mailto;
+
+ // IDNA ASCII to Unicode
+ if ($name == $mailto)
+ $name = rcube_utils::idn_to_utf8($name);
+ if ($string == $mailto)
+ $string = rcube_utils::idn_to_utf8($string);
+ $mailto = rcube_utils::idn_to_utf8($mailto);
+
+ if ($PRINT_MODE) {
+ $address = sprintf('%s &lt;%s&gt;', rcube::Q($name), rcube::Q($mailto));
}
+ else if ($valid) {
+ if ($linked) {
+ $attrs = array(
+ 'href' => 'mailto:' . $mailto,
+ 'class' => 'rcmContactAddress',
+ 'onclick' => sprintf("return %s.command('compose','%s',this)",
+ rcmail_output::JS_OBJECT_NAME, rcube::JQ(format_email_recipient($mailto, $name))),
+ );
+
+ if ($show_email && $name && $mailto) {
+ $content = rcube::Q($name ? sprintf('%s <%s>', $name, $mailto) : $mailto);
+ }
+ else {
+ $content = rcube::Q($name ? $name : $mailto);
+ $attrs['title'] = $mailto;
+ }
- $address = html::a($attrs, $content);
- }
- else {
- $address = html::span(array('title' => $mailto, 'class' => "rcmContactAddress"),
- Q($name ? $name : $mailto));
- }
-
- if ($addicon && $_SESSION['writeable_abook']) {
- $address .= html::a(array(
- 'href' => "#add",
- 'onclick' => sprintf("return %s.command('add-contact','%s',this)", JS_OBJECT_NAME, JQ($string)),
- 'title' => rcube_label('addtoaddressbook'),
- 'class' => 'rcmaddcontact',
- ),
- html::img(array(
- 'src' => $CONFIG['skin_path'] . $addicon,
- 'alt' => "Add contact",
- )));
- }
- }
- else {
- $address = '';
- if ($name)
- $address .= Q($name);
- if ($mailto)
- $address = trim($address . ' ' . Q($name ? sprintf('<%s>', $mailto) : $mailto));
- }
+ $address = html::a($attrs, $content);
+ }
+ else {
+ $address = html::span(array('title' => $mailto, 'class' => "rcmContactAddress"),
+ rcube::Q($name ? $name : $mailto));
+ }
- $address = html::span('adr', $address);
- $allvalues[] = $address;
+ if ($addicon && $_SESSION['writeable_abook']) {
+ $address .= html::a(array(
+ 'href' => "#add",
+ 'title' => $RCMAIL->gettext('addtoaddressbook'),
+ 'class' => 'rcmaddcontact',
+ 'onclick' => sprintf("return %s.command('add-contact','%s',this)",
+ rcmail_output::JS_OBJECT_NAME, rcube::JQ($string)),
+ ),
+ html::img(array(
+ 'src' => $RCMAIL->config->get('skin_path') . $addicon,
+ 'alt' => "Add contact",
+ )));
+ }
+ }
+ else {
+ $address = '';
+ if ($name)
+ $address .= rcube::Q($name);
+ if ($mailto)
+ $address = trim($address . ' ' . rcube::Q($name ? sprintf('<%s>', $mailto) : $mailto));
+ }
- if (!$moreadrs)
- $out .= ($out ? ', ' : '') . $address;
+ $address = html::span('adr', $address);
+ $allvalues[] = $address;
- if ($max && $j == $max && $c > $j) {
- if ($linked) {
- $moreadrs = $c - $j;
- }
- else {
- $out .= '...';
- break;
- }
- }
- }
+ if (!$moreadrs)
+ $out .= ($out ? ', ' : '') . $address;
- if ($moreadrs) {
- if ($PRINT_MODE) {
- $out .= ' ' . html::a(array(
- 'href' => '#more',
- 'class' => 'morelink',
- 'onclick' => '$(this).hide().next().show()',
- ), Q(rcube_label(array('name' => 'andnmore', 'vars' => array('nr' => $moreadrs))))) .
- html::span(array('style' => 'display:none'), join(', ', $allvalues));
+ if ($max && $j == $max && $c > $j) {
+ if ($linked) {
+ $moreadrs = $c - $j;
+ }
+ else {
+ $out .= '...';
+ break;
+ }
+ }
}
- else {
- $out .= ' ' . html::a(array(
- 'href' => '#more',
- 'class' => 'morelink',
- 'onclick' => sprintf("return %s.show_popup_dialog('%s','%s')",
- JS_OBJECT_NAME,
- JQ(join(', ', $allvalues)),
- JQ($title))
- ),
- Q(rcube_label(array('name' => 'andnmore', 'vars' => array('nr' => $moreadrs)))));
+
+ if ($moreadrs) {
+ if ($PRINT_MODE) {
+ $out .= ' ' . html::a(array(
+ 'href' => '#more',
+ 'class' => 'morelink',
+ 'onclick' => '$(this).hide().next().show()',
+ ),
+ rcube::Q($RCMAIL->gettext(array('name' => 'andnmore', 'vars' => array('nr' => $moreadrs)))))
+ . html::span(array('style' => 'display:none'), join(', ', $allvalues));
+ }
+ else {
+ $out .= ' ' . html::a(array(
+ 'href' => '#more',
+ 'class' => 'morelink',
+ 'onclick' => sprintf("return %s.show_popup_dialog('%s','%s')",
+ rcmail_output::JS_OBJECT_NAME,
+ rcube::JQ(join(', ', $allvalues)),
+ rcube::JQ($title))
+ ),
+ rcube::Q($RCMAIL->gettext(array('name' => 'andnmore', 'vars' => array('nr' => $moreadrs)))));
+ }
}
- }
- return $out;
+ return $out;
}
-
/**
* Wrap text to a given number of characters per line
* but respect the mail quotation of replies messages (>).
@@ -1638,74 +1701,79 @@ function rcmail_address_string($input, $max=null, $linked=false, $addicon=null,
*/
function rcmail_wrap_and_quote($text, $length = 72)
{
- // Rebuild the message body with a maximum of $max chars, while keeping quoted message.
- $max = max(75, $length + 8);
- $lines = preg_split('/\r?\n/', trim($text));
- $out = '';
-
- foreach ($lines as $line) {
- // don't wrap already quoted lines
- if ($line[0] == '>')
- $line = '>' . rtrim($line);
- else if (mb_strlen($line) > $max) {
- $newline = '';
- foreach (explode("\n", rc_wordwrap($line, $length - 2)) as $l) {
- if (strlen($l))
- $newline .= '> ' . $l . "\n";
- else
- $newline .= ">\n";
- }
- $line = rtrim($newline);
- }
- else
- $line = '> ' . $line;
+ // Rebuild the message body with a maximum of $max chars, while keeping quoted message.
+ $max = max(75, $length + 8);
+ $lines = preg_split('/\r?\n/', trim($text));
+ $out = '';
+
+ foreach ($lines as $line) {
+ // don't wrap already quoted lines
+ if ($line[0] == '>') {
+ $line = '>' . rtrim($line);
+ }
+ else if (mb_strlen($line) > $max) {
+ $newline = '';
+
+ foreach (explode("\n", rcube_mime::wordwrap($line, $length - 2)) as $l) {
+ if (strlen($l))
+ $newline .= '> ' . $l . "\n";
+ else
+ $newline .= ">\n";
+ }
- // Append the line
- $out .= $line . "\n";
- }
+ $line = rtrim($newline);
+ }
+ else {
+ $line = '> ' . $line;
+ }
- return rtrim($out, "\n");
-}
+ // Append the line
+ $out .= $line . "\n";
+ }
+ return rtrim($out, "\n");
+}
function rcmail_draftinfo_encode($p)
{
- $parts = array();
- foreach ($p as $key => $val)
- $parts[] = $key . '=' . ($key == 'folder' ? base64_encode($val) : $val);
+ $parts = array();
+ foreach ($p as $key => $val) {
+ $parts[] = $key . '=' . ($key == 'folder' ? base64_encode($val) : $val);
+ }
- return join('; ', $parts);
+ return join('; ', $parts);
}
-
function rcmail_draftinfo_decode($str)
{
- $info = array();
- foreach (preg_split('/;\s+/', $str) as $part) {
- list($key, $val) = explode('=', $part, 2);
- if ($key == 'folder')
- $val = base64_decode($val);
- $info[$key] = $val;
- }
+ $info = array();
- return $info;
-}
+ foreach (preg_split('/;\s+/', $str) as $part) {
+ list($key, $val) = explode('=', $part, 2);
+ if ($key == 'folder') {
+ $val = base64_decode($val);
+ }
+ $info[$key] = $val;
+ }
+
+ return $info;
+}
/**
* clear message composing settings
*/
function rcmail_compose_cleanup($id)
{
- if (!isset($_SESSION['compose_data_'.$id]))
- return;
+ if (!isset($_SESSION['compose_data_'.$id])) {
+ return;
+ }
- $rcmail = rcmail::get_instance();
- $rcmail->plugins->exec_hook('attachments_cleanup', array('group' => $id));
- $rcmail->session->remove('compose_data_'.$id);
+ $rcmail = rcmail::get_instance();
+ $rcmail->plugins->exec_hook('attachments_cleanup', array('group' => $id));
+ $rcmail->session->remove('compose_data_'.$id);
}
-
/**
* Send the MDN response
*
@@ -1716,76 +1784,78 @@ function rcmail_compose_cleanup($id)
*/
function rcmail_send_mdn($message, &$smtp_error)
{
- global $RCMAIL;
-
- if (!is_object($message) || !is_a($message, 'rcube_message'))
- $message = new rcube_message($message);
-
- if ($message->headers->mdn_to && empty($message->headers->flags['MDNSENT']) &&
- ($RCMAIL->storage->check_permflag('MDNSENT') || $RCMAIL->storage->check_permflag('*')))
- {
- $identity = rcmail_identity_select($message);
- $sender = format_email_recipient($identity['email'], $identity['name']);
- $recipient = array_shift(rcube_mime::decode_address_list(
- $message->headers->mdn_to, 1, true, $message->headers->charset));
- $mailto = $recipient['mailto'];
-
- $compose = new Mail_mime("\r\n");
-
- $compose->setParam('text_encoding', 'quoted-printable');
- $compose->setParam('html_encoding', 'quoted-printable');
- $compose->setParam('head_encoding', 'quoted-printable');
- $compose->setParam('head_charset', RCMAIL_CHARSET);
- $compose->setParam('html_charset', RCMAIL_CHARSET);
- $compose->setParam('text_charset', RCMAIL_CHARSET);
-
- // compose headers array
- $headers = array(
- 'Date' => rcmail_user_date(),
- 'From' => $sender,
- 'To' => $message->headers->mdn_to,
- 'Subject' => rcube_label('receiptread') . ': ' . $message->subject,
- 'Message-ID' => rcmail_gen_message_id(),
- 'X-Sender' => $identity['email'],
- 'References' => trim($message->headers->references . ' ' . $message->headers->messageID),
- );
+ global $RCMAIL;
+
+ if (!is_object($message) || !is_a($message, 'rcube_message')) {
+ $message = new rcube_message($message);
+ }
- if ($agent = $RCMAIL->config->get('useragent'))
- $headers['User-Agent'] = $agent;
+ if ($message->headers->mdn_to && empty($message->headers->flags['MDNSENT']) &&
+ ($RCMAIL->storage->check_permflag('MDNSENT') || $RCMAIL->storage->check_permflag('*'))
+ ) {
+ $identity = rcmail_identity_select($message);
+ $sender = format_email_recipient($identity['email'], $identity['name']);
+ $recipient = array_shift(rcube_mime::decode_address_list(
+ $message->headers->mdn_to, 1, true, $message->headers->charset));
+ $mailto = $recipient['mailto'];
+
+ $compose = new Mail_mime("\r\n");
+
+ $compose->setParam('text_encoding', 'quoted-printable');
+ $compose->setParam('html_encoding', 'quoted-printable');
+ $compose->setParam('head_encoding', 'quoted-printable');
+ $compose->setParam('head_charset', RCUBE_CHARSET);
+ $compose->setParam('html_charset', RCUBE_CHARSET);
+ $compose->setParam('text_charset', RCUBE_CHARSET);
+
+ // compose headers array
+ $headers = array(
+ 'Date' => $RCMAIL->user_date(),
+ 'From' => $sender,
+ 'To' => $message->headers->mdn_to,
+ 'Subject' => $RCMAIL->gettext('receiptread') . ': ' . $message->subject,
+ 'Message-ID' => $RCMAIL->gen_message_id(),
+ 'X-Sender' => $identity['email'],
+ 'References' => trim($message->headers->references . ' ' . $message->headers->messageID),
+ );
- if ($RCMAIL->config->get('mdn_use_from'))
- $options['mdn_use_from'] = true;
+ $report = "Final-Recipient: rfc822; {$identity['email']}\r\n"
+ . "Original-Message-ID: {$message->headers->messageID}\r\n"
+ . "Disposition: manual-action/MDN-sent-manually; displayed\r\n";
- $body = rcube_label("yourmessage") . "\r\n\r\n" .
- "\t" . rcube_label("to") . ': ' . rcube_mime::decode_mime_string($message->headers->to, $message->headers->charset) . "\r\n" .
- "\t" . rcube_label("subject") . ': ' . $message->subject . "\r\n" .
- "\t" . rcube_label("sent") . ': ' . format_date($message->headers->date, $RCMAIL->config->get('date_long')) . "\r\n" .
- "\r\n" . rcube_label("receiptnote") . "\r\n";
+ if ($message->headers->to) {
+ $report .= "Original-Recipient: {$message->headers->to}\r\n";
+ }
- $ua = $RCMAIL->config->get('useragent', "Roundcube Webmail (Version ".RCMAIL_VERSION.")");
- $report = "Reporting-UA: $ua\r\n";
+ if ($agent = $RCMAIL->config->get('useragent')) {
+ $headers['User-Agent'] = $agent;
+ $report .= "Reporting-UA: $agent\r\n";
+ }
- if ($message->headers->to)
- $report .= "Original-Recipient: {$message->headers->to}\r\n";
+ $body = $RCMAIL->gettext("yourmessage") . "\r\n\r\n" .
+ "\t" . $RCMAIL->gettext("to") . ': ' . rcube_mime::decode_mime_string($message->headers->to, $message->headers->charset) . "\r\n" .
+ "\t" . $RCMAIL->gettext("subject") . ': ' . $message->subject . "\r\n" .
+ "\t" . $RCMAIL->gettext("sent") . ': ' . $RCMAIL->format_date($message->headers->date, $RCMAIL->config->get('date_long')) . "\r\n" .
+ "\r\n" . $RCMAIL->gettext("receiptnote");
- $report .= "Final-Recipient: rfc822; {$identity['email']}\r\n" .
- "Original-Message-ID: {$message->headers->messageID}\r\n" .
- "Disposition: manual-action/MDN-sent-manually; displayed\r\n";
+ $compose->headers($headers);
+ $compose->setContentType('multipart/report', array('report-type'=> 'disposition-notification'));
+ $compose->setTXTBody(rcube_mime::wordwrap($body, 75, "\r\n"));
+ $compose->addAttachment($report, 'message/disposition-notification', 'MDNPart2.txt', false, '7bit', 'inline');
- $compose->headers($headers);
- $compose->setContentType('multipart/report', array('report-type'=> 'disposition-notification'));
- $compose->setTXTBody(rc_wordwrap($body, 75, "\r\n"));
- $compose->addAttachment($report, 'message/disposition-notification', 'MDNPart2.txt', false, '7bit', 'inline');
+ if ($RCMAIL->config->get('mdn_use_from')) {
+ $options['mdn_use_from'] = true;
+ }
- $sent = rcmail_deliver_message($compose, $identity['email'], $mailto, $smtp_error, $body_file, $options);
+ $sent = $RCMAIL->deliver_message($compose, $identity['email'], $mailto, $smtp_error, $body_file, $options);
- if ($sent) {
- $RCMAIL->storage->set_flag($message->uid, 'MDNSENT');
- return true;
+ if ($sent) {
+ $RCMAIL->storage->set_flag($message->uid, 'MDNSENT');
+ return true;
+ }
}
- }
- return false;
+ return false;
}
/**
@@ -1821,28 +1891,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']) {
@@ -1852,22 +1928,27 @@ 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
if ($from_idx === null && ($return_path = $MESSAGE->headers->others['return-path'])) {
+ $return_path = array_map('strtolower', (array) $return_path);
+
foreach ($identities as $idx => $ident) {
// Return-Path header contains an email address, but on some mailing list
// it can be e.g. <pear-dev-return-55250-local=domain.tld@lists.php.net>
// where local@domain.tld is the address we're looking for (#1489241)
- $ident1 = $ident['email_ascii'];
+ $ident1 = strtolower($ident['email_ascii']);
$ident2 = str_replace('@', '=', $ident1);
+ $ident1 = '<' . $ident1 . '>';
+ $ident2 = '-' . $ident2 . '@';
- foreach ((array)$return_path as $path) {
- if (stripos($path, $ident1) !== false || stripos($path, $ident2)) {
+ foreach ($return_path as $path) {
+ if ($path == $ident1 || stripos($path, $ident2)) {
$from_idx = $idx;
break 2;
}
@@ -1881,36 +1962,41 @@ 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
function rcmail_fix_mimetype($name)
{
- // Some versions of Outlook create garbage Content-Type:
- // application/pdf.A520491B_3BF7_494D_8855_7FAC2C6C0608
- if (preg_match('/^application\/pdf.+/', $name))
- $name = 'application/pdf';
- // treat image/pjpeg (image/pjpg, image/jpg) as image/jpeg (#1489097)
- else if (preg_match('/^image\/p?jpe?g$/', $name))
- $name = 'image/jpeg';
-
- return $name;
+ // Some versions of Outlook create garbage Content-Type:
+ // application/pdf.A520491B_3BF7_494D_8855_7FAC2C6C0608
+ if (preg_match('/^application\/pdf.+/', $name)) {
+ $name = 'application/pdf';
+ }
+ // treat image/pjpeg (image/pjpg, image/jpg) as image/jpeg (#1489097)
+ else if (preg_match('/^image\/p?jpe?g$/', $name)) {
+ $name = 'image/jpeg';
+ }
+
+ return $name;
}
// return attachment filename, handle empty filename case
function rcmail_attachment_name($attachment, $display = false)
{
+ global $RCMAIL;
+
$filename = $attachment->filename;
if ($filename === null || $filename === '') {
if ($attachment->mimetype == 'text/html') {
- $filename = rcube_label('htmlmessage');
+ $filename = $RCMAIL->gettext('htmlmessage');
}
else {
$ext = (array) rcube_mime::get_mime_extensions($attachment->mimetype);
$ext = array_shift($ext);
- $filename = rcube_label('messagepart') . ' ' . $attachment->mime_id;
+ $filename = $RCMAIL->gettext('messagepart') . ' ' . $attachment->mime_id;
if ($ext) {
$filename .= '.' . $ext;
}
@@ -1922,7 +2008,7 @@ function rcmail_attachment_name($attachment, $display = false)
// Display smart names for some known mimetypes
if ($display) {
if (preg_match('/application\/(pgp|pkcs7)-signature/i', $attachment->mimetype)) {
- $filename = rcube_label('digitalsig');
+ $filename = $RCMAIL->gettext('digitalsig');
}
}
@@ -1931,92 +2017,104 @@ function rcmail_attachment_name($attachment, $display = false)
function rcmail_search_filter($attrib)
{
- global $OUTPUT, $CONFIG;
+ global $RCMAIL;
- if (!strlen($attrib['id']))
- $attrib['id'] = 'rcmlistfilter';
+ if (!strlen($attrib['id']))
+ $attrib['id'] = 'rcmlistfilter';
- $attrib['onchange'] = JS_OBJECT_NAME.'.filter_mailbox(this.value)';
+ $attrib['onchange'] = rcmail_output::JS_OBJECT_NAME.'.filter_mailbox(this.value)';
- // Content-Type values of messages with attachments
- // the same as in app.js:add_message_row()
- $ctypes = array('application/', 'multipart/m', 'multipart/signed', 'multipart/report');
+ // Content-Type values of messages with attachments
+ // the same as in app.js:add_message_row()
+ $ctypes = array('application/', 'multipart/m', 'multipart/signed', 'multipart/report');
- // Build search string of "with attachment" filter
- $attachment = str_repeat(' OR', count($ctypes)-1);
- foreach ($ctypes as $type) {
- $attachment .= ' HEADER Content-Type ' . rcube_imap_generic::escape($type);
- }
+ // Build search string of "with attachment" filter
+ $attachment = str_repeat(' OR', count($ctypes)-1);
+ foreach ($ctypes as $type) {
+ $attachment .= ' HEADER Content-Type ' . rcube_imap_generic::escape($type);
+ }
- $select_filter = new html_select($attrib);
- $select_filter->add(rcube_label('all'), 'ALL');
- $select_filter->add(rcube_label('unread'), 'UNSEEN');
- $select_filter->add(rcube_label('flagged'), 'FLAGGED');
- $select_filter->add(rcube_label('unanswered'), 'UNANSWERED');
- if (!$CONFIG['skip_deleted']) {
- $select_filter->add(rcube_label('deleted'), 'DELETED');
- $select_filter->add(rcube_label('undeleted'), 'UNDELETED');
- }
- $select_filter->add(rcube_label('withattachment'), $attachment);
- $select_filter->add(rcube_label('priority').': '.rcube_label('highest'), 'HEADER X-PRIORITY 1');
- $select_filter->add(rcube_label('priority').': '.rcube_label('high'), 'HEADER X-PRIORITY 2');
- $select_filter->add(rcube_label('priority').': '.rcube_label('normal'), 'NOT HEADER X-PRIORITY 1 NOT HEADER X-PRIORITY 2 NOT HEADER X-PRIORITY 4 NOT HEADER X-PRIORITY 5');
- $select_filter->add(rcube_label('priority').': '.rcube_label('low'), 'HEADER X-PRIORITY 4');
- $select_filter->add(rcube_label('priority').': '.rcube_label('lowest'), 'HEADER X-PRIORITY 5');
+ $select_filter = new html_select($attrib);
+ $select_filter->add($RCMAIL->gettext('all'), 'ALL');
+ $select_filter->add($RCMAIL->gettext('unread'), 'UNSEEN');
+ $select_filter->add($RCMAIL->gettext('flagged'), 'FLAGGED');
+ $select_filter->add($RCMAIL->gettext('unanswered'), 'UNANSWERED');
+ if (!$RCMAIL->config->get('skip_deleted')) {
+ $select_filter->add($RCMAIL->gettext('deleted'), 'DELETED');
+ $select_filter->add($RCMAIL->gettext('undeleted'), 'UNDELETED');
+ }
+ $select_filter->add($RCMAIL->gettext('withattachment'), $attachment);
+ $select_filter->add($RCMAIL->gettext('priority').': '.$RCMAIL->gettext('highest'), 'HEADER X-PRIORITY 1');
+ $select_filter->add($RCMAIL->gettext('priority').': '.$RCMAIL->gettext('high'), 'HEADER X-PRIORITY 2');
+ $select_filter->add($RCMAIL->gettext('priority').': '.$RCMAIL->gettext('normal'), 'NOT HEADER X-PRIORITY 1 NOT HEADER X-PRIORITY 2 NOT HEADER X-PRIORITY 4 NOT HEADER X-PRIORITY 5');
+ $select_filter->add($RCMAIL->gettext('priority').': '.$RCMAIL->gettext('low'), 'HEADER X-PRIORITY 4');
+ $select_filter->add($RCMAIL->gettext('priority').': '.$RCMAIL->gettext('lowest'), 'HEADER X-PRIORITY 5');
- $out = $select_filter->show($_SESSION['search_filter']);
+ $out = $select_filter->show($_SESSION['search_filter']);
- $OUTPUT->add_gui_object('search_filter', $attrib['id']);
+ $RCMAIL->output->add_gui_object('search_filter', $attrib['id']);
- return $out;
+ return $out;
}
function rcmail_message_error($uid=null)
{
- global $RCMAIL;
+ global $RCMAIL;
- // Set env variables for messageerror.html template
- if ($RCMAIL->action == 'show') {
- $mbox_name = $RCMAIL->storage->get_folder();
- $RCMAIL->output->set_env('mailbox', $mbox_name);
- $RCMAIL->output->set_env('uid', null);
- }
- // display error message
- $RCMAIL->output->show_message('messageopenerror', 'error');
- // ... display message error page
- $RCMAIL->output->send('messageerror');
+ // Set env variables for messageerror.html template
+ if ($RCMAIL->action == 'show') {
+ $mbox_name = $RCMAIL->storage->get_folder();
+
+ $RCMAIL->output->set_env('mailbox', $mbox_name);
+ $RCMAIL->output->set_env('uid', null);
+ }
+
+ // display error message
+ $RCMAIL->output->show_message('messageopenerror', 'error');
+ // ... display message error page
+ $RCMAIL->output->send('messageerror');
}
function rcmail_message_import_form($attrib = array())
{
- global $OUTPUT;
-
- // set defaults
- $attrib += array('id' => 'rcmImportform', 'buttons' => 'yes');
-
- // Get filesize, enable upload progress bar
- $max_filesize = rcube_upload_init();
-
- $button = new html_inputfield(array('type' => 'button'));
- $fileinput = new html_inputfield(array(
- 'type' => 'file',
- 'name' => '_file[]',
- 'multiple' => 'multiple',
- 'accept' => ".eml, .mbox, message/rfc822, text/*",
- ));
-
- $out = html::div($attrib,
- $OUTPUT->form_tag(array('id' => $attrib['id'].'Frm', 'method' => 'post', 'enctype' => 'multipart/form-data'),
- html::tag('input', array('type' => 'hidden', 'name' => '_unlock', 'value' => '')) .
- html::div(null, $fileinput->show()) .
- html::div('hint', rcube_label(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize)))) .
- (get_boolean($attrib['buttons']) ? html::div('buttons',
- $button->show(rcube_label('close'), array('class' => 'button', 'onclick' => "$('#$attrib[id]').hide()")) . ' ' .
- $button->show(rcube_label('upload'), array('class' => 'button mainaction', 'onclick' => JS_OBJECT_NAME . ".command('import-messages', this.form)"))
- ) : '')
- )
- );
-
- $OUTPUT->add_gui_object('importform', $attrib['id'].'Frm');
- return $out;
+ global $RCMAIL;
+
+ // set defaults
+ $attrib += array('id' => 'rcmImportform', 'buttons' => 'yes');
+
+ // Get filesize, enable upload progress bar
+ $max_filesize = $RCMAIL->upload_init();
+
+ $button = new html_inputfield(array('type' => 'button'));
+ $fileinput = new html_inputfield(array(
+ 'type' => 'file',
+ 'name' => '_file[]',
+ 'multiple' => 'multiple',
+ 'accept' => ".eml, .mbox, message/rfc822, text/*",
+ ));
+
+ $content = html::tag('input', array('type' => 'hidden', 'name' => '_unlock', 'value' => ''))
+ . html::div(null, $fileinput->show())
+ . html::div('hint', $RCMAIL->gettext(array('name' => 'maxuploadsize', 'vars' => array('size' => $max_filesize))));
+
+ if (rcube_utils::get_boolean($attrib['buttons'])) {
+ $content .= html::div('buttons',
+ $button->show($RCMAIL->gettext('close'), array('class' => 'button', 'onclick' => "$('#$attrib[id]').hide()"))
+ . ' ' .
+ $button->show($RCMAIL->gettext('upload'), array(
+ 'class' => 'button mainaction',
+ 'onclick' => rcmail_output::JS_OBJECT_NAME . ".command('import-messages', this.form)"
+ )));
+ }
+
+ $out = $RCMAIL->output->form_tag(array(
+ 'id' => $attrib['id'].'Frm',
+ 'method' => 'post',
+ 'enctype' => 'multipart/form-data'
+ ),
+ $content);
+
+ $RCMAIL->output->add_gui_object('importform', $attrib['id'].'Frm');
+
+ return html::div($attrib, $out);
}
diff --git a/program/steps/mail/get.inc b/program/steps/mail/get.inc
index e0c4e2911..8f869c67c 100644
--- a/program/steps/mail/get.inc
+++ b/program/steps/mail/get.inc
@@ -5,7 +5,7 @@
| program/steps/mail/get.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2011, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -22,15 +22,15 @@
// show loading page
if (!empty($_GET['_preload'])) {
- $url = preg_replace('/([&?]+)_preload=/', '\\1_mimewarning=1&_embed=', $_SERVER['REQUEST_URI']);
- $message = rcube_label('loadingdata');
+ $url = preg_replace('/([&?]+)_preload=/', '\\1_mimewarning=1&_embed=', $_SERVER['REQUEST_URI']);
+ $message = $RCMAIL->gettext('loadingdata');
- header('Content-Type: text/html; charset=' . RCMAIL_CHARSET);
- print "<html>\n<head>\n"
- . '<meta http-equiv="refresh" content="0; url='.Q($url).'">' . "\n"
- . '<meta http-equiv="content-type" content="text/html; charset='.RCMAIL_CHARSET.'">' . "\n"
+ header('Content-Type: text/html; charset=' . RCUBE_CHARSET);
+ print "<html>\n<head>\n"
+ . '<meta http-equiv="refresh" content="0; url='.rcube::Q($url).'">' . "\n"
+ . '<meta http-equiv="content-type" content="text/html; charset='.RCUBE_CHARSET.'">' . "\n"
. "</head>\n<body>\n$message\n</body>\n</html>";
- exit;
+ exit;
}
ob_end_clean();
@@ -38,353 +38,361 @@ ob_end_clean();
// similar code as in program/steps/mail/show.inc
if (!empty($_GET['_uid'])) {
- $uid = get_input_value('_uid', RCUBE_INPUT_GET);
- $RCMAIL->config->set('prefer_html', true);
- $MESSAGE = new rcube_message($uid);
+ $uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_GET);
+ $RCMAIL->config->set('prefer_html', true);
+ $MESSAGE = new rcube_message($uid);
}
// check connection status
check_storage_status();
-$part_id = get_input_value('_part', RCUBE_INPUT_GPC);
+$part_id = rcube_utils::get_input_value('_part', rcube_utils::INPUT_GPC);
// show part page
if (!empty($_GET['_frame'])) {
- if ($part_id && ($part = $MESSAGE->mime_parts[$part_id])) {
- $filename = rcmail_attachment_name($part);
- $OUTPUT->set_pagetitle($filename);
- }
-
- // register UI objects
- $OUTPUT->add_handlers(array(
- 'messagepartframe' => 'rcmail_message_part_frame',
- 'messagepartcontrols' => 'rcmail_message_part_controls',
- ));
-
- $OUTPUT->set_env('mailbox', $RCMAIL->storage->get_folder());
- $OUTPUT->set_env('uid', $uid);
- $OUTPUT->set_env('part', $part_id);
- $OUTPUT->set_env('filename', $filename);
-
- $OUTPUT->send('messagepart');
- exit;
+ if ($part_id && ($part = $MESSAGE->mime_parts[$part_id])) {
+ $filename = rcmail_attachment_name($part);
+ $OUTPUT->set_pagetitle($filename);
+ }
+
+ // register UI objects
+ $OUTPUT->add_handlers(array(
+ 'messagepartframe' => 'rcmail_message_part_frame',
+ 'messagepartcontrols' => 'rcmail_message_part_controls',
+ ));
+
+ $OUTPUT->set_env('mailbox', $RCMAIL->storage->get_folder());
+ $OUTPUT->set_env('uid', $uid);
+ $OUTPUT->set_env('part', $part_id);
+ $OUTPUT->set_env('filename', $filename);
+
+ $OUTPUT->send('messagepart');
+ exit;
}
// render thumbnail of an image attachment
else if ($_GET['_thumb']) {
- $pid = get_input_value('_part', RCUBE_INPUT_GET);
- if ($part = $MESSAGE->mime_parts[$pid]) {
- $thumbnail_size = $RCMAIL->config->get('image_thumbnail_size', 240);
- $temp_dir = $RCMAIL->config->get('temp_dir');
- list(,$ext) = explode('/', $part->mimetype);
- $mimetype = $part->mimetype;
- $file_ident = $MESSAGE->headers->messageID . ':' . $part->mime_id . ':' . $part->size . ':' . $part->mimetype;
- $cache_basename = $temp_dir . '/' . md5($file_ident . ':' . $RCMAIL->user->ID . ':' . $thumbnail_size);
- $cache_file = $cache_basename . '.' . $ext;
-
- // render thumbnail image if not done yet
- if (!is_file($cache_file)) {
- $fp = fopen(($orig_name = $cache_basename . '.orig.' . $ext), 'w');
- $MESSAGE->get_part_content($part->mime_id, $fp);
- fclose($fp);
-
- $image = new rcube_image($orig_name);
- if ($imgtype = $image->resize($thumbnail_size, $cache_file, true)) {
- $mimetype = 'image/' . $imgtype;
- unlink($orig_name);
- }
- else {
- rename($orig_name, $cache_file);
- }
- }
+ $pid = rcube_utils::get_input_value('_part', rcube_utils::INPUT_GET);
+ if ($part = $MESSAGE->mime_parts[$pid]) {
+ $thumbnail_size = $RCMAIL->config->get('image_thumbnail_size', 240);
+ $temp_dir = $RCMAIL->config->get('temp_dir');
+ list(,$ext) = explode('/', $part->mimetype);
+ $mimetype = $part->mimetype;
+ $file_ident = $MESSAGE->headers->messageID . ':' . $part->mime_id . ':' . $part->size . ':' . $part->mimetype;
+ $cache_basename = $temp_dir . '/' . md5($file_ident . ':' . $RCMAIL->user->ID . ':' . $thumbnail_size);
+ $cache_file = $cache_basename . '.' . $ext;
+
+ // render thumbnail image if not done yet
+ if (!is_file($cache_file)) {
+ if ($fp = fopen(($orig_name = $cache_basename . '.orig.' . $ext), 'w')) {
+ $MESSAGE->get_part_content($part->mime_id, $fp);
+ fclose($fp);
+
+ $image = new rcube_image($orig_name);
+ if ($imgtype = $image->resize($thumbnail_size, $cache_file, true)) {
+ $mimetype = 'image/' . $imgtype;
+ unlink($orig_name);
+ }
+ else {
+ rename($orig_name, $cache_file);
+ }
+ }
+ }
- if (is_file($cache_file)) {
- header('Content-Type: ' . $mimetype);
- readfile($cache_file);
+ if (is_file($cache_file)) {
+ header('Content-Type: ' . $mimetype);
+ readfile($cache_file);
+ }
}
- }
- exit;
+ exit;
}
else if (strlen($part_id)) {
- if ($part = $MESSAGE->mime_parts[$part_id]) {
- $mimetype = rcmail_fix_mimetype($part->mimetype);
-
- // allow post-processing of the message body
- $plugin = $RCMAIL->plugins->exec_hook('message_part_get',
- array('uid' => $MESSAGE->uid, 'id' => $part->mime_id, 'mimetype' => $mimetype, 'part' => $part, 'download' => !empty($_GET['_download'])));
-
- if ($plugin['abort'])
- exit;
-
- // overwrite modified vars from plugin
- $mimetype = $plugin['mimetype'];
- $extensions = rcube_mime::get_mime_extensions($mimetype);
-
- if ($plugin['body'])
- $part->body = $plugin['body'];
-
-
- // compare file mimetype with the stated content-type headers and file extension to avoid malicious operations
- if (!empty($_REQUEST['_embed']) && empty($_REQUEST['_nocheck'])) {
- $file_extension = strtolower(pathinfo($part->filename, PATHINFO_EXTENSION));
-
- // 1. compare filename suffix with expected suffix derived from mimetype
- $valid = $file_extension && in_array($file_extension, (array)$extensions) || !empty($_REQUEST['_mimeclass']);
-
- // 2. detect the real mimetype of the attachment part and compare it with the stated mimetype and filename extension
- if ($valid || !$file_extension || $mimetype == 'application/octet-stream' || stripos($mimetype, 'text/') === 0) {
- if ($part->body) // part body is already loaded
- $body = $part->body;
- else if ($part->size && $part->size < 1024*1024) // load the entire part if it's small enough
- $body = $part->body = $MESSAGE->get_part_content($part->mime_id);
- else // fetch the first 2K of the message part
- $body = $MESSAGE->get_part_content($part->mime_id, null, true, 2048);
-
- // detect message part mimetype
- $real_mimetype = rcube_mime::file_content_type($body, $part->filename, $mimetype, true, true);
- list($real_ctype_primary, $real_ctype_secondary) = explode('/', $real_mimetype);
-
- // accept text/plain with any extension
- if ($real_mimetype == 'text/plain' && $real_mimetype == $mimetype)
- $file_extension = 'txt';
-
- // ignore differences in text/* mimetypes. Filetype detection isn't very reliable here
- if ($real_ctype_primary == 'text' && strpos($mimetype, $real_ctype_primary) === 0)
- $real_mimetype = $mimetype;
-
- // get valid file extensions
- $extensions = rcube_mime::get_mime_extensions($real_mimetype);
- $valid_extension = (!$file_extension || in_array($file_extension, (array)$extensions));
-
- // ignore filename extension if mimeclass matches (#1489029)
- if (!empty($_REQUEST['_mimeclass']) && $real_ctype_primary == $_REQUEST['_mimeclass'])
- $valid_extension = true;
-
- // fix mimetype for images wrongly declared as octet-stream
- if ($mimetype == 'application/octet-stream' && strpos($real_mimetype, 'image/') === 0 && $valid_extension)
- $mimetype = $real_mimetype;
-
- $valid = ($real_mimetype == $mimetype && $valid_extension);
- }
- else {
- $real_mimetype = $mimetype;
- }
-
- // show warning if validity checks failed
- if (!$valid) {
- // send blocked.gif for expected images
- if (empty($_REQUEST['_mimewarning']) && strpos($mimetype, 'image/') === 0) {
- // Do not cache. Failure might be the result of a misconfiguration, thus real content should be returned once fixed.
- $OUTPUT->nocacheing_headers();
- header("Content-Type: image/gif");
- header("Content-Transfer-Encoding: binary");
- readfile(INSTALL_PATH . 'program/resources/blocked.gif');
- }
- else { // html warning with a button to load the file anyway
- $OUTPUT = new rcmail_html_page();
- $OUTPUT->write(html::tag('html', null, html::tag('body', 'embed',
- html::div(array('class' => 'rcmail-inline-message rcmail-inline-warning'),
- rcube_label(array(
- 'name' => 'attachmentvalidationerror',
- 'vars' => array(
- 'expected' => $mimetype . ($file_extension ? " (.$file_extension)" : ''),
- 'detected' => $real_mimetype . ($extensions[0] ? " (.$extensions[0])" : ''),
- )
- )) .
- html::p(array('class' => 'rcmail-inline-buttons'),
- html::tag('button',
- array('onclick' => "location.href='" . $RCMAIL->url(array_merge($_GET, array('_nocheck' => 1))) . "'"),
- rcube_label('showanyway')))
- )
- )));
+ if ($part = $MESSAGE->mime_parts[$part_id]) {
+ $mimetype = rcmail_fix_mimetype($part->mimetype);
+
+ // allow post-processing of the message body
+ $plugin = $RCMAIL->plugins->exec_hook('message_part_get', array(
+ 'uid' => $MESSAGE->uid,
+ 'id' => $part->mime_id,
+ 'mimetype' => $mimetype,
+ 'part' => $part,
+ 'download' => !empty($_GET['_download'])
+ ));
+
+ if ($plugin['abort']) {
+ exit;
}
- exit;
- }
- }
+ // overwrite modified vars from plugin
+ $mimetype = $plugin['mimetype'];
+ $extensions = rcube_mime::get_mime_extensions($mimetype);
- // TIFF to JPEG conversion, if needed
- $tiff_support = !empty($_SESSION['browser_caps']) && !empty($_SESSION['browser_caps']['tif']);
- if (!empty($_REQUEST['_embed']) && !$tiff_support
- && $RCMAIL->config->get('im_convert_path')
- && rcmail_part_image_type($part) == 'image/tiff'
- ) {
- $tiff2jpeg = true;
- $mimetype = 'image/jpeg';
- }
-
+ if ($plugin['body']) {
+ $part->body = $plugin['body'];
+ }
- $browser = $RCMAIL->output->browser;
- list($ctype_primary, $ctype_secondary) = explode('/', $mimetype);
+ // compare file mimetype with the stated content-type headers and file extension to avoid malicious operations
+ if (!empty($_REQUEST['_embed']) && empty($_REQUEST['_nocheck'])) {
+ $file_extension = strtolower(pathinfo($part->filename, PATHINFO_EXTENSION));
+
+ // 1. compare filename suffix with expected suffix derived from mimetype
+ $valid = $file_extension && in_array($file_extension, (array)$extensions) || !empty($_REQUEST['_mimeclass']);
+
+ // 2. detect the real mimetype of the attachment part and compare it with the stated mimetype and filename extension
+ if ($valid || !$file_extension || $mimetype == 'application/octet-stream' || stripos($mimetype, 'text/') === 0) {
+ if ($part->body) // part body is already loaded
+ $body = $part->body;
+ else if ($part->size && $part->size < 1024*1024) // load the entire part if it's small enough
+ $body = $part->body = $MESSAGE->get_part_content($part->mime_id);
+ else // fetch the first 2K of the message part
+ $body = $MESSAGE->get_part_content($part->mime_id, null, true, 2048);
+
+ // detect message part mimetype
+ $real_mimetype = rcube_mime::file_content_type($body, $part->filename, $mimetype, true, true);
+ list($real_ctype_primary, $real_ctype_secondary) = explode('/', $real_mimetype);
+
+ // accept text/plain with any extension
+ if ($real_mimetype == 'text/plain' && $real_mimetype == $mimetype) {
+ $file_extension = 'txt';
+ }
+
+ // ignore differences in text/* mimetypes. Filetype detection isn't very reliable here
+ if ($real_ctype_primary == 'text' && strpos($mimetype, $real_ctype_primary) === 0) {
+ $real_mimetype = $mimetype;
+ }
+
+ // get valid file extensions
+ $extensions = rcube_mime::get_mime_extensions($real_mimetype);
+ $valid_extension = (!$file_extension || in_array($file_extension, (array)$extensions));
+
+ // ignore filename extension if mimeclass matches (#1489029)
+ if (!empty($_REQUEST['_mimeclass']) && $real_ctype_primary == $_REQUEST['_mimeclass']) {
+ $valid_extension = true;
+ }
+
+ // fix mimetype for images wrongly declared as octet-stream
+ if ($mimetype == 'application/octet-stream' && strpos($real_mimetype, 'image/') === 0 && $valid_extension) {
+ $mimetype = $real_mimetype;
+ }
+
+ $valid = ($real_mimetype == $mimetype && $valid_extension);
+ }
+ else {
+ $real_mimetype = $mimetype;
+ }
+
+ // show warning if validity checks failed
+ if (!$valid) {
+ // send blocked.gif for expected images
+ if (empty($_REQUEST['_mimewarning']) && strpos($mimetype, 'image/') === 0) {
+ // Do not cache. Failure might be the result of a misconfiguration, thus real content should be returned once fixed.
+ $OUTPUT->nocacheing_headers();
+ header("Content-Type: image/gif");
+ header("Content-Transfer-Encoding: binary");
+ readfile(INSTALL_PATH . 'program/resources/blocked.gif');
+ }
+ else { // html warning with a button to load the file anyway
+ $OUTPUT = new rcmail_html_page();
+ $OUTPUT->write(html::tag('html', null, html::tag('body', 'embed',
+ html::div(array('class' => 'rcmail-inline-message rcmail-inline-warning'),
+ $RCMAIL->gettext(array(
+ 'name' => 'attachmentvalidationerror',
+ 'vars' => array(
+ 'expected' => $mimetype . ($file_extension ? " (.$file_extension)" : ''),
+ 'detected' => $real_mimetype . ($extensions[0] ? " (.$extensions[0])" : ''),
+ )
+ ))
+ . html::p(array('class' => 'rcmail-inline-buttons'),
+ html::tag('button', array(
+ 'onclick' => "location.href='" . $RCMAIL->url(array_merge($_GET, array('_nocheck' => 1))) . "'"
+ ),
+ $RCMAIL->gettext('showanyway'))
+ )
+ ))));
+ }
+
+ exit;
+ }
+ }
- // send download headers
- if ($plugin['download']) {
- header("Content-Type: application/octet-stream");
- if ($browser->ie)
- header("Content-Type: application/force-download");
- }
- else if ($ctype_primary == 'text') {
- header("Content-Type: text/$ctype_secondary; charset=" . ($part->charset ? $part->charset : RCMAIL_CHARSET));
- }
- else {
- header("Content-Type: $mimetype");
- header("Content-Transfer-Encoding: binary");
- }
- // deliver part content
- if ($ctype_primary == 'text' && $ctype_secondary == 'html' && empty($plugin['download'])) {
- // Check if we have enough memory to handle the message in it
- // #1487424: we need up to 10x more memory than the body
- if (!rcmail_mem_check($part->size * 10)) {
- $out = '<body>' . rcube_label('messagetoobig'). ' '
- . html::a('?_task=mail&_action=get&_download=1&_uid='.$MESSAGE->uid.'&_part='.$part->mime_id
- .'&_mbox='. urlencode($RCMAIL->storage->get_folder()), rcube_label('download')) . '</body></html>';
- }
- else {
- // get part body if not available
- if (!$part->body)
- $part->body = $MESSAGE->get_part_content($part->mime_id);
-
- // show images?
- rcmail_check_safe($MESSAGE);
-
- // render HTML body
- $out = rcmail_print_body($part, array('safe' => $MESSAGE->is_safe, 'inline_html' => false));
-
- // insert remote objects warning into HTML body
- if ($REMOTE_OBJECTS) {
- $body_start = 0;
- if ($body_pos = strpos($out, '<body')) {
- $body_start = strpos($out, '>', $body_pos) + 1;
- }
- $out = substr($out, 0, $body_start) .
- html::div(array('class' => 'rcmail-inline-message rcmail-inline-warning'),
- Q(rcube_label('blockedimages')) . '&nbsp;' .
- html::tag('button',
- array('onclick' => "location.href='" . $RCMAIL->url(array_merge($_GET, array('_safe' => 1))) . "'"),
- Q(rcube_label('showimages')))
- ) .
- substr($out, $body_start);
+ // TIFF to JPEG conversion, if needed
+ $tiff_support = !empty($_SESSION['browser_caps']) && !empty($_SESSION['browser_caps']['tif']);
+ if (!empty($_REQUEST['_embed']) && !$tiff_support
+ && $RCMAIL->config->get('im_convert_path')
+ && rcmail_part_image_type($part) == 'image/tiff'
+ ) {
+ $tiff2jpeg = true;
+ $mimetype = 'image/jpeg';
}
- }
- // check connection status
- if ($part->size && empty($part->body)) {
- check_storage_status();
- }
- $OUTPUT = new rcube_html_page();
- $OUTPUT->write($out);
- }
- else {
- // don't kill the connection if download takes more than 30 sec.
- @set_time_limit(0);
-
- $filename = rcmail_attachment_name($part);
-
- if ($browser->ie && $browser->ver < 7)
- $filename = rawurlencode(abbreviate_string($filename, 55));
- else if ($browser->ie)
- $filename = rawurlencode($filename);
- else
- $filename = addcslashes($filename, '"');
-
- $disposition = !empty($plugin['download']) ? 'attachment' : 'inline';
-
- // Workaround for nasty IE bug (#1488844)
- // If Content-Disposition header contains string "attachment" e.g. in filename
- // IE handles data as attachment not inline
- if ($disposition == 'inline' && $browser->ie && $browser->ver < 9) {
- $filename = str_ireplace('attachment', 'attach', $filename);
- }
-
- // add filename extension if missing
- if (!pathinfo($filename, PATHINFO_EXTENSION) && ($extensions = rcube_mime::get_mime_extensions($mimetype))) {
- $filename .= '.' . $extensions[0];
- }
-
- header("Content-Disposition: $disposition; filename=\"$filename\"");
-
- // handle tiff to jpeg conversion
- if (!empty($tiff2jpeg)) {
- $temp_dir = unslashify($RCMAIL->config->get('temp_dir'));
- $file_path = tempnam($temp_dir, 'rcmAttmnt');
-
- // write content to temp file
- if ($part->body) {
- $saved = file_put_contents($file_path, $part->body);
- }
- else if ($part->size) {
- $fd = fopen($file_path, 'w');
- $saved = $RCMAIL->storage->get_message_part($MESSAGE->uid, $part->mime_id, $part, false, $fd);
- fclose($fd);
- }
+ $browser = $RCMAIL->output->browser;
+ list($ctype_primary, $ctype_secondary) = explode('/', $mimetype);
- // convert image to jpeg and send it to the browser
- if ($saved) {
- $image = new rcube_image($file_path);
- if ($image->convert(rcube_image::TYPE_JPG, $file_path)) {
- header("Content-Length: " . filesize($file_path));
- readfile($file_path);
- }
- unlink($file_path);
- }
- }
- // do content filtering to avoid XSS through fake images
- else if (!empty($_REQUEST['_embed']) && $browser->ie && $browser->ver <= 8) {
- if ($part->body) {
- echo preg_match('/<(script|iframe|object)/i', $part->body) ? '' : $part->body;
- $sent = true;
- }
- else if ($part->size) {
- $stdout = fopen('php://output', 'w');
- stream_filter_register('rcube_content', 'rcube_content_filter') or die('Failed to register content filter');
- stream_filter_append($stdout, 'rcube_content');
- $sent = $RCMAIL->storage->get_message_part($MESSAGE->uid, $part->mime_id, $part, false, $stdout);
+ if (!$plugin['download'] && $ctype_primary == 'text') {
+ header("Content-Type: text/$ctype_secondary; charset=" . ($part->charset ? $part->charset : RCUBE_CHARSET));
}
- }
- // send part as-it-is
- else {
- if ($part->body) {
- header("Content-Length: " . strlen($part->body));
- echo $part->body;
- $sent = true;
+ else {
+ header("Content-Type: $mimetype");
+ header("Content-Transfer-Encoding: binary");
}
- else if ($part->size) {
- if ($size = (int)$part->d_parameters['size']) {
- header("Content-Length: $size");
- }
- // 8th argument disables re-formatting of text/* parts (#1489267)
- $sent = $RCMAIL->storage->get_message_part($MESSAGE->uid, $part->mime_id, $part, true, null, false, 0, false);
+ // deliver part content
+ if ($ctype_primary == 'text' && $ctype_secondary == 'html' && empty($plugin['download'])) {
+ // Check if we have enough memory to handle the message in it
+ // #1487424: we need up to 10x more memory than the body
+ if (!rcube_utils::mem_check($part->size * 10)) {
+ $out = '<body>' . $RCMAIL->gettext('messagetoobig'). ' '
+ . html::a('?_task=mail&_action=get&_download=1&_uid='.$MESSAGE->uid.'&_part='.$part->mime_id
+ .'&_mbox='. urlencode($RCMAIL->storage->get_folder()), $RCMAIL->gettext('download')) . '</body></html>';
+ }
+ else {
+ // get part body if not available
+ if (!$part->body) {
+ $part->body = $MESSAGE->get_part_content($part->mime_id);
+ }
+
+ // show images?
+ rcmail_check_safe($MESSAGE);
+
+ // render HTML body
+ $out = rcmail_print_body($part, array('safe' => $MESSAGE->is_safe, 'inline_html' => false));
+
+ // insert remote objects warning into HTML body
+ if ($REMOTE_OBJECTS) {
+ $body_start = 0;
+ if ($body_pos = strpos($out, '<body')) {
+ $body_start = strpos($out, '>', $body_pos) + 1;
+ }
+
+ $out = substr($out, 0, $body_start)
+ . html::div(array('class' => 'rcmail-inline-message rcmail-inline-warning'),
+ rcube::Q($RCMAIL->gettext('blockedimages')) . '&nbsp;' .
+ html::tag('button',
+ array('onclick' => "location.href='" . $RCMAIL->url(array_merge($_GET, array('_safe' => 1))) . "'"),
+ rcube::Q($RCMAIL->gettext('showimages')))
+ )
+ . substr($out, $body_start);
+ }
+ }
+
+ // check connection status
+ if ($part->size && empty($part->body)) {
+ check_storage_status();
+ }
+
+ $OUTPUT = new rcmail_html_page();
+ $OUTPUT->write($out);
+ }
+ else {
+ // don't kill the connection if download takes more than 30 sec.
+ @set_time_limit(0);
+
+ $filename = rcmail_attachment_name($part);
+
+ if ($browser->ie && $browser->ver < 7)
+ $filename = rawurlencode(abbreviate_string($filename, 55));
+ else if ($browser->ie)
+ $filename = rawurlencode($filename);
+ else
+ $filename = addcslashes($filename, '"');
+
+ $disposition = !empty($plugin['download']) ? 'attachment' : 'inline';
+
+ // Workaround for nasty IE bug (#1488844)
+ // If Content-Disposition header contains string "attachment" e.g. in filename
+ // IE handles data as attachment not inline
+ if ($disposition == 'inline' && $browser->ie && $browser->ver < 9) {
+ $filename = str_ireplace('attachment', 'attach', $filename);
+ }
+
+ // add filename extension if missing
+ if (!pathinfo($filename, PATHINFO_EXTENSION) && ($extensions = rcube_mime::get_mime_extensions($mimetype))) {
+ $filename .= '.' . $extensions[0];
+ }
+
+ header("Content-Disposition: $disposition; filename=\"$filename\"");
+
+ // handle tiff to jpeg conversion
+ if (!empty($tiff2jpeg)) {
+ $temp_dir = unslashify($RCMAIL->config->get('temp_dir'));
+ $file_path = tempnam($temp_dir, 'rcmAttmnt');
+
+ // write content to temp file
+ if ($part->body) {
+ $saved = file_put_contents($file_path, $part->body);
+ }
+ else if ($part->size) {
+ $fd = fopen($file_path, 'w');
+ $saved = $RCMAIL->storage->get_message_part($MESSAGE->uid, $part->mime_id, $part, false, $fd);
+ fclose($fd);
+ }
+
+ // convert image to jpeg and send it to the browser
+ if ($saved) {
+ $image = new rcube_image($file_path);
+ if ($image->convert(rcube_image::TYPE_JPG, $file_path)) {
+ header("Content-Length: " . filesize($file_path));
+ readfile($file_path);
+ }
+ unlink($file_path);
+ }
+ }
+ // do content filtering to avoid XSS through fake images
+ else if (!empty($_REQUEST['_embed']) && $browser->ie && $browser->ver <= 8) {
+ if ($part->body) {
+ echo preg_match('/<(script|iframe|object)/i', $part->body) ? '' : $part->body;
+ $sent = true;
+ }
+ else if ($part->size) {
+ $stdout = fopen('php://output', 'w');
+ stream_filter_register('rcube_content', 'rcube_content_filter') or die('Failed to register content filter');
+ stream_filter_append($stdout, 'rcube_content');
+ $sent = $RCMAIL->storage->get_message_part($MESSAGE->uid, $part->mime_id, $part, false, $stdout);
+ }
+ }
+ // send part as-it-is
+ else {
+ if ($part->body) {
+ header("Content-Length: " . strlen($part->body));
+ echo $part->body;
+ $sent = true;
+ }
+ else if ($part->size) {
+ if ($size = (int)$part->d_parameters['size']) {
+ header("Content-Length: $size");
+ }
+
+ // 8th argument disables re-formatting of text/* parts (#1489267)
+ $sent = $RCMAIL->storage->get_message_part($MESSAGE->uid, $part->mime_id, $part, true, null, false, 0, false);
+ }
+ }
+
+ // check connection status
+ if ($part->size && !$sent) {
+ check_storage_status();
+ }
}
- }
- // check connection status
- if ($part->size && !$sent) {
- check_storage_status();
- }
+ exit;
}
-
- exit;
- }
}
-
// print message
else {
- // send correct headers for content type
- header("Content-Type: text/html");
+ // send correct headers for content type
+ header("Content-Type: text/html");
- $cont = "<html>\n<head><title></title>\n</head>\n<body>";
- $cont .= rcmail_message_body(array());
- $cont .= "\n</body>\n</html>";
+ $cont = "<html>\n<head><title></title>\n</head>\n<body>";
+ $cont .= rcmail_message_body(array());
+ $cont .= "\n</body>\n</html>";
- $OUTPUT = new rcube_html_page();
- $OUTPUT->write($cont);
+ $OUTPUT = new rcmail_html_page();
+ $OUTPUT->write($cont);
- exit;
+ exit;
}
@@ -415,7 +423,7 @@ function check_storage_status()
header('Location: ' . $_SERVER['REQUEST_URI'] . '&_redirected=1');
}
else {
- raise_error(array(
+ rcube::raise_error(array(
'code' => 500, 'type' => 'php',
'file' => __FILE__, 'line' => __LINE__,
'message' => 'Unable to get/display message part. IMAP connection error'),
@@ -434,7 +442,7 @@ function rcmail_message_part_controls($attrib)
{
global $MESSAGE, $RCMAIL;
- $part = asciiwords(get_input_value('_part', RCUBE_INPUT_GPC));
+ $part = asciiwords(rcube_utils::get_input_value('_part', rcube_utils::INPUT_GPC));
if (!is_object($MESSAGE) || !is_array($MESSAGE->parts)
|| !($_GET['_uid'] && $_GET['_part']) || !$MESSAGE->mime_parts[$part]
) {
@@ -444,14 +452,14 @@ function rcmail_message_part_controls($attrib)
$part = $MESSAGE->mime_parts[$part];
$table = new html_table(array('cols' => 2));
- $table->add('title', Q(rcube_label('namex')).':');
- $table->add('header', Q(rcmail_attachment_name($part)));
+ $table->add('title', rcube::Q($RCMAIL->gettext('namex')).':');
+ $table->add('header', rcube::Q(rcmail_attachment_name($part)));
- $table->add('title', Q(rcube_label('type')).':');
- $table->add('header', Q($part->mimetype));
+ $table->add('title', rcube::Q($RCMAIL->gettext('type')).':');
+ $table->add('header', rcube::Q($part->mimetype));
- $table->add('title', Q(rcube_label('size')).':');
- $table->add('header', Q($RCMAIL->message_part_size($part)));
+ $table->add('title', rcube::Q($RCMAIL->gettext('size')).':');
+ $table->add('header', rcube::Q($RCMAIL->message_part_size($part)));
return $table->show($attrib);
}
@@ -463,7 +471,7 @@ function rcmail_message_part_frame($attrib)
{
global $MESSAGE, $RCMAIL;
- $part = $MESSAGE->mime_parts[asciiwords(get_input_value('_part', RCUBE_INPUT_GPC))];
+ $part = $MESSAGE->mime_parts[asciiwords(rcube_utils::get_input_value('_part', rcube_utils::INPUT_GPC))];
$ctype_primary = strtolower($part->ctype_primary);
$attrib['src'] = './?' . str_replace('_frame=', ($ctype_primary=='text' ? '_embed=' : '_preload='), $_SERVER['QUERY_STRING']);
diff --git a/program/steps/mail/getunread.inc b/program/steps/mail/getunread.inc
index fb7e802fb..f708c8aef 100644
--- a/program/steps/mail/getunread.inc
+++ b/program/steps/mail/getunread.inc
@@ -5,7 +5,7 @@
| program/steps/mail/getunread.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2009, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -21,28 +21,36 @@
$a_folders = $RCMAIL->storage->list_folders_subscribed('', '*', 'mail');
-if (!empty($a_folders))
-{
- $current = $RCMAIL->storage->get_folder();
- $inbox = ($current == 'INBOX');
- $check_all = (bool)$RCMAIL->config->get('check_all_folders');
-
- foreach ($a_folders as $mbox_row) {
- $unseen_old = rcmail_get_unseen_count($mbox_row);
-
- if (!$check_all && $unseen_old !== null && $mbox_row != $current)
- $unseen = $unseen_old;
- else
- $unseen = $RCMAIL->storage->count($mbox_row, 'UNSEEN', $unseen_old === null);
-
- if ($unseen || $unseen_old === null) {
- $OUTPUT->command('set_unread_count', $mbox_row, $unseen, $inbox && $mbox_row == 'INBOX');
+if (!empty($a_folders)) {
+ $current = $RCMAIL->storage->get_folder();
+ $inbox = ($current == 'INBOX');
+ $trash = $RCMAIL->config->get('trash_mbox');
+ $check_all = (bool)$RCMAIL->config->get('check_all_folders');
+
+ foreach ($a_folders as $mbox) {
+ $unseen_old = rcmail_get_unseen_count($mbox);
+
+ if (!$check_all && $unseen_old !== null && $mbox != $current) {
+ $unseen = $unseen_old;
+ }
+ else {
+ $unseen = $RCMAIL->storage->count($mbox, 'UNSEEN', $unseen_old === null);
+ }
+
+ // call it always for current folder, so it can update counter
+ // after possible message status change when opening a message
+ // not in preview frame
+ if ($unseen || $unseen_old === null || $mbox == $current) {
+ $OUTPUT->command('set_unread_count', $mbox, $unseen, $inbox && $mbox_row == 'INBOX');
+ }
+
+ rcmail_set_unseen_count($mbox, $unseen);
+
+ // set trash folder state
+ if ($mbox === $trash) {
+ $OUTPUT->command('set_trash_count', $RCMAIL->storage->count($mbox, 'EXISTS'));
+ }
}
-
- rcmail_set_unseen_count($mbox_row, $unseen);
- }
}
$OUTPUT->send();
-
-
diff --git a/program/steps/mail/headers.inc b/program/steps/mail/headers.inc
index cad113f68..9d3e6d348 100644
--- a/program/steps/mail/headers.inc
+++ b/program/steps/mail/headers.inc
@@ -19,8 +19,7 @@
+-----------------------------------------------------------------------+
*/
-if ($uid = get_input_value('_uid', RCUBE_INPUT_POST))
-{
+if ($uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST)) {
$source = $RCMAIL->storage->get_raw_headers($uid);
if ($source !== false) {
@@ -48,5 +47,3 @@ if ($uid = get_input_value('_uid', RCUBE_INPUT_POST))
}
exit;
-
-
diff --git a/program/steps/mail/import.inc b/program/steps/mail/import.inc
index f7e7a3eb8..4f822e0e4 100644
--- a/program/steps/mail/import.inc
+++ b/program/steps/mail/import.inc
@@ -31,7 +31,8 @@ if (is_array($_FILES['_file'])) {
if (!$err) {
// check file content type first
- list($mtype_primary,) = explode('/', rc_mime_content_type($filepath, $_FILES['_file']['name'][$i], $_FILES['_file']['type'][$i]));
+ list($mtype_primary,) = explode('/', rcube_mime::file_content_type($filepath, $_FILES['_file']['name'][$i], $_FILES['_file']['type'][$i]));
+
if (!in_array($mtype_primary, array('text','message'))) {
$OUTPUT->show_message('importmessageerror', 'error');
continue;
@@ -39,7 +40,9 @@ if (is_array($_FILES['_file'])) {
// read the first few lines to detect header-like structure
$fp = fopen($filepath, 'r');
- do { $line = fgets($fp); }
+ do {
+ $line = fgets($fp);
+ }
while ($line !== false && trim($line) == '');
if (!preg_match('/^From\s+-/', $line) && !preg_match('/^[a-z-_]+:\s+.+/i', $line)) {
@@ -74,7 +77,8 @@ if (is_array($_FILES['_file'])) {
}
if ($err == UPLOAD_ERR_INI_SIZE || $err == UPLOAD_ERR_FORM_SIZE) {
- $msg = rcube_label(array('name' => 'filesizeerror', 'vars' => array('size' => show_bytes(parse_bytes(ini_get('upload_max_filesize'))))));
+ $size = $RCMAIL->show_bytes(parse_bytes(ini_get('upload_max_filesize')));
+ $msg = $RCMAIL->gettext(array('name' => 'filesizeerror', 'vars' => array('size' => $size)));
}
else if ($err) {
$OUTPUT->show_message('fileuploaderror', 'error');
@@ -82,7 +86,7 @@ if (is_array($_FILES['_file'])) {
} // end foreach
if ($imported) {
- $OUTPUT->show_message(rcube_label(array('name' => 'importmessagesuccess', 'nr' => $imported, 'vars' => array('nr' => $imported))), 'confirmation');
+ $OUTPUT->show_message($RCMAIL->gettext(array('name' => 'importmessagesuccess', 'nr' => $imported, 'vars' => array('nr' => $imported))), 'confirmation');
$OUTPUT->command('command', 'list');
}
else {
@@ -93,13 +97,12 @@ else if ($_SERVER['REQUEST_METHOD'] == 'POST') {
// if filesize exceeds post_max_size then $_FILES array is empty,
// show filesizeerror instead of fileuploaderror
if ($maxsize = ini_get('post_max_size'))
- $msg = rcube_label(array('name' => 'filesizeerror', 'vars' => array('size' => show_bytes(parse_bytes($maxsize)))));
+ $msg = $RCMAIL->gettext(array('name' => 'filesizeerror', 'vars' => array('size' => $RCMAIL->show_bytes(parse_bytes($maxsize)))));
else
- $msg = rcube_label('fileuploaderror');
+ $msg = $RCMAIL->gettext('fileuploaderror');
$OUTPUT->command('display_message', $msg, 'error');
}
// send html page with JS calls as response
$OUTPUT->send('iframe');
-
diff --git a/program/steps/mail/list.inc b/program/steps/mail/list.inc
index a2380131a..277564c38 100644
--- a/program/steps/mail/list.inc
+++ b/program/steps/mail/list.inc
@@ -23,11 +23,11 @@ if (!$OUTPUT->ajax_call) {
return;
}
-$save_arr = array();
-$dont_override = (array) $RCMAIL->config->get('dont_override');
+$save_arr = array();
+$dont_override = (array) $RCMAIL->config->get('dont_override');
// is there a sort type for this request?
-if ($sort = get_input_value('_sort', RCUBE_INPUT_GET)) {
+if ($sort = rcube_utils::get_input_value('_sort', rcube_utils::INPUT_GET)) {
// yes, so set the sort vars
list($sort_col, $sort_order) = explode('_', $sort);
@@ -41,7 +41,7 @@ if ($sort = get_input_value('_sort', RCUBE_INPUT_GET)) {
}
// is there a set of columns for this request?
-if ($cols = get_input_value('_cols', RCUBE_INPUT_GET)) {
+if ($cols = rcube_utils::get_input_value('_cols', rcube_utils::INPUT_GET)) {
if (!in_array('list_cols', $dont_override)) {
$save_arr['list_cols'] = explode(',', $cols);
}
@@ -60,7 +60,7 @@ $RCMAIL->storage->folder_sync($mbox_name);
// initialize searching result if search_filter is used
if ($_SESSION['search_filter'] && $_SESSION['search_filter'] != 'ALL') {
$search_request = md5($mbox_name.$_SESSION['search_filter']);
- $RCMAIL->storage->search($mbox_name, $_SESSION['search_filter'], RCMAIL_CHARSET, rcmail_sort_column());
+ $RCMAIL->storage->search($mbox_name, $_SESSION['search_filter'], RCUBE_CHARSET, rcmail_sort_column());
$_SESSION['search'] = $RCMAIL->storage->get_search_set();
$_SESSION['search_request'] = $search_request;
$OUTPUT->set_env('search_request', $search_request);
@@ -90,12 +90,14 @@ if (empty($search_request) && empty($a_headers)) {
rcmail_send_unread_count($mbox_name, !empty($_REQUEST['_refresh']), $unseen);
// update message count display
-$pages = ceil($count/$RCMAIL->storage->get_pagesize());
+$pages = ceil($count/$RCMAIL->storage->get_pagesize());
+$exists = $RCMAIL->storage->count($mbox_name, 'EXISTS');
+
$OUTPUT->set_env('messagecount', $count);
$OUTPUT->set_env('pagecount', $pages);
$OUTPUT->set_env('threading', $threading);
$OUTPUT->set_env('current_page', $count ? $RCMAIL->storage->get_page() : 1);
-$OUTPUT->set_env('exists', $RCMAIL->storage->count($mbox_name, 'EXISTS'));
+$OUTPUT->set_env('exists', $exists);
$OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($count), $mbox_name);
// add message rows
@@ -104,11 +106,18 @@ if (isset($a_headers) && count($a_headers)) {
if ($search_request) {
$OUTPUT->show_message('searchsuccessful', 'confirmation', array('nr' => $count));
}
+
+ // remember last HIGHESTMODSEQ value (if supported)
+ // we need it for flag updates in check-recent
+ $data = $RCMAIL->storage->folder_data($mbox_name);
+ if (!empty($data['HIGHESTMODSEQ'])) {
+ $_SESSION['list_mod_seq'] = $data['HIGHESTMODSEQ'];
+ }
}
else {
// handle IMAP errors (e.g. #1486905)
if ($err_code = $RCMAIL->storage->get_error_code()) {
- rcmail_display_server_error();
+ $RCMAIL->display_server_error();
}
else if ($search_request)
$OUTPUT->show_message('searchnomatch', 'notice');
@@ -116,5 +125,10 @@ else {
$OUTPUT->show_message('nomessagesfound', 'notice');
}
+// set trash folder state
+if ($mbox_name === $RCMAIL->config->get('trash_mbox')) {
+ $OUTPUT->command('set_trash_count', $exists);
+}
+
// send response
$OUTPUT->send();
diff --git a/program/steps/mail/list_contacts.inc b/program/steps/mail/list_contacts.inc
index dab146431..46f81353a 100644
--- a/program/steps/mail/list_contacts.inc
+++ b/program/steps/mail/list_contacts.inc
@@ -65,7 +65,7 @@ if (!empty($_REQUEST['_search']) && isset($_SESSION['search'][$_REQUEST['_search
}
// list contacts from selected source
else {
- $source = get_input_value('_source', RCUBE_INPUT_GPC);
+ $source = rcube_utils::get_input_value('_source', rcube_utils::INPUT_GPC);
$CONTACTS = $RCMAIL->get_address_book($source);
if ($CONTACTS && $CONTACTS->ready) {
@@ -73,7 +73,7 @@ else {
$CONTACTS->set_pagesize($page_size);
$CONTACTS->set_page($list_page);
- if ($group_id = get_input_value('_gid', RCUBE_INPUT_GPC)) {
+ if ($group_id = rcube_utils::get_input_value('_gid', rcube_utils::INPUT_GPC)) {
$CONTACTS->set_group($group_id);
}
// list groups of this source (on page one)
@@ -89,7 +89,7 @@ else {
$row_id = 'G'.$group['ID'];
$jsresult[$row_id] = format_email_recipient($email, $group['name']);
$OUTPUT->command('add_contact_row', $row_id, array(
- 'contactgroup' => html::span(array('title' => $email), Q($group['name']))), 'group');
+ 'contactgroup' => html::span(array('title' => $email), rcube::Q($group['name']))), 'group');
}
}
// make virtual groups clickable to list their members
@@ -99,9 +99,9 @@ else {
'contactgroup' => html::a(array(
'href' => '#list',
'rel' => $row['ID'],
- 'title' => rcube_label('listgroup'),
- 'onclick' => sprintf("return %s.command('pushgroup',{'source':'%s','id':'%s'},this,event)", JS_OBJECT_NAME, $source, $group['ID']),
- ), Q($group['name']) . '&nbsp;' . html::span('action', '&raquo;'))),
+ 'title' => $RCMAIL->gettext('listgroup'),
+ 'onclick' => sprintf("return %s.command('pushgroup',{'source':'%s','id':'%s'},this,event)", rcmail_output::JS_OBJECT_NAME, $source, $group['ID']),
+ ), rcube::Q($group['name']) . '&nbsp;' . html::span('action', '&raquo;'))),
'group',
array('ID' => $group['ID'], 'name' => $group['name'], 'virtual' => true));
}
@@ -110,7 +110,7 @@ else {
$row_id = 'E'.$group['ID'];
$jsresult[$row_id] = $group['name'];
$OUTPUT->command('add_contact_row', $row_id, array(
- 'contactgroup' => Q($group['name'] . ' (' . intval($result->count) . ')')), 'group');
+ 'contactgroup' => rcube::Q($group['name'] . ' (' . intval($result->count) . ')')), 'group');
}
}
@@ -134,14 +134,14 @@ else if (!empty($result) && $result->count > 0) {
// add record for every email address of the contact
$emails = $CONTACTS->get_col_values('email', $row, true);
foreach ($emails as $i => $email) {
- $row_id = $row['ID'].$i;
+ $row_id = $row['ID'].'-'.$i;
$jsresult[$row_id] = format_email_recipient($email, $name);
$classname = $row['_type'] == 'group' ? 'group' : 'person';
$keyname = $row['_type'] == 'group' ? 'contactgroup' : 'contact';
$OUTPUT->command('add_contact_row', $row_id, array(
- $keyname => html::span(array('title' => $email), Q($name ? $name : $email) .
- ($name && count($emails) > 1 ? '&nbsp;' . html::span('email', Q($email)) : '')
+ $keyname => html::span(array('title' => $email), rcube::Q($name ? $name : $email) .
+ ($name && count($emails) > 1 ? '&nbsp;' . html::span('email', rcube::Q($email)) : '')
)), $classname);
}
}
diff --git a/program/steps/mail/mark.inc b/program/steps/mail/mark.inc
index fad11d0fc..50243c636 100644
--- a/program/steps/mail/mark.inc
+++ b/program/steps/mail/mark.inc
@@ -4,7 +4,7 @@
| program/steps/mail/mark.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2009, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -19,114 +19,125 @@
*/
// only process ajax requests
-if (!$OUTPUT->ajax_call)
- return;
-
-$a_flags_map = array(
- 'undelete' => 'UNDELETED',
- 'delete' => 'DELETED',
- 'read' => 'SEEN',
- 'unread' => 'UNSEEN',
- 'flagged' => 'FLAGGED',
- 'unflagged' => 'UNFLAGGED');
-
-$threading = (bool) $RCMAIL->storage->get_threading();
-
-if (($_uids = get_input_value('_uid', RCUBE_INPUT_POST)) && ($flag = get_input_value('_flag', RCUBE_INPUT_POST)))
-{
- $flag = $a_flags_map[$flag] ? $a_flags_map[$flag] : strtoupper($flag);
-
- if ($flag == 'DELETED' && $CONFIG['skip_deleted'] && $_POST['_from'] != 'show') {
- // count messages before changing anything
- $old_count = $RCMAIL->storage->count(NULL, $threading ? 'THREADS' : 'ALL');
- $old_pages = ceil($old_count / $RCMAIL->storage->get_pagesize());
- }
-
- foreach (rcmail_get_uids() as $mbox => $uids) {
- $marked += (int)$RCMAIL->storage->set_flag($uids, $flag, $mbox);
- $count += count($uids);
- }
-
- if (!$marked) {
- // send error message
- if ($_POST['_from'] != 'show')
- $OUTPUT->command('list_mailbox');
- rcmail_display_server_error('errormarking');
- $OUTPUT->send();
- exit;
- }
- else if (empty($_POST['_quiet'])) {
- $OUTPUT->show_message('messagemarked', 'confirmation');
- }
-
- if ($flag == 'DELETED' && $CONFIG['read_when_deleted'] && !empty($_POST['_ruid'])) {
- $ruids = get_input_value('_ruid', RCUBE_INPUT_POST);
- $read = $RCMAIL->storage->set_flag($ruids, 'SEEN');
-
- if ($read && !$CONFIG['skip_deleted'])
- $OUTPUT->command('flag_deleted_as_read', $ruids);
- }
-
- if ($flag == 'SEEN' || $flag == 'UNSEEN' || ($flag == 'DELETED' && !$CONFIG['skip_deleted'])) {
- rcmail_send_unread_count($RCMAIL->storage->get_folder());
- }
- else if ($flag == 'DELETED' && $CONFIG['skip_deleted']) {
- if ($_POST['_from'] == 'show') {
- if ($next = get_input_value('_next_uid', RCUBE_INPUT_GPC))
- $OUTPUT->command('show_message', $next);
- else
- $OUTPUT->command('command', 'list');
- } else {
- $search_request = get_input_value('_search', RCUBE_INPUT_GPC);
- // refresh saved search set after moving some messages
- if ($search_request && $RCMAIL->storage->get_search_set()) {
- $_SESSION['search'] = $RCMAIL->storage->refresh_search();
- }
-
- $msg_count = $RCMAIL->storage->count(NULL, $threading ? 'THREADS' : 'ALL');
- $page_size = $RCMAIL->storage->get_pagesize();
- $page = $RCMAIL->storage->get_page();
- $pages = ceil($msg_count / $page_size);
- $nextpage_count = $old_count - $page_size * $page;
- $remaining = $msg_count - $page_size * ($page - 1);
-
- // jump back one page (user removed the whole last page)
- if ($page > 1 && $remaining == 0) {
- $page -= 1;
- $RCMAIL->storage->set_page($page);
- $_SESSION['page'] = $page;
- $jump_back = true;
- }
-
- // update message count display
- $OUTPUT->set_env('messagecount', $msg_count);
- $OUTPUT->set_env('current_page', $page);
- $OUTPUT->set_env('pagecount', $pages);
-
- // update mailboxlist
- $mbox = $RCMAIL->storage->get_folder();
- $unseen_count = $msg_count ? $RCMAIL->storage->count($mbox, 'UNSEEN') : 0;
- $old_unseen = rcmail_get_unseen_count($mbox);
-
- if ($old_unseen != $unseen_count) {
- $OUTPUT->command('set_unread_count', $mbox, $unseen_count, ($mbox == 'INBOX'));
- rcmail_set_unseen_count($mbox, $unseen_count);
- }
- $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count), $mbox);
-
- if ($threading) {
- $count = get_input_value('_count', RCUBE_INPUT_POST);
- }
-
- // add new rows from next page (if any)
- if ($old_count && $_uids != '*' && ($jump_back || $nextpage_count > 0)) {
- $a_headers = $RCMAIL->storage->list_messages($mbox, NULL,
- rcmail_sort_column(), rcmail_sort_order(), $jump_back ? NULL : $count);
-
- rcmail_js_message_list($a_headers, false);
- }
+if (!$OUTPUT->ajax_call) {
+ return;
+}
+
+$threading = (bool) $RCMAIL->storage->get_threading();
+$skip_deleted = (bool) $RCMAIL->config->get('skip_deleted');
+$read_deleted = (bool) $RCMAIL->config->get('read_when_deleted');
+
+$a_flags_map = array(
+ 'undelete' => 'UNDELETED',
+ 'delete' => 'DELETED',
+ 'read' => 'SEEN',
+ 'unread' => 'UNSEEN',
+ 'flagged' => 'FLAGGED',
+ 'unflagged' => 'UNFLAGGED',
+);
+
+if (($_uids = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST))
+ && ($flag = rcube_utils::get_input_value('_flag', rcube_utils::INPUT_POST))
+) {
+ $flag = $a_flags_map[$flag] ? $a_flags_map[$flag] : strtoupper($flag);
+
+ if ($flag == 'DELETED' && $skip_deleted && $_POST['_from'] != 'show') {
+ // count messages before changing anything
+ $old_count = $RCMAIL->storage->count(NULL, $threading ? 'THREADS' : 'ALL');
+ $old_pages = ceil($old_count / $RCMAIL->storage->get_pagesize());
+ }
+
+ foreach (rcmail_get_uids() as $mbox => $uids) {
+ $marked += (int)$RCMAIL->storage->set_flag($uids, $flag, $mbox);
+ $count += count($uids);
+ }
+
+ if (!$marked) {
+ // send error message
+ if ($_POST['_from'] != 'show') {
+ $OUTPUT->command('list_mailbox');
+ }
+
+ $RCMAIL->display_server_error('errormarking');
+ $OUTPUT->send();
+ exit;
+ }
+ else if (empty($_POST['_quiet'])) {
+ $OUTPUT->show_message('messagemarked', 'confirmation');
+ }
+
+ if ($flag == 'DELETED' && $read_deleted && !empty($_POST['_ruid'])) {
+ $ruids = rcube_utils::get_input_value('_ruid', rcube_utils::INPUT_POST);
+ $read = $RCMAIL->storage->set_flag($ruids, 'SEEN');
+
+ if ($read && !$skip_deleted) {
+ $OUTPUT->command('flag_deleted_as_read', $ruids);
+ }
+ }
+
+ if ($flag == 'SEEN' || $flag == 'UNSEEN' || ($flag == 'DELETED' && !$skip_deleted)) {
+ rcmail_send_unread_count($RCMAIL->storage->get_folder());
+ }
+ else if ($flag == 'DELETED' && $skip_deleted) {
+ if ($_POST['_from'] == 'show') {
+ if ($next = rcube_utils::get_input_value('_next_uid', rcube_utils::INPUT_GPC))
+ $OUTPUT->command('show_message', $next);
+ else
+ $OUTPUT->command('command', 'list');
+ }
+ else {
+ $search_request = rcube_utils::get_input_value('_search', rcube_utils::INPUT_GPC);
+
+ // refresh saved search set after moving some messages
+ if ($search_request && $RCMAIL->storage->get_search_set()) {
+ $_SESSION['search'] = $RCMAIL->storage->refresh_search();
+ }
+
+ $msg_count = $RCMAIL->storage->count(NULL, $threading ? 'THREADS' : 'ALL');
+ $page_size = $RCMAIL->storage->get_pagesize();
+ $page = $RCMAIL->storage->get_page();
+ $pages = ceil($msg_count / $page_size);
+ $nextpage_count = $old_count - $page_size * $page;
+ $remaining = $msg_count - $page_size * ($page - 1);
+
+ // jump back one page (user removed the whole last page)
+ if ($page > 1 && $remaining == 0) {
+ $page -= 1;
+ $RCMAIL->storage->set_page($page);
+ $_SESSION['page'] = $page;
+ $jump_back = true;
+ }
+
+ // update message count display
+ $OUTPUT->set_env('messagecount', $msg_count);
+ $OUTPUT->set_env('current_page', $page);
+ $OUTPUT->set_env('pagecount', $pages);
+
+ // update mailboxlist
+ $mbox = $RCMAIL->storage->get_folder();
+ $unseen_count = $msg_count ? $RCMAIL->storage->count($mbox, 'UNSEEN') : 0;
+ $old_unseen = rcmail_get_unseen_count($mbox);
+
+ if ($old_unseen != $unseen_count) {
+ $OUTPUT->command('set_unread_count', $mbox, $unseen_count, ($mbox == 'INBOX'));
+ rcmail_set_unseen_count($mbox, $unseen_count);
+ }
+
+ $OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count), $mbox);
+
+ if ($threading) {
+ $count = rcube_utils::get_input_value('_count', rcube_utils::INPUT_POST);
+ }
+
+ // add new rows from next page (if any)
+ if ($old_count && $_uids != '*' && ($jump_back || $nextpage_count > 0)) {
+ $a_headers = $RCMAIL->storage->list_messages($mbox, NULL,
+ rcmail_sort_column(), rcmail_sort_order(), $jump_back ? NULL : $count);
+
+ rcmail_js_message_list($a_headers, false);
+ }
+ }
}
- }
}
else {
$OUTPUT->show_message('internalerror', 'error');
diff --git a/program/steps/mail/move_del.inc b/program/steps/mail/move_del.inc
index e172d7188..9a8b4a3ac 100644
--- a/program/steps/mail/move_del.inc
+++ b/program/steps/mail/move_del.inc
@@ -28,9 +28,15 @@ $threading = (bool) $RCMAIL->storage->get_threading();
$old_count = $RCMAIL->storage->count(NULL, $threading ? 'THREADS' : 'ALL');
$old_pages = ceil($old_count / $RCMAIL->storage->get_pagesize());
+$trash = $RCMAIL->config->get('trash_mbox');
+
// move messages
if ($RCMAIL->action == 'move' && !empty($_POST['_uid']) && strlen($_POST['_target_mbox'])) {
+<<<<<<< HEAD
+ $target = rcube_utils::get_input_value('_target_mbox', rcube_utils::INPUT_POST, true);
+=======
$target = get_input_value('_target_mbox', RCUBE_INPUT_POST, true);
+>>>>>>> 010a350715f1a36eab666fe26d3118ed025133c1
$trash = $RCMAIL->config->get('trash_mbox');
foreach (rcmail_get_uids() as $mbox => $uids) {
@@ -42,7 +48,7 @@ if ($RCMAIL->action == 'move' && !empty($_POST['_uid']) && strlen($_POST['_targe
// send error message
if ($_POST['_from'] != 'show')
$OUTPUT->command('list_mailbox');
- rcmail_display_server_error('errormoving', null, $target == $trash ? 'delete' : '');
+ $RCMAIL->display_server_error('errormoving', null, $target == $trash ? 'delete' : '');
$OUTPUT->send();
exit;
}
@@ -63,7 +69,7 @@ else if ($RCMAIL->action=='delete' && !empty($_POST['_uid'])) {
// send error message
if ($_POST['_from'] != 'show')
$OUTPUT->command('list_mailbox');
- rcmail_display_server_error('errordeleting');
+ $RCMAIL->display_server_error('errordeleting');
$OUTPUT->send();
exit;
}
@@ -80,23 +86,22 @@ else {
exit;
}
-$search_request = get_input_value('_search', RCUBE_INPUT_GPC);
+$search_request = rcube_utils::get_input_value('_search', rcube_utils::INPUT_GPC);
// 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')
-{
- if ($next = get_input_value('_next_uid', RCUBE_INPUT_GPC))
+if ($_POST['_from'] == 'show') {
+ if ($next = rcube_utils::get_input_value('_next_uid', rcube_utils::INPUT_GPC))
$OUTPUT->command('show_message', $next);
else
$OUTPUT->command('command', 'list');
}
-else
-{
+else {
$msg_count = $RCMAIL->storage->count(NULL, $threading ? 'THREADS' : 'ALL');
+ $exists = $RCMAIL->storage->count($mbox, 'EXISTS', true);
$page_size = $RCMAIL->storage->get_pagesize();
$page = $RCMAIL->storage->get_page();
$pages = ceil($msg_count / $page_size);
@@ -115,7 +120,7 @@ else
$OUTPUT->set_env('messagecount', $msg_count);
$OUTPUT->set_env('current_page', $page);
$OUTPUT->set_env('pagecount', $pages);
- $OUTPUT->set_env('exists', $RCMAIL->storage->count($mbox, 'EXISTS', true));
+ $OUTPUT->set_env('exists', $exists);
// update mailboxlist
$mbox = $RCMAIL->storage->get_folder();
@@ -131,11 +136,11 @@ else
rcmail_send_unread_count($target, true);
}
- $OUTPUT->command('set_quota', rcmail_quota_content());
+ $OUTPUT->command('set_quota', $RCMAIL->quota_content());
$OUTPUT->command('set_rowcount', rcmail_get_messagecount_text($msg_count), $mbox);
if ($threading) {
- $count = get_input_value('_count', RCUBE_INPUT_POST);
+ $count = rcube_utils::get_input_value('_count', rcube_utils::INPUT_POST);
}
// add new rows from next page (if any)
@@ -145,6 +150,14 @@ else
rcmail_js_message_list($a_headers, false);
}
+
+ // set trash folder state
+ if ($mbox === $trash) {
+ $OUTPUT->command('set_trash_count', $exists);
+ }
+ else if ($target !== null && $target === $trash) {
+ $OUTPUT->command('set_trash_count', $RCMAIL->storage->count($trash, 'EXISTS'));
+ }
}
// send response
diff --git a/program/steps/mail/pagenav.inc b/program/steps/mail/pagenav.inc
index e4b70ad60..74cca88f2 100644
--- a/program/steps/mail/pagenav.inc
+++ b/program/steps/mail/pagenav.inc
@@ -19,7 +19,7 @@
+-----------------------------------------------------------------------+
*/
-$uid = get_input_value('_uid', RCUBE_INPUT_GET);
+$uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_GET);
$index = $RCMAIL->storage->index(null, rcmail_sort_column(), rcmail_sort_order());
$cnt = $index->count_messages();
@@ -35,23 +35,27 @@ if ($prev) {
$OUTPUT->set_env('prev_uid', $prev);
$OUTPUT->command('enable_command', 'previousmessage', 'firstmessage', true);
}
+
if ($next) {
$OUTPUT->set_env('next_uid', $next);
$OUTPUT->command('enable_command', 'nextmessage', 'lastmessage', true);
}
-if ($first)
+
+if ($first) {
$OUTPUT->set_env('first_uid', $first);
-if ($last)
+}
+
+if ($last) {
$OUTPUT->set_env('last_uid', $last);
+}
// Don't need a real messages count value
$OUTPUT->set_env('messagecount', 1);
// Set rowcount text
-$OUTPUT->command('set_rowcount', rcube_label(array(
+$OUTPUT->command('set_rowcount', $RCMAIL->gettext(array(
'name' => 'messagenrof',
'vars' => array('nr' => $pos+1, 'count' => $cnt)
)));
$OUTPUT->send();
-
diff --git a/program/steps/mail/search.inc b/program/steps/mail/search.inc
index 7d128c73c..67fee755d 100644
--- a/program/steps/mail/search.inc
+++ b/program/steps/mail/search.inc
@@ -1,14 +1,18 @@
<?php
+
/*
+-----------------------------------------------------------------------+
| steps/mail/search.inc |
| |
- | Search functions for rc webmail |
+ | This file is part of the Roundcube Webmail client |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
| See the README file for a full license statement. |
| |
+ | PURPOSE: |
+ | Mail messages search action |
+-----------------------------------------------------------------------+
| Author: Benjamin Smith <defitro@gmail.com> |
| Thomas Bruederli <roundcube@gmail.com> |
@@ -24,13 +28,13 @@ $_SESSION['page'] = 1;
// using encodeURI with javascript "should" give us
// a correctly encoded query string
-$imap_charset = RCMAIL_CHARSET;
+$imap_charset = RCUBE_CHARSET;
// get search string
-$str = get_input_value('_q', RCUBE_INPUT_GET, true);
-$mbox = get_input_value('_mbox', RCUBE_INPUT_GET, true);
-$filter = get_input_value('_filter', RCUBE_INPUT_GET);
-$headers = get_input_value('_headers', RCUBE_INPUT_GET);
+$str = rcube_utils::get_input_value('_q', rcube_utils::INPUT_GET, true);
+$mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_GET, true);
+$filter = rcube_utils::get_input_value('_filter', rcube_utils::INPUT_GET);
+$headers = rcube_utils::get_input_value('_headers', rcube_utils::INPUT_GET);
$subject = array();
$search_request = md5($mbox.$filter.$str);
@@ -41,67 +45,62 @@ $search_str = $filter && $filter != 'ALL' ? $filter : '';
$_SESSION['search_filter'] = $filter;
// Check the search string for type of search
-if (preg_match("/^from:.*/i", $str))
-{
- list(,$srch) = explode(":", $str);
- $subject['from'] = "HEADER FROM";
-}
-else if (preg_match("/^to:.*/i", $str))
-{
- list(,$srch) = explode(":", $str);
- $subject['to'] = "HEADER TO";
-}
-else if (preg_match("/^cc:.*/i", $str))
-{
- list(,$srch) = explode(":", $str);
- $subject['cc'] = "HEADER CC";
-}
-else if (preg_match("/^bcc:.*/i", $str))
-{
- list(,$srch) = explode(":", $str);
- $subject['bcc'] = "HEADER BCC";
-}
-else if (preg_match("/^subject:.*/i", $str))
-{
- list(,$srch) = explode(":", $str);
- $subject['subject'] = "HEADER SUBJECT";
-}
-else if (preg_match("/^body:.*/i", $str))
-{
- list(,$srch) = explode(":", $str);
- $subject['body'] = "BODY";
-}
-else if (strlen(trim($str)))
-{
- if ($headers) {
- foreach (explode(',', $headers) as $header) {
- if ($header == 'text') {
- // #1488208: get rid of other headers when searching by "TEXT"
- $subject = array('text' => 'TEXT');
- break;
- }
- else {
- $subject[$header] = ($header != 'body' ? 'HEADER ' : '') . strtoupper($header);
- }
+if (preg_match("/^from:.*/i", $str)) {
+ list(,$srch) = explode(":", $str);
+ $subject['from'] = "HEADER FROM";
+}
+else if (preg_match("/^to:.*/i", $str)) {
+ list(,$srch) = explode(":", $str);
+ $subject['to'] = "HEADER TO";
+}
+else if (preg_match("/^cc:.*/i", $str)) {
+ list(,$srch) = explode(":", $str);
+ $subject['cc'] = "HEADER CC";
+}
+else if (preg_match("/^bcc:.*/i", $str)) {
+ list(,$srch) = explode(":", $str);
+ $subject['bcc'] = "HEADER BCC";
+}
+else if (preg_match("/^subject:.*/i", $str)) {
+ list(,$srch) = explode(":", $str);
+ $subject['subject'] = "HEADER SUBJECT";
+}
+else if (preg_match("/^body:.*/i", $str)) {
+ list(,$srch) = explode(":", $str);
+ $subject['body'] = "BODY";
+}
+else if (strlen(trim($str))) {
+ if ($headers) {
+ foreach (explode(',', $headers) as $header) {
+ if ($header == 'text') {
+ // #1488208: get rid of other headers when searching by "TEXT"
+ $subject = array('text' => 'TEXT');
+ break;
+ }
+ else {
+ $subject[$header] = ($header != 'body' ? 'HEADER ' : '') . strtoupper($header);
+ }
+ }
+
+ // save search modifiers for the current folder to user prefs
+ $search_mods = rcmail_search_mods();
+ $search_mods[$mbox] = array_fill_keys(array_keys($subject), 1);
+
+ $RCMAIL->user->save_prefs(array('search_mods' => $search_mods));
+ }
+ else {
+ // search in subject by default
+ $subject['subject'] = 'HEADER SUBJECT';
}
-
- // save search modifiers for the current folder to user prefs
- $search_mods = $RCMAIL->config->get('search_mods', $SEARCH_MODS_DEFAULT);
- $search_mods[$mbox] = array_fill_keys(array_keys($subject), 1);
- $RCMAIL->user->save_prefs(array('search_mods' => $search_mods));
- }
- else {
- // search in subject by default
- $subject['subject'] = 'HEADER SUBJECT';
- }
}
$search = isset($srch) ? trim($srch) : trim($str);
if (!empty($subject)) {
- $search_str .= str_repeat(' OR', count($subject)-1);
- foreach ($subject as $sub)
- $search_str .= ' ' . $sub . ' ' . rcube_imap_generic::escape($search);
+ $search_str .= str_repeat(' OR', count($subject)-1);
+ foreach ($subject as $sub) {
+ $search_str .= ' ' . $sub . ' ' . rcube_imap_generic::escape($search);
+ }
}
$search_str = trim($search_str);
@@ -111,23 +110,42 @@ $sort_column = rcmail_sort_column();
$mboxes = $RCMAIL->storage->list_folders_subscribed('', '*', 'mail');
// execute IMAP search
-if ($search_str)
- $RCMAIL->storage->search($mboxes, $search_str, $imap_charset, $sort_column);
+if ($search_str) {
+ $RCMAIL->storage->search($mbox, $search_str, $imap_charset, $sort_column);
+}
// save search results in session
-if (!is_array($_SESSION['search']))
- $_SESSION['search'] = array();
+if (!is_array($_SESSION['search'])) {
+ $_SESSION['search'] = array();
+}
if ($search_str) {
- $_SESSION['search'] = $RCMAIL->storage->get_search_set();
- $_SESSION['last_text_search'] = $str;
+ $_SESSION['search'] = $RCMAIL->storage->get_search_set();
+ $_SESSION['last_text_search'] = $str;
}
$_SESSION['search_request'] = $search_request;
// Get the headers
$result_h = $RCMAIL->storage->list_messages($mbox, 1, $sort_column, rcmail_sort_order());
-$count = $RCMAIL->storage->count($mbox, $RCMAIL->storage->get_threading() ? 'THREADS' : 'ALL');
+$count = $RCMAIL->storage->count($mbox, $RCMAIL->storage->get_threading() ? 'THREADS' : 'ALL');
+
+// Add 'folder' column to list
+if ($_SESSION['search'][1]->multi) {
+ $a_show_cols = $_SESSION['list_attrib']['columns'] ? $_SESSION['list_attrib']['columns'] : (array)$CONFIG['list_cols'];
+ if (!in_array('folder', $a_show_cols))
+ $a_show_cols[] = 'folder';
+
+ // make message UIDs unique by appending the folder name
+ foreach ($result_h as $i => $header) {
+ $header->uid .= '-'.$header->folder;
+ $header->flags['skip_mbox_check'] = true;
+ if ($header->parent_uid)
+ $header->parent_uid .= '-'.$header->folder;
+ }
+
+ $OUTPUT->command('select_folder', '');
+}
// Add 'folder' column to list
if ($_SESSION['search'][1]->multi) {
@@ -148,16 +166,24 @@ if ($_SESSION['search'][1]->multi) {
// Make sure we got the headers
if (!empty($result_h)) {
- rcmail_js_message_list($result_h, false, $a_show_cols);
- if ($search_str)
- $OUTPUT->show_message('searchsuccessful', 'confirmation', array('nr' => $RCMAIL->storage->count(NULL, 'ALL')));
+ rcmail_js_message_list($result_h, false, $a_show_cols);
+ if ($search_str) {
+ $OUTPUT->show_message('searchsuccessful', 'confirmation', array('nr' => $RCMAIL->storage->count(NULL, 'ALL')));
+ }
+
+ // remember last HIGHESTMODSEQ value (if supported)
+ // we need it for flag updates in check-recent
+ $data = $RCMAIL->storage->folder_data($mbox_name);
+ if (!empty($data['HIGHESTMODSEQ'])) {
+ $_SESSION['list_mod_seq'] = $data['HIGHESTMODSEQ'];
+ }
}
// handle IMAP errors (e.g. #1486905)
else if ($err_code = $RCMAIL->storage->get_error_code()) {
- rcmail_display_server_error();
+ $RCMAIL->display_server_error();
}
else {
- $OUTPUT->show_message('searchnomatch', 'notice');
+ $OUTPUT->show_message('searchnomatch', 'notice');
}
// update message count display
diff --git a/program/steps/mail/search_contacts.inc b/program/steps/mail/search_contacts.inc
index 6a30ad1f5..4d5abf9ef 100644
--- a/program/steps/mail/search_contacts.inc
+++ b/program/steps/mail/search_contacts.inc
@@ -19,7 +19,7 @@
+-----------------------------------------------------------------------+
*/
-$search = get_input_value('_q', RCUBE_INPUT_GPC, true);
+$search = rcube_utils::get_input_value('_q', rcube_utils::INPUT_GPC, true);
$sources = $RCMAIL->get_address_sources();
$search_mode = (int) $RCMAIL->config->get('addressbook_search_mode');
$addr_sort_col = $RCMAIL->config->get('addressbook_sort_col', 'name');
@@ -76,11 +76,11 @@ if (!empty($result) && $result->count > 0) {
// (same as in list_contacts.inc)
$emails = $source->get_col_values('email', $row, true);
foreach ($emails as $i => $email) {
- $row_id = $row['ID'].$i;
+ $row_id = $row['ID'].'-'.$i;
$jsresult[$row_id] = format_email_recipient($email, $name);
$OUTPUT->command('add_contact_row', $row_id, array(
- 'contact' => html::span(array('title' => $email), Q($name ? $name : $email) .
- ($name && count($emails) > 1 ? '&nbsp;' . html::span('email', Q($email)) : '')
+ 'contact' => html::span(array('title' => $email), rcube::Q($name ? $name : $email) .
+ ($name && count($emails) > 1 ? '&nbsp;' . html::span('email', rcube::Q($email)) : '')
)), 'person');
}
}
diff --git a/program/steps/mail/sendmail.inc b/program/steps/mail/sendmail.inc
index ccb8978be..0619d630b 100644
--- a/program/steps/mail/sendmail.inc
+++ b/program/steps/mail/sendmail.inc
@@ -5,7 +5,7 @@
| program/steps/mail/sendmail.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2011, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -24,434 +24,224 @@
$OUTPUT->reset();
$OUTPUT->framed = TRUE;
-$savedraft = !empty($_POST['_draft']) ? true : false;
+$savedraft = !empty($_POST['_draft']) ? true : false;
+$sendmail_delay = (int) $RCMAIL->config->get('sendmail_delay');
+$drafts_mbox = $RCMAIL->config->get('drafts_mbox');
-$COMPOSE_ID = get_input_value('_id', RCUBE_INPUT_GPC);
+$COMPOSE_ID = rcube_utils::get_input_value('_id', rcube_utils::INPUT_GPC);
$COMPOSE =& $_SESSION['compose_data_'.$COMPOSE_ID];
/****** checks ********/
if (!isset($COMPOSE['id'])) {
- raise_error(array('code' => 500, 'type' => 'php',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Invalid compose ID"), true, false);
-
- $OUTPUT->show_message('internalerror', 'error');
- $OUTPUT->send('iframe');
-}
+ rcube::raise_error(array('code' => 500, 'type' => 'php',
+ 'file' => __FILE__, 'line' => __LINE__,
+ 'message' => "Invalid compose ID"), true, false);
-if (!$savedraft) {
- if (empty($_POST['_to']) && empty($_POST['_cc']) && empty($_POST['_bcc'])
- && empty($_POST['_subject']) && $_POST['_message']) {
- $OUTPUT->show_message('sendingfailed', 'error');
+ $OUTPUT->show_message('internalerror', 'error');
$OUTPUT->send('iframe');
- }
-
- if(!empty($CONFIG['sendmail_delay'])) {
- $wait_sec = time() - intval($CONFIG['sendmail_delay']) - intval($CONFIG['last_message_time']);
- if ($wait_sec < 0) {
- $OUTPUT->show_message('senttooquickly', 'error', array('sec' => $wait_sec * -1));
- $OUTPUT->send('iframe');
- }
- }
-}
-
-
-/****** message sending functions ********/
-
-// encrypt parts of the header
-function rcmail_encrypt_header($what)
-{
- global $CONFIG, $RCMAIL;
- if (!$CONFIG['http_received_header_encrypt']) {
- return $what;
- }
- return $RCMAIL->encrypt($what);
}
-// get identity record
-function rcmail_get_identity($id)
-{
- global $RCMAIL, $message_charset;
- global $RCMAIL;
-
- if ($sql_arr = $RCMAIL->user->get_identity($id)) {
- $out = $sql_arr;
-
- if ($message_charset != RCMAIL_CHARSET) {
- foreach ($out as $k => $v)
- $out[$k] = rcube_charset_convert($v, RCMAIL_CHARSET, $message_charset);
+if (!$savedraft) {
+ if (empty($_POST['_to']) && empty($_POST['_cc']) && empty($_POST['_bcc'])
+ && empty($_POST['_subject']) && $_POST['_message']
+ ) {
+ $OUTPUT->show_message('sendingfailed', 'error');
+ $OUTPUT->send('iframe');
}
- $out['mailto'] = $sql_arr['email'];
- $out['string'] = format_email_recipient($sql_arr['email'], $sql_arr['name']);
-
- return $out;
- }
-
- return FALSE;
-}
-
-/**
- * go from this:
- * <img src="http[s]://.../tiny_mce/plugins/emotions/images/smiley-cool.gif" border="0" alt="Cool" title="Cool" />
- *
- * to this:
- *
- * <img src="/path/on/server/.../tiny_mce/plugins/emotions/images/smiley-cool.gif" border="0" alt="Cool" title="Cool" />
- */
-function rcmail_fix_emoticon_paths($mime_message)
-{
- global $RCMAIL;
-
- $body = $mime_message->getHTMLBody();
-
- // remove any null-byte characters before parsing
- $body = preg_replace('/\x00/', '', $body);
-
- $searchstr = 'program/js/tiny_mce/plugins/emotions/img/';
- $offset = 0;
-
- // keep track of added images, so they're only added once
- $included_images = array();
-
- if (preg_match_all('# src=[\'"]([^\'"]+)#', $body, $matches, PREG_OFFSET_CAPTURE)) {
- foreach ($matches[1] as $m) {
- // find emoticon image tags
- if (preg_match('#'.$searchstr.'(.*)$#', $m[0], $imatches)) {
- $image_name = $imatches[1];
-
- // sanitize image name so resulting attachment doesn't leave images dir
- $image_name = preg_replace('/[^a-zA-Z0-9_\.\-]/i', '', $image_name);
- $img_file = INSTALL_PATH . '/' . $searchstr . $image_name;
-
- if (! in_array($image_name, $included_images)) {
- // add the image to the MIME message
- if (!$mime_message->addHTMLImage($img_file, 'image/gif', '', true, $image_name)) {
- $RCMAIL->output->show_message("emoticonerror", 'error');
- }
- array_push($included_images, $image_name);
+ if ($sendmail_delay) {
+ $wait_sec = time() - $sendmail_delay - intval($RCMAIL->config->get('last_message_time'));
+ if ($wait_sec < 0) {
+ $OUTPUT->show_message('senttooquickly', 'error', array('sec' => $wait_sec * -1));
+ $OUTPUT->send('iframe');
}
-
- $body = substr_replace($body, $img_file, $m[1] + $offset, strlen($m[0]));
- $offset += strlen($img_file) - strlen($m[0]);
- }
}
- }
-
- $mime_message->setHTMLBody($body);
-}
-
-/**
- * Extract image attachments from HTML content (data URIs)
- */
-function rcmail_extract_inline_images($mime_message, $from)
-{
- $body = $mime_message->getHTMLBody();
- $offset = 0;
- $list = array();
- $regexp = '# src=[\'"](data:(image/[a-z]+);base64,([a-z0-9+/=\r\n]+))([\'"])#i';
-
- // get domain for the Content-ID, must be the same as in Mail_Mime::get()
- if (preg_match('#@([0-9a-zA-Z\-\.]+)#', $from, $matches)) {
- $domain = $matches[1];
- } else {
- $domain = 'localhost';
- }
-
- if (preg_match_all($regexp, $body, $matches, PREG_OFFSET_CAPTURE)) {
- foreach ($matches[1] as $idx => $m) {
- $data = preg_replace('/\r\n/', '', $matches[3][$idx][0]);
- $data = base64_decode($data);
-
- if (empty($data)) {
- continue;
- }
-
- $hash = md5($data) . '@' . $domain;
- $mime_type = $matches[2][$idx][0];
- $name = $list[$hash];
-
- // add the image to the MIME message
- if (!$name) {
- $ext = preg_replace('#^[^/]+/#', '', $mime_type);
- $name = substr($hash, 0, 8) . '.' . $ext;
- $list[$hash] = $name;
-
- $mime_message->addHTMLImage($data, $mime_type, $name, false, $hash);
- }
-
- $body = substr_replace($body, $name, $m[1] + $offset, strlen($m[0]));
- $offset += strlen($name) - strlen($m[0]);
- }
- }
-
- $mime_message->setHTMLBody($body);
-}
-
-/**
- * Parse and cleanup email address input (and count addresses)
- *
- * @param string Address input
- * @param boolean Do count recipients (saved in global $RECIPIENT_COUNT)
- * @param boolean Validate addresses (errors saved in global $EMAIL_FORMAT_ERROR)
- * @return string Canonical recipients string separated by comma
- */
-function rcmail_email_input_format($mailto, $count=false, $check=true)
-{
- global $RCMAIL, $EMAIL_FORMAT_ERROR, $RECIPIENT_COUNT;
-
- // simplified email regexp, supporting quoted local part
- $email_regexp = '(\S+|("[^"]+"))@\S+';
-
- $delim = trim($RCMAIL->config->get('recipients_separator', ','));
- $regexp = array("/[,;$delim]\s*[\r\n]+/", '/[\r\n]+/', "/[,;$delim]\s*\$/m", '/;/', '/(\S{1})(<'.$email_regexp.'>)/U');
- $replace = array($delim.' ', ', ', '', $delim, '\\1 \\2');
-
- // replace new lines and strip ending ', ', make address input more valid
- $mailto = trim(preg_replace($regexp, $replace, $mailto));
-
- $result = array();
- $items = rcube_explode_quoted_string($delim, $mailto);
-
- foreach($items as $item) {
- $item = trim($item);
- // address in brackets without name (do nothing)
- if (preg_match('/^<'.$email_regexp.'>$/', $item)) {
- $item = rcube_idn_to_ascii(trim($item, '<>'));
- $result[] = $item;
- // address without brackets and without name (add brackets)
- } else if (preg_match('/^'.$email_regexp.'$/', $item)) {
- $item = rcube_idn_to_ascii($item);
- $result[] = $item;
- // address with name (handle name)
- } else if (preg_match('/<*'.$email_regexp.'>*$/', $item, $matches)) {
- $address = $matches[0];
- $name = trim(str_replace($address, '', $item));
- if ($name[0] == '"' && $name[count($name)-1] == '"') {
- $name = substr($name, 1, -1);
- }
- $name = stripcslashes($name);
- $address = rcube_idn_to_ascii(trim($address, '<>'));
- $result[] = format_email_recipient($address, $name);
- $item = $address;
- } else if (trim($item)) {
- continue;
- }
-
- // check address format
- $item = trim($item, '<>');
- if ($item && $check && !check_email($item)) {
- $EMAIL_FORMAT_ERROR = $item;
- return;
- }
- }
-
- if ($count) {
- $RECIPIENT_COUNT += count($result);
- }
-
- return implode(', ', $result);
-}
-
-
-function rcmail_generic_message_footer($isHtml)
-{
- global $CONFIG;
-
- if ($isHtml && !empty($CONFIG['generic_message_footer_html'])) {
- $file = $CONFIG['generic_message_footer_html'];
- $html_footer = true;
- }
- else {
- $file = $CONFIG['generic_message_footer'];
- $html_footer = false;
- }
-
- if ($file && realpath($file)) {
- // sanity check
- if (!preg_match('/\.(php|ini|conf)$/', $file) && strpos($file, '/etc/') === false) {
- $footer = file_get_contents($file);
- if ($isHtml && !$html_footer)
- $footer = '<pre>' . $footer . '</pre>';
- return $footer;
- }
- }
-
- return false;
}
/****** compose message ********/
-if (strlen($_POST['_draft_saveid']) > 3)
- $olddraftmessageid = get_input_value('_draft_saveid', RCUBE_INPUT_POST);
-
-$message_id = rcmail_gen_message_id();
+if (empty($COMPOSE['param']['message-id'])) {
+ $COMPOSE['param']['message-id'] = $RCMAIL->gen_message_id();
+}
+$message_id = $COMPOSE['param']['message-id'];
// set default charset
$message_charset = isset($_POST['_charset']) ? $_POST['_charset'] : $OUTPUT->get_charset();
$EMAIL_FORMAT_ERROR = NULL;
-$RECIPIENT_COUNT = 0;
+$RECIPIENT_COUNT = 0;
-$mailto = rcmail_email_input_format(get_input_value('_to', RCUBE_INPUT_POST, TRUE, $message_charset), true);
-$mailcc = rcmail_email_input_format(get_input_value('_cc', RCUBE_INPUT_POST, TRUE, $message_charset), true);
-$mailbcc = rcmail_email_input_format(get_input_value('_bcc', RCUBE_INPUT_POST, TRUE, $message_charset), true);
+$mailto = rcmail_email_input_format(rcube_utils::get_input_value('_to', rcube_utils::INPUT_POST, TRUE, $message_charset), true);
+$mailcc = rcmail_email_input_format(rcube_utils::get_input_value('_cc', rcube_utils::INPUT_POST, TRUE, $message_charset), true);
+$mailbcc = rcmail_email_input_format(rcube_utils::get_input_value('_bcc', rcube_utils::INPUT_POST, TRUE, $message_charset), true);
if ($EMAIL_FORMAT_ERROR) {
- $OUTPUT->show_message('emailformaterror', 'error', array('email' => $EMAIL_FORMAT_ERROR));
- $OUTPUT->send('iframe');
+ $OUTPUT->show_message('emailformaterror', 'error', array('email' => $EMAIL_FORMAT_ERROR));
+ $OUTPUT->send('iframe');
}
if (empty($mailto) && !empty($mailcc)) {
- $mailto = $mailcc;
- $mailcc = null;
+ $mailto = $mailcc;
+ $mailcc = null;
+}
+else if (empty($mailto)) {
+ $mailto = 'undisclosed-recipients:;';
}
-else if (empty($mailto))
- $mailto = 'undisclosed-recipients:;';
// Get sender name and address...
-$from = get_input_value('_from', RCUBE_INPUT_POST, true, $message_charset);
+$from = rcube_utils::get_input_value('_from', rcube_utils::INPUT_POST, true, $message_charset);
// ... from identity...
if (is_numeric($from)) {
- if (is_array($identity_arr = rcmail_get_identity($from))) {
- if ($identity_arr['mailto'])
- $from = $identity_arr['mailto'];
- if ($identity_arr['string'])
- $from_string = $identity_arr['string'];
- }
- else {
- $from = null;
- }
+ if (is_array($identity_arr = rcmail_get_identity($from))) {
+ if ($identity_arr['mailto'])
+ $from = $identity_arr['mailto'];
+ if ($identity_arr['string'])
+ $from_string = $identity_arr['string'];
+ }
+ else {
+ $from = null;
+ }
}
// ... if there is no identity record, this might be a custom from
else if ($from_string = rcmail_email_input_format($from)) {
- if (preg_match('/(\S+@\S+)/', $from_string, $m))
- $from = trim($m[1], '<>');
- else
- $from = null;
+ if (preg_match('/(\S+@\S+)/', $from_string, $m))
+ $from = trim($m[1], '<>');
+ else
+ $from = null;
}
-if (!$from_string && $from)
- $from_string = $from;
+if (!$from_string && $from) {
+ $from_string = $from;
+}
// compose headers array
$headers = array();
// if configured, the Received headers goes to top, for good measure
-if ($CONFIG['http_received_header'])
-{
- $nldlm = "\r\n\t";
- // FROM/VIA
- $http_header = 'from ';
- if (isset($_SERVER['HTTP_X_FORWARDED_FOR'])) {
- $host = $_SERVER['HTTP_X_FORWARDED_FOR'];
+if ($RCMAIL->config->get('http_received_header')) {
+ $nldlm = "\r\n\t";
+ $encrypt = $RCMAIL->config->get('http_received_header_encrypt');
+
+ // FROM/VIA
+ $http_header = 'from ';
+
+ if (!empty($_SERVER['HTTP_X_FORWARDED_FOR'])) {
+ $hosts = explode(',', $_SERVER['HTTP_X_FORWARDED_FOR'], 2);
+ $hostname = gethostbyaddr($hosts[0]);
+
+ if ($encrypt) {
+ $http_header .= rcmail_encrypt_header($hostname);
+ if ($host != $hostname)
+ $http_header .= ' ('. rcmail_encrypt_header($host) . ')';
+ }
+ else {
+ $http_header .= (($host != $hostname) ? $hostname : '[' . $host . ']');
+ if ($host != $hostname)
+ $http_header .= ' (['. $host .'])';
+ }
+ $http_header .= $nldlm . ' via ';
+ }
+
+ $host = $_SERVER['REMOTE_ADDR'];
$hostname = gethostbyaddr($host);
- if ($CONFIG['http_received_header_encrypt']) {
- $http_header .= rcmail_encrypt_header($hostname);
- if ($host != $hostname)
- $http_header .= ' ('. rcmail_encrypt_header($host) . ')';
- } else {
- $http_header .= (($host != $hostname) ? $hostname : '[' . $host . ']');
- if ($host != $hostname)
- $http_header .= ' (['. $host .'])';
- }
- $http_header .= $nldlm . ' via ';
- }
- $host = $_SERVER['REMOTE_ADDR'];
- $hostname = gethostbyaddr($host);
- if ($CONFIG['http_received_header_encrypt']) {
- $http_header .= rcmail_encrypt_header($hostname);
- if ($host != $hostname)
- $http_header .= ' ('. rcmail_encrypt_header($host) . ')';
- } else {
- $http_header .= (($host != $hostname) ? $hostname : '[' . $host . ']');
- if ($host != $hostname)
- $http_header .= ' (['. $host .'])';
- }
- // BY
- $http_header .= $nldlm . 'by ' . $_SERVER['HTTP_HOST'];
- // WITH
- $http_header .= $nldlm . 'with HTTP (' . $_SERVER['SERVER_PROTOCOL'] .
+
+ if ($encrypt) {
+ $http_header .= rcmail_encrypt_header($hostname);
+ if ($host != $hostname)
+ $http_header .= ' ('. rcmail_encrypt_header($host) . ')';
+ }
+ else {
+ $http_header .= (($host != $hostname) ? $hostname : '[' . $host . ']');
+ if ($host != $hostname)
+ $http_header .= ' (['. $host .'])';
+ }
+
+ // BY
+ $http_header .= $nldlm . 'by ' . $_SERVER['HTTP_HOST'];
+
+ // WITH
+ $http_header .= $nldlm . 'with HTTP (' . $_SERVER['SERVER_PROTOCOL'] .
' '.$_SERVER['REQUEST_METHOD'] . '); ' . date('r');
- $http_header = wordwrap($http_header, 69, $nldlm);
+ $http_header = wordwrap($http_header, 69, $nldlm);
- $headers['Received'] = $http_header;
+ $headers['Received'] = $http_header;
}
-$headers['Date'] = rcmail_user_date();
-$headers['From'] = rcube_charset_convert($from_string, RCMAIL_CHARSET, $message_charset);
+$headers['Date'] = $RCMAIL->user_date();
+$headers['From'] = rcube_charset::convert($from_string, RCUBE_CHARSET, $message_charset);
$headers['To'] = $mailto;
// additional recipients
if (!empty($mailcc)) {
- $headers['Cc'] = $mailcc;
+ $headers['Cc'] = $mailcc;
}
if (!empty($mailbcc)) {
- $headers['Bcc'] = $mailbcc;
+ $headers['Bcc'] = $mailbcc;
}
if (($max_recipients = (int) $RCMAIL->config->get('max_recipients')) > 0) {
- if ($RECIPIENT_COUNT > $max_recipients) {
- $OUTPUT->show_message('toomanyrecipients', 'error', array('max' => $max_recipients));
- $OUTPUT->send('iframe');
- }
+ if ($RECIPIENT_COUNT > $max_recipients) {
+ $OUTPUT->show_message('toomanyrecipients', 'error', array('max' => $max_recipients));
+ $OUTPUT->send('iframe');
+ }
}
// add subject
-$headers['Subject'] = trim(get_input_value('_subject', RCUBE_INPUT_POST, TRUE, $message_charset));
+$headers['Subject'] = trim(rcube_utils::get_input_value('_subject', rcube_utils::INPUT_POST, TRUE, $message_charset));
if (!empty($identity_arr['organization'])) {
- $headers['Organization'] = $identity_arr['organization'];
+ $headers['Organization'] = $identity_arr['organization'];
}
-if (!empty($_POST['_replyto'])) {
- $headers['Reply-To'] = rcmail_email_input_format(get_input_value('_replyto', RCUBE_INPUT_POST, TRUE, $message_charset));
+if ($hdr = rcube_utils::get_input_value('_replyto', rcube_utils::INPUT_POST, TRUE, $message_charset)) {
+ $headers['Reply-To'] = rcmail_email_input_format($hdr);
}
if (!empty($headers['Reply-To'])) {
- $headers['Mail-Reply-To'] = $headers['Reply-To'];
+ $headers['Mail-Reply-To'] = $headers['Reply-To'];
}
-if (!empty($_POST['_followupto'])) {
- $headers['Mail-Followup-To'] = rcmail_email_input_format(get_input_value('_followupto', RCUBE_INPUT_POST, TRUE, $message_charset));
+if ($hdr = rcube_utils::get_input_value('_followupto', rcube_utils::INPUT_POST, TRUE, $message_charset)) {
+ $headers['Mail-Followup-To'] = rcmail_email_input_format();
}
// remember reply/forward UIDs in special headers
if (!empty($COMPOSE['reply_uid']) && $savedraft) {
- $headers['X-Draft-Info'] = array('type' => 'reply', 'uid' => $COMPOSE['reply_uid']);
+ $headers['X-Draft-Info'] = array('type' => 'reply', 'uid' => $COMPOSE['reply_uid']);
}
else if (!empty($COMPOSE['forward_uid']) && $savedraft) {
- $headers['X-Draft-Info'] = array('type' => 'forward', 'uid' => $COMPOSE['forward_uid']);
+ $headers['X-Draft-Info'] = array('type' => 'forward', 'uid' => $COMPOSE['forward_uid']);
}
if (!empty($COMPOSE['reply_msgid'])) {
- $headers['In-Reply-To'] = $COMPOSE['reply_msgid'];
+ $headers['In-Reply-To'] = $COMPOSE['reply_msgid'];
}
if (!empty($COMPOSE['references'])) {
- $headers['References'] = $COMPOSE['references'];
+ $headers['References'] = $COMPOSE['references'];
}
if (!empty($_POST['_priority'])) {
- $priority = intval($_POST['_priority']);
- $a_priorities = array(1=>'highest', 2=>'high', 4=>'low', 5=>'lowest');
- if ($str_priority = $a_priorities[$priority]) {
- $headers['X-Priority'] = sprintf("%d (%s)", $priority, ucfirst($str_priority));
- }
+ $priority = intval($_POST['_priority']);
+ $a_priorities = array(1 => 'highest', 2 => 'high', 4 => 'low', 5 => 'lowest');
+
+ if ($str_priority = $a_priorities[$priority]) {
+ $headers['X-Priority'] = sprintf("%d (%s)", $priority, ucfirst($str_priority));
+ }
}
if (!empty($_POST['_receipt'])) {
- $headers['Return-Receipt-To'] = $from_string;
- $headers['Disposition-Notification-To'] = $from_string;
+ $headers['Return-Receipt-To'] = $from_string;
+ $headers['Disposition-Notification-To'] = $from_string;
}
// additional headers
$headers['Message-ID'] = $message_id;
-$headers['X-Sender'] = $from;
+$headers['X-Sender'] = $from;
if (is_array($headers['X-Draft-Info'])) {
- $headers['X-Draft-Info'] = rcmail_draftinfo_encode($headers['X-Draft-Info'] + array('folder' => $COMPOSE['mailbox']));
+ $headers['X-Draft-Info'] = rcmail_draftinfo_encode($headers['X-Draft-Info'] + array('folder' => $COMPOSE['mailbox']));
}
-if (!empty($CONFIG['useragent'])) {
- $headers['User-Agent'] = $CONFIG['useragent'];
+if ($hdr = $RCMAIL->config->get('useragent')) {
+ $headers['User-Agent'] = $hdr;
}
// exec hook for header checking and manipulation
@@ -460,85 +250,85 @@ $data = $RCMAIL->plugins->exec_hook('message_outgoing_headers', array('headers'
// sending aborted by plugin
if ($data['abort'] && !$savedraft) {
- $OUTPUT->show_message($data['message'] ? $data['message'] : 'sendingfailed');
- $OUTPUT->send('iframe');
+ $OUTPUT->show_message($data['message'] ? $data['message'] : 'sendingfailed');
+ $OUTPUT->send('iframe');
+}
+else {
+ $headers = $data['headers'];
}
-else
- $headers = $data['headers'];
-
-$isHtml = (bool) get_input_value('_is_html', RCUBE_INPUT_POST);
+$isHtml = (bool) rcube_utils::get_input_value('_is_html', rcube_utils::INPUT_POST);
// fetch message body
-$message_body = get_input_value('_message', RCUBE_INPUT_POST, TRUE, $message_charset);
+$message_body = rcube_utils::get_input_value('_message', rcube_utils::INPUT_POST, TRUE, $message_charset);
if ($isHtml) {
- $bstyle = array();
+ $bstyle = array();
- if ($font_size = $RCMAIL->config->get('default_font_size')) {
- $bstyle[] = 'font-size: ' . $font_size;
- }
- if ($font_family = $RCMAIL->config->get('default_font')) {
- $bstyle[] = 'font-family: ' . rcmail::font_defs($font_family);
- }
+ if ($font_size = $RCMAIL->config->get('default_font_size')) {
+ $bstyle[] = 'font-size: ' . $font_size;
+ }
+ if ($font_family = $RCMAIL->config->get('default_font')) {
+ $bstyle[] = 'font-family: ' . rcmail::font_defs($font_family);
+ }
- // append doctype and html/body wrappers
- $message_body = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">'
- . "\r\n<html><body" . (!empty($bstyle) ? " style='" . implode($bstyle, '; ') . "'" : '') . ">\r\n"
- . $message_body;
+ // append doctype and html/body wrappers
+ $message_body = '<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN">'
+ . "\r\n<html><body" . (!empty($bstyle) ? " style='" . implode($bstyle, '; ') . "'" : '') . ">\r\n"
+ . $message_body;
}
if (!$savedraft) {
- if ($isHtml) {
- // remove signature's div ID
- $message_body = preg_replace('/\s*id="_rc_sig"/', '', $message_body);
+ if ($isHtml) {
+ // remove signature's div ID
+ $message_body = preg_replace('/\s*id="_rc_sig"/', '', $message_body);
+
+ // add inline css for blockquotes
+ $bstyle = 'padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px';
+ $message_body = preg_replace('/<blockquote>/',
+ '<blockquote type="cite" style="'.$bstyle.'">', $message_body);
+ }
- // add inline css for blockquotes
- $bstyle = 'padding-left:5px; border-left:#1010ff 2px solid; margin-left:5px';
- $message_body = preg_replace('/<blockquote>/',
- '<blockquote type="cite" style="'.$bstyle.'">', $message_body);
- }
+ // Check spelling before send
+ if ($RCMAIL->config->get('spellcheck_before_send') && $RCMAIL->config->get('enable_spellcheck')
+ && empty($COMPOSE['spell_checked']) && !empty($message_body)
+ ) {
+ $message_body = str_replace("\r\n", "\n", $message_body);
+ $spellchecker = new rcube_spellchecker(rcube_utils::get_input_value('_lang', rcube_utils::INPUT_GPC));
+ $spell_result = $spellchecker->check($message_body, $isHtml);
- // Check spelling before send
- if ($CONFIG['spellcheck_before_send'] && $CONFIG['enable_spellcheck']
- && empty($COMPOSE['spell_checked']) && !empty($message_body)
- ) {
- $message_body = str_replace("\r\n", "\n", $message_body);
- $spellchecker = new rcube_spellchecker(get_input_value('_lang', RCUBE_INPUT_GPC));
- $spell_result = $spellchecker->check($message_body, $isHtml);
+ $COMPOSE['spell_checked'] = true;
- $COMPOSE['spell_checked'] = true;
+ if (!$spell_result) {
+ $result = $isHtml ? $spellchecker->get_words() : $spellchecker->get_xml();
- if (!$spell_result) {
- $result = $isHtml ? $spellchecker->get_words() : $spellchecker->get_xml();
- $OUTPUT->show_message('mispellingsfound', 'error');
- $OUTPUT->command('spellcheck_resume', $isHtml, $result);
- $OUTPUT->send('iframe');
+ $OUTPUT->show_message('mispellingsfound', 'error');
+ $OUTPUT->command('spellcheck_resume', $isHtml, $result);
+ $OUTPUT->send('iframe');
+ }
}
- }
- // generic footer for all messages
- if ($footer = rcmail_generic_message_footer($isHtml)) {
- $footer = rcube_charset_convert($footer, RCMAIL_CHARSET, $message_charset);
- $message_body .= "\r\n" . $footer;
- }
+ // generic footer for all messages
+ if ($footer = rcmail_generic_message_footer($isHtml)) {
+ $footer = rcube_charset::convert($footer, RCUBE_CHARSET, $message_charset);
+ $message_body .= "\r\n" . $footer;
+ }
}
if ($isHtml) {
- $message_body .= "\r\n</body></html>\r\n";
+ $message_body .= "\r\n</body></html>\r\n";
}
// sort attachments to make sure the order is the same as in the UI (#1488423)
-$files = get_input_value('_attachments', RCUBE_INPUT_POST);
-if ($files) {
- $files = explode(',', $files);
- $files = array_flip($files);
- foreach ($files as $idx => $val) {
- $files[$idx] = $COMPOSE['attachments'][$idx];
- unset($COMPOSE['attachments'][$idx]);
- }
+if ($files = rcube_utils::get_input_value('_attachments', rcube_utils::INPUT_POST)) {
+ $files = explode(',', $files);
+ $files = array_flip($files);
+ foreach ($files as $idx => $val) {
+ $files[$idx] = $COMPOSE['attachments'][$idx];
+ unset($COMPOSE['attachments'][$idx]);
+ }
- $COMPOSE['attachments'] = array_merge(array_filter($files), $COMPOSE['attachments']);
+ $COMPOSE['attachments'] = array_merge(array_filter($files), $COMPOSE['attachments']);
}
// set line length for body wrapping
@@ -552,110 +342,142 @@ $MAIL_MIME = new Mail_mime("\r\n");
// Check if we have enough memory to handle the message in it
// It's faster than using files, so we'll do this if we only can
-if (is_array($COMPOSE['attachments']) && $CONFIG['smtp_server']
- && ($mem_limit = parse_bytes(ini_get('memory_limit'))))
-{
- $memory = function_exists('memory_get_usage') ? memory_get_usage() : 16*1024*1024; // safe value: 16MB
-
- foreach ($COMPOSE['attachments'] as $id => $attachment)
- $memory += $attachment['size'];
+if (is_array($COMPOSE['attachments']) && $RCMAIL->config->get('smtp_server')
+ && ($mem_limit = parse_bytes(ini_get('memory_limit')))
+) {
+ $memory = 0;
+ foreach ($COMPOSE['attachments'] as $id => $attachment) {
+ $memory += $attachment['size'];
+ }
- // Yeah, Net_SMTP needs up to 12x more memory, 1.33 is for base64
- if ($memory * 1.33 * 12 > $mem_limit)
- $MAIL_MIME->setParam('delay_file_io', true);
+ // Yeah, Net_SMTP needs up to 12x more memory, 1.33 is for base64
+ if (!rcube_utils::mem_check($memory * 1.33 * 12)) {
+ $MAIL_MIME->setParam('delay_file_io', true);
+ }
}
// For HTML-formatted messages, construct the MIME message with both
// the HTML part and the plain-text part
-
if ($isHtml) {
- $plugin = $RCMAIL->plugins->exec_hook('message_outgoing_body',
- array('body' => $message_body, 'type' => 'html', 'message' => $MAIL_MIME));
+ $plugin = $RCMAIL->plugins->exec_hook('message_outgoing_body',
+ array('body' => $message_body, 'type' => 'html', 'message' => $MAIL_MIME));
- $MAIL_MIME->setHTMLBody($plugin['body']);
+ $MAIL_MIME->setHTMLBody($plugin['body']);
- // replace emoticons
- $plugin['body'] = rcmail_replace_emoticons($plugin['body']);
+ // replace emoticons
+ $plugin['body'] = $RCMAIL->replace_emoticons($plugin['body']);
- // add a plain text version of the e-mail as an alternative part.
- $h2t = new rcube_html2text($plugin['body'], false, true, 0, $message_charset);
- $plainTextPart = rc_wordwrap($h2t->get_text(), $LINE_LENGTH, "\r\n", false, $message_charset);
- $plainTextPart = wordwrap($plainTextPart, 998, "\r\n", true);
+ // add a plain text version of the e-mail as an alternative part.
+ $h2t = new rcube_html2text($plugin['body'], false, true, 0, $message_charset);
+ $plainTextPart = rcube_mime::wordwrap($h2t->get_text(), $LINE_LENGTH, "\r\n", false, $message_charset);
+ $plainTextPart = wordwrap($plainTextPart, 998, "\r\n", true);
- // make sure all line endings are CRLF (#1486712)
- $plainTextPart = preg_replace('/\r?\n/', "\r\n", $plainTextPart);
+ // make sure all line endings are CRLF (#1486712)
+ $plainTextPart = preg_replace('/\r?\n/', "\r\n", $plainTextPart);
- $plugin = $RCMAIL->plugins->exec_hook('message_outgoing_body',
- array('body' => $plainTextPart, 'type' => 'alternative', 'message' => $MAIL_MIME));
+ $plugin = $RCMAIL->plugins->exec_hook('message_outgoing_body',
+ array('body' => $plainTextPart, 'type' => 'alternative', 'message' => $MAIL_MIME));
- $MAIL_MIME->setTXTBody($plugin['body']);
+ $MAIL_MIME->setTXTBody($plugin['body']);
- // look for "emoticon" images from TinyMCE and change their src paths to
- // be file paths on the server instead of URL paths.
- rcmail_fix_emoticon_paths($MAIL_MIME);
+ // look for "emoticon" images from TinyMCE and change their src paths to
+ // be file paths on the server instead of URL paths.
+ rcmail_fix_emoticon_paths($MAIL_MIME);
- // Extract image Data URIs into message attachments (#1488502)
- rcmail_extract_inline_images($MAIL_MIME, $from);
+ // Extract image Data URIs into message attachments (#1488502)
+ rcmail_extract_inline_images($MAIL_MIME, $from);
}
else {
- $plugin = $RCMAIL->plugins->exec_hook('message_outgoing_body',
- array('body' => $message_body, 'type' => 'plain', 'message' => $MAIL_MIME));
+ $plugin = $RCMAIL->plugins->exec_hook('message_outgoing_body',
+ array('body' => $message_body, 'type' => 'plain', 'message' => $MAIL_MIME));
- $message_body = $plugin['body'];
+ $message_body = $plugin['body'];
- // compose format=flowed content if enabled
- if ($flowed = ($savedraft || $RCMAIL->config->get('send_format_flowed', true)))
- $message_body = rcube_mime::format_flowed($message_body, min($LINE_LENGTH+2, 79), $message_charset);
- else
- $message_body = rc_wordwrap($message_body, $LINE_LENGTH, "\r\n", false, $message_charset);
+ // compose format=flowed content if enabled
+ if ($flowed = ($savedraft || $RCMAIL->config->get('send_format_flowed', true)))
+ $message_body = rcube_mime::format_flowed($message_body, min($LINE_LENGTH+2, 79), $message_charset);
+ else
+ $message_body = rcube_mime::wordwrap($message_body, $LINE_LENGTH, "\r\n", false, $message_charset);
- $message_body = wordwrap($message_body, 998, "\r\n", true);
+ $message_body = wordwrap($message_body, 998, "\r\n", true);
- $MAIL_MIME->setTXTBody($message_body, false, true);
+ $MAIL_MIME->setTXTBody($message_body, false, true);
}
// add stored attachments, if any
-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);
+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);
+
+ 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;
+ }
- $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);
- $MAIL_MIME->setHTMLBody($message_body);
+ // 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';
+ }
- if ($attachment['data'])
- $MAIL_MIME->addHTMLImage($attachment['data'], $attachment['mimetype'], $attachment['name'], false);
- else
- $MAIL_MIME->addHTMLImage($attachment['path'], $attachment['mimetype'], $attachment['name'], true);
- }
- else {
- $ctype = str_replace('image/pjpeg', 'image/jpeg', $attachment['mimetype']); // #1484914
- $file = $attachment['data'] ? $attachment['data'] : $attachment['path'];
+ $message_body = preg_replace($dispurl, ' src="cid:' . $cid . '" ', $message_body);
+
+ $MAIL_MIME->setHTMLBody($message_body);
- $MAIL_MIME->addAttachment($file,
- $ctype,
- $attachment['name'],
- ($attachment['data'] ? false : true),
- ($ctype == 'message/rfc822' ? '8bit' : 'base64'),
- 'attachment',
- '', '', '',
- $CONFIG['mime_param_folding'] ? 'quoted-printable' : NULL,
- $CONFIG['mime_param_folding'] == 2 ? 'quoted-printable' : NULL,
- '', RCMAIL_CHARSET
- );
+ if ($attachment['data'])
+ $MAIL_MIME->addHTMLImage($attachment['data'], $attachment['mimetype'], $attachment['name'], false, $cid);
+ else
+ $MAIL_MIME->addHTMLImage($attachment['path'], $attachment['mimetype'], $attachment['name'], true, $cid);
+ }
+ else {
+ $ctype = str_replace('image/pjpeg', 'image/jpeg', $attachment['mimetype']); // #1484914
+ $file = $attachment['data'] ? $attachment['data'] : $attachment['path'];
+ $folding = (int) $RCMAIL->config->get('mime_param_folding');
+
+ $MAIL_MIME->addAttachment($file,
+ $ctype,
+ $attachment['name'],
+ $attachment['data'] ? false : true,
+ $ctype == 'message/rfc822' ? '8bit' : 'base64',
+ 'attachment',
+ '', '', '',
+ $folding ? 'quoted-printable' : NULL,
+ $folding == 2 ? 'quoted-printable' : NULL,
+ '', RCUBE_CHARSET
+ );
+ }
}
- }
}
// choose transfer encoding for plain/text body
-if (preg_match('/[^\x00-\x7F]/', $MAIL_MIME->getTXTBody()))
- $transfer_encoding = $RCMAIL->config->get('force_7bit') ? 'quoted-printable' : '8bit';
-else
- $transfer_encoding = '7bit';
+if (preg_match('/[^\x00-\x7F]/', $MAIL_MIME->getTXTBody())) {
+ $text_charset = $message_charset;
+ $transfer_encoding = $RCMAIL->config->get('force_7bit') ? 'quoted-printable' : '8bit';
+}
+else {
+ $text_charset = '';
+ $transfer_encoding = '7bit';
+}
+
+if ($flowed) {
+ if (!$text_charset) {
+ $text_charset = 'US-ASCII';
+ }
+
+ $text_charset .= ";\r\n format=flowed";
+}
// encoding settings for mail composing
$MAIL_MIME->setParam('text_encoding', $transfer_encoding);
@@ -663,191 +485,432 @@ $MAIL_MIME->setParam('html_encoding', 'quoted-printable');
$MAIL_MIME->setParam('head_encoding', 'quoted-printable');
$MAIL_MIME->setParam('head_charset', $message_charset);
$MAIL_MIME->setParam('html_charset', $message_charset);
-$MAIL_MIME->setParam('text_charset', $message_charset . ($flowed ? ";\r\n format=flowed" : ''));
+$MAIL_MIME->setParam('text_charset', $text_charset);
// encoding subject header with mb_encode provides better results with asian characters
if (function_exists('mb_encode_mimeheader')) {
- mb_internal_encoding($message_charset);
- $headers['Subject'] = mb_encode_mimeheader($headers['Subject'],
- $message_charset, 'Q', "\r\n", 8);
- mb_internal_encoding(RCMAIL_CHARSET);
+ mb_internal_encoding($message_charset);
+ $headers['Subject'] = mb_encode_mimeheader($headers['Subject'],
+ $message_charset, 'Q', "\r\n", 8);
+ mb_internal_encoding(RCUBE_CHARSET);
}
// pass headers to message object
$MAIL_MIME->headers($headers);
// Begin SMTP Delivery Block
-if (!$savedraft)
-{
- // check 'From' address (identity may be incomplete)
- if (empty($from)) {
- $OUTPUT->show_message('nofromaddress', 'error');
- $OUTPUT->send('iframe');
- }
-
- // Handle Delivery Status Notification request
- if (!empty($_POST['_dsn'])) {
- $smtp_opts['dsn'] = true;
- }
-
- $sent = rcmail_deliver_message($MAIL_MIME, $from, $mailto,
- $smtp_error, $mailbody_file, $smtp_opts);
+if (!$savedraft) {
+ // check 'From' address (identity may be incomplete)
+ if (empty($from)) {
+ $OUTPUT->show_message('nofromaddress', 'error');
+ $OUTPUT->send('iframe');
+ }
- // return to compose page if sending failed
- if (!$sent) {
- // remove temp file
- if ($mailbody_file) {
- unlink($mailbody_file);
+ // Handle Delivery Status Notification request
+ if (!empty($_POST['_dsn'])) {
+ $smtp_opts['dsn'] = true;
}
- if ($smtp_error)
- $OUTPUT->show_message($smtp_error['label'], 'error', $smtp_error['vars']);
- else
- $OUTPUT->show_message('sendingfailed', 'error');
- $OUTPUT->send('iframe');
- }
+ $sent = $RCMAIL->deliver_message($MAIL_MIME, $from, $mailto,
+ $smtp_error, $mailbody_file, $smtp_opts);
- // save message sent time
- if (!empty($CONFIG['sendmail_delay']))
- $RCMAIL->user->save_prefs(array('last_message_time' => time()));
+ // return to compose page if sending failed
+ if (!$sent) {
+ // remove temp file
+ if ($mailbody_file) {
+ unlink($mailbody_file);
+ }
- // set replied/forwarded flag
- if ($COMPOSE['reply_uid'])
- $RCMAIL->storage->set_flag($COMPOSE['reply_uid'], 'ANSWERED', $COMPOSE['mailbox']);
- else if ($COMPOSE['forward_uid'])
- $RCMAIL->storage->set_flag($COMPOSE['forward_uid'], 'FORWARDED', $COMPOSE['mailbox']);
+ if ($smtp_error)
+ $OUTPUT->show_message($smtp_error['label'], 'error', $smtp_error['vars']);
+ else
+ $OUTPUT->show_message('sendingfailed', 'error');
+ $OUTPUT->send('iframe');
+ }
-} // End of SMTP Delivery Block
+ // save message sent time
+ if ($sendmail_delay) {
+ $RCMAIL->user->save_prefs(array('last_message_time' => time()));
+ }
+ // set replied/forwarded flag
+ if ($COMPOSE['reply_uid'])
+ $RCMAIL->storage->set_flag($COMPOSE['reply_uid'], 'ANSWERED', $COMPOSE['mailbox']);
+ else if ($COMPOSE['forward_uid'])
+ $RCMAIL->storage->set_flag($COMPOSE['forward_uid'], 'FORWARDED', $COMPOSE['mailbox']);
+}
// Determine which folder to save message
-if ($savedraft)
- $store_target = $CONFIG['drafts_mbox'];
-else if (!$RCMAIL->config->get('no_save_sent_messages'))
- $store_target = isset($_POST['_store_target']) ? get_input_value('_store_target', RCUBE_INPUT_POST) : $CONFIG['sent_mbox'];
+if ($savedraft) {
+ $store_target = $drafts_mbox;
+}
+else if (!$RCMAIL->config->get('no_save_sent_messages')) {
+ $store_target = rcube_utils::get_input_value('_store_target', rcube_utils::INPUT_POST);
+ if (!strlen($store_target)) {
+ $sore_target = $RCMAIL->config->get('sent_mbox');
+ }
+}
if ($store_target) {
- // check if folder is subscribed
- if ($RCMAIL->storage->folder_exists($store_target, true))
- $store_folder = true;
- // folder may be existing but not subscribed (#1485241)
- else if (!$RCMAIL->storage->folder_exists($store_target))
- $store_folder = $RCMAIL->storage->create_folder($store_target, true);
- else if ($RCMAIL->storage->subscribe($store_target))
- $store_folder = true;
-
- // append message to sent box
- if ($store_folder) {
- // message body in file
- if ($mailbody_file || $MAIL_MIME->getParam('delay_file_io')) {
- $headers = $MAIL_MIME->txtHeaders();
-
- // file already created
- if ($mailbody_file)
- $msg = $mailbody_file;
- else {
- $temp_dir = $RCMAIL->config->get('temp_dir');
- $mailbody_file = tempnam($temp_dir, 'rcmMsg');
- if (!PEAR::isError($msg = $MAIL_MIME->saveMessageBody($mailbody_file)))
- $msg = $mailbody_file;
- }
+ // check if folder is subscribed
+ if ($RCMAIL->storage->folder_exists($store_target, true)) {
+ $store_folder = true;
}
- else {
- $msg = $MAIL_MIME->getMessage();
- $headers = '';
+ // folder may be existing but not subscribed (#1485241)
+ else if (!$RCMAIL->storage->folder_exists($store_target)) {
+ $store_folder = $RCMAIL->storage->create_folder($store_target, true);
}
-
- if (PEAR::isError($msg))
- raise_error(array('code' => 650, 'type' => 'php',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Could not create message: ".$msg->getMessage()),
- TRUE, FALSE);
- else {
- $saved = $RCMAIL->storage->save_message($store_target, $msg, $headers,
- $mailbody_file ? true : false, array('SEEN'));
+ else if ($RCMAIL->storage->subscribe($store_target)) {
+ $store_folder = true;
}
- if ($mailbody_file) {
- unlink($mailbody_file);
- $mailbody_file = null;
- }
- }
+ // append message to sent box
+ if ($store_folder) {
+ // message body in file
+ if ($mailbody_file || $MAIL_MIME->getParam('delay_file_io')) {
+ $headers = $MAIL_MIME->txtHeaders();
- // raise error if saving failed
- if (!$saved) {
- raise_error(array('code' => 800, 'type' => 'imap',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Could not save message in $store_target"), TRUE, FALSE);
+ // file already created
+ if ($mailbody_file) {
+ $msg = $mailbody_file;
+ }
+ else {
+ $temp_dir = $RCMAIL->config->get('temp_dir');
+ $mailbody_file = tempnam($temp_dir, 'rcmMsg');
- if ($savedraft) {
- $OUTPUT->show_message('errorsaving', 'error');
- // start the auto-save timer again
- $OUTPUT->command('auto_save_start');
- $OUTPUT->send('iframe');
- }
- }
+ if (!PEAR::isError($msg = $MAIL_MIME->saveMessageBody($mailbody_file))) {
+ $msg = $mailbody_file;
+ }
+ }
+ }
+ else {
+ $msg = $MAIL_MIME->getMessage();
+ $headers = '';
+ }
- if ($olddraftmessageid) {
- // delete previous saved draft
- // @TODO: use message UID (remember to check UIDVALIDITY) to skip this SEARCH
- $delete_idx = $RCMAIL->storage->search_once($CONFIG['drafts_mbox'],
- 'HEADER Message-ID '.$olddraftmessageid);
+ if (PEAR::isError($msg)) {
+ rcube::raise_error(array('code' => 650, 'type' => 'php',
+ 'file' => __FILE__, 'line' => __LINE__,
+ 'message' => "Could not create message: ".$msg->getMessage()),
+ true, false);
+ }
+ else {
+ $saved = $RCMAIL->storage->save_message($store_target, $msg, $headers,
+ $mailbody_file ? true : false, array('SEEN'));
+ }
- if ($del_uid = $delete_idx->get_element('FIRST')) {
- $deleted = $RCMAIL->storage->delete_message($del_uid, $CONFIG['drafts_mbox']);
+ if ($mailbody_file) {
+ unlink($mailbody_file);
+ $mailbody_file = null;
+ }
+ }
- // raise error if deletion of old draft failed
- if (!$deleted)
- raise_error(array('code' => 800, 'type' => 'imap',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => "Could not delete message from ".$CONFIG['drafts_mbox']), TRUE, FALSE);
+ // raise error if saving failed
+ if (!$saved) {
+ rcube::raise_error(array('code' => 800, 'type' => 'imap',
+ 'file' => __FILE__, 'line' => __LINE__,
+ 'message' => "Could not save message in $store_target"), true, false);
+
+ if ($savedraft) {
+ $OUTPUT->show_message('errorsaving', 'error');
+ // start the auto-save timer again
+ $OUTPUT->command('auto_save_start');
+ $OUTPUT->send('iframe');
+ }
+ }
+
+ // delete previous saved draft
+ if ($saved && ($old_id = rcube_utils::get_input_value('_draft_saveid', rcube_utils::INPUT_POST))) {
+ $deleted = $RCMAIL->storage->delete_message($old_id, $drafts_mbox);
+
+ // raise error if deletion of old draft failed
+ if (!$deleted) {
+ rcube::raise_error(array('code' => 800, 'type' => 'imap',
+ 'file' => __FILE__, 'line' => __LINE__,
+ 'message' => "Could not delete message from $drafts_mbox"), true, false);
+ }
}
- }
}
// remove temp file
else if ($mailbody_file) {
- unlink($mailbody_file);
+ unlink($mailbody_file);
}
if ($savedraft) {
- $msgid = strtr($message_id, array('>' => '', '<' => ''));
+ // remember new draft-uid ($saved could be an UID or true/false here)
+ if ($saved && is_bool($saved)) {
+ $index = $RCMAIL->storage->search_once($drafts_mbox, 'HEADER Message-ID ' . $message_id);
+ $saved = @max($index->get());
+ }
- // remember new draft-uid ($saved could be an UID or TRUE here)
- if (is_bool($saved)) {
- $draft_idx = $RCMAIL->storage->search_once($CONFIG['drafts_mbox'], 'HEADER Message-ID '.$msgid);
- $saved = $draft_idx->get_element('FIRST');
- }
- $COMPOSE['param']['draft_uid'] = $saved;
- $plugin = $RCMAIL->plugins->exec_hook('message_draftsaved', array('msgid' => $msgid, 'uid' => $saved, 'folder' => $store_target));
+ if ($saved) {
+ $plugin = $RCMAIL->plugins->exec_hook('message_draftsaved',
+ array('msgid' => $message_id, 'uid' => $saved, 'folder' => $store_target));
- // display success
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'messagesaved', 'confirmation');
+ // display success
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'messagesaved', 'confirmation');
- // update "_draft_saveid" and the "cmp_hash" to prevent "Unsaved changes" warning
- $OUTPUT->command('set_draft_id', $msgid);
- $OUTPUT->command('compose_field_hash', true);
+ // update "_draft_saveid" and the "cmp_hash" to prevent "Unsaved changes" warning
+ $COMPOSE['param']['draft_uid'] = $plugin['uid'];
+ $OUTPUT->command('set_draft_id', $plugin['uid']);
+ $OUTPUT->command('compose_field_hash', true);
+ }
- // start the auto-save timer again
- $OUTPUT->command('auto_save_start');
+ // start the auto-save timer again
+ $OUTPUT->command('auto_save_start');
}
else {
- $folders = array();
+ $folders = array();
- if ($COMPOSE['mode'] == 'reply' || $COMPOSE['mode'] == 'forward')
- $folders[] = $COMPOSE['mailbox'];
+ if ($COMPOSE['mode'] == 'reply' || $COMPOSE['mode'] == 'forward') {
+ $folders[] = $COMPOSE['mailbox'];
+ }
- rcmail_compose_cleanup($COMPOSE_ID);
+ rcmail_compose_cleanup($COMPOSE_ID);
+ $OUTPUT->command('remove_compose_data', $COMPOSE_ID);
- if ($store_folder && !$saved)
- $OUTPUT->command('sent_successfully', 'error', rcube_label('errorsavingsent'), $folders);
- else {
- if ($store_folder) {
- $folders[] = $store_target;
+ if ($store_folder && !$saved) {
+ $OUTPUT->command('sent_successfully', 'error', $RCMAIL->gettext('errorsavingsent'), $folders);
+ }
+ else if ($store_folder) {
+ $folders[] = $store_target;
}
- $OUTPUT->command('sent_successfully', 'confirmation', rcube_label('messagesent'), $folders);
- }
+ $OUTPUT->command('sent_successfully', 'confirmation', $RCMAIL->gettext('messagesent'), $folders);
}
$OUTPUT->send('iframe');
+
+
+/****** message sending functions ********/
+
+// encrypt parts of the header
+function rcmail_encrypt_header($what)
+{
+ global $RCMAIL;
+
+ if (!$RCMAIL->config->get('http_received_header_encrypt')) {
+ return $what;
+ }
+
+ return $RCMAIL->encrypt($what);
+}
+
+// get identity record
+function rcmail_get_identity($id)
+{
+ global $RCMAIL, $message_charset;
+
+ if ($sql_arr = $RCMAIL->user->get_identity($id)) {
+ $out = $sql_arr;
+
+ if ($message_charset != RCUBE_CHARSET) {
+ foreach ($out as $k => $v) {
+ $out[$k] = rcube_charset::convert($v, RCUBE_CHARSET, $message_charset);
+ }
+ }
+
+ $out['mailto'] = $sql_arr['email'];
+ $out['string'] = format_email_recipient($sql_arr['email'], $sql_arr['name']);
+
+ return $out;
+ }
+
+ return false;
+}
+
+/**
+ * go from this:
+ * <img src="http[s]://.../tiny_mce/plugins/emotions/images/smiley-cool.gif" border="0" alt="Cool" title="Cool" />
+ *
+ * to this:
+ *
+ * <img src="/path/on/server/.../tiny_mce/plugins/emotions/images/smiley-cool.gif" border="0" alt="Cool" title="Cool" />
+ */
+function rcmail_fix_emoticon_paths($mime_message)
+{
+ global $RCMAIL;
+
+ $body = $mime_message->getHTMLBody();
+
+ // remove any null-byte characters before parsing
+ $body = preg_replace('/\x00/', '', $body);
+
+ $searchstr = 'program/js/tiny_mce/plugins/emotions/img/';
+ $offset = 0;
+
+ // keep track of added images, so they're only added once
+ $included_images = array();
+
+ if (preg_match_all('# src=[\'"]([^\'"]+)#', $body, $matches, PREG_OFFSET_CAPTURE)) {
+ foreach ($matches[1] as $m) {
+ // find emoticon image tags
+ if (preg_match('#'.$searchstr.'(.*)$#', $m[0], $imatches)) {
+ $image_name = $imatches[1];
+
+ // sanitize image name so resulting attachment doesn't leave images dir
+ $image_name = preg_replace('/[^a-zA-Z0-9_\.\-]/i', '', $image_name);
+ $img_file = INSTALL_PATH . '/' . $searchstr . $image_name;
+
+ if (! in_array($image_name, $included_images)) {
+ // add the image to the MIME message
+ if (!$mime_message->addHTMLImage($img_file, 'image/gif', '', true, $image_name)) {
+ $RCMAIL->output->show_message("emoticonerror", 'error');
+ }
+
+ array_push($included_images, $image_name);
+ }
+
+ $body = substr_replace($body, $img_file, $m[1] + $offset, strlen($m[0]));
+ $offset += strlen($img_file) - strlen($m[0]);
+ }
+ }
+ }
+
+ $mime_message->setHTMLBody($body);
+}
+
+/**
+ * Extract image attachments from HTML content (data URIs)
+ */
+function rcmail_extract_inline_images($mime_message, $from)
+{
+ $body = $mime_message->getHTMLBody();
+ $offset = 0;
+ $list = array();
+ $domain = 'localhost';
+ $regexp = '#img[^>]+src=[\'"](data:([^;]*);base64,([a-z0-9+/=\r\n]+))([\'"])#i';
+
+ if (preg_match_all($regexp, $body, $matches, PREG_OFFSET_CAPTURE)) {
+ // get domain for the Content-ID, must be the same as in Mail_Mime::get()
+ if (preg_match('#@([0-9a-zA-Z\-\.]+)#', $from, $m)) {
+ $domain = $m[1];
+ }
+
+ foreach ($matches[1] as $idx => $m) {
+ $data = preg_replace('/\r\n/', '', $matches[3][$idx][0]);
+ $data = base64_decode($data);
+
+ if (empty($data)) {
+ continue;
+ }
+
+ $hash = md5($data) . '@' . $domain;
+ $mime_type = $matches[2][$idx][0];
+ $name = $list[$hash];
+
+ if (empty($mime_type)) {
+ $mime_type = rcube_mime::image_content_type($data);
+ }
+
+ // add the image to the MIME message
+ if (!$name) {
+ $ext = preg_replace('#^[^/]+/#', '', $mime_type);
+ $name = substr($hash, 0, 8) . '.' . $ext;
+ $list[$hash] = $name;
+
+ $mime_message->addHTMLImage($data, $mime_type, $name, false, $hash);
+ }
+
+ $body = substr_replace($body, $name, $m[1] + $offset, strlen($m[0]));
+ $offset += strlen($name) - strlen($m[0]);
+ }
+ }
+
+ $mime_message->setHTMLBody($body);
+}
+
+/**
+ * Parse and cleanup email address input (and count addresses)
+ *
+ * @param string Address input
+ * @param boolean Do count recipients (saved in global $RECIPIENT_COUNT)
+ * @param boolean Validate addresses (errors saved in global $EMAIL_FORMAT_ERROR)
+ * @return string Canonical recipients string separated by comma
+ */
+function rcmail_email_input_format($mailto, $count=false, $check=true)
+{
+ global $RCMAIL, $EMAIL_FORMAT_ERROR, $RECIPIENT_COUNT;
+
+ // simplified email regexp, supporting quoted local part
+ $email_regexp = '(\S+|("[^"]+"))@\S+';
+
+ $delim = trim($RCMAIL->config->get('recipients_separator', ','));
+ $regexp = array("/[,;$delim]\s*[\r\n]+/", '/[\r\n]+/', "/[,;$delim]\s*\$/m", '/;/', '/(\S{1})(<'.$email_regexp.'>)/U');
+ $replace = array($delim.' ', ', ', '', $delim, '\\1 \\2');
+
+ // replace new lines and strip ending ', ', make address input more valid
+ $mailto = trim(preg_replace($regexp, $replace, $mailto));
+ $items = rcube_utils::explode_quoted_string($delim, $mailto);
+ $result = array();
+
+ foreach ($items as $item) {
+ $item = trim($item);
+ // address in brackets without name (do nothing)
+ if (preg_match('/^<'.$email_regexp.'>$/', $item)) {
+ $item = rcube_utils::idn_to_ascii(trim($item, '<>'));
+ $result[] = $item;
+ }
+ // address without brackets and without name (add brackets)
+ else if (preg_match('/^'.$email_regexp.'$/', $item)) {
+ $item = rcube_utils::idn_to_ascii($item);
+ $result[] = $item;
+ }
+ // address with name (handle name)
+ else if (preg_match('/<*'.$email_regexp.'>*$/', $item, $matches)) {
+ $address = $matches[0];
+ $name = trim(str_replace($address, '', $item));
+ if ($name[0] == '"' && $name[count($name)-1] == '"') {
+ $name = substr($name, 1, -1);
+ }
+ $name = stripcslashes($name);
+ $address = rcube_utils::idn_to_ascii(trim($address, '<>'));
+ $result[] = format_email_recipient($address, $name);
+ $item = $address;
+ }
+ else if (trim($item)) {
+ continue;
+ }
+
+ // check address format
+ $item = trim($item, '<>');
+ if ($item && $check && !rcube_utils::check_email($item)) {
+ $EMAIL_FORMAT_ERROR = $item;
+ return;
+ }
+ }
+
+ if ($count) {
+ $RECIPIENT_COUNT += count($result);
+ }
+
+ return implode(', ', $result);
+}
+
+
+function rcmail_generic_message_footer($isHtml)
+{
+ global $RCMAIL;
+
+ if ($isHtml && ($file = $RCMAIL->config->get('generic_message_footer_html'))) {
+ $html_footer = true;
+ }
+ else {
+ $file = $RCMAIL->config->get('generic_message_footer');
+ $html_footer = false;
+ }
+
+ if ($file && realpath($file)) {
+ // sanity check
+ if (!preg_match('/\.(php|ini|conf)$/', $file) && strpos($file, '/etc/') === false) {
+ $footer = file_get_contents($file);
+ if ($isHtml && !$html_footer) {
+ $footer = '<pre>' . $footer . '</pre>';
+ }
+ return $footer;
+ }
+ }
+
+ return false;
+}
diff --git a/program/steps/mail/sendmdn.inc b/program/steps/mail/sendmdn.inc
index 01d0807be..727e75bb9 100644
--- a/program/steps/mail/sendmdn.inc
+++ b/program/steps/mail/sendmdn.inc
@@ -5,7 +5,7 @@
| program/steps/mail/sendmdn.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2008-2009, The Roundcube Dev Team |
+ | Copyright (C) 2008-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -20,23 +20,24 @@
*/
// only process ajax requests
-if (!$OUTPUT->ajax_call)
- return;
+if (!$OUTPUT->ajax_call) {
+ return;
+}
if (!empty($_POST['_uid'])) {
- $sent = rcmail_send_mdn(get_input_value('_uid', RCUBE_INPUT_POST), $smtp_error);
+ $sent = rcmail_send_mdn(rcube_utils::get_input_value('_uid', rcube_utils::INPUT_POST), $smtp_error);
}
// show either confirm or error message
if ($sent) {
- $OUTPUT->set_env('mdn_request', false);
- $OUTPUT->show_message('receiptsent', 'confirmation');
+ $OUTPUT->set_env('mdn_request', false);
+ $OUTPUT->show_message('receiptsent', 'confirmation');
}
else if ($smtp_error) {
- $OUTPUT->show_message($smtp_error['label'], 'error', $smtp_error['vars']);
+ $OUTPUT->show_message($smtp_error['label'], 'error', $smtp_error['vars']);
}
else {
- $OUTPUT->show_message('errorsendingreceipt', 'error');
+ $OUTPUT->show_message('errorsendingreceipt', 'error');
}
$OUTPUT->send();
diff --git a/program/steps/mail/show.inc b/program/steps/mail/show.inc
index 9d85f9c8f..9498d1dc5 100644
--- a/program/steps/mail/show.inc
+++ b/program/steps/mail/show.inc
@@ -5,7 +5,7 @@
| program/steps/mail/show.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2009, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -22,312 +22,333 @@
$PRINT_MODE = $RCMAIL->action == 'print' ? TRUE : FALSE;
// Read browser capabilities and store them in session
-if ($caps = get_input_value('_caps', RCUBE_INPUT_GET)) {
- $browser_caps = array();
- foreach (explode(',', $caps) as $cap) {
- $cap = explode('=', $cap);
- $browser_caps[$cap[0]] = $cap[1];
- }
- $_SESSION['browser_caps'] = $browser_caps;
+if ($caps = rcube_utils::get_input_value('_caps', rcube_utils::INPUT_GET)) {
+ $browser_caps = array();
+ foreach (explode(',', $caps) as $cap) {
+ $cap = explode('=', $cap);
+ $browser_caps[$cap[0]] = $cap[1];
+ }
+ $_SESSION['browser_caps'] = $browser_caps;
}
-$uid = get_input_value('_uid', RCUBE_INPUT_GET);
+$uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_GET);
$mbox_name = $RCMAIL->storage->get_folder();
// similar code as in program/steps/mail/get.inc
if ($uid) {
- // set message format (need to be done before rcube_message construction)
- if (!empty($_GET['_format'])) {
- $prefer_html = $_GET['_format'] == 'html';
- $RCMAIL->config->set('prefer_html', $prefer_html);
- $_SESSION['msg_formats'][$mbox_name.':'.$uid] = $prefer_html;
- }
- else if (isset($_SESSION['msg_formats'][$mbox_name.':'.$uid])) {
- $RCMAIL->config->set('prefer_html', $_SESSION['msg_formats'][$mbox_name.':'.$uid]);
- }
-
- $MESSAGE = new rcube_message($uid);
-
- // if message not found (wrong UID)...
- if (empty($MESSAGE->headers)) {
- rcmail_message_error($uid);
- }
-
-
- // show images?
- rcmail_check_safe($MESSAGE);
-
- // set message charset as default
- if (!empty($MESSAGE->headers->charset))
- $RCMAIL->storage->set_charset($MESSAGE->headers->charset);
-
- $OUTPUT->set_pagetitle(abbreviate_string($MESSAGE->subject, 128, '...', true));
-
- // give message uid to the client
- $OUTPUT->set_env('uid', $MESSAGE->uid);
- // set environement
- $OUTPUT->set_env('safemode', $MESSAGE->is_safe);
- $OUTPUT->set_env('sender', $MESSAGE->sender['string']);
- $OUTPUT->set_env('permaurl', rcmail_url('show', array('_uid' => $MESSAGE->uid, '_mbox' => $mbox_name)));
- $OUTPUT->set_env('delimiter', $RCMAIL->storage->get_hierarchy_delimiter());
- $OUTPUT->set_env('mailbox', $mbox_name);
- $OUTPUT->set_env('compose_extwin', $RCMAIL->config->get('compose_extwin',false));
-
- // mimetypes supported by the browser (default settings)
- $mimetypes = (array)$RCMAIL->config->get('client_mimetypes');
-
- // Remove unsupported types, which makes that attachment which cannot be
- // displayed in a browser will be downloaded directly without displaying an overlay page
- if (empty($_SESSION['browser_caps']['pdf']) && ($key = array_search('application/pdf', $mimetypes)) !== false) {
- unset($mimetypes[$key]);
- }
- if (empty($_SESSION['browser_caps']['flash']) && ($key = array_search('application/x-shockwave-flash', $mimetypes)) !== false) {
- unset($mimetypes[$key]);
- }
- if (empty($_SESSION['browser_caps']['tif']) && ($key = array_search('image/tiff', $mimetypes)) !== false) {
- // we can convert tiff to jpeg
- if (!$RCMAIL->config->get('im_convert_path')) {
- unset($mimetypes[$key]);
+ // set message format (need to be done before rcube_message construction)
+ if (!empty($_GET['_format'])) {
+ $prefer_html = $_GET['_format'] == 'html';
+ $RCMAIL->config->set('prefer_html', $prefer_html);
+ $_SESSION['msg_formats'][$mbox_name.':'.$uid] = $prefer_html;
}
- }
-
- $OUTPUT->set_env('mimetypes', array_values($mimetypes));
-
- if ($CONFIG['drafts_mbox'])
- $OUTPUT->set_env('drafts_mailbox', $CONFIG['drafts_mbox']);
- if ($CONFIG['trash_mbox'])
- $OUTPUT->set_env('trash_mailbox', $CONFIG['trash_mbox']);
- if ($CONFIG['junk_mbox'])
- $OUTPUT->set_env('junk_mailbox', $CONFIG['junk_mbox']);
- if ($CONFIG['delete_junk'])
- $OUTPUT->set_env('delete_junk', true);
- if ($CONFIG['flag_for_deletion'])
- $OUTPUT->set_env('flag_for_deletion', true);
- if ($CONFIG['read_when_deleted'])
- $OUTPUT->set_env('read_when_deleted', true);
- if ($CONFIG['skip_deleted'])
- $OUTPUT->set_env('skip_deleted', true);
- if ($CONFIG['display_next'])
- $OUTPUT->set_env('display_next', true);
- if ($MESSAGE->headers->get('list-post', false))
- $OUTPUT->set_env('list_post', true);
- if ($CONFIG['forward_attachment'])
- $OUTPUT->set_env('forward_attachment', true);
-
- if (!$OUTPUT->ajax_call)
- $OUTPUT->add_label('checkingmail', 'deletemessage', 'movemessagetotrash',
- 'movingmessage', 'deletingmessage', 'markingmessage', 'replyall', 'replylist');
-
- $prefer_html = $RCMAIL->config->get('prefer_html');
- if ($MESSAGE->has_html_part()) {
- $OUTPUT->set_env('optional_format', $prefer_html ? 'text' : 'html');
- }
-
- // check for unset disposition notification
- if ($MESSAGE->headers->mdn_to
- && empty($MESSAGE->headers->flags['MDNSENT'])
- && empty($MESSAGE->headers->flags['SEEN'])
- && ($RCMAIL->storage->check_permflag('MDNSENT') || $RCMAIL->storage->check_permflag('*'))
- && $mbox_name != $CONFIG['drafts_mbox']
- && $mbox_name != $CONFIG['sent_mbox']
- ) {
- $mdn_cfg = intval($CONFIG['mdn_requests']);
-
- if ($mdn_cfg == 1 || (($mdn_cfg == 3 || $mdn_cfg == 4) && rcmail_contact_exists($MESSAGE->sender['mailto']))) {
- // Send MDN
- if (rcmail_send_mdn($MESSAGE, $smtp_error))
- $OUTPUT->show_message('receiptsent', 'confirmation');
- else if ($smtp_error)
- $OUTPUT->show_message($smtp_error['label'], 'error', $smtp_error['vars']);
- else
- $OUTPUT->show_message('errorsendingreceipt', 'error');
+ else if (isset($_SESSION['msg_formats'][$mbox_name.':'.$uid])) {
+ $RCMAIL->config->set('prefer_html', $_SESSION['msg_formats'][$mbox_name.':'.$uid]);
}
- else if ($mdn_cfg != 2 && $mdn_cfg != 4) {
- // Ask user
- $OUTPUT->add_label('mdnrequest');
- $OUTPUT->set_env('mdn_request', true);
+
+ $MESSAGE = new rcube_message($uid);
+
+ // if message not found (wrong UID)...
+ if (empty($MESSAGE->headers)) {
+ rcmail_message_error($uid);
}
- }
-
- if (empty($MESSAGE->headers->flags['SEEN'])
- && ($RCMAIL->action == 'show' || ($RCMAIL->action == 'preview' && intval($CONFIG['preview_pane_mark_read']) == 0))
- ) {
- $RCMAIL->plugins->exec_hook('message_read', array('uid' => $MESSAGE->uid,
- 'mailbox' => $mbox_name, 'message' => $MESSAGE));
- }
-}
+ // show images?
+ rcmail_check_safe($MESSAGE);
-function rcmail_message_attachments($attrib)
-{
- global $PRINT_MODE, $MESSAGE, $RCMAIL;
-
- $out = $ol = '';
- $attachments = array();
-
- if (sizeof($MESSAGE->attachments)) {
- foreach ($MESSAGE->attachments as $attach_prop) {
- $filename = rcmail_attachment_name($attach_prop, true);
-
- if ($PRINT_MODE) {
- $size = $RCMAIL->message_part_size($attach_prop);
- $ol .= html::tag('li', null, Q(sprintf("%s (%s)", $filename, $size)));
- }
- else {
- if ($attrib['maxlength'] && mb_strlen($filename) > $attrib['maxlength']) {
- $title = $filename;
- $filename = abbreviate_string($filename, $attrib['maxlength']);
+ // set message charset as default
+ if (!empty($MESSAGE->headers->charset)) {
+ $RCMAIL->storage->set_charset($MESSAGE->headers->charset);
+ }
+
+ $OUTPUT->set_pagetitle(abbreviate_string($MESSAGE->subject, 128, '...', true));
+
+ // set message environment
+ $OUTPUT->set_env('uid', $MESSAGE->uid);
+ $OUTPUT->set_env('safemode', $MESSAGE->is_safe);
+ $OUTPUT->set_env('sender', $MESSAGE->sender['string']);
+ $OUTPUT->set_env('mailbox', $mbox_name);
+ $OUTPUT->set_env('permaurl', $RCMAIL->url(array('_action' => 'show', '_uid' => $MESSAGE->uid, '_mbox' => $mbox_name)));
+
+ if ($MESSAGE->headers->get('list-post', false)) {
+ $OUTPUT->set_env('list_post', true);
+ }
+
+ // set environment
+ $OUTPUT->set_env('delimiter', $RCMAIL->storage->get_hierarchy_delimiter());
+
+ // set configuration
+ $RCMAIL->set_env_config(array('delete_junk', 'flag_for_deletion', 'read_when_deleted',
+ 'skip_deleted', 'display_next', 'compose_extwin', 'forward_attachment'));
+
+ // set special folders
+ foreach (array('drafts', 'trash', 'junk') as $mbox) {
+ if ($folder = $RCMAIL->config->get($mbox . '_mbox')) {
+ $OUTPUT->set_env($mbox . '_mailbox', $folder);
}
- else {
- $title = '';
+ }
+
+ // mimetypes supported by the browser (default settings)
+ $mimetypes = (array)$RCMAIL->config->get('client_mimetypes');
+
+ // Remove unsupported types, which makes that attachment which cannot be
+ // displayed in a browser will be downloaded directly without displaying an overlay page
+ if (empty($_SESSION['browser_caps']['pdf']) && ($key = array_search('application/pdf', $mimetypes)) !== false) {
+ unset($mimetypes[$key]);
+ }
+ if (empty($_SESSION['browser_caps']['flash']) && ($key = array_search('application/x-shockwave-flash', $mimetypes)) !== false) {
+ unset($mimetypes[$key]);
+ }
+ if (empty($_SESSION['browser_caps']['tif']) && ($key = array_search('image/tiff', $mimetypes)) !== false) {
+ // we can convert tiff to jpeg
+ if (!$RCMAIL->config->get('im_convert_path')) {
+ unset($mimetypes[$key]);
}
+ }
- $mimetype = rcmail_fix_mimetype($attach_prop->mimetype);
- $class = rcmail_filetype2classname($mimetype, $filename);
- $id = 'attach' . $attach_prop->mime_id;
- $link = html::a(array(
- 'href' => $MESSAGE->get_part_url($attach_prop->mime_id, false),
- 'onclick' => sprintf('return %s.command(\'load-attachment\',\'%s\',this)',
- JS_OBJECT_NAME, $attach_prop->mime_id),
- 'onmouseover' => $title ? '' : 'rcube_webmail.long_subject_title_ex(this, 0)',
- 'title' => Q($title),
- ), Q($filename));
- $ol .= html::tag('li', array('class' => $class, 'id' => $id), $link);
-
- $attachments[$attach_prop->mime_id] = $mimetype;
- }
+ $OUTPUT->set_env('mimetypes', array_values($mimetypes));
+
+ if ($MESSAGE->has_html_part()) {
+ $prefer_html = $RCMAIL->config->get('prefer_html');
+ $OUTPUT->set_env('optional_format', $prefer_html ? 'text' : 'html');
+ }
+
+ if (!$OUTPUT->ajax_call) {
+ $OUTPUT->add_label('checkingmail', 'deletemessage', 'movemessagetotrash',
+ 'movingmessage', 'deletingmessage', 'markingmessage', 'replyall', 'replylist');
}
- $out = html::tag('ul', $attrib, $ol, html::$common_attrib);
- $RCMAIL->output->set_env('attachments', $attachments);
- }
+ // check for unset disposition notification
+ if ($MESSAGE->headers->mdn_to
+ && empty($MESSAGE->headers->flags['MDNSENT'])
+ && empty($MESSAGE->headers->flags['SEEN'])
+ && ($RCMAIL->storage->check_permflag('MDNSENT') || $RCMAIL->storage->check_permflag('*'))
+ && $mbox_name != $RCMAIL->config->get('drafts_mbox')
+ && $mbox_name != $RCMAIL->config->get('sent_mbox')
+ ) {
+ $mdn_cfg = intval($RCMAIL->config->get('mdn_requests'));
+
+ if ($mdn_cfg == 1 || (($mdn_cfg == 3 || $mdn_cfg == 4) && rcmail_contact_exists($MESSAGE->sender['mailto']))) {
+ // Send MDN
+ if (rcmail_send_mdn($MESSAGE, $smtp_error))
+ $OUTPUT->show_message('receiptsent', 'confirmation');
+ else if ($smtp_error)
+ $OUTPUT->show_message($smtp_error['label'], 'error', $smtp_error['vars']);
+ else
+ $OUTPUT->show_message('errorsendingreceipt', 'error');
+ }
+ else if ($mdn_cfg != 2 && $mdn_cfg != 4) {
+ // Ask user
+ $OUTPUT->add_label('mdnrequest');
+ $OUTPUT->set_env('mdn_request', true);
+ }
+ }
- return $out;
+ if (empty($MESSAGE->headers->flags['SEEN'])
+ && ($RCMAIL->action == 'show' || ($RCMAIL->action == 'preview' && intval($RCMAIL->config->get('preview_pane_mark_read')) == 0))
+ ) {
+ $RCMAIL->plugins->exec_hook('message_read', array(
+ 'uid' => $MESSAGE->uid,
+ 'mailbox' => $mbox_name,
+ 'message' => $MESSAGE,
+ ));
+ }
}
-function rcmail_remote_objects_msg()
+
+$OUTPUT->add_handlers(array(
+ 'messageattachments' => 'rcmail_message_attachments',
+ 'mailboxname' => 'rcmail_mailbox_name_display',
+ 'messageobjects' => 'rcmail_message_objects',
+ 'contactphoto' => 'rcmail_message_contactphoto',
+));
+
+
+if ($RCMAIL->action == 'print' && $OUTPUT->template_exists('messageprint'))
+ $OUTPUT->send('messageprint', false);
+else if ($RCMAIL->action == 'preview' && $OUTPUT->template_exists('messagepreview'))
+ $OUTPUT->send('messagepreview', false);
+else
+ $OUTPUT->send('message', false);
+
+
+// mark message as read
+if ($MESSAGE && $MESSAGE->headers && empty($MESSAGE->headers->flags['SEEN']) &&
+ ($RCMAIL->action == 'show' || ($RCMAIL->action == 'preview' && intval($RCMAIL->config->get('preview_pane_mark_read')) == 0))
+) {
+ if ($RCMAIL->storage->set_flag($MESSAGE->uid, 'SEEN')) {
+ if ($count = rcmail_get_unseen_count($mbox_name)) {
+ rcmail_set_unseen_count($mbox_name, $count - 1);
+ }
+ }
+}
+
+exit;
+
+
+
+function rcmail_message_attachments($attrib)
{
- global $MESSAGE, $RCMAIL;
+ global $PRINT_MODE, $MESSAGE, $RCMAIL;
+
+ $out = $ol = '';
+ $attachments = array();
+
+ if (sizeof($MESSAGE->attachments)) {
+ foreach ($MESSAGE->attachments as $attach_prop) {
+ $filename = rcmail_attachment_name($attach_prop, true);
+
+ if ($PRINT_MODE) {
+ $size = $RCMAIL->message_part_size($attach_prop);
+ $ol .= html::tag('li', null, rcube::Q(sprintf("%s (%s)", $filename, $size)));
+ }
+ else {
+ if ($attrib['maxlength'] && mb_strlen($filename) > $attrib['maxlength']) {
+ $title = $filename;
+ $filename = abbreviate_string($filename, $attrib['maxlength']);
+ }
+ else {
+ $title = '';
+ }
+
+ $mimetype = rcmail_fix_mimetype($attach_prop->mimetype);
+ $class = rcube_utils::file2class($mimetype, $filename);
+ $id = 'attach' . $attach_prop->mime_id;
+ $link = html::a(array(
+ 'href' => $MESSAGE->get_part_url($attach_prop->mime_id, false),
+ 'onclick' => sprintf('return %s.command(\'load-attachment\',\'%s\',this)',
+ rcmail_output::JS_OBJECT_NAME, $attach_prop->mime_id),
+ 'onmouseover' => $title ? '' : 'rcube_webmail.long_subject_title_ex(this, 0)',
+ 'title' => rcube::Q($title),
+ ), rcube::Q($filename));
+
+ $ol .= html::tag('li', array('class' => $class, 'id' => $id), $link);
+
+ $attachments[$attach_prop->mime_id] = $mimetype;
+ }
+ }
- $attrib['id'] = 'remote-objects-message';
- $attrib['class'] = 'notice';
- $attrib['style'] = 'display: none';
+ $out = html::tag('ul', $attrib, $ol, html::$common_attrib);
- $msg = Q(rcube_label('blockedimages')) . '&nbsp;';
- $msg .= html::a(array('href' => "#loadimages", 'onclick' => JS_OBJECT_NAME.".command('load-images')"), Q(rcube_label('showimages')));
+ $RCMAIL->output->set_env('attachments', $attachments);
+ }
+
+ return $out;
+}
+
+function rcmail_remote_objects_msg()
+{
+ global $MESSAGE, $RCMAIL;
+
+ $attrib['id'] = 'remote-objects-message';
+ $attrib['class'] = 'notice';
+ $attrib['style'] = 'display: none';
+
+ $msg = rcube::Q($RCMAIL->gettext('blockedimages')) . '&nbsp;';
+ $msg .= html::a(array(
+ 'href' => "#loadimages",
+ 'onclick' => rcmail_output::JS_OBJECT_NAME.".command('load-images')"
+ ),
+ rcube::Q($RCMAIL->gettext('showimages')));
+
+ // add link to save sender in addressbook and reload message
+ if ($MESSAGE->sender['mailto'] && $RCMAIL->config->get('show_images') == 1) {
+ $msg .= ' ' . html::a(array(
+ 'href' => "#alwaysload",
+ 'onclick' => rcmail_output::JS_OBJECT_NAME.".command('always-load')",
+ 'style' => "white-space:nowrap"
+ ),
+ rcube::Q($RCMAIL->gettext(array('name' => 'alwaysshow', 'vars' => array('sender' => $MESSAGE->sender['mailto'])))));
+ }
- // add link to save sender in addressbook and reload message
- if ($MESSAGE->sender['mailto'] && $RCMAIL->config->get('show_images') == 1) {
- $msg .= ' ' . html::a(array('href' => "#alwaysload", 'onclick' => JS_OBJECT_NAME.".command('always-load')", 'style' => "white-space:nowrap"),
- Q(rcube_label(array('name' => 'alwaysshow', 'vars' => array('sender' => $MESSAGE->sender['mailto'])))));
- }
+ $RCMAIL->output->add_gui_object('remoteobjectsmsg', $attrib['id']);
- $RCMAIL->output->add_gui_object('remoteobjectsmsg', $attrib['id']);
- return html::div($attrib, $msg);
+ return html::div($attrib, $msg);
}
function rcmail_message_buttons()
{
- global $RCMAIL;
+ global $RCMAIL;
- $mbox = $RCMAIL->storage->get_folder();
- $delim = $RCMAIL->storage->get_hierarchy_delimiter();
- $dbox = $RCMAIL->config->get('drafts_mbox');
+ $mbox = $RCMAIL->storage->get_folder();
+ $delim = $RCMAIL->storage->get_hierarchy_delimiter();
+ $dbox = $RCMAIL->config->get('drafts_mbox');
- // the message is not a draft
- if ($mbox != $dbox && strpos($mbox, $dbox.$delim) !== 0) {
- return '';
- }
+ // the message is not a draft
+ if ($mbox != $dbox && strpos($mbox, $dbox.$delim) !== 0) {
+ return '';
+ }
- $attrib['id'] = 'message-buttons';
- $attrib['class'] = 'notice';
+ $attrib['id'] = 'message-buttons';
+ $attrib['class'] = 'notice';
- $msg = Q(rcube_label('isdraft')) . '&nbsp;';
- $msg .= html::a(array('href' => "#edit", 'onclick' => JS_OBJECT_NAME.".command('edit')"), Q(rcube_label('edit')));
+ $msg = rcube::Q($RCMAIL->gettext('isdraft')) . '&nbsp;';
+ $msg .= html::a(array(
+ 'href' => "#edit",
+ 'onclick' => rcmail_output::JS_OBJECT_NAME.".command('edit')"
+ ),
+ rcube::Q($RCMAIL->gettext('edit')));
- return html::div($attrib, $msg);
+ return html::div($attrib, $msg);
}
function rcmail_message_objects($attrib)
{
- global $RCMAIL, $MESSAGE;
+ global $RCMAIL, $MESSAGE;
- if (!$attrib['id'])
- $attrib['id'] = 'message-objects';
+ if (!$attrib['id'])
+ $attrib['id'] = 'message-objects';
- $content = array(
- rcmail_message_buttons(),
- rcmail_remote_objects_msg(),
- );
+ $content = array(
+ rcmail_message_buttons(),
+ rcmail_remote_objects_msg(),
+ );
- $plugin = $RCMAIL->plugins->exec_hook('message_objects',
- array('content' => $content, 'message' => $MESSAGE));
+ $plugin = $RCMAIL->plugins->exec_hook('message_objects',
+ array('content' => $content, 'message' => $MESSAGE));
- $content = implode("\n", $plugin['content']);
+ $content = implode("\n", $plugin['content']);
- return html::div($attrib, $content);
+ return html::div($attrib, $content);
}
function rcmail_contact_exists($email)
{
- global $RCMAIL;
+ global $RCMAIL;
- if ($email) {
- // @TODO: search in all address books?
- $CONTACTS = $RCMAIL->get_address_book(-1, true);
+ if ($email) {
+ // @TODO: search in all address books?
+ $CONTACTS = $RCMAIL->get_address_book(-1, true);
- if (is_object($CONTACTS)) {
- $existing = $CONTACTS->search('email', $email, true, false);
- if ($existing->count) {
- return true;
- }
+ if (is_object($CONTACTS)) {
+ $existing = $CONTACTS->search('email', $email, true, false);
+ if ($existing->count) {
+ return true;
+ }
+ }
}
- }
- return false;
+ return false;
}
function rcmail_message_contactphoto($attrib)
{
- global $RCMAIL, $MESSAGE;
+ global $RCMAIL, $MESSAGE;
- $placeholder = $attrib['placeholder'] ? $RCMAIL->config->get('skin_path') . $attrib['placeholder'] : null;
- if ($MESSAGE->sender)
- $photo_img = $RCMAIL->url(array('_task' => 'addressbook', '_action' => 'photo', '_email' => $MESSAGE->sender['mailto'], '_alt' => $placeholder));
- else
- $photo_img = $placeholder ? $placeholder : 'program/resources/blank.gif';
+ $placeholder = $attrib['placeholder'] ? $RCMAIL->config->get('skin_path') . $attrib['placeholder'] : null;
- return html::img(array('src' => $photo_img) + $attrib);
-}
-
-
-$OUTPUT->add_handlers(array(
- 'messageattachments' => 'rcmail_message_attachments',
- 'mailboxname' => 'rcmail_mailbox_name_display',
- 'messageobjects' => 'rcmail_message_objects',
- 'contactphoto' => 'rcmail_message_contactphoto',
-));
-
-
-if ($RCMAIL->action == 'print' && $OUTPUT->template_exists('messageprint'))
- $OUTPUT->send('messageprint', false);
-else if ($RCMAIL->action == 'preview' && $OUTPUT->template_exists('messagepreview'))
- $OUTPUT->send('messagepreview', false);
-else
- $OUTPUT->send('message', false);
-
-
-// mark message as read
-if ($MESSAGE && $MESSAGE->headers && empty($MESSAGE->headers->flags['SEEN']) &&
- ($RCMAIL->action == 'show' || ($RCMAIL->action == 'preview' && intval($CONFIG['preview_pane_mark_read']) == 0)))
-{
- if ($RCMAIL->storage->set_flag($MESSAGE->uid, 'SEEN')) {
- if ($count = rcmail_get_unseen_count($mbox_name)) {
- rcmail_set_unseen_count($mbox_name, $count - 1);
+ if ($MESSAGE->sender) {
+ $photo_img = $RCMAIL->url(array(
+ '_task' => 'addressbook',
+ '_action' => 'photo',
+ '_email' => $MESSAGE->sender['mailto'],
+ '_alt' => $placeholder
+ ));
+ }
+ else {
+ $photo_img = $placeholder ? $placeholder : 'program/resources/blank.gif';
}
- }
-}
-
-exit;
+ return html::img(array('src' => $photo_img) + $attrib);
+}
diff --git a/program/steps/mail/viewsource.inc b/program/steps/mail/viewsource.inc
index c560d7d41..0328d9600 100644
--- a/program/steps/mail/viewsource.inc
+++ b/program/steps/mail/viewsource.inc
@@ -5,7 +5,7 @@
| program/steps/mail/viewsource.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2009, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -22,39 +22,39 @@
ob_end_clean();
// similar code as in program/steps/mail/get.inc
-if ($uid = get_input_value('_uid', RCUBE_INPUT_GET))
-{
- $headers = $RCMAIL->storage->get_message_headers($uid);
- $charset = $headers->charset ? $headers->charset : $CONFIG['default_charset'];
- header("Content-Type: text/plain; charset={$charset}");
-
- if (!empty($_GET['_save'])) {
- $subject = rcube_mime::decode_header($headers->subject, $headers->charset);
- $filename = ($subject ? $subject : $RCMAIL->config->get('product_name', 'email')) . '.eml';
- $browser = $RCMAIL->output->browser;
-
- if ($browser->ie && $browser->ver < 7)
- $filename = rawurlencode(abbreviate_string($filename, 55));
- else if ($browser->ie)
- $filename = rawurlencode($filename);
- else
- $filename = addcslashes($filename, '"');
-
- header("Content-Length: {$headers->size}");
- header("Content-Disposition: attachment; filename=\"$filename\"");
- }
-
- $RCMAIL->storage->print_raw_body($uid, empty($_GET['_save']));
+if ($uid = rcube_utils::get_input_value('_uid', rcube_utils::INPUT_GET)) {
+ $headers = $RCMAIL->storage->get_message_headers($uid);
+ $charset = $headers->charset ? $headers->charset : $RCMAIL->config->get('default_charset');
+
+ header("Content-Type: text/plain; charset={$charset}");
+
+ if (!empty($_GET['_save'])) {
+ $subject = rcube_mime::decode_header($headers->subject, $headers->charset);
+ $filename = ($subject ? $subject : $RCMAIL->config->get('product_name', 'email')) . '.eml';
+ $browser = $RCMAIL->output->browser;
+
+ if ($browser->ie && $browser->ver < 7)
+ $filename = rawurlencode(abbreviate_string($filename, 55));
+ else if ($browser->ie)
+ $filename = rawurlencode($filename);
+ else
+ $filename = addcslashes($filename, '"');
+
+ header("Content-Length: {$headers->size}");
+ header("Content-Disposition: attachment; filename=\"$filename\"");
+ }
+
+ $RCMAIL->storage->print_raw_body($uid, empty($_GET['_save']));
}
-else
-{
- raise_error(array(
- 'code' => 500,
- 'type' => 'php',
- 'file' => __FILE__, 'line' => __LINE__,
- 'message' => 'Message UID '.$uid.' not found'),
- true, true);
+else {
+ rcube::raise_error(array(
+ 'code' => 500,
+ 'type' => 'php',
+ 'file' => __FILE__,
+ 'line' => __LINE__,
+ 'message' => "Message UID $uid not found"
+ ),
+ true, true);
}
exit;
-
diff --git a/program/steps/settings/about.inc b/program/steps/settings/about.inc
index 0fdefddda..026bfc1a2 100644
--- a/program/steps/settings/about.inc
+++ b/program/steps/settings/about.inc
@@ -5,8 +5,8 @@
| program/steps/settings/about.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2011, The Roundcube Dev Team |
- | Copyright (C) 2011, Kolab Systems AG |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
+ | Copyright (C) 2011-2013, Kolab Systems AG |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -21,78 +21,83 @@
*/
+$OUTPUT->set_pagetitle($RCMAIL->gettext('about'));
+
+$OUTPUT->add_handler('supportlink', 'rcmail_supportlink');
+$OUTPUT->add_handler('pluginlist', 'rcmail_plugins_list');
+
+$OUTPUT->send('about');
+
+
+
function rcmail_supportlink($attrib)
{
- global $RCMAIL;
+ global $RCMAIL;
+
+ if ($url = $RCMAIL->config->get('support_url')) {
+ $label = $attrib['label'] ? $attrib['label'] : 'support';
+ $attrib['href'] = $url;
- if ($url = $RCMAIL->config->get('support_url')) {
- $label = $attrib['label'] ? $attrib['label'] : 'support';
- $attrib['href'] = $url;
- return html::a($attrib, rcube_label($label));
- }
+ return html::a($attrib, $RCMAIL->gettext($label));
+ }
}
function rcmail_plugins_list($attrib)
{
- global $RCMAIL;
-
- if (!$attrib['id'])
- $attrib['id'] = 'rcmpluginlist';
-
- $plugins = array_filter((array) $RCMAIL->config->get('plugins'));
- $plugin_info = array();
-
- foreach ($plugins as $name) {
- if ($info = $RCMAIL->plugins->get_info($name))
- $plugin_info[$name] = $info;
- }
-
- // load info from required plugins, too
- foreach ($plugin_info as $name => $info) {
- if (is_array($info['required']) && !empty($info['required'])) {
- foreach ($info['required'] as $req_name) {
- if (!isset($plugin_info[$req_name]) && ($req_info = $RCMAIL->plugins->get_info($req_name)))
- $plugin_info[$req_name] = $req_info;
- }
- }
- }
+ global $RCMAIL;
- if (empty($plugin_info)) {
- return '';
- }
+ if (!$attrib['id']) {
+ $attrib['id'] = 'rcmpluginlist';
+ }
- ksort($plugin_info, SORT_LOCALE_STRING);
+ $plugins = array_filter((array) $RCMAIL->config->get('plugins'));
+ $plugin_info = array();
- $table = new html_table($attrib);
+ foreach ($plugins as $name) {
+ if ($info = $RCMAIL->plugins->get_info($name)) {
+ $plugin_info[$name] = $info;
+ }
+ }
- // add table header
- $table->add_header('name', rcube_label('plugin'));
- $table->add_header('version', rcube_label('version'));
- $table->add_header('license', rcube_label('license'));
- $table->add_header('source', rcube_label('source'));
+ // load info from required plugins, too
+ foreach ($plugin_info as $name => $info) {
+ if (is_array($info['required']) && !empty($info['required'])) {
+ foreach ($info['required'] as $req_name) {
+ if (!isset($plugin_info[$req_name]) && ($req_info = $RCMAIL->plugins->get_info($req_name))) {
+ $plugin_info[$req_name] = $req_info;
+ }
+ }
+ }
+ }
- foreach ($plugin_info as $name => $data) {
- $uri = $data['src_uri'] ? $data['src_uri'] : $data['uri'];
- if ($uri && stripos($uri, 'http') !== 0) {
- $uri = 'http://' . $uri;
+ if (empty($plugin_info)) {
+ return '';
}
- $table->add_row();
- $table->add('name', Q($data['name'] ? $data['name'] : $name));
- $table->add('version', Q($data['version']));
- $table->add('license', $data['license_uri'] ? html::a(array('target' => '_blank', href=> Q($data['license_uri'])),
- Q($data['license'])) : $data['license']);
- $table->add('source', $uri ? html::a(array('target' => '_blank', href=> Q($uri)),
- Q(rcube_label('download'))) : '');
- }
+ ksort($plugin_info, SORT_LOCALE_STRING);
+
+ $table = new html_table($attrib);
+
+ // add table header
+ $table->add_header('name', $RCMAIL->gettext('plugin'));
+ $table->add_header('version', $RCMAIL->gettext('version'));
+ $table->add_header('license', $RCMAIL->gettext('license'));
+ $table->add_header('source', $RCMAIL->gettext('source'));
+
+ foreach ($plugin_info as $name => $data) {
+ $uri = $data['src_uri'] ? $data['src_uri'] : $data['uri'];
+ if ($uri && stripos($uri, 'http') !== 0) {
+ $uri = 'http://' . $uri;
+ }
+
+ $table->add_row();
+ $table->add('name', rcube::Q($data['name'] ? $data['name'] : $name));
+ $table->add('version', rcube::Q($data['version']));
+ $table->add('license', $data['license_uri'] ? html::a(array('target' => '_blank', href=> rcube::Q($data['license_uri'])),
+ rcube::Q($data['license'])) : $data['license']);
+ $table->add('source', $uri ? html::a(array('target' => '_blank', href=> rcube::Q($uri)),
+ rcube::Q($RCMAIL->gettext('download'))) : '');
+ }
- return $table->show();
+ return $table->show();
}
-
-
-$OUTPUT->set_pagetitle(rcube_label('about'));
-
-$OUTPUT->add_handler('supportlink', 'rcmail_supportlink');
-$OUTPUT->add_handler('pluginlist', 'rcmail_plugins_list');
-
-$OUTPUT->send('about');
diff --git a/program/steps/settings/delete_identity.inc b/program/steps/settings/delete_identity.inc
index d5146db66..f77620438 100644
--- a/program/steps/settings/delete_identity.inc
+++ b/program/steps/settings/delete_identity.inc
@@ -5,7 +5,7 @@
| program/steps/settings/delete_identity.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2009, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -19,33 +19,37 @@
+-----------------------------------------------------------------------+
*/
-$iid = get_input_value('_iid', RCUBE_INPUT_GPC);
+$iid = rcube_utils::get_input_value('_iid', rcube_utils::INPUT_GPC);
// check request token
-if (!$OUTPUT->ajax_call && !$RCMAIL->check_request(RCUBE_INPUT_GPC)) {
- $OUTPUT->show_message('invalidrequest', 'error');
- rcmail_overwrite_action('identities');
- return;
+if (!$OUTPUT->ajax_call && !$RCMAIL->check_request(rcube_utils::INPUT_GPC)) {
+ $OUTPUT->show_message('invalidrequest', 'error');
+ $RCMAIL->overwrite_action('identities');
+ return;
}
-if ($iid && preg_match('/^[0-9]+(,[0-9]+)*$/', $iid))
-{
- $plugin = $RCMAIL->plugins->exec_hook('identity_delete', array('id' => $iid));
-
- $deleted = !$plugin['abort'] ? $RCMAIL->user->delete_identity($iid) : $plugin['result'];
+if ($iid && preg_match('/^[0-9]+(,[0-9]+)*$/', $iid)) {
+ $plugin = $RCMAIL->plugins->exec_hook('identity_delete', array('id' => $iid));
- if ($deleted > 0 && $deleted !== false)
- $OUTPUT->show_message('deletedsuccessfully', 'confirmation', null, false);
- else
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : ($deleted < 0 ? 'nodeletelastidentity' : 'errorsaving'), 'error', null, false);
+ $deleted = !$plugin['abort'] ? $RCMAIL->user->delete_identity($iid) : $plugin['result'];
- // send response
- if ($OUTPUT->ajax_call)
- $OUTPUT->send();
+ if ($deleted > 0 && $deleted !== false) {
+ $OUTPUT->show_message('deletedsuccessfully', 'confirmation', null, false);
+ }
+ else {
+ $msg = $plugin['message'] ? $plugin['message'] : ($deleted < 0 ? 'nodeletelastidentity' : 'errorsaving');
+ $OUTPUT->show_message($msg, 'error', null, false);
+ }
+
+ // send response
+ if ($OUTPUT->ajax_call) {
+ $OUTPUT->send();
+ }
}
-if ($OUTPUT->ajax_call)
- exit;
+if ($OUTPUT->ajax_call) {
+ exit;
+}
// go to identities page
-rcmail_overwrite_action('identities');
+$RCMAIL->overwrite_action('identities');
diff --git a/program/steps/settings/edit_folder.inc b/program/steps/settings/edit_folder.inc
index f19e2177b..fc6b2cd16 100644
--- a/program/steps/settings/edit_folder.inc
+++ b/program/steps/settings/edit_folder.inc
@@ -5,7 +5,7 @@
| program/steps/settings/edit_folder.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2009, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -19,7 +19,17 @@
+-----------------------------------------------------------------------+
*/
-// WARNING: folder names in UI are encoded with RCMAIL_CHARSET
+// register UI objects
+$OUTPUT->add_handlers(array(
+ 'folderdetails' => 'rcmail_folder_form',
+));
+
+$OUTPUT->add_label('nonamewarning');
+
+$OUTPUT->send('folderedit');
+
+
+// WARNING: folder names in UI are encoded with RCUBE_CHARSET
function rcmail_folder_form($attrib)
{
@@ -28,12 +38,12 @@ function rcmail_folder_form($attrib)
$storage = $RCMAIL->get_storage();
// edited folder name (empty in create-folder mode)
- $mbox = trim(get_input_value('_mbox', RCUBE_INPUT_GPC, true));
- $mbox_imap = rcube_charset_convert($mbox, RCMAIL_CHARSET, 'UTF7-IMAP');
+ $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_GPC, true);
+ $mbox_imap = rcube_charset::convert($mbox, RCUBE_CHARSET, 'UTF7-IMAP');
// predefined path for new folder
- $parent = trim(get_input_value('_path', RCUBE_INPUT_GPC, true));
- $parent_imap = rcube_charset_convert($parent, RCMAIL_CHARSET, 'UTF7-IMAP');
+ $parent = rcube_utils::get_input_value('_path', rcube_utils::INPUT_GPC, true);
+ $parent_imap = rcube_charset::convert($parent, RCUBE_CHARSET, 'UTF7-IMAP');
$threading_supported = $storage->get_capability('THREAD');
$delimiter = $storage->get_hierarchy_delimiter();
@@ -46,7 +56,7 @@ function rcmail_folder_form($attrib)
$path = explode($delimiter, $mbox_imap);
$folder = array_pop($path);
$path = implode($delimiter, $path);
- $folder = rcube_charset_convert($folder, 'UTF7-IMAP');
+ $folder = rcube_charset::convert($folder, 'UTF7-IMAP');
$hidden_fields = array('name' => '_mbox', 'value' => $mbox);
}
@@ -73,33 +83,33 @@ function rcmail_folder_form($attrib)
// General tab
$form['props'] = array(
- 'name' => rcube_label('properties'),
+ 'name' => $RCMAIL->gettext('properties'),
);
// Location (name)
if ($options['protected']) {
- $foldername = str_replace($delimiter, ' &raquo; ', Q(rcmail_localize_folderpath($mbox_imap)));
+ $foldername = str_replace($delimiter, ' &raquo; ', rcube::Q($RCMAIL->localize_folderpath($mbox_imap)));
}
else if ($options['norename']) {
- $foldername = Q($folder);
+ $foldername = rcube::Q($folder);
}
else {
if (isset($_POST['_name']))
- $folder = trim(get_input_value('_name', RCUBE_INPUT_POST, true));
+ $folder = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true));
$foldername = new html_inputfield(array('name' => '_name', 'id' => '_name', 'size' => 30));
$foldername = $foldername->show($folder);
if ($options['special']) {
- $foldername .= '&nbsp;(' . Q(rcmail_localize_foldername($mbox_imap)) .')';
+ $foldername .= '&nbsp;(' . rcube::Q($RCMAIL->localize_foldername($mbox_imap)) .')';
}
}
$form['props']['fieldsets']['location'] = array(
- 'name' => rcube_label('location'),
+ 'name' => $RCMAIL->gettext('location'),
'content' => array(
'name' => array(
- 'label' => rcube_label('foldername'),
+ 'label' => $RCMAIL->gettext('foldername'),
'value' => $foldername,
),
),
@@ -121,7 +131,7 @@ function rcmail_folder_form($attrib)
$exceptions[] = substr($prefix, 0, -1);
}
- $select = rcmail_mailbox_select(array(
+ $select = $RCMAIL->folder_selector(array(
'name' => '_parent',
'noselection' => '---',
'realnames' => false,
@@ -132,21 +142,21 @@ function rcmail_folder_form($attrib)
));
$form['props']['fieldsets']['location']['content']['path'] = array(
- 'label' => rcube_label('parentfolder'),
+ 'label' => $RCMAIL->gettext('parentfolder'),
'value' => $select->show($selected),
);
}
// Settings
$form['props']['fieldsets']['settings'] = array(
- 'name' => rcube_label('settings'),
+ 'name' => $RCMAIL->gettext('settings'),
);
// Settings: threading
if ($threading_supported && ($mbox_imap == 'INBOX' || (!$options['noselect'] && !$options['is_root']))) {
$select = new html_select(array('name' => '_viewmode', 'id' => '_listmode'));
- $select->add(rcube_label('list'), 0);
- $select->add(rcube_label('threads'), 1);
+ $select->add($RCMAIL->gettext('list'), 0);
+ $select->add($RCMAIL->gettext('threads'), 1);
if (isset($_POST['_viewmode'])) {
$value = (int) $_POST['_viewmode'];
@@ -157,38 +167,38 @@ function rcmail_folder_form($attrib)
}
$form['props']['fieldsets']['settings']['content']['viewmode'] = array(
- 'label' => rcube_label('listmode'),
+ 'label' => $RCMAIL->gettext('listmode'),
'value' => $select->show($value),
);
}
/*
// Settings: sorting column
$select = new html_select(array('name' => '_sortcol', 'id' => '_sortcol'));
- $select->add(rcube_label('nonesort'), '');
- $select->add(rcube_label('arrival'), 'arrival');
- $select->add(rcube_label('sentdate'), 'date');
- $select->add(rcube_label('subject'), 'subject');
- $select->add(rcube_label('fromto'), 'from');
- $select->add(rcube_label('replyto'), 'replyto');
- $select->add(rcube_label('cc'), 'cc');
- $select->add(rcube_label('size'), 'size');
+ $select->add($RCMAIL->gettext('nonesort'), '');
+ $select->add($RCMAIL->gettext('arrival'), 'arrival');
+ $select->add($RCMAIL->gettext('sentdate'), 'date');
+ $select->add($RCMAIL->gettext('subject'), 'subject');
+ $select->add($RCMAIL->gettext('fromto'), 'from');
+ $select->add($RCMAIL->gettext('replyto'), 'replyto');
+ $select->add($RCMAIL->gettext('cc'), 'cc');
+ $select->add($RCMAIL->gettext('size'), 'size');
$value = isset($_POST['_sortcol']) ? $_POST['_sortcol'] : '';
$form['props']['fieldsets']['settings']['content']['sortcol'] = array(
- 'label' => rcube_label('listsorting'),
+ 'label' => $RCMAIL->gettext('listsorting'),
'value' => $select->show($value),
);
// Settings: sorting order
$select = new html_select(array('name' => '_sortord', 'id' => '_sortord'));
- $select->add(rcube_label('asc'), 'ASC');
- $select->add(rcube_label('desc'), 'DESC');
+ $select->add($RCMAIL->gettext('asc'), 'ASC');
+ $select->add($RCMAIL->gettext('desc'), 'DESC');
$value = isset($_POST['_sortord']) ? $_POST['_sortord'] : '';
$form['props']['fieldsets']['settings']['content']['sortord'] = array(
- 'label' => rcube_label('listorder'),
+ 'label' => $RCMAIL->gettext('listorder'),
'value' => $select->show(),
);
*/
@@ -196,7 +206,7 @@ function rcmail_folder_form($attrib)
if (strlen($mbox)) {
// Number of messages
$form['props']['fieldsets']['info'] = array(
- 'name' => rcube_label('info'),
+ 'name' => $RCMAIL->gettext('info'),
'content' => array()
);
@@ -207,9 +217,9 @@ function rcmail_folder_form($attrib)
if ($msgcount) {
// create link with folder-size command
$onclick = sprintf("return %s.command('folder-size', '%s', this)",
- JS_OBJECT_NAME, JQ($mbox_imap));
+ rcmail_output::JS_OBJECT_NAME, rcube::JQ($mbox_imap));
$size = html::a(array('href' => '#', 'onclick' => $onclick,
- 'id' => 'folder-size'), rcube_label('getfoldersize'));
+ 'id' => 'folder-size'), $RCMAIL->gettext('getfoldersize'));
}
else {
// no messages -> zero size
@@ -217,11 +227,11 @@ function rcmail_folder_form($attrib)
}
$form['props']['fieldsets']['info']['content']['count'] = array(
- 'label' => rcube_label('messagecount'),
+ 'label' => $RCMAIL->gettext('messagecount'),
'value' => (int) $msgcount
);
$form['props']['fieldsets']['info']['content']['size'] = array(
- 'label' => rcube_label('size'),
+ 'label' => $RCMAIL->gettext('size'),
'value' => $size,
);
}
@@ -229,8 +239,8 @@ function rcmail_folder_form($attrib)
// show folder type only if we have non-private namespaces
if (!empty($namespace['shared']) || !empty($namespace['others'])) {
$form['props']['fieldsets']['info']['content']['foldertype'] = array(
- 'label' => rcube_label('foldertype'),
- 'value' => rcube_label($options['namespace'] . 'folder'));
+ 'label' => $RCMAIL->gettext('foldertype'),
+ 'value' => $RCMAIL->gettext($options['namespace'] . 'folder'));
}
}
@@ -256,7 +266,8 @@ function rcmail_folder_form($attrib)
foreach ($tab['fieldsets'] as $fieldset) {
$subcontent = rcmail_get_form_part($fieldset, $attrib);
if ($subcontent) {
- $content .= html::tag('fieldset', null, html::tag('legend', null, Q($fieldset['name'])) . $subcontent) ."\n";
+ $subcontent = html::tag('legend', null, rcube::Q($fieldset['name'])) . $subcontent;
+ $content .= html::tag('fieldset', null, $subcontent) ."\n";
}
}
}
@@ -265,7 +276,7 @@ function rcmail_folder_form($attrib)
}
if ($content && sizeof($form) > 1) {
- $out .= html::tag('fieldset', null, html::tag('legend', null, Q($tab['name'])) . $content) ."\n";
+ $out .= html::tag('fieldset', null, html::tag('legend', null, rcube::Q($tab['name'])) . $content) ."\n";
}
else {
$out .= $content ."\n";
@@ -287,9 +298,9 @@ function rcmail_get_form_part($form, $attrib = array())
$table = new html_table(array('cols' => 2));
foreach ($form['content'] as $col => $colprop) {
$colprop['id'] = '_'.$col;
- $label = !empty($colprop['label']) ? $colprop['label'] : rcube_label($col);
+ $label = !empty($colprop['label']) ? $colprop['label'] : $RCMAIL->gettext($col);
- $table->add('title', html::label($colprop['id'], Q($label)));
+ $table->add('title', html::label($colprop['id'], rcube::Q($label)));
$table->add(null, $colprop['value']);
}
$content = $table->show($attrib);
@@ -300,15 +311,3 @@ function rcmail_get_form_part($form, $attrib = array())
return $content;
}
-
-
-//$OUTPUT->set_pagetitle(rcube_label('folders'));
-
-// register UI objects
-$OUTPUT->add_handlers(array(
- 'folderdetails' => 'rcmail_folder_form',
-));
-
-$OUTPUT->add_label('nonamewarning');
-
-$OUTPUT->send('folderedit');
diff --git a/program/steps/settings/edit_identity.inc b/program/steps/settings/edit_identity.inc
index edd4ba60d..f208c8a05 100644
--- a/program/steps/settings/edit_identity.inc
+++ b/program/steps/settings/edit_identity.inc
@@ -5,7 +5,7 @@
| program/steps/settings/edit_identity.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2011, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -23,152 +23,158 @@ define('IDENTITIES_LEVEL', intval($RCMAIL->config->get('identities_level', 0)));
// edit-identity
if (($_GET['_iid'] || $_POST['_iid']) && $RCMAIL->action=='edit-identity') {
- $IDENTITY_RECORD = $RCMAIL->user->get_identity(get_input_value('_iid', RCUBE_INPUT_GPC));
-
- if (is_array($IDENTITY_RECORD))
- $OUTPUT->set_env('iid', $IDENTITY_RECORD['identity_id']);
- else {
- $OUTPUT->show_message('dberror', 'error');
- // go to identities page
- rcmail_overwrite_action('identities');
- return;
- }
+ $id = rcube_utils::get_input_value('_iid', rcube_utils::INPUT_GPC);
+ $IDENTITY_RECORD = $RCMAIL->user->get_identity($id);
+
+ if (is_array($IDENTITY_RECORD)) {
+ $OUTPUT->set_env('iid', $IDENTITY_RECORD['identity_id']);
+ }
+ else {
+ $OUTPUT->show_message('dberror', 'error');
+ // go to identities page
+ $RCMAIL->overwrite_action('identities');
+ return;
+ }
}
// add-identity
else {
- if (IDENTITIES_LEVEL > 1) {
- $OUTPUT->show_message('opnotpermitted', 'error');
- // go to identities page
- rcmail_overwrite_action('identities');
- return;
- }
- else if (IDENTITIES_LEVEL == 1) {
- $IDENTITY_RECORD['email'] = $RCMAIL->get_user_email();
- }
+ if (IDENTITIES_LEVEL > 1) {
+ $OUTPUT->show_message('opnotpermitted', 'error');
+ // go to identities page
+ $RCMAIL->overwrite_action('identities');
+ return;
+ }
+ else if (IDENTITIES_LEVEL == 1) {
+ $IDENTITY_RECORD['email'] = $RCMAIL->get_user_email();
+ }
+}
+
+$OUTPUT->include_script('list.js');
+$OUTPUT->add_handler('identityform', 'rcube_identity_form');
+$OUTPUT->set_env('identities_level', IDENTITIES_LEVEL);
+$OUTPUT->add_label('deleteidentityconfirm');
+
+$OUTPUT->set_pagetitle($RCMAIL->gettext(($RCMAIL->action == 'add-identity' ? 'newidentity' : 'edititem')));
+
+if ($RCMAIL->action == 'add-identity' && $OUTPUT->template_exists('identityadd')) {
+ $OUTPUT->send('identityadd');
}
+$OUTPUT->send('identityedit');
+
function rcube_identity_form($attrib)
{
- global $IDENTITY_RECORD, $RCMAIL, $OUTPUT;
-
- // Add HTML editor script(s)
- rcube_html_editor('identity');
-
- // add some labels to client
- $OUTPUT->add_label('noemailwarning', 'nonamewarning', 'converting', 'editorwarning');
-
- $i_size = !empty($attrib['size']) ? $attrib['size'] : 40;
- $t_rows = !empty($attrib['textarearows']) ? $attrib['textarearows'] : 6;
- $t_cols = !empty($attrib['textareacols']) ? $attrib['textareacols'] : 40;
-
- // list of available cols
- $form = array(
- 'addressing' => array(
- 'name' => rcube_label('settings'),
- 'content' => array(
- 'name' => array('type' => 'text', 'size' => $i_size),
- 'email' => array('type' => 'text', 'size' => $i_size),
- 'organization' => array('type' => 'text', 'size' => $i_size),
- 'reply-to' => array('type' => 'text', 'size' => $i_size),
- 'bcc' => array('type' => 'text', 'size' => $i_size),
- 'standard' => array('type' => 'checkbox', 'label' => rcube_label('setdefault')),
- )),
- 'signature' => array(
- 'name' => rcube_label('signature'),
- 'content' => array(
- 'signature' => array('type' => 'textarea', 'size' => $t_cols, 'rows' => $t_rows,
- 'spellcheck' => true),
- 'html_signature' => array('type' => 'checkbox', 'label' => rcube_label('htmlsignature'),
- 'onclick' => 'return rcmail_toggle_editor(this, \'rcmfd_signature\');'),
- ))
- );
-
- // Enable TinyMCE editor
- if ($IDENTITY_RECORD['html_signature']) {
- $form['signature']['content']['signature']['class'] = 'mce_editor';
- $form['signature']['content']['signature']['is_escaped'] = true;
-
- // Correctly handle HTML entities in HTML editor (#1488483)
- $IDENTITY_RECORD['signature'] = htmlspecialchars($IDENTITY_RECORD['signature'], ENT_NOQUOTES, RCMAIL_CHARSET);
- }
-
- // disable some field according to access level
- if (IDENTITIES_LEVEL == 1 || IDENTITIES_LEVEL == 3) {
- $form['addressing']['content']['email']['disabled'] = true;
- $form['addressing']['content']['email']['class'] = 'disabled';
- }
-
- if (IDENTITIES_LEVEL == 4) {
- foreach($form['addressing']['content'] as $formfield => $value){
- $form['addressing']['content'][$formfield]['disabled'] = true;
- $form['addressing']['content'][$formfield]['class'] = 'disabled';
+ global $IDENTITY_RECORD, $RCMAIL, $OUTPUT;
+
+ // Add HTML editor script(s)
+ $RCMAIL->html_editor('identity');
+
+ // add some labels to client
+ $OUTPUT->add_label('noemailwarning', 'nonamewarning', 'converting', 'editorwarning');
+
+ $i_size = !empty($attrib['size']) ? $attrib['size'] : 40;
+ $t_rows = !empty($attrib['textarearows']) ? $attrib['textarearows'] : 6;
+ $t_cols = !empty($attrib['textareacols']) ? $attrib['textareacols'] : 40;
+
+ // list of available cols
+ $form = array(
+ 'addressing' => array(
+ 'name' => $RCMAIL->gettext('settings'),
+ 'content' => array(
+ 'name' => array('type' => 'text', 'size' => $i_size),
+ 'email' => array('type' => 'text', 'size' => $i_size),
+ 'organization' => array('type' => 'text', 'size' => $i_size),
+ 'reply-to' => array('type' => 'text', 'size' => $i_size),
+ 'bcc' => array('type' => 'text', 'size' => $i_size),
+ 'standard' => array('type' => 'checkbox', 'label' => $RCMAIL->gettext('setdefault')),
+ )),
+ 'signature' => array(
+ 'name' => $RCMAIL->gettext('signature'),
+ 'content' => array(
+ 'signature' => array('type' => 'textarea', 'size' => $t_cols, 'rows' => $t_rows,
+ 'spellcheck' => true),
+ 'html_signature' => array('type' => 'checkbox',
+ 'label' => $RCMAIL->gettext('htmlsignature'),
+ 'onclick' => 'return rcmail_toggle_editor(this, \'rcmfd_signature\');'),
+ ))
+ );
+
+ // Enable TinyMCE editor
+ if ($IDENTITY_RECORD['html_signature']) {
+ $form['signature']['content']['signature']['class'] = 'mce_editor';
+ $form['signature']['content']['signature']['is_escaped'] = true;
+
+ // Correctly handle HTML entities in HTML editor (#1488483)
+ $IDENTITY_RECORD['signature'] = htmlspecialchars($IDENTITY_RECORD['signature'], ENT_NOQUOTES, RCUBE_CHARSET);
}
- }
- $IDENTITY_RECORD['email'] = rcube_idn_to_utf8($IDENTITY_RECORD['email']);
+ // disable some field according to access level
+ if (IDENTITIES_LEVEL == 1 || IDENTITIES_LEVEL == 3) {
+ $form['addressing']['content']['email']['disabled'] = true;
+ $form['addressing']['content']['email']['class'] = 'disabled';
+ }
- // Allow plugins to modify identity form content
- $plugin = $RCMAIL->plugins->exec_hook('identity_form', array(
- 'form' => $form, 'record' => $IDENTITY_RECORD));
+ if (IDENTITIES_LEVEL == 4) {
+ foreach($form['addressing']['content'] as $formfield => $value){
+ $form['addressing']['content'][$formfield]['disabled'] = true;
+ $form['addressing']['content'][$formfield]['class'] = 'disabled';
+ }
+ }
- $form = $plugin['form'];
- $IDENTITY_RECORD = $plugin['record'];
+ $IDENTITY_RECORD['email'] = rcube_utils::idn_to_utf8($IDENTITY_RECORD['email']);
- // Set form tags and hidden fields
- list($form_start, $form_end) = get_form_tags($attrib, 'save-identity',
- intval($IDENTITY_RECORD['identity_id']),
- array('name' => '_iid', 'value' => $IDENTITY_RECORD['identity_id']));
+ // Allow plugins to modify identity form content
+ $plugin = $RCMAIL->plugins->exec_hook('identity_form', array(
+ 'form' => $form, 'record' => $IDENTITY_RECORD));
- unset($plugin);
- unset($attrib['form'], $attrib['id']);
+ $form = $plugin['form'];
+ $IDENTITY_RECORD = $plugin['record'];
- // return the complete edit form as table
- $out = "$form_start\n";
+ // Set form tags and hidden fields
+ list($form_start, $form_end) = get_form_tags($attrib, 'save-identity',
+ intval($IDENTITY_RECORD['identity_id']),
+ array('name' => '_iid', 'value' => $IDENTITY_RECORD['identity_id']));
- foreach ($form as $fieldset) {
- if (empty($fieldset['content']))
- continue;
+ unset($plugin);
+ unset($attrib['form'], $attrib['id']);
- $content = '';
- if (is_array($fieldset['content'])) {
- $table = new html_table(array('cols' => 2));
- foreach ($fieldset['content'] as $col => $colprop) {
- $colprop['id'] = 'rcmfd_'.$col;
+ // return the complete edit form as table
+ $out = "$form_start\n";
- $label = !empty($colprop['label']) ? $colprop['label'] :
- rcube_label(str_replace('-', '', $col));
+ foreach ($form as $fieldset) {
+ if (empty($fieldset['content'])) {
+ continue;
+ }
- $value = !empty($colprop['value']) ? $colprop['value'] :
- rcmail_get_edit_field($col, $IDENTITY_RECORD[$col], $colprop, $colprop['type']);
+ $content = '';
+ if (is_array($fieldset['content'])) {
+ $table = new html_table(array('cols' => 2));
- $table->add('title', html::label($colprop['id'], Q($label)));
- $table->add(null, $value);
- }
- $content = $table->show($attrib);
- }
- else {
- $content = $fieldset['content'];
- }
+ foreach ($fieldset['content'] as $col => $colprop) {
+ $colprop['id'] = 'rcmfd_'.$col;
- $out .= html::tag('fieldset', null, html::tag('legend', null, Q($fieldset['name'])) . $content) ."\n";
- }
+ $label = !empty($colprop['label']) ? $colprop['label'] :
+ $RCMAIL->gettext(str_replace('-', '', $col));
- $out .= $form_end;
+ $value = !empty($colprop['value']) ? $colprop['value'] :
+ rcube_output::get_edit_field($col, $IDENTITY_RECORD[$col], $colprop, $colprop['type']);
- return $out;
-}
+ $table->add('title', html::label($colprop['id'], rcube::Q($label)));
+ $table->add(null, $value);
+ }
-$OUTPUT->include_script('list.js');
-$OUTPUT->add_handler('identityform', 'rcube_identity_form');
-$OUTPUT->set_env('identities_level', IDENTITIES_LEVEL);
-$OUTPUT->add_label('deleteidentityconfirm');
-
-$OUTPUT->set_pagetitle(rcube_label(($RCMAIL->action=='add-identity' ? 'newidentity' : 'edititem')));
-
-if ($RCMAIL->action=='add-identity' && $OUTPUT->template_exists('identityadd'))
- $OUTPUT->send('identityadd');
+ $content = $table->show($attrib);
+ }
+ else {
+ $content = $fieldset['content'];
+ }
-$OUTPUT->send('identityedit');
+ $content = html::tag('legend', null, rcube::Q($fieldset['name'])) . $content;
+ $out .= html::tag('fieldset', null, $content) . "\n";
+ }
+ $out .= $form_end;
+ return $out;
+}
diff --git a/program/steps/settings/edit_prefs.inc b/program/steps/settings/edit_prefs.inc
index adf6b1623..05f4db6a6 100644
--- a/program/steps/settings/edit_prefs.inc
+++ b/program/steps/settings/edit_prefs.inc
@@ -5,7 +5,7 @@
| program/steps/settings/edit_prefs.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2007, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -19,65 +19,65 @@
+-----------------------------------------------------------------------+
*/
-if (!$OUTPUT->ajax_call)
- $OUTPUT->set_pagetitle(rcube_label('preferences'));
+if (!$OUTPUT->ajax_call) {
+ $OUTPUT->set_pagetitle($RCMAIL->gettext('preferences'));
+}
-$CURR_SECTION = get_input_value('_section', RCUBE_INPUT_GPC);
+$CURR_SECTION = rcube_utils::get_input_value('_section', rcube_utils::INPUT_GPC);
list($SECTIONS,) = rcmail_user_prefs($CURR_SECTION);
+// register UI objects
+$OUTPUT->add_handlers(array(
+ 'userprefs' => 'rcmail_user_prefs_form',
+ 'sectionname' => 'rcmail_prefs_section_name',
+));
+
+$OUTPUT->send('settingsedit');
+
+
+
function rcmail_user_prefs_form($attrib)
{
- global $RCMAIL, $CURR_SECTION, $SECTIONS;
+ global $RCMAIL, $CURR_SECTION, $SECTIONS;
- // add some labels to client
- $RCMAIL->output->add_label('nopagesizewarning');
+ // add some labels to client
+ $RCMAIL->output->add_label('nopagesizewarning');
- unset($attrib['form']);
+ unset($attrib['form']);
- list($form_start, $form_end) = get_form_tags($attrib, 'save-prefs', null,
- array('name' => '_section', 'value' => $CURR_SECTION));
+ list($form_start, $form_end) = get_form_tags($attrib, 'save-prefs', null,
+ array('name' => '_section', 'value' => $CURR_SECTION));
- $out = $form_start;
+ $out = $form_start;
- foreach ($SECTIONS[$CURR_SECTION]['blocks'] as $class => $block) {
- if (!empty($block['options'])) {
- $table = new html_table(array('cols' => 2));
+ foreach ($SECTIONS[$CURR_SECTION]['blocks'] as $class => $block) {
+ if (!empty($block['options'])) {
+ $table = new html_table(array('cols' => 2));
- foreach ($block['options'] as $option) {
- if (isset($option['title'])) {
- $table->add('title', $option['title']);
- $table->add(null, $option['content']);
+ foreach ($block['options'] as $option) {
+ if (isset($option['title'])) {
+ $table->add('title', $option['title']);
+ $table->add(null, $option['content']);
+ }
+ else {
+ $table->add(array('colspan' => 2), $option['content']);
+ }
+ }
+
+ $out .= html::tag('fieldset', $class, html::tag('legend', null, $block['name']) . $table->show($attrib));
}
- else {
- $table->add(array('colspan' => 2), $option['content']);
+ else if (!empty($block['content'])) {
+ $out .= html::tag('fieldset', null, html::tag('legend', null, $block['name']) . $block['content']);
}
- }
-
- $out .= html::tag('fieldset', $class, html::tag('legend', null, $block['name']) . $table->show($attrib));
}
- else if (!empty($block['content'])) {
- $out .= html::tag('fieldset', null, html::tag('legend', null, $block['name']) . $block['content']);
- }
- }
- return $out . $form_end;
+ return $out . $form_end;
}
function rcmail_prefs_section_name()
{
- global $SECTIONS, $CURR_SECTION;
-
- return $SECTIONS[$CURR_SECTION]['section'];
-}
-
-
-// register UI objects
-$OUTPUT->add_handlers(array(
- 'userprefs' => 'rcmail_user_prefs_form',
- 'sectionname' => 'rcmail_prefs_section_name',
-));
-
-$OUTPUT->send('settingsedit');
-
+ global $SECTIONS, $CURR_SECTION;
+ return $SECTIONS[$CURR_SECTION]['section'];
+}
diff --git a/program/steps/settings/edit_response.inc b/program/steps/settings/edit_response.inc
new file mode 100644
index 000000000..760f28290
--- /dev/null
+++ b/program/steps/settings/edit_response.inc
@@ -0,0 +1,108 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/steps/settings/edit_response.inc |
+ | |
+ | This file is part of the Roundcube Webmail client |
+ | Copyright (C) 2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ | PURPOSE: |
+ | Show edit form for a canned response record or to add a new one |
+ | |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com> |
+ +-----------------------------------------------------------------------+
+*/
+
+$responses = $RCMAIL->get_compose_responses();
+
+// edit-response
+if (($key = rcube_utils::get_input_value('_key', rcube_utils::INPUT_GPC))) {
+ foreach ($responses as $i => $response) {
+ if ($response['key'] == $key) {
+ $RESPONSE_RECORD = $response;
+ $RESPONSE_RECORD['index'] = $i;
+ break;
+ }
+ }
+}
+
+// save response
+if ($RCMAIL->action == 'save-response' && isset($_POST['_name']) && !$RESPONSE_RECORD['static']) {
+ $name = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST));
+ $text = trim(rcube_utils::get_input_value('_text', rcube_utils::INPUT_POST));
+
+ if (!empty($name) && !empty($text)) {
+ $dupes = 0;
+ foreach ($responses as $i => $resp) {
+ if ($RESPONSE_RECORD && $RESPONSE_RECORD['index'] === $i)
+ continue;
+ if (strcasecmp($name, preg_replace('/\s\(\d+\)$/', '', $resp['name'])) == 0)
+ $dupes++;
+ }
+ if ($dupes) { // require a unique name
+ $name .= ' (' . ++$dupes . ')';
+ }
+
+ $response = array('name' => $name, 'text' => $text, 'format' => 'text', 'key' => substr(md5($name), 0, 16));
+ if ($RESPONSE_RECORD && $responses[$RESPONSE_RECORD['index']]) {
+ $responses[$RESPONSE_RECORD['index']] = $response;
+ }
+ else {
+ $responses[] = $response;
+ }
+
+ $responses = array_filter($responses, function($item){ return empty($item['static']); });
+ if ($RCMAIL->user->save_prefs(array('compose_responses' => array_values($responses)))) {
+ $RCMAIL->output->show_message('successfullysaved', 'confirmation');
+ $RCMAIL->output->command('parent.update_response_row', $response, $key);
+ $RCMAIL->overwrite_action('edit-response');
+ $RESPONSE_RECORD = $response;
+ }
+ }
+ else {
+ $RCMAIL->output->show_message('formincomplete', 'error');
+ }
+}
+
+$OUTPUT->set_env('readonly', !empty($RESPONSE_RECORD['static']));
+$OUTPUT->add_handler('responseform', 'rcube_response_form');
+$OUTPUT->set_pagetitle($RCMAIL->gettext($RCMAIL->action == 'add-response' ? 'savenewresponse' : 'editresponse'));
+
+$OUTPUT->send('responseedit');
+
+
+function rcube_response_form($attrib)
+{
+ global $RCMAIL, $OUTPUT, $RESPONSE_RECORD;
+
+ // Set form tags and hidden fields
+ $disabled = !empty($RESPONSE_RECORD['static']);
+ $key = $RESPONSE_RECORD['key'];
+ list($form_start, $form_end) = get_form_tags($attrib, 'save-response', $key, array('name' => '_key', 'value' => $key));
+ unset($attrib['form'], $attrib['id']);
+
+ // return the complete edit form as table
+ $out = "$form_start\n";
+
+ $table = new html_table(array('cols' => 2));
+ $label = $RCMAIL->gettext('responsename');
+
+ $table->add('title', html::label('ffname', rcube::Q($RCMAIL->gettext('responsename'))));
+ $table->add(null, rcube_output::get_edit_field('name', $RESPONSE_RECORD['name'],
+ array('id' => 'ffname', 'size' => $attrib['size'], 'disabled' => $disabled), 'text'));
+
+ $table->add('title', html::label('fftext', rcube::Q($RCMAIL->gettext('responsetext'))));
+ $table->add(null, rcube_output::get_edit_field('text', $RESPONSE_RECORD['text'],
+ array('id' => 'fftext', 'size' => $attrib['textareacols'], 'rows' => $attrib['textarearows'], 'disabled' => $disabled), 'textarea'));
+
+ $out .= $table->show($attrib);
+ $out .= $form_end;
+
+ return $out;
+}
diff --git a/program/steps/settings/folders.inc b/program/steps/settings/folders.inc
index 64af18d62..b09ea03ce 100644
--- a/program/steps/settings/folders.inc
+++ b/program/steps/settings/folders.inc
@@ -5,7 +5,7 @@
| program/steps/settings/folders.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2009, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -20,15 +20,15 @@
+-----------------------------------------------------------------------+
*/
-// WARNING: folder names in UI are encoded with RCMAIL_CHARSET
+// WARNING: folder names in UI are encoded with RCUBE_CHARSET
// init IMAP connection
$STORAGE = $RCMAIL->get_storage();
// subscribe mailbox
-if ($RCMAIL->action == 'subscribe')
-{
- $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP');
+if ($RCMAIL->action == 'subscribe') {
+ $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true, 'UTF7-IMAP');
+
if (strlen($mbox)) {
$result = $STORAGE->subscribe(array($mbox));
@@ -53,28 +53,24 @@ if ($RCMAIL->action == 'subscribe')
$OUTPUT->show_message('foldersubscribed', 'confirmation');
}
else
- rcmail_display_server_error('errorsaving');
+ $RCMAIL->display_server_error('errorsaving');
}
}
-
// unsubscribe mailbox
-else if ($RCMAIL->action == 'unsubscribe')
-{
- $mbox = get_input_value('_mbox', RCUBE_INPUT_POST, true, 'UTF7-IMAP');
+else if ($RCMAIL->action == 'unsubscribe') {
+ $mbox = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true, 'UTF7-IMAP');
if (strlen($mbox)) {
$result = $STORAGE->unsubscribe(array($mbox));
if ($result)
$OUTPUT->show_message('folderunsubscribed', 'confirmation');
else
- rcmail_display_server_error('errorsaving');
+ $RCMAIL->display_server_error('errorsaving');
}
}
-
// delete an existing mailbox
-else if ($RCMAIL->action == 'delete-folder')
-{
- $mbox_utf8 = get_input_value('_mbox', RCUBE_INPUT_POST, true);
- $mbox = rcube_charset_convert($mbox_utf8, RCMAIL_CHARSET, 'UTF7-IMAP');
+else if ($RCMAIL->action == 'delete-folder') {
+ $mbox_utf8 = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true);
+ $mbox = rcube_charset::convert($mbox_utf8, RCUBE_CHARSET, 'UTF7-IMAP');
if (strlen($mbox)) {
$plugin = $RCMAIL->plugins->exec_hook('folder_delete', array('name' => $mbox));
@@ -98,22 +94,20 @@ else if ($RCMAIL->action == 'delete-folder')
$OUTPUT->show_message('folderdeleted', 'confirmation');
// Clear content frame
$OUTPUT->command('subscription_select');
- $OUTPUT->command('set_quota', rcmail_quota_content());
+ $OUTPUT->command('set_quota', $RCMAIL->quota_content());
}
else if (!$deleted) {
- rcmail_display_server_error('errorsaving');
+ $RCMAIL->display_server_error('errorsaving');
}
}
-
// rename an existing mailbox
-else if ($RCMAIL->action == 'rename-folder')
-{
- $name_utf8 = trim(get_input_value('_folder_newname', RCUBE_INPUT_POST, true));
- $oldname_utf8 = trim(get_input_value('_folder_oldname', RCUBE_INPUT_POST, true));
+else if ($RCMAIL->action == 'rename-folder') {
+ $name_utf8 = trim(rcube_utils::get_input_value('_folder_newname', rcube_utils::INPUT_POST, true));
+ $oldname_utf8 = rcube_utils::get_input_value('_folder_oldname', rcube_utils::INPUT_POST, true);
if (strlen($name_utf8) && strlen($oldname_utf8)) {
- $name = rcube_charset_convert($name_utf8, RCMAIL_CHARSET, 'UTF7-IMAP');
- $oldname = rcube_charset_convert($oldname_utf8, RCMAIL_CHARSET, 'UTF7-IMAP');
+ $name = rcube_charset::convert($name_utf8, RCUBE_CHARSET, 'UTF7-IMAP');
+ $oldname = rcube_charset::convert($oldname_utf8, RCUBE_CHARSET, 'UTF7-IMAP');
$rename = rcmail_rename_folder($oldname, $name);
}
@@ -122,20 +116,19 @@ else if ($RCMAIL->action == 'rename-folder')
rcmail_update_folder_row($name, $oldname);
}
else if (!$rename) {
- rcmail_display_server_error('errorsaving');
+ $RCMAIL->display_server_error('errorsaving');
}
}
-
// clear mailbox
-else if ($RCMAIL->action == 'purge')
-{
- $mbox_utf8 = get_input_value('_mbox', RCUBE_INPUT_POST, true);
- $mbox = rcube_charset_convert($mbox_utf8, RCMAIL_CHARSET, 'UTF7-IMAP');
- $delimiter = $STORAGE->get_hierarchy_delimiter();
- $trash_regexp = '/^' . preg_quote($CONFIG['trash_mbox'] . $delimiter, '/') . '/';
+else if ($RCMAIL->action == 'purge') {
+ $mbox_utf8 = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true);
+ $mbox = rcube_charset::convert($mbox_utf8, RCUBE_CHARSET, 'UTF7-IMAP');
+ $delimiter = $STORAGE->get_hierarchy_delimiter();
+ $trash_mbox = $RCMAIL->config->get('trash_mbox');
+ $trash_regexp = '/^' . preg_quote($trash . $delimiter, '/') . '/';
// we should only be purging trash (or their subfolders)
- if (!strlen($CONFIG['trash_mbox']) || $mbox == $CONFIG['trash_mbox']
+ if (!strlen($trash_mbox) || $mbox === $trash_mbox
|| preg_match($trash_regexp, $mbox)
) {
$success = $STORAGE->delete_message('*', $mbox);
@@ -143,7 +136,7 @@ else if ($RCMAIL->action == 'purge')
}
// copy to Trash
else {
- $success = $STORAGE->move_message('1:*', $CONFIG['trash_mbox'], $mbox);
+ $success = $STORAGE->move_message('1:*', $trash_mbox, $mbox);
$delete = false;
}
@@ -151,7 +144,7 @@ else if ($RCMAIL->action == 'purge')
$OUTPUT->set_env('messagecount', 0);
if ($delete) {
$OUTPUT->show_message('folderpurged', 'confirmation');
- $OUTPUT->command('set_quota', rcmail_quota_content());
+ $OUTPUT->command('set_quota', $RCMAIL->quota_content());
}
else {
$OUTPUT->show_message('messagemoved', 'confirmation');
@@ -160,29 +153,48 @@ else if ($RCMAIL->action == 'purge')
$OUTPUT->command('show_folder', $mbox_utf8, null, true);
}
else {
- rcmail_display_server_error('errorsaving');
+ $RCMAIL->display_server_error('errorsaving');
}
}
-
// get mailbox size
-else if ($RCMAIL->action == 'folder-size')
-{
- $name = trim(get_input_value('_mbox', RCUBE_INPUT_POST, true));
+else if ($RCMAIL->action == 'folder-size') {
+ $name = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true);
$size = $STORAGE->folder_size($name);
// @TODO: check quota and show percentage usage of specified mailbox?
if ($size !== false) {
- $OUTPUT->command('folder_size_update', show_bytes($size));
+ $OUTPUT->command('folder_size_update', $RCMAIL->show_bytes($size));
}
else {
- rcmail_display_server_error();
+ $RCMAIL->display_server_error();
}
}
-if ($OUTPUT->ajax_call)
+if ($OUTPUT->ajax_call) {
$OUTPUT->send();
+}
+
+$OUTPUT->set_pagetitle($RCMAIL->gettext('folders'));
+$OUTPUT->include_script('list.js');
+$OUTPUT->set_env('prefix_ns', $STORAGE->get_namespace('prefix'));
+if ($STORAGE->get_capability('QUOTA')) {
+ $OUTPUT->set_env('quota', true);
+}
+
+// add some labels to client
+$OUTPUT->add_label('deletefolderconfirm', 'purgefolderconfirm', 'folderdeleting',
+ 'foldermoving', 'foldersubscribing', 'folderunsubscribing', 'quota');
+
+// register UI objects
+$OUTPUT->add_handlers(array(
+ 'foldersubscription' => 'rcube_subscription_form',
+ 'folderframe' => 'rcmail_folder_frame',
+ 'quotadisplay' => array($RCMAIL, 'quota_display'),
+));
+
+$OUTPUT->send('folders');
// build table with all folders listed by server
@@ -200,7 +212,7 @@ function rcube_subscription_form($attrib)
if ($attrib['noheader'] !== true && $attrib['noheader'] != "true") {
// add table header
- $table->add_header('name', rcube_label('foldername'));
+ $table->add_header('name', $RCMAIL->gettext('foldername'));
$table->add_header('subscribed', '');
}
@@ -225,7 +237,7 @@ function rcube_subscription_form($attrib)
$folder_id = $folder;
$folder = $STORAGE->mod_folder($folder);
$foldersplit = explode($delimiter, $folder);
- $name = rcube_charset_convert(array_pop($foldersplit), 'UTF7-IMAP');
+ $name = rcube_charset::convert(array_pop($foldersplit), 'UTF7-IMAP');
$parent_folder = join($delimiter, $foldersplit);
$level = count($foldersplit);
@@ -234,7 +246,7 @@ function rcube_subscription_form($attrib)
for ($i=1; $i<=$level; $i++) {
$ancestor_folder = join($delimiter, array_slice($foldersplit, 0, $i));
if ($ancestor_folder && !$seen[$ancestor_folder]++) {
- $ancestor_name = rcube_charset_convert($foldersplit[$i-1], 'UTF7-IMAP');
+ $ancestor_name = rcube_charset::convert($foldersplit[$i-1], 'UTF7-IMAP');
$list_folders[] = array(
'id' => $ancestor_folder,
'name' => $ancestor_name,
@@ -270,8 +282,8 @@ function rcube_subscription_form($attrib)
$checkbox_subscribe = new html_checkbox(array(
'name' => '_subscribed[]',
- 'title' => rcube_label('changesubscription'),
- 'onclick' => JS_OBJECT_NAME.".command(this.checked?'subscribe':'unsubscribe',this.value)",
+ 'title' => $RCMAIL->gettext('changesubscription'),
+ 'onclick' => rcmail_output::JS_OBJECT_NAME.".command(this.checked?'subscribe':'unsubscribe',this.value)",
));
// create list of available folders
@@ -283,9 +295,9 @@ function rcube_subscription_form($attrib)
$noselect = false;
$classes = array($i%2 ? 'even' : 'odd');
- $folder_utf8 = rcube_charset_convert($folder['id'], 'UTF7-IMAP');
+ $folder_utf8 = rcube_charset::convert($folder['id'], 'UTF7-IMAP');
$display_folder = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $folder['level'])
- . Q($protected ? rcmail_localize_foldername($folder['id']) : $folder['name']);
+ . rcube::Q($protected ? $RCMAIL->localize_foldername($folder['id']) : $folder['name']);
if ($folder['virtual']) {
$classes[] = 'virtual';
@@ -366,8 +378,9 @@ function rcmail_folder_frame($attrib)
{
global $OUTPUT;
- if (!$attrib['id'])
+ if (!$attrib['id']) {
$attrib['id'] = 'rcmfolderframe';
+ }
return $OUTPUT->frame($attrib, true);
}
@@ -416,25 +429,3 @@ function rcmail_rename_folder($oldname, $newname)
return false;
}
-
-
-$OUTPUT->set_pagetitle(rcube_label('folders'));
-$OUTPUT->include_script('list.js');
-$OUTPUT->set_env('prefix_ns', $STORAGE->get_namespace('prefix'));
-if ($STORAGE->get_capability('QUOTA')) {
- $OUTPUT->set_env('quota', true);
-}
-
-// add some labels to client
-$OUTPUT->add_label('deletefolderconfirm', 'purgefolderconfirm', 'folderdeleting',
- 'foldermoving', 'foldersubscribing', 'folderunsubscribing', 'quota');
-
-// register UI objects
-$OUTPUT->add_handlers(array(
- 'foldersubscription' => 'rcube_subscription_form',
- 'folderframe' => 'rcmail_folder_frame',
- 'quotadisplay' => 'rcmail_quota_display',
-));
-
-$OUTPUT->send('folders');
-
diff --git a/program/steps/settings/func.inc b/program/steps/settings/func.inc
index af278e5fa..7c36df3b1 100644
--- a/program/steps/settings/func.inc
+++ b/program/steps/settings/func.inc
@@ -5,7 +5,7 @@
| program/steps/settings/func.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2012, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -20,9 +20,33 @@
*/
if (!$OUTPUT->ajax_call) {
- $OUTPUT->set_pagetitle(rcube_label('preferences'));
+ $OUTPUT->set_pagetitle($RCMAIL->gettext('preferences'));
}
+// register UI objects
+$OUTPUT->add_handlers(array(
+ 'settingstabs' => 'rcmail_settings_tabs',
+ 'prefsframe' => 'rcmail_preferences_frame',
+ 'sectionslist' => 'rcmail_sections_list',
+ 'identitieslist' => 'rcmail_identities_list',
+));
+
+// register action aliases
+$RCMAIL->register_action_map(array(
+ 'folders' => 'folders.inc',
+ 'rename-folder' => 'folders.inc',
+ 'delete-folder' => 'folders.inc',
+ 'subscribe' => 'folders.inc',
+ 'unsubscribe' => 'folders.inc',
+ 'purge' => 'folders.inc',
+ 'folder-size' => 'folders.inc',
+ 'add-identity' => 'edit_identity.inc',
+ 'add-response' => 'edit_response.inc',
+ 'save-response' => 'edit_response.inc',
+ 'delete-response' => 'responses.inc',
+));
+
+
// similar function as /steps/settings/identities.inc::rcmail_identity_frame()
function rcmail_preferences_frame($attrib)
{
@@ -48,7 +72,7 @@ function rcmail_sections_list($attrib)
list($list, $cols) = rcmail_user_prefs();
// create XHTML table
- $out = rcube_table_output($attrib, $list, $cols, 'id');
+ $out = $RCMAIL->table_output($attrib, $list, $cols, 'id');
// set client env
$RCMAIL->output->add_gui_object('sectionslist', $attrib['id']);
@@ -70,7 +94,7 @@ function rcmail_identities_list($attrib)
// get identities list and define 'mail' column
$list = $RCMAIL->user->list_identities();
foreach ($list as $idx => $row) {
- $list[$idx]['mail'] = trim($row['name'] . ' <' . rcube_idn_to_utf8($row['email']) .'>');
+ $list[$idx]['mail'] = trim($row['name'] . ' <' . rcube_utils::idn_to_utf8($row['email']) .'>');
}
// get all identites from DB and define list of cols to be displayed
@@ -81,7 +105,7 @@ function rcmail_identities_list($attrib)
// @TODO: use <UL> instead of <TABLE> for identities list
// create XHTML table
- $out = rcube_table_output($attrib, $plugin['list'], $plugin['cols'], 'identity_id');
+ $out = $RCMAIL->table_output($attrib, $plugin['list'], $plugin['cols'], 'identity_id');
// set client env
$OUTPUT->add_gui_object('identitieslist', $attrib['id']);
@@ -127,13 +151,13 @@ function rcmail_user_prefs($current = null)
{
global $RCMAIL;
- $sections['general'] = array('id' => 'general', 'section' => rcube_label('uisettings'));
- $sections['mailbox'] = array('id' => 'mailbox', 'section' => rcube_label('mailboxview'));
- $sections['mailview'] = array('id' => 'mailview','section' => rcube_label('messagesdisplaying'));
- $sections['compose'] = array('id' => 'compose', 'section' => rcube_label('messagescomposition'));
- $sections['addressbook'] = array('id' => 'addressbook','section' => rcube_label('addressbook'));
- $sections['folders'] = array('id' => 'folders', 'section' => rcube_label('specialfolders'));
- $sections['server'] = array('id' => 'server', 'section' => rcube_label('serversettings'));
+ $sections['general'] = array('id' => 'general', 'section' => $RCMAIL->gettext('uisettings'));
+ $sections['mailbox'] = array('id' => 'mailbox', 'section' => $RCMAIL->gettext('mailboxview'));
+ $sections['mailview'] = array('id' => 'mailview','section' => $RCMAIL->gettext('messagesdisplaying'));
+ $sections['compose'] = array('id' => 'compose', 'section' => $RCMAIL->gettext('messagescomposition'));
+ $sections['addressbook'] = array('id' => 'addressbook','section' => $RCMAIL->gettext('addressbook'));
+ $sections['folders'] = array('id' => 'folders', 'section' => $RCMAIL->gettext('specialfolders'));
+ $sections['server'] = array('id' => 'server', 'section' => $RCMAIL->gettext('serversettings'));
// hook + define list cols
$plugin = $RCMAIL->plugins->exec_hook('preferences_sections_list',
@@ -155,10 +179,10 @@ function rcmail_user_prefs($current = null)
// general
case 'general':
$blocks = array(
- 'main' => array('name' => Q(rcube_label('mainoptions'))),
- 'skin' => array('name' => Q(rcube_label('skin'))),
- 'browser' => array('name' => Q(rcube_label('browseroptions'))),
- 'advanced'=> array('name' => Q(rcube_label('advancedoptions'))),
+ 'main' => array('name' => rcube::Q($RCMAIL->gettext('mainoptions'))),
+ 'skin' => array('name' => rcube::Q($RCMAIL->gettext('skin'))),
+ 'browser' => array('name' => rcube::Q($RCMAIL->gettext('browseroptions'))),
+ 'advanced'=> array('name' => rcube::Q($RCMAIL->gettext('advancedoptions'))),
);
// language selection
@@ -175,7 +199,7 @@ function rcmail_user_prefs($current = null)
$select->add(array_values($a_lang), array_keys($a_lang));
$blocks['main']['options']['language'] = array(
- 'title' => html::label($field_id, Q(rcube_label('language'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('language'))),
'content' => $select->show($RCMAIL->user->language),
);
}
@@ -188,7 +212,7 @@ function rcmail_user_prefs($current = null)
$field_id = 'rcmfd_timezone';
$select = new html_select(array('name' => '_timezone', 'id' => $field_id));
- $select->add(rcube_label('autodetect'), 'auto');
+ $select->add($RCMAIL->gettext('autodetect'), 'auto');
$zones = array();
foreach (DateTimeZone::listIdentifiers() as $i => $tzs) {
@@ -210,7 +234,7 @@ function rcmail_user_prefs($current = null)
}
$blocks['main']['options']['timezone'] = array(
- 'title' => html::label($field_id, Q(rcube_label('timezone'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('timezone'))),
'content' => $select->show((string)$config['timezone']),
);
}
@@ -232,7 +256,7 @@ function rcmail_user_prefs($current = null)
}
$blocks['main']['options']['time_format'] = array(
- 'title' => html::label($field_id, Q(rcube_label('timeformat'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('timeformat'))),
'content' => $select->show($RCMAIL->config->get('time_format')),
);
}
@@ -253,7 +277,7 @@ function rcmail_user_prefs($current = null)
}
$blocks['main']['options']['date_format'] = array(
- 'title' => html::label($field_id, Q(rcube_label('dateformat'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('dateformat'))),
'content' => $select->show($config['date_format']),
);
}
@@ -268,7 +292,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_pretty_date', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['prettydate'] = array(
- 'title' => html::label($field_id, Q(rcube_label('prettydate'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('prettydate'))),
'content' => $input->show($config['prettydate']?1:0),
);
}
@@ -281,16 +305,16 @@ function rcmail_user_prefs($current = null)
$field_id = 'rcmfd_refresh_interval';
$select = new html_select(array('name' => '_refresh_interval', 'id' => $field_id));
- $select->add(rcube_label('never'), 0);
+ $select->add($RCMAIL->gettext('never'), 0);
foreach (array(1, 3, 5, 10, 15, 30, 60) as $min) {
if (!$config['min_refresh_interval'] || $config['min_refresh_interval'] <= $min * 60) {
- $label = rcube_label(array('name' => 'everynminutes', 'vars' => array('n' => $min)));
+ $label = $RCMAIL->gettext(array('name' => 'everynminutes', 'vars' => array('n' => $min)));
$select->add($label, $min);
}
}
$blocks['main']['options']['refresh_interval'] = array(
- 'title' => html::label($field_id, Q(rcube_label('refreshinterval'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('refreshinterval'))),
'content' => $select->show($config['refresh_interval']/60),
);
}
@@ -318,16 +342,16 @@ function rcmail_user_prefs($current = null)
if (is_array($meta) && $meta['name']) {
$skinname = $meta['name'];
- $author_link = $meta['url'] ? html::a(array('href' => $meta['url'], 'target' => '_blank'), Q($meta['author'])) : Q($meta['author']);
- $license_link = $meta['license-url'] ? html::a(array('href' => $meta['license-url'], 'target' => '_blank'), Q($meta['license'])) : Q($meta['license']);
+ $author_link = $meta['url'] ? html::a(array('href' => $meta['url'], 'target' => '_blank'), rcube::Q($meta['author'])) : rcube::Q($meta['author']);
+ $license_link = $meta['license-url'] ? html::a(array('href' => $meta['license-url'], 'target' => '_blank'), rcube::Q($meta['license'])) : rcube::Q($meta['license']);
}
$blocks['skin']['options'][$skin]['content'] = html::label(array('class' => 'skinselection'),
html::span('skinitem', $input->show($config['skin'], array('value' => $skin, 'id' => $field_id.$skin))) .
html::span('skinitem', html::img(array('src' => $thumbnail, 'class' => 'skinthumbnail', 'alt' => $skin, 'width' => 64, 'height' => 64))) .
- html::span('skinitem', html::span('skinname', Q($skinname)) . html::br() .
+ html::span('skinitem', html::span('skinname', rcube::Q($skinname)) . html::br() .
html::span('skinauthor', $author_link ? 'by ' . $author_link : '') . html::br() .
- html::span('skinlicense', $license_link ? rcube_label('license').':&nbsp;' . $license_link : ''))
+ html::span('skinlicense', $license_link ? $RCMAIL->gettext('license').':&nbsp;' . $license_link : ''))
);
}
}
@@ -344,7 +368,7 @@ function rcmail_user_prefs($current = null)
$checkbox = new html_checkbox(array('name' => '_standard_windows', 'id' => $field_id, 'value' => 1));
$blocks['browser']['options']['standard_windows'] = array(
- 'title' => html::label($field_id, Q(rcube_label('standardwindows'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('standardwindows'))),
'content' => $checkbox->show($config['standard_windows']?1:0),
);
}
@@ -352,13 +376,13 @@ function rcmail_user_prefs($current = null)
if ($current) {
$product_name = $RCMAIL->config->get('product_name', 'Roundcube Webmail');
$RCMAIL->output->add_script(sprintf("%s.check_protocol_handler('%s', '#mailtoprotohandler');",
- JS_OBJECT_NAME, JQ($product_name)), 'foot');
+ rcmail_output::JS_OBJECT_NAME, rcube::JQ($product_name)), 'foot');
}
$blocks['browser']['options']['mailtoprotohandler'] = array(
'content' => html::a(array(
'href' => '#',
- 'id' => 'mailtoprotohandler'), Q(rcube_label('mailtoprotohandler'))),
+ 'id' => 'mailtoprotohandler'), rcube::Q($RCMAIL->gettext('mailtoprotohandler'))),
);
break;
@@ -366,9 +390,9 @@ function rcmail_user_prefs($current = null)
// Mailbox view (mail screen)
case 'mailbox':
$blocks = array(
- 'main' => array('name' => Q(rcube_label('mainoptions'))),
- 'new_message' => array('name' => Q(rcube_label('newmessage'))),
- 'advanced' => array('name' => Q(rcube_label('advancedoptions'))),
+ 'main' => array('name' => rcube::Q($RCMAIL->gettext('mainoptions'))),
+ 'new_message' => array('name' => rcube::Q($RCMAIL->gettext('newmessage'))),
+ 'advanced' => array('name' => rcube::Q($RCMAIL->gettext('advancedoptions'))),
);
// show config parameter for preview pane
@@ -382,7 +406,7 @@ function rcmail_user_prefs($current = null)
'onchange' => "$('#rcmfd_preview_pane_mark_read').prop('disabled', !this.checked)"));
$blocks['main']['options']['preview_pane'] = array(
- 'title' => html::label($field_id, Q(rcube_label('previewpane'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('previewpane'))),
'content' => $input->show($config['preview_pane']?1:0),
);
}
@@ -400,16 +424,16 @@ function rcmail_user_prefs($current = null)
$select = new html_select(array('name' => '_preview_pane_mark_read', 'id' => $field_id,
'disabled' => $config['preview_pane']?0:1));
- $select->add(rcube_label('never'), '-1');
- $select->add(rcube_label('immediately'), 0);
+ $select->add($RCMAIL->gettext('never'), '-1');
+ $select->add($RCMAIL->gettext('immediately'), 0);
foreach (array(5, 10, 20, 30) as $sec) {
- $label = rcube_label(array('name' => 'afternseconds', 'vars' => array('n' => $sec)));
+ $label = $RCMAIL->gettext(array('name' => 'afternseconds', 'vars' => array('n' => $sec)));
$select->add($label, $sec);
}
$blocks['main']['options']['preview_pane_mark_read'] = array(
- 'title' => html::label($field_id, Q(rcube_label('previewpanemarkread'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('previewpanemarkread'))),
'content' => $select->show(intval($config['preview_pane_mark_read'])),
);
}
@@ -421,14 +445,14 @@ function rcmail_user_prefs($current = null)
$field_id = 'rcmfd_mdn_requests';
$select = new html_select(array('name' => '_mdn_requests', 'id' => $field_id));
- $select->add(rcube_label('askuser'), 0);
- $select->add(rcube_label('autosend'), 1);
- $select->add(rcube_label('autosendknown'), 3);
- $select->add(rcube_label('autosendknownignore'), 4);
- $select->add(rcube_label('ignore'), 2);
+ $select->add($RCMAIL->gettext('askuser'), 0);
+ $select->add($RCMAIL->gettext('autosend'), 1);
+ $select->add($RCMAIL->gettext('autosendknown'), 3);
+ $select->add($RCMAIL->gettext('autosendknownignore'), 4);
+ $select->add($RCMAIL->gettext('ignore'), 2);
$blocks['main']['options']['mdn_requests'] = array(
- 'title' => html::label($field_id, Q(rcube_label('mdnrequests'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('mdnrequests'))),
'content' => $select->show($config['mdn_requests']),
);
}
@@ -444,12 +468,12 @@ function rcmail_user_prefs($current = null)
if ($supported) {
$field_id = 'rcmfd_autoexpand_threads';
$select = new html_select(array('name' => '_autoexpand_threads', 'id' => $field_id));
- $select->add(rcube_label('never'), 0);
- $select->add(rcube_label('do_expand'), 1);
- $select->add(rcube_label('expand_only_unread'), 2);
+ $select->add($RCMAIL->gettext('never'), 0);
+ $select->add($RCMAIL->gettext('do_expand'), 1);
+ $select->add($RCMAIL->gettext('expand_only_unread'), 2);
$blocks['main']['options']['autoexpand_threads'] = array(
- 'title' => html::label($field_id, Q(rcube_label('autoexpand_threads'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('autoexpand_threads'))),
'content' => $select->show($config['autoexpand_threads']),
);
}
@@ -466,7 +490,7 @@ function rcmail_user_prefs($current = null)
$size = intval($config['mail_pagesize'] ? $config['mail_pagesize'] : $config['pagesize']);
$blocks['main']['options']['pagesize'] = array(
- 'title' => html::label($field_id, Q(rcube_label('pagesize'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('pagesize'))),
'content' => $input->show($size ? $size : 50),
);
}
@@ -480,7 +504,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_check_all_folders', 'id' => $field_id, 'value' => 1));
$blocks['new_message']['options']['check_all_folders'] = array(
- 'title' => html::label($field_id, Q(rcube_label('checkallfolders'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('checkallfolders'))),
'content' => $input->show($config['check_all_folders']?1:0),
);
}
@@ -489,8 +513,8 @@ function rcmail_user_prefs($current = null)
// Message viewing
case 'mailview':
$blocks = array(
- 'main' => array('name' => Q(rcube_label('mainoptions'))),
- 'advanced' => array('name' => Q(rcube_label('advancedoptions'))),
+ 'main' => array('name' => rcube::Q($RCMAIL->gettext('mainoptions'))),
+ 'advanced' => array('name' => rcube::Q($RCMAIL->gettext('advancedoptions'))),
);
// show checkbox to open message view in new window
@@ -503,7 +527,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_message_extwin', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['message_extwin'] = array(
- 'title' => html::label($field_id, Q(rcube_label('showinextwin'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('showinextwin'))),
'content' => $input->show($config['message_extwin']?1:0),
);
}
@@ -518,7 +542,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_message_show_email', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['message_show_email'] = array(
- 'title' => html::label($field_id, Q(rcube_label('showemail'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('showemail'))),
'content' => $input->show($config['message_show_email']?1:0),
);
}
@@ -534,7 +558,7 @@ function rcmail_user_prefs($current = null)
'onchange' => "$('#rcmfd_show_images').prop('disabled', !this.checked).val(0)"));
$blocks['main']['options']['prefer_html'] = array(
- 'title' => html::label($field_id, Q(rcube_label('preferhtml'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('preferhtml'))),
'content' => $input->show($config['prefer_html']?1:0),
);
}
@@ -547,7 +571,7 @@ function rcmail_user_prefs($current = null)
$field_id = 'rcmfd_default_charset';
$blocks['advanced']['options']['default_charset'] = array(
- 'title' => html::label($field_id, Q(rcube_label('defaultcharset'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('defaultcharset'))),
'content' => $RCMAIL->output->charset_selector(array(
'id' => $field_id, 'name' => '_default_charset', 'selected' => $config['default_charset']
)));
@@ -562,12 +586,12 @@ function rcmail_user_prefs($current = null)
$input = new html_select(array('name' => '_show_images', 'id' => $field_id,
'disabled' => !$config['prefer_html']));
- $input->add(rcube_label('never'), 0);
- $input->add(rcube_label('fromknownsenders'), 1);
- $input->add(rcube_label('always'), 2);
+ $input->add($RCMAIL->gettext('never'), 0);
+ $input->add($RCMAIL->gettext('fromknownsenders'), 1);
+ $input->add($RCMAIL->gettext('always'), 2);
$blocks['main']['options']['show_images'] = array(
- 'title' => html::label($field_id, Q(rcube_label('showremoteimages'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('showremoteimages'))),
'content' => $input->show($config['prefer_html'] ? $config['show_images'] : 0),
);
}
@@ -581,7 +605,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_inline_images', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['inline_images'] = array(
- 'title' => html::label($field_id, Q(rcube_label('showinlineimages'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('showinlineimages'))),
'content' => $input->show($config['inline_images']?1:0),
);
}
@@ -596,7 +620,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_display_next', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['display_next'] = array(
- 'title' => html::label($field_id, Q(rcube_label('displaynext'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('displaynext'))),
'content' => $input->show($config['display_next']?1:0),
);
}
@@ -605,10 +629,10 @@ function rcmail_user_prefs($current = null)
// Mail composition
case 'compose':
$blocks = array(
- 'main' => array('name' => Q(rcube_label('mainoptions'))),
- 'sig' => array('name' => Q(rcube_label('signatureoptions'))),
- 'spellcheck' => array('name' => Q(rcube_label('spellcheckoptions'))),
- 'advanced' => array('name' => Q(rcube_label('advancedoptions'))),
+ 'main' => array('name' => rcube::Q($RCMAIL->gettext('mainoptions'))),
+ 'sig' => array('name' => rcube::Q($RCMAIL->gettext('signatureoptions'))),
+ 'spellcheck' => array('name' => rcube::Q($RCMAIL->gettext('spellcheckoptions'))),
+ 'advanced' => array('name' => rcube::Q($RCMAIL->gettext('advancedoptions'))),
);
// show checkbox to compose messages in a new window
@@ -621,7 +645,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_compose_extwin', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['compose_extwin'] = array(
- 'title' => html::label($field_id, Q(rcube_label('composeextwin'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('composeextwin'))),
'content' => $input->show($config['compose_extwin']?1:0),
);
}
@@ -634,13 +658,13 @@ function rcmail_user_prefs($current = null)
$field_id = 'rcmfd_htmleditor';
$select = new html_select(array('name' => '_htmleditor', 'id' => $field_id));
- $select->add(rcube_label('never'), 0);
- $select->add(rcube_label('always'), 1);
- $select->add(rcube_label('htmlonreply'), 2);
- $select->add(rcube_label('htmlonreplyandforward'), 3);
+ $select->add($RCMAIL->gettext('never'), 0);
+ $select->add($RCMAIL->gettext('always'), 1);
+ $select->add($RCMAIL->gettext('htmlonreply'), 2);
+ $select->add($RCMAIL->gettext('htmlonreplyandforward'), 3);
$blocks['main']['options']['htmleditor'] = array(
- 'title' => html::label($field_id, Q(rcube_label('htmleditor'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('htmleditor'))),
'content' => $select->show(intval($config['htmleditor'])),
);
}
@@ -653,14 +677,14 @@ function rcmail_user_prefs($current = null)
$field_id = 'rcmfd_autosave';
$select = new html_select(array('name' => '_draft_autosave', 'id' => $field_id, 'disabled' => empty($config['drafts_mbox'])));
- $select->add(rcube_label('never'), 0);
+ $select->add($RCMAIL->gettext('never'), 0);
foreach (array(1, 3, 5, 10) as $i => $min) {
- $label = rcube_label(array('name' => 'everynminutes', 'vars' => array('n' => $min)));
+ $label = $RCMAIL->gettext(array('name' => 'everynminutes', 'vars' => array('n' => $min)));
$select->add($label, $min*60);
}
$blocks['main']['options']['draft_autosave'] = array(
- 'title' => html::label($field_id, Q(rcube_label('autosavedraft'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('autosavedraft'))),
'content' => $select->show($config['draft_autosave']),
);
}
@@ -673,12 +697,12 @@ function rcmail_user_prefs($current = null)
$field_id = 'rcmfd_param_folding';
$select = new html_select(array('name' => '_mime_param_folding', 'id' => $field_id));
- $select->add(rcube_label('2231folding'), 0);
- $select->add(rcube_label('miscfolding'), 1);
- $select->add(rcube_label('2047folding'), 2);
+ $select->add($RCMAIL->gettext('2231folding'), 0);
+ $select->add($RCMAIL->gettext('miscfolding'), 1);
+ $select->add($RCMAIL->gettext('2047folding'), 2);
$blocks['advanced']['options']['mime_param_folding'] = array(
- 'title' => html::label($field_id, Q(rcube_label('mimeparamfolding'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('mimeparamfolding'))),
'content' => $select->show($config['mime_param_folding']),
);
}
@@ -692,7 +716,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_force_7bit', 'id' => $field_id, 'value' => 1));
$blocks['advanced']['options']['force_7bit'] = array(
- 'title' => html::label($field_id, Q(rcube_label('force7bit'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('force7bit'))),
'content' => $input->show($config['force_7bit']?1:0),
);
}
@@ -706,7 +730,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_mdn_default', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['mdn_default'] = array(
- 'title' => html::label($field_id, Q(rcube_label('reqmdn'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('reqmdn'))),
'content' => $input->show($config['mdn_default']?1:0),
);
}
@@ -720,7 +744,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_dsn_default', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['dsn_default'] = array(
- 'title' => html::label($field_id, Q(rcube_label('reqdsn'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('reqdsn'))),
'content' => $input->show($config['dsn_default']?1:0),
);
}
@@ -734,7 +758,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_reply_same_folder', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['reply_same_folder'] = array(
- 'title' => html::label($field_id, Q(rcube_label('replysamefolder'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('replysamefolder'))),
'content' => $input->show($config['reply_same_folder']?1:0),
);
}
@@ -747,12 +771,12 @@ function rcmail_user_prefs($current = null)
$field_id = 'rcmfd_reply_mode';
$select = new html_select(array('name' => '_reply_mode', 'id' => $field_id));
- $select->add(rcube_label('replyempty'), -1);
- $select->add(rcube_label('replybottomposting'), 0);
- $select->add(rcube_label('replytopposting'), 1);
+ $select->add($RCMAIL->gettext('replyempty'), -1);
+ $select->add($RCMAIL->gettext('replybottomposting'), 0);
+ $select->add($RCMAIL->gettext('replytopposting'), 1);
$blocks['main']['options']['reply_mode'] = array(
- 'title' => html::label($field_id, Q(rcube_label('whenreplying'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('whenreplying'))),
'content' => $select->show(intval($config['reply_mode'])),
);
}
@@ -766,7 +790,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_spellcheck_before_send', 'id' => $field_id, 'value' => 1));
$blocks['spellcheck']['options']['spellcheck_before_send'] = array(
- 'title' => html::label($field_id, Q(rcube_label('spellcheckbeforesend'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('spellcheckbeforesend'))),
'content' => $input->show($config['spellcheck_before_send']?1:0),
);
}
@@ -782,7 +806,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_'.$key, 'id' => 'rcmfd_'.$key, 'value' => 1));
$blocks['spellcheck']['options'][$key] = array(
- 'title' => html::label($field_id, Q(rcube_label(str_replace('_', '', $key)))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext(str_replace('_', '', $key)))),
'content' => $input->show($config[$key]?1:0),
);
}
@@ -797,13 +821,13 @@ function rcmail_user_prefs($current = null)
$field_id = 'rcmfd_show_sig';
$select = new html_select(array('name' => '_show_sig', 'id' => $field_id));
- $select->add(rcube_label('never'), 0);
- $select->add(rcube_label('always'), 1);
- $select->add(rcube_label('newmessageonly'), 2);
- $select->add(rcube_label('replyandforwardonly'), 3);
+ $select->add($RCMAIL->gettext('never'), 0);
+ $select->add($RCMAIL->gettext('always'), 1);
+ $select->add($RCMAIL->gettext('newmessageonly'), 2);
+ $select->add($RCMAIL->gettext('replyandforwardonly'), 3);
$blocks['sig']['options']['show_sig'] = array(
- 'title' => html::label($field_id, Q(rcube_label('autoaddsignature'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('autoaddsignature'))),
'content' => $select->show($RCMAIL->config->get('show_sig', 1)),
);
}
@@ -817,7 +841,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_strip_existing_sig', 'id' => $field_id, 'value' => 1));
$blocks['sig']['options']['strip_existing_sig'] = array(
- 'title' => html::label($field_id, Q(rcube_label('replyremovesignature'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('replyremovesignature'))),
'content' => $input->show($config['strip_existing_sig']?1:0),
);
}
@@ -830,11 +854,11 @@ function rcmail_user_prefs($current = null)
$field_id = 'rcmfd_forward_attachment';
$select = new html_select(array('name' => '_forward_attachment', 'id' => $field_id));
- $select->add(rcube_label('inline'), 0);
- $select->add(rcube_label('asattachment'), 1);
+ $select->add($RCMAIL->gettext('inline'), 0);
+ $select->add($RCMAIL->gettext('asattachment'), 1);
$blocks['main']['options']['forward_attachment'] = array(
- 'title' => html::label($field_id, Q(rcube_label('forwardmode'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('forwardmode'))),
'content' => $select->show(intval($config['forward_attachment'])),
);
}
@@ -858,24 +882,42 @@ function rcmail_user_prefs($current = null)
$select_default_font = new html_select(array('name' => '_default_font', 'id' => $field_id));
$select_default_font->add('', '');
- $fonts = rcube_fontdefs();
+ $fonts = rcmail::font_defs();
foreach ($fonts as $fname => $font) {
$select_default_font->add($fname, $fname);
}
$blocks['main']['options']['default_font'] = array(
- 'title' => html::label($field_id, Q(rcube_label('defaultfont'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('defaultfont'))),
'content' => $select_default_font->show($RCMAIL->config->get('default_font', 1)) .
$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($RCMAIL->gettext('replyalldefault'), 0);
+ $select->add($RCMAIL->gettext('replyalllist'), 1);
+
+ $blocks['main']['options']['reply_all_mode'] = array(
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('replyallmode'))),
+ 'content' => $select->show(intval($config['reply_all_mode'])),
+ );
+ }
+
break;
// Addressbook config
case 'addressbook':
$blocks = array(
- 'main' => array('name' => Q(rcube_label('mainoptions'))),
- 'advanced' => array('name' => Q(rcube_label('advancedoptions'))),
+ 'main' => array('name' => rcube::Q($RCMAIL->gettext('mainoptions'))),
+ 'advanced' => array('name' => rcube::Q($RCMAIL->gettext('advancedoptions'))),
);
if (!isset($no_override['default_addressbook'])
@@ -893,7 +935,7 @@ function rcmail_user_prefs($current = null)
}
$blocks['main']['options']['default_addressbook'] = array(
- 'title' => html::label($field_id, Q(rcube_label('defaultabook'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('defaultabook'))),
'content' => $select->show($config['default_addressbook']),
);
}
@@ -907,13 +949,13 @@ function rcmail_user_prefs($current = null)
$field_id = 'rcmfd_addressbook_name_listing';
$select = new html_select(array('name' => '_addressbook_name_listing', 'id' => $field_id));
- $select->add(rcube_label('name'), 0);
- $select->add(rcube_label('firstname') . ' ' . rcube_label('surname'), 1);
- $select->add(rcube_label('surname') . ' ' . rcube_label('firstname'), 2);
- $select->add(rcube_label('surname') . ', ' . rcube_label('firstname'), 3);
+ $select->add($RCMAIL->gettext('name'), 0);
+ $select->add($RCMAIL->gettext('firstname') . ' ' . $RCMAIL->gettext('surname'), 1);
+ $select->add($RCMAIL->gettext('surname') . ' ' . $RCMAIL->gettext('firstname'), 2);
+ $select->add($RCMAIL->gettext('surname') . ', ' . $RCMAIL->gettext('firstname'), 3);
$blocks['main']['options']['list_name_listing'] = array(
- 'title' => html::label($field_id, Q(rcube_label('listnamedisplay'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('listnamedisplay'))),
'content' => $select->show($config['addressbook_name_listing']),
);
}
@@ -927,12 +969,12 @@ function rcmail_user_prefs($current = null)
$field_id = 'rcmfd_addressbook_sort_col';
$select = new html_select(array('name' => '_addressbook_sort_col', 'id' => $field_id));
- $select->add(rcube_label('name'), 'name');
- $select->add(rcube_label('firstname'), 'firstname');
- $select->add(rcube_label('surname'), 'surname');
+ $select->add($RCMAIL->gettext('name'), 'name');
+ $select->add($RCMAIL->gettext('firstname'), 'firstname');
+ $select->add($RCMAIL->gettext('surname'), 'surname');
$blocks['main']['options']['sort_col'] = array(
- 'title' => html::label($field_id, Q(rcube_label('listsorting'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('listsorting'))),
'content' => $select->show($config['addressbook_sort_col']),
);
}
@@ -948,7 +990,7 @@ function rcmail_user_prefs($current = null)
$size = intval($config['addressbook_pagesize'] ? $config['addressbook_pagesize'] : $config['pagesize']);
$blocks['main']['options']['pagesize'] = array(
- 'title' => html::label($field_id, Q(rcube_label('pagesize'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('pagesize'))),
'content' => $input->show($size ? $size : 50),
);
}
@@ -962,7 +1004,7 @@ function rcmail_user_prefs($current = null)
$checkbox = new html_checkbox(array('name' => '_autocomplete_single', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['autocomplete_single'] = array(
- 'title' => html::label($field_id, Q(rcube_label('autocompletesingle'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('autocompletesingle'))),
'content' => $checkbox->show($config['autocomplete_single']?1:0),
);
}
@@ -971,8 +1013,8 @@ function rcmail_user_prefs($current = null)
// Special IMAP folders
case 'folders':
$blocks = array(
- 'main' => array('name' => Q(rcube_label('mainoptions'))),
- 'advanced' => array('name' => Q(rcube_label('advancedoptions'))),
+ 'main' => array('name' => rcube::Q($RCMAIL->gettext('mainoptions'))),
+ 'advanced' => array('name' => rcube::Q($RCMAIL->gettext('advancedoptions'))),
);
if (!isset($no_override['show_real_foldernames'])) {
@@ -984,14 +1026,14 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_show_real_foldernames', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['show_real_foldernames'] = array(
- 'title' => html::label($field_id, Q(rcube_label('show_real_foldernames'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('show_real_foldernames'))),
'content' => $input->show($config['show_real_foldernames']?1:0),
);
}
// Configure special folders
if (!isset($no_override['default_folders']) && $current) {
- $select = rcmail_mailbox_select(array(
+ $select = $RCMAIL->folder_selector(array(
'noselection' => '---',
'realnames' => true,
'maxlength' => 30,
@@ -1009,7 +1051,7 @@ function rcmail_user_prefs($current = null)
}
$blocks['main']['options']['drafts_mbox'] = array(
- 'title' => Q(rcube_label('drafts')),
+ 'title' => rcube::Q($RCMAIL->gettext('drafts')),
'content' => $select->show($config['drafts_mbox'], array('name' => "_drafts_mbox", 'onchange' => $onchange)),
);
}
@@ -1020,7 +1062,7 @@ function rcmail_user_prefs($current = null)
}
$blocks['main']['options']['sent_mbox'] = array(
- 'title' => Q(rcube_label('sent')),
+ 'title' => rcube::Q($RCMAIL->gettext('sent')),
'content' => $select->show($config['sent_mbox'], array('name' => "_sent_mbox", 'onchange' => '')),
);
}
@@ -1031,7 +1073,7 @@ function rcmail_user_prefs($current = null)
}
$blocks['main']['options']['junk_mbox'] = array(
- 'title' => Q(rcube_label('junk')),
+ 'title' => rcube::Q($RCMAIL->gettext('junk')),
'content' => $select->show($config['junk_mbox'], array('name' => "_junk_mbox", 'onchange' => $onchange)),
);
}
@@ -1042,7 +1084,7 @@ function rcmail_user_prefs($current = null)
}
$blocks['main']['options']['trash_mbox'] = array(
- 'title' => Q(rcube_label('trash')),
+ 'title' => rcube::Q($RCMAIL->gettext('trash')),
'content' => $select->show($config['trash_mbox'], array('name' => "_trash_mbox", 'onchange' => $onchange)),
);
}
@@ -1051,9 +1093,9 @@ function rcmail_user_prefs($current = null)
// Server settings
case 'server':
$blocks = array(
- 'main' => array('name' => Q(rcube_label('mainoptions'))),
- 'maintenance' => array('name' => Q(rcube_label('maintenance'))),
- 'advanced' => array('name' => Q(rcube_label('advancedoptions'))),
+ 'main' => array('name' => rcube::Q($RCMAIL->gettext('mainoptions'))),
+ 'maintenance' => array('name' => rcube::Q($RCMAIL->gettext('maintenance'))),
+ 'advanced' => array('name' => rcube::Q($RCMAIL->gettext('advancedoptions'))),
);
if (!isset($no_override['read_when_deleted'])) {
@@ -1065,7 +1107,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_read_when_deleted', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['read_when_deleted'] = array(
- 'title' => html::label($field_id, Q(rcube_label('readwhendeleted'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('readwhendeleted'))),
'content' => $input->show($config['read_when_deleted']?1:0),
);
}
@@ -1079,7 +1121,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_flag_for_deletion', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['flag_for_deletion'] = array(
- 'title' => html::label($field_id, Q(rcube_label('flagfordeletion'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('flagfordeletion'))),
'content' => $input->show($config['flag_for_deletion']?1:0),
);
}
@@ -1094,7 +1136,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_skip_deleted', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['skip_deleted'] = array(
- 'title' => html::label($field_id, Q(rcube_label('skipdeleted'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('skipdeleted'))),
'content' => $input->show($config['skip_deleted']?1:0),
);
}
@@ -1108,7 +1150,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_delete_always', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['delete_always'] = array(
- 'title' => html::label($field_id, Q(rcube_label('deletealways'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('deletealways'))),
'content' => $input->show($config['delete_always']?1:0),
);
}
@@ -1122,7 +1164,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_delete_junk', 'id' => $field_id, 'value' => 1));
$blocks['main']['options']['delete_junk'] = array(
- 'title' => html::label($field_id, Q(rcube_label('deletejunk'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('deletejunk'))),
'content' => $input->show($config['delete_junk']?1:0),
);
}
@@ -1137,7 +1179,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_logout_purge', 'id' => $field_id, 'value' => 1));
$blocks['maintenance']['options']['logout_purge'] = array(
- 'title' => html::label($field_id, Q(rcube_label('logoutclear'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('logoutclear'))),
'content' => $input->show($config['logout_purge']?1:0),
);
}
@@ -1152,7 +1194,7 @@ function rcmail_user_prefs($current = null)
$input = new html_checkbox(array('name' => '_logout_expunge', 'id' => $field_id, 'value' => 1));
$blocks['maintenance']['options']['logout_expunge'] = array(
- 'title' => html::label($field_id, Q(rcube_label('logoutcompact'))),
+ 'title' => html::label($field_id, rcube::Q($RCMAIL->gettext('logoutcompact'))),
'content' => $input->show($config['logout_expunge']?1:0),
);
}
@@ -1162,14 +1204,31 @@ function rcmail_user_prefs($current = null)
$data = $RCMAIL->plugins->exec_hook('preferences_list',
array('section' => $sect['id'], 'blocks' => $blocks, 'current' => $current));
+ $advanced_prefs = (array) $RCMAIL->config->get('advanced_prefs');
+
// create output
- foreach ($data['blocks'] as $block) {
+ foreach ($data['blocks'] as $key => $block) {
if (!empty($block['content']) || !empty($block['options'])) {
$found = true;
- break;
+ }
+ // move some options to the 'advanced' block as configured by admin
+ if ($key != 'advanced') {
+ foreach ($advanced_prefs as $opt) {
+ if ($block['options'][$opt]) {
+ $data['blocks']['advanced']['options'][$opt] = $block['options'][$opt];
+ unset($data['blocks'][$key]['options'][$opt]);
+ }
+ }
}
}
+ // move 'advanced' block to the end of the list
+ if (!empty($data['blocks']['advanced'])) {
+ $adv = $data['blocks']['advanced'];
+ unset($data['blocks']['advanced']);
+ $data['blocks']['advanced'] = $adv;
+ }
+
if (!$found)
unset($sections[$idx]);
else
@@ -1230,20 +1289,22 @@ function rcmail_update_folder_row($name, $oldname=null, $subscribe=false, $class
$storage = $RCMAIL->get_storage();
$delimiter = $storage->get_hierarchy_delimiter();
- $name_utf8 = rcube_charset_convert($name, 'UTF7-IMAP');
+ $name_utf8 = rcube_charset::convert($name, 'UTF7-IMAP');
$protected = $protect_folders && in_array($name, $default_folders);
$foldersplit = explode($delimiter, $storage->mod_folder($name));
$level = count($foldersplit) - 1;
$display_name = str_repeat('&nbsp;&nbsp;&nbsp;&nbsp;', $level)
- . Q($protected ? rcmail_localize_foldername($name) : rcube_charset_convert($foldersplit[$level], 'UTF7-IMAP'));
+ . rcube::Q($protected ? $RCMAIL->localize_foldername($name) : rcube_charset::convert($foldersplit[$level], 'UTF7-IMAP'));
- if ($oldname === null)
+ if ($oldname === null) {
$OUTPUT->command('add_folder_row', $name_utf8, $display_name, $protected, $subscribe,
false, $class_name);
- else
- $OUTPUT->command('replace_folder_row', rcube_charset_convert($oldname, 'UTF7-IMAP'),
+ }
+ else {
+ $OUTPUT->command('replace_folder_row', rcube_charset::convert($oldname, 'UTF7-IMAP'),
$name_utf8, $display_name, $protected, $class_name);
+ }
}
/**
@@ -1260,17 +1321,18 @@ function rcmail_settings_tabs($attrib)
array('command' => 'preferences', 'type' => 'link', 'label' => 'preferences', 'title' => 'editpreferences'),
array('command' => 'folders', 'type' => 'link', 'label' => 'folders', 'title' => 'managefolders'),
array('command' => 'identities', 'type' => 'link', 'label' => 'identities', 'title' => 'manageidentities'),
+ array('command' => 'responses', 'type' => 'link', 'label' => 'responses', 'title' => 'editresponses'),
);
// get all identites from DB and define list of cols to be displayed
$plugin = $RCMAIL->plugins->exec_hook('settings_actions', array(
'actions' => $default_actions,
- 'attrib' => $attrib,
+ 'attrib' => $attrib,
));
- $attrib = $plugin['attrib'];
+ $attrib = $plugin['attrib'];
$tagname = $attrib['tagname'];
- $tabs = array();
+ $tabs = array();
foreach ($plugin['actions'] as $k => $action) {
if (!$action['command'] && !$action['href'] && $action['action']) {
@@ -1278,13 +1340,15 @@ function rcmail_settings_tabs($attrib)
}
$button = $OUTPUT->button($action);
- $attr = $attrib;
+ $attr = $attrib;
$cmd = $action['action'] ? $action['action'] : $action['command'];
- $id = $action['id'] ? $action['id'] : $cmd;
+ $id = $action['id'] ? $action['id'] : $cmd;
+
if (!empty($id)) {
$attr['id'] = preg_replace('/[^a-z0-9]/i', '', $attrib['idprefix'] . $id);
}
+
$classnames = array($attrib['class']);
if (!empty($action['class'])) {
$classnames[] = $action['class'];
@@ -1295,30 +1359,10 @@ function rcmail_settings_tabs($attrib)
if ($RCMAIL->action == $cmd) {
$classnames[] = $attrib['selclass'];
}
+
$attr['class'] = join(' ', $classnames);
$tabs[] = html::tag($tagname, $attr, $button, html::$common_attrib);
}
return join('', $tabs);
}
-
-
-// register UI objects
-$OUTPUT->add_handlers(array(
- 'settingstabs' => 'rcmail_settings_tabs',
- 'prefsframe' => 'rcmail_preferences_frame',
- 'sectionslist' => 'rcmail_sections_list',
- 'identitieslist' => 'rcmail_identities_list',
-));
-
-// register action aliases
-$RCMAIL->register_action_map(array(
- 'folders' => 'folders.inc',
- 'rename-folder' => 'folders.inc',
- 'delete-folder' => 'folders.inc',
- 'subscribe' => 'folders.inc',
- 'unsubscribe' => 'folders.inc',
- 'purge' => 'folders.inc',
- 'folder-size' => 'folders.inc',
- 'add-identity' => 'edit_identity.inc',
-));
diff --git a/program/steps/settings/identities.inc b/program/steps/settings/identities.inc
index 82a1841a3..e19c16c79 100644
--- a/program/steps/settings/identities.inc
+++ b/program/steps/settings/identities.inc
@@ -5,7 +5,7 @@
| program/steps/settings/identities.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2007, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -21,23 +21,24 @@
define('IDENTITIES_LEVEL', intval($RCMAIL->config->get('identities_level', 0)));
-$OUTPUT->set_pagetitle(rcube_label('identities'));
+$OUTPUT->set_pagetitle($RCMAIL->gettext('identities'));
$OUTPUT->include_script('list.js');
-
-// similar function as /steps/addressbook/func.inc::rcmail_contact_frame()
-function rcmail_identity_frame($attrib)
- {
- global $OUTPUT;
-
- if (!$attrib['id'])
- $attrib['id'] = 'rcmIdentityFrame';
-
- return $OUTPUT->frame($attrib, true);
- }
-
$OUTPUT->add_handler('identityframe', 'rcmail_identity_frame');
$OUTPUT->set_env('identities_level', IDENTITIES_LEVEL);
$OUTPUT->add_label('deleteidentityconfirm');
$OUTPUT->send('identities');
+
+
+// similar function as /steps/addressbook/func.inc::rcmail_contact_frame()
+function rcmail_identity_frame($attrib)
+{
+ global $OUTPUT;
+
+ if (!$attrib['id']) {
+ $attrib['id'] = 'rcmIdentityFrame';
+ }
+
+ return $OUTPUT->frame($attrib, true);
+}
diff --git a/program/steps/settings/responses.inc b/program/steps/settings/responses.inc
new file mode 100644
index 000000000..35a2a1b64
--- /dev/null
+++ b/program/steps/settings/responses.inc
@@ -0,0 +1,133 @@
+<?php
+
+/*
+ +-----------------------------------------------------------------------+
+ | program/steps/settings/responses.inc |
+ | |
+ | This file is part of the Roundcube Webmail client |
+ | Copyright (C) 2013, The Roundcube Dev Team |
+ | |
+ | Licensed under the GNU General Public License version 3 or |
+ | any later version with exceptions for skins & plugins. |
+ | See the README file for a full license statement. |
+ | |
+ | PURPOSE: |
+ | Manage and save canned response texts |
+ | |
+ +-----------------------------------------------------------------------+
+ | Author: Thomas Bruederli <roundcube@gmail.com> |
+ +-----------------------------------------------------------------------+
+*/
+
+
+if (!empty($_POST['_insert'])) {
+ $name = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST));
+ $text = trim(rcube_utils::get_input_value('_text', rcube_utils::INPUT_POST));
+
+ if (!empty($name) && !empty($text)) {
+ $dupes = 0;
+ $responses = $RCMAIL->get_compose_responses(false, true);
+ foreach ($responses as $resp) {
+ if (strcasecmp($name, preg_replace('/\s\(\d+\)$/', '', $resp['name'])) == 0)
+ $dupes++;
+ }
+ if ($dupes) { // require a unique name
+ $name .= ' (' . ++$dupes . ')';
+ }
+
+ $response = array('name' => $name, 'text' => $text, 'format' => 'text', 'key' => substr(md5($name), 0, 16));
+ $responses[] = $response;
+
+ if ($RCMAIL->user->save_prefs(array('compose_responses' => $responses))) {
+ $RCMAIL->output->command('add_response_item', $response);
+ $RCMAIL->output->command('display_message', $RCMAIL->gettext('successfullysaved'), 'confirmation');
+ }
+ else {
+ $RCMAIL->output->command('display_message', $RCMAIL->gettext('errorsaving'), 'error');
+ }
+ }
+
+ // send response
+ $RCMAIL->output->send();
+}
+
+if ($RCMAIL->action == 'delete-response') {
+ if ($key = rcube_utils::get_input_value('_key', rcube_utils::INPUT_GPC)) {
+ $responses = $RCMAIL->get_compose_responses(false, true);
+ foreach ($responses as $i => $response) {
+ if (empty($response['key']))
+ $response['key'] = substr(md5($response['name']), 0, 16);
+ if ($response['key'] == $key) {
+ unset($responses[$i]);
+ $deleted = $RCMAIL->user->save_prefs(array('compose_responses' => $responses));
+ break;
+ }
+ }
+ }
+
+ if ($deleted) {
+ $RCMAIL->output->command('display_message', $RCMAIL->gettext('deletedsuccessfully'), 'confirmation');
+ $RCMAIL->output->command('remove_response', $key);
+ }
+
+ if ($RCMAIL->output->ajax_call) {
+ $RCMAIL->output->send();
+ }
+}
+
+
+$OUTPUT->set_pagetitle($RCMAIL->gettext('responses'));
+$OUTPUT->include_script('list.js');
+
+$OUTPUT->add_handlers(array(
+ 'responseframe' => 'rcmail_response_frame',
+ 'responseslist' => 'rcmail_responses_list',
+));
+$OUTPUT->add_label('deleteresponseconfirm');
+
+$OUTPUT->send('responses');
+
+
+/**
+ *
+ */
+function rcmail_responses_list($attrib)
+{
+ global $RCMAIL, $OUTPUT;
+
+ $attrib += array('id' => 'rcmresponseslist', 'tagname' => 'table', 'cols' => 1);
+
+ $plugin = $RCMAIL->plugins->exec_hook('responses_list', array(
+ 'list' => $RCMAIL->get_compose_responses(true),
+ 'cols' => array('name')
+ ));
+
+ $out = $RCMAIL->table_output($attrib, $plugin['list'], $plugin['cols'], 'key');
+
+ $readonly_responses = array();
+ foreach ($plugin['list'] as $item) {
+ if (!empty($item['static'])) {
+ $readonly_responses[] = $item['key'];
+ }
+ }
+
+ // set client env
+ $OUTPUT->add_gui_object('responseslist', $attrib['id']);
+ $OUTPUT->set_env('readonly_responses', $readonly_responses);
+
+ return $out;
+}
+
+// similar function as /steps/addressbook/func.inc::rcmail_contact_frame()
+function rcmail_response_frame($attrib)
+{
+ global $OUTPUT;
+
+ if (!$attrib['id']) {
+ $attrib['id'] = 'rcmResponseFrame';
+ }
+
+ $OUTPUT->set_env('contentframe', $attrib['id']);
+
+ return $OUTPUT->frame($attrib, true);
+}
diff --git a/program/steps/settings/save_folder.inc b/program/steps/settings/save_folder.inc
index 877b0fbbe..d1449bb38 100644
--- a/program/steps/settings/save_folder.inc
+++ b/program/steps/settings/save_folder.inc
@@ -1,11 +1,11 @@
<?php
-/**
+/*
+-----------------------------------------------------------------------+
| program/steps/settings/save_folder.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2012, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -19,18 +19,17 @@
+-----------------------------------------------------------------------+
*/
-// WARNING: folder names in UI are encoded with RCMAIL_CHARSET
+// WARNING: folder names in UI are encoded with RCUBE_CHARSET
// init IMAP connection
$STORAGE = $RCMAIL->get_storage();
+$name = trim(rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST, true));
+$old = rcube_utils::get_input_value('_mbox', rcube_utils::INPUT_POST, true);
+$path = rcube_utils::get_input_value('_parent', rcube_utils::INPUT_POST, true);
-$name = trim(get_input_value('_name', RCUBE_INPUT_POST, true));
-$old = trim(get_input_value('_mbox', RCUBE_INPUT_POST, true));
-$path = trim(get_input_value('_parent', RCUBE_INPUT_POST, true));
-
-$name_imap = rcube_charset_convert($name, RCMAIL_CHARSET, 'UTF7-IMAP');
-$old_imap = rcube_charset_convert($old, RCMAIL_CHARSET, 'UTF7-IMAP');
+$name_imap = rcube_charset::convert($name, RCUBE_CHARSET, 'UTF7-IMAP');
+$old_imap = rcube_charset::convert($old, RCUBE_CHARSET, 'UTF7-IMAP');
// $path is in UTF7-IMAP already
$delimiter = $STORAGE->get_hierarchy_delimiter();
@@ -40,16 +39,16 @@ $options = strlen($old_imap) ? rcmail_folder_options($old_imap) : array();
if ($options['protected'] || $options['norename']) {
}
else if (!strlen($name)) {
- $error = rcube_label('cannotbeempty');
+ $error = $RCMAIL->gettext('namecannotbeempty');
}
else if (mb_strlen($name) > 128) {
- $error = rcube_label('nametoolong');
+ $error = $RCMAIL->gettext('nametoolong');
}
else {
// these characters are problematic e.g. when used in LIST/LSUB
foreach (array($delimiter, '%', '*') as $char) {
if (strpos($name, $delimiter) !== false) {
- $error = rcube_label('forbiddencharacter') . " ($char)";
+ $error = $RCMAIL->gettext('forbiddencharacter') . " ($char)";
break;
}
}
@@ -76,7 +75,7 @@ if (!$error && strlen($path) && (!strlen($old_imap) || $old_imap != $name_imap))
if ($parent_opts['namespace'] != 'personal'
&& (empty($parent_opts['rights']) || !preg_match('/[ck]/', implode($parent_opts['rights'])))
) {
- $error = rcube_label('parentnotwritable');
+ $error = $RCMAIL->gettext('parentnotwritable');
}
}
@@ -90,15 +89,14 @@ else {
$folder['options'] = $options;
$folder['settings'] = array(
// List view mode: 0-list, 1-threads
- 'view_mode' => (int) get_input_value('_viewmode', RCUBE_INPUT_POST),
- 'sort_column' => get_input_value('_sortcol', RCUBE_INPUT_POST),
- 'sort_order' => get_input_value('_sortord', RCUBE_INPUT_POST),
+ 'view_mode' => (int) rcube_utils::get_input_value('_viewmode', rcube_utils::INPUT_POST),
+ 'sort_column' => rcube_utils::get_input_value('_sortcol', rcube_utils::INPUT_POST),
+ 'sort_order' => rcube_utils::get_input_value('_sortord', rcube_utils::INPUT_POST),
);
}
// create a new mailbox
if (!$error && !strlen($old)) {
-
$folder['subscribe'] = true;
$plugin = $RCMAIL->plugins->exec_hook('folder_create', array('record' => $folder));
@@ -136,7 +134,6 @@ if (!$error && !strlen($old)) {
$OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error', null, false);
}
}
-
// update a mailbox
else if (!$error) {
$plugin = $RCMAIL->plugins->exec_hook('folder_update', array('record' => $folder));
@@ -192,6 +189,9 @@ else if (!$error) {
rcmail_update_folder_row($folder['name'], $folder['oldname'], $folder['subscribe'], $folder['class']);
$OUTPUT->send('iframe');
}
+ else if (!empty($folder['class'])) {
+ rcmail_update_folder_row($folder['name'], $folder['oldname'], $folder['subscribe'], $folder['class']);
+ }
}
else {
// show error message
@@ -199,4 +199,4 @@ else if (!$error) {
}
}
-rcmail_overwrite_action('edit-folder');
+$RCMAIL->overwrite_action('edit-folder');
diff --git a/program/steps/settings/save_identity.inc b/program/steps/settings/save_identity.inc
index d3b132f8b..1584c5f00 100644
--- a/program/steps/settings/save_identity.inc
+++ b/program/steps/settings/save_identity.inc
@@ -5,7 +5,7 @@
| program/steps/settings/save_identity.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2009, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -21,161 +21,173 @@
define('IDENTITIES_LEVEL', intval($RCMAIL->config->get('identities_level', 0)));
-$a_save_cols = array('name', 'email', 'organization', 'reply-to', 'bcc', 'standard', 'signature', 'html_signature');
+$a_save_cols = array('name', 'email', 'organization', 'reply-to', 'bcc', 'standard', 'signature', 'html_signature');
$a_boolean_cols = array('standard', 'html_signature');
$updated = $default_id = false;
// check input
if (IDENTITIES_LEVEL != 4 && (empty($_POST['_name']) || (empty($_POST['_email']) && IDENTITIES_LEVEL != 1 && IDENTITIES_LEVEL != 3))) {
- $OUTPUT->show_message('formincomplete', 'warning');
- rcmail_overwrite_action('edit-identity');
- return;
+ $OUTPUT->show_message('formincomplete', 'warning');
+ $RCMAIL->overwrite_action('edit-identity');
+ return;
}
$save_data = array();
foreach ($a_save_cols as $col) {
- $fname = '_'.$col;
- if (isset($_POST[$fname]))
- $save_data[$col] = get_input_value($fname, RCUBE_INPUT_POST, true);
+ $fname = '_'.$col;
+ if (isset($_POST[$fname])) {
+ $save_data[$col] = rcube_utils::get_input_value($fname, rcube_utils::INPUT_POST, true);
+ }
}
// set "off" values for checkboxes that were not checked, and therefore
// not included in the POST body.
foreach ($a_boolean_cols as $col) {
- $fname = '_' . $col;
- if (!isset($_POST[$fname]))
- $save_data[$col] = 0;
+ $fname = '_' . $col;
+ if (!isset($_POST[$fname])) {
+ $save_data[$col] = 0;
+ }
}
// unset email address if user has no rights to change it
if (IDENTITIES_LEVEL == 1 || IDENTITIES_LEVEL == 3) {
- unset($save_data['email']);
+ unset($save_data['email']);
}
// unset all fields except signature
else if (IDENTITIES_LEVEL == 4) {
- foreach ($save_data as $idx => $value) {
- if ($idx != 'signature' && $idx != 'html_signature') {
- unset($save_data[$idx]);
+ foreach ($save_data as $idx => $value) {
+ if ($idx != 'signature' && $idx != 'html_signature') {
+ unset($save_data[$idx]);
+ }
}
- }
}
// Validate e-mail addresses
-$email_checks = array(rcube_idn_to_ascii($save_data['email']));
+$email_checks = array(rcube_utils::idn_to_ascii($save_data['email']));
foreach (array('reply-to', 'bcc') as $item) {
- foreach (rcube_mime::decode_address_list($save_data[$item], null, false) as $rcpt)
- $email_checks[] = rcube_idn_to_ascii($rcpt['mailto']);
+ foreach (rcube_mime::decode_address_list($save_data[$item], null, false) as $rcpt) {
+ $email_checks[] = rcube_utils::idn_to_ascii($rcpt['mailto']);
+ }
}
foreach ($email_checks as $email) {
- if ($email && !check_email($email)) {
- // show error message
- $OUTPUT->show_message('emailformaterror', 'error', array('email' => rcube_idn_to_utf8($email)), false);
- rcmail_overwrite_action('edit-identity');
- return;
- }
+ if ($email && !rcube_utils::check_email($email)) {
+ // show error message
+ $OUTPUT->show_message('emailformaterror', 'error', array('email' => rcube_utils::idn_to_utf8($email)), false);
+ $RCMAIL->overwrite_action('edit-identity');
+ return;
+ }
}
// XSS protection in HTML signature (#1489251)
if (!empty($save_data['signature']) && !empty($save_data['html_signature'])) {
- $save_data['signature'] = rcmail_wash_html($save_data['signature']);
+ $save_data['signature'] = rcmail_wash_html($save_data['signature']);
- // clear POST data of signature, we want to use safe content
- // when the form is displayed again
- unset($_POST['_signature']);
+ // clear POST data of signature, we want to use safe content
+ // when the form is displayed again
+ unset($_POST['_signature']);
}
// update an existing contact
if ($_POST['_iid']) {
- $iid = get_input_value('_iid', RCUBE_INPUT_POST);
-
- if (in_array(IDENTITIES_LEVEL, array(1,3,4))) {
- // merge with old identity data, fixes #1488834
- $identity = $RCMAIL->user->get_identity($iid);
- $save_data = array_merge($identity, $save_data);
- unset($save_data['changed'], $save_data['del'], $save_data['user_id'], $save_data['identity_id']);
- }
-
- $plugin = $RCMAIL->plugins->exec_hook('identity_update', array('id' => $iid, 'record' => $save_data));
- $save_data = $plugin['record'];
-
- if ($save_data['email'])
- $save_data['email'] = rcube_idn_to_ascii($save_data['email']);
- if (!$plugin['abort'])
- $updated = $RCMAIL->user->update_identity($iid, $save_data);
- else
- $updated = $plugin['result'];
-
- if ($updated) {
- $OUTPUT->show_message('successfullysaved', 'confirmation');
-
- if (!empty($save_data['standard']))
- $default_id = $iid;
-
- if ($_POST['_framed']) {
- // update the changed col in list
- $OUTPUT->command('parent.update_identity_row', $iid, Q(trim($save_data['name'] . ' <' . rcube_idn_to_utf8($save_data['email']) .'>')));
+ $iid = rcube_utils::get_input_value('_iid', rcube_utils::INPUT_POST);
+
+ if (in_array(IDENTITIES_LEVEL, array(1,3,4))) {
+ // merge with old identity data, fixes #1488834
+ $identity = $RCMAIL->user->get_identity($iid);
+ $save_data = array_merge($identity, $save_data);
+
+ unset($save_data['changed'], $save_data['del'], $save_data['user_id'], $save_data['identity_id']);
}
- }
- else {
- // show error message
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error', null, false);
- rcmail_overwrite_action('edit-identity');
- return;
- }
-}
+ $plugin = $RCMAIL->plugins->exec_hook('identity_update', array('id' => $iid, 'record' => $save_data));
+ $save_data = $plugin['record'];
+
+ if ($save_data['email']) {
+ $save_data['email'] = rcube_utils::idn_to_ascii($save_data['email']);
+ }
+
+ if (!$plugin['abort'])
+ $updated = $RCMAIL->user->update_identity($iid, $save_data);
+ else
+ $updated = $plugin['result'];
+
+ if ($updated) {
+ $OUTPUT->show_message('successfullysaved', 'confirmation');
+
+ if (!empty($save_data['standard'])) {
+ $default_id = $iid;
+ }
+
+ if ($_POST['_framed']) {
+ // update the changed col in list
+ $name = $save_data['name'] . ' <' . rcube_utils::idn_to_utf8($save_data['email']) .'>';
+ $OUTPUT->command('parent.update_identity_row', $iid, rcube::Q(trim($name)));
+ }
+ }
+ else {
+ // show error message
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error', null, false);
+ $RCMAIL->overwrite_action('edit-identity');
+ return;
+ }
+}
// insert a new identity record
else if (IDENTITIES_LEVEL < 2) {
- if (IDENTITIES_LEVEL == 1) {
- $save_data['email'] = $RCMAIL->get_user_email();
- }
+ if (IDENTITIES_LEVEL == 1) {
+ $save_data['email'] = $RCMAIL->get_user_email();
+ }
- $plugin = $RCMAIL->plugins->exec_hook('identity_create', array('record' => $save_data));
- $save_data = $plugin['record'];
+ $plugin = $RCMAIL->plugins->exec_hook('identity_create', array('record' => $save_data));
+ $save_data = $plugin['record'];
- if ($save_data['email'])
- $save_data['email'] = rcube_idn_to_ascii($save_data['email']);
+ if ($save_data['email']) {
+ $save_data['email'] = rcube_utils::idn_to_ascii($save_data['email']);
+ }
- if (!$plugin['abort'])
- $insert_id = $save_data['email'] ? $RCMAIL->user->insert_identity($save_data) : null;
- else
- $insert_id = $plugin['result'];
+ if (!$plugin['abort'])
+ $insert_id = $save_data['email'] ? $RCMAIL->user->insert_identity($save_data) : null;
+ else
+ $insert_id = $plugin['result'];
- if ($insert_id) {
- $OUTPUT->show_message('successfullysaved', 'confirmation', null, false);
+ if ($insert_id) {
+ $OUTPUT->show_message('successfullysaved', 'confirmation', null, false);
- $_GET['_iid'] = $insert_id;
+ $_GET['_iid'] = $insert_id;
- if (!empty($save_data['standard']))
- $default_id = $insert_id;
+ if (!empty($save_data['standard'])) {
+ $default_id = $insert_id;
+ }
- if ($_POST['_framed']) {
- // add a new row to the list
- $OUTPUT->command('parent.update_identity_row', $insert_id, Q(trim($save_data['name'] . ' <' . rcube_idn_to_utf8($save_data['email']) .'>')), true);
+ if ($_POST['_framed']) {
+ // add a new row to the list
+ $name = $save_data['name'] . ' <' . rcube_utils::idn_to_utf8($save_data['email']) .'>';
+ $OUTPUT->command('parent.update_identity_row', $insert_id, rcube::Q(trim($name)), true);
+ }
+ }
+ else {
+ // show error message
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error', null, false);
+ $RCMAIL->overwrite_action('edit-identity');
+ return;
}
- }
- else {
- // show error message
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error', null, false);
- rcmail_overwrite_action('edit-identity');
- return;
- }
}
-else
- $OUTPUT->show_message('opnotpermitted', 'error');
-
+else {
+ $OUTPUT->show_message('opnotpermitted', 'error');
+}
// mark all other identities as 'not-default'
-if ($default_id)
- $RCMAIL->user->set_default($default_id);
+if ($default_id) {
+ $RCMAIL->user->set_default($default_id);
+}
// go to next step
if (!empty($_REQUEST['_framed'])) {
- rcmail_overwrite_action('edit-identity');
+ $RCMAIL->overwrite_action('edit-identity');
+}
+else {
+ $RCMAIL->overwrite_action('identities');
}
-else
- rcmail_overwrite_action('identities');
/**
@@ -185,16 +197,16 @@ function rcmail_wash_html($html)
{
// Add header with charset spec., washtml cannot work without that
$html = '<html><head>'
- . '<meta http-equiv="Content-Type" content="text/html; charset='.RCMAIL_CHARSET.'" />'
+ . '<meta http-equiv="Content-Type" content="text/html; charset='.RCUBE_CHARSET.'" />'
. '</head><body>' . $html . '</body></html>';
// clean HTML with washhtml by Frederic Motte
$wash_opts = array(
- 'show_washed' => false,
- 'allow_remote' => 1,
- 'charset' => RCMAIL_CHARSET,
+ 'show_washed' => false,
+ 'allow_remote' => 1,
+ 'charset' => RCUBE_CHARSET,
'html_elements' => array('body', 'link'),
- 'html_attribs' => array('rel', 'type'),
+ 'html_attribs' => array('rel', 'type'),
);
// initialize HTML washer
@@ -204,12 +216,12 @@ function rcmail_wash_html($html)
//$washer->add_callback('style', 'rcmail_washtml_callback');
// Remove non-UTF8 characters (#1487813)
- $html = rc_utf8_clean($html);
+ $html = rcube_charset::clean($html);
$html = $washer->wash($html);
// remove unwanted comments and tags (produced by washtml)
$html = preg_replace(array('/<!--[^>]+-->/', '/<\/?body>/'), '', $html);
- return $html;
+ return $html;
}
diff --git a/program/steps/settings/save_prefs.inc b/program/steps/settings/save_prefs.inc
index 717c7ad8c..f71eee39a 100644
--- a/program/steps/settings/save_prefs.inc
+++ b/program/steps/settings/save_prefs.inc
@@ -5,7 +5,7 @@
| program/steps/settings/save_prefs.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2009, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -19,190 +19,191 @@
+-----------------------------------------------------------------------+
*/
-$CURR_SECTION = get_input_value('_section', RCUBE_INPUT_POST);
-
+$CURR_SECTION = rcube_utils::get_input_value('_section', rcube_utils::INPUT_POST);
$a_user_prefs = array();
// set options for specified section
-switch ($CURR_SECTION)
-{
- case 'general':
+switch ($CURR_SECTION) {
+case 'general':
$a_user_prefs = array(
- 'language' => isset($_POST['_language']) ? get_input_value('_language', RCUBE_INPUT_POST) : $CONFIG['language'],
- 'timezone' => isset($_POST['_timezone']) ? get_input_value('_timezone', RCUBE_INPUT_POST) : $CONFIG['timezone'],
- 'date_format' => isset($_POST['_date_format']) ? get_input_value('_date_format', RCUBE_INPUT_POST) : $CONFIG['date_format'],
- 'time_format' => isset($_POST['_time_format']) ? get_input_value('_time_format', RCUBE_INPUT_POST) : ($CONFIG['time_format'] ? $CONFIG['time_format'] : 'H:i'),
- 'prettydate' => isset($_POST['_pretty_date']) ? TRUE : FALSE,
- 'refresh_interval' => isset($_POST['_refresh_interval']) ? intval($_POST['_refresh_interval'])*60 : $CONFIG['refresh_interval'],
- 'standard_windows' => isset($_POST['_standard_windows']) ? TRUE : FALSE,
- 'skin' => isset($_POST['_skin']) ? get_input_value('_skin', RCUBE_INPUT_POST) : $CONFIG['skin'],
+ 'language' => isset($_POST['_language']) ? rcube_utils::get_input_value('_language', rcube_utils::INPUT_POST) : $CONFIG['language'],
+ 'timezone' => isset($_POST['_timezone']) ? rcube_utils::get_input_value('_timezone', rcube_utils::INPUT_POST) : $CONFIG['timezone'],
+ 'date_format' => isset($_POST['_date_format']) ? rcube_utils::get_input_value('_date_format', rcube_utils::INPUT_POST) : $CONFIG['date_format'],
+ 'time_format' => isset($_POST['_time_format']) ? rcube_utils::get_input_value('_time_format', rcube_utils::INPUT_POST) : ($CONFIG['time_format'] ? $CONFIG['time_format'] : 'H:i'),
+ 'prettydate' => isset($_POST['_pretty_date']) ? true : false,
+ 'refresh_interval' => isset($_POST['_refresh_interval']) ? intval($_POST['_refresh_interval'])*60 : $CONFIG['refresh_interval'],
+ 'standard_windows' => isset($_POST['_standard_windows']) ? true : false,
+ 'skin' => isset($_POST['_skin']) ? rcube_utils::get_input_value('_skin', rcube_utils::INPUT_POST) : $CONFIG['skin'],
);
// compose derived date/time format strings
if ((isset($_POST['_date_format']) || isset($_POST['_time_format'])) && $a_user_prefs['date_format'] && $a_user_prefs['time_format']) {
- $a_user_prefs['date_short'] = 'D ' . $a_user_prefs['time_format'];
- $a_user_prefs['date_long'] = $a_user_prefs['date_format'] . ' ' . $a_user_prefs['time_format'];
+ $a_user_prefs['date_short'] = 'D ' . $a_user_prefs['time_format'];
+ $a_user_prefs['date_long'] = $a_user_prefs['date_format'] . ' ' . $a_user_prefs['time_format'];
}
- break;
+ break;
- case 'mailbox':
+case 'mailbox':
$a_user_prefs = array(
- 'preview_pane' => isset($_POST['_preview_pane']) ? TRUE : FALSE,
- 'preview_pane_mark_read' => isset($_POST['_preview_pane_mark_read']) ? intval($_POST['_preview_pane_mark_read']) : $CONFIG['preview_pane_mark_read'],
- 'autoexpand_threads' => isset($_POST['_autoexpand_threads']) ? intval($_POST['_autoexpand_threads']) : 0,
- 'mdn_requests' => isset($_POST['_mdn_requests']) ? intval($_POST['_mdn_requests']) : 0,
- 'check_all_folders' => isset($_POST['_check_all_folders']) ? TRUE : FALSE,
- 'mail_pagesize' => is_numeric($_POST['_mail_pagesize']) ? max(2, intval($_POST['_mail_pagesize'])) : $CONFIG['mail_pagesize'],
+ 'preview_pane' => isset($_POST['_preview_pane']) ? true : false,
+ 'preview_pane_mark_read' => isset($_POST['_preview_pane_mark_read']) ? intval($_POST['_preview_pane_mark_read']) : $CONFIG['preview_pane_mark_read'],
+ 'autoexpand_threads' => isset($_POST['_autoexpand_threads']) ? intval($_POST['_autoexpand_threads']) : 0,
+ 'mdn_requests' => isset($_POST['_mdn_requests']) ? intval($_POST['_mdn_requests']) : 0,
+ 'check_all_folders' => isset($_POST['_check_all_folders']) ? true : false,
+ 'mail_pagesize' => is_numeric($_POST['_mail_pagesize']) ? max(2, intval($_POST['_mail_pagesize'])) : $CONFIG['mail_pagesize'],
);
- break;
+ break;
- case 'mailview':
+case 'mailview':
$a_user_prefs = array(
- 'message_extwin' => intval($_POST['_message_extwin']),
- 'message_show_email' => isset($_POST['_message_show_email']) ? TRUE : FALSE,
- 'prefer_html' => isset($_POST['_prefer_html']) ? TRUE : FALSE,
- 'inline_images' => isset($_POST['_inline_images']) ? TRUE : FALSE,
- 'show_images' => isset($_POST['_show_images']) ? intval($_POST['_show_images']) : 0,
- 'display_next' => isset($_POST['_display_next']) ? TRUE : FALSE,
- 'default_charset' => get_input_value('_default_charset', RCUBE_INPUT_POST),
+ 'message_extwin' => intval($_POST['_message_extwin']),
+ 'message_show_email' => isset($_POST['_message_show_email']) ? true : false,
+ 'prefer_html' => isset($_POST['_prefer_html']) ? true : false,
+ 'inline_images' => isset($_POST['_inline_images']) ? true : false,
+ 'show_images' => isset($_POST['_show_images']) ? intval($_POST['_show_images']) : 0,
+ 'display_next' => isset($_POST['_display_next']) ? true : false,
+ 'default_charset' => rcube_utils::get_input_value('_default_charset', rcube_utils::INPUT_POST),
);
- break;
+ break;
- case 'compose':
+case 'compose':
$a_user_prefs = array(
- 'compose_extwin' => intval($_POST['_compose_extwin']),
- 'htmleditor' => intval($_POST['_htmleditor']),
- 'draft_autosave' => isset($_POST['_draft_autosave']) ? intval($_POST['_draft_autosave']) : 0,
- 'mime_param_folding' => isset($_POST['_mime_param_folding']) ? intval($_POST['_mime_param_folding']) : 0,
- 'force_7bit' => isset($_POST['_force_7bit']) ? TRUE : FALSE,
- 'mdn_default' => isset($_POST['_mdn_default']) ? TRUE : FALSE,
- 'dsn_default' => isset($_POST['_dsn_default']) ? TRUE : FALSE,
- 'reply_same_folder' => isset($_POST['_reply_same_folder']) ? TRUE : FALSE,
- 'spellcheck_before_send' => isset($_POST['_spellcheck_before_send']) ? TRUE : FALSE,
- 'spellcheck_ignore_syms' => isset($_POST['_spellcheck_ignore_syms']) ? TRUE : FALSE,
- 'spellcheck_ignore_nums' => isset($_POST['_spellcheck_ignore_nums']) ? TRUE : FALSE,
- 'spellcheck_ignore_caps' => isset($_POST['_spellcheck_ignore_caps']) ? TRUE : FALSE,
- 'show_sig' => isset($_POST['_show_sig']) ? intval($_POST['_show_sig']) : 1,
- 'reply_mode' => isset($_POST['_reply_mode']) ? intval($_POST['_reply_mode']) : 0,
- 'strip_existing_sig' => isset($_POST['_strip_existing_sig']),
- 'default_font' => get_input_value('_default_font', RCUBE_INPUT_POST),
- 'default_font_size' => get_input_value('_default_font_size', RCUBE_INPUT_POST),
- 'forward_attachment' => !empty($_POST['_forward_attachment']),
+ 'compose_extwin' => intval($_POST['_compose_extwin']),
+ 'htmleditor' => intval($_POST['_htmleditor']),
+ 'draft_autosave' => isset($_POST['_draft_autosave']) ? intval($_POST['_draft_autosave']) : 0,
+ 'mime_param_folding' => isset($_POST['_mime_param_folding']) ? intval($_POST['_mime_param_folding']) : 0,
+ 'force_7bit' => isset($_POST['_force_7bit']) ? true : false,
+ 'mdn_default' => isset($_POST['_mdn_default']) ? true : false,
+ 'dsn_default' => isset($_POST['_dsn_default']) ? true : false,
+ 'reply_same_folder' => isset($_POST['_reply_same_folder']) ? true : false,
+ 'spellcheck_before_send' => isset($_POST['_spellcheck_before_send']) ? true : false,
+ 'spellcheck_ignore_syms' => isset($_POST['_spellcheck_ignore_syms']) ? true : false,
+ 'spellcheck_ignore_nums' => isset($_POST['_spellcheck_ignore_nums']) ? true : false,
+ 'spellcheck_ignore_caps' => isset($_POST['_spellcheck_ignore_caps']) ? true : false,
+ 'show_sig' => isset($_POST['_show_sig']) ? intval($_POST['_show_sig']) : 1,
+ 'reply_mode' => isset($_POST['_reply_mode']) ? intval($_POST['_reply_mode']) : 0,
+ 'strip_existing_sig' => isset($_POST['_strip_existing_sig']),
+ 'default_font' => rcube_utils::get_input_value('_default_font', rcube_utils::INPUT_POST),
+ 'default_font_size' => rcube_utils::get_input_value('_default_font_size', rcube_utils::INPUT_POST),
+ 'reply_all_mode' => intval($_POST['_reply_all_mode']),
+ 'forward_attachment' => !empty($_POST['_forward_attachment']),
);
- break;
+ break;
- case 'addressbook':
+case 'addressbook':
$a_user_prefs = array(
- 'default_addressbook' => get_input_value('_default_addressbook', RCUBE_INPUT_POST, true),
- 'autocomplete_single' => isset($_POST['_autocomplete_single']) ? TRUE : FALSE,
- 'addressbook_sort_col' => get_input_value('_addressbook_sort_col', RCUBE_INPUT_POST),
- 'addressbook_name_listing' => intval(get_input_value('_addressbook_name_listing', RCUBE_INPUT_POST)),
- 'addressbook_pagesize' => is_numeric($_POST['_addressbook_pagesize']) ? max(2, intval($_POST['_addressbook_pagesize'])) : $CONFIG['addressbook_pagesize'],
+ 'default_addressbook' => rcube_utils::get_input_value('_default_addressbook', rcube_utils::INPUT_POST, true),
+ 'autocomplete_single' => isset($_POST['_autocomplete_single']) ? true : false,
+ 'addressbook_sort_col' => rcube_utils::get_input_value('_addressbook_sort_col', rcube_utils::INPUT_POST),
+ 'addressbook_name_listing' => intval(rcube_utils::get_input_value('_addressbook_name_listing', rcube_utils::INPUT_POST)),
+ 'addressbook_pagesize' => is_numeric($_POST['_addressbook_pagesize']) ? max(2, intval($_POST['_addressbook_pagesize'])) : $CONFIG['addressbook_pagesize'],
);
- break;
+ break;
- case 'server':
+case 'server':
$a_user_prefs = array(
- 'read_when_deleted' => isset($_POST['_read_when_deleted']) ? TRUE : FALSE,
- 'skip_deleted' => isset($_POST['_skip_deleted']) ? TRUE : FALSE,
- 'flag_for_deletion' => isset($_POST['_flag_for_deletion']) ? TRUE : FALSE,
- 'delete_always' => isset($_POST['_delete_always']) ? TRUE : FALSE,
- 'delete_junk' => isset($_POST['_delete_junk']) ? TRUE : FALSE,
- 'logout_purge' => isset($_POST['_logout_purge']) ? TRUE : FALSE,
- 'logout_expunge' => isset($_POST['_logout_expunge']) ? TRUE : FALSE,
+ 'read_when_deleted' => isset($_POST['_read_when_deleted']) ? true : false,
+ 'skip_deleted' => isset($_POST['_skip_deleted']) ? true : false,
+ 'flag_for_deletion' => isset($_POST['_flag_for_deletion']) ? true : false,
+ 'delete_always' => isset($_POST['_delete_always']) ? true : false,
+ 'delete_junk' => isset($_POST['_delete_junk']) ? true : false,
+ 'logout_purge' => isset($_POST['_logout_purge']) ? true : false,
+ 'logout_expunge' => isset($_POST['_logout_expunge']) ? true : false,
);
- break;
+ break;
- case 'folders':
+case 'folders':
$a_user_prefs = array(
- 'show_real_foldernames' =>
- isset($_POST['_show_real_foldernames']) ? TRUE : FALSE,
- 'drafts_mbox' => get_input_value('_drafts_mbox', RCUBE_INPUT_POST, true),
- 'sent_mbox' => get_input_value('_sent_mbox', RCUBE_INPUT_POST, true),
- 'junk_mbox' => get_input_value('_junk_mbox', RCUBE_INPUT_POST, true),
- 'trash_mbox' => get_input_value('_trash_mbox', RCUBE_INPUT_POST, true),
+ 'show_real_foldernames' => isset($_POST['_show_real_foldernames']) ? true : false,
+ 'drafts_mbox' => rcube_utils::get_input_value('_drafts_mbox', rcube_utils::INPUT_POST, true),
+ 'sent_mbox' => rcube_utils::get_input_value('_sent_mbox', rcube_utils::INPUT_POST, true),
+ 'junk_mbox' => rcube_utils::get_input_value('_junk_mbox', rcube_utils::INPUT_POST, true),
+ 'trash_mbox' => rcube_utils::get_input_value('_trash_mbox', rcube_utils::INPUT_POST, true),
);
- break;
+ break;
}
$plugin = rcmail::get_instance()->plugins->exec_hook('preferences_save',
- array('prefs' => $a_user_prefs, 'section' => $CURR_SECTION));
+ array('prefs' => $a_user_prefs, 'section' => $CURR_SECTION));
$a_user_prefs = $plugin['prefs'];
// don't override these parameters
-foreach ((array)$CONFIG['dont_override'] as $p)
- $a_user_prefs[$p] = $CONFIG[$p];
+foreach ((array)$CONFIG['dont_override'] as $p) {
+ $a_user_prefs[$p] = $CONFIG[$p];
+}
// verify some options
-switch ($CURR_SECTION)
-{
- case 'general':
-
+switch ($CURR_SECTION) {
+case 'general':
// switch UI language
if (isset($_POST['_language']) && $a_user_prefs['language'] != $_SESSION['language']) {
- $RCMAIL->load_language($a_user_prefs['language']);
- $OUTPUT->command('reload', 500);
+ $RCMAIL->load_language($a_user_prefs['language']);
+ $OUTPUT->command('reload', 500);
}
// switch skin (if valid, otherwise unset the pref and fall back to default)
if (!$OUTPUT->set_skin($a_user_prefs['skin']))
- unset($a_user_prefs['skin']);
+ unset($a_user_prefs['skin']);
else if ($RCMAIL->config->get('skin') != $a_user_prefs['skin'])
- $OUTPUT->command('reload', 500);
+ $OUTPUT->command('reload', 500);
$a_user_prefs['timezone'] = (string) $a_user_prefs['timezone'];
if (!empty($a_user_prefs['refresh_interval']) && !empty($CONFIG['min_refresh_interval'])) {
- if ($a_user_prefs['refresh_interval'] < $CONFIG['min_refresh_interval']) {
- $a_user_prefs['refresh_interval'] = $CONFIG['min_refresh_interval'];
- }
+ if ($a_user_prefs['refresh_interval'] < $CONFIG['min_refresh_interval']) {
+ $a_user_prefs['refresh_interval'] = $CONFIG['min_refresh_interval'];
+ }
}
break;
- case 'mailbox':
-
+case 'mailbox':
// force min size
- if ($a_user_prefs['mail_pagesize'] < 1)
- $a_user_prefs['mail_pagesize'] = 10;
+ if ($a_user_prefs['mail_pagesize'] < 1) {
+ $a_user_prefs['mail_pagesize'] = 10;
+ }
- if (isset($CONFIG['max_pagesize']) && ($a_user_prefs['mail_pagesize'] > $CONFIG['max_pagesize']))
- $a_user_prefs['mail_pagesize'] = (int) $CONFIG['max_pagesize'];
+ if (isset($CONFIG['max_pagesize']) && ($a_user_prefs['mail_pagesize'] > $CONFIG['max_pagesize'])) {
+ $a_user_prefs['mail_pagesize'] = (int) $CONFIG['max_pagesize'];
+ }
break;
- case 'addressbook':
-
+case 'addressbook':
// force min size
- if ($a_user_prefs['addressbook_pagesize'] < 1)
- $a_user_prefs['addressbook_pagesize'] = 10;
+ if ($a_user_prefs['addressbook_pagesize'] < 1) {
+ $a_user_prefs['addressbook_pagesize'] = 10;
+ }
- if (isset($CONFIG['max_pagesize']) && ($a_user_prefs['addressbook_pagesize'] > $CONFIG['max_pagesize']))
- $a_user_prefs['addressbook_pagesize'] = (int) $CONFIG['max_pagesize'];
+ if (isset($CONFIG['max_pagesize']) && ($a_user_prefs['addressbook_pagesize'] > $CONFIG['max_pagesize'])) {
+ $a_user_prefs['addressbook_pagesize'] = (int) $CONFIG['max_pagesize'];
+ }
break;
- case 'folders':
-
+case 'folders':
// special handling for 'default_folders'
if (in_array('default_folders', (array)$CONFIG['dont_override'])) {
- foreach (array('drafts_mbox','sent_mbox','junk_mbox','trash_mbox') as $p)
- $a_user_prefs[$p] = $CONFIG[$p];
- } else {
- $a_user_prefs['default_folders'] = array('INBOX');
- foreach (array('drafts_mbox','sent_mbox','junk_mbox','trash_mbox') as $p) {
- if ($a_user_prefs[$p])
- $a_user_prefs['default_folders'][] = $a_user_prefs[$p];
- }
+ foreach (array('drafts_mbox','sent_mbox','junk_mbox','trash_mbox') as $p) {
+ $a_user_prefs[$p] = $CONFIG[$p];
+ }
+ }
+ else {
+ $a_user_prefs['default_folders'] = array('INBOX');
+ foreach (array('drafts_mbox','sent_mbox','junk_mbox','trash_mbox') as $p) {
+ if ($a_user_prefs[$p]) {
+ $a_user_prefs['default_folders'][] = $a_user_prefs[$p];
+ }
+ }
}
break;
@@ -210,15 +211,14 @@ switch ($CURR_SECTION)
// Save preferences
if (!$plugin['abort'])
- $saved = $RCMAIL->user->save_prefs($a_user_prefs);
+ $saved = $RCMAIL->user->save_prefs($a_user_prefs);
else
- $saved = $plugin['result'];
+ $saved = $plugin['result'];
if ($saved)
- $OUTPUT->show_message('successfullysaved', 'confirmation');
+ $OUTPUT->show_message('successfullysaved', 'confirmation');
else
- $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
+ $OUTPUT->show_message($plugin['message'] ? $plugin['message'] : 'errorsaving', 'error');
// display the form again
-rcmail_overwrite_action('edit-prefs');
-
+$RCMAIL->overwrite_action('edit-prefs');
diff --git a/program/steps/utils/error.inc b/program/steps/utils/error.inc
index 9fb71c528..2a3a9a61e 100644
--- a/program/steps/utils/error.inc
+++ b/program/steps/utils/error.inc
@@ -5,7 +5,7 @@
| program/steps/utils/error.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2012, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -22,10 +22,10 @@
$rcmail = rcmail::get_instance();
// browser is not compatible with this application
-if ($ERROR_CODE==409) {
- $user_agent = htmlentities($_SERVER['HTTP_USER_AGENT']);
- $__error_title = 'Your browser does not suit the requirements for this application';
- $__error_text = <<<EOF
+if ($ERROR_CODE == 409) {
+ $user_agent = htmlentities($_SERVER['HTTP_USER_AGENT']);
+ $__error_title = 'Your browser does not suit the requirements for this application';
+ $__error_text = <<<EOF
<i>Supported browsers:</i><br />
&raquo; &nbsp;Microsoft Internet Explorer 7+<br />
&raquo; &nbsp;Mozilla Firefox 3+<br />
@@ -42,24 +42,24 @@ EOF;
}
// authorization error
-else if ($ERROR_CODE==401) {
- $__error_title = "AUTHORIZATION FAILED";
- $__error_text = "Could not verify that you are authorized to access this service!<br />\n".
- "Please contact your server-administrator.";
+else if ($ERROR_CODE == 401) {
+ $__error_title = "AUTHORIZATION FAILED";
+ $__error_text = "Could not verify that you are authorized to access this service!<br />\n"
+ . "Please contact your server-administrator.";
}
// forbidden due to request check
-else if ($ERROR_CODE==403) {
- $__error_title = "REQUEST CHECK FAILED";
- $__error_text = "Access to this service was denied due to failing security checks!<br />\n".
- "Please contact your server-administrator.";
+else if ($ERROR_CODE == 403) {
+ $__error_title = "REQUEST CHECK FAILED";
+ $__error_text = "Access to this service was denied due to failing security checks!<br />\n"
+ . "Please contact your server-administrator.";
}
// failed request (wrong step in URL)
-else if ($ERROR_CODE==404) {
- $__error_title = "REQUEST FAILED/FILE NOT FOUND";
- $request_url = htmlentities($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
- $__error_text = <<<EOF
+else if ($ERROR_CODE == 404) {
+ $request_url = htmlentities($_SERVER['HTTP_HOST'].$_SERVER['REQUEST_URI']);
+ $__error_title = "REQUEST FAILED/FILE NOT FOUND";
+ $__error_text = <<<EOF
The requested page was not found!<br />
Please contact your server-administrator.
@@ -69,35 +69,36 @@ EOF;
}
// database connection error
-else if ($ERROR_CODE==601)
-{
- $__error_title = "CONFIGURATION ERROR";
- $__error_text = nl2br($ERROR_MESSAGE) . "<br />Please read the INSTALL instructions!";
+else if ($ERROR_CODE == 601) {
+ $__error_title = "CONFIGURATION ERROR";
+ $__error_text = nl2br($ERROR_MESSAGE) . "<br />Please read the INSTALL instructions!";
}
// database connection error
-else if ($ERROR_CODE==603) {
- $__error_title = "DATABASE ERROR: CONNECTION FAILED!";
- $__error_text = "Unable to connect to the database!<br />Please contact your server-administrator.";
+else if ($ERROR_CODE == 603) {
+ $__error_title = "DATABASE ERROR: CONNECTION FAILED!";
+ $__error_text = "Unable to connect to the database!<br />Please contact your server-administrator.";
}
// system error
else {
- $__error_title = "SERVICE CURRENTLY NOT AVAILABLE!";
- $__error_text = "Please contact your server-administrator.";
-
- if (($rcmail->config->get('debug_level') & 4) && $ERROR_MESSAGE)
- $__error_text = $ERROR_MESSAGE;
- else
- $__error_text = sprintf('Error No. [%s]', $ERROR_CODE);
+ $__error_title = "SERVICE CURRENTLY NOT AVAILABLE!";
+ $__error_text = "Please contact your server-administrator.";
+
+ if (($rcmail->config->get('debug_level') & 4) && $ERROR_MESSAGE) {
+ $__error_text = $ERROR_MESSAGE;
+ }
+ else {
+ $__error_text = sprintf('Error No. [%s]', $ERROR_CODE);
+ }
}
$HTTP_ERR_CODE = $ERROR_CODE && $ERROR_CODE < 600 ? $ERROR_CODE : 500;
// Ajax request
if ($rcmail->output && $rcmail->output->type == 'js') {
- header("HTTP/1.0 $HTTP_ERR_CODE $__error_title");
- die;
+ header("HTTP/1.0 $HTTP_ERR_CODE $__error_title");
+ die;
}
// compose page content
@@ -109,8 +110,9 @@ $__page_content = <<<EOF
EOF;
if ($rcmail->output && $rcmail->output->template_exists('error')) {
- $rcmail->output->reset();
- $rcmail->output->send('error');
+ $rcmail->output->reset();
+ $rcmail->output->set_env('server_error', $ERROR_CODE);
+ $rcmail->output->send('error');
}
$__skin = $rcmail->config->get('skin', 'default');
@@ -136,4 +138,3 @@ $__page_content
EOF;
exit;
-
diff --git a/program/steps/utils/html2text.inc b/program/steps/utils/html2text.inc
index c6481b197..c01443b22 100644
--- a/program/steps/utils/html2text.inc
+++ b/program/steps/utils/html2text.inc
@@ -22,7 +22,7 @@
$html = $HTTP_RAW_POST_DATA;
// Replace emoticon images with its text representation
-$html = rcmail_replace_emoticons($html);
+$html = $RCMAIL->replace_emoticons($html);
$converter = new rcube_html2text($html, false, true, 0);
diff --git a/program/steps/utils/modcss.inc b/program/steps/utils/modcss.inc
index 1a28c6598..c8a7cb524 100644
--- a/program/steps/utils/modcss.inc
+++ b/program/steps/utils/modcss.inc
@@ -55,7 +55,7 @@ $ctype = '~Content-Type:\s+text/(css|plain)~i';
if ($source !== false && preg_match($ctype, $headers)) {
header('Content-Type: text/css');
- echo rcmail_mod_css_styles($source, preg_replace('/[^a-z0-9]/i', '', $_GET['_c']));
+ echo rcube_utils::mod_css_styles($source, preg_replace('/[^a-z0-9]/i', '', $_GET['_c']));
exit;
}
diff --git a/program/steps/utils/save_pref.inc b/program/steps/utils/save_pref.inc
index 7def8733d..183c398d3 100644
--- a/program/steps/utils/save_pref.inc
+++ b/program/steps/utils/save_pref.inc
@@ -5,7 +5,7 @@
| program/steps/utils/save_pref.inc |
| |
| This file is part of the Roundcube Webmail client |
- | Copyright (C) 2005-2010, The Roundcube Dev Team |
+ | Copyright (C) 2005-2013, The Roundcube Dev Team |
| |
| Licensed under the GNU General Public License version 3 or |
| any later version with exceptions for skins & plugins. |
@@ -19,17 +19,27 @@
+-----------------------------------------------------------------------+
*/
-$name = get_input_value('_name', RCUBE_INPUT_POST);
-$value = get_input_value('_value', RCUBE_INPUT_POST);
+$name = rcube_utils::get_input_value('_name', rcube_utils::INPUT_POST);
+$value = rcube_utils::get_input_value('_value', rcube_utils::INPUT_POST);
+$sessname = rcube_utils::get_input_value('_session', rcube_utils::INPUT_POST);
+
+// Whitelisted preferences and session variables, others
+// can be added by plugins
$whitelist = array(
'preview_pane',
'list_cols',
'collapsed_folders',
'collapsed_abooks',
);
+$whitelist_sess = array(
+ 'list_attrib/columns',
+);
+
+$whitelist = array_merge($whitelist, $RCMAIL->plugins->allowed_prefs);
+$whitelist_sess = array_merge($whitelist_sess, $RCMAIL->plugins->allowed_session_prefs);
-if (!in_array($name, array_merge($whitelist, $RCMAIL->plugins->allowed_prefs))) {
- raise_error(array('code' => 500, 'type' => 'php',
+if (!in_array($name, $whitelist) || ($sessname && !in_array($sessname, $whitelist_sess))) {
+ rcube::raise_error(array('code' => 500, 'type' => 'php',
'file' => __FILE__, 'line' => __LINE__,
'message' => sprintf("Hack attempt detected (user: %s)", $RCMAIL->get_user_name())),
true, false);
@@ -42,7 +52,7 @@ if (!in_array($name, array_merge($whitelist, $RCMAIL->plugins->allowed_prefs)))
$RCMAIL->user->save_prefs(array($name => $value));
// update also session if requested
-if ($sessname = get_input_value('_session', RCUBE_INPUT_POST)) {
+if ($sessname) {
// Support multidimensional arrays...
$vars = explode('/', $sessname);
@@ -57,5 +67,3 @@ if ($sessname = get_input_value('_session', RCUBE_INPUT_POST)) {
$OUTPUT->reset();
$OUTPUT->send();
-
-
diff --git a/program/steps/utils/spell.inc b/program/steps/utils/spell.inc
index 1c68e8328..c8807e32f 100644
--- a/program/steps/utils/spell.inc
+++ b/program/steps/utils/spell.inc
@@ -20,7 +20,7 @@
*/
// read input
-$lang = get_input_value('lang', RCUBE_INPUT_GET);
+$lang = rcube_utils::get_input_value('lang', rcube_utils::INPUT_GET);
$data = file_get_contents('php://input');
$learn_word = strpos($data, '<learnword>');
@@ -29,13 +29,13 @@ $learn_word = strpos($data, '<learnword>');
$left = strpos($data, '<text>');
$right = strrpos($data, '</text>');
$data = substr($data, $left+6, $right-($left+6));
-$data = html_entity_decode($data, ENT_QUOTES, RCMAIL_CHARSET);
+$data = html_entity_decode($data, ENT_QUOTES, RCUBE_CHARSET);
$spellchecker = new rcube_spellchecker($lang);
if ($learn_word) {
$spellchecker->add_word($data);
- $result = '<?xml version="1.0" encoding="'.RCMAIL_CHARSET.'"?><learnwordresult></learnwordresult>';
+ $result = '<?xml version="1.0" encoding="'.RCUBE_CHARSET.'"?><learnwordresult></learnwordresult>';
}
else {
$spellchecker->check($data);
@@ -47,12 +47,15 @@ if ($err = $spellchecker->error()) {
'file' => __FILE__, 'line' => __LINE__,
'message' => "Spell check engine error: " . trim($err)),
true, false);
+
+ header("HTTP/1.0 500 Internal Server Error");
+ exit;
}
// set response length
header("Content-Length: " . strlen($result));
// Don't use server's default Content-Type charset (#1486406)
-header("Content-Type: text/xml; charset=" . RCMAIL_CHARSET);
+header("Content-Type: text/xml; charset=" . RCUBE_CHARSET);
print $result;
exit;
diff --git a/program/steps/utils/spell_html.inc b/program/steps/utils/spell_html.inc
index 96b41e230..27b14acef 100644
--- a/program/steps/utils/spell_html.inc
+++ b/program/steps/utils/spell_html.inc
@@ -56,7 +56,7 @@ if ($error = $spellchecker->error()) {
}
// send output
-header("Content-Type: text/xml; charset=".RCMAIL_CHARSET);
+header("Content-Type: text/xml; charset=".RCUBE_CHARSET);
echo json_encode($result);
exit;