├── .gitignore ├── skins ├── classic │ ├── tabstyles.css │ ├── images │ │ ├── help.png │ │ ├── tick.png │ │ ├── cross.png │ │ ├── icons.png │ │ ├── mail_toolbar.png │ │ └── messageactions.png │ ├── mailstyles.css │ ├── templates │ │ ├── setupsieverules.html │ │ ├── editsieverule.html │ │ ├── vacation.html │ │ ├── advancededitor.html │ │ └── sieverules.html │ └── sieverules.css └── larry │ ├── images │ ├── help.png │ ├── tick.png │ ├── cross.png │ ├── icons.png │ ├── listicons.png │ ├── mail_toolbar.png │ └── messageactions.png │ ├── mailstyles.css │ ├── templates │ ├── setupsieverules.html │ ├── editsieverule.html │ ├── vacation.html │ ├── advancededitor.html │ └── sieverules.html │ ├── tabstyles.css │ └── sieverules.css ├── composer.json ├── mail.js ├── importFilters ├── avelsieve.php.ex └── ingo.php.ex ├── localization ├── et_EE.inc ├── sk_SK.inc ├── sv_SE.inc ├── es_AR.inc ├── zh_TW.inc ├── hu_HU.inc ├── ca_ES.inc ├── ro_RO.inc ├── sl_SI.inc ├── uk_UA.inc ├── ru_RU.inc ├── fi_FI.inc └── pt_BR.inc ├── jquery.maskedinput.min.js ├── lib └── Roundcube │ └── rcube_sieve.php ├── config.inc.php.dist └── CHANGELOG /.gitignore: -------------------------------------------------------------------------------- 1 | config.inc.php 2 | -------------------------------------------------------------------------------- /skins/classic/tabstyles.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SieveRules plugin styles (tab styles) 3 | */ 4 | -------------------------------------------------------------------------------- /skins/larry/images/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johndoh/roundcube-sieverules/HEAD/skins/larry/images/help.png -------------------------------------------------------------------------------- /skins/larry/images/tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johndoh/roundcube-sieverules/HEAD/skins/larry/images/tick.png -------------------------------------------------------------------------------- /skins/classic/images/help.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johndoh/roundcube-sieverules/HEAD/skins/classic/images/help.png -------------------------------------------------------------------------------- /skins/classic/images/tick.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johndoh/roundcube-sieverules/HEAD/skins/classic/images/tick.png -------------------------------------------------------------------------------- /skins/larry/images/cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johndoh/roundcube-sieverules/HEAD/skins/larry/images/cross.png -------------------------------------------------------------------------------- /skins/larry/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johndoh/roundcube-sieverules/HEAD/skins/larry/images/icons.png -------------------------------------------------------------------------------- /skins/classic/images/cross.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johndoh/roundcube-sieverules/HEAD/skins/classic/images/cross.png -------------------------------------------------------------------------------- /skins/classic/images/icons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johndoh/roundcube-sieverules/HEAD/skins/classic/images/icons.png -------------------------------------------------------------------------------- /skins/larry/images/listicons.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johndoh/roundcube-sieverules/HEAD/skins/larry/images/listicons.png -------------------------------------------------------------------------------- /skins/classic/images/mail_toolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johndoh/roundcube-sieverules/HEAD/skins/classic/images/mail_toolbar.png -------------------------------------------------------------------------------- /skins/larry/images/mail_toolbar.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johndoh/roundcube-sieverules/HEAD/skins/larry/images/mail_toolbar.png -------------------------------------------------------------------------------- /skins/larry/images/messageactions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johndoh/roundcube-sieverules/HEAD/skins/larry/images/messageactions.png -------------------------------------------------------------------------------- /skins/classic/images/messageactions.png: -------------------------------------------------------------------------------- https://raw.githubusercontent.com/johndoh/roundcube-sieverules/HEAD/skins/classic/images/messageactions.png -------------------------------------------------------------------------------- /skins/larry/mailstyles.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SieveRules plugin styles (mail styles) 3 | */ 4 | 5 | #messagetoolbar a.sieverules, 6 | #messagetoolbar a.sieverulesSel 7 | { 8 | background-image: url(images/mail_toolbar.png); 9 | } 10 | 11 | #messagetoolbar a.sieverules, 12 | #messagetoolbar a.sieverulesSel 13 | { 14 | background-position: center -16px; 15 | } 16 | 17 | ul.toolbarmenu li a.sieverules span 18 | { 19 | background-image: url(images/messageactions.png) !important; 20 | background-position: -2px 5px !important; 21 | } -------------------------------------------------------------------------------- /skins/larry/templates/setupsieverules.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <roundcube:object name="pagetitle" /> 5 | 6 | 7 | 8 | 9 | 10 |

11 | 12 |
13 | 14 |
15 | 16 | 17 | 18 | 19 | -------------------------------------------------------------------------------- /skins/classic/mailstyles.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SieveRules plugin styles (mail styles) 3 | */ 4 | 5 | #messagetoolbar a.sieverules, 6 | #messagetoolbar a.sieverulesSel 7 | { 8 | text-indent: -5000px; 9 | background-image: url(images/mail_toolbar.png); 10 | } 11 | 12 | #messagetoolbar a.sieverules, 13 | { 14 | background-position: 0 0; 15 | } 16 | 17 | #messagetoolbar a.sieverulesSel 18 | { 19 | background-position: 0 -32px; 20 | } 21 | 22 | ul.toolbarmenu li a.sieverules 23 | { 24 | background-image: url(images/messageactions.png) !important; 25 | background-position: 7px 1px !important; 26 | background-repeat: no-repeat; 27 | } -------------------------------------------------------------------------------- /skins/classic/templates/setupsieverules.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <roundcube:object name="pagetitle" /> 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | -------------------------------------------------------------------------------- /skins/larry/tabstyles.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SieveRules plugin styles (tab styles) 3 | */ 4 | 5 | #settings-sections #settingstabpluginsieverules a 6 | { 7 | background-image: url(images/listicons.png); 8 | background-position: 6px -2px; 9 | } 10 | 11 | #settings-sections #settingstabpluginsieverules.selected a 12 | { 13 | background-image: url(images/listicons.png); 14 | background-position: 6px -25px; 15 | } 16 | 17 | #settings-sections #settingstabpluginsieverulesvacation a 18 | { 19 | background-image: url(images/listicons.png); 20 | background-position: 6px -72px; 21 | } 22 | 23 | #settings-sections #settingstabpluginsieverulesvacation.selected a 24 | { 25 | background-image: url(images/listicons.png); 26 | background-position: 6px -91px; 27 | } -------------------------------------------------------------------------------- /composer.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "johndoh/sieverules", 3 | "description": "Control sieve filter settings from within Roundcube", 4 | "keywords": ["sieve","filters","managesieve"], 5 | "homepage": "http://github.com/JohnDoh/Roundcube-Plugin-SieveRules-Managesieve/", 6 | "license": "GPL-3.0", 7 | "type": "roundcube-plugin", 8 | "version": "2.3-git", 9 | "authors": [ 10 | { 11 | "name": "Philip Weir", 12 | "email": "roundcube@tehinterweb.co.uk", 13 | "role": "Developer" 14 | } 15 | ], 16 | "repositories": [ 17 | { 18 | "type": "composer", 19 | "url": "http://plugins.roundcube.net" 20 | } 21 | ], 22 | "require": { 23 | "php": ">=5.2.1", 24 | "roundcube/plugin-installer": ">=0.1.2" 25 | }, 26 | "extra": { 27 | "roundcube": { 28 | "min-version": "1.1-beta" 29 | } 30 | } 31 | } -------------------------------------------------------------------------------- /skins/larry/templates/editsieverule.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <roundcube:object name="pagetitle" /> 5 | 6 | 7 | 8 | 9 | 10 |

11 | 12 |
13 | 14 |
15 | 16 |
17 | 18 | 19 |
20 | 21 | 22 | 23 | 24 | -------------------------------------------------------------------------------- /skins/classic/templates/editsieverule.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <roundcube:object name="pagetitle" /> 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 |
13 | 14 | 15 |


16 | 17 | 18 |

19 |
20 | 21 | 22 | -------------------------------------------------------------------------------- /skins/classic/templates/vacation.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <roundcube:object name="pagetitle" /> 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 |
18 |
19 | 20 |
21 | 22 |
23 |

24 |
25 |
26 | 27 |
28 | 29 | 30 | -------------------------------------------------------------------------------- /skins/larry/templates/vacation.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <roundcube:object name="pagetitle" /> 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 |
17 | 18 |

19 | 20 |
21 | 22 |
23 | 24 |
25 | 26 |
27 | 28 |
29 | 30 |
31 | 32 | 33 | 34 | 35 | -------------------------------------------------------------------------------- /mail.js: -------------------------------------------------------------------------------- 1 | /** 2 | * SieveRules plugin script 3 | * 4 | * @licstart The following is the entire license notice for the 5 | * JavaScript code in this file. 6 | * 7 | * Copyright (C) 2014 Philip Weir 8 | * 9 | * The JavaScript code in this page is free software: you can redistribute it 10 | * and/or modify it under the terms of the GNU General Public License 11 | * as published by the Free Software Foundation, either version 3 of 12 | * the License, or (at your option) any later version. 13 | * 14 | * @licend The above is the entire license notice 15 | * for the JavaScript code in this file. 16 | */ 17 | 18 | function rcmail_sieverules() { 19 | if (!rcmail.env.uid && (!rcmail.message_list || !rcmail.message_list.get_selection().length)) 20 | return; 21 | 22 | var uids = rcmail.env.uid ? rcmail.env.uid : rcmail.message_list.get_selection(); 23 | 24 | var lock = rcmail.set_busy(true, 'loading'); 25 | rcmail.http_post('plugin.sieverules.add_rule', rcmail.selection_post_data({_uid: uids}), lock); 26 | } 27 | 28 | $(document).ready(function() { 29 | if (window.rcmail) { 30 | rcmail.addEventListener('init', function(evt) { 31 | rcmail.register_command('plugin.sieverules.create', rcmail_sieverules, rcmail.env.uid); 32 | 33 | if (rcmail.message_list) { 34 | rcmail.message_list.addEventListener('select', function(list) { 35 | rcmail.enable_command('plugin.sieverules.create', list.selection.length > 0); 36 | }); 37 | } 38 | }); 39 | } 40 | }); -------------------------------------------------------------------------------- /importFilters/avelsieve.php.ex: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /importFilters/ingo.php.ex: -------------------------------------------------------------------------------- 1 | -------------------------------------------------------------------------------- /skins/larry/templates/advancededitor.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <roundcube:object name="pagetitle" /> 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 | 15 | 16 |
17 | 18 |

19 | 20 |
21 | 22 |
23 | 24 |
25 |
26 | 27 |
28 |
29 | 30 |
31 | 32 |
33 |
34 | 35 |
36 | 37 | 38 | 39 |
40 |
    41 | 42 |
  • 43 | 44 |
  • 45 |
  • 46 |
  • 47 | 48 | > 49 |
50 |
51 | 52 | 53 | -------------------------------------------------------------------------------- /skins/classic/templates/advancededitor.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <roundcube:object name="pagetitle" /> 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 |
18 |
19 | 20 |
21 | 22 |
23 | 24 |
25 | 26 |
27 |
28 | 29 |
30 | 31 |
32 | 33 |
34 | 35 |
36 |
    37 | 38 |
  • 39 | 40 |
  • 41 |
  • 42 |
  • 43 | 44 | > 45 |
46 |
47 | 48 | 51 | 52 | 53 | -------------------------------------------------------------------------------- /localization/et_EE.inc: -------------------------------------------------------------------------------- 1 | 0){h=a(this[0]);var p=h.data(a.mask.dataName);return p?p():void 0}return g=a.extend({autoclear:a.mask.autoclear,placeholder:a.mask.placeholder,completed:null},g),i=a.mask.definitions,j=[],k=n=c.length,l=null,a.each(c.split(""),function(a,b){"?"==b?(n--,k=a):i[b]?(j.push(new RegExp(i[b])),null===l&&(l=j.length-1),k>a&&(m=j.length-1)):j.push(null)}),this.trigger("unmask").each(function(){function h(){if(g.completed){for(var a=l;m>=a;a++)if(j[a]&&C[a]===p(a))return;g.completed.call(B)}}function p(a){return g.placeholder.charAt(a=0&&!j[a];);return a}function s(a,b){var c,d;if(!(0>a)){for(c=a,d=q(b);n>c;c++)if(j[c]){if(!(n>d&&j[c].test(C[d])))break;C[c]=C[d],C[d]=p(d),d=q(d)}z(),B.caret(Math.max(l,a))}}function t(a){var b,c,d,e;for(b=a,c=p(a);n>b;b++)if(j[b]){if(d=q(b),e=C[b],C[b]=c,!(n>d&&j[d].test(e)))break;c=e}}function u(){var a=B.val(),b=B.caret();if(o&&o.length&&o.length>a.length){for(A(!0);b.begin>0&&!j[b.begin-1];)b.begin--;if(0===b.begin)for(;b.beging)&&g&&13!==g){if(i.end-i.begin!==0&&(y(i.begin,i.end),s(i.begin,i.end-1)),c=q(i.begin-1),n>c&&(d=String.fromCharCode(g),j[c].test(d))){if(t(c),C[c]=d,z(),e=q(c),f){var k=function(){a.proxy(a.fn.caret,B,e)()};setTimeout(k,0)}else B.caret(e);i.begin<=m&&h()}b.preventDefault()}}}function y(a,b){var c;for(c=a;b>c&&n>c;c++)j[c]&&(C[c]=p(c))}function z(){B.val(C.join(""))}function A(a){var b,c,d,e=B.val(),f=-1;for(b=0,d=0;n>b;b++)if(j[b]){for(C[b]=p(b);d++e.length){y(b+1,n);break}}else C[b]===e.charAt(d)&&d++,k>b&&(f=b);return a?z():k>f+1?g.autoclear||C.join("")===D?(B.val()&&B.val(""),y(0,n)):z():(z(),B.val(B.val().substring(0,f+1))),k?b:l}var B=a(this),C=a.map(c.split(""),function(a,b){return"?"!=a?i[a]?p(b):a:void 0}),D=C.join(""),E=B.val();B.data(a.mask.dataName,function(){return a.map(C,function(a,b){return j[b]&&a!=p(b)?a:null}).join("")}),B.one("unmask",function(){B.off(".mask").removeData(a.mask.dataName)}).on("focus.mask",function(){if(!B.prop("readonly")){clearTimeout(b);var a;E=B.val(),a=A(),b=setTimeout(function(){B.get(0)===document.activeElement&&(z(),a==c.replace("?","").length?B.caret(0,a):B.caret(a))},10)}}).on("blur.mask",v).on("keydown.mask",w).on("keypress.mask",x).on("input.mask paste.mask",function(){B.prop("readonly")||setTimeout(function(){var a=A(!0);B.caret(a),h()},0)}),e&&f&&B.off("input.mask").on("input.mask",u),A()})}})}); -------------------------------------------------------------------------------- /skins/larry/templates/sieverules.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <roundcube:object name="pagetitle" /> 5 | 6 | 7 | 8 | 9 | 10 | 11 | 12 |
13 | 14 |

:

15 | 16 | 17 | 18 |
19 | 20 | 30 | 31 |
32 |
33 | 34 |
35 |
36 | 37 |
38 | 39 |
40 | 41 | 42 | 43 | 57 | 58 | 72 | 73 | 74 | -------------------------------------------------------------------------------- /skins/classic/templates/sieverules.html: -------------------------------------------------------------------------------- 1 | 2 | 3 | 4 | <roundcube:object name="pagetitle" /> 5 | 6 | 7 | 8 | 9 | 10 | 20 | 21 | 22 | 23 | 24 | 25 | 26 | 27 | 28 |
29 | 30 |
31 |
32 | 33 | 34 |
35 |
36 | 37 | 38 | 39 | 40 | 41 |
42 |
43 | 44 | 54 | 55 |
56 | 57 |
58 | 59 |
60 | 61 |
62 |
    63 | 64 |
  • 65 | 66 |
  • 67 |
  • 68 |
  • 69 | 70 | 71 | > 72 | 73 |
74 |
75 | 76 | 79 | 80 | 81 | -------------------------------------------------------------------------------- /skins/classic/sieverules.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SieveRules plugin styles 3 | */ 4 | 5 | #sieverules-list 6 | { 7 | position: absolute; 8 | top: 0; 9 | bottom: 0; 10 | width: 240px; 11 | } 12 | 13 | .sieverules-boxcontent 14 | { 15 | position: absolute; 16 | top: 0; 17 | bottom: 23px; 18 | width: 100%; 19 | } 20 | 21 | #sieverules-list-filters 22 | { 23 | position: absolute; 24 | top: 0; 25 | left: 0; 26 | right: 0; 27 | bottom: 0; 28 | width: 100%; 29 | border: 1px solid #999999; 30 | overflow: auto; 31 | } 32 | 33 | #sieverules-list-filters thead th 34 | { 35 | height: 20px; 36 | } 37 | 38 | #sieverules-list-filters thead th span 39 | { 40 | position: absolute; 41 | top: 2px; 42 | left: 4px; 43 | right: 25px; 44 | height: 20px; 45 | white-space: nowrap; 46 | overflow: hidden; 47 | text-overflow: ellipsis; 48 | } 49 | 50 | 51 | #sieverules-list-filters thead th img 52 | { 53 | position: absolute; 54 | top: 2px; 55 | right: 2px; 56 | } 57 | 58 | #sieverules-list-examples 59 | { 60 | position: absolute; 61 | bottom: 0; 62 | left: 0; 63 | right: 0; 64 | width: 100%; 65 | border: 1px solid #999999; 66 | overflow: auto; 67 | } 68 | 69 | #sieverules-list div.boxfooter 70 | { 71 | border: 1px solid #999999; 72 | border-top: 0; 73 | width: 100%; 74 | } 75 | 76 | #sieverules-details 77 | { 78 | position: absolute; 79 | top: 0; 80 | left: 250px; 81 | right: 0; 82 | bottom: 0; 83 | border: 1px solid #999999; 84 | } 85 | 86 | #sieverules-advanced, 87 | #sieverules-vacation 88 | { 89 | position: absolute; 90 | top: 0; 91 | left: 0; 92 | bottom: 25px; 93 | right: 0; 94 | overflow: hidden; 95 | border: 1px solid #999999; 96 | } 97 | 98 | span.disableLink 99 | { 100 | float: right; 101 | width: 200px; 102 | text-align: right; 103 | } 104 | 105 | table.sieverules-table, 106 | table.sieverules-examples 107 | { 108 | width: 100%; 109 | border-collapse: collapse; 110 | border-spacing: 0px; 111 | } 112 | 113 | table.sieverules-table tbody td 114 | { 115 | cursor: default; 116 | } 117 | 118 | table.sieverules-table tbody td.control, 119 | #rules-table tbody td.control, 120 | #actions-table tbody td.control 121 | { 122 | text-align: right; 123 | } 124 | 125 | table.sieverules-table tbody td.control a, 126 | #rules-table tbody td.control a, 127 | #actions-table tbody td.control a 128 | { 129 | display: inline-block; 130 | width: 16px; 131 | height: 16px; 132 | background-image: url(images/icons.png); 133 | } 134 | 135 | table.sieverules-table tbody td.control a { 136 | height: 10px; 137 | } 138 | 139 | table.sieverules-table tbody td.control a.up_arrow 140 | { 141 | background-position: 0 -2px; 142 | } 143 | 144 | table.sieverules-table tbody td.control a.down_arrow 145 | { 146 | background-position: 0 -19px; 147 | } 148 | 149 | #rules-table tbody td.control, 150 | #actions-table tbody td.control 151 | { 152 | vertical-align: top; 153 | } 154 | 155 | #rules-table tbody td.control a.add, 156 | #actions-table tbody td.control a.add 157 | { 158 | margin-left: 5px; 159 | background-position: 0 -72px; 160 | } 161 | 162 | #rules-table tbody td.control a.delete, 163 | #actions-table tbody td.control a.delete 164 | { 165 | background-position: 0 -54px; 166 | } 167 | 168 | #rules-table tbody td.control a.delete_act, 169 | #actions-table tbody td.control a.delete_act 170 | { 171 | background-position: 0 -36px; 172 | } 173 | 174 | #actions-table tbody a.vacsig 175 | { 176 | display: block; 177 | width: 16px; 178 | height: 16px; 179 | background-image: url(images/icons.png); 180 | background-position: 0 -108px; 181 | } 182 | 183 | #actions-table tbody a.vacsig_act 184 | { 185 | display: block; 186 | width: 16px; 187 | height: 16px; 188 | background-image: url(images/icons.png); 189 | background-position: 0 -90px; 190 | } 191 | 192 | #rules-table, 193 | #actions-table, 194 | #rules-table td table.records-table 195 | { 196 | width: 100%; 197 | } 198 | 199 | #rules-table td.selheader, 200 | #rules-table td.op 201 | { 202 | width: 130px; 203 | } 204 | 205 | #rules-table td.header 206 | { 207 | width: 135px; 208 | } 209 | 210 | #rules-table td.target 211 | { 212 | width: 160px; 213 | } 214 | 215 | #rules-table input 216 | { 217 | width: 150px; 218 | } 219 | 220 | #rules-table input.short 221 | { 222 | width: 100px; 223 | } 224 | 225 | #rules-table select 226 | { 227 | width: 123px; 228 | } 229 | 230 | #rules-table select.short 231 | { 232 | width: 45px; 233 | } 234 | 235 | #rules-table select.long 236 | { 237 | width: 157px; 238 | } 239 | 240 | #rules-table td table.records-table select 241 | { 242 | width: 432px; 243 | } 244 | 245 | #rules-table td table.records-table input 246 | { 247 | width: 426px; 248 | } 249 | 250 | #rules-table td table.records-table input.short 251 | { 252 | width: 406px; 253 | } 254 | 255 | #rules-table td table.records-table input.radio 256 | { 257 | width: auto; 258 | } 259 | 260 | #actions-table td.action 261 | { 262 | width: 165px; 263 | vertical-align: top; 264 | } 265 | 266 | #actions-table td.folder 267 | { 268 | width: 420px; 269 | vertical-align: top; 270 | } 271 | 272 | #actions-table td.action select 273 | { 274 | width: 160px; 275 | } 276 | 277 | #actions-table td.folder input, 278 | #actions-table td.folder textarea 279 | { 280 | width: 400px; 281 | } 282 | 283 | #actions-table td.folder select 284 | { 285 | width: 408px; 286 | } 287 | 288 | #actions-table td.folder table.records-table select 289 | { 290 | width: 337px; 291 | } 292 | 293 | #actions-table td.folder table.records-table input, 294 | #actions-table td.folder table.records-table textarea 295 | { 296 | width: 330px; 297 | } 298 | 299 | #actions-table td.folder table.records-table input.short, 300 | #actions-table td.folder table.records-table select.short 301 | { 302 | width: 310px; 303 | } 304 | 305 | #actions-table td.folder table.records-table input.checkbox, 306 | #actions-table td.folder table.records-table input.radio 307 | { 308 | width: auto; 309 | } 310 | 311 | table.records-table td.msg 312 | { 313 | vertical-align: top; 314 | } 315 | 316 | table.records-table td.helpmsg 317 | { 318 | width: 398px; 319 | white-space: -moz-pre-wrap !important; 320 | white-space: pre-wrap !important; 321 | white-space: pre; 322 | } 323 | 324 | #listbuttons 325 | { 326 | position: absolute; 327 | bottom: 18px; 328 | left: 20px; 329 | } 330 | 331 | #advancedmode 332 | { 333 | white-space: nowrap; 334 | text-align: right; 335 | position: absolute; 336 | bottom: 30px; 337 | right: 20px; 338 | width: 460px; 339 | } 340 | 341 | #sieverules-advancedbox 342 | { 343 | position: absolute; 344 | top: 20px; 345 | left: 0; 346 | bottom: 26px; 347 | right: 4px; 348 | } 349 | 350 | #sieverules-advanced textarea 351 | { 352 | position: absolute; 353 | top: 0; 354 | left: 0; 355 | border: 0; 356 | width: 100%; 357 | height: 100%; 358 | } 359 | 360 | .records-table tbody tr.droptarget td 361 | { 362 | border-top: 2px solid #000000; 363 | } 364 | 365 | .records-table tbody tr.droptargetend td 366 | { 367 | border-bottom: 2px solid #000000; 368 | } 369 | 370 | #sieverulesrsdialog h3 371 | { 372 | color: #333; 373 | font-size: normal; 374 | margin-top: 0.5em; 375 | margin-bottom: 1em; 376 | } 377 | 378 | #sieverulesrsdialog table td.title 379 | { 380 | color: #666; 381 | text-align: right; 382 | padding-right: 1em; 383 | white-space: nowrap; 384 | } 385 | 386 | #sieverulesrsdialog table td input 387 | { 388 | width: 20em; 389 | } 390 | 391 | #sieverulesrsdialog .formbuttons 392 | { 393 | margin-top: 1.5em; 394 | text-align: center; 395 | } 396 | 397 | input.inputmask 398 | { 399 | color: #999999; 400 | } 401 | 402 | #sieverulesactionsmenu a.selected 403 | { 404 | font-weight: bold; 405 | } 406 | 407 | #sieverules-advbuttons 408 | { 409 | position: absolute; 410 | left: 0; 411 | bottom: 0; 412 | } 413 | 414 | #sieverules-vacation .boxcontent { 415 | background-color: transparent; 416 | } 417 | 418 | #sieverules-vacation textarea, 419 | #sieverules-vacation #actions-table select, 420 | #sieverules-vacation #actions-table input[type=text] { 421 | width: 99%; 422 | min-width: 390px; 423 | } -------------------------------------------------------------------------------- /skins/larry/sieverules.css: -------------------------------------------------------------------------------- 1 | /** 2 | * SieveRules plugin styles 3 | */ 4 | 5 | #sieverules-list 6 | { 7 | position: absolute; 8 | top: 0; 9 | left: 0; 10 | width: 260px; 11 | bottom: 0; 12 | } 13 | 14 | #sieverules-list-filters 15 | { 16 | position: absolute; 17 | top: 0; 18 | left: 0; 19 | right: 0; 20 | bottom: 0; 21 | width: 100%; 22 | overflow: auto; 23 | } 24 | 25 | #sieverules-list h2 img 26 | { 27 | position: absolute; 28 | top: 7px; 29 | right: 8px; 30 | } 31 | 32 | #sieverules-list-examples 33 | { 34 | position: absolute; 35 | bottom: 0; 36 | left: 0; 37 | right: 0; 38 | width: 100%; 39 | overflow: auto; 40 | } 41 | 42 | #sieverules-list-examples thead th 43 | { 44 | text-align: left; 45 | } 46 | 47 | #sieverules-details 48 | { 49 | position: absolute; 50 | top: 0; 51 | left: 270px; 52 | right: 0; 53 | bottom: 0; 54 | } 55 | 56 | #sieverules-advanced, 57 | #sieverules-vacation 58 | { 59 | position: absolute; 60 | top: 0; 61 | left: 212px; 62 | right: 0; 63 | bottom: 0; 64 | } 65 | 66 | span.disableLink 67 | { 68 | float: right; 69 | width: 200px; 70 | text-align: right; 71 | } 72 | 73 | table.sieverules-table, 74 | table.sieverules-examples 75 | { 76 | width: 100%; 77 | } 78 | 79 | table.sieverules-table tbody td 80 | { 81 | cursor: default; 82 | } 83 | 84 | table.sieverules-table tbody td.control, 85 | #rules-table tbody td.control, 86 | #actions-table tbody td.control 87 | { 88 | text-align: right; 89 | } 90 | 91 | table.sieverules-table tbody td.control a, 92 | #rules-table tbody td.control a, 93 | #actions-table tbody td.control a 94 | { 95 | display: inline-block; 96 | width: 16px; 97 | height: 16px; 98 | background-image: url(images/icons.png); 99 | } 100 | 101 | table.sieverules-table tbody td.control a { 102 | height: 12px; 103 | } 104 | 105 | 106 | table.sieverules-table tbody td.control a.up_arrow 107 | { 108 | background-position: 0 -1px; 109 | } 110 | 111 | table.sieverules-table tbody td.control a.down_arrow 112 | { 113 | background-position: 0 -19px; 114 | } 115 | 116 | #rules-table tbody td.control, 117 | #actions-table tbody td.control 118 | { 119 | vertical-align: top; 120 | } 121 | 122 | #rules-table tbody td.control a.add, 123 | #actions-table tbody td.control a.add 124 | { 125 | margin-left: 5px; 126 | background-position: 0 -78px; 127 | } 128 | 129 | #rules-table tbody td.control a.delete, 130 | #actions-table tbody td.control a.delete 131 | { 132 | background-position: 0 -59px; 133 | } 134 | 135 | #rules-table tbody td.control a.delete_act, 136 | #actions-table tbody td.control a.delete_act 137 | { 138 | background-position: 0 -39px; 139 | } 140 | 141 | #actions-table tbody a.vacsig 142 | { 143 | display: block; 144 | width: 16px; 145 | height: 16px; 146 | background-image: url(images/icons.png); 147 | background-position: -1px -126px; 148 | } 149 | 150 | #actions-table tbody a.vacsig_act 151 | { 152 | display: block; 153 | width: 16px; 154 | height: 16px; 155 | background-image: url(images/icons.png); 156 | background-position: -1px -102px; 157 | } 158 | 159 | table.records-table 160 | { 161 | width: auto; 162 | border: 0; 163 | } 164 | 165 | table.records-table tbody td, 166 | table.records-table thead th 167 | { 168 | border: 0; 169 | } 170 | 171 | #rules-table, 172 | #actions-table 173 | { 174 | width: 100%; 175 | } 176 | 177 | #rules-table td table.records-table 178 | { 179 | width: auto; 180 | } 181 | 182 | #rules-table td, 183 | #actions-table td, 184 | #rules-table td table.records-table td 185 | { 186 | width: auto; 187 | } 188 | 189 | #rules-table td.selheader, 190 | #rules-table td.op 191 | { 192 | width: 130px; 193 | } 194 | 195 | #rules-table td.header 196 | { 197 | width: 135px; 198 | } 199 | 200 | #rules-table td.target 201 | { 202 | width: 180px; 203 | } 204 | 205 | #rules-table input 206 | { 207 | width: 150px; 208 | } 209 | 210 | #rules-table input.short 211 | { 212 | width: 100px; 213 | } 214 | 215 | #rules-table select 216 | { 217 | width: 123px; 218 | } 219 | 220 | #rules-table select.short 221 | { 222 | width: 45px; 223 | } 224 | 225 | #rules-table select.long 226 | { 227 | width: 157px; 228 | } 229 | 230 | #rules-table td table.records-table select 231 | { 232 | width: 432px; 233 | } 234 | 235 | #rules-table td table.records-table input 236 | { 237 | width: 426px; 238 | } 239 | 240 | #rules-table td table.records-table input.short 241 | { 242 | width: 406px; 243 | } 244 | 245 | #rules-table td table.records-table input.radio 246 | { 247 | width: auto; 248 | } 249 | 250 | #actions-table td.action 251 | { 252 | width: 165px; 253 | vertical-align: top; 254 | } 255 | 256 | #actions-table td.folder 257 | { 258 | width: 420px; 259 | vertical-align: top; 260 | } 261 | 262 | #actions-table td.action select 263 | { 264 | width: 160px; 265 | } 266 | 267 | #actions-table td.folder input, 268 | #actions-table td.folder textarea 269 | { 270 | width: 400px; 271 | } 272 | 273 | #actions-table td.folder select 274 | { 275 | width: 408px; 276 | } 277 | 278 | #actions-table td.folder table.records-table select 279 | { 280 | width: 337px; 281 | } 282 | 283 | #actions-table td.folder table.records-table input, 284 | #actions-table td.folder table.records-table textarea 285 | { 286 | width: 330px; 287 | } 288 | 289 | #actions-table td.folder table.records-table input.short, 290 | #actions-table td.folder table.records-table select.short 291 | { 292 | width: 310px; 293 | } 294 | 295 | #actions-table td.folder table.records-table input.checkbox, 296 | #actions-table td.folder table.records-table input.radio 297 | { 298 | width: auto; 299 | } 300 | 301 | table.records-table td.msg 302 | { 303 | vertical-align: top; 304 | } 305 | 306 | table.records-table td.helpmsg 307 | { 308 | width: 398px; 309 | white-space: -moz-pre-wrap !important; 310 | white-space: pre-wrap !important; 311 | white-space: pre; 312 | } 313 | 314 | #advancedmode 315 | { 316 | white-space: nowrap; 317 | text-align: right; 318 | position: absolute; 319 | bottom: 30px; 320 | right: 20px; 321 | width: 460px; 322 | } 323 | 324 | #sieverules-advancedbox 325 | { 326 | position: absolute; 327 | top: 34px; 328 | left: 0; 329 | bottom: 100px; 330 | right: 8px; 331 | } 332 | 333 | #sieverules-advanced textarea 334 | { 335 | position: absolute; 336 | top: 0; 337 | left: 0; 338 | border: 0; 339 | width: 100%; 340 | height: 100%; 341 | } 342 | 343 | .listing tbody tr.droptarget td 344 | { 345 | border-top: 2px solid #0e5266; 346 | background-color: #D9ECF4; 347 | } 348 | 349 | .listing tbody tr.droptargetend td 350 | { 351 | border-bottom: 2px solid #0e5266; 352 | background-color: #D9ECF4; 353 | } 354 | 355 | #sieverulesrsdialog h3 356 | { 357 | color: #333; 358 | font-size: medium; 359 | margin-top: 0.5em; 360 | margin-bottom: 1em; 361 | } 362 | 363 | #sieverulesrsdialog table td input 364 | { 365 | width: 20em; 366 | } 367 | 368 | #sieverulesrsdialog .formbuttons 369 | { 370 | margin-top: 1.5em; 371 | text-align: center; 372 | } 373 | 374 | input.inputmask 375 | { 376 | color: #999999; 377 | } 378 | 379 | #sieverulesactionsmenu a.selected 380 | { 381 | font-weight: bold; 382 | } 383 | 384 | #sieverules-advbuttons 385 | { 386 | position: absolute; 387 | left: 0; 388 | bottom: 45px; 389 | } 390 | 391 | #sieverules-advanced .boxfooter 392 | { 393 | position: absolute; 394 | bottom: 0; 395 | left: 0; 396 | right: 0; 397 | height: 27px; 398 | padding-left: 1px; 399 | border-top: 1px solid #ddd; 400 | border-radius: 0 0 4px 4px; 401 | background: #eaeaea; 402 | background: -moz-linear-gradient(top, #eaeaea 0%, #c8c8c8 100%); 403 | background: -webkit-gradient(linear, left top, left bottom, color-stop(0%,#eaeaea), color-stop(100%,#c8c8c8)); 404 | background: -o-linear-gradient(top, #eaeaea 0%, #c8c8c8 100%); 405 | background: -ms-linear-gradient(top, #eaeaea 0%, #c8c8c8 100%); 406 | background: linear-gradient(to bottom, #eaeaea 0%, #c8c8c8 100%); 407 | white-space: nowrap; 408 | overflow: hidden; 409 | text-overflow: ellipsis; 410 | } 411 | 412 | #sieverules-advanced .boxfooter .listbutton 413 | { 414 | background: #C4BEBE; 415 | } 416 | 417 | #sieverules-advanced .boxfooter .listbutton .inner 418 | { 419 | height: 20px; 420 | background-image: url(images/listicons.png); 421 | background-position: 5px -52px; 422 | } 423 | 424 | #sieverules-vacation textarea, 425 | #sieverules-vacation #actions-table select, 426 | #sieverules-vacation #actions-table input[type=text] { 427 | width: 99%; 428 | min-width: 390px; 429 | } -------------------------------------------------------------------------------- /lib/Roundcube/rcube_sieve.php: -------------------------------------------------------------------------------- 1 | 7 | * @modified by Philip Weir 8 | * * Make ruleset name configurable 9 | * * Added import functions 10 | * 11 | * Copyright (C) 2009-2014 Philip Weir 12 | * 13 | * This program is a Roundcube (http://www.roundcube.net) plugin. 14 | * For configuration see config.inc.php.dist. 15 | * 16 | * This program is free software: you can redistribute it and/or modify 17 | * it under the terms of the GNU General Public License as published by 18 | * the Free Software Foundation, either version 3 of the License, or 19 | * (at your option) any later version. 20 | * 21 | * This program is distributed in the hope that it will be useful, 22 | * but WITHOUT ANY WARRANTY; without even the implied warranty of 23 | * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the 24 | * GNU General Public License for more details. 25 | * 26 | * You should have received a copy of the GNU General Public License 27 | * along with Roundcube. If not, see http://www.gnu.org/licenses/. 28 | */ 29 | 30 | define('SIEVE_ERROR_CONNECTION', 1); 31 | define('SIEVE_ERROR_LOGIN', 2); 32 | define('SIEVE_ERROR_NOT_EXISTS', 3); // script not exists 33 | define('SIEVE_ERROR_INSTALL', 4); // script installation 34 | define('SIEVE_ERROR_ACTIVATE', 5); // script activation 35 | define('SIEVE_ERROR_OTHER', 255); // other/unknown error 36 | 37 | class rcube_sieve 38 | { 39 | public $sieve; 40 | private $ruleset; 41 | private $importers = array(); 42 | private $elsif; 43 | private $cache = false; 44 | public $error = false; 45 | public $list = array(); 46 | public $script; 47 | 48 | public function __construct($username, $password, $host, $port, $auth_type = NULL, $usetls, $ruleset, $dir, $elsif = true, $auth_cid = NULL, $auth_pw = NULL, $socket_options = array()) 49 | { 50 | $this->sieve = new Net_Sieve(); 51 | 52 | $data = rcube::get_instance()->plugins->exec_hook('sieverules_connect', array( 53 | 'username' => $username, 'password' => $password, 'host' => $host, 'port' => $port, 54 | 'auth_type' => $auth_type, 'usetls' => $usetls, 'ruleset' => $ruleset, 'dir' => $dir, 55 | 'elsif' => $elsif, 'auth_cid' => $auth_cid, 'auth_pw' => $auth_pw, 'socket_options' => $socket_options)); 56 | 57 | $username = $data['username']; 58 | $password = $data['password']; 59 | $host = $data['host']; 60 | $port = $data['port']; 61 | $auth_type = $data['auth_type']; 62 | $usetls = $data['usetls']; 63 | $ruleset = $data['ruleset']; 64 | $dir = $data['dir']; 65 | $elsif = $data['elsif']; 66 | $auth_cid = $data['auth_cid']; 67 | $auth_pw = $data['auth_pw']; 68 | $socket_options = $data['socket_options']; 69 | 70 | $conn = $this->sieve->connect($host, $port, $socket_options, $usetls); 71 | if ($conn instanceof PEAR_Error) 72 | return $this->_set_error(SIEVE_ERROR_CONNECTION); 73 | 74 | if (!empty($auth_cid)) { 75 | $authz = $username; 76 | $username = $auth_cid; 77 | $password = $auth_pw; 78 | } 79 | 80 | $login = $this->sieve->login($username, $password, $auth_type ? strtoupper($auth_type) : NULL, $authz); 81 | if ($login instanceof PEAR_Error) 82 | return $this->_set_error(SIEVE_ERROR_LOGIN); 83 | 84 | $this->ruleset = $ruleset; 85 | $this->elsif = $elsif; 86 | 87 | if ($this->ruleset !== false) { 88 | $this->get_script(); 89 | } 90 | else { 91 | $this->ruleset = $this->get_active(); 92 | $this->get_script(); 93 | } 94 | 95 | // init importers 96 | if ($dir = realpath(slashify($dir) . 'importFilters/')) { 97 | $dir = slashify($dir); 98 | $handle = opendir($dir); 99 | while ($importer = readdir($handle)) { 100 | if (preg_match('/\.php$/', $importer) && is_file($dir . $importer) && is_readable($dir . $importer)) { 101 | include($dir . $importer); 102 | 103 | $importer = substr($importer, 0, -4); 104 | $importer = 'srimport_' . $importer; 105 | 106 | if (class_exists($importer, false)) { 107 | $importerClass = new $importer(); 108 | $this->importers[$importer] = $importerClass; 109 | } 110 | } 111 | } 112 | closedir($handle); 113 | } 114 | } 115 | 116 | public function __destruct() 117 | { 118 | $this->sieve->disconnect(); 119 | } 120 | 121 | public function error() 122 | { 123 | return $this->error ? $this->error : false; 124 | } 125 | 126 | public function save($script = '') 127 | { 128 | if (!$script) 129 | $script = $this->script->as_text(); 130 | 131 | if (!$script) 132 | $script = '/* empty script */'; 133 | 134 | // allow additional actions before ruleset is saved 135 | $data = rcube::get_instance()->plugins->exec_hook('sieverules_save', array( 136 | 'ruleset' => $this->ruleset, 'script' => $script, 'obj' => $this)); 137 | 138 | if ($data['abort']) 139 | return $data['message'] ? $data['message'] : false; 140 | 141 | $result = $this->sieve->installScript($this->ruleset, $data['script']); 142 | if ($result instanceof PEAR_Error) 143 | return $this->_set_error(SIEVE_ERROR_INSTALL); 144 | 145 | if ($this->cache) $_SESSION['sieverules_script_cache_' . $this->ruleset] = serialize($this->script); 146 | 147 | return true; 148 | } 149 | 150 | public function get_extensions() 151 | { 152 | if ($this->sieve) { 153 | $ext = $this->sieve->getExtensions(); 154 | $ext = array_map('strtolower', (array) $ext); 155 | return $ext; 156 | } 157 | } 158 | 159 | public function check_import() 160 | { 161 | $result = false; 162 | 163 | foreach ($this->list as $ruleset) { 164 | if ($ruleset == $this->ruleset) 165 | continue; 166 | 167 | $script = $this->sieve->getScript($ruleset); 168 | 169 | foreach ($this->importers as $id => $importer) { 170 | if ($importer->detector($script, $ruleset)) { 171 | $result = array($id, $importer->name, $ruleset); 172 | break; 173 | } 174 | } 175 | } 176 | 177 | return $result; 178 | } 179 | 180 | public function do_import($type, $ruleset) 181 | { 182 | $script = $this->sieve->getScript($ruleset); 183 | $content = $this->importers[$type]->importer($script); 184 | $this->script->import_filters($content); 185 | 186 | if (is_array($content)) 187 | return $this->save(); 188 | else 189 | return $this->save($content); 190 | } 191 | 192 | public function get_script() 193 | { 194 | if (!$this->sieve) 195 | return false; 196 | 197 | if ($this->cache && $_SESSION['sieverules_script_cache']) { 198 | $this->list = unserialize($_SESSION['sieverules_scripts_list']); 199 | $this->script = unserialize($_SESSION['sieverules_script_cache_' . $this->ruleset]); 200 | return; 201 | } 202 | 203 | $this->list = $this->sieve->listScripts(); 204 | 205 | if ($this->list instanceof PEAR_Error) 206 | return $this->_set_error(SIEVE_ERROR_OTHER); 207 | 208 | if (in_array($this->ruleset, $this->list)) { 209 | $script = $this->sieve->getScript($this->ruleset); 210 | 211 | if ($script instanceof PEAR_Error) 212 | return $this->_set_error(SIEVE_ERROR_OTHER); 213 | } 214 | else { 215 | $this->_set_error(SIEVE_ERROR_NOT_EXISTS); 216 | $script = ''; 217 | } 218 | 219 | $data = rcube::get_instance()->plugins->exec_hook('sieverules_load', array( 220 | 'ruleset' => $this->ruleset, 'script' => $script, 'obj' => $this)); 221 | 222 | $this->script = new rcube_sieve_script($data['script'], $this->get_extensions(), $this->elsif); 223 | 224 | if ($this->cache) { 225 | $_SESSION['sieverules_scripts_list'] = serialize($this->list); 226 | $_SESSION['sieverules_script_cache_' . $this->ruleset] = serialize($this->script); 227 | } 228 | } 229 | 230 | public function get_active() 231 | { 232 | return $this->sieve->getActive(); 233 | } 234 | 235 | public function set_active($ruleset) 236 | { 237 | $active = $this->sieve->setActive($ruleset); 238 | if ($active instanceof PEAR_Error) 239 | return $this->_set_error(SIEVE_ERROR_ACTIVATE); 240 | 241 | return true; 242 | } 243 | 244 | public function del_script($script) 245 | { 246 | return $this->sieve->removeScript($script); 247 | } 248 | 249 | public function set_ruleset($ruleset) 250 | { 251 | $this->ruleset = $ruleset; 252 | $this->get_script(); 253 | } 254 | 255 | public function set_debug($debug) 256 | { 257 | $this->sieve->setDebug($debug, array($this, 'debug_handler')); 258 | } 259 | 260 | public function debug_handler(&$sieve, $message) 261 | { 262 | rcube::write_log('sieverules', preg_replace('/\r\n$/', '', $message)); 263 | } 264 | 265 | private function _set_error($error) 266 | { 267 | $this->error = $error; 268 | return false; 269 | } 270 | } 271 | 272 | ?> -------------------------------------------------------------------------------- /config.inc.php.dist: -------------------------------------------------------------------------------- 1 | /sieverules or to syslog 20 | $config['sieverules_debug'] = false; 21 | 22 | // authentication method. Can be CRAM-MD5, DIGEST-MD5, PLAIN, LOGIN, EXTERNAL 23 | // or none. Optional, defaults to best method supported by server. 24 | $config['sieverules_auth_type'] = null; 25 | 26 | // optional managesieve authentication identifier to be used as authorization proxy, 27 | // authenticate as a different user but act on behalf of the logged in user, 28 | // works with PLAIN and DIGEST-MD5 auth. 29 | $config['sieverules_auth_cid'] = null; 30 | 31 | // optional managesieve authentication password to be used for sieverules_auth_cid 32 | $config['sieverules_auth_pw'] = null; 33 | 34 | // enable TLS for managesieve server connection 35 | $config['sieverules_usetls'] = FALSE; 36 | 37 | // Connection context options 38 | // See http://php.net/manual/en/context.ssl.php 39 | // The example below enables server certificate validation 40 | // $config['sieverules_conn_options'] = array( 41 | // 'ssl' => array( 42 | // 'verify_peer' => true, 43 | // 'verify_depth' => 3, 44 | // 'cafile' => '/etc/openssl/certs/ca.crt', 45 | // ) 46 | // ); 47 | $config['sieverules_conn_options'] = null; 48 | 49 | // folder delimiter - if your sieve system uses a different folder delimiter to 50 | // your IMAP server set it here, otherwise leave as null to use IMAP delimiter 51 | $config['sieverules_folder_delimiter'] = null; 52 | 53 | // Sieve RFC says that we should use UTF-8 encoding for mailbox names, 54 | // but some implementations do not convert UTF-8 to modified UTF-7. 55 | // set to null for default behaviour 56 | $config['sieverules_folder_encoding'] = null; 57 | 58 | // include the IMAP root in the folder path when creating the rules 59 | // set to false to never include the IMAP root in the folder path 60 | // set to null for default behaviour 61 | $config['sieverules_include_imap_root'] = null; 62 | 63 | // ruleset name 64 | $config['sieverules_ruleset_name'] = 'roundcube'; 65 | 66 | // allow multiple actions 67 | $config['sieverules_multiple_actions'] = TRUE; 68 | 69 | // allowed actions 70 | $config['sieverules_allowed_actions'] = array( 71 | 'fileinto' => TRUE, 72 | 'vacation' => TRUE, 73 | 'reject' => TRUE, 74 | 'redirect' => TRUE, 75 | 'keep' => TRUE, 76 | 'discard' => TRUE, 77 | 'imapflags' => TRUE, 78 | 'notify' => TRUE, 79 | 'stop' => TRUE, 80 | 'editheaderadd' => TRUE, 81 | 'editheaderrem' => TRUE, 82 | 'variables' => FALSE 83 | ); 84 | 85 | // headers listed as examples of "Other headers" 86 | $config['sieverules_other_headers'] = array( 87 | 'Bcc', 'Reply-To', 'List-Id', 'MailingList', 'Mailing-List', 88 | 'X-ML-Name', 'X-List', 'X-List-Name', 'X-Mailing-List', 89 | 'Resent-From', 'Resent-To', 'X-Mailer', 'X-MailingList', 90 | 'X-Spam-Status', 'X-Priority', 'Importance', 'X-MSMail-Priority', 91 | 'Precedence', 'Return-Path', 'Received', 'Auto-Submitted', 92 | 'X-Spam-Flag', 'X-Spam-Tests', 'Sender', 93 | ); 94 | 95 | // convert all UTF8 data entered as the target for From/To/Cc tests to punycode 96 | // for exmaple if testing the from address of a message and the address entered is IDN automatically convert it to punycode when saving the rule 97 | $config['sieverules_hdr_idn2ascii'] = false; 98 | 99 | // Predefined rules 100 | // each rule should be in it own array - examples provided in README 101 | // 'name' => name of the rule, displayed in the rule type select box 102 | // 'type' => one of: header, address, envelope, size 103 | // 'header' => name of the header to test 104 | // 'operator' => operator to use, for all possible values please see README 105 | // 'extra' => extra information needed for the rule in some cases 106 | // 'target' => value that the header is tested against 107 | $config['sieverules_predefined_rules'] = array(); 108 | 109 | // Advanced editor 110 | // allows the user to edit the sieve file directly, without the restrictions of the normal UI 111 | // 0 - Disabled, option not shown in the UI 112 | // 1 - Enabled, option shown in the UI 113 | // 2 - Option shown in the UI and used by default 114 | // NOTE: The 'last used' editor is remembered in user prefs. Add this option to 'dont_override' in main Roundcube config file to prevent this. 115 | $config['sieverules_adveditor'] = 0; 116 | 117 | // Allow users to use multiple rulesets 118 | $config['sieverules_multiplerules'] = FALSE; 119 | 120 | // Default (or global) sieve rule file 121 | // An absolute path to a default rule file, see README for more information 122 | // For example '/etc/dovecot/sieve/default'; 123 | $config['sieverules_default_file'] = null; 124 | 125 | // Auto load default sieve rule file if no rules exist and no import filters match 126 | $config['sieverules_auto_load_default'] = FALSE; 127 | 128 | // Example sieve rule file 129 | // An absolute path to an example rule file, see README for more information 130 | // For example '/etc/dovecot/sieve/example' 131 | $config['sieverules_example_file'] = null; 132 | 133 | // By default the "header" command is used for email address based tests: from/to/cc/bcc 134 | // to use "address" command instead set this option to false 135 | $config['sieverules_address_rules'] = FALSE; 136 | 137 | // Force the :addresses line to always be added to new vacation rules 138 | // Some sieve setups require that the :address part of a vacation rule is always present for the message to be sent 139 | // Cyrus setups need this to option set to true 140 | $config['sieverules_force_vacto'] = FALSE; 141 | 142 | // Limit the selection of :addresses available to only those setup in as an identity 143 | // Setting this to false will give the user a textbox to enter in any address(es) they like, rather than a list of checkboxes 144 | $config['sieverules_limit_vacto'] = TRUE; 145 | 146 | // Allow users to set the :from option when creating new vacation rules, not all servers support this option 147 | // If your server supports the variables extension users also have an 'auto detect' option which will detect the address to which the message was sent 148 | // Else the user's default identity will be used as the default value 149 | $config['sieverules_show_vacfrom'] = FALSE; 150 | 151 | // Allow users to set the :handle option when creating new vacation rules, not all servers support this option 152 | $config['sieverules_show_vachandle'] = FALSE; 153 | 154 | // The rule file can be written as one IF/ELSIF statement or as a series of unrelated IF statements 155 | // TRUE - one IF/ELSIF statement 156 | // FALSE - a series of unrelated IF statements (default) 157 | $config['sieverules_use_elsif'] = FALSE; 158 | 159 | // Fileinto action options 160 | // 0 - List only subscribed folders 161 | // 1 - List subscribed and unsubscribed folders 162 | // 2 - List subscribed and unsubscribed folders and allow users to enter a folder name (for advanced users only, requires sieve mailbox extension) 163 | $config['sieverules_fileinto_options'] = 0; 164 | 165 | // Define the format of the :from option value for vacation and notify actions 166 | // 0 - Use only the email address - :from "user@example.com" 167 | // 1 - Use the name and email address, not all servers support this option - :from "First Last " 168 | $config['sieverules_from_format'] = 0; 169 | 170 | // Display a shortcut on mail screen to create a rule based on the currently selected message(s) 171 | // 0 - No shortcut 172 | // 1 - Show icon on the mail toolbar 173 | // 2 - Show link in the more actions menu 174 | $config['sieverules_shortcut'] = 0; 175 | 176 | // Display option to add new criteria to an existing rule when creating a rule from the shortcut 177 | $config['sieverules_rule_setup'] = FALSE; 178 | 179 | // List of additional headers to use when creating a rule from the shortcut 180 | $config['sieverules_additional_headers'] = array('List-Id'); 181 | 182 | // Show separate interface for setting auto reply message 183 | // Note: sieverules_multiplerules must be set to false and sieverules_use_elsif should be set to false 184 | $config['sieverules_autoreply_ui'] = FALSE; 185 | 186 | // For information on customising the rule file see "The structure of the rule file" in the README 187 | -------------------------------------------------------------------------------- /CHANGELOG: -------------------------------------------------------------------------------- 1 | Roundcube Webmail SieveRules 2 | ============================ 3 | 4 | * Add support for Variables 'set' function (Note: This is disabled by default) 5 | * Fix initial ruleset creation when multiple rulesets enabled 6 | * Fix rule moving using arrows in Classic skin and also when auto reply UI is enabled 7 | 8 | Version 2.3 (2015-04-18, rc-1.1) 9 | ================================================= 10 | * Fix missing size_test function in vacation validation 11 | * Fix buggy display of auto reply rule 12 | 13 | Version 2.2 (2015-01-06, rc-1.1) 14 | ================================================= 15 | * Merge sievevacation plugin into this one 16 | * Merge quickrules plugin into this one 17 | * Add connection options like 109bcce 18 | * Update after dev-accessibility merged to RC master 19 | * Update to TinyMCE 4 (731d190) 20 | * Add support for :matches 21 | * Drop IE6 support 22 | 23 | Version 2.1.2 (2014-03-30, rc-1.0) 24 | ================================================= 25 | * Update pear package name in composer requirements 26 | * Update rule list row counting after change in core 27 | 28 | Version 2.1.1 (2013-12-29, rc-1.0) 29 | ================================================= 30 | * Correct skin folder structure for Roundcube packaging 31 | 32 | Version 2.1 (2013-12-01, rc-1.0) 33 | ================================================= 34 | * add second argument (ruleset name) to import filter detect() function 35 | * lib/Net Sieve.php moved to Roundcube /lib directory (4daaa09) 36 | * Use new settings_actions hook to create settings tab (c49c35c) 37 | * Improve (and simplify) folder name encoding in fileinto actions 38 | * Correct escaping of values (now done in the core) 39 | * Update config file var names to match core 40 | 41 | Version 2.0 (2013-05-19, rc-1.0) 42 | ================================================= 43 | * Update default config for most common setups: 44 | sieverules_address_rules = FALSE 45 | sieverules_use_elsif = FALSE 46 | * Change file structure to match core and use include_path 47 | * Improve form submission 48 | * Add new config option "sieverules_address_rules" to toggle address/header command in tests 49 | * Improve default value setup - added sieverules_init hook 50 | * Add support for vacation-seconds extension 51 | **** code branching/tagging no longer sync'd to roundcube versions **** 52 | 53 | Version 1.18 (2013-03-16, rc-0.9) 54 | ================================================= 55 | * Make vacation days parameter optional + move to advanced options 56 | * Show name and state of currently selected ruleset when multiple rulesets enabled 57 | * Automatically activate first ruleset even when multiple rulesets enabled 58 | * Add option to use "friendly" names in :from params 59 | * Rename default skin to classic (c40419bdfe) 60 | * rcube_ui > rcube_utils (r6091) 61 | * Update for Roundcube framework 62 | * Add advanced options for editheader extension to UI 63 | * Add basic support for editheader extension 64 | 65 | Version 1.17 (2012-07-07, rc-0.8) 66 | ================================================= 67 | * Add sieverules_load hook 68 | * Update after r5781 69 | * Add inital support for Larry 70 | 71 | Version 1.16 (2012-01-21, rc-0.8) 72 | ================================================= 73 | * Update code to use new timezone format (r5707) 74 | * Respect settings for html editor from core 75 | * Fix display for radio and checkboxes in notify action 76 | * Use core function to sanitize input 77 | 78 | Version 1.15 (2011-12-04, rc-0.7) 79 | ================================================= 80 | * Fix escaping if lines starting with . in vacation message 81 | * Add support for virustest extension 82 | * Add HTML editor option for vacation messages 83 | 84 | Version 1.14 (2011-10-03, rc-0.6) 85 | ================================================= 86 | * Add plugin hook sieverules_connect 87 | * Fix typo, hook name should be sieverules_save 88 | * Improve plugin hook sieverules_saved 89 | * Add plugin hook sieverules_saved 90 | * Improve fileinto :create, now requires mailbox extension 91 | 92 | Version 1.13 (2011-08-06, rc-0.6) 93 | ================================================= 94 | * Add button to insert sig into vacation message 95 | 96 | Version 1.12 (2011-06-19, rc-0.6) 97 | ================================================= 98 | * Use JQueryUI plugin for dialog box (r4715) 99 | 100 | Version 1.11 (2011-05-06, rc-0.6) 101 | ================================================= 102 | * Allow users to enter folder names for fileinto 103 | 104 | Version 1.10 (2011-03-12, rc-0.5) 105 | ================================================= 106 | * idn_to_ascii -> rcube_idn_to_ascii (r4484) 107 | * Fix double request when clicking on tab using Firefox (from r4472) 108 | * Enable :from and :handle options for vaction 109 | 110 | Version 1.9 (2011-01-29, rc-0.5) 111 | ================================================= 112 | * Added support for SASL proxy authentication 113 | * Automatically import rulesets when auto_load_default is true, multiplerules is false and it is the active ruleset 114 | * Add debug logging 115 | * Add Internationalized Domain Name (IDNA) support (r4009) 116 | * Allow free entry of vacation alias addresses 117 | * Fix duplicate comparator listing 118 | 119 | Version 1.8 (2010-07-10, rc-0.4) 120 | ================================================= 121 | * Update to Net_Sieve 1.3.0 122 | * Skin update after r3757 123 | * Update to Net_Sieve 1.2.2 124 | * Update skin r3733 125 | * Add support for %n and %d in host (r3701) 126 | * Add support for date extension 127 | 128 | Version 1.7 (2010-04-24, rc-0.4) 129 | ================================================= 130 | * Update to Net_Sieve 1.2.1 131 | * Update to Net_Sieve 1.2.0 132 | * Use same folder path as RC by default 133 | * Use imap_connect after r3278 134 | * The Sender header is not always present, test From by default instead 135 | 136 | Version 1.6 (2010-02-06, rc-0.4) 137 | ================================================= 138 | * Add hidden options to config file 139 | * Fix handeling of text in <> in adv editor 140 | 141 | Version 1.5 (2009-12-31, rc-0.4) 142 | ================================================= 143 | * Fix default display when fileinto action is disabled 144 | * Add ruleset selector to advanced editor 145 | * Allow default headers, operators and flags to be overridden 146 | * Fix bug in body action 147 | * Allow file header to be overridden 148 | * Allow appending of original subject to vacation messages (requires variables 149 | extension in sieve) 150 | * Parse multiple email addresses when setting redirect 151 | * Fix bug in detection of vacation charset 152 | * Add support for multiple rulesets 153 | * Use core config function (WARNING: Complete re-write of config file!) 154 | * Some JS cleanup 155 | 156 | Version 1.4 (2009-11-08, rc-0.4) 157 | ================================================= 158 | * Use frames to avoid full page reloads 159 | * Use rule cache to speed things up a little 160 | 161 | Version 1.3 (2009-11-01, rc-0.4) 162 | ================================================= 163 | * Read custom settings from config (elsif etc) 164 | 165 | Version 1.2 (2009-10-25, rc-0.3) 166 | ================================================= 167 | * Support folder name encoding 168 | 169 | Version 1.1 (2009-09-23, rc-0.3) 170 | ================================================= 171 | * Support multiple hosts 172 | 173 | Version 1.0 (2009-09-16, rc-0.3) 174 | ================================================= 175 | * Minor layout updates 176 | * Localisation updates 177 | * Add support for spamtest extension (by Vladislav Bogdanov) 178 | * Fix get_form_tags() call after r2755 179 | * Fix support for dovecot 1.2 180 | * Add support for copy extension 181 | * Add support for body extension 182 | * Better error reporting 183 | * Use imap->mod_mailbox() 184 | * Use better identity checking 185 | * Add possibility to easily switch between \r\n and \n in sieve file and also 186 | change indent 187 | * Swap split() for explode(), PHP 5.3 compatibility 188 | * Use list.js from the core 189 | * Added config var to auto load default rules when no user ones exist and skip 190 | setup screen 191 | * Added support ESC key to stop dragging 192 | * Added support for enotify and imap4flags 193 | * Added delete icon 194 | * Fixed JS bug when adding second rule 195 | * Fixed bug in rule moving 196 | * Added support for plugin template system 197 | * Added up/down/delete key support on the filters list 198 | * Added ability to drag examples to filters list 199 | * Added ability to drag rules within the filter list to change the order 200 | * Fixed display bug when deleting penultimate rule 201 | * Swapped decrypt_passwd for decrypt 202 | * Improved INGO rule filter 203 | * Added basic import system 204 | * Added Advanced editor - allows for editing of sieve file directly 205 | * Moved example rules to more obvious position 206 | * Updated list.js to latest version 207 | * Set busy while moving filter 208 | * Updated de_DE 209 | * Small changes to init functions for when labels are added to UI 210 | * Translated from sieverules patch 211 | * Added support for default rules file 212 | * Added support for example rules file 213 | * Expanded pre-defined rules to include comparator option -------------------------------------------------------------------------------- /localization/sk_SK.inc: -------------------------------------------------------------------------------- 1 | Použiť pripravené pravidlá: Je dostupných niekoľko pravidiel. Chcete ich použiť?'; 148 | $messages['importother'] = 'Importovať pravidlá: Ďalšia sada pravidiel bola nájdená v %s. Chcete ich importovať?'; 149 | $messages['switchtoadveditor'] = 'Prepnutie do pokročilého editora Vám umožní priamo editovať súbor pravidel. Úpravy, ktoré tu urobíte môžu byť pre štandardný editor pravidiel nečitateľné a môžu sa pri uložení v ňom stratiť. Chcete pokračovať?'; 150 | $messages['filterimported'] = 'Pravidlá boli úspešne importované'; 151 | $messages['filterimporterror'] = 'Pravidlá nebolo možné importovať. Vyskytla sa chyba servera'; 152 | $messages['notifyinvalidmethod'] = 'Vyzerá to, že metóda nie je zapísaná v platnom formáte. Musí to byť URI. Napr.: `mailto:adresa@domena.sk`.'; 153 | $messages['nobodycontentpart'] = 'Zadajte prosím obsahovú časť testu'; 154 | $messages['badoperator'] = 'Prepáčte, ale operátor ktorý ste vybrali nemôže byť v tejto podmienke použitý'; 155 | $messages['filteractionerror'] = 'Akcia, ktorú ste vybrali nie je podporovaná serverom'; 156 | $messages['filtermissingerror'] = 'Nepodarilo sa nájsť požadovanú podmienku'; 157 | $messages['contentpartexp'] = 'Typ MIME, alebo špecifická časť správy, ktorá má byť testovaná. Napr.: `message/rfc822`, `text/html`, `audio/mp3` či `image`.'; 158 | -------------------------------------------------------------------------------- /localization/sv_SE.inc: -------------------------------------------------------------------------------- 1 |
Exempel: Om Joe mailar dig på måndag och antalet dagar är 7 kommer han att få ett frånvaromeddelande på måndag, men sedan får han inget nytt förrän nästa måndag oavsett hur många gånger han mailar dig under veckan.'; 126 | $messages['vachandleexp'] = 'Ett id kan använndas för att länka samman flera frånvaromeddelanden. När ett frånvaromeddelande med detta id har skickats kommer inga fler att frånvaromeddelanden med samma id att skickas under perioden.'; 127 | $messages['vactoexp'] = 'Frånvaromeddelandet skickas enbart till din huvudsakliga adress + de adresser du valt i listan ovan. Har du fler mottagaradresser du vill kunna välja bland måste du först lägga till dessa under Profiler.'; 128 | $messages['norulename'] = 'Fyll i ett namn på detta filter.'; 129 | $messages['ruleexists'] = 'Ett filter med det valda namnet finns redan. Vänligen fyll i ett annat namn.'; 130 | $messages['noheader'] = 'Fyll i namnet på brevhuvudet'; 131 | $messages['headerbadchars'] = 'Fel: Brevhuvudet innehåller otillåtna tecken'; 132 | $messages['noheadervalue'] = 'Fyll i ett värde som brevhuvudet ska testas mot'; 133 | $messages['sizewrongformat'] = 'Fel: Meddelandestorlek måste anges i siffror'; 134 | $messages['noredirect'] = 'Fyll i en e-postadress att omdirigera meddelanden till'; 135 | $messages['redirectaddresserror'] = 'Fel: e-postadressen har inte giltigt format'; 136 | $messages['noreject'] = 'Fyll i ett meddelande som ska skickas med brev som avvisas'; 137 | $messages['vacnoperiod'] = 'Fyll i antalet dagar för den period under vilken meddelandet inte kommer att skickas på nytt till samma person'; 138 | $messages['vacperiodwrongformat'] = 'Fel: Antalet dagar måste vara ett tal större än eller lika med 1'; 139 | $messages['vacnomsg'] = 'Fyll i text som ska skickas i frånvaromeddelandet'; 140 | $messages['notifynomethod'] = 'Fyll i med vilken metod notifieringen ska skickas'; 141 | $messages['notifynomsg'] = 'Fyll i en notifieringstext'; 142 | $messages['sieveruleexp'] = 'Definiera en eller flera regler som varje meddelande kommer att testas mot. Filter körs i den ordning de listas till vänster.'; 143 | $messages['sieveactexp'] = 'Välj bland alternativen nedan. Dessa åtgärder kommer att utföras varje gång ett meddelande matchar reglerna ovan.'; 144 | $messages['sieveheadershlp'] = 'Detta är några exempel på andra brevhuvudet som filtren kan testa. Välj ett brevhuvud för att lägga till det till regeln eller fyll i ett eget brevhuvud.'; 145 | $messages['movingfilter'] = 'Flyttar filter...'; 146 | $messages['noexistingfilters'] = 'Hittar inga existerande filter!'; 147 | $messages['importdefault'] = 'Använd standardfilter: Det finns en uppsättning standardfilter tillgängliga. Skulle du vilja använda dem?'; 148 | $messages['importother'] = 'Importera filter: En annan uppsättning filter från %s har upptäckts. Skulle du vilja importera dem till din nuvarande filteruppsättning?'; 149 | $messages['switchtoadveditor'] = 'Med den avancerade editorn kan du redigera din filterfil direkt. Ändringar gjorda där kan gå förlorade om du senare redigerar dina filter via den vanliga filterredigeringen. Vill du fortsätta?'; 150 | $messages['filterimported'] = 'Importen av filter lyckades'; 151 | $messages['filterimporterror'] = 'Importen av filter misslyckades. Ett serverfel uppstod.'; 152 | $messages['notifyinvalidmethod'] = 'Den angivna metoden har inte ett giltigt format, det måste vara en URI. Exempel: `mailto:alert@example.com`.'; 153 | $messages['nobodycontentpart'] = 'Fyll i vilken del av innehållet som ska testas'; 154 | $messages['badoperator'] = 'Den valda operatorn kan inte användas i den här regeln'; 155 | $messages['filteractionerror'] = 'Den valda åtgärden stöds inte av servern'; 156 | $messages['filtermissingerror'] = 'Kan inte hitta den önskade regeln'; 157 | $messages['contentpartexp'] = 'Fyll i MIME-typ eller specifik del av meddelandet som ska testas. Exempel: `message/rfc822`, `text/html`, `audio/mp3`'; 158 | -------------------------------------------------------------------------------- /localization/es_AR.inc: -------------------------------------------------------------------------------- 1 |
Por ejemplo, si Juan le manda un mensaje, unlunes, y tiene el periodo fijado en 7, Juan recibirá un aviso de vacaciones el lunes pero no recibirá otro hasta el siguiente lunes, sin importar cuántos emails le envíe durente la semana.'; 140 | $messages['vachandleexp'] = 'Se puede usar un manejador para vincular diferentes mensajes de vacaciones todos juntos, una vez se envio un mensaje, no se enviará otro que tenga el mismo manejador durante el periodo definido.'; 141 | $messages['vactoexp'] = 'Lista de destinatarios adicionales que será incluida en la auto respuesta. Si un destinatario no es su dirección principal, y no está en esta lista, no se le enviarán mensajes.'; 142 | $messages['norulename'] = 'Debe asignar un nombre al filtro'; 143 | $messages['ruleexists'] = 'Ya hay un filtro con ese nombre. Elija otro'; 144 | $messages['noheader'] = 'Debe ingresar el nombre de la cabecera a verificar'; 145 | $messages['headerbadchars'] = 'Error: La cabecera contiene caracteres no permitidos'; 146 | $messages['noheadervalue'] = 'Ingrese un valor contra el cual comparar la cabecera'; 147 | $messages['sizewrongformat'] = 'Error: El tamaño del mensaje debe ser numérico'; 148 | $messages['noredirect'] = 'Ingrese una dirección de email a la cual redirigir los mensajes'; 149 | $messages['redirectaddresserror'] = 'Error: Dirección inválida'; 150 | $messages['noreject'] = 'Ingrese el texto a enviar con los mensajes rechazados'; 151 | $messages['vacnoperiod'] = 'Ingrese el numero de dias para el periodo que el mensaje no será reenviado a la misma persona'; 152 | $messages['vacperiodwrongformat'] = 'Error: El periodo debe ser 1 o más dias'; 153 | $messages['vacnomsg'] = 'Ingrese un texto para el mensaje'; 154 | $messages['notifynomethod'] = 'Ingrese el método por el cual se enviará la notificación'; 155 | $messages['notifynomsg'] = 'Ingrese un texto para su mensaje'; 156 | $messages['sieveruleexp'] = 'Debe definir una o más reglas contra las que se comprobarán los mensajes. Los filtros son ejecutados en el orden e nque aparecen a la izquierda de esta pantalla. Si se encuentra una coincidencia los demás filtros no se comprueban.'; 157 | $messages['sieveactexp'] = 'Seleccione una de las opciones que figuran abajo. Esta acción será ejecutada por cada mensaje que concuerden con las reglas que figuran arriba.'; 158 | $messages['sieveheadershlp'] = 'Debajo hay algunos ejemplos de cabeceras que pueden verificarse con filtros. Seleccione una cabecera para agregar a la regla o increse una propia en el cuadro de arriba.'; 159 | $messages['movingfilter'] = 'Moviendo filtro...'; 160 | $messages['noexistingfilters'] = '¡No se detectan filtros!'; 161 | $messages['importdefault'] = 'Usar filtros por defecto: Hay un juego de filtros por defecto disponibles. ¿Quiere instalar una copia de esos filtros?'; 162 | $messages['importother'] = 'Importar filtros: Se ha encontrado otro juego de filtros de %s. ¿Quiere importarlos a su lista de filtros?'; 163 | $messages['switchtoadveditor'] = 'El editor avanzado le permite editar las reglas de sieve directamente. Cualquier cambio que haga será ilegible para el editor normal de reglas y se parderá si graba modificaciones con el editor normal. ¿Quiere continuar?'; 164 | $messages['filterimported'] = 'Filtro importado correctamente'; 165 | $messages['filterimporterror'] = 'No se pudo importar el filtro. Error en el servidor'; 166 | -------------------------------------------------------------------------------- /localization/zh_TW.inc: -------------------------------------------------------------------------------- 1 |
For example: If Joe emails you on Monday and the period is set to 7 then Joe will receive an out of office message on Monday but will not get another one until the following Monday, no matter how many emails he sends an email during the week.'; 148 | $messages['vachandleexp'] = 'A handle can be used to link different out of office messages together, once one message has been sent no other message with the same handle will be resent in that period.'; 149 | $messages['vactoexp'] = 'List of additional recipient addresses which are included in the auto replying. If a mail\'s recipient is not your main address and it\'s not on this list, no message will be sent.'; 150 | $messages['vactoexp_adv'] = 'Separate multiple aliases with a comma (,). For Example: test1@example.com,test2@example.com,test3@example.com'; 151 | $messages['vactoexp_err'] = 'Error: Multiple aliases should be separated with a comma (,)'; 152 | $messages['norulename'] = '請輸入規則名稱'; 153 | $messages['ruleexists'] = '重複的規則名稱。請重新輸入'; 154 | $messages['noheader'] = 'Please enter the name of the header to test'; 155 | $messages['headerbadchars'] = 'Error: Header contains forbidden characters'; 156 | $messages['noheadervalue'] = 'Please enter a value to test the header against'; 157 | $messages['sizewrongformat'] = '錯誤: 郵件大小必須是數字'; 158 | $messages['noredirect'] = '請輸入一個電子郵件位址以便轉寄訊息'; 159 | $messages['redirectaddresserror'] = 'Error: Address appears invalid'; 160 | $messages['noreject'] = 'Please enter a message to send with rejected email'; 161 | $messages['vacnoperiod'] = 'Please enter a number of days for the period in which the message will not be resent to the same person'; 162 | $messages['vacperiodwrongformat'] = 'Error: The period must be a number greater than or equal to 1'; 163 | $messages['vacnomsg'] = 'Please enter some text for your message'; 164 | $messages['notifynomethod'] = 'Please enter a method by which the notification should be sent'; 165 | $messages['notifynomsg'] = 'Please enter some text for your message'; 166 | $messages['sieveruleexp'] = '請定義一個或多個規則條件。每封信都會依照左側列表,採由上而下的順序比對規則條件,如果符合其中一個規則,後續的郵件規則將不被執行。'; 167 | $messages['sieveruleexp_stop'] = 'Please define one or more rules against which each message will be tested. Filters are run in the order in which they appear on the left of this screen until a \'Stop\' action is met.'; 168 | $messages['sieveactexp'] = '請從選單中選擇項目,這些動作將會套用在符合上述規則條件的郵件。'; 169 | $messages['sieveheadershlp'] = 'Below are some examples of other headers that can be tested by the filters. Select a header to add it to the rule or enter a custom one in the box above.'; 170 | $messages['movingfilter'] = '移動郵件規則...'; 171 | $messages['noexistingfilters'] = 'No existing filters detected!'; 172 | $messages['importdefault'] = 'Use default filters: There is a set of default filters available. Would you like to use these filters?'; 173 | $messages['importother'] = 'Import filters: Another set of filters from %s has been found. Would you like to import these filters into your current set?'; 174 | $messages['switchtoadveditor'] = 'Switching to the advanced editor allows you to edit the sieve file directly. Any changes here may be unreadable in the normal editor and may be lost when filters are saved using the normal editor. Do you wish to continue?'; 175 | $messages['filterimported'] = 'Filter imported successfully'; 176 | $messages['filterimporterror'] = '無法匯入郵件規則。(伺服器錯誤)'; 177 | $messages['notifyinvalidmethod'] = 'The method does not appear to be written in a valid format, it must be a URI. For example: `mailto:alert@example.com`.'; 178 | $messages['nobodycontentpart'] = 'Please enter a content part to test'; 179 | $messages['badoperator'] = 'Sorry the operator you selected cannot be used in this rule'; 180 | $messages['filteractionerror'] = 'The action you requested is not supported by the server'; 181 | $messages['filtermissingerror'] = 'Unable to find the rule requested'; 182 | $messages['contentpartexp'] = 'The MIME-type or specific part of the message which should be tested. For example: `message/rfc822`, `text/html`, `audio/mp3` or `image`.'; 183 | $messages['delrulesetconf'] = 'Are you sure you want to delete this ruleset?'; 184 | $messages['rulesetexists'] = 'A ruleset with this name already exists. Please enter another'; 185 | $messages['copyexisting'] = 'Copy exiting ruleset: Would you like to copy filters from an existing ruleset into your current set?'; 186 | $messages['filtercopied'] = 'Filter copied successfully'; 187 | $messages['nosieverulesets'] = 'No rulesets found.'; 188 | $messages['baddateformat'] = 'Error: Please enter the date in the format YYYY-MM-DD'; 189 | $messages['badtimeformat'] = 'Error: Please enter the time in the format HH:MM:SS'; 190 | $messages['missingfoldername'] = '錯誤: 請輸入資料夾名稱'; 191 | -------------------------------------------------------------------------------- /localization/hu_HU.inc: -------------------------------------------------------------------------------- 1 |
Pédául: Ha János üzenetet küld Hétfőn és az időszak 7, válaszul kap egy Irodán kívül üzenetet ami nem lesz neki újraküldve a következő Hétfőig, bármennyi üzenetet is küld János ebben az időszakban.'; 134 | $messages['vachandleexp'] = 'A mutató arra használható, hogy összekapcsoljon külömböző Irodán kívül üzeneteket. Ha egy ilyen üzenet el lett küldve, másik ilyen mutatóju üzenet nem lesz elküldve megadott időszakban'; 135 | $messages['vactoexp'] = 'A többi címzett listája akiknek az automatikus válasz el lesz küldve. Ha egy címzett nem a fő cím én nincs ebben a listában, nem lesz neki üzenet küldve.'; 136 | $messages['vactoexp_adv'] = 'Több álnevet vesszővel (,) lehet elválasztani. Pl. teszt1@pelda.hu, teszt2@pelda.hu, teszt3@pelda.hu'; 137 | $messages['vactoexp_err'] = 'Hiba! Több álnév esetén vesszőt (,) kell használni'; 138 | $messages['norulename'] = 'Irjon be egy nevet a szűrőnek'; 139 | $messages['ruleexists'] = 'Ez a szűrőnév már létezik. Kérem irjon be másikat'; 140 | $messages['noheader'] = 'Kérem irja be a fejléc nevét a teszthez'; 141 | $messages['headerbadchars'] = 'Hiba: A fejléc illegális karaktert tartalmaz'; 142 | $messages['noheadervalue'] = 'Kérem irjon be egy értéket a fejléc teszteléséhez'; 143 | $messages['sizewrongformat'] = 'Hiba: az üzenet mérete szám kell legyen'; 144 | $messages['noredirect'] = 'Kérem irjon be egy e-mail címet az átirányításhoz'; 145 | $messages['redirectaddresserror'] = 'Hiba: A cím nem megfelelő'; 146 | $messages['noreject'] = 'Írja be az üzenetet amit válaszolni szeretne a visszadobott üzenetre'; 147 | $messages['vacnoperiod'] = 'Írja be a napok számát arra az időszakra mig az üzenet nem lesz újraküldve ugyanannak a címzettnek'; 148 | $messages['vacperiodwrongformat'] = 'Hiba: az időszak 1-nél nagyobb vagy egyenlő lehet'; 149 | $messages['vacnomsg'] = 'Írja be az üzenet szövegét'; 150 | $messages['notifynomethod'] = 'Írja be a módszert, melyel az értesitést eloküldjük'; 151 | $messages['notifynomsg'] = 'Írja be az üzenet szövegét'; 152 | $messages['sieveruleexp'] = 'Kérem határozzon meg egy vagy több szabályt mellyel az üzenetek szelve lesznek. A szűrők olyan sorrendben futnak le, ahogyan megjelennek a baloldalon. Ha egy szűrőnek megfelel az üzenet, több szűrő nem hajtodik végre.'; 153 | $messages['sieveactexp'] = 'Kérem válasszon a következő lehetőségekből. ezek minden üzenetnre végrehajtódnak, melyek megfelelnek a szabálynak.'; 154 | $messages['sieveheadershlp'] = 'Alább néhány példa más fejlécre melyek tesztelhetőek a szűrőkkel. Válassza ki a fejlécet, adja hozzá a szűrőhőz vagy írjon be egyénit az alábbi szövegmezőbe.'; 155 | $messages['movingfilter'] = 'Szűrő áthelyezése...'; 156 | $messages['noexistingfilters'] = 'Nem találhatók szűrők'; 157 | $messages['importdefault'] = 'Alapértelmezett szűrők használata: Alapértelmezett szűrők léteznek. Szeretné használni ezeket a szűrőket?'; 158 | $messages['importother'] = 'Szűrők importálása: Egy másik szűrőcsoport %s től létezik. Be szeretné tölteni ezt a szűrőcsoportot?'; 159 | $messages['switchtoadveditor'] = 'ÿtváltás halado szerkesztőre, mellyel Ön direktbe szerkesztheti a sieve fájlt. Az itt végzett változtatások nem lesznek olvashatóak a norlál szerkesztöben és elvesznek ha a szűrők mentésre kerülnek a normál szerkesztőben. Szeretné folytatni?'; 160 | $messages['filterimported'] = 'A szűrő sikeresen importálva'; 161 | $messages['filterimporterror'] = 'Nem sikerült a szűrő importálása. Szerver hiba'; 162 | $messages['filteractionerror'] = 'A kért műveletet nem támogatja a szerver'; 163 | $messages['filtermissingerror'] = 'Nem találom a keresett szabályt'; 164 | $messages['delrulesetconf'] = 'Biztosan törölni szeretné ezt a szabálycsoportot?'; 165 | $messages['rulesetexists'] = 'Már létezik ilyen nevű szabálycsoport. Írjon be másikat!'; 166 | $messages['filtercopied'] = 'Szűrő sikeresen átmásolva'; 167 | $messages['nosieverulesets'] = 'Nincs ilyen szabálycsoport.'; 168 | $messages['baddateformat'] = 'Hiba: a dátumot ÉÉÉÉ-HH-NN formátumban kell megadni.'; 169 | $messages['badtimeformat'] = 'Hiba: az időt ÓÓ:PP:MP fromátumban kell megadni'; 170 | $messages['missingfoldername'] = 'Hiba! Írjon be egy mappanevet.'; 171 | -------------------------------------------------------------------------------- /localization/ca_ES.inc: -------------------------------------------------------------------------------- 1 |
Per exemple, si en Jaume envia un misssatge un dilluns, i té un període fixat en 7, en Jaume rebrà un avís de vacances el dilluns però no en rebrà cap altre fins al proper dilluns, malgrat envïi més missatges durant la setmana.'; 134 | $messages['vachandleexp'] = 'Es pot usar un manejador per a vincular diferents missatges de vacances tots junts. Un cop s\'envïi el missatge no se n\'enviarà un altre que contingut el mateix manejador durant el període definit.'; 135 | $messages['vactoexp'] = 'Llista de destinataris addicionals que seran inclosos en l\'auto-resposta. Si el remitent no és la teva adreça principal i no està a la llista no se li enviaran missatges.'; 136 | $messages['norulename'] = 'Cal assignar un nom al filtre'; 137 | $messages['ruleexists'] = 'Ja existeix un filtre amb aquest nom. Escolleix-ne un altre'; 138 | $messages['noheader'] = 'Heu d\'introduir el nom de la capçalera a verificar'; 139 | $messages['headerbadchars'] = 'Error: La capçalera conté caràcters no permesos'; 140 | $messages['noheadervalue'] = 'Ingresseu un valor per a comparar-lo amb la capçalera'; 141 | $messages['sizewrongformat'] = 'Error: El tamany del missatge ha de ser numèric'; 142 | $messages['noredirect'] = 'Introduïu una adreça de correu a la qual redirigir tots els missatges'; 143 | $messages['redirectaddresserror'] = 'Error: Adreça no vàlida'; 144 | $messages['noreject'] = 'Introduïu el text a enviar en els missatges rebutjats'; 145 | $messages['vacnoperiod'] = 'Introduïu el número de dies per al període que el missatge no serà reenviat a la mateixa persona'; 146 | $messages['vacperiodwrongformat'] = 'Error: El període ha de ser de més d\'1 dia'; 147 | $messages['vacnomsg'] = 'Introduïu un text per al missatge'; 148 | $messages['notifynomethod'] = 'Introduïu un mètode a través del qual s\'enviarà la notificació'; 149 | $messages['notifynomsg'] = 'Introduïu un text per al seu missatge'; 150 | $messages['sieveruleexp'] = 'Heu de definir una o més regles que s\'empraran per a comprar els missatges. Els filtres són executats en l\'ordre que apareixen a l\'esquerra d\'aquesta pantalla. Si es troba una coincidència, la resta del filtres no es comproven.'; 151 | $messages['sieveactexp'] = 'Seleccioneu una de les opcions que apareixen a continuació. Aquesta acció serà executada per cada missatge que encaixi amb les regles definides a sobre d\'aquest text.'; 152 | $messages['sieveheadershlp'] = 'A continuació hi ha alguns exemples de capçaleres que poden verificar-se amb filtres. Seleccioni\'n una per afegir a la regla o introduïu-ne una de pròpia en el requadre de dalt.'; 153 | $messages['movingfilter'] = 'Movent filtre...'; 154 | $messages['noexistingfilters'] = 'No s\'han detectat filtres!'; 155 | $messages['importdefault'] = 'Emprar filtres per defecte: Hi ha un joc de filtres per defecte disponibles. Voleu instalar una còpia d\'aquests filtres?'; 156 | $messages['importother'] = 'Importar filtres: S\'ha trobat un altre joc de filtres de %s. Voleu importar-los a la llsita de filtres?'; 157 | $messages['switchtoadveditor'] = 'L\'editor avançat li permet editar les regles de sieve directament. Qualsevol canvi que faci serà il.legible per l\'editor normal de regles i es perderà si guarda modificacions amb l\'editor normal. Voleu continuar?'; 158 | $messages['filterimported'] = 'Filtre importat correctament'; 159 | $messages['filterimporterror'] = 'No s\'ha pogut importar el filtre . Error en el servidor'; 160 | $messages['badoperator'] = 'Ho lamentem, però l\'operador seleccionat no es pot usar en aquesta regla.'; 161 | $messages['filteractionerror'] = 'L\'acció requerida no està disponible en aquest servidor.'; 162 | $messages['filtermissingerror'] = 'No s\'ha pogut localitzar la regla solicitada.'; 163 | $messages['delrulesetconf'] = 'Esteu segur de voler eliminar aquest conjunt de regles?'; 164 | $messages['rulesetexists'] = 'Ja existeix un conjunt de regles amb aquest nom. Escolliu-ne un altre.'; 165 | $messages['copyexisting'] = ' Copia el següent conjunt de regles: Voleu importar els filtres d\'un conjunt de regles existents al conjunt actual?'; 166 | $messages['filtercopied'] = 'Filtre copiat correctament'; 167 | $messages['nosieverulesets'] = 'No s\'han trobat regles.'; 168 | -------------------------------------------------------------------------------- /localization/ro_RO.inc: -------------------------------------------------------------------------------- 1 |
De exemplu: Dacă Ion iţi trimite un email luni şi perioada este setată la 7 zile, atunci Ion va primi un mesaj OUT of OFFICE luni însă nu va mai primi niciunul pana lunea următoare indiferent de câte mesaje îţi va trimite.'; 136 | $messages['vachandleexp'] = 'Poate fi folosită o regulă pentru a lega mesaje OUT of OFFICE împreună. Odată trimis un mesaj, nu va mai fi trimis niciun mesaj cu aceeasi regulă.'; 137 | $messages['vactoexp'] = 'Lista adreselor de email aditionale care vor fi incluse in raspunsul automat. '; 138 | $messages['norulename'] = 'Te rog sa introduci un nume pentru acest filtru.'; 139 | $messages['ruleexists'] = 'Un filtru cu acest nume există deja. Te rog să introduci altul.'; 140 | $messages['noheader'] = 'Te rog să introduci numele headerului pentru verificare.'; 141 | $messages['headerbadchars'] = 'Eroare: Headerul conţine caractere ilegale.'; 142 | $messages['noheadervalue'] = 'Te rog să introduci o valoare pentru a testa headerul.'; 143 | $messages['sizewrongformat'] = 'Eroare: Mărimea mesajului trebuie să fie numerică .'; 144 | $messages['noredirect'] = 'Te rog să introduci o adresă de email pentru a redirecţiona mesajele.'; 145 | $messages['redirectaddresserror'] = 'Eroare: Adresa nu pare să fie validă.'; 146 | $messages['noreject'] = 'Te rog să introduci un mesaj pentru a fi trimis impreună cu mesajul de respingere.'; 147 | $messages['vacnoperiod'] = 'Te rog să introduci o perioadă de zile în care mesaju'; 148 | $messages['vacperiodwrongformat'] = 'Eroare: Perioada trebuie să fie un număr mai mare sau egal cu 1.'; 149 | $messages['vacnomsg'] = 'Te rog să introduci un text pentru mesaj.'; 150 | $messages['notifynomethod'] = 'Te rog să introduci o metodă prin care să se trimită notificarea.'; 151 | $messages['notifynomsg'] = 'Te rog să introduci un text pentru mesaj.'; 152 | $messages['sieveruleexp'] = 'Te rog să introduci una sau mai multe reguli prin care va fi testat fiecare mesaj. Filtrele sunt aplicate în ordinea în care apar în stânga ecranului. Dacă este găsită o potrivire, niciun alt filtru nu va mai fi testat.'; 153 | $messages['sieveruleexp_stop'] = 'Te rog să introduci una sau mai multe reguli prin care va fi testat fiecare mesaj. Filtrele sunt aplicate în ordinea în care apar în stânga ecranului până câand este găsită o acţiune de stopare.'; 154 | $messages['sieveactexp'] = 'Te rog sa selectezi una din opţiunile de mai jos. Aceste acţiuni vor fi efectuate pentru orice mesaj ce se potriveşte regulilor de mai jos.'; 155 | $messages['sieveheadershlp'] = 'Mai jos aveţi exemple de alte headere ce pot fi testate de către filtre. Selectează un header pentru a-l adăuga la regulă sau introdu una proprie în câmpul de mai sus.'; 156 | $messages['movingfilter'] = 'Se mută filtrul ...'; 157 | $messages['noexistingfilters'] = 'Nici un filtru existent ...'; 158 | $messages['importdefault'] = 'Foloseşte filtrele implicite:Există un set de filtre implicite. Doreşti să foloseşti aceste filtre?'; 159 | $messages['importother'] = 'Importă filtre Un alt set de filtre de la %s a fost găsit. Doreşti să imporţi aceste filtre in setul tău curent?'; 160 | $messages['switchtoadveditor'] = 'Trecerea la editorul avansat iti permite să editezi fişierul sieve direct. Orice modificare faci aici poate fi de nedescifrat in editorul normal si poate fi pierdută atunci când filtrele sunt salvate folosind editorul normal. Doreşti să continui?'; 161 | $messages['filterimported'] = 'Filtrul importat cu succes?'; 162 | $messages['filterimporterror'] = 'Imposibil de importat filtrul. Eroare de server.'; 163 | $messages['notifyinvalidmethod'] = 'Metoda nu pare a fi scrisă într-un format valid, trebuie să fie un URL. De ex. `mailto:ion@exemplu.com`'; 164 | $messages['nobodycontentpart'] = 'Te rog să introduci un conţinut de probă.'; 165 | $messages['badoperator'] = 'Îmi pare rău, operatorul selectat nu poate fi folosit în această regulă.'; 166 | $messages['filteractionerror'] = 'Acţiunea cerută nu este suportată de server.'; 167 | $messages['filtermissingerror'] = 'Imposibil de găsit regula cerută.'; 168 | $messages['contentpartexp'] = 'Tipul MIME-Type sau o parte specifica din mesajul ce trebuie testat. De ex. `message/rfc822`, `text/html`, `audio/mp3` sau `image`.'; 169 | $messages['delrulesetconf'] = 'Eşti sigur că doreşti să ştergi acest set de reguli?'; 170 | $messages['rulesetexists'] = 'Un set de reguli cu acest nume există deja. Introdu altul.'; 171 | $messages['copyexisting'] = 'Copiază setul de reguli existent: Doreşti să copiezi filtrele dintr-un set de reguli existent in setul tău curent?'; 172 | $messages['filtercopied'] = 'Filtrul copiat cu succes.'; 173 | $messages['nosieverulesets'] = 'Niciun set de reguli găsit.'; 174 | -------------------------------------------------------------------------------- /localization/sl_SI.inc: -------------------------------------------------------------------------------- 1 |
Npr.: če Janez pošlje sporočilo v ponedeljek, in je ponovitev nastavljena na 7, potem bo dobil odgovor v ponedeljek, še enega pa ne bo dobil pred naslednjim ponedeljkom, ne glede na to, koliko sporočil bo poslal vmes.'; 142 | $messages['vachandleexp'] = 'Z vzdevkom se lahko med seboj poveže več različnih samodejnih odgovorov - ko je bil samodejni odgovor z nekim vzdevkom poslan, ne bo v tej ponovitvi poslano noben drug odgovor z istim vzdevkom.'; 143 | $messages['vactoexp'] = 'Seznam dodatnih naslovov prejemnikov, ki bodo vključeni pri samodejnem odgovarjanju. Če naslova prejemnika sporočila ni na tem seznamu, samodejni odgovor na sporočilo ne bo poslan.'; 144 | $messages['vactoexp_adv'] = 'Naslove ločite z vejicami. Primer: naslov1@example.com,naslov2@example.org,naslov3@example.com'; 145 | $messages['vactoexp_err'] = 'Napaka: naslovi morajo biti ločeni z vejicami (,)'; 146 | $messages['norulename'] = 'Vnesite ime pravila'; 147 | $messages['ruleexists'] = 'Pravilo s tem imenom že obstaja. Vnesite drugo ime'; 148 | $messages['noheader'] = 'Vnesite ime polja'; 149 | $messages['headerbadchars'] = 'Napaka: polje vsebuje nedovoljene znake'; 150 | $messages['noheadervalue'] = 'Vnesite vrednost, s katero se preizkuša polje'; 151 | $messages['sizewrongformat'] = 'Napaka: velikost sporočila mora biti število'; 152 | $messages['noredirect'] = 'Vnestie e-poštni naslov, na katerega naj se preusmeri sporočilo'; 153 | $messages['redirectaddresserror'] = 'Napaka: naslov ni videti veljaven'; 154 | $messages['noreject'] = 'Vnesite sporočilo, ki naj se pošlje z zavrnitvijo'; 155 | $messages['vacnoperiod'] = 'Vnesite število dni, po preteku katerih se bo samodejni odgovor ponovil'; 156 | $messages['vacperiodwrongformat'] = 'Napaka: ponovitev mora biti večja ali enaka 1'; 157 | $messages['vacnomsg'] = 'Vnesite besedilo sporočila'; 158 | $messages['notifynomethod'] = 'Vnesite metodo, s katero naj bo poslano sporočilo'; 159 | $messages['notifynomsg'] = 'Vnesite besedilo sporočila'; 160 | $messages['sieveruleexp'] = 'Pripravite enega ali več pogojev, pod katerimi bo to pravilo uveljavljeno. Pravila se izvajajo v vrstnem redu, po katerem so razvrščena na seznamu na levi strani. Če sporočilo ustreza pogojem, se nadaljna pravila ne bodo izvedla.'; 161 | $messages['sieveruleexp_stop'] = 'Pripravite enega ali več pogojev, pod katerimi bo to pravilo uveljavljeno. Pravila se izvajajo v vrstnem redu, po katerem so razvrščena na seznamu na levi strani, in se izvajajo do dejanja ›Prenehaj‹.'; 162 | $messages['sieveactexp'] = 'Izberite eno od spodnjih možnosti. Ta dejanja se bodo izvedla za vsako sporočilo, ki ustreza zgornjim pravilom.'; 163 | $messages['sieveheadershlp'] = 'Spodaj je nekaj primerov drugih polj, ki jih lahko preizkušajo pravila. Izberite polje s seznama, ali pa vnesite poljubno polje.'; 164 | $messages['movingfilter'] = 'Premikam pravilo...'; 165 | $messages['noexistingfilters'] = 'Obstoječa pravila niso bila zaznana!'; 166 | $messages['importdefault'] = 'Uporabi privzeta pravila: na voljo so privzeta pravila. Ali jih želite uvoziti?'; 167 | $messages['importother'] = 'Uvozi filtre: Najdena je bila druga zbirka pravil %s. Ali želite uvoziti ta pravila v trenutno zbirko?'; 168 | $messages['switchtoadveditor'] = 'Preklop v napredni urejevalnik omogoča neposredno urejanje datoteke sieve. Sprememb, ki jih naredite v naprednem urejevalniku, običajni urejevalnik morda ne bo razumel, in se lahko izgubijo, če pravila shranite z običajnim urejevalnikom. Ali želite nadaljevati?'; 169 | $messages['filterimported'] = 'Pravilo uspešno uvoženo'; 170 | $messages['filterimporterror'] = 'Pravila ni bilo mogoče uvoziti. Prišlo je do napake strežnika'; 171 | $messages['notifyinvalidmethod'] = 'Metoda mora biti zapisana v URI formatu, npr.: ›mailto:alert@example.com‹.'; 172 | $messages['nobodycontentpart'] = 'Vnesite del vsebine za preizkus'; 173 | $messages['badoperator'] = 'Izbranega operaterja ne morete uporabiti s tem pravilom'; 174 | $messages['filteractionerror'] = 'Strežnik ne podpira željenega dejanja'; 175 | $messages['filtermissingerror'] = 'Željenega pravila ni bilo mogoče najti'; 176 | $messages['contentpartexp'] = 'MIME vrsta ali specifičen del sporočila, ki naj se testira. Npr.: ›message/rfc822‹, ›text/html‹, ›audio/mp3‹ ali ›image‹.'; 177 | $messages['delrulesetconf'] = 'Ali ste prepričani, da želite izbrisati izbrano zbirko?'; 178 | $messages['rulesetexists'] = 'Zbirka s tem imenom že obstaja. Vnesite drugo ime'; 179 | $messages['copyexisting'] = 'Kopiraj obstoječo zbirko: Ali želite kopirati pravila iz obstoječe zbirke v trenutno?'; 180 | $messages['filtercopied'] = 'Pravilo uspešno prekopirano'; 181 | $messages['nosieverulesets'] = 'Ni zbirk.'; 182 | $messages['baddateformat'] = 'Napaka: vnesite datum v obliki LLLL-MM-DD'; 183 | $messages['badtimeformat'] = 'Napaka: vnesite čas v obliki UU:MM:SS'; 184 | -------------------------------------------------------------------------------- /localization/uk_UA.inc: -------------------------------------------------------------------------------- 1 |
Наприклад: Якщо користувач написав вам листа в понеділок і ви встановили періодичність 7 (днів), то користувач отримає повідомлення про вашу відсутність в понеділок, і більше не буде отримувати таких повідомлень до наступного понеділка, навіть якщо він писав вам багато разів.'; 141 | $messages['vachandleexp'] = 'Мітка пов"язує декілька повідомлень про відсутність разом: після того, як одне з них було відправлено, інші повідомлення з тією ж міткою не будуть відправлятися протягом цього періоду '; 142 | $messages['vactoexp'] = 'Список додаткових адрес одержувачів, для яких буде працювати "автовідповідач". Відповіді не будуть відправлятися, якщо адреси одержувача отриманого повідомлення немає в цьому списку.'; 143 | $messages['vactoexp_adv'] = 'Декілька адрес розділяються комою (,). Наприклад, test1@example.com,test2@example.com,test3@example.com.'; 144 | $messages['vactoexp_err'] = 'Помилка: Декілька адрес повинні бути розділені комами.'; 145 | $messages['norulename'] = 'Будь-ласка, введіть назву для цього фільтру.'; 146 | $messages['ruleexists'] = 'Фільтр з такою назвою вже існує. Введіть іншу назву фільтру.'; 147 | $messages['noheader'] = 'Будь-ласка, введіть назву заголовку для перевірки.'; 148 | $messages['headerbadchars'] = 'Помилка: вказаний рядок містить заборонені символи.'; 149 | $messages['noheadervalue'] = 'Будь-ласка, введіть значення для перевірки заголовку.'; 150 | $messages['sizewrongformat'] = 'Помилка: розмір повідомлення має бути числовим.'; 151 | $messages['noredirect'] = 'Будь-ласка, введіть адресу електронної пошти для перенаправлення повідмолення.'; 152 | $messages['redirectaddresserror'] = 'Помилка: введено неправильну адресу.'; 153 | $messages['noreject'] = 'Будь-ласка напишіть текст повідомлення.'; 154 | $messages['vacnoperiod'] = 'Будь-ласка, введіть періодчиність відсилання повідомлень'; 155 | $messages['vacperiodwrongformat'] = 'Помилка: Періодичність повинна бути не від"ємним цілим числом'; 156 | $messages['vacnomsg'] = 'Будь-ласка напишіть текст повідомлення.'; 157 | $messages['notifynomethod'] = 'Будь-ласка, введіть спосіб відправки повідомлення.'; 158 | $messages['notifynomsg'] = 'Будь-ласка напишіть текст повідомлення.'; 159 | $messages['sieveruleexp'] = 'Будь-ласка, введіть одне або декілька правил, згідно яких будуть перевірятися повідомлення. Фільтри працюють в тому порядку, в якому вони з"являються зліва. Якщо відповідність знайдено, інші фільтри тестуватися не будуть.'; 160 | $messages['sieveactexp'] = 'Будь-ласка, виберіть одну або декілька дій. Ці дії будуть виконуватися для кожного повідомлення, яке відповідає вищевказаним правилам.'; 161 | $messages['sieveheadershlp'] = 'Нижче знаходяться декілька прикладів заголовків, які можуть бути перевірені фільтрами. Виберіть заголовок, щоб додати його, або введіть його у поле введення.'; 162 | $messages['movingfilter'] = 'Переміщення фільтру...'; 163 | $messages['noexistingfilters'] = 'Фільтрів не знайдено!'; 164 | $messages['importdefault'] = ' Фільтри за замовчуванням: Доступний набір фільтрів за замовчуванням. Використати?'; 165 | $messages['importother'] = 'Імпорт фільтрів: Знайдено набір фільтрів від додатку %s. Імпортувати?'; 166 | $messages['switchtoadveditor'] = 'Перемикання в режим розширеного редактору дозволяє редагувати вихідний текст сценарію \'sieve\'. Зміни, зроблені в цьому режимі, можуть не сприйматися графічним інтерфейсом, і можуть бути втрачені в разі збереження фільтрів в графічному інтерфейсі. Продовжити? '; 167 | $messages['filterimported'] = 'Фільтр успішно імпортований'; 168 | $messages['filterimporterror'] = 'Помилка серверу під час імпорту фільтра. Імпорт не виконано'; 169 | $messages['notifyinvalidmethod'] = 'Формат методу є невірним. Потрібно вказати URL, наприклад: «mailto: alert@example.com».'; 170 | $messages['nobodycontentpart'] = 'Вкажіть частину тіла повідомлення'; 171 | $messages['badoperator'] = 'Такий оператор не може використовуватися в даному правилі'; 172 | $messages['filteractionerror'] = 'Дія, не підтримується сервером'; 173 | $messages['filtermissingerror'] = 'Вказане правило не існує'; 174 | $messages['contentpartexp'] = 'MIME-тип або частина повідомлення для перевірки. Наприклад, «message/rfc822», «text/html», «audio/mp3» або «image».'; 175 | $messages['delrulesetconf'] = 'Дійсно видалити цей набір правил?'; 176 | $messages['rulesetexists'] = 'Набір правил з такою назвою вже існує. Виберіть іншу назву.'; 177 | $messages['copyexisting'] = 'Копіювання існуючого набору правил: Скопіювати фільтри з існуючого набору правил в поточний набір?'; 178 | $messages['filtercopied'] = 'Фільтри успішно скопійовані'; 179 | $messages['nosieverulesets'] = 'Набір правил не знайдено.'; 180 | $messages['baddateformat'] = 'Помилка: Дата повинна вводитися в форматі РРРР-ММ-ДД'; 181 | $messages['badtimeformat'] = 'Помилка: Час має бути введені в форматі ГГ:ХХ:СС'; 182 | -------------------------------------------------------------------------------- /localization/ru_RU.inc: -------------------------------------------------------------------------------- 1 |
Например: Если Вася написал вам письмо в понедельник и вы установили периодичность в 7 (дней), то Вася получит сообщение о Вашем отсутствии в понедельник, и больше не будет получать таких сообщений до следующего понедельника, даже если он писал вам много раз.'; 141 | $messages['vachandleexp'] = 'Метка связывает несколько сообщений об отсутствии вместе: после того, как одно из них было отправлено, другие сообщения с той же меткой не будут отправляться в течение этого периода..'; 142 | $messages['vactoexp'] = 'Список дополнительных адресов получателей, для которых будет работать "автоответчик". Ответы не будут отправляться, если адреса получателя принятого сообщения нет в этом списке.'; 143 | $messages['vactoexp_adv'] = 'Несколько адресов разделяются запятой (,). Например, test1@example.com,test2@example.com,test3@example.com.'; 144 | $messages['vactoexp_err'] = 'Ошибка: Несколько ардесов должны быть разделены запятыми.'; 145 | $messages['norulename'] = 'Пожалуйста, введите имя для этого фильтра.'; 146 | $messages['ruleexists'] = 'Фильтр с таким именем уже существует. Введите другое имя фильтра.'; 147 | $messages['noheader'] = 'Пожалуйста, введите имя заголовка для проверки.'; 148 | $messages['headerbadchars'] = 'Ошибка: указанная строка содержит запрещенные символы.'; 149 | $messages['noheadervalue'] = 'Пожалуйста, введите значение для проверки заголовка.'; 150 | $messages['sizewrongformat'] = 'Ошибка: размер сообщения должен быть числовым.'; 151 | $messages['noredirect'] = 'Пожалуйста, введите адрес электронной почты для перенаправки сообщения.'; 152 | $messages['redirectaddresserror'] = 'Ошибка: введен неверный адрес.'; 153 | $messages['noreject'] = 'Пожалуйста, введите текст сообщения.'; 154 | $messages['vacnoperiod'] = 'Пожалуйста, укажите периодичность отсылки уведомлений'; 155 | $messages['vacperiodwrongformat'] = 'Ошибка: Периодичность должна быть положительным целым числом'; 156 | $messages['vacnomsg'] = 'Пожалуйста, введите текст сообщения.'; 157 | $messages['notifynomethod'] = 'Пожалуйста, введите способ отправки уведомления.'; 158 | $messages['notifynomsg'] = 'Пожалуйста, введите текст сообщения.'; 159 | $messages['sieveruleexp'] = 'Пожалуйста, введите одно или несколько правил, согласно которым будут проверяться сообщения. Фильтры работают в том порядке, в котором они появляются слева. Если соответствие найдено, остальные фильтры тестироваться не будут.'; 160 | $messages['sieveactexp'] = 'Пожалуйста, выберите одно или несколько действий. Эти действия будут выполняться для каждого сообщения, соответствующего вышеуказанным правилам.'; 161 | $messages['sieveheadershlp'] = 'Ниже находятся несколько примеров заголовков, которые могут быть проверены фильтрами. Выберите заголовок, чтобы добавить его, либо введите другой в поле ввода.'; 162 | $messages['movingfilter'] = 'Перемещение фильтра...'; 163 | $messages['noexistingfilters'] = 'Фильтров не найдено!'; 164 | $messages['importdefault'] = 'Фильтры по умолчанию: Доступен набор фильтров по умолчанию. Использовать?'; 165 | $messages['importother'] = 'Импорт фильтров: Найден набор фильтров от приложения %s. Импортировать?'; 166 | $messages['switchtoadveditor'] = 'Переключение в режим расширенного редактора позволяет редактировать исходный текст сценария \'sieve\'. Изменения, сделанные в этом режиме, могут не восприниматься графическим интерфейсом, и могут быть потеряны в случае сохранения фильтров в графическом интерфейсе. Продолжить?'; 167 | $messages['filterimported'] = 'Фильтр успешно импортирован'; 168 | $messages['filterimporterror'] = 'Ошибка сервера во время импорта фильтра. Импорт не выполнен'; 169 | $messages['notifyinvalidmethod'] = 'Формат метода неверен. Нужно указать URI, например: «mailto:alert@example.com».'; 170 | $messages['nobodycontentpart'] = 'Укажите часть тела сообщения'; 171 | $messages['badoperator'] = 'Такой оператор не может использоваться в данном правиле'; 172 | $messages['filteractionerror'] = 'Запрошенное действие не поддерживается сервером'; 173 | $messages['filtermissingerror'] = 'Указанное правило не существует'; 174 | $messages['contentpartexp'] = 'MIME-тип или часть сообщения для проверки. Например, «message/rfc822», «text/html», «audio/mp3» или «image».'; 175 | $messages['delrulesetconf'] = 'Действительно удалить этот набор правил?'; 176 | $messages['rulesetexists'] = 'Набор правил с таким названием уже существует. Выберите другое название.'; 177 | $messages['copyexisting'] = 'Копирование существующего набора правил: Скопировать фильтры из существующего набора правил в текущий набор?'; 178 | $messages['filtercopied'] = 'Фильтры успешно скопированы'; 179 | $messages['nosieverulesets'] = 'Наборы правил не найдены.'; 180 | $messages['baddateformat'] = 'Ошибка: Дата должна вводиться в формате ГГГГ-ММ-ДД'; 181 | $messages['badtimeformat'] = 'Ошибка: Время должно вводиться в формате ЧЧ:ММ:СС'; 182 | -------------------------------------------------------------------------------- /localization/fi_FI.inc: -------------------------------------------------------------------------------- 1 |
Esimerkki: Jaakko lähettää sinulle sähköpostia maanantaina ja aikaväliksi on valittu 7 päivää. Jaakko saa poissaoloviestisi maanantaina, mutta jos hän lähettää sinulle samalla viikolla lisää viestejä, uutta ilmoitusta ei lähetetä ennen seuraavaa maanantaita.'; 142 | $messages['vachandleexp'] = 'Ryhmittelyä voidaan käyttää yhdistämään eri poissaoloviestit toisiinsa. Kun yksi viesti on lähetetty, muita saman ryhmittelyn viestejä ei lähetetä kyseisen aikavälin aikana.'; 143 | $messages['vactoexp'] = 'Lista muista vastaanottajien sähköpostiosoitteista, jotka liitetään automaattivastaukseen. Mikäli viestin vastaanottaja ei ole pääosoitteesi eikä löydy tältä listalta, mitään viestiä ei lähetetä.'; 144 | $messages['vactoexp_adv'] = 'Erottele aliakset pilkulla (,). Esimerkki: testi1@esimerkki.fi,testi2@esimerkki.fi,testi3@esimerkki.fi'; 145 | $messages['vactoexp_err'] = 'Virhe: aliakset tulee erotella pilkulla (,)'; 146 | $messages['norulename'] = 'Anna suotimelle nimi'; 147 | $messages['ruleexists'] = 'Tällä nimellä on jo suodin. Anna uusi nimi'; 148 | $messages['noheader'] = 'Anna testattavan otsikkotiedon nimi'; 149 | $messages['headerbadchars'] = 'Virhe: otsikkotiedossa on kiellettyjä merkkejä'; 150 | $messages['noheadervalue'] = 'Anna arvo, jolla otsikkotietoa testataan'; 151 | $messages['sizewrongformat'] = 'Virhe: viestin koon täytyy olla numeerinen'; 152 | $messages['noredirect'] = 'Anna osoite, johon viestit ohjataan'; 153 | $messages['redirectaddresserror'] = 'Virhe: osoite ei ole kelvollinen'; 154 | $messages['noreject'] = 'Anna viesti, joka liitetään hylättyyn sähköpostiin'; 155 | $messages['vacnoperiod'] = 'Ilmoita aikaväli (päivien määrä), jona samalle henkilölle ei lähetetä uutta viestiä.'; 156 | $messages['vacperiodwrongformat'] = 'Virhe: aikavälin täytyy olla suurempi tai yhtä suuri luku kuin 1'; 157 | $messages['vacnomsg'] = 'Kirjoita viestiisi jotain sisältöä'; 158 | $messages['notifynomethod'] = 'Määrittele metodi, jota käyttäen ilmoitus lähetetään.'; 159 | $messages['notifynomsg'] = 'Kirjoita viestiisi jotain sisältöä'; 160 | $messages['sieveruleexp'] = 'Määrittele yksi tai useampia sääntöjä, joihin jokaista viestiä testataan. Suotimet suoritetaan siinä järjestyksessä, jossa ne esiintyvät vasemmalla olevalla listalla. Kun jokin suotimista täsmää, loppuja suotimia ei suoriteta.'; 161 | $messages['sieveruleexp_stop'] = 'Määrittele yksi tai useampia sääntöjä, joihin jokaista viestiä testataan. Suotimet suoritetaan siinä järjestyksessä, jossa ne esiintyvät vasemmalla olevalla listalla, kunnes keskeytyssääntö tavataan.'; 162 | $messages['sieveactexp'] = 'Valitse jokin alla olevista vaihtoehdoista. Toiminnot suoritetaan kaikille viesteille, jotka täsmäävät yllä oleviin sääntöihin.'; 163 | $messages['sieveheadershlp'] = 'Alla on esimerkkejä otsikkotiedoista, joita voidaan testata suotimilla. Valitse jokin otsikkotieto listasta tai määrittele muu otsikkotieto yllä olevaan kenttään.'; 164 | $messages['movingfilter'] = 'Siirretään suodinta...'; 165 | $messages['noexistingfilters'] = 'Suotimia ei löytynyt!'; 166 | $messages['importdefault'] = 'Käytä oletussuotimia: Suotimia on saatavilla. Haluatko käyttää näitä suotimia?'; 167 | $messages['importother'] = 'Tuo suotimia: Suotimia löydettiin palvelusta %s. Haluatko lisätä nämä suotimet nykyisiin suotimiin?'; 168 | $messages['switchtoadveditor'] = 'Laajennetulla editorilla voit muokata seulatiedostoa suoraan. Tehdyt muutokset eivät välttämättä ole luettavissa tavallisessa editorissa ja saattavat hävitä, jos suotimia muokataan tavallisella editorilla. Haluatko jatkaa?'; 169 | $messages['filterimported'] = 'Suodin lisätty onnistuneesti'; 170 | $messages['filterimporterror'] = 'Palvelinvirhe. Suotimia ei lisätty'; 171 | $messages['notifyinvalidmethod'] = 'Metodi ei ole kelvollisessa muodossa. Sen täytyy olla osoite. Esimerkki: mailto:virhe@esimerkki.fi'; 172 | $messages['nobodycontentpart'] = 'Anna testattava sisältöosa'; 173 | $messages['badoperator'] = 'Valitsemaasi operaattoria ei voida käyttää tässä säännössä'; 174 | $messages['filteractionerror'] = 'Palvelin ei tue valitsemaasi toimintoa'; 175 | $messages['filtermissingerror'] = 'Valittua sääntöä ei löytynyt'; 176 | $messages['contentpartexp'] = 'MIME-tyyppi tai tietty viestin osa, jota testataan. Esimerkki: "message/rfc822", "text/html", "audio/mp3" tai "image"'; 177 | $messages['delrulesetconf'] = 'Haluatko varmasti poistaa tämän säännöstön?'; 178 | $messages['rulesetexists'] = 'Tällä nimellä on jo säännöstö. Anna uusi nimi'; 179 | $messages['copyexisting'] = 'Kopioi säännöstö: Haluatko kopioida toisen säännöstön nykyisiin sääntöihisi?'; 180 | $messages['filtercopied'] = 'Suodin kopioitu onnistuneesti'; 181 | $messages['nosieverulesets'] = 'Säännöstöä ei löytynyt.'; 182 | $messages['baddateformat'] = 'Virhe: anna päivämäärä muodossa VVVV-KK-PP'; 183 | $messages['badtimeformat'] = 'Virhe: anna aika muodossa TT:MM:SS'; 184 | $messages['missingfoldername'] = 'Virhe: anna kansiolle nimi'; 185 | -------------------------------------------------------------------------------- /localization/pt_BR.inc: -------------------------------------------------------------------------------- 1 |
Por exemplo: Se João lhe enviar e-mails na segunda-feira e o período estiver definido para 7 dias, João irá receber uma mensagem de Fora do Escritório na segunda-feira, mas não irá receber mais nenhuma até à segunda-feira seguinte, não importando quantos e-mails ele lhe envie durante a semana.'; 143 | $messages['vachandleexp'] = 'Um identificador pode ser usado para ligar as diferentes mensagens de Fora do Escritório em conjunto, uma vez que uma mensagem foi enviada nenhuma outra com o mesmo identificador será enviada.'; 144 | $messages['vactoexp'] = 'Lista de endereços de destinatários adicionais que estão incluídos na resposta automática. Se um destinatário de e-mail não for seu endereço principal e não estiver nesta lista, nenhuma mensagem será enviada.'; 145 | $messages['norulename'] = 'Por favor, indique um nome para este filtro'; 146 | $messages['ruleexists'] = 'Já existe um filtro com este nome. Por favor, indique outro'; 147 | $messages['noheader'] = 'Por favor, indique o nome do cabeçalho para testar'; 148 | $messages['headerbadchars'] = 'Erro: O cabeçalho contém caracteres proibidos'; 149 | $messages['noheadervalue'] = 'Por favor indique um valor para testar o cabeçalho contra'; 150 | $messages['sizewrongformat'] = 'Erro: O tamanho da mensagem deve ser numérico'; 151 | $messages['noredirect'] = 'Indique um endereço de e-mail para redirecionar as mensagens'; 152 | $messages['redirectaddresserror'] = 'Erro: O endereço de e-mail parece ser inválido'; 153 | $messages['noreject'] = 'Indique uma mensagem para enviar juntamente com o e-mail rejeitado'; 154 | $messages['vacnoperiod'] = 'Por favor insira um número de dias para o período em que a mensagem não será reenviado para a mesma pessoa'; 155 | $messages['vacperiodwrongformat'] = 'Erro: O período deve ser um número maior ou igual a 1'; 156 | $messages['vacnomsg'] = 'Insira o texto para a sua mensagem'; 157 | $messages['notifynomethod'] = 'Por favor, indique um método pelo qual a notificação deve ser enviada'; 158 | $messages['notifynomsg'] = 'Insira o texto para a sua mensagem'; 159 | $messages['sieveruleexp'] = 'Por favor, defina uma ou mais regras sobre as quais cada mensagem será testada. Os filtros são executados na ordem em que aparecem à esquerda da tela, se for encontrada uma correspondência mais nenhum filtro será testado.'; 160 | $messages['sieveruleexp_stop'] = 'Por favor, defina uma ou mais regras sobre as quais cada mensagem será testada. Os filtros são executados na ordem em que aparecem à esquerda da tela até uma ação de \'Stop\' ser encontrada.'; 161 | $messages['sieveactexp'] = 'Por favor, selecione uma das opções abaixo. Essas ações serão realizadas para qualquer mensagem correspondente à(s) regra(s) acima.'; 162 | $messages['sieveheadershlp'] = 'Abaixo estão alguns exemplos de outros cabeçalhos que podem ser testados pelos filtros. Selecione um cabeçalho para adicioná-lo à regra, ou introduza um personalizado na caixa acima.'; 163 | $messages['movingfilter'] = 'Movendo filtro...'; 164 | $messages['noexistingfilters'] = 'Não foi detectado nenhum filtro existente!'; 165 | $messages['importdefault'] = 'Usar filtros predefinidos: Há um conjunto de filtros predefinidos disponíveis. Gostaria de usar esses filtros?'; 166 | $messages['importother'] = 'Importação de filtros:Foi encontrado outro conjunto de filtros de %s. Gostaria de importar esses filtros para o seu conjunto actual?'; 167 | $messages['switchtoadveditor'] = 'Mudando para o editor avançado é possível editar o arquivo Sieve diretamente. Quaisquer alterações aqui efetuadas podem ser ilegíveis no editor normal e podem ser perdidas quando os filtros são guardados usando o editor normal. Deseja continuar?'; 168 | $messages['filterimported'] = 'Filtro importado com sucesso'; 169 | $messages['filterimporterror'] = 'Não foi possível importar o filtro. Ocorreu um erro no servidor.'; 170 | $messages['notifyinvalidmethod'] = 'O método parece não estar escrito num formato válido, ele deve ser uma URL. Por exemplo: "mailto: alert@example.com».'; 171 | $messages['nobodycontentpart'] = 'Por favor, indique uma parte de conteúdo para testar'; 172 | $messages['badoperator'] = 'O operador seleccionado não pode ser usado nesta regra'; 173 | $messages['filteractionerror'] = 'A ação solicitada não é suportada pelo servidor'; 174 | $messages['filtermissingerror'] = 'Não foi possível encontrar a regra solicitada'; 175 | $messages['contentpartexp'] = 'O tipo de MIME ou parte específica da mensagem que deve ser testado. Por exemplo: `text/html`, `audio/mp3` or `image`.'; 176 | $messages['delrulesetconf'] = 'Tem certeza que quer eliminar este conjunto de regras?'; 177 | $messages['rulesetexists'] = 'Um conjunto de regras com este nome já existe. Por favor, indique outro nome'; 178 | $messages['copyexisting'] = 'Copiar conjunto de regras existente:Gostaria de copiar os filtros de um conjunto de de regras existente para o seu conjunto actual?'; 179 | $messages['filtercopied'] = 'Filtro copiado com sucesso'; 180 | $messages['nosieverulesets'] = 'Nenhum conjunto de regras encontrado.'; 181 | $messages['baddateformat'] = 'Erro: Indique a data no formato AAAA-MM-DD'; 182 | $messages['badtimeformat'] = 'Erro: Indique a hora no formato HH:MM:SS'; 183 | --------------------------------------------------------------------------------