Import ingo from CVS HEAD.
authorMichael M Slusarz <slusarz@curecanti.org>
Mon, 23 Feb 2009 07:16:41 +0000 (00:16 -0700)
committerMichael M Slusarz <slusarz@curecanti.org>
Mon, 23 Feb 2009 07:16:41 +0000 (00:16 -0700)
192 files changed:
.gitignore
ingo/LICENSE [new file with mode: 0644]
ingo/README [new file with mode: 0644]
ingo/blacklist.php [new file with mode: 0644]
ingo/config/.htaccess [new file with mode: 0644]
ingo/config/backends.php.dist [new file with mode: 0644]
ingo/config/conf.xml [new file with mode: 0644]
ingo/config/fields.php.dist [new file with mode: 0644]
ingo/config/hooks.php.dist [new file with mode: 0644]
ingo/config/prefs.php.dist [new file with mode: 0644]
ingo/docs/CHANGES [new file with mode: 0644]
ingo/docs/CREDITS [new file with mode: 0644]
ingo/docs/INSTALL [new file with mode: 0644]
ingo/docs/RELEASE_NOTES [new file with mode: 0644]
ingo/docs/TODO [new file with mode: 0644]
ingo/docs/UPGRADING [new file with mode: 0644]
ingo/filters.php [new file with mode: 0644]
ingo/forward.php [new file with mode: 0644]
ingo/index.php [new file with mode: 0644]
ingo/lib/Block/overview.php [new file with mode: 0644]
ingo/lib/Driver.php [new file with mode: 0644]
ingo/lib/Driver/ldap.php [new file with mode: 0644]
ingo/lib/Driver/null.php [new file with mode: 0644]
ingo/lib/Driver/sivtest.php [new file with mode: 0644]
ingo/lib/Driver/timsieved.php [new file with mode: 0644]
ingo/lib/Driver/vfs.php [new file with mode: 0644]
ingo/lib/Ingo.php [new file with mode: 0644]
ingo/lib/Script.php [new file with mode: 0644]
ingo/lib/Script/imap.php [new file with mode: 0644]
ingo/lib/Script/imap/live.php [new file with mode: 0644]
ingo/lib/Script/imap/mock.php [new file with mode: 0644]
ingo/lib/Script/maildrop.php [new file with mode: 0644]
ingo/lib/Script/procmail.php [new file with mode: 0644]
ingo/lib/Script/sieve.php [new file with mode: 0644]
ingo/lib/Session.php [new file with mode: 0644]
ingo/lib/Storage.php [new file with mode: 0644]
ingo/lib/Storage/mock.php [new file with mode: 0644]
ingo/lib/Storage/prefs.php [new file with mode: 0644]
ingo/lib/Storage/sql.php [new file with mode: 0644]
ingo/lib/Template.php [new file with mode: 0644]
ingo/lib/UI/VarRenderer/ingo.php [new file with mode: 0644]
ingo/lib/api.php [new file with mode: 0644]
ingo/lib/base.php [new file with mode: 0644]
ingo/lib/tests/MaildropTest.php [new file with mode: 0644]
ingo/lib/tests/ProcmailTest.php [new file with mode: 0644]
ingo/lib/tests/ScriptTest.php [new file with mode: 0644]
ingo/lib/tests/SieveTest.php [new file with mode: 0644]
ingo/lib/tests/TestBase.php [new file with mode: 0644]
ingo/lib/tests/_data/from_spammer [new file with mode: 0644]
ingo/lib/tests/_data/not_from_spammer [new file with mode: 0644]
ingo/lib/version.php [new file with mode: 0644]
ingo/locale/ca_ES/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/ca_ES/help.xml [new file with mode: 0755]
ingo/locale/cs_CZ/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/da_DK/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/de_DE/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/de_DE/help.xml [new file with mode: 0644]
ingo/locale/el_GR/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/en_US/help.xml [new file with mode: 0644]
ingo/locale/es_ES/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/es_ES/help.xml [new file with mode: 0644]
ingo/locale/et_EE/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/eu_ES/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/eu_ES/help.xml [new file with mode: 0644]
ingo/locale/fi_FI/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/fi_FI/help.xml [new file with mode: 0644]
ingo/locale/fr_FR/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/fr_FR/help.xml [new file with mode: 0644]
ingo/locale/hu_HU/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/it_IT/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/ja_JP/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/ko_KR/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/lt_LT/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/lv_LV/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/lv_LV/help.xml [new file with mode: 0644]
ingo/locale/nb_NO/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/nl_NL/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/pl_PL/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/pt_BR/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/pt_PT/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/ro_RO/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/ru_RU/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/sk_SK/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/sl_SI/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/sv_SE/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/tr_TR/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/uk_UA/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/zh_CN/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/locale/zh_TW/LC_MESSAGES/ingo.mo [new file with mode: 0644]
ingo/po/README [new file with mode: 0644]
ingo/po/ca_ES.po [new file with mode: 0644]
ingo/po/cs_CZ.po [new file with mode: 0644]
ingo/po/da_DK.po [new file with mode: 0644]
ingo/po/de_DE.po [new file with mode: 0644]
ingo/po/el_GR.po [new file with mode: 0644]
ingo/po/es_ES.po [new file with mode: 0644]
ingo/po/et_EE.po [new file with mode: 0644]
ingo/po/eu_ES.po [new file with mode: 0644]
ingo/po/fi_FI.po [new file with mode: 0644]
ingo/po/fr_FR.po [new file with mode: 0644]
ingo/po/hu_HU.po [new file with mode: 0644]
ingo/po/ingo.pot [new file with mode: 0644]
ingo/po/it_IT.po [new file with mode: 0644]
ingo/po/ja_JP.po [new file with mode: 0644]
ingo/po/ko_KR.po [new file with mode: 0644]
ingo/po/lt_LT.po [new file with mode: 0644]
ingo/po/lv_LV.po [new file with mode: 0644]
ingo/po/nb_NO.po [new file with mode: 0644]
ingo/po/nl_NL.po [new file with mode: 0644]
ingo/po/pl_PL.po [new file with mode: 0644]
ingo/po/pt_BR.po [new file with mode: 0644]
ingo/po/pt_PT.po [new file with mode: 0644]
ingo/po/ro_RO.po [new file with mode: 0644]
ingo/po/ru_RU.po [new file with mode: 0644]
ingo/po/sk_SK.po [new file with mode: 0644]
ingo/po/sl_SI.po [new file with mode: 0644]
ingo/po/sv_SE.po [new file with mode: 0644]
ingo/po/tr_TR.po [new file with mode: 0644]
ingo/po/uk_UA.po [new file with mode: 0644]
ingo/po/zh_CN.po [new file with mode: 0644]
ingo/po/zh_TW.po [new file with mode: 0644]
ingo/rule.php [new file with mode: 0644]
ingo/script.php [new file with mode: 0644]
ingo/scripts/.htaccess [new file with mode: 0644]
ingo/scripts/ingo-postfix-policyd [new file with mode: 0755]
ingo/scripts/sql/ingo.oci8.sql [new file with mode: 0644]
ingo/scripts/sql/ingo.sql [new file with mode: 0644]
ingo/scripts/sql/ingo.xml [new file with mode: 0644]
ingo/scripts/upgrades/1.2.1_to_1.2.2.sql [new file with mode: 0644]
ingo/scripts/upgrades/1.2_to_1.2.1.sql [new file with mode: 0644]
ingo/scripts/upgrades/2007-04-25_add_timed_vacation.sql [new file with mode: 0644]
ingo/scripts/upgrades/2008-06-17_fix_varchar_lengths.sql [new file with mode: 0644]
ingo/scripts/upgrades/2008-09-23_fix_group_uid.sql [new file with mode: 0644]
ingo/scripts/upgrades/convert_datatree_shares_to_sql.php [new file with mode: 0755]
ingo/scripts/upgrades/convert_prefs_to_sql.php [new file with mode: 0755]
ingo/spam.php [new file with mode: 0644]
ingo/templates/blacklist/blacklist.inc [new file with mode: 0644]
ingo/templates/common-header.inc [new file with mode: 0644]
ingo/templates/filters/filter-none.inc [new file with mode: 0644]
ingo/templates/filters/filter.html [new file with mode: 0644]
ingo/templates/filters/footer.inc [new file with mode: 0644]
ingo/templates/filters/header.inc [new file with mode: 0644]
ingo/templates/filters/settings.inc [new file with mode: 0644]
ingo/templates/javascript/new_folder.js [new file with mode: 0644]
ingo/templates/menu.inc [new file with mode: 0644]
ingo/templates/rule/filter.inc [new file with mode: 0644]
ingo/templates/rule/footer.inc [new file with mode: 0644]
ingo/templates/rule/header.inc [new file with mode: 0644]
ingo/templates/script/activate.inc [new file with mode: 0644]
ingo/templates/script/footer.inc [new file with mode: 0644]
ingo/templates/script/header.inc [new file with mode: 0644]
ingo/templates/script/script.inc [new file with mode: 0644]
ingo/templates/whitelist/whitelist.inc [new file with mode: 0644]
ingo/test.php [new file with mode: 0644]
ingo/themes/graphics/blacklist.png [new file with mode: 0644]
ingo/themes/graphics/copy.png [new file with mode: 0644]
ingo/themes/graphics/disable.png [new file with mode: 0644]
ingo/themes/graphics/enable.png [new file with mode: 0644]
ingo/themes/graphics/favicon.ico [new file with mode: 0644]
ingo/themes/graphics/forward.png [new file with mode: 0644]
ingo/themes/graphics/ingo.png [new file with mode: 0644]
ingo/themes/graphics/script.png [new file with mode: 0644]
ingo/themes/graphics/spam.png [new file with mode: 0644]
ingo/themes/graphics/vacation.png [new file with mode: 0644]
ingo/themes/graphics/whitelist.png [new file with mode: 0644]
ingo/themes/screen.css [new file with mode: 0644]
ingo/themes/silver/graphics/blacklist.png [new file with mode: 0644]
ingo/themes/silver/graphics/copy.png [new file with mode: 0644]
ingo/themes/silver/graphics/disable.png [new file with mode: 0644]
ingo/themes/silver/graphics/enable.png [new file with mode: 0644]
ingo/themes/silver/graphics/favicon.ico [new file with mode: 0644]
ingo/themes/silver/graphics/forward.png [new file with mode: 0644]
ingo/themes/silver/graphics/ingo.png [new file with mode: 0644]
ingo/themes/silver/graphics/script.png [new file with mode: 0644]
ingo/themes/silver/graphics/spam.png [new file with mode: 0644]
ingo/themes/silver/graphics/vacation.png [new file with mode: 0644]
ingo/themes/silver/graphics/whitelist.png [new file with mode: 0644]
ingo/themes/silver/themed_graphics [new file with mode: 0644]
ingo/themes/tango-blue/graphics/blacklist.png [new file with mode: 0644]
ingo/themes/tango-blue/graphics/copy.png [new file with mode: 0644]
ingo/themes/tango-blue/graphics/disable.png [new file with mode: 0644]
ingo/themes/tango-blue/graphics/enable.png [new file with mode: 0644]
ingo/themes/tango-blue/graphics/favicon.ico [new file with mode: 0644]
ingo/themes/tango-blue/graphics/forward.png [new file with mode: 0644]
ingo/themes/tango-blue/graphics/ingo.png [new file with mode: 0644]
ingo/themes/tango-blue/graphics/script.png [new file with mode: 0644]
ingo/themes/tango-blue/graphics/spam.png [new file with mode: 0644]
ingo/themes/tango-blue/graphics/vacation.png [new file with mode: 0644]
ingo/themes/tango-blue/graphics/whitelist.png [new file with mode: 0644]
ingo/themes/tango-blue/themed_graphics [new file with mode: 0644]
ingo/vacation.php [new file with mode: 0644]
ingo/whitelist.php [new file with mode: 0644]

index cf2cfe4..79e764e 100644 (file)
@@ -23,5 +23,6 @@ iPhoto2Ansel/iPhoto2Ansel.xcodeproj/*.pbxuser
 iPhoto2Ansel/iPhoto2Ansel.xcodeproj/*.perspectivev3
 iPhoto2Ansel/*.pbxproject
 imp/config/*.php
+ingo/config/*.php
 jeta/config/*.php
 kronolith/config/*.php
diff --git a/ingo/LICENSE b/ingo/LICENSE
new file mode 100644 (file)
index 0000000..198b72e
--- /dev/null
@@ -0,0 +1,49 @@
+Version 1.0
+
+Copyright 2002-2009 The Horde Project (http://www.horde.org/)
+All rights reserved.
+
+Redistribution and use in source and binary forms, with or without
+modification, are permitted provided that the following conditions are
+met:
+
+1. Redistributions of source code must retain the above copyright
+notice, this list of conditions and the following disclaimer.
+
+2. Redistributions in binary form must reproduce the above copyright
+notice, this list of conditions and the following disclaimer in the
+documentation and/or other materials provided with the distribution.
+
+3. The end-user documentation included with the redistribution, if
+any, must include the following acknowledgment:
+
+   "This product includes software developed by the Horde Project
+    (http://www.horde.org/)."
+
+Alternately, this acknowledgment may appear in the software itself, if
+and wherever such third-party acknowledgments normally appear.
+
+4. The names "Horde", "The Horde Project", and "Ingo" must not be used
+to endorse or promote products derived from this software without
+prior written permission. For written permission, please contact
+core@horde.org.
+
+5. Products derived from this software may not be called "Horde" or
+"Ingo", nor may "Horde" or "Ingo" appear in their name, without prior
+written permission of the Horde Project.
+
+THIS SOFTWARE IS PROVIDED "AS IS" AND ANY EXPRESSED OR IMPLIED
+WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF
+MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED.
+IN NO EVENT SHALL THE HORDE PROJECT OR ITS CONTRIBUTORS BE LIABLE FOR
+ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL
+DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE
+GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS
+INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER
+IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR
+OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF
+ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
+
+This software consists of voluntary contributions made by many
+individuals on behalf of the Horde Project. For more information on
+the Horde Project, please see <http://www.horde.org/>.
diff --git a/ingo/README b/ingo/README
new file mode 100644 (file)
index 0000000..cc1ef35
--- /dev/null
@@ -0,0 +1,85 @@
+What is Ingo?
+==============
+
+:Contact:       ingo@lists.horde.org
+
+.. contents:: Contents
+.. section-numbering::
+
+Ingo is an email filter rules manager.  It can generate Sieve and procmail
+scripts and upload them to the server (using a timsieved or VFS FTP driver,
+respectively).  It can also create and execute IMAP commands to run filter
+rules.
+
+This software is OSI Certified Open Source Software.  OSI Certified is a
+certification mark of the `Open Source Initiative`_.
+
+.. _`Open Source Initiative`: http://www.opensource.org/
+
+
+Obtaining Ingo
+--------------
+
+Further information on Ingo and the latest version can be obtained at
+
+  http://www.horde.org/ingo/
+
+
+Documentation
+-------------
+
+The following documentation is available in the Ingo distribution:
+
+:README_:          This file
+:LICENSE_:         Copyright and license information
+:`docs/CHANGES`_:  Changes by release
+:`docs/CREDITS`_:  Project developers
+:`docs/INSTALL`_:  Installation instructions and notes
+:`docs/TODO`_:     Development TODO list
+
+
+Installation
+------------
+
+Instructions for installing Ingo can be found in the file INSTALL_ in the
+``docs/`` directory of the Ingo distribution.
+
+
+Assistance
+----------
+
+If you encounter problems with Ingo, help is available!
+
+The Horde Frequently Asked Questions List (FAQ), available on the Web at
+
+  http://www.horde.org/faq/
+
+The Horde Project runs a number of mailing lists, for individual applications
+and for issues relating to the project as a whole.  Information, archives, and
+subscription information can be found at
+
+  http://www.horde.org/mail/
+
+Lastly, Horde developers, contributors and users also make occasional
+appearances on IRC, on the channel #horde on the Freenode Network
+(irc.freenode.net).
+
+
+Licensing
+---------
+
+For licensing and copyright information, please see the file LICENSE_
+in the Ingo distribution.
+
+Thanks,
+
+The Ingo team
+
+
+.. _README: ?f=README.html
+.. _LICENSE: http://www.horde.org/licenses/asl.php
+.. _docs/CHANGES: ?f=CHANGES.html
+.. _docs/CREDITS: ?f=CREDITS.html
+.. _INSTALL:
+.. _docs/INSTALL: ?f=INSTALL.html
+.. _docs/TODO: ?f=TODO.html
diff --git a/ingo/blacklist.php b/ingo/blacklist.php
new file mode 100644 (file)
index 0000000..72c3c94
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+/**
+ * Blacklist script.
+ *
+ * Copyright 2002-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author Mike Cochrane <mike@graftonhall.co.nz>
+ * @author Michael Slusarz <slusarz@horde.org>
+ */
+
+require_once dirname(__FILE__) . '/lib/base.php';
+
+/* Redirect if blacklist is not available. */
+if (!in_array(Ingo_Storage::ACTION_BLACKLIST, $_SESSION['ingo']['script_categories'])) {
+    $notification->push(_("Blacklist is not supported in the current filtering driver."), 'horde.error');
+    header('Location: ' . Horde::applicationUrl('filters.php', true));
+    exit;
+}
+
+/* Get the backend. */
+$scriptor = Ingo::loadIngoScript();
+
+/* Determine if this scriptor supports mark-as-deleted. */
+$have_mark = $scriptor && in_array(Ingo_Storage::ACTION_FLAGONLY, $scriptor->availableActions());
+
+/* Get the blacklist object. */
+$blacklist = &$ingo_storage->retrieve(Ingo_Storage::ACTION_BLACKLIST);
+if (is_a($blacklist, 'PEAR_Error')) {
+    $notification->push($blacklist);
+    $blacklist = new Ingo_Storage_Blacklist();
+}
+$folder = $blacklist_folder = null;
+
+/* Perform requested actions. */
+$actionID = Util::getFormData('actionID');
+switch ($actionID) {
+case 'create_folder':
+    $blacklist_folder = Ingo::createFolder(Util::getFormData('new_folder_name'));
+    break;
+
+case 'rule_update':
+    switch (Util::getFormData('action')) {
+    case 'delete':
+        $folder = '';
+        break;
+
+    case 'mark':
+        $folder = Ingo::BLACKLIST_MARKER;
+        break;
+
+    case 'folder':
+        $folder = Util::getFormData('actionvalue');
+        break;
+    }
+
+    if (($folder == Ingo::BLACKLIST_MARKER) && !$have_mark) {
+        $notification->push("Not supported by this script generator.", 'horde.error');
+    } else {
+        $ret = $blacklist->setBlacklist(Util::getFormData('blacklist'));
+        if (is_a($ret, 'PEAR_Error')) {
+            $notification->push($ret, $ret->getCode());
+        } else {
+            $blacklist->setBlacklistFolder($folder);
+            if (!$ingo_storage->store($blacklist)) {
+                $notification->push(_("Error saving changes."), 'horde.error');
+            } else {
+                $notification->push(_("Changes saved."), 'horde.success');
+            }
+
+            if ($prefs->getValue('auto_update')) {
+                /* This does its own $notification->push() on error: */
+                Ingo::updateScript();
+            }
+        }
+
+        /* Update the timestamp for the rules. */
+        $_SESSION['ingo']['change'] = time();
+    }
+
+    break;
+}
+
+/* Create the folder listing. */
+if (!isset($blacklist_folder)) {
+    $blacklist_folder = $blacklist->getBlacklistFolder();
+}
+$field_num = $have_mark ? 2 : 1;
+$folder_list = Ingo::flistSelect($blacklist_folder, 'filters', 'actionvalue',
+                                 'document.filters.action[' . $field_num .
+                                 '].checked=true');
+
+/* Get the blacklist rule. */
+$filters = &$ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS);
+$bl_rule = $filters->findRule(Ingo_Storage::ACTION_BLACKLIST);
+
+/* Include new folder JS if necessary. */
+if ($registry->hasMethod('mail/createFolder')) {
+    Horde::addScriptFile('new_folder.js');
+}
+
+$title = _("Blacklist Edit");
+require INGO_TEMPLATES . '/common-header.inc';
+require INGO_TEMPLATES . '/menu.inc';
+require INGO_TEMPLATES . '/blacklist/blacklist.inc';
+require $registry->get('templates', 'horde') . '/common-footer.inc';
diff --git a/ingo/config/.htaccess b/ingo/config/.htaccess
new file mode 100644 (file)
index 0000000..3a42882
--- /dev/null
@@ -0,0 +1 @@
+Deny from all
diff --git a/ingo/config/backends.php.dist b/ingo/config/backends.php.dist
new file mode 100644 (file)
index 0000000..c861426
--- /dev/null
@@ -0,0 +1,327 @@
+<?php
+/**
+ * Ingo works purely on a preferred mechanism for server selection. There are
+ * a number of properties that you can set for each backend:
+ *
+ * driver: (string) The Ingo_Driver:: driver to use to store the script on
+ *         the backend server. Valid options:
+ *           'ldap'      - LDAP server
+ *           'null'      - No backend server
+ *           'timsieved' - Cyrus timsieved server
+ *           'vfs'       - Use Horde VFS
+ *
+ * preferred: (string) This is the field that is used to choose which server
+ *            is used. The value for this field may be a single string or an
+ *            array of strings containing the hostnames to use with this
+ *            server.
+ *
+ * hordeauth: (mixed) One of the following:
+ *            true - Ingo will attempt to use the user's existing credentials
+ *                   (the username/password they used to log in to Horde) to
+ *                   login to this source. (DEFAULT)
+ *            'full' - The username will be used unmodified.
+ *
+ * params: (array) An array containing any additional information that the
+ *         Ingo_Driver:: class needs.
+ *
+ * script: (string) The type of Ingo_Script driver this server uses.
+ *         Valid options:
+ *           'imap'     - IMAP client side filtering
+ *           'maildrop' - Maildrop scripts
+ *           'procmail' - Procmail scripts
+ *           'sieve'    - Sieve scripts
+ *
+ * scriptparams: (array) An array containing any additional information that
+ *               the Ingo_Script:: driver needs.
+ *
+ * shares: (boolean) Some drivers support sharing filter rules with other
+ *         users. Users can then configure filters for each other if they
+ *         give them permissions to do so. If you want to enable this feature,
+ *         you need to set this parameter to true.
+ *
+ * $Id$
+ */
+
+/* IMAP Example */
+$backends['imap'] = array(
+    'driver' => 'null',
+    'preferred' => 'example.com',
+    'hordeauth' => true,
+    'params' => array(),
+    'script' => 'imap',
+    'scriptparams' => array(),
+    'shares' => false
+);
+
+/* Maildrop Example */
+$backends['maildrop'] = array(
+    'driver' => 'vfs',
+    'preferred' => 'example.com',
+    'hordeauth' => true,
+    'params' => array(
+        // Hostname of the VFS server
+        'hostspec' => 'ftp.example.com',
+        // Name of the maildrop config file to write
+        'filename' => '.mailfilter',
+        // The VFS username to use, defaults to current user. If you want to
+        // use a different user, you also need to disable 'hordeauth' above.
+        // 'username' => 'user',
+        // The VFS password to use, defaults to current user's password
+        // 'password' => 'secret',
+        // The path to the .mailfilter filter file, defaults to the filters'
+        // owner's home directory.
+        // You can use the following variables:
+        //   %u = name of the filters' owner
+        //   %d = domain name of the filters' owner
+        //   %U = the 'username' from above
+        // Example:
+        //   '/data/maildrop/filters/%d/%u'
+        //   This would be translated into:
+        //   '/data/maildrop/filters/<filter_owners_domainname>/<filter_owners_username>/.mailfilter'
+        // 'vfs_path' => '/path/to/maildrop',
+
+        // VFS: FTP example
+        // The VFS driver to use
+        'vfstype' => 'ftp',
+        // Port of the VFS server
+        'port' => 21,
+        // Specify permissions for uploaded files if necessary:
+        // 'file_perms' => '0640',
+
+        // VFS: SSH2 example
+        // The VFS driver to use
+        // 'vfstype' => 'ssh2',
+        // Port of the VFS server
+        // 'port' => 22,
+    ),
+    'script' => 'maildrop',
+    'scriptparams' => array(
+        // What path style does the IMAP server use ['mbox'|'maildir']?
+        'path_style' => 'mbox',
+        // Strip 'INBOX.' from the beginning of folder names in generated
+        // scripts?
+        'strip_inbox' => false,
+        // An array of variables to append to every generated script.
+        // Use if you need to set up specific environment variables.
+        'variables' => array(
+            // Example for the $PATH variable
+            // 'PATH' => '/usr/bin'
+        )
+    ),
+    'shares' => false
+);
+
+/* Procmail Example */
+$backends['procmail'] = array(
+    'driver' => 'vfs',
+    'preferred' => 'example.com',
+    'hordeauth' => true,
+    'params' => array(
+        // Hostname of the VFS server
+        'hostspec' => 'ftp.example.com',
+        // Name of the procmail config file to write
+        'filename' => '.procmailrc',
+        // The VFS username to use, defaults to current user. If you want to
+        // use a different user, you also need to disable 'hordeauth' above.
+        // 'username' => 'user',
+        // The VFS password to use, defaults to current user's password
+        // 'password' => 'secret',
+        // The path to the .procmailrc filter file, defaults to the filters'
+        // owner's home directory.
+        // You can use the following variables:
+        //   %u = name of the filters' owner
+        //   %U = the 'username' from above
+        // Example:
+        //   '/data/procmail/filters/%u'
+        //   This would be translated into:
+        //   '/data/procmail/filters/<filter_owners_username>/.procmailrc'
+        // 'vfs_path' => '/path/to/procmail',
+
+        // If procmail needs an external command for mail delivery, you
+        // can specify it below. You can also set a prefix for the mailbox name
+        // eg. for /usr/local/sbin/dmail +INBOX
+        // 'delivery_agent' => '/usr/local/sbin/dmail',
+        // 'delivery_mailbox_prefix' => '+',
+
+        // If you need procmail to be called from .forward in the user's home
+        // directory, set the file and the content below:
+        // 'forward_file' => '.forward',
+        // 'forward_string' => '"|/usr/local/bin/procmail"',
+
+        // if the GNU utilities cannot be found in the path
+        // or have different names, you can specify their location below
+        // 'date' => '/opt/csw/bin/gdate',
+        // 'echo' => '/opt/csw/bin/gecho',
+        // 'ls' => '/opt/csw/bin/gls',
+
+        // VFS: FTP example
+        // The VFS driver to use
+        'vfstype' => 'ftp',
+        // Port of the VFS server
+        'port' => 21,
+
+        // VFS: SSH2 example
+        // The VFS driver to use
+        // 'vfstype' => 'ssh2',
+        // Port of the VFS server
+        // 'port' => 22,
+    ),
+    'script' => 'procmail',
+    'scriptparams' => array(
+        // What path style does the IMAP server use ['mbox'|'maildir']?
+        'path_style' => 'mbox',
+        // An array of variables to append to every generated script.
+        // Use if you need to set up specific environment variables.
+        'variables' => array(
+            // Example for the $PATH variable
+            // 'PATH' => '/usr/bin',
+            // Example for the $DEFAULT variable
+            // 'DEFAULT' => '$HOME/Maildir',
+            // Example for the $VACATION_DIR variable (used to store vacation files)
+            // 'VACATION_DIR' => '$HOME',
+        )
+    ),
+    'shares' => false
+);
+
+/* Sieve Example */
+$backends['sieve'] = array(
+    'driver' => 'timsieved',
+    'preferred' => 'example.com',
+    'hordeauth' => true,
+    'params' => array(
+        // Hostname of the timsieved server
+        'hostspec' => 'mail.example.com',
+        // Login type of the server
+        'logintype' => 'PLAIN',
+        // Enable/disable TLS encryption
+        'usetls' => true,
+        // Port number of the timsieved server
+        'port' => 2000,
+        // Name of the sieve script
+        'scriptname' => 'ingo',
+        // The following settings can be used to specify an administration
+        // user to update all users' scripts. If you want to use an admin
+        // user, you also need to disable 'hordeauth' above. You have to use
+        // an admin user if you want to use shared rules.
+        // 'username' => 'cyrus',
+        // 'password' => '*****',
+    ),
+    'script' => 'sieve',
+    'scriptparams' => array(),
+    'shares' => false
+);
+
+/* sivtest Example */
+$backends['sivtest'] = array(
+    'driver' => 'sivtest',
+    'preferred' => 'example.com',
+    'hordeauth' => true,
+    'params' => array(
+        // Hostname of the timsieved server
+        'hostspec' => 'mail.example.com',
+        // Login type of the server
+        'logintype' => 'GSSAPI',
+        // Enable/disable TLS encryption
+        'usetls' => true,
+        // Port number of the timsieved server
+        'port' => 2000,
+        // Name of the sieve script
+        'scriptname' => 'ingo',
+        // Location of sivtest
+        'command' => '/usr/bin/sivtest',
+        // name of the socket we're using
+        'socket' => Horde::getTempDir() . '/sivtest.'
+            . md5(uniqid(rand())) . '.sock',
+    ),
+    'script' => 'sieve',
+    'scriptparams' => array(),
+    'shares' => false,
+);
+
+/* Sun ONE/JES Example (LDAP/Sieve) */
+$backends['ldapsieve'] = array(
+    'driver' => 'ldap',
+    'preferred' => 'example.com',
+    'hordeauth' => false,
+    'params' => array(
+        //
+        // Hostname of the ldap server
+        //
+        'hostspec' => 'ldap.example.com',
+        //
+        // Port number of the timsieved server
+        //
+        'port' => 389,
+        //
+        // LDAP Protocol Version (default = 2).  3 is required for TLS.
+        //
+        'version' => 3,
+        //
+        // Whether or not to use TLS.  If using TLS, you MUST configure
+        // OpenLDAP (either /etc/ldap.conf or /etc/ldap/ldap.conf) with the CA
+        // certificate which signed the certificate of the server to which you
+        // are connecting.  e.g.:
+        //
+        // TLS_CACERT /usr/share/ca-certificates/mozilla/Equifax_Secure_CA.crt
+        //
+        // You MAY have problems if you are using TLS and your server is
+        // configured to make random referrals, since some OpenLDAP libraries
+        // appear to check the certificate against the original domain name,
+        // and not the referred-to domain.  This can be worked around by
+        // putting the following directive in the ldap.conf:
+        //
+        // TLS_REQCERT never
+        //
+        'tls' => true,
+        //
+        // Bind DN (for bind and script distinguished names, %u is replaced
+        // with username, and %d is replaced with the internet domain
+        // components (e.g. "dc=example, dc=com") if available).
+        //
+        'bind_dn' => 'cn=ingo, ou=applications, dc=example, dc=com',
+        //
+        // Bind password.  If not provided, user's password is used (useful
+        // when bind_dn contains %u).
+        //
+        'bind_password' => 'secret',
+        //
+        // How to find user object.
+        //
+        'script_base' => 'ou=People, dc=example, dc=com',
+        'script_filter' => '(uid=%u)',
+        //
+        // Attribute script is stored in.  Will not touch non-Ingo scripts.
+        //
+        'script_attribute' => 'mailSieveRuleSource'
+    ),
+    'script' => 'sieve',
+    'scriptparams' => array()
+);
+
+/* Kolab Example (using Sieve) */
+if ($GLOBALS['conf']['kolab']['enabled']) {
+    require_once 'Horde/Kolab.php';
+
+    if (!is_callable('Kolab', 'getServer')) {
+        $server = $GLOBALS['conf']['kolab']['imap']['server'];
+    } else {
+        $server = Kolab::getServer('imap');
+    }
+
+    $backends['kolab'] = array(
+        'driver' => 'timsieved',
+        'preferred' => '',
+        'hordeauth' => 'full',
+        'params' => array(
+            'hostspec' => $server,
+            'logintype' => 'PLAIN',
+            'usetls' => false,
+            'port' => $GLOBALS['conf']['kolab']['imap']['sieveport'],
+            'scriptname' => 'kmail-vacation.siv'
+        ),
+        'script' => 'sieve',
+        'scriptparams' => array(),
+        'shares' => false
+    );
+}
diff --git a/ingo/config/conf.xml b/ingo/config/conf.xml
new file mode 100644 (file)
index 0000000..d191865
--- /dev/null
@@ -0,0 +1,70 @@
+<?xml version="1.0"?>
+<!-- $Id$ -->
+<configuration>
+ <configsection name="menu">
+  <configheader>Menu settings</configheader>
+  <configmultienum name="apps" desc="Select any applications that should be
+  linked in Ingo's menu">
+   <values>
+    <configspecial name="list-horde-apps"/>
+   </values>
+  </configmultienum>
+ </configsection>
+
+ <configsection name="storage">
+  <configheader>Ingo Rules Storage</configheader>
+  <configswitch name="driver" desc="What storage driver should we use?">prefs
+   <case name="prefs" desc="Preference System"/>
+   <case name="sql" desc="SQL">
+    <configsection name="params">
+     <configsql switchname="driverconfig"/>
+    </configsection>
+   </case>
+  </configswitch>
+  <configinteger name="maxblacklist" desc="The maximum number of blacklist
+  addresses a user can store.  Set to 0 for no limit.">0</configinteger>
+  <configinteger name="maxwhitelist" desc="The maximum number of whitelist
+  addresses a user can store.  Set to 0 for no limit.">0</configinteger>
+ </configsection>
+
+ <configsection name="rules">
+  <configheader>Ingo Rules Options</configheader>
+  <configboolean name="userheader" desc="Allow users to manually enter Header
+  fields to search by in the Rule edit screen?">true</configboolean>
+  <configboolean name="usefolderapi" desc="Use the Horde 'mail/folderlist' API
+  call to obtain the list of mail folders to use for various filtering rules?
+  If IMP is installed it will provide the API call, so you should say true. If
+  false, the user must manually enter the name of the folder (NOT
+  RECOMMENDED).">true</configboolean>
+ </configsection>
+
+ <configsection name="spam">
+  <configheader>Spam Filtering</configheader>
+  <configswitch name="compare" desc="Comparison type">string
+   <case name="numeric" desc="Numeric">
+    <configstring name="header" desc="The spam header to
+    check">X-Spam-Score</configstring>
+   </case>
+   <case name="string" desc="String">
+    <configstring name="header" desc="The spam header to
+    check">X-Spam-Level</configstring>
+    <configstring name="char" desc="The character repeated in the spam header
+    in order to indicate the spam level.  For example, if the character is
+    &quot;*&quot;, then &quot;****&quot; in the header indicates a spam level
+    of four.">*</configstring>
+   </case>
+  </configswitch>
+ </configsection>
+
+ <configsection name="hooks">
+  <configheader>Custom Hooks</configheader>
+  <configboolean name="vacation_addresses" required="false" desc="Should we
+  use a hook for vacation addresses? If so, make sure you define
+  _ingo_hook_vacation_addresses() in horde/config/hooks.php. The hook will be
+  used to provide a list of default email addresses for the vacation
+  module.">false</configboolean>
+  <configboolean name="vacation_only" required="false" desc="Should we use the
+  hook only to provide the list of vacation addresses and don't show the
+  addresses field to the users?">true</configboolean>
+ </configsection>
+</configuration>
diff --git a/ingo/config/fields.php.dist b/ingo/config/fields.php.dist
new file mode 100644 (file)
index 0000000..2c77ff6
--- /dev/null
@@ -0,0 +1,108 @@
+<?php
+/**
+ * This file defines the set of default match items to display when creating
+ * a new filter rule.
+ *
+ * These fields will only appear if the driver can handle it.
+ *
+ * Users will have to manually insert the name of the header on the rule
+ * creation screen if it does not appear in this list.
+ *
+ * Format of $ingo_fields array:
+ * 'LABEL' => array(
+ *     MANDATORY:
+ *     'label' => (string)  The gettext label for the entry.
+ *     'type'  => (integer) The type of test. Either:
+ *                          Ingo_Storage::TYPE_HEADER  --  Header test
+ *                          Ingo_Storage::TYPE_SIZE    --  Message size test
+ *                          Ingo_Storage::TYPE_BODY    --  Body test
+ *     OPTIONAL:
+ *     'tests' => (array)   Force these tests to be used only.
+ *                          If not set, will use the fields generally
+ *                          available to the driver.
+ * )
+ *
+ * $Id$
+ */
+$ingo_fields = array(
+  'To' => array(
+    'label' => _("To"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'Subject' => array(
+    'label' => _("Subject"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'Sender' => array(
+    'label' => _("Sender"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'From' => array(
+    'label' => _("From"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'Cc' => array(
+    'label' => _("Cc"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'Bcc' => array(
+    'label' => _("Bcc"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'Resent-from' => array(
+    'label' => _("Resent-From"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'Resent-to' => array(
+    'label' => _("Resent-To"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'List-Id' => array(
+    'label' => _("List-ID"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'Received' => array(
+    'label' => _("Received"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'X-Spam-Level' => array(
+    'label' => _("X-Spam-Level"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'X-Spam-Score' => array(
+    'label' => _("X-Spam-Score"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'X-Spam-Status' => array(
+    'label' => _("X-Spam-Status"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'X-Priority' => array(
+    'label' => _("X-Priority"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'To,Cc,Bcc,Resent-to' => array(
+    'label' => _("Destination (To, Cc, Bcc, etc.)"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'From,Sender,Reply-to,Resent-from' => array(
+    'label' => _("Source (From, Reply-to, etc.)"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'To,Cc,Bcc,Resent-to,From,Sender,Reply-to,Resent-from' => array(
+    'label' => _("Participant (From, To, etc.)"),
+    'type' => Ingo_Storage::TYPE_HEADER
+  ),
+  'Size' => array(
+    'label' => _("Size"),
+    'type' => Ingo_Storage::TYPE_SIZE,
+    'tests' => array('greater than', 'less than')
+  ),
+  'Body' => array(
+    'label' => _("Body"),
+    'type' => Ingo_Storage::TYPE_BODY,
+    'tests' => array('contains', 'not contain', 'is', 'not is', 'begins with',
+                     'not begins with', 'ends with', 'not ends with', 'regex',
+                     'matches', 'not matches')
+  )
+);
diff --git a/ingo/config/hooks.php.dist b/ingo/config/hooks.php.dist
new file mode 100644 (file)
index 0000000..83ebf9b
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+/**
+ * Ingo Hooks configuration file.
+ *
+ * THE HOOKS PROVIDED IN THIS FILE ARE EXAMPLES ONLY.  DO NOT ENABLE THEM
+ * BLINDLY IF YOU DO NOT KNOW WHAT YOU ARE DOING.  YOU HAVE TO CUSTOMIZE THEM
+ * TO MATCH YOUR SPECIFIC NEEDS AND SYSTEM ENVIRONMENT.
+ *
+ * For more information please see the horde/config/hooks.php.dist file.
+ *
+ * $Id$
+ */
+
+// Here is an example _ingo_hook_vacation_addresses function to set the
+// default addresses used for the vacation module in Ingo. If you don't want
+// to lock users to the list of addresses provided by this hook, you also need
+// to disable the appropriate setting in Ingo's configuration.
+
+// if (!function_exists('_ingo_hook_vacation_addresses')) {
+//     function _ingo_hook_vacation_addresses($user = null)
+//     {
+//         return array($user . '@example.com', $user . '@foobar.com');
+//     }
+// }
diff --git a/ingo/config/prefs.php.dist b/ingo/config/prefs.php.dist
new file mode 100644 (file)
index 0000000..dc38856
--- /dev/null
@@ -0,0 +1,110 @@
+<?php
+/**
+ * See horde/config/prefs.php for documentation on the structure of this file.
+ *
+ * $Id$
+ */
+
+// This preference group will only be displayed if the configured
+// Ingo_Script:: driver can create script files.
+if (!isset($_SESSION['ingo']['script_generate']) ||
+    $_SESSION['ingo']['script_generate']) {
+    $prefGroups['script'] = array(
+        'column' => _("Other Options"),
+        'label' => _("Script Updating"),
+        'desc' => _("Options about script updating."),
+        'members' => array('auto_update'));
+}
+
+// The following preferences are only used for Horde_Script:: drivers that use
+// scripts.
+
+// Automatically update the script?
+$_prefs['auto_update'] = array(
+    'value' => 1,
+    'locked' => false,
+    'shared' => false,
+    'type' => 'checkbox',
+    'desc' => _("Automatically update the script after each change?")
+);
+
+// End script preferences
+
+// The following preferences are only used for Horde_Script:: drivers that can
+// do on-demand filtering.
+
+// Show detailed filter status messages?
+// a value of 0 = no, 1 = yes
+$_prefs['show_filter_msg'] = array(
+    'value' => 1,
+    'locked' => false,
+    'shared' => false,
+    'type' => 'implicit'
+);
+
+// Only filter [un]seen messages?
+// Values: 0, Ingo_Script::FILTER_UNSEEN, Ingo_Script::FILTER_SEEN
+$_prefs['filter_seen'] = array(
+    'value' => 0,
+    'locked' => false,
+    'shared' => false,
+    'type' => 'implicit'
+);
+
+// End on-demand filtering preferences
+
+// If NOT using the 'prefs' storage driver (see conf.php), you can comment out
+// the below entries.
+
+// Filter rules.
+$_prefs['rules'] = array(
+    'value' => 'a:5:{i:0;a:2:{s:4:"name";s:9:"Whitelist";s:6:"action";i:' . Ingo_Storage::ACTION_WHITELIST . ';}i:1;a:3:{s:4:"name";s:8:"Vacation";s:6:"action";i:' . Ingo_Storage::ACTION_VACATION . ';s:7:"disable";b:1;}i:2;a:2:{s:4:"name";s:9:"Blacklist";s:6:"action";i:' . Ingo_Storage::ACTION_BLACKLIST . ';}i:3;a:3:{s:4:"name";s:11:"Spam Filter";s:6:"action";i:' . Ingo_Storage::ACTION_SPAM . ';s:7:"disable";b:1;}i:4;a:2:{s:4:"name";s:7:"Forward";s:6:"action";i:' . Ingo_Storage::ACTION_FORWARD . ';}}',
+    'locked' => false,
+    'shared' => false,
+    'type' => 'implicit'
+);
+
+// Blacklist.
+// Lock this preference to disable blacklists.
+$_prefs['blacklist'] = array(
+    'value' => 'a:2:{s:1:"a";a:0:{}s:1:"f";s:0:"";}',
+    'locked' => false,
+    'shared' => false,
+    'type' => 'implicit'
+);
+
+// Whitelist.
+// Lock this preference to disable whitelists.
+$_prefs['whitelist'] = array(
+    'value' => 'a:0:{}',
+    'locked' => false,
+    'shared' => false,
+    'type' => 'implicit'
+);
+
+// Vacation notices.
+// Lock this preference to disable vacation notices.
+$_prefs['vacation'] = array(
+    'value' => 'a:8:{s:9:"addresses";a:0:{}s:4:"days";i:7;s:8:"excludes";a:0:{}s:10:"ignorelist";b:1;s:6:"reason";s:0:"";s:7:"subject";s:0:"";s:5:"start";i:0;s:3:"end";i:0;}',
+    'locked' => false,
+    'shared' => false,
+    'type' => 'implicit'
+);
+
+// Forwarding.
+// Lock this preference to disable forwarding.
+$_prefs['forward'] = array(
+    'value' => 'a:2:{s:1:"a";a:0:{}s:1:"k";i:0;}',
+    'locked' => false,
+    'shared' => false,
+    'type' => 'implicit'
+);
+
+// Spam rule.
+// Lock this preference to disable the spam rule.
+$_prefs['spam'] = array(
+    'value' => 'a:2:{s:6:"folder";N;s:5:"level";i:5;}',
+    'locked' => false,
+    'shared' => false,
+    'type' => 'implicit'
+);
diff --git a/ingo/docs/CHANGES b/ingo/docs/CHANGES
new file mode 100644 (file)
index 0000000..c416445
--- /dev/null
@@ -0,0 +1,394 @@
+--------
+v2.0-git
+--------
+
+
+
+
+----------
+v1.2.2-cvs
+----------
+
+[cjh] Fix checks for the forward_file and forward_script procmail parameters
+      in the VFS driver (Bug #7811).
+[cjh] Add %d (domain) as a replaceable variable in the vfs_path parameter
+      (dev@stean.ch, Request #7503).
+[jan] Make it easier to select the "Create new folder" entry for target folders
+      (Bug #7768).
+[cjh] Fix reading the current script in the VFS driver (rsalmon@mbpgroup.com,
+      Bug #7610).
+[cjh] Maildrop vacation rule: don't reply to bulk/list messages, add start/end
+      times, better character support in the message, allow subsequent rules
+      to execute (rsalmon@mbpgroup.com, Bug #7140).
+[cjh] Fix compound header tests in the procmail and maildrop drivers
+      (rsalmon@mbpgroup.com, Bugs #7117, #7611).
+[jan] Change group field in shares table to work with LDAP groups (Bug #6883).
+
+
+------
+v1.2.1
+------
+
+[jan] Don't show script icon in menu if preference to automatically update
+      scripts is both set and locked (Request #7251).
+[jan] Fix adding more than 5 wildcard blacklists (Bug #7077).
+[jan] Add Basque translation (Euskal Herriko Unibertsitatea EHU/UPV
+      <xabier.arrieta@ehu.es>).
+[jan] Fix saving spam rules in the preference backend (Bug #7033).
+[jan] Correctly catch dates before the 10th of a month in Sieve timed
+      vacations (Bug #7023).
+[mas] Fix vacation with procmail driver (Bugs #6509, #7052).
+[jan] Fix moving to INBOX with the maildrop driver.
+[jan] Disable drop down entries with informational purpose only.
+[jan] Fix filter activity messages with non-ASCII folder names
+      (taguchi@iij.ad.jp, Bug #6764).
+
+
+----
+v1.2
+----
+
+[cjh] Improve resource usage in datatree_to_sql share migration script
+      (Bug #6740).
+
+
+--------
+v1.2-RC3
+--------
+
+[cjh] Apply fix for http://dev.rubyonrails.org/ticket/11473 to prototype.js
+      (Request #6590).
+[cjh] Procmail driver: make the directory in which vacation files are
+      generated configurable (jas@cse.yorku.ca, Request #6643).
+[cjh] Add an upgrade script for the new SQL share driver (Request #6109).
+[cjh] Procmail driver: include the original email subject in vacation
+      replies (Michael.Redinger@uibk.ac.at, Request #6432).
+[cjh] Make the procmail delivery agent configurable, allow configuring a
+      prefix for mailboxes (+ is needed for dmail, for example), don't
+      generate empty VFS files, write a .forward file if needed to pass
+      mail to procmail (Michael.Redinger@uibk.ac.at, Request #6433).
+[jan] Add Slovak translation (Martin Matuška <martin@matuska.org>).
+[cjh] Make the command line utilities called from procmail configurable
+      (Michael.Redinger@uibk.ac.at, Request #6431).
+[jan] Fix creating of duplicate special rules when converting from preferences
+      to SQL storage backend (Bug #6182).
+[jan] Follow Sieve specifications more closely when disabling Sieve scripts
+      (Bug #6337).
+[jan] Load default set of filters for SQL storage from config/prefs.php
+      (tinu@humbapa.ch, Request #6096).
+[jan] Add Russian translation (Alexey Zakharov <baber@mosga.net>).
+
+
+--------
+v1.2-RC2
+--------
+
+[cjh] Add API methods for setting and disabling vacation rules
+      (duck@obala.net).
+[mas] Fix procmail metacharacter quoting. (Bug #5581)
+[cjh] Fix procmail vacation recipe (Volker Then <horde32@volkerthen.com>).
+[cjh] Fix position of closing quote in maildrop driver (laxis@magex.hu,
+      Bug #6020).
+[jan] Fix paths in the script for converting to SQL storage (Bug #5957).
+
+
+--------
+v1.2-RC1
+--------
+
+[cjh] Allow specifying permissions to set in the VFS for uploaded scripts
+      (steinkel@ctinetworks.com, Request #5871).
+[cjh] Add spam filter actions and numeric comparisons to the Maildrop
+      script driver (Request #5843).
+[cjh] Maildrop driver improvements: make INBOX-stripping configurable;
+      fix REJECT action; and add is, not is, not contain, not begins
+      with, not ends with, matches, not matches, exists, and not
+      exists rules (horde@nospam.obeliks.de, Request #5816).
+[jan] Add Japanese translation (Hiromi Kimura <hiromi@tac.tsukuba.ac.jp>).
+[jan] Improve forward rule generation with sieve scripts (Request #5746).
+[jan] Move all Ingo-specific hook examples from Horde's config/ directory.
+[cjh] Only expunge messages that we have moved or deleted completely when
+      using IMAP filters (Bug #4749).
+[cjh] Fix behavior of IMAP stop-script rules (Bug #5539).
+[cjh] Shouldn't show an input field for exists or not exists tests (Bug #5659).
+[cjh] Don't let users save rules with empty conditions (Bug #5641).
+[cjh] Match email addresses exactly for procmail vacation rules, and include
+      the Cc: and Bcc: fields in checks for which address the message was
+      sent to (Bug #4333).
+[cjh] Ingo now provides a Postfix policy daemon that can be used to enforce
+      blacklist and whitelist rules at delivery time (Request #4904).
+[cjh] Autocreate VFS paths when saving rules (stevekwok@hotmail.com>).
+
+
+----------
+v1.2-ALPHA
+----------
+
+[cjh] Add reverse conditions for procmail (horde@coursimault.com, Request
+      #4037).
+[cjh] Allow numeric spam score comparisons with Sieve (adrieder@sbox.tugraz.at,
+      Request #3837).
+[jan] Add Ukrainian translation (Andriy Kopystyansky <anri@polynet.lviv.ua>).
+[cjh] Add timed vacation messages (groente@puscii.nl, Request #4938).
+[mas] Add body test for sieve (michael.menge@zdv.uni-tuebingen.de, Request
+      #3875).
+[mas] Change 'Important' flag to 'Flagged For Followup' to match IMP.
+[jan] Add full character set support to vacation messages in maildrop and
+      procmail drivers (Requests #4034, #4989).
+[cjh] Add sivtest driver (liamr@deathstar.org, Request #4777).
+[cjh] Add maildrop vacation support (jrvs@bothends.org, Request #3722).
+[jan] Add hook to provide addresses for vacation messages (Request #4542).
+[jan] Add "Save and Enable/Disable" buttons to forward, vacation, and spam
+      screens (Request #4543).
+[jan] Group vacation settings in tabs (Request #4541).
+[mas] Conform to WCAG 1.0 Priority 2/Section 508 accessibility guidelines.
+      (Request #4080)
+[mas] Check sieve quota before uploading a script. (gergely@risko.hu, Request
+      #4278)
+[jmf] Blacklist and whitelist for imap scripts now work consistently with
+      sieve scripts -- must match full address.
+[ben] Add body test for procmail (horde@coursimault.com,
+      Requests #3874, #4035).
+[cjh] Add ssh2 to the supported VFS backends (Cliff Green <green@umdnj.edu>).
+[cjh] Add checks to avoid mail loops in the procmail forwards code
+      (Request #3502).
+[jan] Use Horde_Form API to generate special rule forms.
+[jan] Add multidomain support for Kolab servers (tokoe@kde.org, Request #3579).
+[jan] Add support for changing other users' filter rules.
+[jan] Add SQL storage driver.
+[jmf] Add simple spam-filtering setup page.
+
+
+------
+v1.1.5
+------
+
+[jan] Add Japanese translation (Hiromi Kimura <hiromi@tac.tsukuba.ac.jp>).
+[jan] Improve forward rule generation with sieve scripts (Request #5746).
+
+
+------
+v1.1.4
+------
+
+[jan] Add Simplified Chinese translation (Anna Chen
+      <annachen2008@yahoo.com.cn>).
+[cjh] Fix check for bulk or list precedence in Sieve vacation (Bug #5543).
+[jan] Add additional checks to avoid adding empty test values (Bug #5392).
+[jan] Fix multiline vacation messages with procmail driver (Bug #5273).
+
+
+------
+v1.1.3
+------
+
+[jan] Fix blacklists and whitelists in the IMAP driver.
+
+
+------
+v1.1.2
+------
+
+[ben] SECURITY: Make sure folder names are properly escaped in procmail driver
+      to prevent local code execution (Bug #4513).
+[jan] Match all messages with Sieve driver if not providing any criteria
+      (gergely@risko.hu, Bug #4345).
+[jan] Add parameter to enable or disable TLS in timsieved driver (Marcus Hüwe
+      <suse-tux@gmx.de, Request #4496).
+[jan] Correctly align all up arrows in filter list (Bug #4294).
+[jan] Fix compound header fields in Sieve scripts (Bug #4238).
+[jan] Add Catalan translation (Jordi Giralt <projecte.k2@upcnet.es>).
+[jan] Add Slovenian translation (Duck <duck@obala.net>).
+
+
+------
+v1.1.1
+------
+
+[jan] Enable filter setting to stop further filtering by default.
+[jan] Correctly escape forward slashes in maildrop driver (Bug #3514).
+[jan] Add additional checks to avoid adding empty test values (Bug #3313).
+[jan] Add Estonian translation (Toomas Aas <toomas.aas@mail.ee>).
+[jan] Add Greek translation (Konstantinos C. Milosis <kmilosis@yahoo.com>).
+[mms] Fix backward compatibility break with Ingo 1.1 and Horde < 3.1.
+[cjh] Add missing stripe.js (Bug #3623).
+
+
+----
+v1.1
+----
+
+[jan] Automatically add missing special rules when editing them (Bug #3325).
+
+
+--------
+v1.1-RC1
+--------
+
+[jan] Add portal block for special rules (Oliver Kuhl <okuhl@netcologne.de>,
+      Request #3106).
+[jan] Add Portuguese translation (Manuel Menezes de Sequeira
+      <Manuel.Sequeira>).
+[cjh] Fix escaping of output in several cases.
+[mas] Add notify rule. (Paul Wolstenholme <wolstena@sfu.ca>, Bug #1139)
+[jan] Add Turkish translation (METU <horde-tr@metu.edu.tr>).
+[jan] Don't activate script if exceeded blacklist/whitelist limits (Bug #1166).
+[jan] Add Danish translation (Brian Truelsen <horde+i18n@briantruelsen.dk>).
+[jan] Allow to use a single user for VFS drivers (maddog2k@maddog2k.net,
+      Request #2324).
+[jan] Allow to move rules by specifying their positions (Gergely Risko
+      <gergely@risko.hu>, Request #1060).
+[mas] Add flag-only rule. (Request #1114)
+[ben] Hide procmail vacation db files
+[mms] Add maildrop script driver (Matt Weyland <mathias@weyland.ch>).
+[ben] Add support for '^TO_' procmail rule matching.
+[ben] Add support for special headers on a per-driver basis.
+[jmf] Add support for storing Sieve rules in LDAP (Supports Sun JES/ONE and
+      iPlanet messaging servers).
+[jan] Add permissions to restrict filter rule creation.
+
+
+------
+v1.0.2
+------
+
+[jan] Add Korean translation (Jinhyok Heo <novembre@ournature.org>).
+
+
+----------
+v1.0.2-RC1
+----------
+
+[jan] Convert rules from Ingo 1.0 with multibyte characters (Bug #1282).
+[jan] Always encode Sieve scripts in UTF-8 and MIME encode subject of vacation
+      messages (Gergely Risko <gergely@risko.hu>, Bug #2121).
+[cjh] Don't escape "\" in Sieve regex mode (Bug #2134).
+[jan] Don't allow empty addresses in blacklists and whitelists (Bug #2165).
+[jan] Really show the active script if clicking that button (Bug #2135).
+[jan] Fix migration script for IMP filters to not include folder rules from
+      already migrated users (Bug #2114).
+[jan] Fix creating of non-ascii IMAP folder names (Bug #2054).
+[jan] Fix regular expression rules that contain commas (Bug #1904).
+[mas] Allow the disabling of blacklist, whitelist, vacation, and forward
+      (Request #1164).
+[jan] Allow message flags with all sieve rules that keep the message
+      (Bug #1292).
+[jan] Add Norwegian Bokmaal translation (Trond Bjørstad <trb@ndn.no>, Thomas
+      Chr. Dahl <tcd@ndn.no>).
+[jan] Change whitelist rule for Sieve to not apply any further rules
+      (Bug #1378).
+[jan] Add shortcut icon (favicon.ico).
+[ben] Fix procmail forwarding. (hager (at) fh-rosenheim (dot) de, Bug #1125)
+[jan] Allow to specify multiple values with "Begins/Ends With" tests (Todd
+      Merritt <tmerritt@email.arizona.edu>, Bug #1105).
+
+
+------
+v1.0.1
+------
+
+[jan] Fix blacklist conversion in IMP-to-Ingo conversion script (Steve Lidie
+      <sol0@Lehigh.EDU>).
+[jan] Fix filter rules with multibyte characters.
+
+
+----
+v1.0
+----
+
+[jan] Add Brazilian Portuguese translation (Fabio Gomes
+      <flgomes@fazenda.sp.gov.br>).
+
+
+--------
+v1.0-RC2
+--------
+
+[jan] Add Czech translation (Pavel Chytil <pavel@chytil.tk>).
+[cjh] Show menu in Script view (Bug #843).
+
+
+--------
+v1.0-RC1
+--------
+
+[cjh] Update icons.
+[jan] Disable Kolab backends if disabled globally.
+
+
+---------
+v1.0-BETA
+---------
+
+[jan] Add Spanish translation (Manuel Perez Ayala <mperaya@alcazaba.unex.es>).
+[jan] Add vacation support to procmail driver (Micha Kersloot
+      <micha@kovoks.nl>).
+
+
+----------
+v1.0-ALPHA
+----------
+
+[mms] Add configuration option to limit total number of blacklist/whitelist
+      entries a user can have.
+[jan] Allow setting up a global user in the backends configuration (Martin
+      Luethi <horde@humbapa.ch>).
+[mms] Allow user to deactivate script.
+[mms] Add support to filter by body contents for IMAP driver.
+[mms] Allow user-defined filters for the procmail driver (Ben Chavet
+      <ben@chavet.net>).
+[mms] Allow user-specified Headers to be used for filtering.
+[mms] The storage system has been abstracted out to allow for multiple
+      backend storage drivers.
+[mms] Removed all 'show_*' preferences - all available actions will be
+      shown on the menu by default.
+[mms] Added the forward action (Todd Merritt <tmerritt@email.arizona.edu>).
+[mms] On demand filters can now apply to exclusively seen or unseen messages.
+[mms] Rules can now be disabled (Todd Merritt <tmerritt@email.arizona.edu>).
+[mms] Added relational, regex, and matches tests to Sieve script
+      (Todd Merritt <tmerritt@email.arizona.edu>).
+[mms] Honor other module's handling of blacklist/whitelist.
+[mms] Don't show script options if the underlying Ingo_Script:: driver
+      doesn't use them.
+[mms] Case sensitive searches only allowed for Ingo_Script:: drivers that
+      can handle them.
+[mms] 'blacklist_folder' preference now handled inside the 'blacklist'
+      preference.
+[mms] Added 'show_filter_msg' preference - for use with Horde_Script::
+      backends that support on demand filtering.
+[mms] Added the 'mail/canApplyFilters' API call.
+[mms] Ingo_Storage:: now handles all session caching.
+[mms] Added IMAP client side Ingo_Script:: driver.
+
+
+----
+v0.1
+----
+
+[jan] Add Swedish translation (Anders Norrbring <anders@norrbring.biz>).
+[jan] Add Lithuanian translation (Vilius Sumskas <vilius@lnk.lt>).
+[jan] Add Italian translation (Marko Djukic <marko@oblo.com>).
+[jan] Add Hungarian translation (Attila Nagy <bra@fsn.hu>).
+[mms] Add Dutch translation (Ruben van der Steenhoven
+      <ruben_donotspamme@webmeesters.net>).
+[jan] Add Finnish translation (Leena Heino <Leena.Heino@uta.fi>).
+[mms] Added the 'mail/applyFilters' API call.
+[bjn] Add whitelist functions.
+[jan] Add German translation.
+[mms] Blacklisted addresses now stored in the storage backend in array format.
+[mms] Added Ingo_Storage:: driver to allow for storage of rules in
+      various backends.
+[bjn] Abstract Script class, and procmail script support.
+[jan] Add Polish translation (Przemyslaw "Primo" Witek <primo@npl.pl>).
+[jan] Add Romanian translation (Eugen Hoanca <eugenh@urban-grafx.ro>).
+[jan] Let the users select what should happen to emails from blacklisted
+      addresses.
+[jan] Add Traditional Chinese translation (David Chang
+      <david@thbuo.gov.tw>).
+[jan] Add French translation (Florent Aide <faide@alphacent.com>).
+[jan] Add an API for Ingo.
+[mac] Add a user preference to automatically update the script after a change.
+[mac] Add a user preference to hide the script icon.
+[mac] Fix some regex in the script generation
+[jan] Default to first backend if no preferred backend is specified/found.
+[mac] Initial Commit.
diff --git a/ingo/docs/CREDITS b/ingo/docs/CREDITS
new file mode 100644 (file)
index 0000000..fca0854
--- /dev/null
@@ -0,0 +1,82 @@
+=======================
+ Ingo Development Team
+=======================
+
+
+Core Developers
+===============
+
+- Michael Slusarz <slusarz@horde.org>
+- Jan Schneider <jan@horde.org>
+
+
+Localization
+============
+
+=====================   ======================================================
+Basque                  Euskal Herriko Unibertsitatea <xabier.arrieta@ehu.es>
+Brazilian Portuguese    Fabio Gomes <flgoms@uol.com.br>
+                        Luis Felipe Marzagao <duli@fedoraproject.org>
+                        Eduardo de Carli <carliedu@ig.com.br>
+Catalan                 Jordi Giralt <projecte.k2@upcnet.es>
+Chinese (Simplified)    Anna Chen <annachen2008@yahoo.com.cn>
+Chinese (Traditional)   David Chang <david@tmv.gov.tw>
+Czech                   Pavel Chytil <pavel@chytil.tk>
+Danish                  Brian Truelsen <horde+i18n@briantruelsen.dk>
+Dutch                   Ruben van der Steenhoven
+                        <ruben_donotspamme@webmeesters.net>
+Estonian                Toomas Aas <toomas.aas@mail.ee>
+                        Alar Sing <alar.sing@err.ee>
+Finnish                 Leena Heino <Leena.Heino@uta.fi>
+French                  Florent Aide <faide@alphacent.com>
+                        Benoit St-André <ben@benoitst-andre.net>
+                        Pierre Lachance <pl@pierrelachance.net>
+                        Vincent Vinet <vvinet@revolutionlinux.com>
+                        Yannick Sebastia <yannick.sebastia@ecole-navale.fr>
+German                  Jan Schneider <jan@horde.org>
+Greek                   Konstantinos C. Milosis <kmilosis@yahoo.com>
+Hungarian               Attila Nagy <bra@fsn.hu>
+                        Laszlo L. Tornoci <torlasz@xenia.sote.hu>
+Italian                 Marko Djukic <marko@oblo.com>
+                        Marco Pirovano <marco.pirovano@unibocconi.it>
+                        Cristian Manoni <cristian.manoni@nethesis.it>
+Japanese                Hiromi Kimura <hiromi@tac.tsukuba.ac.jp>
+Korean                  Jinhyok Heo <novembre@ournature.org>
+Latvian                 Janis Eisaks <jancs@dv.lv>
+Lithuanian              Vilius Šumskas <vilius@lnk.lt>
+Norwegian Bokmaal       Trond Bjørstad <trb@ndn.no>
+                        Thomas Chr. Dahl <tcd@ndn.no>
+Polish                  Przemyslaw "Primo" Witek <primo@npl.pl>
+                        Krzysztof Kozlowski <kozik1@o2.pl>
+                        Piotr Adamcio <adamcios@o2.pl>
+                        Tadeusz Lesiecki <lesiecki@tmtsystem.pl>
+                        Piotr Tarnowski <drfugazi@drfugazi.eu.org>
+Portuguese              Manuel Menezes de Sequeira <Manuel.Sequeira>
+Romanian                Eugen Hoanca <eugenh@urban-grafx.ro>
+Russian                 Alexey Zakharov <baber@mosga.net>
+Slovak                  Martin Matuška <martin@matuska.org>
+Slovenian               Duck <duck@obala.net>
+Spanish                 Manuel Perez Ayala <mperaya@alcazaba.unex.es>
+Swedish                 Anders Norrbring <anders@norrbring.biz>
+Turkish                 Middle East Technical University <horde-tr@metu.edu.tr>
+Ukrainian               Andriy Kopystyansky <anri@polynet.lviv.ua>
+=====================   ======================================================
+
+
+Inactive Developers
+===================
+
+- Mike Cochrane <mike@graftonhall.co.nz>
+- Brent J. Nordquist <bjn@horde.org>
+
+
+Other Thanks
+============
+
+Ryan Gallagher <ryan@studiesabroad.com>
+
+- The name :-) "Mail comes 'in'...Where does it 'go'?"
+
+Tufts University
+
+- Funding support for LDAP/Sieve (Sun JES/ONE & iPlanet messaging servers).
diff --git a/ingo/docs/INSTALL b/ingo/docs/INSTALL
new file mode 100644 (file)
index 0000000..2b02ba8
--- /dev/null
@@ -0,0 +1,211 @@
+=====================
+ Installing Ingo 2.0
+=====================
+
+:Contact:       ingo@lists.horde.org
+
+.. contents:: Contents
+.. section-numbering::
+
+This document contains instructions for installing the Ingo Email Filter Rules
+Manager.
+
+For information on the capabilities and features of IMP, see the file README_
+in the top-level directory of the IMP distribution.
+
+
+Obtaining Ingo
+==============
+
+Ingo can be obtained from the Horde website and FTP server, at
+
+   http://www.horde.org/ingo/
+
+   ftp://ftp.horde.org/pub/ingo/
+
+Or use the mirror closest to you:
+
+   http://www.horde.org/mirrors.php
+
+Bleeding-edge development versions of Ingo are available via Git; see the file
+`horde/docs/HACKING`_, or the website http://www.horde.org/source/, for
+information on accessing the Horde Git repository.
+
+
+Prerequisites
+=============
+
+To function properly, Ingo **requires** the following:
+
+1. A working Horde installation
+
+   Ingo runs within the `Horde Application Framework`_, a set of common tools
+   for Web applications written in PHP.  You must install Horde before
+   installing Ingo.
+
+   .. Important:: Ingo 2.0 requires version 4.0+ of the Horde Framework -
+                  earlier versions of Horde will **not** work.
+
+   .. _`Horde Application Framework`: http://www.horde.org/horde/
+
+   The Horde Framework can be obtained from the Horde website and FTP server,
+   at
+
+      http://www.horde.org/horde/
+
+      ftp://ftp.horde.org/pub/horde/
+
+   Many of Ingo's prerequisites are also Horde prerequisites.
+
+   .. Important:: Be sure to have completed all of the steps in the
+                  `horde/docs/INSTALL`_ file for the Horde Framework before
+                  installing Ingo.
+
+2. The following PEAR modules:
+   (See `horde/docs/INSTALL`_ for instructions on installing PEAR modules)
+
+   a. Net_Sieve 1.0.1 [OPTIONAL]
+
+      Ingo uses the Net_Sieve class for communicating with timsieved running
+      on Cyrus mail servers.  You will only need to install this class if you
+      are using Sieve for filtering.
+
+   b. Net_Socket [OPTIONAL]
+
+      Net_Socket is used by Net_Sieve and, thus, is only requires if you will
+      be using Sieve filtering.  PEAR *should* install Net_Socket when it
+      installs Net_Sieve.
+
+
+Installing Ingo
+===============
+
+Ingo is written in PHP, and must be installed in a web-accessible directory.
+The precise location of this directory will differ from system to system.
+Conventionally, Ingo is installed directly underneath Horde in the webserver's
+document tree.
+
+Since Ingo is written in PHP, there is no compilation necessary; simply expand
+the distribution where you want it to reside and rename the root directory of
+the distribution to whatever you wish to appear in the URL.  For example, with
+the Apache webserver's default document root of ``/usr/local/apache/htdocs``,
+you would type::
+
+   cd /usr/local/apache/htdocs/horde
+   tar zxvf /path/to/ingo-x.y.z.tar.gz
+   mv ingo-x.y.z ingo
+
+and would then find Ingo at the URL::
+
+   http://your-server/horde/ingo/
+
+
+Configuring Ingo
+================
+
+1. Configuring Horde for Ingo
+
+   a. Register the application
+
+      In ``horde/config/registry.php``, find the applications['ingo'] stanza.
+      The default settings here should be okay, but you can change them if
+      desired.  If you have changed the location of Ingo relative to Horde,
+      either in the URL, in the filesystem or both, you must update the
+      ``fileroot`` and ``webroot`` settings to their correct values.
+
+2. Creating the database table
+
+   The specific steps to create the Ingo database table depend on which
+   database you've chosen to use.
+
+   First, look in ``scripts/sql/`` to see if a script already exists
+   for your database type.  If so, you should be able to simply execute that
+   script as superuser in your database.  (Note that executing the script as
+   the "horde" user will probably fail when granting privileges.)
+
+   If such a script does not exist, you'll need to build your own, using the
+   file ingo.sql as a starting point.  If you need assistance in creating
+   databases, you may wish to let us know on the IMP mailing list.
+
+3. Configuring Ingo
+
+   To configure Ingo, change to the ``config/`` directory of the installed
+   distribution, and make copies of all of the configuration ``dist`` files
+   without the ``dist`` suffix::
+
+      cd config/
+      for foo in *.dist; do cp $foo `basename $foo .dist`; done
+
+   Or on Windows::
+
+      copy *.dist *.
+
+   Documentation on the format of those files can be found in each file.  With
+   the exception of the ``conf.*`` files (see below) and ``backends.php``, the
+   other files in ``config/`` need only be modified if you wish to customize
+   Ingo's appearance or behavior, as the defaults will be correct for most
+   sites.
+
+   You must login to Horde as a Horde Administrator to finish the
+   configuration of Ingo.  Use the Horde ``Administration`` menu item to get
+   to the administration page, and then click on the ``Configuration`` icon to
+   get the configuration page.  Select ``Filters`` from the selection list of
+   applications.  Fill in or change any configuration values as needed.  When
+   done click on ``Generate Filters Configuration`` to generate the
+   ``conf.php`` file.  If your web server doesn't have write permissions to
+   the Ingo configuration directory or file, it will not be able to write the
+   file.  In this case, go back to ``Configuration`` and choose one of the
+   other methods to create the configuration file ``ingo/config/conf.php``.
+
+   If you want to disable any of the special rules like blacklist, vacation,
+   or spam, you can lock the according preferences in
+   ``ingo/config/prefs.php``.
+
+   Note for international users: Ingo uses GNU gettext to provide local
+   translations of text displayed by applications; the translations are found
+   in the po/ directory.  If a translation is not yet available for your
+   locale (and you wish to create one), see the ``horde/po/README`` file, or
+   if you're having trouble using a provided translation, please see the
+   `horde/docs/TRANSLATIONS`_ file for instructions.
+
+
+Known Problems
+==============
+
+Some people experienced problems with Ingo's Sieve driver and Cyrus 2.1.12.
+The "addflag/removeflag" Sieve commands can cause message copies sticking in
+Cyrus' message queues producing "virtual memory exhausted" errors.  It was
+reported that upgrading to version 2.1.15 has fixed this problem.
+
+
+Obtaining Support
+=================
+
+If you encounter problems with Ingo, help is available!
+
+The Horde Frequently Asked Questions List (FAQ), available on the Web at
+
+  http://www.horde.org/faq/
+
+The Horde Project runs a number of mailing lists, for individual applications
+and for issues relating to the project as a whole.  Information, archives, and
+subscription information can be found at
+
+  http://www.horde.org/mail/
+
+Lastly, Horde developers, contributors and users may also be found on IRC,
+on the channel #horde on the Freenode Network (irc.freenode.net).
+
+Please keep in mind that Ingo is free software written by volunteers.
+For information on reasonable support expectations, please read
+
+  http://www.horde.org/support.php
+
+Thanks for using Ingo!
+
+The Ingo team
+
+
+.. _`horde/docs/HACKING`: ../../horde/docs/?f=HACKING.html
+.. _`horde/docs/INSTALL`: ../../horde/docs/?f=INSTALL.html
+.. _`horde/docs/TRANSLATIONS`: ../../horde/docs/?f=TRANSLATIONS.html
diff --git a/ingo/docs/RELEASE_NOTES b/ingo/docs/RELEASE_NOTES
new file mode 100644 (file)
index 0000000..d2dc1f4
--- /dev/null
@@ -0,0 +1,48 @@
+<?php
+/**
+ * Release focus. Possible values:
+ * 0 - N/A
+ * 1 - Initial freshmeat announcement
+ * 2 - Documentation
+ * 3 - Code cleanup
+ * 4 - Minor feature enhancements
+ * 5 - Major feature enhancements
+ * 6 - Minor bugfixes
+ * 7 - Major bugfixes
+ * 8 - Minor security fixes
+ * 9 - Major security fixes
+ */
+$this->notes['fm']['focus'] = 4;
+
+/* Mailing list release notes. */
+$this->notes['ml']['changes'] = <<<ML
+The Horde Team is pleased to announce the first release candidate of the Ingo
+Email Filter Rules Manager version H3 (1.2).
+
+Ingo is an email-filter management application. It is fully internationalized,
+integrated with Horde and the IMP Webmail client, and supports both
+server-side (Sieve, procmail) and client-side (IMAP) rule creation.
+
+This is a preview version that should not be used on production systems. This
+version is considered feature complete but a few bugs may still exist in the
+code.
+
+We encourage widespread testing and feedback via the mailing lists or our bug
+tracking system.  Updated translations are very welcome, though some strings
+might still change before the final release.
+
+The major changes compared to the Ingo version H3 (1.2-ALPHA) are:
+    * Added a Postfix policy daemon for blacklists and whitelists.
+    * Several improvements to the IMAP, Sieve, and Maildrop drivers.
+    * Added Japanese translation.
+    * Further bugfixes and improvements.
+ML;
+
+/* Freshmeat release notes. */
+$this->notes['fm']['changes'] = <<<FM
+A Postfix policy daemon for blacklists and whitelists has been added. Several improvements have been made to the IMAP, Sieve, and Maildrop drivers. A Japanese translation has been added. Further bugfixes and improvements have been made.
+FM;
+
+$this->notes['name'] = 'Ingo';
+$this->notes['fm']['project'] = 'ingo';
+$this->notes['fm']['branch'] = 'Default';
diff --git a/ingo/docs/TODO b/ingo/docs/TODO
new file mode 100644 (file)
index 0000000..da15cb9
--- /dev/null
@@ -0,0 +1,10 @@
+============================
+ Ingo Development TODO List
+============================
+
+- Better checks for bulk and mailing lists in vacation.
+
+- A smart composite driver that would let you define seperate drivers for
+  forwards, vacation, and filters.  Should also define the order of those
+  backends so that Ingo only allows re-arranging of rule order within the
+  correct bounds.
diff --git a/ingo/docs/UPGRADING b/ingo/docs/UPGRADING
new file mode 100644 (file)
index 0000000..9e22dc9
--- /dev/null
@@ -0,0 +1,89 @@
+================
+ Upgrading Ingo
+================
+
+:Contact: ingo@lists.horde.org
+
+
+These are instructions to upgrade from earlier Ingo versions. Please
+backup your existing data before running any of the steps described below.
+
+
+Upgrading Ingo From 1.2.1 To 1.2.2
+==================================
+
+The group_uid field in the SQL share driver groups table has been changed from
+an INT to a VARCHAR(255). Execute the provided SQL script to update your
+database if you are using the native SQL share driver.
+
+   mysql --user=root --password=<MySQL-root-password>  <db name> < 1.2.1_to_1.2.2.sql
+
+
+Upgrading Ingo From 1.2 To 1.2.1
+================================
+
+The share_owner field in the SQL share driver table has been changed from a
+VARCHAR(32) to a VARCHAR(255). Execute the provided SQL script to update your
+database if you are using the native SQL share driver.
+
+   mysql --user=root --password=<MySQL-root-password>  <db name> < 1.2_to_1.2.1.sql
+
+
+Upgrading Ingo From 1.1.x To 1.2
+==================================
+
+
+This is a non-exhaustive, quick explanation of what has changed between Ingo
+version 1.1.x and 1.2.x.
+
+
+SQL Backend
+-----------
+
+An SQL table has been added than can optionally be used as a storage backend
+for the filter rules. Using this backend no longer limits the number and size
+of rules.
+
+Execute the provided SQL script to add the table to your database, e.g.::
+
+   mysql --user=root --password=<MySQL-root-password> <db name> < scripts/sql/ingo.sql
+
+You also have to execute the provided PHP script to migrate the existing rules
+from the preferences backend to the new database table::
+
+   php scripts/upgrades/convert_prefs_to_sql.php < filename
+
+``filename`` is a file that contains a list of users, one username per line.
+The username should be the same as how the preferences are stored in the
+preferences backend (e.g. usernames may have to be in the form
+user@example.com). You can create such a list with the following MySQL
+command::
+
+   mysql --user=root --password=<MySQL-root-password> --skip-column-names --batch --execute='SELECT DISTINCT pref_uid FROM horde_prefs' <db name>
+
+
+New Beta SQL Share Driver Support
+---------------------------------
+
+A new beta-level SQL Horde_Share driver has been added in Horde 3.2. This driver
+offers significant performance improvements over the existing Datatree driver,
+but it has not received the same level of testing, thus the beta designation.
+In order to make use of this driver, you must be using Horde 3.2-RC3 or
+later. To migrate your existing share data, run
+``convert_datatree_shares_to_sql.php``.  Be sure to read the entry above and create
+the new SQL tables before running the migration script.
+
+
+Upgrading Ingo From 1.0.x To 1.1.x
+==================================
+
+This is a non-exhaustive, quick explanation of what has changed between Ingo
+version 1.0.x and 1.1.x.
+
+
+Backends parameter changes - procmail driver
+--------------------------------------------
+
+In ``config/backends.php``, the ``procmailrc`` parameter in the procmail
+entry has been deprecated.  It has been replaced by the ``filename``
+parameter.
diff --git a/ingo/filters.php b/ingo/filters.php
new file mode 100644 (file)
index 0000000..ef8cc65
--- /dev/null
@@ -0,0 +1,322 @@
+<?php
+/**
+ * Filters script.
+ *
+ * Copyright 2002-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author Mike Cochrane <mike@graftonhall.co.nz>
+ */
+
+require_once dirname(__FILE__) . '/lib/base.php';
+
+/* Get the list of filter rules. */
+$filters = &$ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS);
+if (is_a($filters, 'PEAR_Error')) {
+    Horde::fatal($filters, __FILE__, __LINE__);
+}
+
+/* Load the Ingo_Script:: driver. */
+$ingo_script = Ingo::loadIngoScript();
+
+/* Determine if we need to show the on-demand settings. */
+$on_demand = $ingo_script->performAvailable();
+
+/* Get web parameter data. */
+$actionID = Util::getFormData('actionID');
+$id = Util::getFormData('rulenumber');
+
+/* Get permissions. */
+$edit_allowed = Ingo::hasPermission('shares', PERMS_EDIT);
+$delete_allowed = Ingo::hasPermission('shares', PERMS_DELETE);
+
+/* Perform requested actions. */
+switch ($actionID) {
+case 'rule_down':
+case 'rule_up':
+case 'rule_copy':
+case 'rule_delete':
+case 'rule_disable':
+case 'rule_enable':
+    if (!$edit_allowed) {
+        $notification->push(_("You do not have permission to edit filter rules."), 'horde.error');
+        header('Location: ' . Horde::applicationUrl('filters.php', true));
+        exit;
+    }
+    switch ($actionID) {
+    case 'rule_delete':
+        if (!$delete_allowed) {
+            $notification->push(_("You do not have permission to delete filter rules."), 'horde.error');
+            header('Location: ' . Horde::applicationUrl('filters.php', true));
+            exit;
+        }
+        if ($filters->deleteRule($id)) {
+            $notification->push(_("Rule Deleted"), 'horde.success');
+        }
+        break;
+
+    case 'rule_copy':
+        if (!Ingo::hasPermission('allow_rules')) {
+            $message = @htmlspecialchars(_("You are not allowed to create or edit custom rules."), ENT_COMPAT, NLS::getCharset());
+            if (!empty($conf['hooks']['permsdenied'])) {
+                $message = Horde::callHook('_perms_hook_denied', array('ingo:allow_rules'), 'horde', $message);
+            }
+            $notification->push($message, 'horde.error', array('content.raw'));
+            break 2;
+        } elseif (Ingo::hasPermission('max_rules') !== true &&
+                  Ingo::hasPermission('max_rules') <= count($filters->getFilterList())) {
+            $message = @htmlspecialchars(sprintf(_("You are not allowed to create more than %d rules."), Ingo::hasPermission('max_rules')), ENT_COMPAT, NLS::getCharset());
+            if (!empty($conf['hooks']['permsdenied'])) {
+                $message = Horde::callHook('_perms_hook_denied', array('ingo:max_rules'), 'horde', $message);
+            }
+            $notification->push($message, 'horde.error', array('content.raw'));
+            break 2;
+        } elseif ($filters->copyRule($id)) {
+            $notification->push(_("Rule Copied"), 'horde.success');
+        }
+        break;
+
+    case 'rule_up':
+        $steps = Util::getFormData('steps', 1);
+        $filters->ruleUp($id, $steps);
+        break;
+
+    case 'rule_down':
+        $steps = Util::getFormData('steps', 1);
+        $filters->ruleDown($id, $steps);
+        break;
+
+    case 'rule_disable':
+        $filters->ruleDisable($id);
+        $notification->push(_("Rule Disabled"), 'horde.success');
+        break;
+
+    case 'rule_enable':
+        $filters->ruleEnable($id);
+        $notification->push(_("Rule Enabled"), 'horde.success');
+        break;
+    }
+
+    /* Save changes */
+    $ingo_storage->store($filters);
+    if ($prefs->getValue('auto_update')) {
+        Ingo::updateScript();
+    }
+    break;
+
+case 'settings_save':
+    if (!$edit_allowed) {
+        $notification->push(_("You do not have permission to edit filter rules."), 'horde.error');
+        header('Location: ' . Horde::applicationUrl('filters.php', true));
+        exit;
+    }
+    $prefs->setValue('show_filter_msg', Util::getFormData('show_filter_msg'));
+    $prefs->setValue('filter_seen', Util::getFormData('filter_seen'));
+    $notification->push(_("Settings successfully updated."), 'horde.success');
+    break;
+
+case 'apply_filters':
+    if (!$edit_allowed) {
+        $notification->push(_("You do not have permission to edit filter rules."), 'horde.error');
+        header('Location: ' . Horde::applicationUrl('filters.php', true));
+        exit;
+    }
+    if ($ingo_script->canApply()) {
+        $ingo_script->apply();
+    }
+    break;
+}
+
+/* Get the list of rules now. */
+$filter_list = $filters->getFilterList();
+
+Horde::addScriptFile('prototype.js', 'horde', true);
+Horde::addScriptFile('tooltip.js', 'horde', true);
+Horde::addScriptFile('stripe.js', 'horde', true);
+$title = _("Filter Rules");
+require INGO_TEMPLATES . '/common-header.inc';
+require INGO_TEMPLATES . '/menu.inc';
+require INGO_TEMPLATES . '/filters/header.inc';
+
+/* Common URLs. */
+$filters_url = Horde::applicationUrl('filters.php');
+$rule_url = Horde::applicationUrl('rule.php');
+
+if (count($filter_list) == 0) {
+    require INGO_TEMPLATES . '/filters/filter-none.inc';
+} else {
+    $display = array();
+    $i = 0;
+    $rule_count = array_sum(array_map(create_function('$a', "return (in_array(\$a['action'], \$_SESSION['ingo']['script_categories'])) ? 1 : 0;"), $filter_list));
+
+    /* Common graphics. */
+    $down_img = Horde::img('nav/down.png', _("Move Rule Down"), '', $registry->getImageDir('horde'));
+    $up_img = Horde::img('nav/up.png', _("Move Rule Up"), '', $registry->getImageDir('horde'));
+
+    foreach ($filter_list as $rule_number => $filter) {
+        /* Skip non-display categories. */
+        if (!in_array($filter['action'], $_SESSION['ingo']['script_categories'])) {
+            continue;
+        }
+
+        $entry = array();
+        $entry['number'] = ++$i;
+        $url = Util::addParameter($filters_url, 'rulenumber', $rule_number);
+        $copyurl = $delurl = $editurl = $name = null;
+
+        switch ($filter['action']) {
+        case Ingo_Storage::ACTION_BLACKLIST:
+            $editurl = Horde::applicationUrl('blacklist.php');
+            $entry['filterimg'] = Horde::img('blacklist.png');
+            $name = _("Blacklist");
+            break;
+
+        case Ingo_Storage::ACTION_WHITELIST:
+            $editurl = Horde::applicationUrl('whitelist.php');
+            $entry['filterimg'] = Horde::img('whitelist.png');
+            $name = _("Whitelist");
+            break;
+
+        case Ingo_Storage::ACTION_VACATION:
+            $editurl = Horde::applicationUrl('vacation.php');
+            $entry['filterimg'] = Horde::img('vacation.png');
+            $name = _("Vacation");
+            break;
+
+        case Ingo_Storage::ACTION_FORWARD:
+            $editurl = Horde::applicationUrl('forward.php');
+            $entry['filterimg'] = Horde::img('forward.png');
+            $name = _("Forward");
+            break;
+
+        case Ingo_Storage::ACTION_SPAM:
+            $editurl = Horde::applicationUrl('spam.php');
+            $entry['filterimg'] = Horde::img('spam.png');
+            $name = _("Spam Filter");
+            break;
+
+        default:
+            $editurl = Util::addParameter($rule_url, array('edit' => $rule_number, 'actionID' => 'rule_edit'));
+            $delurl  = Util::addParameter($url, 'actionID', 'rule_delete');
+            $copyurl = Util::addParameter($url, 'actionID', 'rule_copy');
+            $entry['filterimg'] = false;
+            $name = $filter['name'];
+            break;
+        }
+
+        /* Create description. */
+        if (!$edit_allowed) {
+            $entry['descriplink'] = @htmlspecialchars($name, ENT_COMPAT, NLS::getCharset());
+        } elseif (!empty($filter['conditions'])) {
+            $descrip = '';
+            $condition_size = count($filter['conditions']) - 1;
+            foreach ($filter['conditions'] as $condid => $cond) {
+
+                $descrip .= sprintf("%s %s \"%s\"", _($cond['field']), _($cond['match']), $cond['value']);
+                if (!empty($cond['case'])) {
+                    $descrip .= ' [' . _("Case Sensitive") . ']';
+                }
+                if ($condid < $condition_size) {
+                    $descrip .= ($filter['combine'] == Ingo_Storage::COMBINE_ALL) ? _(" and") : _(" or");
+                    $descrip .= "\n  ";
+                }
+            }
+
+            $descrip .= "\n";
+
+            $ob = $ingo_storage->getActionInfo($filter['action']);
+            $descrip .= $ob->label;
+
+            if ($filter['action-value']) {
+                $descrip .= ': ' . $filter['action-value'];
+            }
+
+            if ($filter['stop']) {
+                $descrip .= "\n[stop]";
+            }
+
+            $entry['descriplink'] = Horde::linkTooltip($editurl, sprintf(_("Edit %s"), $name), null, null, null, $descrip) . @htmlspecialchars($name, ENT_COMPAT, NLS::getCharset()) . '</a>';
+        } else {
+            $entry['descriplink'] = Horde::link($editurl, sprintf(_("Edit %s"), $name)) . @htmlspecialchars($name, ENT_COMPAT, NLS::getCharset()) . '</a>';
+        }
+
+        /* Create edit link. */
+        $entry['editlink'] = Horde::link($editurl, sprintf(_("Edit %s"), $name));
+        $entry['editimg'] = Horde::img('edit.png', sprintf(_("Edit %s"), $name), '', $registry->getImageDir('horde'));
+
+        /* Create delete link. */
+        if (!is_null($delurl)) {
+            $entry['dellink'] = Horde::link($delurl, sprintf(_("Delete %s"), $name), null, null, "return window.confirm('" . addslashes(_("Are you sure you want to delete this rule?")) . "');");
+            $entry['delimg'] = Horde::img('delete.png', sprintf(_("Delete %s"), $name), '', $registry->getImageDir('horde'));
+        } else {
+            $entry['dellink'] = false;
+        }
+
+        /* Create copy link. */
+        if (!is_null($copyurl) &&
+            (!empty($conf['hooks']['permsdenied']) ||
+             Ingo::hasPermission('max_rules') === true ||
+             Ingo::hasPermission('max_rules') > count($filter_list))) {
+            $entry['copylink'] = Horde::link($copyurl, sprintf(_("Copy %s"), $name));
+            $entry['copyimg'] = Horde::img('copy.png', sprintf(_("Copy %s"), $name));
+        } else {
+            $entry['copylink'] = false;
+        }
+
+        /* Create up/down arrow links. */
+        $entry['upurl'] = Util::addParameter($url, 'actionID', 'rule_up');
+        $entry['downurl'] = Util::addParameter($url, 'actionID', 'rule_down');
+        $entry['uplink'] = ($i > 1) ? Horde::link($entry['upurl'], _("Move Rule Up")) : false;
+        $entry['downlink'] = ($i < $rule_count) ? Horde::link($entry['downurl'], _("Move Rule Down")) : false;
+
+        if (empty($filter['disable'])) {
+            if ($edit_allowed) {
+                $entry['disablelink'] = Horde::link(Util::addParameter($url, 'actionID', 'rule_disable'), sprintf(_("Disable %s"), $name));
+                $entry['disableimg'] = Horde::img('enable.png', sprintf(_("Disable %s"), $name));
+            } else {
+                $entry['disableimg'] = Horde::img('enable.png');
+                $entry['disablelink'] = false;
+            }
+            $entry['enablelink'] = false;
+            $entry['enableimg'] = false;
+        } else {
+            if ($edit_allowed) {
+                $entry['enablelink'] = Horde::link(Util::addParameter($url, 'actionID', 'rule_enable'), sprintf(_("Enable %s"), $name));
+                $entry['enableimg'] = Horde::img('disable.png', sprintf(_("Enable %s"), $name));
+            } else {
+                $entry['enableimg'] = Horde::img('disable.png');
+                $entry['enablelink'] = false;
+            }
+            $entry['disablelink'] = false;
+            $entry['disableimg'] = false;
+        }
+
+        $display[] = $entry;
+    }
+
+    /* Output the template. */
+    $template = new Ingo_Template();
+    $template->set('down_img', $down_img);
+    $template->set('up_img', $up_img);
+    $template->set('filter', $display, true);
+    $template->set('edit_allowed', $edit_allowed, true);
+    $template->set('delete_allowed', $delete_allowed, true);
+    $template->setOption('gettext', true);
+    echo $template->fetch(INGO_TEMPLATES . '/filters/filter.html');
+}
+
+$actions = $ingo_script->availableActions();
+$createrule = (!empty($actions) &&
+               (!empty($conf['hooks']['permsdenied']) ||
+                (Ingo::hasPermission('allow_rules') &&
+                 (Ingo::hasPermission('max_rules') === true ||
+                  Ingo::hasPermission('max_rules') > count($filter_list)))));
+$canapply = $ingo_script->canApply();
+require INGO_TEMPLATES . '/filters/footer.inc';
+if ($on_demand && $edit_allowed) {
+    require INGO_TEMPLATES . '/filters/settings.inc';
+}
+
+require $registry->get('templates', 'horde') . '/common-footer.inc';
diff --git a/ingo/forward.php b/ingo/forward.php
new file mode 100644 (file)
index 0000000..029f458
--- /dev/null
@@ -0,0 +1,105 @@
+<?php
+/**
+ * Forwards script.
+ *
+ * Copyright 2003-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author Todd Merritt <tmerritt@email.arizona.edu>
+ */
+
+require_once dirname(__FILE__) . '/lib/base.php';
+
+/* Redirect if forward is not available. */
+if (!in_array(Ingo_Storage::ACTION_FORWARD, $_SESSION['ingo']['script_categories'])) {
+    $notification->push(_("Forward is not supported in the current filtering driver."), 'horde.error');
+    header('Location: ' . Horde::applicationUrl('filters.php', true));
+    exit;
+}
+
+/* Get the forward object and rule. */
+$forward = &$ingo_storage->retrieve(Ingo_Storage::ACTION_FORWARD);
+$filters = &$ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS);
+$fwd_id = $filters->findRuleId(Ingo_Storage::ACTION_FORWARD);
+$fwd_rule = $filters->getRule($fwd_id);
+
+/* Load libraries. */
+require_once 'Horde/Variables.php';
+$vars = &Variables::getDefaultVariables();
+if ($vars->get('submitbutton') == _("Return to Rules List")) {
+    header('Location: ' . Horde::applicationUrl('filters.php', true));
+    exit;
+}
+
+/* Build form. */
+$form = new Horde_Form($vars);
+$v = &$form->addVariable(_("Keep a copy of messages in this account?"), 'keep_copy', 'boolean', false);
+$v->setHelp('forward-keepcopy');
+$v = &$form->addVariable(_("Address(es) to forward to:"), 'addresses', 'longtext', false, false, null, array(5, 40));
+$v->setHelp('forward-addresses');
+$form->setButtons(_("Save"));
+
+/* Perform requested actions. */
+if ($form->validate($vars)) {
+    $forward->setForwardAddresses($vars->get('addresses'));
+    $forward->setForwardKeep($vars->get('keep_copy') == 'on');
+    $success = true;
+    if (is_a($result = $ingo_storage->store($forward), 'PEAR_Error')) {
+        $notification->push($result);
+        $success = false;
+    } else {
+        $notification->push(_("Changes saved."), 'horde.success');
+        if ($vars->get('submitbutton') == _("Save and Enable")) {
+            $filters->ruleEnable($fwd_id);
+            if (is_a($result = $ingo_storage->store($filters), 'PEAR_Error')) {
+                $notification->push($result);
+                $success = false;
+            } else {
+                $notification->push(_("Rule Enabled"), 'horde.success');
+                $fwd_rule['disable'] = false;
+            }
+        } elseif ($vars->get('submitbutton') == _("Save and Disable")) {
+            $filters->ruleDisable($fwd_id);
+            if (is_a($result = $ingo_storage->store($filters), 'PEAR_Error')) {
+                $notification->push($result);
+                $success = false;
+            } else {
+                $notification->push(_("Rule Disabled"), 'horde.success');
+                $fwd_rule['disable'] = true;
+            }
+        }
+    }
+    if ($success && $prefs->getValue('auto_update')) {
+        Ingo::updateScript();
+    }
+}
+
+/* Add buttons depending on the above actions. */
+if (empty($fwd_rule['disable'])) {
+    $form->appendButtons(_("Save and Disable"));
+} else {
+    $form->appendButtons(_("Save and Enable"));
+}
+$form->appendButtons(_("Return to Rules List"));
+
+/* Set default values. */
+if (!$form->isSubmitted()) {
+    $vars->set('keep_copy', $forward->getForwardKeep());
+    $vars->set('addresses', implode("\n", $forward->getForwardAddresses()));
+}
+
+/* Set form title. */
+$form_title = _("Forward");
+if (!empty($fwd_rule['disable'])) {
+    $form_title .= ' [<span class="form-error">' . _("Disabled") . '</span>]';
+}
+$form_title .= ' ' . Help::link('ingo', 'forward');
+$form->setTitle($form_title);
+
+$title = _("Forwards Edit");
+require INGO_TEMPLATES . '/common-header.inc';
+require INGO_TEMPLATES . '/menu.inc';
+$form->renderActive(new Horde_Form_Renderer(array('encode_title' => false)), $vars, 'forward.php', 'post');
+require $registry->get('templates', 'horde') . '/common-footer.inc';
diff --git a/ingo/index.php b/ingo/index.php
new file mode 100644 (file)
index 0000000..bf9c3e0
--- /dev/null
@@ -0,0 +1,26 @@
+<?php
+/**
+ * Index script.
+ *
+ * Copyright 2002-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author Mike Cochrane <mike@graftonhall.co.nz>
+ */
+
+@define('INGO_BASE', dirname(__FILE__));
+$ingo_configured = (is_readable(INGO_BASE . '/config/conf.php') &&
+                    is_readable(INGO_BASE . '/config/prefs.php') &&
+                    is_readable(INGO_BASE . '/config/backends.php') &&
+                    is_readable(INGO_BASE . '/config/fields.php'));
+
+if (!$ingo_configured) {
+    require INGO_BASE . '/../lib/Test.php';
+    Horde_Test::configFilesMissing('Ingo', INGO_BASE,
+        array('conf.php', 'prefs.php', 'backends.php'),
+        array('fields.php' => 'This file defines types of credentials that a backend might request.'));
+}
+
+require INGO_BASE . '/filters.php';
diff --git a/ingo/lib/Block/overview.php b/ingo/lib/Block/overview.php
new file mode 100644 (file)
index 0000000..d92bd28
--- /dev/null
@@ -0,0 +1,111 @@
+<?php
+
+$block_name = _("Overview");
+
+/**
+ * Ingo_Filters_Block:: implementation of the Horde_Block API to show filter
+ * information on the portal.
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Oliver Kuhl <okuhl@netcologne.de>
+ * @package Horde_Block
+ */
+class Horde_Block_ingo_overview extends Horde_Block {
+
+    var $_app = 'ingo';
+
+    /**
+     * The title to go in this block.
+     *
+     * @return string   The title text.
+     */
+    function _title()
+    {
+        return Horde::link(Horde::url($GLOBALS['registry']->getInitialPage(), true)) . $GLOBALS['registry']->get('name') . '</a>';
+    }
+
+    /**
+     * The content to go in this block.
+     *
+     * @return string   The content
+     */
+    function _content()
+    {
+        require_once dirname(__FILE__) . '/../base.php';
+
+        /* Get list of filters */
+        $filters = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_FILTERS);
+        $html = '<table width="100%" height="100%">';
+        $html_pre = '<tr><td valign="top">';
+        $html_post = '</td></tr>';
+        foreach ($filters->_filters as $filter) {
+            if (!empty($filter['disable'])) {
+                $active = _("inactive");
+            } else {
+                $active = _("active");
+            }
+
+            switch($filter['name']) {
+            case 'Vacation':
+                if (in_array(Ingo_Storage::ACTION_VACATION, $_SESSION['ingo']['script_categories'])) {
+                    $html .= $html_pre .
+                        Horde::img('vacation.png', _("Vacation")) .
+                        '</td><td>' .
+                        Horde::link(Horde::applicationUrl('vacation.php'), _("Edit")) .
+                        _("Vacation") . '</a> ' . $active . $html_post;
+                }
+                break;
+
+            case 'Forward':
+                if (in_array(Ingo_Storage::ACTION_FORWARD, $_SESSION['ingo']['script_categories'])) {
+                    $html .= $html_pre .
+                        Horde::img('forward.png', _("Forward")) . '</td><td>' .
+                        Horde::link(Horde::applicationUrl('forward.php'), _("Edit")) .
+                        _("Forward") . '</a> ' . $active;
+                    $data = unserialize($GLOBALS['prefs']->getValue('forward'));
+                    if (!empty($data['a'])) {
+                        $html .= ':<br />' . implode('<br />', $data['a']);
+                    }
+                    $html .= $html_post;
+                }
+                break;
+
+            case 'Whitelist':
+                if (in_array(Ingo_Storage::ACTION_WHITELIST, $_SESSION['ingo']['script_categories'])) {
+                    $html .= $html_pre .
+                        Horde::img('whitelist.png', _("Whitelist")) .
+                        '</td><td>' .
+                        Horde::link(Horde::applicationUrl('whitelist.php'), _("Edit")) .
+                        _("Whitelist") . '</a> ' . $active . $html_post;
+                }
+                break;
+
+            case 'Blacklist':
+                if (in_array(Ingo_Storage::ACTION_BLACKLIST, $_SESSION['ingo']['script_categories'])) {
+                    $html .= $html_pre .
+                        Horde::img('blacklist.png', _("Blacklist")) .
+                        '</td><td>' .
+                        Horde::link(Horde::applicationUrl('blacklist.php'), _("Edit")) .
+                        _("Blacklist") . '</a> ' . $active . $html_post;
+                }
+                break;
+
+            case 'Spam Filter':
+                if (in_array(Ingo_Storage::ACTION_SPAM, $_SESSION['ingo']['script_categories'])) {
+                    $html .= $html_pre .
+                        Horde::img('spam.png', _("Spam Filter")) .
+                        '</td><td>' .
+                        Horde::link(Horde::applicationUrl('spam.php'), _("Edit")) .
+                        _("Spam Filter") . '</a> ' . $active . $html_post;
+                }
+                break;
+            }
+
+        }
+
+        return $html . '</table>';
+    }
+
+}
diff --git a/ingo/lib/Driver.php b/ingo/lib/Driver.php
new file mode 100644 (file)
index 0000000..a972abb
--- /dev/null
@@ -0,0 +1,82 @@
+<?php
+/**
+ * Ingo_Driver:: defines an API to activate filter scripts on a server.
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @package Ingo
+ */
+class Ingo_Driver
+{
+    /**
+     * Driver specific parameters
+     *
+     * @var array
+     */
+    protected $_params = array(
+        'username' => null,
+        'password' => null
+    );
+
+    /**
+     * Whether this driver allows managing other users' rules.
+     *
+     * @var boolean
+     */
+    protected $_support_shares = false;
+
+    /**
+     * Attempts to return a concrete Ingo_Driver instance based on $driver.
+     *
+     * @param string $driver  The type of concrete Ingo_Driver subclass to
+     *                        return.
+     * @param array $params   A hash containing any additional configuration or
+     *                        connection parameters a subclass might need.
+     *
+     * @return mixed  The newly created concrete Ingo_Driver instance, or
+     *                false on error.
+     */
+    static public function factory($driver, $params = array())
+    {
+        $driver = basename($driver);
+        $class = 'Ingo_Driver_' . $driver;
+
+        return class_exists($class)
+            ? new $class($params)
+            : false;
+    }
+
+    /**
+     * Constructor.
+     */
+    public function __construct($params = array())
+    {
+        $this->_params = array_merge($this->_params, $params);
+    }
+
+    /**
+     * Sets a script running on the backend.
+     *
+     * @param string $script  The filter script.
+     *
+     * @return mixed  True on success, false if script can't be activated.
+     *                Returns PEAR_Error on error.
+     */
+    public function setScriptActive($script)
+    {
+        return false;
+    }
+
+    /**
+     * Returns whether the driver supports managing other users' rules.
+     *
+     * @return boolean  True if the driver supports shares.
+     */
+    public function supportShares()
+    {
+        return $this->_support_shares && !empty($_SESSION['ingo']['backend']['shares']);
+    }
+
+}
diff --git a/ingo/lib/Driver/ldap.php b/ingo/lib/Driver/ldap.php
new file mode 100644 (file)
index 0000000..75f7504
--- /dev/null
@@ -0,0 +1,263 @@
+<?php
+/**
+ * Ingo_Driver_ldap:: Implements the Sieve_Driver api to allow scripts to be
+ * installed and set active via an LDAP server.
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Jason M. Felice <jason.m.felice@gmail.com>
+ * @package Ingo
+ */
+class Ingo_Driver_ldap extends Ingo_Driver
+{
+    /**
+     * Constructor.
+     */
+    public function __construct($params = array())
+    {
+        if (!Util::extensionExists('ldap')) {
+            Horde::fatal(PEAR::raiseError(_("LDAP support is required but the LDAP module is not available or not loaded.")), __FILE__, __LINE__);
+        }
+
+        $default_params = array(
+            'hostspec' => 'localhost',
+            'port' => 389,
+            'script_attribute' => 'mailSieveRuleSource'
+        );
+
+        parent::__construct(array_merge($default_params, $params));
+    }
+
+    /**
+     * Create a DN from a DN template.
+     * This is done by substituting the username for %u and the 'dc='
+     * components for %d.
+     *
+     * @param string $templ  The DN template (from the config).
+     *
+     * @return string  The resulting DN.
+     */
+    protected function _substUser($templ)
+    {
+        $domain = '';
+        $username = $this->_params['username'];
+
+        if (strpos($username, '@') !== false) {
+            list($username, $domain) = explode('@', $username);
+        }
+        $domain = implode(', dc=', explode('.', $domain));
+        if (!empty($domain)) {
+            $domain = 'dc=' . $domain;
+        }
+
+        if (preg_match('/^\s|\s$|\s\s|[,+="\r\n<>#;]/', $username)) {
+            $username = '"' . str_replace('"', '\\"', $username) . '"';
+        }
+
+        return str_replace(array('%u', '%d'),
+                           array($username, $domain),
+                           $templ);
+    }
+
+    /**
+     * Connect and bind to ldap server.
+     */
+    protected function _connect()
+    {
+        if (!($ldapcn = @ldap_connect($this->_params['hostspec'],
+                                      $this->_params['port']))) {
+            return PEAR::raiseError(_("Connection failure"));
+        }
+
+        /* Set the LDAP protocol version. */
+        if (!empty($this->_params['version'])) {
+            @ldap_set_option($ldapcn,
+                             LDAP_OPT_PROTOCOL_VERSION,
+                             $this->_params['version']);
+        }
+
+        /* Start TLS if we're using it. */
+        if (!empty($this->_params['tls'])) {
+            if (!@ldap_start_tls($ldapcn)) {
+                return PEAR::raiseError(sprintf(_("STARTTLS failed: (%s) %s"),
+                                                ldap_errno($ldapcn),
+                                                ldap_error($ldapcn)));
+            }
+        }
+
+        /* Bind to the server. */
+        if (isset($this->_params['bind_dn'])) {
+            $bind_dn = $this->_substUser($this->_params['bind_dn']);
+            if (is_a($bind_dn, 'PEAR_Error')) {
+                return $bind_dn;
+            }
+
+            if (isset($this->_params['bind_password'])) {
+                $password = $this->_params['bind_password'];
+            } else {
+                $password = $this->_params['password'];
+            }
+
+            if (!@ldap_bind($ldapcn, $bind_dn, $password)) {
+                return PEAR::raiseError(sprintf(_("Bind failed: (%s) %s"),
+                                                ldap_errno($ldapcn),
+                                                ldap_error($ldapcn)));
+            }
+        } elseif (!(@ldap_bind($ldapcn))) {
+            return PEAR::raiseError(sprintf(_("Bind failed: (%s) %s"),
+                                            ldap_errno($ldapcn),
+                                            ldap_error($ldapcn)));
+        }
+
+        return $ldapcn;
+    }
+
+    /**
+     * Retrieve current user's scripts.
+     *
+     * @param resource $ldapcn  The connection to the LDAP server.
+     * @param string $userDN    Set to the user object's real DN.
+     *
+     * @return mixed  Array of script sources, or PEAR_Error on failure.
+     */
+    protected function _getScripts($ldapcn, &$userDN)
+    {
+        $attrs = array($this->_params['script_attribute'], 'dn');
+        $filter = $this->_substUser($this->_params['script_filter']);
+
+        /* Find the user object. */
+        $sr = @ldap_search($ldapcn, $this->_params['script_base'], $filter,
+                           $attrs);
+        if ($sr === false) {
+            return PEAR::raiseError(sprintf(_("Error retrieving current script: (%d) %s"),
+                                            ldap_errno($ldapcn),
+                                            ldap_error($ldapcn)));
+        }
+        if (@ldap_count_entries($ldapcn, $sr) != 1) {
+            return PEAR::raiseError(sprintf(_("Expected 1 object, got %d."),
+                                            ldap_count_entries($ldapcn, $sr)));
+        }
+        $ent = @ldap_first_entry($ldapcn, $sr);
+        if ($ent === false) {
+            return PEAR::raiseError(sprintf(_("Error retrieving current script: (%d) %s"),
+                                            ldap_errno($ldapcn),
+                                            ldap_error($ldapcn)));
+        }
+
+        /* Retrieve the user's DN. */
+        $v = @ldap_get_dn($ldapcn, $ent);
+        if ($v === false) {
+            @ldap_free_result($sr);
+            return PEAR::raiseError(sprintf(_("Error retrieving current script: (%d) %s"),
+                                            ldap_errno($ldapcn),
+                                            ldap_error($ldapcn)));
+        }
+        $userDN = $v;
+
+        /* Retrieve the user's scripts. */
+        $attrs = @ldap_get_attributes($ldapcn, $ent);
+        @ldap_free_result($sr);
+        if ($attrs === false) {
+            return PEAR::raiseError(sprintf(_("Error retrieving current script: (%d) %s"),
+                                            ldap_errno($ldapcn),
+                                            ldap_error($ldapcn)));
+        }
+
+        /* Attribute can be in any case, and can have a ";binary"
+         * specifier. */
+        $regexp = '/^' . preg_quote($this->_params['script_attribute'], '/') .
+                  '(?:;.*)?$/i';
+        unset($attrs['count']);
+        foreach ($attrs as $name => $values) {
+            if (preg_match($regexp, $name)) {
+                unset($values['count']);
+                return array_values($values);
+            }
+        }
+
+        return array();
+    }
+
+    /**
+     * Sets a script running on the backend.
+     *
+     * @param string $script  The sieve script.
+     *
+     * @return mixed  True on success, PEAR_Error on error.
+     */
+    protected function setScriptActive($script)
+    {
+        $ldapcn = $this->_connect();
+        if (is_a($ldapcn, 'PEAR_Error')) {
+            return $ldapcn;
+        }
+
+        $values = $this->_getScripts($ldapcn, $userDN);
+        if (is_a($values, 'PEAR_Error')) {
+            return $values;
+        }
+
+        $found = false;
+        foreach ($values as $i => $value) {
+            if (strpos($value, "# Sieve Filter\n") !== false) {
+                if (empty($script)) {
+                    unset($values[$i]);
+                } else {
+                    $values[$i] = $script;
+                }
+                $found = true;
+                break;
+            }
+        }
+        if (!$found && !empty($script)) {
+            $values[] = $script;
+        }
+
+        $replace = array(String::lower($this->_params['script_attribute']) => $values);
+        if (empty($values)) {
+            $r = @ldap_mod_del($ldapcn, $userDN, $replace);
+        } else {
+            $r = @ldap_mod_replace($ldapcn, $userDN, $replace);
+        }
+        if (!$r) {
+            return PEAR::raiseError(sprintf(_("Activating the script for \"%s\" failed: (%d) %s"),
+                                            $userDN,
+                                            ldap_errno($ldapcn),
+                                            ldap_error($ldapcn)));
+        }
+
+        @ldap_close($ldapcn);
+        return true;
+    }
+
+    /**
+     * Returns the content of the currently active script.
+     *
+     * @return string  The complete ruleset of the specified user.
+     */
+    public function getScript()
+    {
+        $ldapcn = $this->_connect();
+        if (is_a($ldapcn, 'PEAR_Error')) {
+            return $ldapcn;
+        }
+
+        $values = $this->_getScripts($ldapcn, $userDN);
+        if (is_a($values, 'PEAR_Error')) {
+            return $values;
+        }
+
+        $script = '';
+        foreach ($values as $value) {
+            if (strpos($value, "# Sieve Filter\n") !== false) {
+                $script = $value;
+                break;
+            }
+        }
+
+        @ldap_close($ldapcn);
+        return $script;
+    }
+
+}
diff --git a/ingo/lib/Driver/null.php b/ingo/lib/Driver/null.php
new file mode 100644 (file)
index 0000000..54cadee
--- /dev/null
@@ -0,0 +1,24 @@
+<?php
+/**
+ * Ingo_Driver_null:: Implements a null api -- useful for just testing
+ * the UI and storage.
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Brent J. Nordquist <bjn@horde.org>
+ * @package Ingo
+ */
+
+class Ingo_Driver_null extends Ingo_Driver
+{
+    /**
+     * Constructor.
+     */
+    public function __construct($params = array())
+    {
+        $this->_support_shares = true;
+        parent::__construct($params);
+    }
+
+}
diff --git a/ingo/lib/Driver/sivtest.php b/ingo/lib/Driver/sivtest.php
new file mode 100644 (file)
index 0000000..3fc3953
--- /dev/null
@@ -0,0 +1,210 @@
+<?php
+/**
+ * Ingo_Driver_sivtest:: Implements the Sieve_Driver api to allow scripts to
+ * be installed and set active via the Cyrus sivtest command line utility.
+ *
+ * Copyright 2003-2009 The Horde Project (http://www.horde.org/)
+ * Copyright 2004-2007 Liam Hoekenga <liamr@umich.edu>
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @author  Jan Schneider <jan@horde.org>
+ * @author  Liam Hoekenga <liamr@umich.edu>
+ * @package Ingo
+ */
+class Ingo_Driver_sivtest extends Ingo_Driver
+{
+    /**
+     * The Net_Sieve object.
+     *
+     * @var Net_Sieve
+     */
+    protected $_sieve;
+
+    /**
+     * Constructor.
+     */
+    public function __construct($params = array())
+    {
+        $default_params = array(
+            'hostspec'   => 'localhost',
+            'logintype'  => '',
+            'port'       => 2000,
+            'scriptname' => 'ingo',
+            'admin'      => '',
+            'usetls'     => true,
+            'command'    => '',
+            'socket'     => '',
+        );
+
+        parent::__construct(array_merge($default_params, $params));
+    }
+
+    /**
+     * Connect to the sieve server.
+     *
+     * @return mixed  True on success, PEAR_Error on false.
+     */
+    protected function _connect()
+    {
+        if (!empty($this->_sieve)) {
+            return true;
+        }
+
+        $this->sivtestSocket($this->_params['username'],
+        $this->_params['password'], $this->_params['hostspec']);
+        if (substr(PHP_VERSION, 0, 1) == '5') {
+            $domain_socket = 'unix://' . $this->_params['socket'];
+        } else {
+            $domain_socket = $this->_params['socket'];
+        }
+
+        $this->_sieve = new Net_Sieve($this->_params['username'],
+                                      $this->_params['password'],
+                                      $domain_socket,
+                                      0,
+                                      null,
+                                      null,
+                                      false,
+                                      true,
+                                      $this->_params['usetls']);
+
+        $res = $this->_sieve->getError();
+        if (is_a($res, 'PEAR_Error')) {
+            unset($this->_sieve);
+            return $res;
+        } else {
+            return true;
+        }
+    }
+
+    /**
+     * Sets a script running on the backend.
+     *
+     * @param string $script  The sieve script.
+     *
+     * @return mixed  True on success.
+     *                Returns PEAR_Error on error.
+     */
+    public function setScriptActive($script)
+    {
+        $res = $this->_connect();
+        if (is_a($res, 'PEAR_Error')) {
+            return $res;
+        }
+
+        $res = $this->_sieve->haveSpace($this->_params['scriptname'], strlen($script));
+        if (is_a($res, 'PEAR_ERROR')) {
+            return $res;
+        }
+
+        return $this->_sieve->installScript($this->_params['scriptname'], $script, true);
+    }
+
+    /**
+     * Returns the content of the currently active script.
+     *
+     * @return string  The complete ruleset of the specified user.
+     */
+    public function getScript()
+    {
+        $res = $this->_connect();
+        if (is_a($res, 'PEAR_Error')) {
+            return $res;
+        }
+        return $this->_sieve->getScript($this->_sieve->getActive());
+    }
+
+    /**
+     * Used to figure out which Sieve server the script will be run
+     * on, and then open a GSSAPI authenticated socket to said server.
+     *
+     * @param string $username  The username.
+     * @param string $password  The password.
+     * @param string $hostspec  The hostspec.
+     *
+     * @return TODO
+     */
+    public function sivtestSocket($username, $password, $hostspec)
+    {
+        $command = '';
+        $error_return = '';
+
+        if (strtolower($this->_params['logintype']) == 'gssapi'
+            && isset($_SERVER['KRB5CCNAME'])) {
+            $command .= 'KRB5CCNAME=' . $_SERVER['KRB5CCNAME'];
+        }
+
+        if (substr(PHP_VERSION, 0, 1) == '5') {
+            $domain_socket = 'unix://' . $this->_params['socket'];
+        } else {
+            $domain_socket = $this->_params['socket'];
+        }
+
+        $command .= ' ' . $this->_params['command']
+            . ' -m ' . $this->_params['logintype']
+            . ' -u ' . $username
+            . ' -a ' . $username
+            . ' -w ' . $password
+            . ' -p ' . $this->_params['port']
+            . ' -X ' . $this->_params['socket']
+            . ' ' . $hostspec;
+
+        $conn_attempts = 0;
+        while ($conn_attempts++ < 4) {
+            $attempts = 0;
+            if (!file_exists($this->_params['socket'])) {
+                exec($command . ' > /dev/null 2>&1');
+                sleep(1);
+                while (!file_exists($this->_params['socket'])) {
+                    usleep(200000);
+                    if ($attempts++ > 5) {
+                        $error_return = ': No socket after 10 seconds of trying!';
+                        continue 2;
+                    }
+                }
+            }
+            $socket = new Net_Socket();
+            $error = $socket->connect($domain_socket, 0, true, 30);
+            if (!is_a($error, 'PEAR_Error')) {
+                break;
+            }
+
+            // We failed, break this connection.
+            unlink($this->_params['socket']);
+        }
+
+        if (!empty($error_return)) {
+            return PEAR::raiseError(_($error_return));
+        }
+
+        $status = $socket->getStatus();
+        if (is_a($status, 'PEAR_Error') || $status['eof']) {
+            return PEAR::raiseError(_('Failed to write to socket: (connection lost!)'));
+        }
+
+        $error = $socket->writeLine("CAPABILITY");
+        if (is_a($error, 'PEAR_Error')) {
+            return PEAR::raiseError(_('Failed to write to socket: ' . $error->getMessage()));
+        }
+
+        $result = $socket->readLine();
+        if (is_a($result, 'PEAR_Error')) {
+            return PEAR::raiseError(_('Failed to read from socket: ' . $error->getMessage()));
+        }
+
+        if (preg_match('|^bye \(referral "(sieve://)?([^"]+)|i',
+                       $result, $matches)) {
+            $socket->disconnect();
+
+            $this->sivtestSocket($username, $password, $matches[2]);
+        } else {
+            $socket->disconnect();
+            exec($command . ' > /dev/null 2>&1');
+            sleep(1);
+        }
+    }
+
+}
diff --git a/ingo/lib/Driver/timsieved.php b/ingo/lib/Driver/timsieved.php
new file mode 100644 (file)
index 0000000..afc9ffa
--- /dev/null
@@ -0,0 +1,124 @@
+<?php
+/**
+ * Ingo_Driver_timsieved:: Implements the Sieve_Driver api to allow scripts to
+ * be installed and set active via a Cyrus timsieved server.
+ *
+ * Copyright 2003-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Ingo
+ */
+class Ingo_Driver_timsieved extends Ingo_Driver
+{
+    /**
+     * The Net_Sieve object.
+     *
+     * @var Net_Sieve
+     */
+    protected $_sieve;
+
+    /**
+     * Constructor.
+     */
+    public function __construct($params = array())
+    {
+        $this->_support_shares = true;
+
+        $default_params = array(
+            'hostspec'   => 'localhost',
+            'logintype'  => 'PLAIN',
+            'port'       => 2000,
+            'scriptname' => 'ingo',
+            'admin'      => '',
+            'usetls'     => true
+        );
+
+        parent::__construct(array_merge($default_params, $params));
+    }
+
+    /**
+     * Connect to the sieve server.
+     *
+     * @return mixed  True on success, PEAR_Error on false.
+     */
+    public function _connect()
+    {
+        if (!empty($this->_sieve)) {
+            return true;
+        }
+
+        if (empty($this->_params['admin'])) {
+            $auth = $this->_params['username'];
+        } else {
+            $auth = $this->_params['admin'];
+        }
+        $this->_sieve = new Net_Sieve($auth,
+                                      $this->_params['password'],
+                                      $this->_params['hostspec'],
+                                      $this->_params['port'],
+                                      $this->_params['logintype'],
+                                      Ingo::getUser(false),
+                                      false,
+                                      false,
+                                      $this->_params['usetls']);
+
+        $res = $this->_sieve->getError();
+        if (is_a($res, 'PEAR_Error')) {
+            unset($this->_sieve);
+            return $res;
+        } else {
+            return true;
+        }
+    }
+
+    /**
+     * Sets a script running on the backend.
+     *
+     * @param string $script  The sieve script.
+     *
+     * @return mixed  True on success, PEAR_Error on error.
+     */
+    public function setScriptActive($script)
+    {
+        $res = $this->_connect();
+        if (is_a($res, 'PEAR_Error')) {
+            return $res;
+        }
+
+        if (!strlen($script)) {
+            return $this->_sieve->setActive('');
+        }
+
+        $res = $this->_sieve->haveSpace($this->_params['scriptname'],
+                                        strlen($script));
+        if (is_a($res, 'PEAR_ERROR')) {
+            return $res;
+        }
+
+        return $this->_sieve->installScript($this->_params['scriptname'],
+                                            $script, true);
+    }
+
+    /**
+     * Returns the content of the currently active script.
+     *
+     * @return string  The complete ruleset of the specified user.
+     */
+    public function getScript()
+    {
+        $res = $this->_connect();
+        if (is_a($res, 'PEAR_Error')) {
+            return $res;
+        }
+        $active = $this->_sieve->getActive();
+        if (empty($active)) {
+            return '';
+        }
+        return $this->_sieve->getScript($active);
+    }
+
+}
diff --git a/ingo/lib/Driver/vfs.php b/ingo/lib/Driver/vfs.php
new file mode 100644 (file)
index 0000000..257a97c
--- /dev/null
@@ -0,0 +1,143 @@
+<?php
+/**
+ * Ingo_Driver_vfs:: Implements an Ingo storage driver using Horde VFS.
+ *
+ * Copyright 2003-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Brent J. Nordquist <bjn@horde.org>
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Ingo
+ */
+class Ingo_Driver_vfs extends Ingo_Driver
+{
+    /**
+     * Constructs a new VFS-based storage driver.
+     *
+     * @param array $params  A hash containing driver parameters.
+     */
+    public function __construct($params = array())
+    {
+        $this->_support_shares = true;
+
+        $default_params = array(
+            'hostspec' => 'localhost',
+            'port'     => 21,
+            'filename' => '.ingo_filter',
+            'vfstype'  => 'ftp',
+            'vfs_path' => '',
+            'vfs_forward_path' => '',
+        );
+
+        parent::__construct(array_merge($default_params, $params));
+    }
+
+    /**
+     * Sets a script running on the backend.
+     *
+     * @param string $script  The filter script
+     *
+     * @return mixed  True on success, or PEAR_Error on failure.
+     */
+    public function setScriptActive($script)
+    {
+        $result = $this->_connect();
+        if (is_a($result, 'PEAR_Error')) {
+            return $result;
+        }
+
+        if (empty($script)) {
+            $result = $this->_vfs->deleteFile($this->_params['vfs_path'], $this->_params['filename']);
+        } else {
+            $result = $this->_vfs->writeData($this->_params['vfs_path'], $this->_params['filename'], $script, true);
+        }
+        if (is_a($result, 'PEAR_Error')) {
+            return $result;
+        }
+
+        if (isset($this->_params['file_perms']) && !empty($script)) {
+            $result = $this->_vfs->changePermissions($this->_params['vfs_path'], $this->_params['filename'], $this->_params['file_perms']);
+            if (is_a($result, 'PEAR_Error')) {
+                return $result;
+            }
+        }
+
+        // Get the backend; necessary if a .forward is needed for
+        // procmail.
+        $backend = Ingo::getBackend();
+        if ($backend['script'] == 'procmail' && isset($backend['params']['forward_file']) && isset($backend['params']['forward_string'])) {
+            if (empty($script)) {
+                $result = $this->_vfs->deleteFile($this->_params['vfs_forward_path'], $backend['params']['forward_file']);
+            } else {
+                $result = $this->_vfs->writeData($this->_params['vfs_forward_path'], $backend['params']['forward_file'], $backend['params']['forward_string'], true);
+            }
+            if (is_a($result, 'PEAR_Error')) {
+                return $result;
+            }
+
+            if (isset($this->_params['file_perms']) && !empty($script)) {
+                $result = $this->_vfs->changePermissions($this->_params['vfs_forward_path'], $backend['params']['forward_file'], $this->_params['file_perms']);
+                if (is_a($result, 'PEAR_Error')) {
+                    return $result;
+                }
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns the content of the currently active script.
+     *
+     * @return string  The complete ruleset of the specified user.
+     */
+    public function getScript()
+    {
+        $result = $this->_connect();
+        if (is_a($result, 'PEAR_Error')) {
+            return $result;
+        }
+        return $this->_vfs->read('', $this->_params['vfs_path'] . '/' . $this->_params['filename']);
+    }
+
+    /**
+     * Connect to the VFS server.
+     *
+     * @return boolean  True on success, PEAR_Error on false.
+     */
+    protected function _connect()
+    {
+        /* Do variable substitution. */
+        if (!empty($this->_params['vfs_path'])) {
+            $user = Ingo::getUser();
+            $domain = Ingo::getDomain();
+            if ($_SESSION['ingo']['backend']['hordeauth'] !== 'full') {
+                $pos = strpos($user, '@');
+                if ($pos !== false) {
+                    $domain = substr($user, $pos + 1);
+                    $user = substr($user, 0, $pos);
+                }
+            }
+            $this->_params['vfs_path'] = str_replace(
+                array('%u', '%d', '%U'),
+                array($user, $domain, $this->_params['username']),
+                $this->_params['vfs_path']);
+        }
+
+        if (!empty($this->_vfs)) {
+            return true;
+        }
+
+        $this->_vfs = &VFS::singleton($this->_params['vfstype'], $this->_params);
+        if (is_a($this->_vfs, 'PEAR_Error')) {
+            $error = $this->_vfs;
+            $this->_vfs = null;
+            return $error;
+        } else {
+            return true;
+        }
+    }
+
+}
diff --git a/ingo/lib/Ingo.php b/ingo/lib/Ingo.php
new file mode 100644 (file)
index 0000000..46a7ca2
--- /dev/null
@@ -0,0 +1,424 @@
+<?php
+/**
+ * Ingo base class.
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Ingo
+ */
+class Ingo
+{
+    /**
+     * String that can't be a valid folder name used to mark blacklisted email
+     * as deleted.
+     */
+    const BLACKLIST_MARKER = '++DELETE++';
+
+    /**
+     * Define the key to use to indicate a user-defined header is requested.
+     */
+    const USER_HEADER = '++USER_HEADER++';
+
+    /**
+     * Generates a folder widget.
+     * If an application is available that provides a folderlist method
+     * then a &lt;select&gt; input is created else a simple text field
+     * is returned.
+     *
+     * @param string $value    The current value for the field.
+     * @param string $form     The form name for the newFolderName() call.
+     * @param string $tagname  The label for the select tag.
+     * @param string $onchange Javascript code to execute onchange.
+     *
+     * @return string  The HTML to render the field.
+     */
+    static public function flistSelect($value = null, $form = null,
+                                       $tagname = 'actionvalue',
+                                       $onchange = null)
+    {
+        global $conf, $registry;
+
+        if (!empty($conf['rules']['usefolderapi']) &&
+            $registry->hasMethod('mail/folderlist')) {
+            $mailboxes = $registry->call('mail/folderlist');
+            if (!is_a($mailboxes, 'PEAR_Error')) {
+                $createfolder = $registry->hasMethod('mail/createFolder');
+
+                $text = '<select id="' . $tagname . '" name="' . $tagname . '"';
+                if ($createfolder || $onchange) {
+                    $text .= ' onchange="';
+                    if ($onchange) {
+                        $text .= $onchange . ';';
+                    }
+                    if ($createfolder) {
+                        $text .= 'newFolderName(\'' . $form . '\', \'' .
+                            $tagname . '\');';
+                    }
+                    $text .= '"';
+                }
+                $text .= ">\n";
+                $text .= '<option value="">' . _("Select target folder:") . "</option>\n";
+
+                if ($registry->hasMethod('mail/createFolder')) {
+                    $text .= '<option value="">' . _("Create new folder") . "</option>\n";
+                }
+
+                require_once 'Horde/Text.php';
+
+                foreach ($mailboxes as $mbox) {
+                    $sel = ($mbox['val'] && ($mbox['val'] === $value)) ? ' selected="selected"' : '';
+                    $disabled = empty($mbox['val']) ? ' disabled="disabled"' : '';
+                    $val = htmlspecialchars($mbox['val']);
+                    $label = $mbox['abbrev'];
+                    $text .= sprintf('<option%s value="%s"%s>%s</option>%s',
+                                     $disabled, $val, $sel,
+                                     Text::htmlSpaces($label), "\n");
+                }
+
+                $text .= '</select>';
+                return $text;
+            }
+        }
+
+        return '<input id="' . $tagname . '" name="' . $tagname . '" size="40" value="' . $value . '" />';
+    }
+
+    /**
+     * Creates a new IMAP folder via an api call.
+     *
+     * @param string $folder  The name of the folder to create.
+     *
+     * @return boolean  True on success, false if not created, PEAR_Error on
+     *                  failure.
+     */
+    static public function createFolder($folder)
+    {
+        return $GLOBALS['registry']->hasMethod('mail/createFolder')
+            ? $GLOBALS['registry']->call('mail/createFolder', array('folder' => String::convertCharset($folder, NLS::getCharset(), 'UTF7-IMAP')));
+            : false;
+    }
+
+    /**
+     * Returns the user whose rules are currently being edited.
+     *
+     * @param boolean $full  Always return the full user name with realm?
+     *
+     * @return string  The current user.
+     */
+    static public function getUser($full = true)
+    {
+        if (empty($GLOBALS['ingo_shares'])) {
+            $user = ($full ||
+                     (isset($_SESSION['ingo']['backend']['hordeauth']) &&
+                      $_SESSION['ingo']['backend']['hordeauth'] === 'full')) ?
+                Auth::getAuth() :
+                Auth::getBareAuth();
+        } else {
+            list(, $user) = explode(':', $_SESSION['ingo']['current_share'], 2);
+        }
+
+        return $user;
+    }
+
+    /**
+     * Returns the domain name, if any of the user whose rules are currently
+     * being edited.
+     *
+     * @return string  The current user's domain name.
+     */
+    static public function getDomain()
+    {
+        $user = self::getUser(true);
+        $pos = strpos($user, '@');
+
+        return ($pos !== false)
+            ? substr($user, $pos + 1)
+            : false;
+    }
+
+    /**
+     * Connects to the backend and uploads the script and sets it active.
+     *
+     * @param string $script       The script to set active.
+     * @param boolean $deactivate  If true, notification will identify the
+     *                             script as deactivated instead of activated.
+     *
+     * @return boolean  True on success, false on failure.
+     */
+    static public function activateScript($script, $deactivate = false)
+    {
+        global $notification;
+
+        $driver = self::getDriver();
+        $res = $driver->setScriptActive($script);
+        if (is_a($res, 'PEAR_Error')) {
+            $msg = ($deactivate)
+              ? _("There was an error deactivating the script.")
+              : _("There was an error activating the script.");
+            $notification->push($msg . ' ' . _("The driver said: ") . $res->getMessage(), 'horde.error');
+            return false;
+        } elseif ($res === true) {
+            $msg = ($deactivate)
+              ? _("Script successfully deactivated.")
+              : _("Script successfully activated.");
+            $notification->push($msg, 'horde.success');
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Connects to the backend and returns the currently active script.
+     *
+     * @return string  The currently active script.
+     */
+    static public function getScript()
+    {
+        $driver = self::getDriver();
+        return $driver->getScript();
+    }
+
+    /**
+     * Does all the work in updating the script on the server.
+     */
+    static public function updateScript()
+    {
+        global $notification;
+
+        if ($_SESSION['ingo']['script_generate']) {
+            $ingo_script = self::loadIngoScript();
+            if (!$ingo_script) {
+                $notification->push(_("Script not updated."), 'horde.error');
+            } else {
+                /* Generate and activate the script. */
+                $script = $ingo_script->generate();
+                self::activateScript($script);
+            }
+        }
+    }
+
+    /**
+     * Determine the backend to use.
+     *
+     * This decision is based on the global 'SERVER_NAME' and 'HTTP_HOST'
+     * server variables and the contents of the 'preferred' either field
+     * in the backend's definition.  The 'preferred' field may take a
+     * single value or an array of multiple values.
+     *
+     * @return array  The backend entry.
+     *                Calls Horde::fatal() on error.
+     */
+    static public function getBackend()
+    {
+        include INGO_BASE . '/config/backends.php';
+        if (!isset($backends) || !is_array($backends)) {
+            Horde::fatal(PEAR::raiseError(_("No backends configured in backends.php")), __FILE__, __LINE__);
+        }
+
+        $backend = null;
+        foreach ($backends as $name => $temp) {
+            if (!isset($backend)) {
+                $backend = $name;
+            } elseif (!empty($temp['preferred'])) {
+                if (is_array($temp['preferred'])) {
+                    foreach ($temp['preferred'] as $val) {
+                        if (($val == $_SERVER['SERVER_NAME']) ||
+                            ($val == $_SERVER['HTTP_HOST'])) {
+                            $backend = $name;
+                        }
+                    }
+                } elseif (($temp['preferred'] == $_SERVER['SERVER_NAME']) ||
+                          ($temp['preferred'] == $_SERVER['HTTP_HOST'])) {
+                    $backend = $name;
+                }
+            }
+        }
+
+        /* Check for valid backend configuration. */
+        if (!isset($backend)) {
+            Horde::fatal(PEAR::raiseError(_("No backend configured for this host")), __FILE__, __LINE__);
+        }
+
+        $backends[$backend]['id'] = $name;
+        $backend = $backends[$backend];
+
+        if (empty($backend['script'])) {
+            Horde::fatal(PEAR::raiseError(sprintf(_("No \"%s\" element found in backend configuration."), 'script')), __FILE__, __LINE__);
+        } elseif (empty($backend['driver'])) {
+            Horde::fatal(PEAR::raiseError(sprintf(_("No \"%s\" element found in backend configuration."), 'driver')), __FILE__, __LINE__);
+        }
+
+        /* Make sure the 'params' entry exists. */
+        if (!isset($backend['params'])) {
+            $backend['params'] = array();
+        }
+
+        return $backend;
+    }
+
+    /**
+     * Loads a Ingo_Script:: backend and checks for errors.
+     *
+     * @return Ingo_Script  Script object on success, PEAR_Error on failure.
+     */
+    static public function loadIngoScript()
+    {
+        $ingo_script = Ingo_Script::factory($_SESSION['ingo']['backend']['script'],
+                                            isset($_SESSION['ingo']['backend']['scriptparams']) ? $_SESSION['ingo']['backend']['scriptparams'] : array());
+        if (is_a($ingo_script, 'PEAR_Error')) {
+            Horde::fatal($ingo_script, __FILE__, __LINE__);
+        }
+
+        return $ingo_script;
+    }
+
+    /**
+     * Returns an instance of the configured driver.
+     *
+     * @return Ingo_Driver  The configured driver.
+     */
+    static public function getDriver()
+    {
+        $params = $_SESSION['ingo']['backend']['params'];
+
+        // Set authentication parameters.
+        if (!empty($_SESSION['ingo']['backend']['hordeauth'])) {
+            $params['username'] = ($_SESSION['ingo']['backend']['hordeauth'] === 'full')
+                        ? Auth::getAuth() : Auth::getBareAuth();
+            $params['password'] = Auth::getCredential('password');
+        } elseif (isset($_SESSION['ingo']['backend']['params']['username']) &&
+                  isset($_SESSION['ingo']['backend']['params']['password'])) {
+            $params['username'] = $_SESSION['ingo']['backend']['params']['username'];
+            $params['password'] = $_SESSION['ingo']['backend']['params']['password'];
+        } else {
+            $params['username'] = Auth::getBareAuth();
+            $params['password'] = Auth::getCredential('password');
+        }
+
+        return Ingo_Driver::factory($_SESSION['ingo']['backend']['driver'], $params);
+    }
+
+    /**
+     * Returns all rulesets a user has access to, according to several
+     * parameters/permission levels.
+     *
+     * @param boolean $owneronly   Only return rulesets that this user owns?
+     *                             Defaults to false.
+     * @param integer $permission  The permission to filter rulesets by.
+     *
+     * @return array  The ruleset list.
+     */
+    static public function listRulesets($owneronly = false,
+                                        $permission = PERMS_SHOW)
+    {
+        $rulesets = $GLOBALS['ingo_shares']->listShares(Auth::getAuth(), $permission, $owneronly ? Auth::getAuth() : null);
+        if (is_a($rulesets, 'PEAR_Error')) {
+            Horde::logMessage($rulesets, __FILE__, __LINE__, PEAR_LOG_ERR);
+            return array();
+        }
+
+        return $rulesets;
+    }
+
+    /**
+     * Returns the specified permission for the current user.
+     *
+     * @param string $permission  A permission, either 'allow_rules' or
+     *                            'max_rules'.
+     *
+     * @return mixed  The value of the specified permission.
+     */
+    static public function hasPermission($permission, $mask = null)
+    {
+        if ($permission == 'shares') {
+            if (!isset($GLOBALS['ingo_shares'])) {
+                return true;
+            }
+            static $all_perms;
+            if (!isset($all_perms)) {
+                $all_perms = $GLOBALS['ingo_shares']->getPermissions($_SESSION['ingo']['current_share'], Auth::getAuth());
+            }
+            return $all_perms & $mask;
+        }
+
+        global $perms;
+
+        if (!$perms->exists('ingo:' . $permission)) {
+            return true;
+        }
+
+        $allowed = $perms->getPermissions('ingo:' . $permission);
+        if (is_array($allowed)) {
+            switch ($permission) {
+            case 'allow_rules':
+                $allowed = (bool)count(array_filter($allowed));
+                break;
+
+            case 'max_rules':
+                $allowed = max($allowed);
+                break;
+            }
+        }
+
+        return $allowed;
+    }
+
+    /**
+     * Returns whether an address is empty or only contains a "@".
+     * Helper function for array_filter().
+     *
+     * @param string $address  An email address to test.
+     *
+     * @return boolean  True if the address is not empty.
+     */
+    static protected function _filterEmptyAddress($address)
+    {
+        $address = trim($address);
+        return !empty($address) && $address != '@';
+    }
+
+    /**
+     * Build Ingo's list of menu items.
+     */
+    static public function getMenu($returnType = 'object')
+    {
+        require_once 'Horde/Menu.php';
+
+        $menu = new Menu();
+        $menu->add(Horde::applicationUrl('filters.php'), _("Filter _Rules"), 'ingo.png', null, null, null, basename($_SERVER['PHP_SELF']) == 'index.php' ? 'current' : null);
+        if (!is_a($whitelist_url = $GLOBALS['registry']->link('mail/showWhitelist'), 'PEAR_Error')) {
+            $menu->add(Horde::url($whitelist_url), _("_Whitelist"), 'whitelist.png');
+        }
+        if (!is_a($blacklist_url = $GLOBALS['registry']->link('mail/showBlacklist'), 'PEAR_Error')) {
+            $menu->add(Horde::url($blacklist_url), _("_Blacklist"), 'blacklist.png');
+        }
+        if (in_array(INGO_STORAGE_ACTION_VACATION, $_SESSION['ingo']['script_categories'])) {
+            $menu->add(Horde::applicationUrl('vacation.php'), _("_Vacation"), 'vacation.png');
+        }
+        if (in_array(INGO_STORAGE_ACTION_FORWARD, $_SESSION['ingo']['script_categories'])) {
+            $menu->add(Horde::applicationUrl('forward.php'), _("_Forward"), 'forward.png');
+        }
+        if (in_array(INGO_STORAGE_ACTION_SPAM, $_SESSION['ingo']['script_categories'])) {
+            $menu->add(Horde::applicationUrl('spam.php'), _("S_pam"), 'spam.png');
+        }
+        if ($_SESSION['ingo']['script_generate'] &&
+            (!$GLOBALS['prefs']->isLocked('auto_update') ||
+             !$GLOBALS['prefs']->getValue('auto_update'))) {
+            $menu->add(Horde::applicationUrl('script.php'), _("_Script"), 'script.png');
+        }
+        if (!empty($GLOBALS['ingo_shares']) && empty($GLOBALS['conf']['share']['no_sharing'])) {
+            $menu->add('#', _("_Permissions"), 'perms.png', $GLOBALS['registry']->getImageDir('horde'), '', 'popup(\'' . Util::addParameter(Horde::url($GLOBALS['registry']->get('webroot', 'horde') . '/services/shares/edit.php', true), array('app' => 'ingo', 'share' => htmlspecialchars($_SESSION['ingo']['backend']['id'] . ':' . Auth::getAuth())), null, false) . '\');return false;');
+        }
+
+        if ($returnType == 'object') {
+            return $menu;
+        } else {
+            return $menu->render();
+        }
+    }
+
+}
diff --git a/ingo/lib/Script.php b/ingo/lib/Script.php
new file mode 100644 (file)
index 0000000..9966d4a
--- /dev/null
@@ -0,0 +1,339 @@
+<?php
+/**
+ * The Ingo_Script:: class provides a common abstracted interface to the
+ * script-generation subclasses.
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Brent J. Nordquist <bjn@horde.org>
+ * @package Ingo
+ */
+class Ingo_Script
+{
+    /**
+     * Only filter unseen messages.
+     */
+    const INGO_SCRIPT_FILTER_UNSEEN = 1;
+
+    /**
+     * Only filter seen messages.
+     */
+    const INGO_SCRIPT_FILTER_SEEN = 2;
+
+    /**
+     * The script class' additional parameters.
+     *
+     * @var array
+     */
+    protected $_params = array();
+
+    /**
+     * The list of actions allowed (implemented) for this driver.
+     * This SHOULD be defined in each subclass.
+     *
+     * @var array
+     */
+    protected $_actions = array();
+
+    /**
+     * The categories of filtering allowed.
+     * This SHOULD be defined in each subclass.
+     *
+     * @var array
+     */
+    protected $_categories = array();
+
+    /**
+     * The list of tests allowed (implemented) for this driver.
+     * This SHOULD be defined in each subclass.
+     *
+     * @var array
+     */
+    protected $_tests = array();
+
+    /**
+     * The types of tests allowed (implemented) for this driver.
+     * This SHOULD be defined in each subclass.
+     *
+     * @var array
+     */
+    protected $_types = array();
+
+    /**
+     * A list of any special types that this driver supports.
+     *
+     * @var array
+     */
+    protected $_special_types = array();
+
+    /**
+     * Can tests be case sensitive?
+     *
+     * @var boolean
+     */
+    protected $_casesensitive = false;
+
+    /**
+     * Does the driver support setting IMAP flags?
+     *
+     * @var boolean
+     */
+    protected $_supportIMAPFlags = false;
+
+    /**
+     * Does the driver support the stop-script option?
+     *
+     * @var boolean
+     */
+    protected $_supportStopScript = false;
+
+    /**
+     * Can this driver perform on demand filtering?
+     *
+     * @var boolean
+     */
+    protected $_ondemand = false;
+
+    /**
+     * Does the driver require a script file to be generated?
+     *
+     * @var boolean
+     */
+    protected $_scriptfile = false;
+
+    /**
+     * Attempts to return a concrete Ingo_Script instance based on $script.
+     *
+     * @param string $script  The type of Ingo_Script subclass to return.
+     * @param array $params   Hash containing additional paramters to be passed
+     *                        to the subclass' constructor.
+     *
+     * @return Ingo_Script  The newly created concrete Ingo_Script instance, or
+     *                      false on error.
+     */
+    static public function factory($script, $params = array())
+    {
+        $script = basename($script);
+        $class = 'Ingo_Script_' . $script;
+
+        return class_exists($class)
+            ? new $class($params)
+            : PEAR::raiseError(sprintf(_("Unable to load the definition of %s."), $class));
+    }
+
+    /**
+     * Constructor.
+     *
+     * @param array $params  A hash containing parameters needed.
+     */
+    public function __construct($params = array())
+    {
+        global $registry;
+
+        $this->_params = $params;
+
+        /* Determine if ingo should handle the blacklist. */
+        $key = array_search(Ingo_Storage::ACTION_BLACKLIST, $this->_categories);
+        if ($key !== false && ($registry->hasMethod('mail/blacklistFrom') != 'ingo')) {
+            unset($this->_categories[$key]);
+        }
+
+        /* Determine if ingo should handle the whitelist. */
+        $key = array_search(Ingo_Storage::ACTION_WHITELIST, $this->_categories);
+        if ($key !== false && ($registry->hasMethod('mail/whitelistFrom') != 'ingo')) {
+            unset($this->_categories[$key]);
+        }
+    }
+
+    /**
+     * Returns a regular expression that should catch mails coming from most
+     * daemons, mailing list, newsletters, and other bulk.
+     *
+     * This is the expression used for procmail's FROM_DAEMON, including all
+     * mailinglist headers.
+     *
+     * @return string  A regular expression.
+     */
+    public function excludeRegexp()
+    {
+        return '(^(Mailing-List:|List-(Id|Help|Unsubscribe|Subscribe|Owner|Post|Archive):|Precedence:.*(junk|bulk|list)|To: Multiple recipients of|(((Resent-)?(From|Sender)|X-Envelope-From):|>?From)([^>]*[^(.%@a-z0-9])?(Post(ma?(st(e?r)?|n)|office)|(send)?Mail(er)?|daemon|m(mdf|ajordomo)|n?uucp|LIST(SERV|proc)|NETSERV|o(wner|ps)|r(e(quest|sponse)|oot)|b(ounce|bs\.smtp)|echo|mirror|s(erv(ices?|er)|mtp(error)?|ystem)|A(dmin(istrator)?|MMGR|utoanswer))(([^).!:a-z0-9][-_a-z0-9]*)?[%@>\t ][^<)]*(\(.*\).*)?)?$([^>]|$)))';
+    }
+
+    /**
+     * Returns the available actions for this driver.
+     *
+     * @return array  The list of available actions.
+     */
+    public function availableActions()
+    {
+        return $this->_actions;
+    }
+
+    /**
+     * Returns the available categories for this driver.
+     *
+     * @return array  The list of categories.
+     */
+    public function availableCategories()
+    {
+        return $this->_categories;
+    }
+
+    /**
+     * Returns the available tests for this driver.
+     *
+     * @return array  The list of tests actions.
+     */
+    public function availableTests()
+    {
+        return $this->_tests;
+    }
+
+    /**
+     * Returns the available test types for this driver.
+     *
+     * @return array  The list of test types.
+     */
+    public function availableTypes()
+    {
+        return $this->_types;
+    }
+
+    /**
+     * Returns any test types that are special for this driver.
+     *
+     * @return array  The list of special types
+     */
+    public function specialTypes()
+    {
+        return $this->_special_types;
+    }
+
+    /**
+     * Returns if this driver allows case sensitive searches.
+     *
+     * @return boolean  Does this driver allow case sensitive searches?
+     */
+    public function caseSensitive()
+    {
+        return $this->_casesensitive;
+    }
+
+    /**
+     * Returns if this driver allows IMAP flags to be set.
+     *
+     * @return boolean  Does this driver allow IMAP flags to be set?
+     */
+    public function imapFlags()
+    {
+        return $this->_supportIMAPFlags;
+    }
+
+    /**
+     * Returns if this driver supports the stop-script option.
+     *
+     * @return boolean  Does this driver support the stop-script option?
+     */
+    public function stopScript()
+    {
+        return $this->_supportStopScript;
+    }
+
+    /**
+     * Returns a script previously generated with generate().
+     *
+     * @abstract
+     *
+     * @return string  The script.
+     */
+    public function toCode()
+    {
+        return '';
+    }
+
+    /**
+     * Can this driver generate a script file?
+     *
+     * @return boolean  True if generate() is available, false if not.
+     */
+    public function generateAvailable()
+    {
+        return $this->_scriptfile;
+    }
+
+    /**
+     * Generates the script to do the filtering specified in
+     * the rules.
+     *
+     * @abstract
+     *
+     * @return string  The script.
+     */
+    public function generate()
+    {
+        return '';
+    }
+
+    /**
+     * Can this driver perform on demand filtering?
+     *
+     * @return boolean  True if perform() is available, false if not.
+     */
+    public function performAvailable()
+    {
+        return $this->_ondemand;
+    }
+
+    /**
+     * Perform the filtering specified in the rules.
+     *
+     * @abstract
+     *
+     * @param array $params  The parameter array.
+     *
+     * @return boolean  True if filtering performed, false if not.
+     */
+    public function perform($params = array())
+    {
+        return false;
+    }
+
+    /**
+     * Is the apply() function available?
+     *
+     * @return boolean  True if apply() is available, false if not.
+     */
+    public function canApply()
+    {
+        return $this->performAvailable();
+    }
+
+    /**
+     * Apply the filters now.
+     * This is essentially a wrapper around perform() that allows that
+     * function to be called from within Ingo ensuring that all necessary
+     * parameters are set.
+     *
+     * @abstract
+     *
+     * @return boolean  See perform().
+     */
+    public function apply()
+    {
+        return $this->perform();
+    }
+
+    /**
+     * Is this a valid rule?
+     *
+     * @param integer $type  The rule type.
+     *
+     * @return boolean  Whether the rule is valid or not for this driver.
+     */
+    protected function _validRule($type)
+    {
+        return (!empty($type) && in_array($type, array_merge($this->_categories, $this->_actions)));
+    }
+
+}
diff --git a/ingo/lib/Script/imap.php b/ingo/lib/Script/imap.php
new file mode 100644 (file)
index 0000000..ad57e37
--- /dev/null
@@ -0,0 +1,463 @@
+<?php
+/**
+ * The Ingo_Script_imap:: class represents an IMAP client-side script
+ * generator.
+ *
+ * $Horde: ingo/lib/Script/imap.php,v 1.76 2009/01/19 18:10:01 mrubinsk Exp $
+ *
+ * Copyright 2003-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Michael Slusarz <slusarz@horde.org>
+ * @package Ingo
+ */
+class Ingo_Script_imap extends Ingo_Script {
+
+    /**
+     * The list of actions allowed (implemented) for this driver.
+     *
+     * @var array
+     */
+    var $_actions = array(
+        Ingo_Storage::ACTION_KEEP,
+        Ingo_Storage::ACTION_MOVE,
+        Ingo_Storage::ACTION_DISCARD,
+        Ingo_Storage::ACTION_MOVEKEEP
+    );
+
+    /**
+     * The categories of filtering allowed.
+     *
+     * @var array
+     */
+    var $_categories = array(
+        Ingo_Storage::ACTION_BLACKLIST,
+        Ingo_Storage::ACTION_WHITELIST
+    );
+
+    /**
+     * The list of tests allowed (implemented) for this driver.
+     *
+     * @var array
+     */
+    var $_tests = array(
+        'contains', 'not contain'
+    );
+
+    /**
+     * The types of tests allowed (implemented) for this driver.
+     *
+     * @var array
+     */
+    var $_types = array(
+        Ingo_Storage::TYPE_HEADER,
+        Ingo_Storage::TYPE_SIZE,
+        Ingo_Storage::TYPE_BODY
+    );
+
+    /**
+     * Does the driver support setting IMAP flags?
+     *
+     * @var boolean
+     */
+    var $_supportIMAPFlags = true;
+
+    /**
+     * Does the driver support the stop-script option?
+     *
+     * @var boolean
+     */
+    var $_supportStopScript = true;
+
+    /**
+     * This driver can perform on demand filtering (in fact, that is all
+     * it can do).
+     *
+     * @var boolean
+     */
+    var $_ondemand = true;
+
+    /**
+     * The API to use for IMAP functions.
+     *
+     * @var Ingo_Script_imap_api
+     */
+    var $_api;
+
+    /**
+     * Perform the filtering specified in the rules.
+     *
+     * @param array $params  The parameter array. It MUST contain:
+     * <pre>
+     * 'imap'     --  An open IMAP stream.
+     * 'mailbox'  --  The name of the mailbox to filter.
+     * </pre>
+     *
+     * @return boolean  True if filtering performed, false if not.
+     */
+    function perform($params)
+    {
+        global $ingo_storage, $notification, $prefs;
+
+        if (empty($params['api'])) {
+            $this->_api = Ingo_Script_imap_api::factory('live', $params);
+        } else {
+            $this->_api = &$params['api'];
+        }
+
+        /* Indices that will be ignored by subsequent rules. */
+        $ignore_ids = array();
+
+        /* Only do filtering if:
+           1. We have not done filtering before -or-
+           2. The mailbox has changed -or-
+           3. The rules have changed. */
+        $cache = $this->_api->getCache();
+        if (($cache !== false) && ($cache == $_SESSION['ingo']['change'])) {
+            return true;
+        }
+
+        /* Grab the rules list. */
+        $filters = &$ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS);
+
+        /* Should we filter only [un]seen messages? */
+        $seen_flag = $prefs->getValue('filter_seen');
+
+        /* Should we use detailed notification messages? */
+        $detailmsg = $prefs->getValue('show_filter_msg');
+
+        /* Parse through the rules, one-by-one. */
+        foreach ($filters->getFilterlist() as $rule) {
+            /* Check to make sure this is a valid rule and that the rule is
+               not disabled. */
+            if (!$this->_validRule($rule['action']) ||
+                !empty($rule['disable'])) {
+                continue;
+            }
+
+            $search_array = array();
+
+            switch ($rule['action']) {
+            case Ingo_Storage::ACTION_BLACKLIST:
+            case Ingo_Storage::ACTION_WHITELIST:
+                $bl_folder = null;
+
+                if ($rule['action'] == Ingo_Storage::ACTION_BLACKLIST) {
+                    $blacklist = &$ingo_storage->retrieve(Ingo_Storage::ACTION_BLACKLIST);
+                    $addr = $blacklist->getBlacklist();
+                    $bl_folder = $blacklist->getBlacklistFolder();
+                } else {
+                    $whitelist = &$ingo_storage->retrieve(Ingo_Storage::ACTION_WHITELIST);
+                    $addr = $whitelist->getWhitelist();
+                }
+
+                /* If list is empty, move on. */
+                if (empty($addr)) {
+                    continue;
+                }
+
+                $query = new Ingo_IMAP_Search_Query();
+                foreach ($addr as $val) {
+                    $ob = new Ingo_IMAP_Search_Query();
+                    $ob->deleted(false);
+                    if ($seen_flag == Ingo_Script::FILTER_UNSEEN) {
+                        $ob->seen(false);
+                    } elseif ($seen_flag == Ingo_Script::FILTER_SEEN) {
+                        $ob->seen(true);
+                    }
+                    $ob->header('from', $val);
+                    $search_array[] = $ob;
+                }
+                $query->imapOr($search_array);
+                $indices = $this->_api->search($query);
+
+                /* Remove any indices that got in there by way of partial
+                 * address match. */
+                $sequence = implode(',', $indices);
+                $msgs = $this->_api->fetchMessageOverviews($sequence);
+                foreach ($msgs as $msg) {
+                    $from_addr = MIME::bareAddress($msg->from);
+                    $found = false;
+                    foreach ($addr as $val) {
+                        if (strtolower($from_addr) == strtolower($val)) {
+                            $found = true;
+                        }
+                    }
+                    if (!$found) {
+                        $indices = array_diff($indices, array($msg->uid));
+                    }
+                }
+
+                if ($rule['action'] == Ingo_Storage::ACTION_BLACKLIST) {
+                    $indices = array_diff($indices, $ignore_ids);
+                    if (!empty($indices)) {
+                        $sequence = implode(',', $indices);
+                        if (!empty($bl_folder)) {
+                            $this->_api->moveMessages($sequence, $bl_folder);
+                        } else {
+                            $this->_api->deleteMessages($sequence);
+                        }
+                        $this->_api->expunge($indices);
+                        $notification->push(sprintf(_("Filter activity: %s message(s) that matched the blacklist were deleted."), count($indices)), 'horde.message');
+                    }
+                } else {
+                    $ignore_ids = $indices;
+                }
+                break;
+
+            case Ingo_Storage::ACTION_KEEP:
+            case Ingo_Storage::ACTION_MOVE:
+            case Ingo_Storage::ACTION_DISCARD:
+                $query = new Ingo_IMAP_Search_Query();
+                foreach ($rule['conditions'] as $val) {
+                    $ob = new Ingo_IMAP_Search_Query();
+                    $ob->deleted(false);
+                    if ($seen_flag == Ingo_Script::FILTER_UNSEEN) {
+                        $ob->seen(false);
+                    } elseif ($seen_flag == Ingo_Script::FILTER_SEEN) {
+                        $ob->seen(true);
+                    }
+                    if (!empty($val['type']) &&
+                        ($val['type'] == Ingo_Storage::TYPE_SIZE)) {
+                        if ($val['match'] == 'greater than') {
+                            $operator = '>';
+                        } elseif ($val['match'] == 'less than') {
+                            $operator = '<';
+                        }
+                        $ob->size($val['value'], $operator);
+                    } elseif (!empty($val['type']) &&
+                              ($val['type'] == Ingo_Storage::TYPE_BODY)) {
+                        if ($val['match'] == 'contains') {
+                            $ob->body($val['value'], false);
+                        } elseif ($val['match'] == 'not contain') {
+                            $ob->body($val['value'], true);
+                        }
+                    } else {
+                        if ($val['match'] == 'contains') {
+                            $ob->header($val['field'], $val['value'], false);
+                        } elseif ($val['match'] == 'not contain') {
+                            $ob->header($val['field'], $val['value'], true);
+                        }
+                    }
+                    $search_array[] = $ob;
+                }
+
+                if ($rule['combine'] == Ingo_Storage::COMBINE_ALL) {
+                    $query->imapAnd($search_array);
+                } else {
+                    $query->imapOr($search_array);
+                }
+
+                $indices = $this->_api->search($query);
+
+                if (($indices = array_diff($indices, $ignore_ids))) {
+                    if ($rule['stop']) {
+                        /* If the stop action is set, add these
+                         * indices to the list of ids that will be
+                         * ignored by subsequent rules. */
+                        $ignore_ids = array_unique($indices + $ignore_ids);
+                    }
+
+                    $sequence = implode(',', $indices);
+
+                    /* Set the flags. */
+                    if (!empty($rule['flags']) &&
+                        ($rule['action'] != Ingo_Storage::ACTION_DISCARD)) {
+                        $flags = array();
+                        if ($rule['flags'] & Ingo_Storage::FLAG_ANSWERED) {
+                            $flags[] = '\\Answered';
+                        }
+                        if ($rule['flags'] & Ingo_Storage::FLAG_DELETED) {
+                            $flags[] = '\\Deleted';
+                        }
+                        if ($rule['flags'] & Ingo_Storage::FLAG_FLAGGED) {
+                            $flags[] = '\\Flagged';
+                        }
+                        if ($rule['flags'] & Ingo_Storage::FLAG_SEEN) {
+                            $flags[] = '\\Seen';
+                        }
+                        $this->_api->setMessageFlags($sequence,
+                                                     implode(' ', $flags));
+                    }
+
+                    if ($rule['action'] == Ingo_Storage::ACTION_KEEP) {
+                        /* Add these indices to the ignore list. */
+                        $ignore_ids = array_unique($indices + $ignore_ids);
+                    } elseif ($rule['action'] == Ingo_Storage::ACTION_MOVE) {
+                        /* We need to grab the overview first. */
+                        if ($detailmsg) {
+                            $overview = $this->_api->fetchMessageOverviews($sequence);
+                        }
+
+                        /* Move the messages to the requested mailbox. */
+                        $this->_api->moveMessages($sequence,
+                                                  $rule['action-value']);
+                        $this->_api->expunge($indices);
+
+                        /* Display notification message(s). */
+                        if ($detailmsg) {
+                            foreach ($overview as $msg) {
+                                $notification->push(
+                                    sprintf(_("Filter activity: The message \"%s\" from \"%s\" has been moved to the folder \"%s\"."),
+                                            isset($msg->subject) ? MIME::decode($msg->subject, NLS::getCharset()) : _("[No Subject]"),
+                                            isset($msg->from) ? MIME::decode($msg->from, NLS::getCharset()) : _("[No Sender]"),
+                                            String::convertCharset($rule['action-value'], 'UTF7-IMAP', NLS::getCharset())),
+                                    'horde.message');
+                            }
+                        } else {
+                            $notification->push(sprintf(_("Filter activity: %s message(s) have been moved to the folder \"%s\"."),
+                                                        count($indices),
+                                                        String::convertCharset($rule['action-value'], 'UTF7-IMAP', NLS::getCharset())), 'horde.message');
+                        }
+                    } elseif ($rule['action'] == Ingo_Storage::ACTION_DISCARD) {
+                        /* We need to grab the overview first. */
+                        if ($detailmsg) {
+                            $overview = $this->_api->fetchMessageOverviews($sequence);
+                        }
+
+                        /* Delete the messages now. */
+                        $this->_api->deleteMessages($sequence);
+                        $this->_api->expunge($indices);
+
+                        /* Display notification message(s). */
+                        if ($detailmsg) {
+                            foreach ($overview as $msg) {
+                                $notification->push(
+                                    sprintf(_("Filter activity: The message \"%s\" from \"%s\" has been deleted."),
+                                            isset($msg->subject) ? MIME::decode($msg->subject, NLS::getCharset()) : _("[No Subject]"),
+                                            isset($msg->from) ? MIME::decode($msg->from, NLS::getCharset()) : _("[No Sender]")),
+                                    'horde.message');
+                            }
+                        } else {
+                            $notification->push(sprintf(_("Filter activity: %s message(s) have been deleted."), count($indices)), 'horde.message');
+                        }
+                    } elseif ($rule['action'] == Ingo_Storage::ACTION_MOVEKEEP) {
+                        /* Copy the messages to the requested mailbox. */
+                        $this->_api->copyMessages($sequence,
+                                                 $rule['action-value']);
+
+                        /* Display notification message(s). */
+                        if ($detailmsg) {
+                            $overview = $this->_api->fetchMessageOverviews($sequence);
+                            foreach ($overview as $msg) {
+                                $notification->push(
+                                    sprintf(_("Filter activity: The message \"%s\" from \"%s\" has been copied to the folder \"%s\"."),
+                                            isset($msg->subject) ? MIME::decode($msg->subject, NLS::getCharset()) : _("[No Subject]"),
+                                            isset($msg->from) ? MIME::decode($msg->from, NLS::getCharset()) : _("[No Sender]"),
+                                            String::convertCharset($rule['action-value'], 'UTF7-IMAP', NLS::getCharset())),
+                                    'horde.message');
+                            }
+                        } else {
+                            $notification->push(sprintf(_("Filter activity: %s message(s) have been copied to the folder \"%s\"."), count($indices), String::convertCharset($rule['action-value'], 'UTF7-IMAP', NLS::getCharset())), 'horde.message');
+                        }
+                    }
+                }
+                break;
+            }
+        }
+
+        /* Set cache flag. */
+        $this->_api->storeCache($_SESSION['ingo']['change']);
+        return true;
+    }
+
+    /**
+     * Is the apply() function available?
+     * The 'mail/getStream' API function must be available.
+     *
+     * @return boolean  True if apply() is available, false if not.
+     */
+    function canApply()
+    {
+        global $registry;
+
+        return ($this->performAvailable() && $registry->hasMethod('mail/getStream'));
+    }
+
+    /**
+     * Apply the filters now.
+     *
+     * @return boolean  See perform().
+     */
+    function apply()
+    {
+        global $registry;
+
+        if ($this->canApply()) {
+            $res = $registry->call('mail/getStream', array('INBOX'));
+            if ($res !== false) {
+                $ob = @imap_check($res);
+                return $this->perform(array('imap' => $res, 'mailbox' => $ob->Mailbox));
+            }
+        }
+
+        return false;
+    }
+
+}
+
+class Ingo_Script_imap_api {
+
+    var $_params;
+
+    function Ingo_Script_imap_api($params = array())
+    {
+        $this->_params = $params;
+    }
+
+    function factory($type, $params)
+    {
+        $class = 'Ingo_Script_imap_' . $type;
+        if (!class_exists($class)) {
+            require dirname(__FILE__) . '/imap/' . $type . '.php';
+        }
+        return new $class($params);
+    }
+
+    function deleteMessages($sequence)
+    {
+        return PEAR::raiseError('Not implemented.');
+    }
+
+    function expunge($indices)
+    {
+        return PEAR::raiseError('Not implemented.');
+    }
+
+    function moveMessages($sequence, $folder)
+    {
+        return PEAR::raiseError('Not implemented.');
+    }
+
+    function copyMessages($sequence, $folder)
+    {
+        return PEAR::raiseError('Not implemented.');
+    }
+
+    function setMessageFlags($sequence, $flags)
+    {
+        return PEAR::raiseError('Not implemented.');
+    }
+
+    function fetchMessageOverviews($sequence)
+    {
+        return PEAR::raiseError('Not implemented.');
+    }
+
+    function search($query)
+    {
+        return PEAR::raiseError('Not implemented.');
+    }
+
+    function getCache()
+    {
+        return false;
+    }
+
+    function storeCache($timestamp)
+    {
+    }
+
+
diff --git a/ingo/lib/Script/imap/live.php b/ingo/lib/Script/imap/live.php
new file mode 100644 (file)
index 0000000..1c90594
--- /dev/null
@@ -0,0 +1,122 @@
+<?php
+/**
+ * The Ingo_Script_imap_live:: driver.
+ *
+ * Copyright 2006-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Jason M. Felice <jason.m.felice@gmail.com>
+ * @package Ingo
+ */
+class Ingo_Script_imap_live extends Ingo_Script_imap_api {
+
+    /**
+     */
+    function deleteMessages($sequence)
+    {
+        @imap_delete($this->_params['imap'], $sequence, FT_UID);
+    }
+
+    /**
+     */
+    function expunge($indices)
+    {
+        if (!count($indices)) {
+            return;
+        }
+
+        $ids = @imap_search($this->_params['imap'], 'DELETED', SE_UID);
+        $unflag = false;
+        if (!empty($ids)) {
+            $unflag = array_diff($ids, $indices);
+            if (!empty($unflag)) {
+                $unflag = implode(',', $unflag);
+                @imap_clearflag_full($this->_params['imap'], $unflag, '\\DELETED', ST_UID);
+            }
+        }
+
+        @imap_expunge($this->_params['imap']);
+        if ($unflag) {
+            @imap_setflag_full($this->_params['imap'], $unflag, '\\DELETED', ST_UID);
+        }
+    }
+
+    /**
+     */
+    function moveMessages($sequence, $folder)
+    {
+        @imap_mail_move($this->_params['imap'], $sequence, $folder, CP_UID);
+    }
+
+    /**
+     */
+    function copyMessages($sequence, $folder)
+    {
+        @imap_mail_copy($this->_params['imap'], $sequence, $folder, CP_UID);
+    }
+
+    /**
+     */
+    function setMessageFlags($sequence, $flags)
+    {
+        @imap_setflag_full($this->_params['imap'], $sequence, $flags, ST_UID);
+    }
+
+    /**
+     */
+    function fetchMessageOverviews($sequence)
+    {
+        return @imap_fetch_overview($this->_params['imap'], $sequence, FT_UID);
+    }
+
+    /**
+     */
+    function search($query)
+    {
+        $search = &Ingo_IMAP_Search::singleton($this->_params);
+        return $search->searchMailbox($query, $this->_params['imap'],
+                                      $this->_params['mailbox']);
+    }
+
+    /**
+     */
+    function getCache()
+    {
+        if (empty($_SESSION['ingo']['imapcache'][$this->_params['mailbox']])) {
+            return false;
+        }
+        $ptr = &$_SESSION['ingo']['imapcache'][$this->_params['mailbox']];
+
+        if ($this->_getCacheID() != $ptr['id']) {
+            $ptr = array();
+            return false;
+        }
+
+        return $ptr['ts'];
+    }
+
+    /**
+     */
+    function storeCache($timestamp)
+    {
+        if (!isset($_SESSION['ingo']['imapcache'])) {
+            $_SESSION['ingo']['imapcache'] = array();
+        }
+
+        $_SESSION['ingo']['imapcache'][$this->_params['mailbox']] = array(
+            'id' => $this->_getCacheID(),
+            'ts' => $timestamp
+        );
+    }
+
+    /**
+     */
+    function _getCacheID()
+    {
+        $ob = @imap_status($this->_params['imap'], $this->_params['mailbox'], SA_ALL);
+        return $ob ? implode('|', array($ob->messages, $ob->uidnext, $ob->uidvalidity)) : null;
+    }
+
+}
diff --git a/ingo/lib/Script/imap/mock.php b/ingo/lib/Script/imap/mock.php
new file mode 100644 (file)
index 0000000..797cc2a
--- /dev/null
@@ -0,0 +1,117 @@
+<?php
+
+class Ingo_Script_imap_mock extends Ingo_Script_imap_api {
+
+    var $_fixtures = array();
+
+    var $_folders = array();
+
+    function loadFixtures($dir)
+    {
+        $this->_fixtures = array();
+
+        $dh = opendir($dir);
+        while (($dent = readdir($dh)) !== false) {
+            if ($dent == '.' || $dent == '..') {
+                continue;
+            }
+            $name = $dir . '/' . $dent;
+            $fh = fopen($name, 'r');
+            $data = fread($fh, filesize($name));
+            fclose($fh);
+
+            $params = array('input'          => &$data,
+                            'include_bodies' => true,
+                            'decode_bodies'  => true,
+                            'decode_headers' => true);
+            $this->_fixtures[$dent] = Mail_mimeDecode::decode($params);
+        }
+        closedir($dh);
+
+        $i = 0;
+        foreach (array_keys($this->_fixtures) as $key) {
+            $this->_folders['INBOX'][] = array('uid'     => ++$i,
+                                               'fixture' => $key,
+                                               'deleted' => false);
+        }
+    }
+
+    function hasMessage($fixture, $folder = 'INBOX')
+    {
+        if (empty($this->_folders[$folder])) {
+            return false;
+        }
+        foreach ($this->_folders[$folder] as $message) {
+            if ($message['fixture'] == $fixture) {
+                return !$message['deleted'];
+            }
+        }
+        return false;
+    }
+
+    function search(&$query)
+    {
+        $result = array();
+        foreach ($this->_folders['INBOX'] as $message) {
+            if ($message['deleted']) {
+                continue;
+            }
+            if ($query->matches($this->_fixtures[$message['fixture']])) {
+                $result[] = $message['uid'];
+            }
+        }
+        return $result;
+    }
+
+    function deleteMessages($sequence)
+    {
+        $uids = explode(',', $sequence);
+        foreach (array_keys($this->_folders['INBOX']) as $i) {
+            if (in_array($this->_folders['INBOX'][$i]['uid'], $uids)) {
+                $this->_folders['INBOX'][$i]['deleted'] = true;
+            }
+        }
+    }
+
+    function moveMessages($sequence, $folder)
+    {
+        $uids = explode(',', $sequence);
+        foreach (array_keys($this->_folders['INBOX']) as $i) {
+            if (in_array($this->_folders['INBOX'][$i]['uid'], $uids)) {
+                $this->_folders[$folder][] = $this->_folders['INBOX'][$i];
+            }
+        }
+        return $this->deleteMessages($sequence);
+    }
+
+    function expunge($indices)
+    {
+        foreach (array_keys($this->_folders['INBOX']) as $i) {
+            if (in_array($this->_folders['INBOX'][$i]['uid'], $indices)) {
+                unset($this->_folders['INBOX'][$i]);
+            }
+        }
+
+        // Force renumbering
+        $this->_folders['INBOX'] = array_merge($this->_folders['INBOX'],
+                                               array());
+    }
+
+    function fetchMessageOverviews($sequence)
+    {
+        $result = array();
+        foreach (explode(',',$sequence) as $uid) {
+            foreach (array_keys($this->_folders['INBOX']) as $i) {
+                if ($this->_folders['INBOX'][$i]['uid'] == $uid) {
+                    $fixture = $this->_fixtures[$this->_folders['INBOX'][$i]['fixture']];
+                    $ob = new stdClass();
+                    $ob->from = $fixture->headers['from'];
+                    $ob->uid = $uid;
+                    $result[] = $ob;
+                }
+            }
+        }
+        return $result;
+    }
+
+}
diff --git a/ingo/lib/Script/maildrop.php b/ingo/lib/Script/maildrop.php
new file mode 100644 (file)
index 0000000..ac2e84b
--- /dev/null
@@ -0,0 +1,761 @@
+<?php
+/**
+ * The Ingo_Script_maildrop:: class represents a maildrop script generator.
+ *
+ * Copyright 2005-2007 Matt Weyland <mathias@weyland.ch>
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Matt Weyland <mathias@weyland.ch>
+ * @package Ingo
+ */
+
+/**
+ * Additional storage action since maildrop does not support the
+ * "c-flag" as in procmail.
+ */
+define('MAILDROP_STORAGE_ACTION_STOREANDFORWARD', 100);
+
+/**
+ */
+class Ingo_Script_maildrop extends Ingo_Script {
+
+    /**
+     * The list of actions allowed (implemented) for this driver.
+     *
+     * @var array
+     */
+    var $_actions = array(
+        Ingo_Storage::ACTION_KEEP,
+        Ingo_Storage::ACTION_MOVE,
+        Ingo_Storage::ACTION_DISCARD,
+        Ingo_Storage::ACTION_REDIRECT,
+        Ingo_Storage::ACTION_REDIRECTKEEP,
+        Ingo_Storage::ACTION_REJECT,
+    );
+
+    /**
+     * The categories of filtering allowed.
+     *
+     * @var array
+     */
+    var $_categories = array(
+        Ingo_Storage::ACTION_BLACKLIST,
+        Ingo_Storage::ACTION_WHITELIST,
+        Ingo_Storage::ACTION_VACATION,
+        Ingo_Storage::ACTION_FORWARD,
+        Ingo_Storage::ACTION_SPAM,
+    );
+
+    /**
+     * The types of tests allowed (implemented) for this driver.
+     *
+     * @var array
+     */
+    var $_types = array(
+        Ingo_Storage::TYPE_HEADER,
+    );
+
+    /**
+     * The list of tests allowed (implemented) for this driver.
+     *
+     * @var array
+     */
+    var $_tests = array(
+        'contains', 'not contain',
+        'is', 'not is',
+        'begins with','not begins with',
+        'ends with', 'not ends with',
+        'regex',
+        'matches', 'not matches',
+        'exists', 'not exist',
+        'less than', 'less than or equal to',
+        'equal', 'not equal',
+        'greater than', 'greater than or equal to',
+    );
+
+    /**
+     * Can tests be case sensitive?
+     *
+     * @var boolean
+     */
+    var $_casesensitive = true;
+
+    /**
+     * Does the driver support the stop-script option?
+     *
+     * @var boolean
+     */
+    var $_supportStopScript = false;
+
+    /**
+     * Does the driver require a script file to be generated?
+     *
+     * @var boolean
+     */
+    var $_scriptfile = true;
+
+    /**
+     * The recipes that make up the code.
+     *
+     * @var array
+     */
+    var $_recipes = array();
+
+    /**
+     * Returns a script previously generated with generate().
+     *
+     * @return string  The maildrop script.
+     */
+    function toCode()
+    {
+        $code = '';
+        foreach ($this->_recipes as $item) {
+            $code .= $item->generate() . "\n";
+        }
+        return rtrim($code);
+    }
+
+    /**
+     * Generates the maildrop script to do the filtering specified in
+     * the rules.
+     *
+     * @return string  The maildrop script.
+     */
+    function generate()
+    {
+        $filters = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_FILTERS);
+
+        $this->addItem(new Maildrop_Comment(_("maildrop script generated by Ingo") . ' (' . date('F j, Y, g:i a') . ')'));
+
+        /* Add variable information, if present. */
+        if (!empty($this->_params['variables']) &&
+            is_array($this->_params['variables'])) {
+            foreach ($this->_params['variables'] as $key => $val) {
+                $this->addItem(new Maildrop_Variable(array('name' => $key, 'value' => $val)));
+            }
+        }
+
+        foreach ($filters->getFilterlist() as $filter) {
+            switch ($filter['action']) {
+            case Ingo_Storage::ACTION_BLACKLIST:
+                $this->generateBlacklist(!empty($filter['disable']));
+                break;
+
+            case Ingo_Storage::ACTION_WHITELIST:
+                $this->generateWhitelist(!empty($filter['disable']));
+                break;
+
+            case Ingo_Storage::ACTION_FORWARD:
+                $this->generateForward(!empty($filter['disable']));
+                break;
+
+            case Ingo_Storage::ACTION_VACATION:
+                $this->generateVacation(!empty($filter['disable']));
+                break;
+
+            case Ingo_Storage::ACTION_SPAM:
+                $this->generateSpamfilter(!empty($filter['disable']));
+                break;
+
+            default:
+                if (in_array($filter['action'], $this->_actions)) {
+                    /* Create filter if using AND. */
+                    $recipe = new Maildrop_Recipe($filter, $this->_params);
+                    foreach ($filter['conditions'] as $condition) {
+                        $recipe->addCondition($condition);
+                    }
+                    $this->addItem(new Maildrop_Comment($filter['name'], !empty($filter['disable']), true));
+                    $this->addItem($recipe);
+                }
+            }
+        }
+
+        return $this->toCode();
+    }
+
+    /**
+     * Generates the maildrop script to handle the blacklist specified in
+     * the rules.
+     *
+     * @param boolean $disable  Disable the blacklist?
+     */
+    function generateBlacklist($disable = false)
+    {
+        $blacklist = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_BLACKLIST);
+        $bl_addr = $blacklist->getBlacklist();
+        $bl_folder = $blacklist->getBlacklistFolder();
+
+        $bl_type = (empty($bl_folder)) ? Ingo_Storage::ACTION_DISCARD : Ingo_Storage::ACTION_MOVE;
+
+        if (!empty($bl_addr)) {
+            $this->addItem(new Maildrop_Comment(_("Blacklisted Addresses"), $disable, true));
+            $params = array('action-value' => $bl_folder,
+                            'action' => $bl_type,
+                            'disable' => $disable);
+
+            foreach ($bl_addr as $address) {
+                if (!empty($address)) {
+                    $recipe = new Maildrop_Recipe($params, $this->_params);
+                    $recipe->addCondition(array('field' => 'From', 'value' => $address));
+                    $this->addItem($recipe);
+                }
+            }
+        }
+    }
+
+    /**
+     * Generates the maildrop script to handle the whitelist specified in
+     * the rules.
+     *
+     * @param boolean $disable  Disable the whitelist?
+     */
+    function generateWhitelist($disable = false)
+    {
+        $whitelist = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_WHITELIST);
+        $wl_addr = $whitelist->getWhitelist();
+
+        if (!empty($wl_addr)) {
+            $this->addItem(new Maildrop_Comment(_("Whitelisted Addresses"), $disable, true));
+            foreach ($wl_addr as $address) {
+                if (!empty($address)) {
+                    $recipe = new Maildrop_Recipe(array('action' => Ingo_Storage::ACTION_KEEP, 'disable' => $disable), $this->_params);
+                    $recipe->addCondition(array('field' => 'From', 'value' => $address));
+                    $this->addItem($recipe);
+                }
+            }
+        }
+    }
+
+    /**
+     * Generates the maildrop script to handle mail forwards.
+     *
+     * @param boolean $disable  Disable forwarding?
+     */
+    function generateForward($disable = false)
+    {
+        $forward = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_FORWARD);
+        $addresses = $forward->getForwardAddresses();
+
+        if (!empty($addresses)) {
+            $this->addItem(new Maildrop_Comment(_("Forwards"), $disable, true));
+            $params = array('action' => Ingo_Storage::ACTION_FORWARD,
+                            'action-value' => $addresses,
+                            'disable' => $disable);
+            if ($forward->getForwardKeep()) {
+                $params['action'] = MAILDROP_STORAGE_ACTION_STOREANDFORWARD;
+            }
+            $recipe = new Maildrop_Recipe($params, $this->_params);
+            $recipe->addCondition(array('field' => 'From', 'value' => ''));
+            $this->addItem($recipe);
+        }
+    }
+
+    /**
+     * Generates the maildrop script to handle vacation messages.
+     *
+     * @param boolean $disable  Disable forwarding?
+     */
+    function generateVacation($disable = false)
+    {
+        $vacation = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_VACATION);
+        $addresses = $vacation->getVacationAddresses();
+        $actionval = array('addresses' => $addresses,
+                           'subject' => $vacation->getVacationSubject(),
+                           'days' => $vacation->getVacationDays(),
+                           'reason' => $vacation->getVacationReason(),
+                           'ignorelist' => $vacation->getVacationIgnorelist(),
+                           'excludes' => $vacation->getVacationExcludes(),
+                           'start' => $vacation->getVacationStart(),
+                           'end' => $vacation->getVacationEnd());
+
+        if (!empty($addresses)) {
+            $this->addItem(new Maildrop_Comment(_("Vacation"), $disable, true));
+            $params = array('action' => Ingo_Storage::ACTION_VACATION,
+                            'action-value' => $actionval,
+                            'disable' => $disable);
+            $recipe = new Maildrop_Recipe($params, $this->_params);
+            $this->addItem($recipe);
+        }
+    }
+
+    /**
+     * Generates the maildrop script to handle spam as identified by SpamAssassin
+     *
+     * @param boolean $disable  Disable the spam-filter?
+     */
+    function generateSpamfilter($disable = false)
+    {
+        $spam = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_SPAM);
+        if ($spam == false) {
+            return;
+        }
+
+        $spam_folder = $spam->getSpamFolder();
+        $spam_action = (empty($spam_folder)) ? Ingo_Storage::ACTION_DISCARD : Ingo_Storage::ACTION_MOVE;
+
+        $this->addItem(new Maildrop_Comment(_("Spam Filter"), $disable, true));
+
+        $params = array('action-value' => $spam_folder,
+                        'action' => $spam_action,
+                        'disable' => $disable);
+        $recipe = new Maildrop_Recipe($params, $this->_params);
+        if ($GLOBALS['conf']['spam']['compare'] == 'numeric') {
+            $recipe->addCondition(array('match' => 'greater than or equal to',
+                                        'field' => $GLOBALS['conf']['spam']['header'],
+                                        'value' => $spam->getSpamLevel()));
+        } elseif ($GLOBALS['conf']['spam']['compare'] == 'string') {
+            $recipe->addCondition(array('match' => 'contains',
+                                        'field' => $GLOBALS['conf']['spam']['header'],
+                                        'value' => str_repeat($GLOBALS['conf']['spam']['char'], $spam->getSpamLevel())));
+        }
+
+        $this->addItem($recipe);
+    }
+
+    /**
+     * Adds an item to the recipe list.
+     *
+     * @param object $item  The item to add to the recipe list.
+     *                      The object should have a generate() function.
+     */
+    function addItem($item)
+    {
+        $this->_recipes[] = $item;
+    }
+
+}
+
+/**
+ * The Maildrop_Comment:: class represents a maildrop comment.  This is
+ * a pretty simple class, but it makes the code in Ingo_Script_maildrop::
+ * cleaner as it provides a generate() function and can be added to the
+ * recipe list the same way as a recipe can be.
+ *
+ * @author  Matt Weyland <mathias@weyland.ch>
+ * @since   Ingo 1.1
+ * @package Ingo
+ */
+class Maildrop_Comment {
+
+    /**
+     * The comment text.
+     *
+     * @var string
+     */
+    var $_comment = '';
+
+    /**
+     * Constructs a new maildrop comment.
+     *
+     * @param string $comment   Comment to be generated.
+     * @param boolean $disable  Output 'DISABLED' comment?
+     * @param boolean $header   Output a 'header' comment?
+     */
+    function Maildrop_Comment($comment, $disable = false, $header = false)
+    {
+        if ($disable) {
+            $comment = _("DISABLED: ") . $comment;
+        }
+
+        if ($header) {
+            $this->_comment .= "##### $comment #####";
+        } else {
+            $this->_comment .= "# $comment";
+        }
+    }
+
+    /**
+     * Returns the comment stored by this object.
+     *
+     * @return string  The comment stored by this object.
+     */
+    function generate()
+    {
+        return $this->_comment;
+    }
+
+}
+
+/**
+ * The Maildrop_Recipe:: class represents a maildrop recipe.
+ *
+ * @author  Matt Weyland <mathias@weyland.ch>
+ * @since   Ingo 1.1
+ * @package Ingo
+ */
+class Maildrop_Recipe {
+
+    var $_action = array();
+    var $_conditions = array();
+    var $_disable = '';
+    var $_flags = '';
+    var $_params = array();
+    var $_combine = '';
+    var $_valid = true;
+
+    var $_operators = array(
+        'less than'                => '<',
+        'less than or equal to'    => '<=',
+        'equal'                    => '==',
+        'not equal'                => '!=',
+        'greater than'             => '>',
+        'greater than or equal to' => '>=',
+    );
+
+    /**
+     * Constructs a new maildrop recipe.
+     *
+     * @param array $params        Array of parameters.
+     *                             REQUIRED FIELDS:
+     *                             'action'
+     *                             OPTIONAL FIELDS:
+     *                             'action-value' (only used if the
+     *                             'action' requires it)
+     * @param array $scriptparams  Array of parameters passed to
+     *                             Ingo_Script_maildrop::.
+     */
+    function Maildrop_Recipe($params = array(), $scriptparams = array())
+    {
+        $this->_disable = !empty($params['disable']);
+        $this->_params = $scriptparams;
+        $this->_action[] = 'exception {';
+
+        switch ($params['action']) {
+        case Ingo_Storage::ACTION_KEEP:
+            $this->_action[] = '   to "${DEFAULT}"';
+            break;
+
+        case Ingo_Storage::ACTION_MOVE:
+            $this->_action[] = '   to ' . $this->maildropPath($params['action-value']);
+            break;
+
+        case Ingo_Storage::ACTION_DISCARD:
+            $this->_action[] = '   exit';
+            break;
+
+        case Ingo_Storage::ACTION_REDIRECT:
+            $this->_action[] = '   to "! ' . $params['action-value'] . '"';
+            break;
+
+        case Ingo_Storage::ACTION_REDIRECTKEEP:
+            $this->_action[] = '   cc "! ' . $params['action-value'] . '"';
+            $this->_action[] = '   to "${DEFAULT}"';
+            break;
+
+        case Ingo_Storage::ACTION_REJECT:
+            $this->_action[] = '   EXITCODE=77'; # EX_NOPERM (permanent failure)
+            $this->_action[] = '   echo "5.7.1 ' . $params['action-value'] . '"';
+            $this->_action[] = '   exit';
+            break;
+
+        case Ingo_Storage::ACTION_VACATION:
+            $from = '';
+            foreach ($params['action-value']['addresses'] as $address) {
+                $from = $address;
+            }
+
+            /**
+             * @TODO
+             *
+             * Exclusion and listfilter
+             */
+            $exclude = '';
+            foreach ($params['action-value']['excludes'] as $address) {
+                $exclude .= $address . ' ';
+            }
+
+            $start = strftime($params['action-value']['start']);
+            if ($start === false) {
+                $start = 0;
+            }
+            $end = strftime($params['action-value']['end']);
+            if ($end === false) {
+                $end = 0;
+            }
+            $days = strftime($params['action-value']['days']);
+            if ($days === false) {
+                // Set to same value as $_days in ingo/lib/Storage.php
+                $days = 7;
+            }
+
+            // Writing vacation.msg file
+            $reason = Horde_Mime::encode($params['action-value']['reason'], NLS::getCharset());
+            $driver = Ingo::getDriver();
+            $driver->_connect();
+            $result = $driver->_vfs->writeData($driver->_params['vfs_path'], 'vacation.msg', $reason, true);
+
+            // Rule : Do not send responses to bulk or list messages
+            if ($params['action-value']['ignorelist'] == 1) {
+                $params['combine'] = Ingo_Storage::COMBINE_ALL;
+                $this->addCondition(array('match' => 'filter', 'field' => '', 'value' => '! /^Precedence: (bulk|list|junk)/'));
+                $this->addCondition(array('match' => 'filter', 'field' => '', 'value' => '! /^Return-Path:.*<#@\[\]>/'));
+                $this->addCondition(array('match' => 'filter', 'field' => '', 'value' => '! /^Return-Path:.*<>/'));
+                $this->addCondition(array('match' => 'filter', 'field' => '', 'value' => '! /^From:.*MAILER-DAEMON/'));
+                $this->addCondition(array('match' => 'filter', 'field' => '', 'value' => '! /^X-ClamAV-Notice-Flag: *YES/'));
+                $this->addCondition(array('match' => 'filter', 'field' => '', 'value' => '! /^Content-Type:.*message\/delivery-status/'));
+                $this->addCondition(array('match' => 'filter', 'field' => '', 'value' => '! /^Subject:.*Delivery Status Notification/'));
+                $this->addCondition(array('match' => 'filter', 'field' => '', 'value' => '! /^Subject:.*Undelivered Mail Returned to Sender/'));
+                $this->addCondition(array('match' => 'filter', 'field' => '', 'value' => '! /^Subject:.*Delivery failure/'));
+                $this->addCondition(array('match' => 'filter', 'field' => '', 'value' => '! /^Subject:.*Message delay/'));
+                $this->addCondition(array('match' => 'filter', 'field' => '', 'value' => '! /^Subject:.*Mail Delivery Subsystem/'));
+                $this->addCondition(array('match' => 'filter', 'field' => '', 'value' => '! /^Subject:.*Mail System Error.*Returned Mail/'));
+                $this->addCondition(array('match' => 'filter', 'field' => '', 'value' => '! /^X-Spam-Flag: YES/ '));
+            } else {
+                $this->addCondition(array('field' => 'From', 'value' => ''));
+            }
+
+            // Rule : Start/End of vacation
+            if (($start != 0) && ($end !== 0)) {
+                $this->_action[] = '  flock "vacation.lock" {';
+                $this->_action[] = '    current_time=time';
+                $this->_action[] = '      if ( \ ';
+                $this->_action[] = '        ($current_time >= ' . $start . ') && \ ';
+                $this->_action[] = '        ($current_time <= ' . $end . ')) ';
+                $this->_action[] = '      {';
+            }
+            $this->_action[] = "  cc \"| mailbot -D " . $params['action-value']['days'] . " -c '" . NLS::getCharset() . "' -t \$HOME/vacation.msg -d \$HOME/vacation -A 'From: $from' -s '" . Horde_Mime::encode($params['action-value']['subject'], NLS::getCharset())  . "' /usr/sbin/sendmail -t \"";
+            if (($start != 0) && ($end !== 0)) {
+                $this->_action[] = '      }';
+                $this->_action[] = '  }';
+            }
+
+            break;
+
+        case Ingo_Storage::ACTION_FORWARD:
+        case MAILDROP_STORAGE_ACTION_STOREANDFORWARD:
+            foreach ($params['action-value'] as $address) {
+                if (!empty($address)) {
+                    $this->_action[] = '  cc "! ' . $address . '"';
+                }
+            }
+
+            /* The 'to' must be the last action, because maildrop
+             * stops processing after it. */
+            if ($params['action'] == MAILDROP_STORAGE_ACTION_STOREANDFORWARD) {
+                $this->_action[] = ' to "${DEFAULT}"';
+            } else {
+                $this->_action[] = ' exit';
+            }
+            break;
+
+        default:
+            $this->_valid = false;
+            break;
+        }
+
+        $this->_action[] = '}';
+
+        if (isset($params['combine']) &&
+            ($params['combine'] == Ingo_Storage::COMBINE_ALL)) {
+            $this->_combine = '&& ';
+        } else {
+            $this->_combine = '|| ';
+        }
+    }
+
+    /**
+     * Adds a flag to the recipe.
+     *
+     * @param string $flag  String of flags to append to the current flags.
+     */
+    function addFlag($flag)
+    {
+        $this->_flags .= $flag;
+    }
+
+    /**
+     * Adds a condition to the recipe.
+     *
+     * @param optonal array $condition  Array of parameters. Required keys
+     *                                  are 'field' and 'value'. 'case' is
+     *                                  an optional keys.
+     */
+    function addCondition($condition = array())
+    {
+        $flag = (!empty($condition['case'])) ? 'D' : '';
+        if (empty($this->_conditions)) {
+            $this->addFlag($flag);
+        }
+
+        $string = '';
+        $extra = '';
+
+        $match = (isset($condition['match'])) ? $condition['match'] : null;
+        // negate tests starting with 'not ', except 'not equals', which simply uses the != operator
+        if ($match != 'not equal' && substr($match, 0, 4) == 'not ') {
+            $string .= '! ';
+        }
+
+        // convert 'field' to PCRE pattern matching
+        if (strpos($condition['field'], ',') == false) {
+            $string .= '/^' . $condition['field'] . ':\\s*';
+        } else {
+            $string .= '/^(' . str_replace(',', '|', $condition['field']) . '):\\s*';
+        }
+
+        switch ($match) {
+        case 'not regex':
+        case 'regex':
+            $string .= $condition['value'] . '/:h';
+            break;
+
+        case 'filter':
+            $string = $condition['value'];
+            break;
+
+        case 'exists':
+        case 'not exist':
+            // Just run a match for the header name
+            $string .= '/:h';
+            break;
+
+        case 'less than or equal to':
+        case 'less than':
+        case 'equal':
+        case 'not equal':
+        case 'greater than or equal to':
+        case 'greater than':
+            $string .= '(\d+(\.\d+)?)/:h';
+            $extra = ' && $MATCH1 ' . $this->_operators[$match] . ' ' . (int)$condition['value'];
+            break;
+
+        case 'begins with':
+        case 'not begins with':
+            $string .= preg_quote($condition['value'], '/') . '/:h';
+            break;
+
+        case 'ends with':
+        case 'not ends with':
+            $string .= '.*' . preg_quote($condition['value'], '/') . '$/:h';
+            break;
+
+        case 'is':
+        case 'not is':
+            $string .= preg_quote($condition['value'], '/') . '$/:h';
+            break;
+
+        case 'matches':
+        case 'not matches':
+            $string .= str_replace(array('\\*', '\\?'), array('.*', '.'), preg_quote($condition['value'], '/') . '$') . '/:h';
+            break;
+
+        case 'contains':
+        case 'not contain':
+        default:
+            $string .= '.*' . preg_quote($condition['value'], '/') . '/:h';
+            break;
+        }
+
+        $this->_conditions[] = array('condition' => $string, 'flags' => $flag, 'extra' => $extra);
+    }
+
+    /**
+     * Generates maildrop code to represent the recipe.
+     *
+     * @return string  maildrop code to represent the recipe.
+     */
+    function generate()
+    {
+        $text = array();
+
+        if (!$this->_valid) {
+            return '';
+        }
+
+        $text[] = "if( \\";
+
+        if (count($this->_conditions > 1)) {
+            $nest = false;
+            foreach ($this->_conditions as $condition) {
+                $cond = $nest ? $this->_combine : '   ';
+                $text[] = $cond . $condition['condition'] . $condition['flags'] . $condition['extra'] . " \\";
+                $nest = true;
+            }
+        }
+
+        $text[] = ')';
+
+        foreach ($this->_action as $val) {
+            $text[] = $val;
+        }
+
+        if ($this->_disable) {
+            $code = '';
+            foreach ($text as $val) {
+                $comment = new Maildrop_Comment($val);
+                $code .= $comment->generate() . "\n";
+            }
+            return $code . "\n";
+        } else {
+            return implode("\n", $text) . "\n";
+        }
+    }
+
+    /**
+     * Returns a maildrop-ready mailbox path, converting IMAP folder pathname
+     * conventions as necessary.
+     *
+     * @param string $folder  The IMAP folder name.
+     *
+     * @return string  The maildrop mailbox path.
+     */
+    function maildropPath($folder)
+    {
+        /* NOTE: '$DEFAULT' here is a literal, not a PHP variable. */
+        if (isset($this->_params) &&
+            ($this->_params['path_style'] == 'maildir')) {
+            if (empty($folder) || ($folder == 'INBOX')) {
+                return '"${DEFAULT}"';
+            }
+            if ($this->_params['strip_inbox'] &&
+                substr($folder, 0, 6) == 'INBOX.') {
+                $folder = substr($folder, 6);
+            }
+            return '"${DEFAULT}/.' . $folder . '/"';
+        } else {
+            if (empty($folder) || ($folder == 'INBOX')) {
+                return '${DEFAULT}';
+            }
+            return str_replace(' ', '\ ', $folder);
+        }
+    }
+
+}
+
+/**
+ * The Maildrop_Variable:: class represents a Maildrop variable.
+ *
+ * @author  Matt Weyland <mathias@weyland.ch>
+ * @since   Ingo 1.1
+ * @package Ingo
+ */
+class Maildrop_Variable {
+
+    var $_name;
+    var $_value;
+
+    /**
+     * Constructs a new maildrop variable.
+     *
+     * @param array $params  Array of parameters. Expected fields are 'name'
+     *                       and 'value'.
+     */
+    function Maildrop_Variable($params = array())
+    {
+        $this->_name = $params['name'];
+        $this->_value = $params['value'];
+    }
+
+    /**
+     * Generates maildrop code to represent the variable.
+     *
+     * @return string  maildrop code to represent the variable.
+     */
+    function generate()
+    {
+        return $this->_name . '=' . $this->_value . "\n";
+    }
+
+}
diff --git a/ingo/lib/Script/procmail.php b/ingo/lib/Script/procmail.php
new file mode 100644 (file)
index 0000000..ed35409
--- /dev/null
@@ -0,0 +1,802 @@
+<?php
+/**
+ * The Ingo_Script_procmail:: class represents a Procmail script generator.
+ *
+ * Copyright 2003-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Brent J. Nordquist <bjn@horde.org>
+ * @author  Ben Chavet <ben@horde.org>
+ * @package Ingo
+ */
+class Ingo_Script_procmail extends Ingo_Script {
+
+    /**
+     * The list of actions allowed (implemented) for this driver.
+     *
+     * @var array
+     */
+    var $_actions = array(
+        Ingo_Storage::ACTION_KEEP,
+        Ingo_Storage::ACTION_MOVE,
+        Ingo_Storage::ACTION_DISCARD,
+        Ingo_Storage::ACTION_REDIRECT,
+        Ingo_Storage::ACTION_REDIRECTKEEP,
+        Ingo_Storage::ACTION_REJECT
+    );
+
+    /**
+     * The categories of filtering allowed.
+     *
+     * @var array
+     */
+    var $_categories = array(
+        Ingo_Storage::ACTION_BLACKLIST,
+        Ingo_Storage::ACTION_WHITELIST,
+        Ingo_Storage::ACTION_VACATION,
+        Ingo_Storage::ACTION_FORWARD
+    );
+
+    /**
+     * The types of tests allowed (implemented) for this driver.
+     *
+     * @var array
+     */
+    var $_types = array(
+        Ingo_Storage::TYPE_HEADER,
+        Ingo_Storage::TYPE_BODY
+    );
+
+    /**
+     * A list of any special types that this driver supports.
+     *
+     * @var array
+     */
+    var $_special_types = array(
+        'Destination',
+    );
+
+    /**
+     * The list of tests allowed (implemented) for this driver.
+     *
+     * @var array
+     */
+    var $_tests = array(
+        'contains',
+        'not contain',
+        'begins with',
+        'not begins with',
+        'ends with',
+        'not ends with',
+        'regex'
+    );
+
+    /**
+     * Can tests be case sensitive?
+     *
+     * @var boolean
+     */
+    var $_casesensitive = true;
+
+    /**
+     * Does the driver support the stop-script option?
+     *
+     * @var boolean
+     */
+    var $_supportStopScript = true;
+
+    /**
+     * Does the driver require a script file to be generated?
+     *
+     * @var boolean
+     */
+    var $_scriptfile = true;
+
+    /**
+     * The recipes that make up the code.
+     *
+     * @var array
+     */
+    var $_recipes = array();
+
+    /**
+     * Returns a script previously generated with generate().
+     *
+     * @return string  The procmail script.
+     */
+    function toCode()
+    {
+        $code = '';
+        foreach ($this->_recipes as $item) {
+            $code .= $item->generate() . "\n";
+        }
+
+        // If an external delivery program is used, add final rule
+        // to deliver to $DEFAULT
+        if (isset($this->_params['delivery_agent'])) {
+            $code .= ":0 w\n";
+            $code .= isset($this->_params['delivery_mailbox_prefix']) ?
+                '| ' . $this->_params['delivery_agent'] . ' ' . $this->_params['delivery_mailbox_prefix'] . '$DEFAULT' :
+                '| ' . $this->_params['delivery_agent'] . ' $DEFAULT';
+        }
+
+        return rtrim($code) . "\n";
+    }
+
+    /**
+     * Generates the procmail script to do the filtering specified in the
+     * rules.
+     *
+     * @return string  The procmail script.
+     */
+    function generate()
+    {
+        $filters = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_FILTERS);
+
+        $this->addItem(new Procmail_Comment(_("procmail script generated by Ingo") . ' (' . date('F j, Y, g:i a') . ')'));
+
+        /* Add variable information, if present. */
+        if (!empty($this->_params['variables']) &&
+            is_array($this->_params['variables'])) {
+            foreach ($this->_params['variables'] as $key => $val) {
+                $this->addItem(new Procmail_Variable(array('name' => $key, 'value' => $val)));
+            }
+        }
+
+        foreach ($filters->getFilterlist() as $filter) {
+            switch ($filter['action']) {
+            case Ingo_Storage::ACTION_BLACKLIST:
+                $this->generateBlacklist(!empty($filter['disable']));
+                break;
+
+            case Ingo_Storage::ACTION_WHITELIST:
+                $this->generateWhitelist(!empty($filter['disable']));
+                break;
+
+            case Ingo_Storage::ACTION_VACATION:
+                $this->generateVacation(!empty($filter['disable']));
+                break;
+
+            case Ingo_Storage::ACTION_FORWARD:
+                $this->generateForward(!empty($filter['disable']));
+                break;
+
+            default:
+                if (in_array($filter['action'], $this->_actions)) {
+                    /* Create filter if using AND. */
+                    if ($filter['combine'] == Ingo_Storage::COMBINE_ALL) {
+                        $recipe = new Procmail_Recipe($filter, $this->_params);
+                        if (!$filter['stop']) {
+                            $recipe->addFlag('c');
+                        }
+                        foreach ($filter['conditions'] as $condition) {
+                            $recipe->addCondition($condition);
+                        }
+                        $this->addItem(new Procmail_Comment($filter['name'], !empty($filter['disable']), true));
+                        $this->addItem($recipe);
+                    } else {
+                        /* Create filter if using OR */
+                        $this->addItem(new Procmail_Comment($filter['name'], !empty($filter['disable']), true));
+                        $loop = 0;
+                        foreach ($filter['conditions'] as $condition) {
+                            $recipe = &new Procmail_Recipe($filter, $this->_params);
+                            if ($loop++) {
+                                $recipe->addFlag('E');
+                            }
+                            if (!$filter['stop']) {
+                                $recipe->addFlag('c');
+                            }
+                            $recipe->addCondition($condition);
+                            $this->addItem($recipe);
+                        }
+                    }
+                }
+            }
+        }
+
+        return $this->toCode();
+    }
+
+    /**
+     * Generates the procmail script to handle the blacklist specified in
+     * the rules.
+     *
+     * @param boolean $disable  Disable the blacklist?
+     */
+    function generateBlacklist($disable = false)
+    {
+        $blacklist = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_BLACKLIST);
+        $bl_addr = $blacklist->getBlacklist();
+        $bl_folder = $blacklist->getBlacklistFolder();
+
+        $bl_type = (empty($bl_folder)) ? Ingo_Storage::ACTION_DISCARD : Ingo_Storage::ACTION_MOVE;
+
+        if (!empty($bl_addr)) {
+            $this->addItem(new Procmail_Comment(_("Blacklisted Addresses"), $disable, true));
+            $params = array('action-value' => $bl_folder,
+                            'action' => $bl_type,
+                            'disable' => $disable);
+
+            foreach ($bl_addr as $address) {
+                if (!empty($address)) {
+                    $recipe = new Procmail_Recipe($params, $this->_params);
+                    $recipe->addCondition(array('field' => 'From', 'value' => $address, 'match' => 'address'));
+                    $this->addItem($recipe);
+                }
+            }
+        }
+    }
+
+    /**
+     * Generates the procmail script to handle the whitelist specified in
+     * the rules.
+     *
+     * @param boolean $disable  Disable the whitelist?
+     */
+    function generateWhitelist($disable = false)
+    {
+        $whitelist = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_WHITELIST);
+        $wl_addr = $whitelist->getWhitelist();
+
+        if (!empty($wl_addr)) {
+            $this->addItem(new Procmail_Comment(_("Whitelisted Addresses"), $disable, true));
+            foreach ($wl_addr as $address) {
+                if (!empty($address)) {
+                    $recipe = new Procmail_Recipe(array('action' => Ingo_Storage::ACTION_KEEP, 'disable' => $disable), $this->_params);
+                    $recipe->addCondition(array('field' => 'From', 'value' => $address, 'match' => 'address'));
+                    $this->addItem($recipe);
+                }
+            }
+        }
+    }
+
+    /**
+     * Generates the procmail script to handle vacation.
+     *
+     * @param boolean $disable  Disable vacation?
+     */
+    function generateVacation($disable = false)
+    {
+        $vacation = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_VACATION);
+        $addresses = $vacation->getVacationAddresses();
+        $actionval = array(
+            'addresses' => $addresses,
+            'subject' => $vacation->getVacationSubject(),
+            'days' => $vacation->getVacationDays(),
+            'reason' => $vacation->getVacationReason(),
+            'ignorelist' => $vacation->getVacationIgnorelist(),
+            'excludes' => $vacation->getVacationExcludes(),
+            'start' => $vacation->getVacationStart(),
+            'end' => $vacation->getVacationEnd(),
+        );
+
+        if (!empty($addresses)) {
+            $this->addItem(new Procmail_Comment(_("Vacation"), $disable, true));
+            $params = array('action' => Ingo_Storage::ACTION_VACATION,
+                            'action-value' => $actionval,
+                            'disable' => $disable);
+            $recipe = new Procmail_Recipe($params, $this->_params);
+            $this->addItem($recipe);
+        }
+    }
+
+    /**
+     * Generates the procmail script to handle mail forwards.
+     *
+     * @param boolean $disable  Disable forwarding?
+     */
+    function generateForward($disable = false)
+    {
+        $forward = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_FORWARD);
+        $addresses = $forward->getForwardAddresses();
+
+        if (!empty($addresses)) {
+            $this->addItem(new Procmail_Comment(_("Forwards"), $disable, true));
+            $params = array('action' => Ingo_Storage::ACTION_FORWARD,
+                            'action-value' => $addresses,
+                            'disable' => $disable);
+            $recipe = new Procmail_Recipe($params, $this->_params);
+            if ($forward->getForwardKeep()) {
+                $recipe->addFlag('c');
+            }
+            $this->addItem($recipe);
+        }
+    }
+
+    /**
+     * Adds an item to the recipe list.
+     *
+     * @param object $item  The item to add to the recipe list.
+     *                      The object should have a generate() function.
+     */
+    function addItem($item)
+    {
+        $this->_recipes[] = $item;
+    }
+
+}
+
+/**
+ * The Procmail_Comment:: class represents a Procmail comment.  This is
+ * a pretty simple class, but it makes the code in Ingo_Script_procmail::
+ * cleaner as it provides a generate() function and can be added to the
+ * recipe list the same way as a recipe can be.
+ *
+ * @author  Ben Chavet <ben@chavet.net>
+ * @since   Ingo 1.0
+ * @package Ingo
+ */
+class Procmail_Comment {
+
+    /**
+     * The comment text.
+     *
+     * @var string
+     */
+    var $_comment = '';
+
+    /**
+     * Constructs a new procmail comment.
+     *
+     * @param string $comment   Comment to be generated.
+     * @param boolean $disable  Output 'DISABLED' comment?
+     * @param boolean $header   Output a 'header' comment?
+     */
+    function Procmail_Comment($comment, $disable = false, $header = false)
+    {
+        if ($disable) {
+            $comment = _("DISABLED: ") . $comment;
+        }
+
+        if ($header) {
+            $this->_comment .= "##### $comment #####";
+        } else {
+            $this->_comment .= "# $comment";
+        }
+    }
+
+    /**
+     * Returns the comment stored by this object.
+     *
+     * @return string  The comment stored by this object.
+     */
+    function generate()
+    {
+        return $this->_comment;
+    }
+
+}
+
+/**
+ * The Procmail_Recipe:: class represents a Procmail recipe.
+ *
+ * @author  Ben Chavet <ben@chavet.net>
+ * @since   Ingo 1.0
+ * @package Ingo
+ */
+class Procmail_Recipe {
+
+    var $_action = array();
+    var $_conditions = array();
+    var $_disable = '';
+    var $_flags = '';
+    var $_params = array(
+        'date' => 'date',
+        'echo' => 'echo',
+        'ls'   => 'ls'
+    );
+    var $_valid = true;
+
+    /**
+     * Constructs a new procmail recipe.
+     *
+     * @param array $params        Array of parameters.
+     *                               REQUIRED FIELDS:
+     *                                'action'
+     *                               OPTIONAL FIELDS:
+     *                                'action-value' (only used if the
+     *                                'action' requires it)
+     * @param array $scriptparams  Array of parameters passed to
+     *                             Ingo_Script_procmail::.
+     */
+    function Procmail_Recipe($params = array(), $scriptparams = array())
+    {
+        $this->_disable = !empty($params['disable']);
+        $this->_params = array_merge($this->_params, $scriptparams);
+
+        switch ($params['action']) {
+        case Ingo_Storage::ACTION_KEEP:
+            // Note: you may have to set the DEFAULT variable in your
+            // backend configuration.
+            if (isset($this->_params['delivery_agent']) && isset($this->_params['delivery_mailbox_prefix'])) {
+                $this->_action[] = '| ' . $this->_params['delivery_agent'] . ' ' . $this->_params['delivery_mailbox_prefix'] . '$DEFAULT';
+            } elseif (isset($this->_params['delivery_agent'])) {
+                $this->_action[] = '| ' . $this->_params['delivery_agent'] . ' $DEFAULT';
+            } else {
+                $this->_action[] = '$DEFAULT';
+            }
+            break;
+
+        case Ingo_Storage::ACTION_MOVE:
+            if (isset($this->_params['delivery_agent']) && isset($this->_params['delivery_mailbox_prefix'])) {
+                $this->_action[] = '| ' . $this->_params['delivery_agent'] . ' ' . $this->_params['delivery_mailbox_prefix'] . $this->procmailPath($params['action-value']);
+            } elseif (isset($this->_params['delivery_agent'])) {
+                $this->_action[] = '| ' . $this->_params['delivery_agent'] . ' ' . $this->procmailPath($params['action-value']);
+            } else {
+                $this->_action[] = $this->procmailPath($params['action-value']);
+            }
+            break;
+
+        case Ingo_Storage::ACTION_DISCARD:
+            $this->_action[] = '/dev/null';
+            break;
+
+        case Ingo_Storage::ACTION_REDIRECT:
+            $this->_action[] = '! ' . $params['action-value'];
+            break;
+
+        case Ingo_Storage::ACTION_REDIRECTKEEP:
+            $this->_action[] = '{';
+            $this->_action[] = '  :0 c';
+            $this->_action[] = '  ! ' . $params['action-value'];
+            $this->_action[] = '';
+            $this->_action[] = '  :0' . (isset($this->_params['delivery_agent']) ? ' w' : '');
+            if (isset($this->_params['delivery_agent']) && isset($this->_params['delivery_mailbox_prefix'])) {
+                $this->_action[] = '  | ' . $this->_params['delivery_agent'] . ' ' . $this->_params['delivery_mailbox_prefix'] . '$DEFAULT';
+            } elseif (isset($this->_params['delivery_agent'])) {
+                $this->_action[] = '  | ' . $this->_params['delivery_agent'] . ' $DEFAULT';
+            } else {
+                $this->_action[] = '  $DEFAULT';
+            }
+            $this->_action[] = '}';
+            break;
+
+        case Ingo_Storage::ACTION_REJECT:
+            $this->_action[] = '{';
+            $this->_action[] = '  EXITCODE=' . $params['action-value'];
+            $this->_action[] = '  HOST="no.address.here"';
+            $this->_action[] = '}';
+            break;
+
+        case Ingo_Storage::ACTION_VACATION:
+            $days = $params['action-value']['days'];
+            $timed = !empty($params['action-value']['start']) &&
+                !empty($params['action-value']['end']);
+            $this->_action[] = '{';
+            foreach ($params['action-value']['addresses'] as $address) {
+                if (!empty($address)) {
+                    $this->_action[] = '  FILEDATE=`test -f ${VACATION_DIR:-.}/\'.vacation.' . $address . '\' && '
+                        . $this->_params['ls'] . ' -lcn --time-style=+%s ${VACATION_DIR:-.}/\'.vacation.' . $address . '\' | '
+                        . 'awk \'{ print $6 + (' . $days * 86400 . ') }\'`';
+                    $this->_action[] = '  DATE=`' . $this->_params['date'] . ' +%s`';
+                    $this->_action[] = '  DUMMY=`test -f ${VACATION_DIR:-.}/\'.vacation.' . $address . '\' && '
+                        . 'test $FILEDATE -le $DATE && '
+                        . 'rm ${VACATION_DIR:-.}/\'.vacation.' . $address . '\'`';
+                    if ($timed) {
+                        $this->_action[] = '  START=' . $params['action-value']['start'];
+                        $this->_action[] = '  END=' . $params['action-value']['end'];
+                    }
+                    $this->_action[] = '';
+                    $this->_action[] = '  :0 h';
+                    $this->_action[] = '  SUBJECT=| formail -xSubject:';
+                    $this->_action[] = '';
+                    $this->_action[] = '  :0 Whc: ${VACATION_DIR:-.}/vacation.lock';
+                    if ($timed) {
+                        $this->_action[] = '  * ? test $DATE -gt $START && test $END -gt $DATE';
+                        $this->_action[] = '  {';
+                        $this->_action[] = '  :0 Whc';
+                    }
+                    $this->_action[] = '  * ^TO_' . $address;
+                    $this->_action[] = '  * !^X-Loop: ' . $address;
+                    $this->_action[] = '  * !^X-Spam-Flag: YES';
+                    if (count($params['action-value']['excludes']) > 0) {
+                        foreach ($params['action-value']['excludes'] as $exclude) {
+                            if (!empty($exclude)) {
+                                $this->_action[] = '  * !^From.*' . $exclude;
+                            }
+                        }
+                    }
+                    if ($params['action-value']['ignorelist']) {
+                        $this->_action[] = '  * !^FROM_DAEMON';
+                    }
+                    $this->_action[] = '  | formail -rD 8192 ${VACATION_DIR:-.}/.vacation.' . $address;
+                    $this->_action[] = '  :0 ehc';
+                    $this->_action[] = '  | (formail -rI"Precedence: junk" \\';
+                    $this->_action[] = '     -a"From: <' . $address . '>" \\';
+                    $this->_action[] = '     -A"X-Loop: ' . $address . '" \\';
+                    if (Horde_Mime::is8bit($params['action-value']['reason'])) {
+                        $this->_action[] = '     -i"Subject: ' . Horde_Mime::encode($params['action-value']['subject'] . ' (Re: $SUBJECT)', NLS::getCharset()) . '" \\';
+                        $this->_action[] = '     -i"Content-Transfer-Encoding: quoted-printable" \\';
+                        $this->_action[] = '     -i"Content-Type: text/plain; charset=' . NLS::getCharset() . '" ; \\';
+                        $reason = Horde_Mime::quotedPrintableEncode($params['action-value']['reason'], "\n");
+                    } else {
+                        $this->_action[] = '     -i"Subject: ' . Horde_Mime::encode($params['action-value']['subject'] . ' (Re: $SUBJECT)', NLS::getCharset()) . '" ; \\';
+                        $reason = $params['action-value']['reason'];
+                    }
+                    $reason = addcslashes($reason, "\\\n\r\t\"`");
+                    $this->_action[] = '     ' . $this->_params['echo'] . ' -e "' . $reason . '" \\';
+                    $this->_action[] = '    ) | $SENDMAIL -f' . $address . ' -oi -t';
+                    $this->_action[] = '';
+                    $this->_action[] = '    :0';
+                    $this->_action[] = '    /dev/null';
+                    if ($timed) {
+                        $this->_action[] = '  }';
+                    }
+                }
+            }
+            $this->_action[] = '}';
+            break;
+
+        case Ingo_Storage::ACTION_FORWARD:
+            /* Make sure that we prevent mail loops using 3 methods.
+             *
+             * First, we call sendmail -f to set the envelope sender to be the
+             * same as the original sender, so bounces will go to the original
+             * sender rather than to us.  This unfortunately triggers lots of
+             * Authentication-Warning: messages in sendmail's logs.
+             *
+             * Second, add an X-Loop header, to handle the case where the
+             * address we forward to forwards back to us.
+             *
+             * Third, don't forward mailer daemon messages (i.e., bounces).
+             * Method 1 above should make this redundant, unless we're sending
+             * mail from this account and have a bad forward-to account.
+             *
+             * Get the from address, saving a call to formail if possible.
+             * The procmail code for doing this is borrowed from the
+             * Procmail Library Project, http://pm-lib.sourceforge.net/.
+             * The Ingo project has the permission to use Procmail Library code
+             * under Apache licence v 1.x or any later version.
+             * Permission obtained 2006-04-04 from Author Jari Aalto. */
+            $this->_action[] = '{';
+            $this->_action[] = '  :0 ';
+            $this->_action[] = '  *$ ! ^From *\/[^  ]+';
+            $this->_action[] = '  *$ ! ^Sender: *\/[^   ]+';
+            $this->_action[] = '  *$ ! ^From: *\/[^     ]+';
+            $this->_action[] = '  *$ ! ^Reply-to: *\/[^     ]+';
+            $this->_action[] = '  {';
+            $this->_action[] = '    OUTPUT = `formail -zxFrom:`';
+            $this->_action[] = '  }';
+            $this->_action[] = '  :0 E';
+            $this->_action[] = '  {';
+            $this->_action[] = '    OUTPUT = $MATCH';
+            $this->_action[] = '  }';
+            $this->_action[] = '';
+
+            /* Forward to each address on our list. */
+            foreach ($params['action-value'] as $address) {
+                if (!empty($address)) {
+                    $this->_action[] = '  :0 c';
+                    $this->_action[] = '  * !^FROM_MAILER';
+                    $this->_action[] = '  * !^X-Loop: to-' . $address;
+                    $this->_action[] = '  | formail -A"X-Loop: to-' . $address . '" | $SENDMAIL -oi -f $OUTPUT ' . $address;
+                }
+            }
+
+            /* In case of mail loop or bounce, store a copy locally.  Note
+             * that if we forward to more than one address, only a mail loop
+             * on the last address will cause a local copy to be saved.  TODO:
+             * The next two lines are redundant (and create an extra copy of
+             * the message) if "Keep a copy of messages in this account" is
+             * checked. */
+            $this->_action[] = '  :0 E' . (isset($this->_params['delivery_agent']) ? 'w' : '');
+            if (isset($this->_params['delivery_agent'])) {
+                $this->_action[] = isset($this->_params['delivery_mailbox_prefix']) ?
+                    ' | ' . $this->_params['delivery_agent'] . ' ' . $this->_params['delivery_mailbox_prefix'] . '$DEFAULT' :
+                    ' | ' . $this->_params['delivery_agent'] . ' $DEFAULT';
+            } else {
+                $this->_action[] = '  $DEFAULT';
+            }
+            $this->_action[] = '  :0 ';
+            $this->_action[] = '  /dev/null';
+            $this->_action[] = '}';
+            break;
+
+        default:
+            $this->_valid = false;
+            break;
+        }
+    }
+
+    /**
+     * Adds a flag to the recipe.
+     *
+     * @param string $flag  String of flags to append to the current flags.
+     */
+    function addFlag($flag)
+    {
+        $this->_flags .= $flag;
+    }
+
+    /**
+     * Adds a condition to the recipe.
+     *
+     * @param array $condition  Array of parameters. Required keys are 'field'
+     *                          and 'value'. 'case' is an optional key.
+     */
+    function addCondition($condition = array())
+    {
+        $flag = !empty($condition['case']) ? 'D' : '';
+        $match = isset($condition['match']) ? $condition['match'] : null;
+        $string = '';
+        $prefix = '';
+
+        switch ($condition['field']) {
+        case 'Destination':
+            $string = '^TO_';
+            break;
+
+        case 'Body':
+            $flag .= 'B';
+            break;
+
+        default:
+            // convert 'field' to PCRE pattern matching
+            if (strpos($condition['field'], ',') == false) {
+                $string = '^' . $condition['field'] . ':';
+            } else {
+                $string .= '/^(' . str_replace(',', '|', $condition['field']) . '):';
+            }
+            $prefix = ' ';
+        }
+
+        $reverseCondition = false;
+        switch ($match) {
+        case 'regex':
+            $string .= $prefix . $condition['value'];
+            break;
+
+        case 'address':
+            $string .= '(.*\<)?' . quotemeta($condition['value']);
+            break;
+
+        case 'not begins with':
+            $reverseCondition = true;
+            // fall through
+        case 'begins with':
+            $string .= $prefix . quotemeta($condition['value']);
+            break;
+
+        case 'not ends with':
+            $reverseCondition = true;
+            // fall through
+        case 'ends with':
+            $string .= '.*' . quotemeta($condition['value']) . '$';
+            break;
+
+        case 'not contain':
+            $reverseCondition = true;
+            // fall through
+        case 'contains':
+        default:
+            $string .= '.*' . quotemeta($condition['value']);
+            break;
+        }
+
+        $this->_conditions[] = array('condition' => ($reverseCondition ? '* !' : '* ') . $string,
+                                     'flags' => $flag);
+    }
+
+    /**
+     * Generates procmail code to represent the recipe.
+     *
+     * @return string  Procmail code to represent the recipe.
+     */
+    function generate()
+    {
+        $nest = 0;
+        $prefix = '';
+        $text = array();
+
+        if (!$this->_valid) {
+            return '';
+        }
+
+        // Set the global flags for the whole rule, each condition
+        // will add its own (such as Body or Case Sensitive)
+        $global = $this->_flags;
+        if (isset($this->_conditions[0])) {
+            $global .= $this->_conditions[0]['flags'];
+        }
+        $text[] = ':0 ' . $global . (isset($this->_params['delivery_agent']) ? 'w' : '');
+        foreach ($this->_conditions as $condition) {
+            if ($nest > 0) {
+                $text[] = str_repeat('  ', $nest - 1) . '{';
+                $text[] = str_repeat('  ', $nest) . ':0 ' . $condition['flags'];
+                $text[] = str_repeat('  ', $nest) . $condition['condition'];
+            } else {
+                $text[] = $condition['condition'];
+            }
+            $nest++;
+        }
+
+        if (--$nest > 0) {
+            $prefix = str_repeat('  ', $nest);
+        }
+        foreach ($this->_action as $val) {
+            $text[] = $prefix . $val;
+        }
+
+        for ($i = $nest; $i > 0; $i--) {
+            $text[] = str_repeat('  ', $i - 1) . '}';
+        }
+
+        if ($this->_disable) {
+            $code = '';
+            foreach ($text as $val) {
+                $comment = new Procmail_Comment($val);
+                $code .= $comment->generate() . "\n";
+            }
+            return $code . "\n";
+        } else {
+            return implode("\n", $text) . "\n";
+        }
+    }
+
+    /**
+     * Returns a procmail-ready mailbox path, converting IMAP folder
+     * pathname conventions as necessary.
+     *
+     * @param string $folder  The IMAP folder name.
+     *
+     * @return string  The procmail mailbox path.
+     */
+    function procmailPath($folder)
+    {
+        /* NOTE: '$DEFAULT' here is a literal, not a PHP variable. */
+        if (isset($this->_params) &&
+            ($this->_params['path_style'] == 'maildir')) {
+            if (empty($folder) || ($folder == 'INBOX')) {
+                return '$DEFAULT';
+            }
+            if (substr($folder, 0, 6) == 'INBOX.') {
+                $folder = substr($folder, 6);
+            }
+            return '"$DEFAULT/.' . escapeshellcmd($folder) . '/"';
+        } else {
+            if (empty($folder) || ($folder == 'INBOX')) {
+                return '$DEFAULT';
+            }
+            return str_replace(' ', '\ ', escapeshellcmd($folder));
+        }
+    }
+
+}
+
+/**
+ * The Procmail_Variable:: class represents a Procmail variable.
+ *
+ * @author  Michael Slusarz <slusarz@horde.org>
+ * @since   Ingo 1.0
+ * @package Ingo
+ */
+class Procmail_Variable {
+
+    var $_name;
+    var $_value;
+
+    /**
+     * Constructs a new procmail variable.
+     *
+     * @param array $params  Array of parameters. Expected fields are 'name'
+     *                       and 'value'.
+     */
+    function Procmail_Variable($params = array())
+    {
+        $this->_name = $params['name'];
+        $this->_value = $params['value'];
+    }
+
+    /**
+     * Generates procmail code to represent the variable.
+     *
+     * @return string  Procmail code to represent the variable.
+     */
+    function generate()
+    {
+        return $this->_name . '=' . $this->_value . "\n";
+    }
+
+}
diff --git a/ingo/lib/Script/sieve.php b/ingo/lib/Script/sieve.php
new file mode 100644 (file)
index 0000000..1995e11
--- /dev/null
@@ -0,0 +1,2976 @@
+<?php
+/**
+ * The Ingo_Script_sieve class represents a Sieve Script.
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @package Ingo
+ */
+class Ingo_Script_sieve extends Ingo_Script {
+
+    /**
+     * The list of actions allowed (implemented) for this driver.
+     *
+     * @var array
+     */
+    var $_actions = array(
+        Ingo_Storage::ACTION_KEEP,
+        Ingo_Storage::ACTION_MOVE,
+        Ingo_Storage::ACTION_DISCARD,
+        Ingo_Storage::ACTION_REDIRECT,
+        Ingo_Storage::ACTION_REDIRECTKEEP,
+        Ingo_Storage::ACTION_MOVEKEEP,
+        Ingo_Storage::ACTION_REJECT,
+        Ingo_Storage::ACTION_FLAGONLY,
+        Ingo_Storage::ACTION_NOTIFY
+    );
+
+    /**
+     * The categories of filtering allowed.
+     *
+     * @var array
+     */
+    var $_categories = array(
+        Ingo_Storage::ACTION_BLACKLIST,
+        Ingo_Storage::ACTION_WHITELIST,
+        Ingo_Storage::ACTION_VACATION,
+        Ingo_Storage::ACTION_FORWARD,
+        Ingo_Storage::ACTION_SPAM
+    );
+
+    /**
+     * The list of tests allowed (implemented) for this driver.
+     *
+     * @var array
+     */
+    var $_tests = array(
+        'contains', 'not contain', 'is', 'not is', 'begins with',
+        'not begins with', 'ends with', 'not ends with', 'exists', 'not exist',
+        'less than', 'less than or equal to', 'equal', 'not equal',
+        'greater than', 'greater than or equal to', 'regex', 'matches',
+        'not matches'
+    );
+
+    /**
+     * The types of tests allowed (implemented) for this driver.
+     *
+     * @var array
+     */
+    var $_types = array(
+        Ingo_Storage::TYPE_HEADER,
+        Ingo_Storage::TYPE_SIZE,
+        Ingo_Storage::TYPE_BODY
+    );
+
+    /**
+     * Can tests be case sensitive?
+     *
+     * @var boolean
+     */
+    var $_casesensitive = true;
+
+    /**
+     * Does the driver support setting IMAP flags?
+     *
+     * @var boolean
+     */
+    var $_supportIMAPFlags = true;
+
+    /**
+     * Does the driver support the stop-script option?
+     *
+     * @var boolean
+     */
+    var $_supportStopScript = true;
+
+    /**
+     * Does the driver require a script file to be generated?
+     *
+     * @var boolean
+     */
+    var $_scriptfile = true;
+
+    /**
+     * The blocks that make up the code.
+     *
+     * @var array
+     */
+    var $_blocks = array();
+
+    /**
+     * The blocks that have to appear at the end of the code.
+     *
+     * @var array
+     */
+    var $_endBlocks = array();
+
+    /**
+     * Returns a script previously generated with generate().
+     *
+     * @return string  The Sieve script.
+     */
+    function toCode()
+    {
+        $date_format = $GLOBALS['prefs']->getValue('date_format');
+        // %R and %r don't work on Windows, but who runs a Sieve backend on a
+        // Windows server?
+        $time_format = $GLOBALS['prefs']->getValue('twentyFour') ? '%R' : '%r';
+        $code = "# Sieve Filter\n# "
+            . _("Generated by Ingo (http://www.horde.org/ingo/)") . ' ('
+            . trim(strftime($date_format . ', ' . $time_format))
+            . ")\n\n";
+        $code = String::convertCharset($code, NLS::getCharset(), 'UTF-8');
+        $requires = $this->requires();
+
+        if (count($requires) > 1) {
+            $stringlist = '';
+            foreach ($this->requires() as $require) {
+                $stringlist .= (empty($stringlist)) ? '"' : ', "';
+                $stringlist .= $require . '"';
+            }
+            $code .= 'require [' . $stringlist . '];' . "\n\n";
+        } elseif (count($requires) == 1) {
+            foreach ($this->requires() as $require) {
+                $code .= 'require "' . $require . '";' . "\n\n";
+            }
+        }
+
+        foreach ($this->_blocks as $block) {
+            $code .= $block->toCode() . "\n";
+        }
+
+        return rtrim($code) . "\n";
+    }
+
+    /**
+     * Escape a string according to Sieve RFC 3028 [2.4.2].
+     *
+     * @param string $string      The string to escape.
+     * @param boolean $regexmode  Is the escaped string a regex value?
+     *                            Defaults to no.
+     *
+     * @return string  The escaped string.
+     */
+    function escapeString($string, $regexmode = false)
+    {
+        /* Remove any backslashes in front of commas. */
+        $string = str_replace('\,', ',', $string);
+
+        if ($regexmode) {
+            return str_replace('"', addslashes('"'), $string);
+        } else {
+            return str_replace(array('\\', '"'), array(addslashes('\\'), addslashes('"')), $string);
+        }
+    }
+
+    /**
+     * Checks if all rules are valid.
+     *
+     * @return boolean|string  True if all rules are valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        foreach ($this->_blocks as $block) {
+            $res = $block->check();
+            if ($res !== true) {
+                return $res;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        $requires = array();
+        foreach ($this->_blocks as $block) {
+            $requires = array_merge($requires, $block->requires());
+        }
+
+        return array_unique($requires);
+    }
+
+    /**
+     * Adds all blocks necessary for the forward rule.
+     */
+    function _addForwardBlocks()
+    {
+        if (!$this->_validRule(Ingo_Storage::ACTION_FORWARD)) {
+            return;
+        }
+
+        $forward = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_FORWARD);
+        $fwd_addr = $forward->getForwardAddresses();
+        if (empty($fwd_addr)) {
+            return;
+        }
+
+        $action = array();
+        foreach ($fwd_addr as $addr) {
+            $addr = trim($addr);
+            if (!empty($addr)) {
+                $action[] = new Sieve_Action_Redirect(array('address' => $addr));
+            }
+        }
+
+        if (count($action)) {
+            if($forward->getForwardKeep()) {
+                $this->_endBlocks[] = new Sieve_Comment(_("Forward Keep Action"));
+                $if = new Sieve_If(new Sieve_Test_True());
+                $if->setActions(array(new Sieve_Action_Keep(),
+                                      new Sieve_Action_Stop()));
+                $this->_endBlocks[] = $if;
+            } else {
+                $action[] = new Sieve_Action_Stop();
+            }
+        }
+
+        $this->_blocks[] = new Sieve_Comment(_("Forwards"));
+
+        $test = new Sieve_Test_True();
+        $if = new Sieve_If($test);
+        $if->setActions($action);
+        $this->_blocks[] = $if;
+    }
+
+    /**
+     * Adds all blocks necessary for the blacklist rule.
+     */
+    function _addBlacklistBlocks()
+    {
+        if (!$this->_validRule(Ingo_Storage::ACTION_BLACKLIST)) {
+            return;
+        }
+
+        $blacklist = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_BLACKLIST);
+        $bl_addr = $blacklist->getBlacklist();
+        $folder = $blacklist->getBlacklistFolder();
+        if (empty($bl_addr)) {
+            return;
+        }
+
+        $action = array();
+        if (empty($folder)) {
+            $action[] = new Sieve_Action_Discard();
+        } elseif ($folder == INGO_BLACKLIST_MARKER) {
+            $action[] = new Sieve_Action_Addflag(array('flags' => Ingo_Storage::FLAG_DELETED));
+            $action[] = new Sieve_Action_Keep();
+            $action[] = new Sieve_Action_Removeflag(array('flags' => Ingo_Storage::FLAG_DELETED));
+        } else {
+            $action[] = new Sieve_Action_Fileinto(array('folder' => $folder));
+        }
+
+        $action[] = new Sieve_Action_Stop();
+
+        $this->_blocks[] = new Sieve_Comment(_("Blacklisted Addresses"));
+
+        /* Split the test up to only do 5 addresses at a time. */
+        $temp = array();
+        $wildcards = array();
+        foreach ($bl_addr as $address) {
+            if (!empty($address)) {
+                if ((strstr($address, '*') !== false) ||
+                    (strstr($address, '?') !== false)) {
+                    $wildcards[] = $address;
+                } else {
+                    $temp[] = $address;
+                }
+            }
+            if (count($temp) == 5) {
+                $test = new Sieve_Test_Address(array('headers' => "From\nSender\nResent-From", 'addresses' => implode("\n", $temp)));
+                $if = new Sieve_If($test);
+                $if->setActions($action);
+                $this->_blocks[] = $if;
+                $temp = array();
+            }
+            if (count($wildcards) == 5) {
+                $test = new Sieve_Test_Address(array('headers' => "From\nSender\nResent-From", 'match-type' => ':matches', 'addresses' => implode("\n", $wildcards)));
+                $if = new Sieve_If($test);
+                $if->setActions($action);
+                $this->_blocks[] = $if;
+                $wildcards = array();
+            }
+        }
+
+        if ($temp) {
+            $test = new Sieve_Test_Address(array('headers' => "From\nSender\nResent-From", 'addresses' => implode("\n", $temp)));
+            $if = new Sieve_If($test);
+            $if->setActions($action);
+            $this->_blocks[] = $if;
+        }
+
+        if ($wildcards) {
+            $test = new Sieve_Test_Address(array('headers' => "From\nSender\nResent-From", 'match-type' => ':matches', 'addresses' => implode("\n", $wildcards)));
+            $if = new Sieve_If($test);
+            $if->setActions($action);
+            $this->_blocks[] = $if;
+        }
+    }
+
+    /**
+     * Adds all blocks necessary for the whitelist rule.
+     */
+    function _addWhitelistBlocks()
+    {
+        if (!$this->_validRule(Ingo_Storage::ACTION_WHITELIST)) {
+            return;
+        }
+
+        $whitelist = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_WHITELIST);
+        $wl_addr = $whitelist->getWhitelist();
+        if (empty($wl_addr)) {
+            return;
+        }
+
+        $this->_blocks[] = new Sieve_Comment(_("Whitelisted Addresses"));
+
+        $action = array(new Sieve_Action_Keep(), new Sieve_Action_Stop());
+        $test = new Sieve_Test_Address(array('headers' => "From\nSender\nResent-From", 'addresses' => implode("\n", $wl_addr)));
+        $if = new Sieve_If($test);
+        $if->setActions($action);
+        $this->_blocks[] = $if;
+    }
+
+    /**
+     * Adds all blocks necessary for the vacation rule.
+     */
+    function _addVacationBlocks()
+    {
+        if (!$this->_validRule(Ingo_Storage::ACTION_VACATION)) {
+            return;
+        }
+
+        $vacation = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_VACATION);
+        $vacation_addr = $vacation->getVacationAddresses();
+        if (!count($vacation_addr)) {
+            return;
+        }
+
+        $vals = array(
+            'subject' => String::convertCharset($vacation->getVacationSubject(), NLS::getCharset(), 'UTF-8'),
+            'days' => $vacation->getVacationDays(),
+            'addresses' => $vacation_addr,
+            'start' => $vacation->getVacationStart(),
+            'start_year' => $vacation->getVacationStartYear(),
+            'start_month' => $vacation->getVacationStartMonth(),
+            'start_day' => $vacation->getVacationStartDay(),
+            'end' => $vacation->getVacationEnd(),
+            'end_year' => $vacation->getVacationEndYear(),
+            'end_month' => $vacation->getVacationEndMonth(),
+            'end_day' => $vacation->getVacationEndDay(),
+            'reason' => String::convertCharset($vacation->getVacationReason(), NLS::getCharset(), 'UTF-8'),
+        );
+
+        $action = $tests = array();
+        $action[] = new Sieve_Action_Vacation($vals);
+
+        if ($vacation->getVacationIgnorelist()) {
+            $mime_headers = new Horde_Mime_Headers();
+            $headers = $mime_headers->listHeaders();
+            $headers['Mailing-List'] = null;
+            $tmp = new Sieve_Test_Exists(array('headers' => implode("\n", array_keys($headers))));
+            $tests[] = new Sieve_Test_Not($tmp);
+            $vals = array('headers' => 'Precedence',
+                          'match-type' => ':is',
+                          'strings' => "list\nbulk\njunk",
+                          'comparator' => 'i;ascii-casemap');
+            $tmp = new Sieve_Test_Header($vals);
+            $tests[] = new Sieve_Test_Not($tmp);
+            $vals = array('headers' => 'To',
+                          'match-type' => ':matches',
+                          'strings' => 'Multiple recipients of*',
+                          'comparator' => 'i;ascii-casemap');
+            $tmp = new Sieve_Test_Header($vals);
+            $tests[] = new Sieve_Test_Not($tmp);
+        }
+
+        $addrs = array();
+        foreach ($vacation->getVacationExcludes() as $addr) {
+            $addr = trim($addr);
+            if (!empty($addr)) {
+                $addrs[] = $addr;
+            }
+        }
+
+        if ($addrs) {
+            $tmp = new Sieve_Test_Address(array('headers' => "From\nSender\nResent-From", 'addresses' => implode("\n", $addrs)));
+            $tests[] = new Sieve_Test_Not($tmp);
+        }
+
+        $this->_blocks[] = new Sieve_Comment(_("Vacation"));
+
+        if ($tests) {
+            $test = new Sieve_Test_Allof($tests);
+            $if = new Sieve_If($test);
+            $if->setActions($action);
+            $this->_blocks[] = $if;
+        } else {
+            $this->_blocks[] = $action[0];
+        }
+    }
+
+    /**
+     * Adds all blocks necessary for the spam rule.
+     */
+    function _addSpamBlocks()
+    {
+        if (!$this->_validRule(Ingo_Storage::ACTION_SPAM)) {
+            return;
+        }
+
+        $spam = &$GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_SPAM);
+        if ($spam === false) {
+            return;
+        }
+
+        $this->_blocks[] = new Sieve_Comment(_("Spam Filter"));
+
+        $actions = array();
+        $actions[] = new Sieve_Action_Fileinto(array(
+            'folder' => $spam->getSpamFolder()
+        ));
+
+        if ($GLOBALS['conf']['spam']['compare'] == 'numeric') {
+            $vals = array(
+                'headers' => $GLOBALS['conf']['spam']['header'],
+                'comparison' => 'ge',
+                'value' => $spam->getSpamLevel(),
+            );
+            $test = new Sieve_Test_Relational($vals);
+        } elseif ($GLOBALS['conf']['spam']['compare'] == 'string') {
+            $vals = array(
+                'headers' => $GLOBALS['conf']['spam']['header'],
+                'match-type' => ':contains',
+                'strings' => str_repeat($GLOBALS['conf']['spam']['char'],
+                                        $spam->getSpamLevel()),
+                'comparator' => 'i;ascii-casemap',
+            );
+            $test = new Sieve_Test_Header($vals);
+        }
+
+        $actions[] = new Sieve_Action_Stop();
+
+        $if = new Sieve_If($test);
+        $if->setActions($actions);
+        $this->_blocks[] = $if;
+    }
+
+    /**
+     * Generates the Sieve script to do the filtering specified in
+     * the rules.
+     *
+     * @return string  The Sieve script.
+     */
+    function generate()
+    {
+        global $ingo_storage;
+
+        $filters = &$ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS);
+        foreach ($filters->getFilterlist() as $filter) {
+            /* Check to make sure this is a valid rule and that the rule
+               is not disabled. */
+            if (!$this->_validRule($filter['action']) ||
+                !empty($filter['disable'])) {
+                continue;
+            }
+
+            $action = array();
+            switch ($filter['action']) {
+            case Ingo_Storage::ACTION_KEEP:
+                if (!empty($filter['flags'])) {
+                    $action[] = new Sieve_Action_Addflag(array('flags' => $filter['flags']));
+                }
+
+                $action[] = new Sieve_Action_Keep();
+
+                if (!empty($filter['flags'])) {
+                    $action[] = new Sieve_Action_RemoveFlag(array('flags' => $filter['flags']));
+                }
+                break;
+
+            case Ingo_Storage::ACTION_DISCARD:
+                $action[] = new Sieve_Action_Discard();
+                break;
+
+            case Ingo_Storage::ACTION_MOVE:
+                if (!empty($filter['flags'])) {
+                    $action[] = new Sieve_Action_Addflag(array('flags' => $filter['flags']));
+                }
+
+                $action[] = new Sieve_Action_Fileinto(array('folder' => $filter['action-value']));
+
+                if (!empty($filter['flags'])) {
+                    $action[] = new Sieve_Action_RemoveFlag(array('flags' => $filter['flags']));
+                    }
+                break;
+
+            case Ingo_Storage::ACTION_REJECT:
+                $action[] = new Sieve_Action_Reject(array('reason' => $filter['action-value']));
+                break;
+
+            case Ingo_Storage::ACTION_REDIRECT:
+                $action[] = new Sieve_Action_Redirect(array('address' => $filter['action-value']));
+                break;
+
+            case Ingo_Storage::ACTION_REDIRECTKEEP:
+                if (!empty($filter['flags'])) {
+                    $action[] = new Sieve_Action_Addflag(array('flags' => $filter['flags']));
+                }
+
+                $action[] = new Sieve_Action_Redirect(array('address' => $filter['action-value']));
+                $action[] = new Sieve_Action_Keep();
+
+                if (!empty($filter['flags'])) {
+                    $action[] = new Sieve_Action_RemoveFlag(array('flags' => $filter['flags']));
+                }
+                break;
+
+            case Ingo_Storage::ACTION_MOVEKEEP:
+                if (!empty($filter['flags'])) {
+                    $action[] = new Sieve_Action_Addflag(array('flags' => $filter['flags']));
+                }
+
+                $action[] = new Sieve_Action_Keep();
+                $action[] = new Sieve_Action_Fileinto(array('folder' => $filter['action-value']));
+
+                if (!empty($filter['flags'])) {
+                    $action[] = new Sieve_Action_RemoveFlag(array('flags' => $filter['flags']));
+                }
+                break;
+
+            case Ingo_Storage::ACTION_FLAGONLY:
+                if (!empty($filter['flags'])) {
+                    $action[] = new Sieve_Action_Addflag(array('flags' => $filter['flags']));
+                }
+                break;
+
+            case Ingo_Storage::ACTION_NOTIFY:
+                $action[] = new Sieve_Action_Notify(array('address' => $filter['action-value'], 'name' => $filter['name']));
+                break;
+
+            case Ingo_Storage::ACTION_WHITELIST:
+                $this->_addWhitelistBlocks();
+                continue 2;
+
+            case Ingo_Storage::ACTION_BLACKLIST:
+                $this->_addBlacklistBlocks();
+                continue 2;
+
+            case Ingo_Storage::ACTION_VACATION:
+                $this->_addVacationBlocks();
+                continue 2;
+
+            case Ingo_Storage::ACTION_FORWARD:
+                $this->_addForwardBlocks();
+                 continue 2;
+
+            case Ingo_Storage::ACTION_SPAM:
+                $this->_addSpamBlocks();
+                continue 2;
+            }
+
+            $this->_blocks[] = new Sieve_Comment($filter['name']);
+
+            if ($filter['stop']) {
+                $action[] = new Sieve_Action_Stop();
+            }
+
+            $test = new Sieve_Test();
+            if ($filter['combine'] == Ingo_Storage::COMBINE_ANY) {
+                $test = new Sieve_Test_Anyof();
+            } else {
+                $test = new Sieve_Test_Allof();
+            }
+
+            foreach ($filter['conditions'] as $condition) {
+                $tmp = '';
+                switch ($condition['match']) {
+                case 'equal to':
+                    $tmp = new Sieve_Test_Relational(array('comparison' => 'eq', 'headers' => $condition['field'], 'value' => $condition['value']));
+                    $test->addTest($tmp);
+                    break;
+
+                case 'not equal':
+                    $tmp = new Sieve_Test_Relational(array('comparison' => 'ne', 'headers' => $condition['field'], 'value' => $condition['value']));
+                    $test->addTest($tmp);
+                    break;
+
+                case 'less than':
+                    if ($condition['field'] == 'Size') {
+                        /* Message Size Test. */
+                        $tmp = new Sieve_Test_Size(array('comparison' => ':under', 'size' => $condition['value']));
+                    } else {
+                        /* Relational Test. */
+                        $tmp = new Sieve_Test_Relational(array('comparison' => 'lt', 'headers' => $condition['field'], 'value' => $condition['value']));
+                    }
+                    $test->addTest($tmp);
+                    break;
+
+                case 'less than or equal to':
+                    $tmp = new Sieve_Test_Relational(array('comparison' => 'le', 'headers' => $condition['field'], 'value' => $condition['value']));
+                    $test->addTest($tmp);
+                    break;
+
+                case 'greater than':
+                    if ($condition['field'] == 'Size') {
+                        /* Message Size Test. */
+                        $tmp = new Sieve_Test_Size(array('comparison' => ':over', 'size' => $condition['value']));
+                    } else {
+                        /* Relational Test. */
+                        $tmp = new Sieve_Test_Relational(array('comparison' => 'gt', 'headers' => $condition['field'], 'value' => $condition['value']));
+                    }
+                    $test->addTest($tmp);
+                    break;
+
+                case 'greater than or equal to':
+                    $tmp = new Sieve_Test_Relational(array('comparison' => 'ge', 'headers' => $condition['field'], 'value' => $condition['value']));
+                    $test->addTest($tmp);
+                    break;
+
+                case 'exists':
+                    $tmp = new Sieve_Test_Exists(array('headers' => $condition['field']));
+                    $test->addTest($tmp);
+                    break;
+
+                case 'not exist':
+                    $tmp = new Sieve_Test_Exists(array('headers' => $condition['field']));
+                    $test->addTest(new Sieve_Test_Not($tmp));
+                    break;
+
+                case 'contains':
+                case 'not contain':
+                case 'is':
+                case 'not is':
+                case 'begins with':
+                case 'not begins with':
+                case 'ends with':
+                case 'not ends with':
+                case 'regex':
+                case 'matches':
+                case 'not matches':
+                    $comparator = (isset($condition['case']) &&
+                                   $condition['case'])
+                        ? 'i;octet'
+                        : 'i;ascii-casemap';
+                    $vals = array('headers' => preg_replace('/(.)(?<!\\\)\,(.)/',
+                                                            "$1\n$2",
+                                                            $condition['field']),
+                                  'comparator' => $comparator);
+                    $use_address_test = false;
+
+                    if ($condition['match'] != 'regex') {
+                        $condition['value'] = preg_replace('/(.)(?<!\\\)\,(.)/',
+                                                           "$1\n$2",
+                                                           $condition['value']);
+                    }
+
+                    /* Do 'smarter' searching for fields where we know we have
+                     * e-mail addresses. */
+                    if (preg_match('/^(From|To|Cc|Bcc)/', $condition['field'])) {
+                        $vals['addresses'] = $condition['value'];
+                        $use_address_test = true;
+                    } else {
+                        $vals['strings'] = $condition['value'];
+                    }
+
+                    switch ($condition['match']) {
+                    case 'contains':
+                        $vals['match-type'] = ':contains';
+                        if ($use_address_test) {
+                            $tmp = new Sieve_Test_Address($vals);
+                        } elseif ($condition['field'] == 'Body') {
+                            $tmp = new Sieve_Test_Body($vals);
+                        } else {
+                            $tmp = new Sieve_Test_Header($vals);
+                        }
+                        $test->addTest($tmp);
+                        break;
+
+                    case 'not contain':
+                        $vals['match-type'] = ':contains';
+                        if ($use_address_test) {
+                            $tmp = new Sieve_Test_Address($vals);
+                        } elseif ($condition['field'] == 'Body') {
+                            $tmp = new Sieve_Test_Body($vals);
+                        } else {
+                            $tmp = new Sieve_Test_Header($vals);
+                        }
+                        $test->addTest(new Sieve_Test_Not($tmp));
+                        break;
+
+                    case 'is':
+                        $vals['match-type'] = ':is';
+                        if ($use_address_test) {
+                            $tmp = new Sieve_Test_Address($vals);
+                        } elseif ($condition['field'] == 'Body') {
+                            $tmp = new Sieve_Test_Body($vals);
+                        } else {
+                            $tmp = new Sieve_Test_Header($vals);
+                        }
+                        $test->addTest($tmp);
+                        break;
+
+                    case 'not is':
+                        $vals['match-type'] = ':is';
+                        if ($use_address_test) {
+                            $tmp = new Sieve_Test_Address($vals);
+                        } elseif ($condition['field'] == 'Body') {
+                            $tmp = new Sieve_Test_Body($vals);
+                        } else {
+                            $tmp = new Sieve_Test_Header($vals);
+                        }
+                        $test->addTest(new Sieve_Test_Not($tmp));
+                        break;
+
+                    case 'begins with':
+                        $vals['match-type'] = ':matches';
+                        if ($use_address_test) {
+                            $add_arr = preg_split('(\r\n|\n|\r)', $vals['addresses']);
+                            if (count($add_arr) > 1) {
+                                foreach ($add_arr as $k => $v) {
+                                    $add_arr[$k] = $v . '*';
+                                }
+                                $vals['addresses'] = implode("\r\n", $add_arr);
+                            } else {
+                                $vals['addresses'] .= '*';
+                            }
+                            $tmp = new Sieve_Test_Address($vals);
+                        } else {
+                            $add_arr = preg_split('(\r\n|\n|\r)', $vals['strings']);
+                            if (count($add_arr) > 1) {
+                                foreach ($add_arr as $k => $v) {
+                                    $add_arr[$k] = $v . '*';
+                                }
+                                $vals['strings'] = implode("\r\n", $add_arr);
+                            } else {
+                                $vals['strings'] .= '*';
+                            }
+                            if ($condition['field'] == 'Body') {
+                                $tmp = new Sieve_Test_Body($vals);
+                            } else {
+                                $tmp = new Sieve_Test_Header($vals);
+                            }
+                        }
+                        $test->addTest($tmp);
+                        break;
+
+                    case 'not begins with':
+                        $vals['match-type'] = ':matches';
+                        if ($use_address_test) {
+                            $add_arr = preg_split('(\r\n|\n|\r)', $vals['addresses']);
+                            if (count($add_arr) > 1) {
+                                foreach ($add_arr as $k => $v) {
+                                    $add_arr[$k] = $v . '*';
+                                }
+                                $vals['addresses'] = implode("\r\n", $add_arr);
+                            } else {
+                                $vals['addresses'] .= '*';
+                            }
+                            $tmp = new Sieve_Test_Address($vals);
+                        } else {
+                            $add_arr = preg_split('(\r\n|\n|\r)', $vals['strings']);
+                            if (count($add_arr) > 1) {
+                                foreach ($add_arr as $k => $v) {
+                                    $add_arr[$k] = $v . '*';
+                                }
+                                $vals['strings'] = implode("\r\n", $add_arr);
+                            } else {
+                                $vals['strings'] .= '*';
+                            }
+                            if ($condition['field'] == 'Body') {
+                                $tmp = new Sieve_Test_Body($vals);
+                            } else {
+                                $tmp = new Sieve_Test_Header($vals);
+                            }
+                        }
+                        $test->addTest(new Sieve_Test_Not($tmp));
+                        break;
+
+                    case 'ends with':
+                        $vals['match-type'] = ':matches';
+                        if ($use_address_test) {
+                            $add_arr = preg_split('(\r\n|\n|\r)', $vals['addresses']);
+                            if (count($add_arr) > 1) {
+                                foreach ($add_arr as $k => $v) {
+                                    $add_arr[$k] = '*' . $v;
+                                }
+                                $vals['addresses'] = implode("\r\n", $add_arr);
+                            } else {
+                                $vals['addresses'] = '*' .  $vals['addresses'];
+                            }
+                            $tmp = new Sieve_Test_Address($vals);
+                        } else {
+                            $add_arr = preg_split('(\r\n|\n|\r)', $vals['strings']);
+                            if (count($add_arr) > 1) {
+                                foreach ($add_arr as $k => $v) {
+                                    $add_arr[$k] = '*' . $v;
+                                }
+                                $vals['strings'] = implode("\r\n", $add_arr);
+                            } else {
+                                $vals['strings'] = '*' .  $vals['strings'];
+                            }
+                            if ($condition['field'] == 'Body') {
+                                $tmp = new Sieve_Test_Body($vals);
+                            } else {
+                                $tmp = new Sieve_Test_Header($vals);
+                            }
+                        }
+                        $test->addTest($tmp);
+                        break;
+
+                    case 'not ends with':
+                        $vals['match-type'] = ':matches';
+                        if ($use_address_test) {
+                            $add_arr = preg_split('(\r\n|\n|\r)', $vals['addresses']);
+                            if (count($add_arr) > 1) {
+                                foreach ($add_arr as $k => $v) {
+                                    $add_arr[$k] = '*' . $v;
+                                }
+                                $vals['addresses'] = implode("\r\n", $add_arr);
+                            } else {
+                                $vals['addresses'] = '*' .  $vals['addresses'];
+                            }
+                            $tmp = new Sieve_Test_Address($vals);
+                        } else {
+                            $add_arr = preg_split('(\r\n|\n|\r)', $vals['strings']);
+                            if (count($add_arr) > 1) {
+                                foreach ($add_arr as $k => $v) {
+                                    $add_arr[$k] = '*' . $v;
+                                }
+                                $vals['strings'] = implode("\r\n", $add_arr);
+                            } else {
+                                $vals['strings'] = '*' .  $vals['strings'];
+                            }
+                            if ($condition['field'] == 'Body') {
+                                $tmp = new Sieve_Test_Body($vals);
+                            } else {
+                                $tmp = new Sieve_Test_Header($vals);
+                            }
+                        }
+                        $test->addTest(new Sieve_Test_Not($tmp));
+                        break;
+
+                    case 'regex':
+                        $vals['match-type'] = ':regex';
+                        if ($use_address_test) {
+                            $tmp = new Sieve_Test_Address($vals);
+                        } elseif ($condition['field'] == 'Body') {
+                            $tmp = new Sieve_Test_Body($vals);
+                        } else {
+                            $tmp = new Sieve_Test_Header($vals);
+                        }
+                        $test->addTest($tmp);
+                        break;
+
+                    case 'matches':
+                        $vals['match-type'] = ':matches';
+                        if ($use_address_test) {
+                            $tmp = new Sieve_Test_Address($vals);
+                        } elseif ($condition['field'] == 'Body') {
+                            $tmp = new Sieve_Test_Body($vals);
+                        } else {
+                            $tmp = new Sieve_Test_Header($vals);
+                        }
+                        $test->addTest($tmp);
+                        break;
+
+                    case 'not matches':
+                        $vals['match-type'] = ':matches';
+                        if ($use_address_test) {
+                            $tmp = new Sieve_Test_Address($vals);
+                        } elseif ($condition['field'] == 'Body') {
+                            $tmp = new Sieve_Test_Body($vals);
+                        } else {
+                            $tmp = new Sieve_Test_Header($vals);
+                        }
+                        $test->addTest(new Sieve_Test_Not($tmp));
+                        break;
+                    }
+                }
+            }
+
+            $if = new Sieve_If($test);
+            $if->setActions($action);
+            $this->_blocks[] = $if;
+        }
+
+        /* Add blocks that have to go to the end. */
+        foreach ($this->_endBlocks as $block) {
+            $this->_blocks[] = $block;
+        }
+
+        return $this->toCode();
+    }
+
+}
+
+/**
+ * The Sieve_If class represents a Sieve If Statement
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_If {
+
+    /**
+     * The Sieve_Test object for the if test.
+     *
+     * @var Sieve_Test
+     */
+    var $_test;
+
+    /**
+     * A list of Sieve_Action objects that go into the if clause.
+     *
+     * @var array
+     */
+    var $_actions = array();
+
+    /**
+     * A list of Sieve_Elseif objects that create optional elsif clauses.
+     *
+     * @var array
+     */
+    var $_elsifs = array();
+
+    /**
+     * A Sieve_Else object that creates an optional else clause.
+     *
+     * @var Sieve_Else
+     */
+    var $_else;
+
+    /**
+     * Constructor.
+     *
+     * @params Sieve_Test $test  A Sieve_Test object.
+     */
+    function Sieve_If($test = null)
+    {
+        if (is_null($test)) {
+            $this->_test = new Sieve_Test_False();
+        } else {
+            $this->_test = $test;
+        }
+
+        $this->_actions[] = new Sieve_Action_Keep();
+        $this->_else = new Sieve_Else();
+    }
+
+    function getTest()
+    {
+        return $this->_test;
+    }
+
+    function setTest($test)
+    {
+        $this->_test = $test;
+    }
+
+    function getActions()
+    {
+        return $this->_actions;
+    }
+
+    function setActions($actions)
+    {
+        $this->_actions = $actions;
+    }
+
+    function getElsifs()
+    {
+        return $this->_elsifs;
+    }
+
+    function setElsifs($elsifs)
+    {
+        $this->_elsifs = $elsifs;
+    }
+
+    function addElsif($elsif)
+    {
+        $this->_elsifs[] = $elsif;
+    }
+
+    function getElse()
+    {
+        return $this->_else;
+    }
+
+    function setElse($else)
+    {
+        $this->_else = $else;
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        $code = 'if ' . $this->_test->toCode() . " { \n";
+        foreach ($this->_actions as $action) {
+            $code .= '    ' . $action->toCode() . "\n";
+        }
+        $code .= "} ";
+
+        foreach ($this->_elsifs as $elsif) {
+            $code .= $elsif->toCode();
+        }
+
+        $code .= $this->_else->toCode();
+
+        return $code . "\n";
+    }
+
+    /**
+     * Checks if all sub-rules are valid.
+     *
+     * @return boolean|string  True if all rules are valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        $res = $this->_test->check();
+        if ($res !== true) {
+            return $res;
+        }
+
+        foreach ($this->_elsifs as $elsif) {
+            $res = $elsif->check();
+            if ($res !== true) {
+                return $res;
+            }
+        }
+
+        $res = $this->_else->check();
+        if ($res !== true) {
+            return $res;
+        }
+
+        foreach ($this->_actions as $action) {
+            $res = $action->check();
+            if ($res !== true) {
+                return $res;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        $requires = array();
+
+        foreach ($this->_actions as $action) {
+            $requires = array_merge($requires, $action->requires());
+        }
+
+        foreach ($this->_elsifs as $elsif) {
+            $requires = array_merge($requires, $elsif->requires());
+        }
+
+        $requires = array_merge($requires, $this->_test->requires(), $this->_else->requires());
+
+        return $requires;
+    }
+
+}
+
+/**
+ * The Sieve_Else class represents a Sieve Else Statement
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Else {
+
+    /**
+     * A list of Sieve_Action objects that go into the else clause.
+     *
+     * @var array
+     */
+    var $_actions = array();
+
+    /**
+     * Constructor.
+     *
+     * @params Sieve_Action|array $actions  A Sieve_Action object or a list of
+     *                                      Sieve_Action objects.
+     */
+    function Sieve_Else($actions = null)
+    {
+        if (is_array($actions)) {
+            $this->_actions = $actions;
+        } elseif (!is_null($actions)) {
+            $this->_actions[] = $actions;
+        }
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+     function toCode()
+     {
+        if (count($this->_actions) == 0) {
+            return '';
+        }
+
+        $code = 'else' . " { \n";
+        foreach ($this->_actions as $action) {
+            $code .= '    ' . $action->toCode() . "\n";
+        }
+        $code .= "} ";
+
+        return $code;
+    }
+
+    function setActions($actions)
+    {
+        $this->_actions = $actions;
+    }
+
+    function getActions()
+    {
+        return $this->_actions;
+    }
+
+    /**
+     * Checks if all sub-rules are valid.
+     *
+     * @return boolean|string  True if all rules are valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        foreach ($this->_actions as $action) {
+            $res = $action->check();
+            if ($res !== true) {
+                return $res;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        $requires = array();
+
+        foreach ($this->_actions as $action) {
+            $requires = array_merge($requires, $action->requires());
+        }
+
+        return $requires;
+    }
+
+}
+
+/**
+ * The Sieve_Elsif class represents a Sieve Elsif Statement
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Elsif {
+
+    /**
+     * The Sieve_Test object for the if test.
+     *
+     * @var Sieve_Test
+     */
+    var $_test;
+
+    /**
+     * A list of Sieve_Action objects that go into the if clause.
+     *
+     * @var array
+     */
+    var $_actions = array();
+
+    /**
+     * Constructor.
+     *
+     * @params Sieve_Test $test  A Sieve_Test object.
+     */
+    function Sieve_Elsif($test = null)
+    {
+        if (is_null($test)) {
+            $this->_test = new Sieve_Test_False();
+        } else {
+            $this->_test = $test;
+        }
+        $this->_actions[] = new Sieve_Action_Keep();
+    }
+
+    function getTest()
+    {
+        return $this->_test;
+    }
+
+    function setTest($test)
+    {
+        $this->_test = $test;
+    }
+
+    function getActions()
+    {
+        return $this->_actions;
+    }
+
+    function setActions($actions)
+    {
+        $this->_actions = $actions;
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        $code = 'elsif ' . $this->_test->toCode() . " { \n";
+        foreach ($this->_actions as $action) {
+            $code .= '    ' . $action->toCode() . "\n";
+        }
+        $code .= "} ";
+
+        return $code;
+    }
+
+    /**
+     * Checks if all sub-rules are valid.
+     *
+     * @return boolean|string  True if all rules are valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        $res = $this->_test->check();
+        if ($res !== true) {
+            return $res;
+        }
+
+        foreach ($this->_actions as $action) {
+            $res = $action->check();
+            if ($res !== true) {
+                return $res;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        $requires = array();
+
+        foreach ($this->_actions as $action) {
+            $requires = array_merge($requires, $action->requires());
+        }
+
+        $requires = array_merge($requires, $this->_test->requires());
+
+        return $requires;
+    }
+
+}
+
+/**
+ * The Sieve_Test class represents a Sieve Test.
+ *
+ * A test is a piece of code that evaluates to true or false.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Test {
+
+    /**
+     * Any necessary test parameters.
+     *
+     * @var array
+     */
+    var $_vars = array();
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        return 'toCode() Function Not Implemented in class ' . get_class($this);
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        return 'check() Function Not Implemented in class ' . get_class($this);
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        return array();
+    }
+
+}
+
+/**
+ * The Sieve_Test_True class represents a test that always evaluates to true.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Test_True extends Sieve_Test {
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        return 'true';
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        return true;
+    }
+
+}
+
+/**
+ * The Sieve_Test_False class represents a test that always evaluates to
+ * false.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Test_False extends Sieve_Test {
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        return 'false';
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        return true;
+    }
+
+}
+
+/**
+ * The Sieve_Test_Allof class represents a Allof test structure.
+ *
+ * Equivalent to a logical AND of all the tests it contains.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Test_Allof extends Sieve_Test {
+
+    var $_tests = array();
+
+    /**
+     * Constructor.
+     *
+     * @params Sieve_Test|array $test  A Sieve_Test object or a list of
+     *                                 Sieve_Test objects.
+     */
+    function Sieve_Test_Allof($test = null)
+    {
+        if (is_array($test)) {
+            $this->_tests = $test;
+        } elseif (!is_null($test)) {
+            $this->_tests[] = $test;
+        }
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        $code = '';
+        if (count($this->_tests) > 1) {
+            $testlist = '';
+            foreach ($this->_tests as $test) {
+                $testlist .= (empty($testlist)) ? '' : ', ';
+                $testlist .= trim($test->toCode());
+            }
+
+            $code = "allof ( $testlist )";
+        } elseif (count($this->_tests) == 1) {
+            $code = $this->_tests[0]->toCode();
+        } else {
+            return 'true';
+        }
+        return $code;
+    }
+
+    /**
+     * Checks if all sub-rules are valid.
+     *
+     * @return boolean|string  True if all rules are valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        foreach ($this->_tests as $test) {
+            $res = $test->check();
+            if ($res !== true) {
+                return $res;
+            }
+        }
+
+        return true;
+    }
+
+    function addTest($test)
+    {
+        $this->_tests[] = $test;
+    }
+
+    function getTests()
+    {
+        return $this->_tests;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        $requires = array();
+
+        foreach ($this->_tests as $test) {
+            $requires = array_merge($requires, $test->requires());
+        }
+
+        return $requires;
+    }
+
+}
+
+/**
+ * The Sieve_Test_Anyof class represents a Anyof test structure.
+ *
+ * Equivalent to a logical OR of all the tests it contains.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Test_Anyof extends Sieve_Test {
+
+    var $_tests = array();
+
+    /**
+     * Constructor.
+     *
+     * @params Sieve_Test|array $test  A Sieve_Test object or a list of
+     *                                 Sieve_Test objects.
+     */
+    function Sieve_Test_Anyof($test = null)
+    {
+        if (is_array($test)) {
+            $this->_tests = $test;
+        } elseif (!is_null($test)) {
+            $this->_tests[] = $test;
+        }
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        $testlist = '';
+        if (count($this->_tests) > 1) {
+            $testlist = '';
+            foreach ($this->_tests as $test) {
+                $testlist .= (empty($testlist)) ? '' : ', ';
+                $testlist .= trim($test->toCode());
+            }
+
+            $code = "anyof ( $testlist )";
+        } elseif (count($this->_tests) == 1) {
+            $code = $this->_tests[0]->toCode();
+        } else {
+            return 'true';
+        }
+        return $code;
+    }
+
+    function addTest($test)
+    {
+        $this->_tests[] = $test;
+    }
+
+    function getTests()
+    {
+        return $this->_tests;
+    }
+
+    /**
+     * Checks if all sub-rules are valid.
+     *
+     * @return boolean|string  True if all rules are valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        foreach ($this->_tests as $test) {
+            $res = $test->check();
+            if ($res !== true) {
+                return $res;
+            }
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        $requires = array();
+
+        foreach ($this->_tests as $test) {
+            $requires = array_merge($requires, $test->requires());
+        }
+
+        return $requires;
+    }
+
+}
+
+/**
+ * The Sieve_Test_Relational class represents a relational test.
+ *
+ * @author  Todd Merritt <tmerritt@email.arizona.edu>
+ * @since   Ingo 1.0
+ * @package Ingo
+ */
+class Sieve_Test_Relational extends Sieve_Test {
+
+    /**
+     * Constructor.
+     *
+     * @params array $vars  Any required parameters.
+     */
+    function Sieve_Test_Relational($vars = array())
+    {
+        $this->_vars['comparison'] = (isset($vars['comparison'])) ? $vars['comparison'] : '';
+        $this->_vars['headers'] = (isset($vars['headers'])) ? $vars['headers'] : '';
+        $this->_vars['value'] = (isset($vars['value'])) ? $vars['value'] : 0;
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        $code = 'header :value "' .
+            $this->_vars['comparison'] . '" ' .
+            ':comparator "i;ascii-numeric" ';
+
+        $headers = preg_split('(\r\n|\n|\r)', $this->_vars['headers']);
+        $header_count = count($headers);
+
+        if ($header_count > 1) {
+            $code .= "[";
+            $headerstr = '';
+
+            foreach ($headers as $val) {
+                $headerstr .= (empty($headerstr) ? '"' : ', "') .
+                    Ingo_Script_sieve::escapeString($val) . '"';
+            }
+
+            $code .= $headerstr . "] ";
+        } elseif ($header_count == 1) {
+            $code .= '"' . Ingo_Script_sieve::escapeString($headers[0]) . '" ';
+        }
+
+        return $code . '["' . $this->_vars['value'] . '"]';
+     }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+     function check()
+     {
+         $headers = preg_split('(\r\n|\n|\r)', $this->_vars['headers']);
+         return $headers ? true : _("No headers specified");
+     }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+     {
+         return array('relational', 'comparator-i;ascii-numeric');
+     }
+
+}
+
+/**
+ * The Sieve_Test_Size class represents a message size test.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Test_Size extends Sieve_Test {
+
+    /**
+     * Constructor.
+     *
+     * @params array $vars  Any required parameters.
+     */
+    function Sieve_Test_Size($vars = array())
+    {
+        $this->_vars['comparison'] = (isset($vars['comparison'])) ? $vars['comparison'] : '';
+        $this->_vars['size'] = (isset($vars['size'])) ? $vars['size'] : '';
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        return 'size ' . $this->_vars['comparison'] . ' ' . $this->_vars['size'];
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        if (!(isset($this->_vars['comparison']) &&
+              isset($this->_vars['size']))) {
+            return false;
+        }
+
+        return true;
+    }
+
+}
+
+/**
+ * The Sieve_Test_Not class represents the inverse of a given test.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Test_Not extends Sieve_Test {
+
+    var $_test = array();
+
+    /**
+     * Constructor.
+     *
+     * @params Sieve_Test $test  A Sieve_Test object.
+     */
+    function Sieve_Test_Not($test)
+    {
+        $this->_test = $test;
+    }
+
+    /**
+     * Checks if the sub-rule is valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        return $this->_test->check();
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        return 'not ' . $this->_test->toCode();
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        return $this->_test->requires();
+    }
+
+}
+
+/**
+ * The Sieve_Test_Exists class represents a test for the existsance of one or
+ * more headers in a message.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Test_Exists extends Sieve_Test {
+
+    /**
+     * Constructor.
+     *
+     * @params array $vars  Any required parameters.
+     */
+    function Sieve_Test_Exists($vars = array())
+    {
+        $this->_vars['headers'] = (isset($vars['headers'])) ? $vars['headers'] : '';
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        $headers = preg_split('(\r\n|\n|\r)', $this->_vars['headers']);
+        if (!$headers) {
+            return _("No headers specified");
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        $code = 'exists ';
+        $headers = preg_split('(\r\n|\n|\r)', $this->_vars['headers']);
+        if (count($headers) > 1) {
+            $code .= "[";
+            $headerstr = '';
+            foreach ($headers as $header) {
+                $headerstr .= (empty($headerstr) ? '"' : ', "') .
+                    Ingo_Script_sieve::escapeString($header) . '"';
+            }
+            $code .= $headerstr . "] ";
+        } elseif (count($headers) == 1) {
+            $code .= '"' . Ingo_Script_sieve::escapeString($headers[0]) . '" ';
+        } else {
+            return "**error** No Headers Specified";
+        }
+
+        return $code;
+    }
+
+}
+
+/**
+ * The Sieve_Test_Address class represents a test on parts or all of the
+ * addresses in the given fields.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Test_Address extends Sieve_Test {
+
+    /**
+     * Constructor.
+     *
+     * @params array $vars  Any required parameters.
+     */
+    function Sieve_Test_Address($vars)
+    {
+        $this->_vars['headers'] = (isset($vars['headers'])) ? $vars['headers'] : '';
+        $this->_vars['comparator'] = (isset($vars['comparator'])) ? $vars['comparator'] : 'i;ascii-casemap';
+        $this->_vars['match-type'] = (isset($vars['match-type'])) ? $vars['match-type'] : ':is';
+        $this->_vars['address-part'] = (isset($vars['address-part'])) ? $vars['address-part'] : ':all';
+        $this->_vars['addresses'] = (isset($vars['addresses'])) ? $vars['addresses'] : '';
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        $headers = preg_split('(\r\n|\n|\r)', $this->_vars['headers']);
+        if (!$headers) {
+            return false;
+        }
+
+        $addresses = preg_split('(\r\n|\n|\r)', $this->_vars['addresses']);
+        if (!$addresses) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        $code = 'address ' .
+            $this->_vars['address-part'] . ' ' .
+            ':comparator "' . $this->_vars['comparator'] . '" ' .
+            $this->_vars['match-type'] . ' ';
+
+        $headers = preg_split('(\r\n|\n|\r|,)', $this->_vars['headers']);
+        $headers = array_filter($headers);
+        if (count($headers) > 1) {
+            $code .= "[";
+            $headerstr = '';
+            foreach ($headers as $header) {
+                $header = trim($header);
+                if (!empty($header)) {
+                    $headerstr .= empty($headerstr) ? '"' : ', "';
+                    $headerstr .= Ingo_Script_sieve::escapeString($header, $this->_vars['match-type'] == ':regex') . '"';
+                }
+            }
+            $code .= $headerstr . "] ";
+        } elseif (count($headers) == 1) {
+            $code .= '"' . Ingo_Script_sieve::escapeString($headers[0], $this->_vars['match-type'] == ':regex') . '" ';
+        } else {
+            return "No Headers Specified";
+        }
+
+        $addresses = preg_split('(\r\n|\n|\r)', $this->_vars['addresses']);
+        $addresses = array_filter($addresses);
+        if (count($addresses) > 1) {
+            $code .= "[";
+            $addressstr = '';
+            foreach ($addresses as $addr) {
+                $addr = trim($addr);
+                if (!empty($addr)) {
+                    $addressstr .= empty($addressstr) ? '"' : ', "';
+                    $addressstr .= Ingo_Script_sieve::escapeString($addr, $this->_vars['match-type'] == ':regex') . '"';
+                }
+            }
+            $code .= $addressstr . "] ";
+        } elseif (count($addresses) == 1) {
+            $code .= '"' . Ingo_Script_sieve::escapeString($addresses[0], $this->_vars['match-type'] == ':regex') . '" ';
+        } else {
+            return "No Addresses Specified";
+        }
+
+        return $code;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        if ($this->_vars['match-type'] == ':regex') {
+            return array('regex');
+        }
+        return array();
+    }
+
+}
+
+/**
+ * The Sieve_Test_Header class represents a test on the contents of one or
+ * more headers in a message.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Test_Header extends Sieve_Test {
+
+    /**
+     * Constructor.
+     *
+     * @params array $vars  Any required parameters.
+     */
+    function Sieve_Test_Header($vars = array())
+    {
+        $this->_vars['headers'] = isset($vars['headers'])
+            ? $vars['headers']
+            : 'Subject';
+        $this->_vars['comparator'] = isset($vars['comparator'])
+            ? $vars['comparator']
+            : 'i;ascii-casemap';
+        $this->_vars['match-type'] = isset($vars['match-type'])
+            ? $vars['match-type']
+            : ':is';
+        $this->_vars['strings'] = isset($vars['strings'])
+            ? $vars['strings']
+            : '';
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        $headers = preg_split('((?<!\\\)\,|\r\n|\n|\r)', $this->_vars['headers']);
+        if (!$headers) {
+            return false;
+        }
+
+        $strings = preg_split('((?<!\\\)\,|\r\n|\n|\r)', $this->_vars['strings']);
+        if (!$strings) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        $code = 'header ' .
+            ':comparator "' . $this->_vars['comparator'] . '" ' .
+            $this->_vars['match-type'] . ' ';
+
+        $headers = preg_split('(\r\n|\n|\r)', $this->_vars['headers']);
+        $headers = array_filter($headers);
+        if (count($headers) > 1) {
+            $code .= "[";
+            $headerstr = '';
+            foreach ($headers as $header) {
+                $headerstr .= empty($headerstr) ? '"' : ', "';
+                $headerstr .= Ingo_Script_sieve::escapeString($header, $this->_vars['match-type'] == ':regex') . '"';
+            }
+            $code .= $headerstr . "] ";
+        } elseif (count($headers) == 1) {
+            $code .= '"' . $headers[0] . '" ';
+        } else {
+            return _("No headers specified");
+        }
+
+        $strings = preg_split('(\r\n|\n|\r)', $this->_vars['strings']);
+        $strings = array_filter($strings);
+        if (count($strings) > 1) {
+            $code .= "[";
+            $stringlist = '';
+            foreach ($strings as $str) {
+                $stringlist .= empty($stringlist) ? '"' : ', "';
+                $stringlist .= Ingo_Script_sieve::escapeString($str, $this->_vars['match-type'] == ':regex') . '"';
+            }
+            $code .= $stringlist . "] ";
+        } elseif (count($strings) == 1) {
+            $code .= '"' . Ingo_Script_sieve::escapeString(reset($strings), $this->_vars['match-type'] == ':regex') . '" ';
+        } else {
+            return _("No strings specified");
+        }
+
+        return $code;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        if ($this->_vars['match-type'] == ':regex') {
+            return array('regex');
+        }
+        return array();
+    }
+
+}
+
+/**
+ * The Sieve_Test_Body class represents a test on the contents of the body in
+ * a message.
+ *
+ * @author  Michael Menge <michael.menge@zdv.uni-tuebingen.de>
+ * @since   Ingo 1.2
+ * @package Ingo
+ */
+class Sieve_Test_Body extends Sieve_Test {
+
+    /**
+     * Constructor.
+     *
+     * @params array $vars  Any required parameters.
+     */
+    function Sieve_Test_Body($vars = array())
+    {
+        $this->_vars['comparator'] = (isset($vars['comparator'])) ? $vars['comparator'] : 'i;ascii-casemap';
+        $this->_vars['match-type'] = (isset($vars['match-type'])) ? $vars['match-type'] : ':is';
+        $this->_vars['strings'] = (isset($vars['strings'])) ? $vars['strings'] : '';
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        $strings = preg_split('((?<!\\\)\,|\r\n|\n|\r)', $this->_vars['strings']);
+        if (!$strings) {
+            return false;
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        $code = 'body ' .
+            ':comparator "' . $this->_vars['comparator'] . '" ' .
+            $this->_vars['match-type'] . ' ';
+
+        $strings = preg_split('(\r\n|\n|\r)', $this->_vars['strings']);
+        $strings = array_filter($strings);
+        if (count($strings) > 1) {
+            $code .= "[";
+            $stringlist = '';
+            foreach ($strings as $str) {
+                $stringlist .= empty($stringlist) ? '"' : ', "';
+                $stringlist .= Ingo_Script_sieve::escapeString($str, $this->_vars['match-type'] == ':regex') . '"';
+            }
+            $code .= $stringlist . "] ";
+        } elseif (count($strings) == 1) {
+            $code .= '"' . Ingo_Script_sieve::escapeString($strings[0], $this->_vars['match-type'] == ':regex') . '" ';
+        } else {
+            return _("No strings specified");
+        }
+
+        return $code;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        if ($this->_vars['match-type'] == ':regex') {
+            return array('regex', 'body');
+        }
+
+        return array('body');
+    }
+
+}
+
+/**
+ * A Comment.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ * @todo    This and Sieve_If should really extends a Sieve_Block eventually.
+ */
+class Sieve_Comment {
+
+    var $_comment;
+
+    /**
+     * Constructor.
+     *
+     * @params string $comment  The comment text.
+     */
+    function Sieve_Comment($comment)
+    {
+        $this->_comment = $comment;
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        $code = '';
+        $lines = preg_split('(\r\n|\n|\r)', $this->_comment);
+        foreach ($lines as $line) {
+            $line = trim($line);
+            if (strlen($line)) {
+                $code .= (empty($code) ? '' : "\n") . '# ' . $line;
+            }
+        }
+        return String::convertCharset($code, NLS::getCharset(), 'UTF-8');
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        return true;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        return array();
+    }
+
+}
+
+/**
+ * The Sieve_Action class represents an action in a Sieve script.
+ *
+ * An action is anything that has a side effect eg: discard, redirect.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Action {
+
+    /**
+     * Any necessary action parameters.
+     *
+     * @var array
+     */
+    var $_vars = array();
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        return 'toCode() Function Not Implemented in class ' . get_class($this) ;
+    }
+
+    function toString()
+    {
+        return $this->toCode();
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        return 'check() Function Not Implemented in class ' . get_class($this) ;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        return array();
+    }
+
+}
+
+/**
+ * The Sieve_Action_Redirect class represents a redirect action.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Action_Redirect extends Sieve_Action {
+
+    /**
+     * Constructor.
+     *
+     * @params array $vars  Any required parameters.
+     */
+    function Sieve_Action_Redirect($vars = array())
+    {
+        $this->_vars['address'] = (isset($vars['address'])) ? $vars['address'] : '';
+    }
+
+    function toCode($depth = 0)
+    {
+        return str_repeat(' ', $depth * 4) . 'redirect ' .
+            '"' . Ingo_Script_sieve::escapeString($this->_vars['address']) . '";';
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        if (empty($this->_vars['address'])) {
+            return _("Missing address to redirect message to");
+        }
+
+        return true;
+    }
+
+}
+
+/**
+ * The Sieve_Action_Reject class represents a reject action.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Action_Reject extends Sieve_Action {
+
+    /**
+     * Constructor.
+     *
+     * @params array $vars  Any required parameters.
+     */
+    function Sieve_Action_Reject($vars = array())
+    {
+        $this->_vars['reason'] = (isset($vars['reason'])) ? $vars['reason'] : '';
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        return 'reject "' . Ingo_Script_sieve::escapeString($this->_vars['reason']) . '";';
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        if (empty($this->_vars['reason'])) {
+            return _("Missing reason for reject");
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        return array('reject');
+    }
+
+}
+
+/**
+ * The Sieve_Action_Keep class represents a keep action.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Action_Keep extends Sieve_Action {
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        return 'keep;';
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        return true;
+    }
+
+}
+
+/**
+ * The Sieve_Action_Discard class represents a discard action.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Action_Discard extends Sieve_Action {
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        return 'discard;';
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        return true;
+    }
+
+}
+
+/**
+ * The Sieve_Action_Stop class represents a stop action.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Action_Stop extends Sieve_Action {
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        return 'stop;';
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        return true;
+    }
+
+}
+
+/**
+ * The Sieve_Action_Fileinto class represents a fileinto action.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Action_Fileinto extends Sieve_Action {
+
+    /**
+     * Constructor.
+     *
+     * @params array $vars  Any required parameters.
+     */
+    function Sieve_Action_Fileinto($vars = array())
+    {
+        $this->_vars['folder'] = (isset($vars['folder'])) ? $vars['folder'] : '';
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        return 'fileinto "' . Ingo_Script_sieve::escapeString($this->_vars['folder']) . '";';
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        if (empty($this->_vars['folder'])) {
+            return _("Inexistant mailbox specified for message delivery.");
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        return array('fileinto');
+    }
+
+}
+
+/**
+ * The Sieve_Action_Vacation class represents a vacation action.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Action_Vacation extends Sieve_Action {
+
+    /**
+     * Constructor.
+     *
+     * @params array $vars  Any required parameters.
+     */
+    function Sieve_Action_Vacation($vars = array())
+    {
+        $this->_vars['days'] = isset($vars['days']) ? intval($vars['days']) : '';
+        $this->_vars['addresses'] = isset($vars['addresses']) ? $vars['addresses'] : '';
+        $this->_vars['subject'] = isset($vars['subject']) ? $vars['subject'] : '';
+        $this->_vars['reason'] = isset($vars['reason']) ? $vars['reason'] : '';
+        $this->_vars['start'] = isset($vars['start']) ? $vars['start'] : '';
+        $this->_vars['start_year'] = isset($vars['start_year']) ? $vars['start_year'] : '';
+        $this->_vars['start_month'] = isset($vars['start_month']) ? $vars['start_month'] : '';
+        $this->_vars['start_day'] = isset($vars['start_day']) ? $vars['start_day'] : '';
+        $this->_vars['end'] = isset($vars['end']) ? $vars['end'] : '';
+        $this->_vars['end_year'] = isset($vars['end_year']) ? $vars['end_year'] : '';
+        $this->_vars['end_month'] = isset($vars['end_month']) ? $vars['end_month'] : '';
+        $this->_vars['end_day'] = isset($vars['end_day']) ? $vars['end_day'] : '';
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        $start_year = $this->_vars['start_year'];
+        $start_month = $this->_vars['start_month'];
+        $start_day = $this->_vars['start_day'];
+
+        $end_year = $this->_vars['end_year'];
+        $end_month = $this->_vars['end_month'];
+        $end_day = $this->_vars['end_day'];
+
+        $code = '';
+
+        if (empty($this->_vars['start']) || empty($this->_vars['end'])) {
+            return $this->_vacationCode();
+        } elseif ($end_year > $start_year + 1) {
+            $code .= $this->_yearCheck($start_year + 1, $end_year - 1)
+                . $this->_vacationCode()
+                . "\n}\n"
+                . $this->_yearCheck($start_year, $start_year);
+            if ($start_month < 12) {
+                $code .= $this->_monthCheck($start_month + 1, 12)
+                    . $this->_vacationCode()
+                    . "\n}\n";
+            }
+            $code .= $this->_monthCheck($start_month, $start_month)
+                . $this->_dayCheck($start_day, 31)
+                . $this->_vacationCode()
+                . "\n}\n}\n}\n"
+                . $this->_yearCheck($end_year, $end_year);
+            if ($end_month > 1) {
+                $code .= $this->_monthCheck(1, $end_month - 1)
+                    . $this->_vacationCode()
+                    . "\n}\n";
+            }
+            $code .= $this->_monthCheck($end_month, $end_month)
+                . $this->_dayCheck(1, $end_day)
+                . $this->_vacationCode()
+                . "\n}\n}\n}\n";
+        } elseif ($end_year == $start_year + 1) {
+            $code .= $this->_yearCheck($start_year, $start_year);
+            if ($start_month < 12) {
+                $code .= $this->_monthCheck($start_month + 1, 12)
+                    . $this->_vacationCode()
+                    . "\n}\n";
+            }
+            $code .= $this->_monthCheck($start_month, $start_month)
+                . $this->_dayCheck($start_day, 31)
+                . $this->_vacationCode()
+                . "\n}\n}\n}\n"
+                . $this->_yearCheck($end_year, $end_year);
+            if ($end_month > 1) {
+                $code .= $this->_monthCheck(1, $end_month - 1)
+                    . $this->_vacationCode()
+                    . "\n}\n";
+            }
+            $code .= $this->_monthCheck($end_month, $end_month)
+                . $this->_dayCheck(1, $end_day)
+                . $this->_vacationCode()
+                . "\n}\n}\n}\n";
+        } elseif ($end_year == $start_year) {
+            $code .= $this->_yearCheck($start_year, $start_year);
+            if ($end_month > $start_month) {
+                if ($end_month > $start_month + 1) {
+                    $code .= $this->_monthCheck($start_month + 1, $end_month - 1)
+                        . $this->_vacationCode()
+                        . "\n}\n";
+                }
+                $code .= $this->_monthCheck($start_month, $start_month)
+                    . $this->_dayCheck($start_day, 31)
+                    . $this->_vacationCode()
+                    . "\n}\n}\n"
+                    . $this->_monthCheck($end_month, $end_month)
+                    . $this->_dayCheck(1, $end_day)
+                    . $this->_vacationCode()
+                    . "\n}\n}\n";
+            } elseif ($end_month == $start_month) {
+                $code .= $this->_monthCheck($start_month, $start_month)
+                    . $this->_dayCheck($start_day, $end_day)
+                    . $this->_vacationCode()
+                    . "\n}\n}\n";
+            }
+            $code .= "}\n";
+        }
+
+        return $code;
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        if (empty($this->_vars['reason'])) {
+            return _("Missing reason in vacation.");
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        return array('vacation', 'regex');
+    }
+
+    /**
+     */
+    function _vacationCode()
+    {
+        $code = 'vacation :days ' . $this->_vars['days'] . ' ';
+        $addresses = $this->_vars['addresses'];
+        $stringlist = '';
+        if (count($addresses) > 1) {
+            foreach ($addresses as $address) {
+                $address = trim($address);
+                if (!empty($address)) {
+                    $stringlist .= empty($stringlist) ? '"' : ', "';
+                    $stringlist .= Ingo_Script_sieve::escapeString($address) . '"';
+                }
+            }
+            $stringlist = "[" . $stringlist . "] ";
+        } elseif (count($addresses) == 1) {
+            $stringlist = '"' . Ingo_Script_sieve::escapeString($addresses[0]) . '" ';
+        }
+
+        if (!empty($stringlist)) {
+            $code .= ':addresses ' . $stringlist;
+        }
+
+        if (!empty($this->_vars['subject'])) {
+            include_once 'Horde/MIME.php';
+            $code .= ':subject "' . MIME::encode(Ingo_Script_sieve::escapeString($this->_vars['subject']), 'UTF-8') . '" ';
+        }
+        return $code
+            . '"' . Ingo_Script_sieve::escapeString($this->_vars['reason'])
+            . '";';
+    }
+
+    /**
+     */
+    function _yearCheck($begin, $end)
+    {
+        $code = 'if header :regex "Received" "^.*(' . $begin;
+        for ($i = $begin + 1; $i <= $end; $i++) {
+            $code .= '|' . $i;
+        }
+        return $code
+            . ') (\\\\(.*\\\\) )?..:..:.. (\\\\(.*\\\\) )?(\\\\+|\\\\-)....( \\\\(.*\\\\))?$" {'
+            . "\n    ";
+    }
+
+    /**
+     */
+    function _monthCheck($begin, $end)
+    {
+        $months = array('Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun',
+                        'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec');
+        $code = 'if header :regex "Received" "^.*(' . $months[$begin - 1];
+        for ($i = $begin + 1; $i <= $end; $i++) {
+            $code .= '|' . $months[$i - 1];
+        }
+        return $code
+            . ') (\\\\(.*\\\\) )?.... (\\\\(.*\\\\) )?..:..:.. (\\\\(.*\\\\) )?(\\\\+|\\\\-)....( \\\\(.*\\\\))?$" {'
+            . "\n    ";
+    }
+
+    /**
+     */
+    function _dayCheck($begin, $end)
+    {
+        $code = 'if header :regex "Received" "^.*(' . str_repeat('[0 ]', 2 - strlen($begin)) . $begin;
+        for ($i = $begin + 1; $i <= $end; $i++) {
+            $code .= '|' . str_repeat('[0 ]', 2 - strlen($i)) . $i;
+        }
+        return $code
+            . ') (\\\\(.*\\\\) )?... (\\\\(.*\\\\) )?.... (\\\\(.*\\\\) )?..:..:.. (\\\\(.*\\\\) )?(\\\\+|\\\\-)....( \\\\(.*\\\\))?$" {'
+            . "\n    ";
+    }
+
+}
+
+/**
+ * The Sieve_Action_Flag class is the base class for flag actions.
+ *
+ * @author  Michael Slusarz <slusarz@horde.org>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Action_Flag extends Sieve_Action {
+
+    /**
+     * Constructor.
+     *
+     * @params array $vars  Any required parameters.
+     */
+    function Sieve_Action_Flag($vars = array())
+    {
+        if (isset($vars['flags'])) {
+            if ($vars['flags'] & Ingo_Storage::FLAG_ANSWERED) {
+                $this->_vars['flags'][] = '\Answered';
+            }
+            if ($vars['flags'] & Ingo_Storage::FLAG_DELETED) {
+                $this->_vars['flags'][] = '\Deleted';
+            }
+            if ($vars['flags'] & Ingo_Storage::FLAG_FLAGGED) {
+                $this->_vars['flags'][] = '\Flagged';
+            }
+            if ($vars['flags'] & Ingo_Storage::FLAG_SEEN) {
+                $this->_vars['flags'][] = '\Seen';
+            }
+        } else {
+            $this->_vars['flags'] = '';
+        }
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @param string $mode  The sieve flag command to use. Either 'removeflag'
+     *                      or 'addflag'.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function _toCode($mode)
+    {
+        $code  = '';
+
+        if (is_array($this->_vars['flags']) && !empty($this->_vars['flags'])) {
+            $code .= $mode . ' ';
+            if (count($this->_vars['flags']) > 1) {
+                $stringlist = '';
+                foreach ($this->_vars['flags'] as $flag) {
+                    $flag = trim($flag);
+                    if (!empty($flag)) {
+                        $stringlist .= empty($stringlist) ? '"' : ', "';
+                        $stringlist .= Ingo_Script_sieve::escapeString($flag) . '"';
+                    }
+                }
+                $stringlist = '[' . $stringlist . ']';
+                $code .= $stringlist . ';';
+            } else {
+                $code .= '"' . Ingo_Script_sieve::escapeString($this->_vars['flags'][0]) . '";';
+            }
+        }
+        return $code;
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        return true;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        return array('imapflags');
+    }
+
+}
+
+/**
+ * The Sieve_Action_Addflag class represents an add flag action.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Action_Addflag extends Sieve_Action_Flag {
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        return $this->_toCode('addflag');
+    }
+
+}
+
+/**
+ * The Sieve_Action_Removeflag class represents a remove flag action.
+ *
+ * @author  Mike Cochrane <mike@graftonhall.co.nz>
+ * @since   Ingo 0.1
+ * @package Ingo
+ */
+class Sieve_Action_Removeflag extends Sieve_Action_Flag {
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        return $this->_toCode('removeflag');
+    }
+
+}
+
+/**
+ * The Sieve_Action_Notify class represents a notify action.
+ *
+ * @author  Paul Wolstenholme <wolstena@sfu.ca>
+ * @since   Ingo 1.1
+ * @package Ingo
+ */
+class Sieve_Action_Notify extends Sieve_Action {
+
+    /**
+     * Constructor.
+     *
+     * @params array $vars  Any required parameters.
+     */
+    function Sieve_Action_Notify($vars = array())
+    {
+        $this->_vars['address'] = isset($vars['address']) ? $vars['address'] : '';
+        $this->_vars['name'] = isset($vars['name']) ? $vars['name'] : '';
+    }
+
+    /**
+     * Returns a script snippet representing this rule and any sub-rules.
+     *
+     * @return string  A Sieve script snippet.
+     */
+    function toCode()
+    {
+        return 'notify :method "mailto" :options "' .
+            Ingo_Script_sieve::escapeString($this->_vars['address']) .
+            '" :message "' .
+            _("You have received a new message") . "\n" .
+            _("From:") . " \$from\$ \n" .
+            _("Subject:") . " \$subject\$ \n" .
+            _("Rule:") . ' ' . $this->_vars['name'] . '";';
+    }
+
+    /**
+     * Checks if the rule parameters are valid.
+     *
+     * @return boolean|string  True if this rule is valid, an error message
+     *                         otherwise.
+     */
+    function check()
+    {
+        if (empty($this->_vars['address'])) {
+            return _("Missing address to notify");
+        }
+
+        return true;
+    }
+
+    /**
+     * Returns a list of sieve extensions required for this rule and any
+     * sub-rules.
+     *
+     * @return array  A Sieve extension list.
+     */
+    function requires()
+    {
+        return array('notify');
+    }
+
+}
diff --git a/ingo/lib/Session.php b/ingo/lib/Session.php
new file mode 100644 (file)
index 0000000..e80b6aa
--- /dev/null
@@ -0,0 +1,71 @@
+<?php
+/**
+ * Functions required to start a Ingo session.
+ *
+ * Copyright 2004-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Michael Slusarz <slusarz@horde.org>
+ * @package Ingo
+ */
+class Ingo_Session
+{
+    /**
+     * Create an ingo session.
+     * This function should only be called once, when the user first uses
+     * Ingo in a session.
+     *
+     * Creates the $ingo session variable with the following entries:
+     * 'backend' (array) - The backend configuration to use.
+     * 'change' (integer) - The timestamp of the last time the rules were
+     *                      altered.
+     * 'storage' (array) - Used by Ingo_Storage:: for caching data.
+     * 'script_categories' (array) - The list of available categories for the
+     *                               Ingo_Script driver in use.
+     * 'script_generate' (boolean) - Is the Ingo_Script::generate() call
+     *                               available?
+     *
+     * @return boolean  True on success, false on failure.
+     */
+    static public function createSession()
+    {
+        global $prefs;
+
+        $_SESSION['ingo'] = array(
+            'change' => 0,
+            'storage' => array(),
+            /* Get the backend. */
+            'backend' => Ingo::getBackend());
+
+        /* Determine if the Ingo_Script:: generate() method is available. */
+        $ingo_script = Ingo::loadIngoScript();
+        $_SESSION['ingo']['script_generate'] = $ingo_script->generateAvailable();
+
+        /* Disable categories as specified in preferences */
+        $disabled = array();
+        if ($prefs->isLocked('blacklist')) {
+            $disabled[] = INGO_STORAGE_ACTION_BLACKLIST;
+        }
+        if ($prefs->isLocked('whitelist')) {
+            $disabled[] = INGO_STORAGE_ACTION_WHITELIST;
+        }
+        if ($prefs->isLocked('vacation')) {
+            $disabled[] = INGO_STORAGE_ACTION_VACATION;
+        }
+        if ($prefs->isLocked('forward')) {
+            $disabled[] = INGO_STORAGE_ACTION_FORWARD;
+        }
+        if ($prefs->isLocked('spam')) {
+            $disabled[] = INGO_STORAGE_ACTION_SPAM;
+        }
+
+        /* Set the list of categories this driver supports. */
+        $_SESSION['ingo']['script_categories'] =
+            array_merge($ingo_script->availableActions(),
+                        array_diff($ingo_script->availableCategories(),
+                                   $disabled));
+    }
+
+}
diff --git a/ingo/lib/Storage.php b/ingo/lib/Storage.php
new file mode 100644 (file)
index 0000000..db996c9
--- /dev/null
@@ -0,0 +1,1029 @@
+<?php
+/**
+ * Ingo_Storage:: defines an API to store the various filter rules.
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Michael Slusarz <slusarz@horde.org>
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Ingo
+ */
+class Ingo_Storage
+{
+    /**
+     * Ingo_Storage:: 'combine' constants
+     */
+    const COMBINE_ALL = 1;
+    const COMBINE_ANY = 2;
+
+    /**
+     * Ingo_Storage:: 'action' constants
+     */
+    const ACTION_FILTERS = 0;
+    const ACTION_KEEP = 1;
+    const ACTION_MOVE = 2;
+    const ACTION_DISCARD = 3;
+    const ACTION_REDIRECT = 4;
+    const ACTION_REDIRECTKEEP = 5;
+    const ACTION_REJECT = 6;
+    const ACTION_BLACKLIST = 7;
+    const ACTION_VACATION = 8;
+    const ACTION_WHITELIST = 9;
+    const ACTION_FORWARD = 10;
+    const ACTION_MOVEKEEP = 11;
+    const ACTION_FLAGONLY = 12;
+    const ACTION_NOTIFY = 13;
+    const ACTION_SPAM = 14;
+
+    /**
+     * Ingo_Storage:: 'flags' constants
+     */
+    const FLAG_ANSWERED = 1;
+    const FLAG_DELETED = 2;
+    const FLAG_FLAGGED = 4;
+    const FLAG_SEEN = 8;
+
+    /**
+     * Ingo_Storage:: 'type' constants.
+     */
+    const TYPE_HEADER = 1;
+    const TYPE_SIZE = 2;
+    const TYPE_BODY = 3;
+
+    /**
+     * Driver specific parameters.
+     *
+     * @var array
+     */
+    protected $_params = array();
+
+    /**
+     * Cached rule objects.
+     *
+     * @var array
+     */
+    protected $_cache = array();
+
+    /**
+     * Attempts to return a concrete Ingo_Storage instance based on $driver.
+     *
+     * @param string $driver  The type of concrete Ingo_Storage subclass to
+     *                        return.  This is based on the storage driver
+     *                        ($driver).  The code is dynamically included.
+     * @param array $params   A hash containing any additional configuration or
+     *                        connection parameters a subclass might need.
+     *
+     * @return mixed  The newly created concrete Ingo_Storage instance, or
+     *                false on an error.
+     */
+    static public function factory($driver = null, $params = null)
+    {
+        if (is_null($driver)) {
+            $driver = $GLOBALS['conf']['storage']['driver'];
+        }
+
+        $driver = basename($driver);
+
+        if (is_null($params)) {
+            $params = Horde::getDriverConfig('storage', $driver);
+        }
+
+        $class = 'Ingo_Storage_' . $driver;
+        return class_exists($class)
+            ? new $class($params)
+            : false;
+    }
+
+    /**
+     * Destructor.
+     */
+    protected function __destruct()
+    {
+        $cache = &Horde_SessionObjects::singleton();
+
+        /* Store the current objects. */
+        foreach ($this->_cache as $key => $val) {
+            if (!$val['mod'] && isset($_SESSION['ingo']['storage'][$key])) {
+                continue;
+            }
+            if (isset($_SESSION['ingo']['storage'][$key])) {
+                $cache->setPruneFlag($_SESSION['ingo']['storage'][$key], true);
+            }
+            $_SESSION['ingo']['storage'][$key] = $cache->storeOid($val['ob'], false);
+        }
+    }
+
+    /**
+     * Retrieves the specified data.
+     *
+     * @param integer $field     The field name of the desired data
+     *                           (INGO_STORAGE_ACTION_* constants).
+     * @param boolean $cache     Use the cached object?
+     * @param boolean $readonly  Whether to disable any write operations.
+     *
+     * @return Ingo_Storage_rule|Ingo_Storage_filters  The specified object.
+     */
+    public function retrieve($field, $cache = true, $readonly = false)
+    {
+        /* Don't cache if using shares. */
+        if ($cache && empty($GLOBALS['ingo_shares'])) {
+            if (!isset($this->_cache[$field])) {
+                $this->_cache[$field] = array('mod' => false);
+                if (isset($_SESSION['ingo']['storage'][$field])) {
+                    $cacheSess = &Horde_SessionObjects::singleton();
+                    $this->_cache[$field]['ob'] = $cacheSess->query($_SESSION['ingo']['storage'][$field]);
+                } else {
+                    $this->_cache[$field]['ob'] = &$this->_retrieve($field, $readonly);
+                }
+            }
+            $ob = &$this->_cache[$field]['ob'];
+        } else {
+            $ob = &$this->_retrieve($field, $readonly);
+        }
+
+        return $ob;
+    }
+
+    /**
+     * Retrieves the specified data from the storage backend.
+     *
+     * @abstract
+     *
+     * @param integer $field     The field name of the desired data.
+     *                           See lib/Storage.php for the available fields.
+     * @param boolean $readonly  Whether to disable any write operations.
+     *
+     * @return Ingo_Storage_rule|Ingo_Storage_filters  The specified data.
+     */
+    protected function _retrieve($field, $readonly = false)
+    {
+        return false;
+    }
+
+    /**
+     * Stores the specified data.
+     *
+     * @param Ingo_Storage_rule|Ingo_Storage_filters $ob  The object to store.
+     * @param boolean $cache                              Cache the object?
+     *
+     * @return boolean  True on success.
+     */
+    public function store(&$ob, $cache = true)
+    {
+        $type = $ob->obType();
+        if (in_array($type, array(self::ACTION_BLACKLIST,
+                                  self::ACTION_VACATION,
+                                  self::ACTION_WHITELIST,
+                                  self::ACTION_FORWARD,
+                                  self::ACTION_SPAM))) {
+            $filters = $this->retrieve(self::ACTION_FILTERS);
+            if ($filters->findRuleId($type) === null) {
+                switch ($type) {
+                case self::ACTION_BLACKLIST:
+                    $name = 'Blacklist';
+                    break;
+
+                case self::ACTION_VACATION:
+                    $name = 'Vacation';
+                    break;
+
+                case self::ACTION_WHITELIST:
+                    $name = 'Whitelist';
+                    break;
+
+                case self::ACTION_FORWARD:
+                    $name = 'Forward';
+                    break;
+
+                case self::ACTION_SPAM:
+                    $name = 'Spam Filter';
+                    break;
+                }
+                $filters->addRule(array('action' => $type, 'name' => $name));
+                $result = $this->store($filters, $cache);
+                if (is_a($result, 'PEAR_Error')) {
+                    return $result;
+                }
+            }
+        }
+
+        $result = $this->_store($ob);
+        if ($cache) {
+            $this->_cache[$ob->obType()] = array('ob' => $ob, 'mod' => true);
+        }
+
+        return $result;
+    }
+
+    /**
+     * Stores the specified data in the storage backend.
+     *
+     * @abstract
+     *
+     * @param Ingo_Storage_rule|Ingo_Storage_filters $ob  The object to store.
+     *
+     * @return boolean  True on success.
+     */
+    protected function _store(&$ob)
+    {
+        return false;
+    }
+
+    /**
+     * Returns information on a given action constant.
+     *
+     * @param integer $action  The INGO_STORAGE_ACTION_* value.
+     *
+     * @return stdClass  Object with the following values:
+     * <pre>
+     * 'flags' => (boolean) Does this action allow flags to be set?
+     * 'label' => (string) The label for this action.
+     * 'type'  => (string) Either 'folder', 'text', or empty.
+     * </pre>
+     */
+    public function getActionInfo($action)
+    {
+        $ob = &new stdClass;
+        $ob->flags = false;
+        $ob->type = 'text';
+
+        switch ($action) {
+        case self::ACTION_KEEP:
+            $ob->label = _("Deliver into my Inbox");
+            $ob->type = false;
+            $ob->flags = true;
+            break;
+
+        case self::ACTION_MOVE:
+            $ob->label = _("Deliver to folder...");
+            $ob->type = 'folder';
+            $ob->flags = true;
+            break;
+
+        case self::ACTION_DISCARD:
+            $ob->label = _("Delete message completely");
+            $ob->type = false;
+            break;
+
+        case self::ACTION_REDIRECT:
+            $ob->label = _("Redirect to...");
+            break;
+
+        case self::ACTION_REDIRECTKEEP:
+            $ob->label = _("Deliver into my Inbox and redirect to...");
+            $ob->flags = true;
+            break;
+
+        case self::ACTION_MOVEKEEP:
+            $ob->label = _("Deliver into my Inbox and copy to...");
+            $ob->type = 'folder';
+            $ob->flags = true;
+            break;
+
+        case self::ACTION_REJECT:
+            $ob->label = _("Reject with reason...");
+            break;
+
+        case self::ACTION_FLAGONLY:
+            $ob->label = _("Only flag the message");
+            $ob->type = false;
+            $ob->flags = true;
+            break;
+
+        case self::ACTION_NOTIFY:
+            $ob->label = _("Notify email address...");
+            break;
+        }
+
+        return $ob;
+    }
+
+    /**
+     * Returns information on a given test string.
+     *
+     * @param string $action  The test string.
+     *
+     * @return stdClass  Object with the following values:
+     * <pre>
+     * 'label' => (string) The label for this action.
+     * 'type'  => (string) Either 'int', 'none', or 'text'.
+     * </pre>
+     */
+    public function getTestInfo($test)
+    {
+        /* Mapping of gettext strings -> labels. */
+        $labels = array(
+            'contains' => _("Contains"),
+            'not contain' =>  _("Doesn't contain"),
+            'is' => _("Is"),
+            'not is' => _("Isn't"),
+            'begins with' => _("Begins with"),
+            'not begins with' => _("Doesn't begin with"),
+            'ends with' => _("Ends with"),
+            'not ends with' => _("Doesn't end with"),
+            'exists' =>  _("Exists"),
+            'not exist' => _("Doesn't exist"),
+            'regex' => _("Regular expression"),
+            'matches' => _("Matches (with placeholders)"),
+            'not matches' => _("Doesn't match (with placeholders)"),
+            'less than' => _("Less than"),
+            'less than or equal to' => _("Less than or equal to"),
+            'greater than' => _("Greater than"),
+            'greater than or equal to' => _("Greater than or equal to"),
+            'equal' => _("Equal to"),
+            'not equal' => _("Not equal to")
+        );
+
+        /* The type of tests available. */
+        $types = array(
+            'int'  => array(
+                'less than', 'less than or equal to', 'greater than',
+                'greater than or equal to', 'equal', 'not equal'
+            ),
+            'none' => array(
+                'exists', 'not exist'
+            ),
+            'text' => array(
+                'contains', 'not contain', 'is', 'not is', 'begins with',
+                'not begins with', 'ends with', 'not ends with', 'regex',
+                'matches', 'not matches'
+            )
+        );
+
+        /* Create the information object. */
+        $ob = &new stdClass;
+        $ob->label = $labels[$test];
+        foreach ($types as $key => $val) {
+            if (in_array($test, $val)) {
+                $ob->type = $key;
+                break;
+            }
+        }
+
+        return $ob;
+    }
+
+}
+
+/**
+ * Ingo_Storage_rule:: is the base class for the various action objects
+ * used by Ingo_Storage.
+ *
+ * @author  Michael Slusarz <slusarz@horde.org>
+ * @package Ingo
+ */
+class Ingo_Storage_rule
+{
+    /**
+     * The object type.
+     *
+     * @var integer
+     */
+    protected $_obtype;
+
+    /**
+     * Whether the rule has been saved (if being saved separately).
+     *
+     * @var boolean
+     */
+    protected $_saved = false;
+
+    /**
+     * Returns the object rule type.
+     *
+     * @return integer  The object rule type.
+     */
+    public function obType()
+    {
+        return $this->_obtype;
+    }
+
+    /**
+     * Marks the rule as saved or unsaved.
+     *
+     * @param boolean $data  Whether the rule has been saved.
+     */
+    public function setSaved($data)
+    {
+        $this->_saved = $data;
+    }
+
+    /**
+     * Returns whether the rule has been saved.
+     *
+     * @return boolean  True if the rule has been saved.
+     */
+    public function isSaved()
+    {
+        return $this->_saved;
+    }
+
+    /**
+     * Function to manage an internal address list.
+     *
+     * @param mixed $data    The incoming data (array or string).
+     * @param boolean $sort  Sort the list?
+     *
+     * @return array  The address list.
+     */
+    protected function _addressList($data, $sort)
+    {
+        $output = array();
+
+        if (is_array($data)) {
+            $output = $data;
+        } else {
+            $data = trim($data);
+            $output = (empty($data)) ? array() : preg_split("/\s+/", $data);
+        }
+
+        if ($sort) {
+            $output = Horde_Array::prepareAddressList($output);
+        }
+
+        return $output;
+    }
+
+}
+
+/**
+ * Ingo_Storage_blacklist is the object used to hold blacklist rule
+ * information.
+ *
+ * @author  Michael Slusarz <slusarz@horde.org>
+ * @package Ingo
+ */
+class Ingo_Storage_blacklist extends Ingo_Storage_rule
+{
+    protected $_addr = array();
+    protected $_folder = '';
+    protected $_obtype = Ingo_Storage::ACTION_BLACKLIST;
+
+    /**
+     * Sets the list of blacklisted addresses.
+     *
+     * @param mixed $data    The list of addresses (array or string).
+     * @param boolean $sort  Sort the list?
+     *
+     * @return mixed  PEAR_Error on error, true on success.
+     */
+    public function setBlacklist($data, $sort = true)
+    {
+        $addr = &$this->_addressList($data, $sort);
+        if (!empty($GLOBALS['conf']['storage']['maxblacklist'])) {
+            $addr_count = count($addr);
+            if ($addr_count > $GLOBALS['conf']['storage']['maxblacklist']) {
+                return PEAR::raiseError(sprintf(_("Maximum number of blacklisted addresses exceeded (Total addresses: %s, Maximum addresses: %s).  Could not add new addresses to blacklist."), $addr_count, $GLOBALS['conf']['storage']['maxblacklist']), 'horde.error');
+            }
+        }
+
+        $this->_addr = $addr;
+        return true;
+    }
+
+    public function setBlacklistFolder($data)
+    {
+        $this->_folder = $data;
+    }
+
+    public function getBlacklist()
+    {
+        return array_filter($this->_addr, array('Ingo', '_filterEmptyAddress'));
+    }
+
+    public function getBlacklistFolder()
+    {
+        return $this->_folder;
+    }
+
+}
+
+/**
+ * Ingo_Storage_whitelist is the object used to hold whitelist rule
+ * information.
+ *
+ * @author  Michael Slusarz <slusarz@horde.org>
+ * @package Ingo
+ */
+class Ingo_Storage_whitelist extends Ingo_Storage_rule
+{
+    protected $_addr = array();
+    protected $_obtype = Ingo_Storage::ACTION_WHITELIST;
+
+    /**
+     * Sets the list of whitelisted addresses.
+     *
+     * @param mixed $data    The list of addresses (array or string).
+     * @param boolean $sort  Sort the list?
+     *
+     * @return mixed  PEAR_Error on error, true on success.
+     */
+    public function setWhitelist($data, $sort = true)
+    {
+        $addr = &$this->_addressList($data, $sort);
+        $addr = array_filter($addr, array('Ingo', '_filterEmptyAddress'));
+        if (!empty($GLOBALS['conf']['storage']['maxwhitelist'])) {
+            $addr_count = count($addr);
+            if ($addr_count > $GLOBALS['conf']['storage']['maxwhitelist']) {
+                return PEAR::raiseError(sprintf(_("Maximum number of whitelisted addresses exceeded (Total addresses: %s, Maximum addresses: %s).  Could not add new addresses to whitelist."), $addr_count, $GLOBALS['conf']['storage']['maxwhitelist']), 'horde.error');
+            }
+        }
+
+        $this->_addr = $addr;
+        return true;
+    }
+
+    public function getWhitelist()
+    {
+        return array_filter($this->_addr, array('Ingo', '_filterEmptyAddress'));
+    }
+
+}
+
+/**
+ * Ingo_Storage_forward is the object used to hold mail forwarding rule
+ * information.
+ *
+ * @author  Michael Slusarz <slusarz@horde.org>
+ * @package Ingo
+ */
+class Ingo_Storage_forward extends Ingo_Storage_rule
+{
+    protected $_addr = array();
+    protected $_keep = true;
+    protected $_obtype = Ingo_Storage::ACTION_FORWARD;
+
+    public function setForwardAddresses($data, $sort = true)
+    {
+        $this->_addr = &$this->_addressList($data, $sort);
+    }
+
+    public function setForwardKeep($data)
+    {
+        $this->_keep = $data;
+    }
+
+    public function getForwardAddresses()
+    {
+        if (is_array($this->_addr)) {
+            foreach ($this->_addr as $key => $val) {
+                if (empty($val)) {
+                    unset($this->_addr[$key]);
+                }
+            }
+        }
+        return $this->_addr;
+    }
+
+    public function getForwardKeep()
+    {
+        return $this->_keep;
+    }
+
+}
+
+/**
+ * Ingo_Storage_vacation is the object used to hold vacation rule
+ * information.
+ *
+ * @author  Michael Slusarz <slusarz@horde.org>
+ * @package Ingo
+ */
+class Ingo_Storage_vacation extends Ingo_Storage_rule
+{
+    protected $_addr = array();
+    protected $_days = 7;
+    protected $_excludes = array();
+    protected $_ignorelist = true;
+    protected $_reason = '';
+    protected $_subject = '';
+    protected $_start;
+    protected $_end;
+    protected $_obtype = Ingo_Storage::ACTION_VACATION;
+
+    public function setVacationAddresses($data, $sort = true)
+    {
+        $this->_addr = &$this->_addressList($data, $sort);
+    }
+
+    public function setVacationDays($data)
+    {
+        $this->_days = $data;
+    }
+
+    public function setVacationExcludes($data, $sort = true)
+    {
+        $this->_excludes = &$this->_addressList($data, $sort);
+    }
+
+    public function setVacationIgnorelist($data)
+    {
+        $this->_ignorelist = $data;
+    }
+
+    public function setVacationReason($data)
+    {
+        $this->_reason = $data;
+    }
+
+    public function setVacationSubject($data)
+    {
+        $this->_subject = $data;
+    }
+
+    public function setVacationStart($data)
+    {
+        $this->_start = $data;
+    }
+
+    public function setVacationEnd($data)
+    {
+        $this->_end = $data;
+    }
+
+    public function getVacationAddresses()
+    {
+        if (empty($GLOBALS['conf']['hooks']['vacation_addresses'])) {
+            return $this->_addr;
+        }
+
+        $addresses = Horde::callHook('_ingo_hook_vacation_addresses', array(Ingo::getUser()), 'ingo');
+        if (is_a($addresses, 'PEAR_Error')) {
+            $addresses = array();
+        }
+        return $addresses;
+    }
+
+    public function getVacationDays()
+    {
+        return $this->_days;
+    }
+
+    public function getVacationExcludes()
+    {
+        return $this->_excludes;
+    }
+
+    public function getVacationIgnorelist()
+    {
+        return $this->_ignorelist;
+    }
+
+    public function getVacationReason()
+    {
+        return $this->_reason;
+    }
+
+    public function getVacationSubject()
+    {
+        return $this->_subject;
+    }
+
+    public function getVacationStart()
+    {
+        return $this->_start;
+    }
+
+    public function getVacationStartYear()
+    {
+        return date('Y', $this->_start);
+    }
+
+    public function getVacationStartMonth()
+    {
+        return date('n', $this->_start);
+    }
+
+    public function getVacationStartDay()
+    {
+        return date('j', $this->_start);
+    }
+
+    public function getVacationEnd()
+    {
+        return $this->_end;
+    }
+
+    public function getVacationEndYear()
+    {
+        return date('Y', $this->_end);
+    }
+
+    public function getVacationEndMonth()
+    {
+        return date('n', $this->_end);
+    }
+
+    public function getVacationEndDay()
+    {
+        return date('j', $this->_end);
+    }
+
+}
+
+/**
+ * Ingo_Storage_spam is an object used to hold default spam-rule filtering
+ * information.
+ *
+ * @author  Jason M. Felice <jason.m.felice@gmail.com>
+ * @package Ingo
+ */
+class Ingo_Storage_spam extends Ingo_Storage_rule
+{
+
+    /**
+     * The object type.
+     *
+     * @var integer
+     */
+    protected $_obtype = Ingo_Storage::ACTION_SPAM;
+
+    protected $_folder = null;
+    protected $_level = 5;
+
+    public function __construct()
+    {
+        // Attempt to get the default Spam folder from imp
+        if (in_array('imp', $GLOBALS['registry']->listApps())) {
+            $prefs = Prefs::factory($GLOBALS['conf']['prefs']['driver'],
+                                    'imp', Ingo::getUser(), '', null, false);
+            $prefs->retrieve();
+
+            $folder = $prefs->getValue('spam_folder', false);
+            if ($folder !== false) {
+                $this->_folder = $folder;
+            }
+        }
+    }
+
+    public function setSpamFolder($folder)
+    {
+        $this->_folder = $folder;
+    }
+
+    public function setSpamLevel($level)
+    {
+        $this->_level = $level;
+    }
+
+    public function getSpamFolder()
+    {
+        return $this->_folder;
+    }
+
+    public function getSpamLevel()
+    {
+        return $this->_level;
+    }
+
+}
+
+/**
+ * Ingo_Storage_filters is the object used to hold user-defined filtering rule
+ * information.
+ *
+ * @author  Michael Slusarz <slusarz@horde.org>
+ * @package Ingo
+ */
+class Ingo_Storage_filters
+{
+    /**
+     * The filter list.
+     *
+     * @var array
+     */
+    protected $_filters = array();
+
+    /**
+     * The object type.
+     *
+     * @var integer
+     */
+    protected $_obtype = Ingo_Storage::ACTION_FILTERS;
+
+    /**
+     * Returns the object rule type.
+     *
+     * @return integer  The object rule type.
+     */
+    public function obType()
+    {
+        return $this->_obtype;
+    }
+
+    /**
+     * Propagates the filter list with data.
+     *
+     * @param array $data  A list of rule hashes.
+     */
+    public function setFilterlist($data)
+    {
+        $this->_filters = $data;
+    }
+
+    /**
+     * Returns the filter list.
+     *
+     * @return array  The list of rule hashes.
+     */
+    public function getFilterlist()
+    {
+        return $this->_filters;
+    }
+
+    /**
+     * Returns a single rule hash.
+     *
+     * @param integer $id  A rule number.
+     *
+     * @return array  The requested rule hash.
+     */
+    public function getRule($id)
+    {
+        return $this->_filters[$id];
+    }
+
+    /**
+     * Returns a rule hash with default value used when creating new rules.
+     *
+     * @return array  A rule hash.
+     */
+    public function getDefaultRule()
+    {
+        return array(
+            'name' => _("New Rule"),
+            'combine' => INGO_STORAGE_COMBINE_ALL,
+            'conditions' => array(),
+            'action' => INGO_STORAGE_ACTION_KEEP,
+            'action-value' => '',
+            'stop' => true,
+            'flags' => 0,
+            'disable' => false
+        );
+    }
+
+    /**
+     * Searches for the first rule of a certain action type and returns its
+     * number.
+     *
+     * @param integer $action  The field type of the searched rule
+     *                         (INGO_STORAGE_ACTION_* constants).
+     *
+     * @return integer  The number of the first matching rule or null.
+     */
+    public function findRuleId($action)
+    {
+        foreach ($this->_filters as $id => $rule) {
+            if ($rule['action'] == $action) {
+                return $id;
+            }
+        }
+    }
+
+    /**
+     * Searches for and returns the first rule of a certain action type.
+     *
+     * @param integer $action  The field type of the searched rule
+     *                         (INGO_STORAGE_ACTION_* constants).
+     *
+     * @return array  The first matching rule hash or null.
+     */
+    public function findRule($action)
+    {
+        $id = $this->findRuleId($action);
+        if ($id !== null) {
+            return $this->getRule($id);
+        }
+    }
+
+    /**
+     * Adds a rule hash to the filters list.
+     *
+     * @param array $rule       A rule hash.
+     * @param boolean $default  If true merge the rule hash with default rule
+     *                          values.
+     */
+    public function addRule($rule, $default = true)
+    {
+        if ($default) {
+            $this->_filters[] = array_merge($this->getDefaultRule(), $rule);
+        } else {
+            $this->_filters[] = $rule;
+        }
+    }
+
+    /**
+     * Updates an existing rule with a rule hash.
+     *
+     * @param array $rule  A rule hash
+     * @param integer $id  A rule number
+     */
+    public function updateRule($rule, $id)
+    {
+        $this->_filters[$id] = $rule;
+    }
+
+    /**
+     * Deletes a rule from the filters list.
+     *
+     * @param integer $id  Number of the rule to delete.
+     *
+     * @return boolean  True if the rule has been found and deleted.
+     */
+    public function deleteRule($id)
+    {
+        if (isset($this->_filters[$id])) {
+            unset($this->_filters[$id]);
+            $this->_filters = array_values($this->_filters);
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Creates a copy of an existing rule.
+     *
+     * The created copy is added to the filters list right after the original
+     * rule.
+     *
+     * @param integer $id  Number of the rule to copy.
+     *
+     * @return boolean  True if the rule has been found and copied.
+     */
+    public function copyRule($id)
+    {
+        if (isset($this->_filters[$id])) {
+            $newrule = $this->_filters[$id];
+            $newrule['name'] = sprintf(_("Copy of %s"), $this->_filters[$id]['name']);
+            $this->_filters = array_merge(array_slice($this->_filters, 0, $id + 1), array($newrule), array_slice($this->_filters, $id + 1));
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Moves a rule up in the filters list.
+     *
+     * @param integer $id     Number of the rule to move.
+     * @param integer $steps  Number of positions to move the rule up.
+     */
+    public function ruleUp($id, $steps = 1)
+    {
+        for ($i = 0; $i < $steps && $id > 0;) {
+            $temp = $this->_filters[$id - 1];
+            $this->_filters[$id - 1] = $this->_filters[$id];
+            $this->_filters[$id] = $temp;
+            /* Continue to move up until we swap with a viewable category. */
+            if (in_array($temp['action'], $_SESSION['ingo']['script_categories'])) {
+                $i++;
+            }
+            $id--;
+        }
+    }
+
+    /**
+     * Moves a rule down in the filters list.
+     *
+     * @param integer $id     Number of the rule to move.
+     * @param integer $steps  Number of positions to move the rule down.
+     */
+    public function ruleDown($id, $steps = 1)
+    {
+        $rulecount = count($this->_filters) - 1;
+        for ($i = 0; $i < $steps && $id < $rulecount;) {
+            $temp = $this->_filters[$id + 1];
+            $this->_filters[$id + 1] = $this->_filters[$id];
+            $this->_filters[$id] = $temp;
+            /* Continue to move down until we swap with a viewable
+               category. */
+            if (in_array($temp['action'], $_SESSION['ingo']['script_categories'])) {
+                $i++;
+            }
+            $id++;
+        }
+    }
+
+    /**
+     * Disables a rule.
+     *
+     * @param integer $id  Number of the rule to disable.
+     */
+    public function ruleDisable($id)
+    {
+        $this->_filters[$id]['disable'] = true;
+    }
+
+    /**
+     * Enables a rule.
+     *
+     * @param integer $id  Number of the rule to enable.
+     */
+    public function ruleEnable($id)
+    {
+        $this->_filters[$id]['disable'] = false;
+    }
+
+}
diff --git a/ingo/lib/Storage/mock.php b/ingo/lib/Storage/mock.php
new file mode 100644 (file)
index 0000000..10a5409
--- /dev/null
@@ -0,0 +1,55 @@
+<?php
+/**
+ * Ingo_Storage_mock:: is used for testing purposes.  It just keeps the
+ * data local and doesn't put it anywhere.
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Jason M. Felice <jason.m.felice@gmail.com>
+ * @package Ingo
+ */
+
+class Ingo_Storage_mock extends Ingo_Storage
+{
+    protected $_data = array();
+
+    protected function &_retrieve($field)
+    {
+        if (empty($this->_data[$field])) {
+            switch ($field) {
+            case self::ACTION_BLACKLIST:
+                return new Ingo_Storage_blacklist();
+
+            case self::ACTION_FILTERS:
+                $ob = &new Ingo_Storage_filters();
+                include INGO_BASE . '/config/prefs.php.dist';
+                $ob->setFilterList(unserialize($_prefs['rules']['value']));
+                return $ob;
+
+            case self::ACTION_FORWARD:
+                return new Ingo_Storage_forward();
+
+            case self::ACTION_VACATION:
+                return new Ingo_Storage_vacation();
+
+            case self::ACTION_WHITELIST:
+                return new Ingo_Storage_whitelist();
+
+            case self::ACTION_SPAM:
+                return new Ingo_Storage_spam();
+
+            default:
+                return false;
+            }
+        }
+
+        return $this->_data[$field];
+    }
+
+    protected function _store(&$ob)
+    {
+        $this->_data[$ob->obType()] = $ob;
+    }
+
+}
diff --git a/ingo/lib/Storage/prefs.php b/ingo/lib/Storage/prefs.php
new file mode 100644 (file)
index 0000000..4054717
--- /dev/null
@@ -0,0 +1,183 @@
+<?php
+/**
+ * Ingo_Storage_prefs:: implements the Ingo_Storage:: API to save Ingo data
+ * via the Horde preferences system.
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Michael Slusarz <slusarz@horde.org>
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Ingo
+ */
+class Ingo_Storage_prefs extends Ingo_Storage
+{
+    /**
+     * Constructor.
+     *
+     * @param array $params  Additional parameters for the subclass.
+     */
+    public function __construct($params = array())
+    {
+        $this->_params = $params;
+    }
+
+    /**
+     * Retrieves the specified data from the storage backend.
+     *
+     * @param integer $field     The field name of the desired data.
+     *                           See lib/Storage.php for the available fields.
+     * @param boolean $readonly  Whether to disable any write operations.
+     *
+     * @return Ingo_Storage_rule|Ingo_Storage_filters  The specified data.
+     */
+    protected function _retrieve($field, $readonly = false)
+    {
+        $prefs = &Prefs::singleton($GLOBALS['conf']['prefs']['driver'],
+                                   $GLOBALS['registry']->getApp(),
+                                   Ingo::getUser(), '', null, false);
+        $prefs->retrieve();
+
+        switch ($field) {
+        case self::ACTION_BLACKLIST:
+            $ob = new Ingo_Storage_blacklist();
+            $data = @unserialize($prefs->getValue('blacklist'));
+            if ($data) {
+                $ob->setBlacklist($data['a'], false);
+                $ob->setBlacklistFolder($data['f']);
+            }
+            break;
+
+        case self::ACTION_FILTERS:
+            $ob = new Ingo_Storage_filters();
+            $data = @unserialize($prefs->getValue('rules', false));
+            if ($data === false) {
+                /* Convert rules from the old format. */
+                $data = @unserialize($prefs->getValue('rules'));
+            } else {
+                $data = String::convertCharset($data, $prefs->getCharset(), NLS::getCharset());
+            }
+            if ($data) {
+                $ob->setFilterlist($data);
+            }
+            break;
+
+        case self::ACTION_FORWARD:
+            $ob = new Ingo_Storage_forward();
+            $data = @unserialize($prefs->getValue('forward'));
+            if ($data) {
+                $ob->setForwardAddresses($data['a'], false);
+                $ob->setForwardKeep($data['k']);
+            }
+            break;
+
+        case self::ACTION_VACATION:
+            $ob = new Ingo_Storage_vacation();
+            $data = @unserialize($prefs->getValue('vacation', false));
+            if ($data === false) {
+                /* Convert vacation from the old format. */
+                $data = unserialize($prefs->getValue('vacation'));
+            } elseif (is_array($data)) {
+                $data = $prefs->convertFromDriver($data, NLS::getCharset());
+            }
+            if ($data) {
+                $ob->setVacationAddresses($data['addresses'], false);
+                $ob->setVacationDays($data['days']);
+                $ob->setVacationExcludes($data['excludes'], false);
+                $ob->setVacationIgnorelist($data['ignorelist']);
+                $ob->setVacationReason($data['reason']);
+                $ob->setVacationSubject($data['subject']);
+                if (isset($data['start'])) {
+                    $ob->setVacationStart($data['start']);
+                }
+                if (isset($data['end'])) {
+                    $ob->setVacationEnd($data['end']);
+                }
+            }
+            break;
+
+        case self::ACTION_WHITELIST:
+            $ob = new Ingo_Storage_whitelist();
+            $data = @unserialize($prefs->getValue('whitelist'));
+            if ($data) {
+                $ob->setWhitelist($data, false);
+            }
+            break;
+
+        case self::ACTION_SPAM:
+            $ob = new Ingo_Storage_spam();
+            $data = @unserialize($prefs->getValue('spam'));
+            if ($data) {
+                $ob->setSpamFolder($data['folder']);
+                $ob->setSpamLevel($data['level']);
+            }
+            break;
+
+        default:
+            $ob = false;
+            break;
+        }
+
+        return $ob;
+    }
+
+    /**
+     * Stores the specified data in the storage backend.
+     *
+     * @param Ingo_Storage_rule|Ingo_Storage_filters $ob  The object to store.
+     *
+     * @return boolean  True on success.
+     */
+    protected function _store($ob)
+    {
+        $prefs = &Prefs::singleton($GLOBALS['conf']['prefs']['driver'],
+                                   $GLOBALS['registry']->getApp(),
+                                   Ingo::getUser(), '', null, false);
+        $prefs->retrieve();
+
+        switch ($ob->obType()) {
+        case self::ACTION_BLACKLIST:
+            $data = array(
+                'a' => $ob->getBlacklist(),
+                'f' => $ob->getBlacklistFolder(),
+            );
+            return $prefs->setValue('blacklist', serialize($data));
+
+        case self::ACTION_FILTERS:
+            return $prefs->setValue('rules', serialize(String::convertCharset($ob->getFilterlist(), NLS::getCharset(), $prefs->getCharset())), false);
+
+        case self::ACTION_FORWARD:
+            $data = array(
+                'a' => $ob->getForwardAddresses(),
+                'k' => $ob->getForwardKeep(),
+            );
+            return $prefs->setValue('forward', serialize($data));
+
+        case self::ACTION_VACATION:
+            $data = array(
+                'addresses' => $ob->getVacationAddresses(),
+                'days' => $ob->getVacationDays(),
+                'excludes' => $ob->getVacationExcludes(),
+                'ignorelist' => $ob->getVacationIgnorelist(),
+                'reason' => $ob->getVacationReason(),
+                'subject' => $ob->getVacationSubject(),
+                'start' => $ob->getVacationStart(),
+                'end' => $ob->getVacationEnd(),
+            );
+            return $prefs->setValue('vacation', serialize($prefs->convertToDriver($data, NLS::getCharset())), false);
+
+        case self::ACTION_WHITELIST:
+            return $prefs->setValue('whitelist', serialize($ob->getWhitelist()));
+
+        case self::ACTION_SPAM:
+            $data = array(
+                'folder' => $ob->getSpamFolder(),
+                'level' => $ob->getSpamLevel(),
+            );
+            return $prefs->setValue('spam', serialize($data));
+        }
+
+        return false;
+    }
+
+}
diff --git a/ingo/lib/Storage/sql.php b/ingo/lib/Storage/sql.php
new file mode 100644 (file)
index 0000000..b6d6ed7
--- /dev/null
@@ -0,0 +1,718 @@
+<?php
+/**
+ * Ingo_Storage_sql implements the Ingo_Storage API to save Ingo data via
+ * PHP's PEAR database abstraction layer.
+ *
+ * Required values for $params:<pre>
+ *   'phptype'  - The database type (e.g. 'pgsql', 'mysql', etc.).
+ *   'charset'  - The database's internal charset.</pre>
+ *
+ * Required by some database implementations:<pre>
+ *   'database' - The name of the database.
+ *   'hostspec' - The hostname of the database server.
+ *   'protocol' - The communication protocol ('tcp', 'unix', etc.).
+ *   'username' - The username with which to connect to the database.
+ *   'password' - The password associated with 'username'.
+ *   'options'  - Additional options to pass to the database.
+ *   'tty'      - The TTY on which to connect to the database.
+ *   'port'     - The port on which to connect to the database.</pre>
+ *
+ * The table structure can be created by the scripts/drivers/sql/ingo.sql
+ * script.
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Ingo
+ */
+class Ingo_Storage_sql extends Ingo_Storage
+{
+    /**
+     * Handle for the current database connection.
+     *
+     * @var DB
+     */
+    protected $_db;
+
+    /**
+     * Handle for the current database connection, used for writing.
+     *
+     * Defaults to the same handle as $_db if a separate write database is not
+     * required.
+     *
+     * @var DB
+     */
+    protected $_write_db;
+
+    /**
+     * Boolean indicating whether or not we're connected to the SQL server.
+     *
+     * @var boolean
+     */
+    protected $_connected = false;
+
+    /**
+     * Constructor.
+     *
+     * @param array $params  Additional parameters for the subclass.
+     */
+    public function __construct($params = array())
+    {
+        $this->_params = $params;
+
+        Horde::assertDriverConfig($this->_params, 'storage',
+                                  array('phptype', 'charset'));
+
+        if (!isset($this->_params['database'])) {
+            $this->_params['database'] = '';
+        }
+        if (!isset($this->_params['username'])) {
+            $this->_params['username'] = '';
+        }
+        if (!isset($this->_params['hostspec'])) {
+            $this->_params['hostspec'] = '';
+        }
+        $this->_params['table_rules'] = 'ingo_rules';
+        $this->_params['table_lists'] = 'ingo_lists';
+        $this->_params['table_vacations'] = 'ingo_vacations';
+        $this->_params['table_forwards'] = 'ingo_forwards';
+        $this->_params['table_spam'] = 'ingo_spam';
+
+        /* Connect to the SQL server using the supplied parameters. */
+        $this->_write_db = &DB::connect($this->_params,
+                                        array('persistent' => !empty($this->_params['persistent']),
+                                              'ssl' => !empty($this->_params['ssl'])));
+        if (is_a($this->_write_db, 'PEAR_Error')) {
+            Horde::fatal($this->_write_db, __FILE__, __LINE__);
+        }
+        /* Set DB portability options. */
+        switch ($this->_write_db->phptype) {
+        case 'mssql':
+            $this->_write_db->setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS | DB_PORTABILITY_RTRIM);
+            break;
+        default:
+            $this->_write_db->setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS);
+        }
+
+
+        /* Check if we need to set up the read DB connection seperately. */
+        if (!empty($this->_params['splitread'])) {
+            $params = array_merge($this->_params, $this->_params['read']);
+            $this->_db = &DB::connect($params,
+                                      array('persistent' => !empty($params['persistent']),
+                                            'ssl' => !empty($params['ssl'])));
+            if (is_a($this->_db, 'PEAR_Error')) {
+                Horde::fatal($this->_db, __FILE__, __LINE__);
+            }
+
+            switch ($this->_db->phptype) {
+            case 'mssql':
+                $this->_db->setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS | DB_PORTABILITY_RTRIM);
+                break;
+            default:
+                $this->_db->setOption('portability', DB_PORTABILITY_LOWERCASE | DB_PORTABILITY_ERRORS);
+            }
+        } else {
+            /* Default to the same DB handle for the writer too. */
+            $this->_db =& $this->_write_db;
+        }
+    }
+
+    /**
+     * Retrieves the specified data from the storage backend.
+     *
+     * @param integer $field     The field name of the desired data.
+     *                           See lib/Storage.php for the available fields.
+     * @param boolean $readonly  Whether to disable any write operations.
+     *
+     * @return Ingo_Storage_rule|Ingo_Storage_filters  The specified data.
+     */
+    protected function _retrieve($field, $readonly = false)
+    {
+        switch ($field) {
+        case self::ACTION_BLACKLIST:
+        case self::ACTION_WHITELIST:
+            if ($field == self::ACTION_BLACKLIST) {
+                $ob = new Ingo_Storage_blacklist();
+                $filters = &$this->retrieve(self::ACTION_FILTERS);
+                if (is_a($filters, 'PEAR_Error')) {
+                    return $filters;
+                }
+                $rule = $filters->findRule($field);
+                if (isset($rule['action-value'])) {
+                    $ob->setBlacklistFolder($rule['action-value']);
+                }
+            } else {
+                $ob = new Ingo_Storage_whitelist();
+            }
+            $query = sprintf('SELECT list_address FROM %s WHERE list_owner = ? AND list_blacklist = ?',
+                             $this->_params['table_lists']);
+            $values = array(Ingo::getUser(),
+                            (int)($field == self::ACTION_BLACKLIST));
+            Horde::logMessage('Ingo_Storage_sql::_retrieve(): ' . $query,
+                              __FILE__, __LINE__, PEAR_LOG_DEBUG);
+            $addresses = $this->_db->getCol($query, 0, $values);
+            if (is_a($addresses, 'PEAR_Error')) {
+                Horde::logMessage($addresses, __FILE__, __LINE__, PEAR_LOG_ERR);
+                return $addresses;
+            }
+            if ($field == self::ACTION_BLACKLIST) {
+                $ob->setBlacklist($addresses, false);
+            } else {
+                $ob->setWhitelist($addresses, false);
+            }
+            break;
+
+        case self::ACTION_FILTERS:
+            $ob = new Ingo_Storage_filters_sql($this->_db, $this->_write_db, $this->_params);
+            if (is_a($result = $ob->init($readonly), 'PEAR_Error')) {
+                return $result;
+            }
+            break;
+
+        case self::ACTION_FORWARD:
+            $query = sprintf('SELECT * FROM %s WHERE forward_owner = ?',
+                             $this->_params['table_forwards']);
+            Horde::logMessage('Ingo_Storage_sql::_retrieve(): ' . $query,
+                              __FILE__, __LINE__, PEAR_LOG_DEBUG);
+            $result = $this->_db->query($query, Ingo::getUser());
+            $data = $result->fetchRow(DB_FETCHMODE_ASSOC);
+
+            $ob = new Ingo_Storage_forward();
+            if ($data && !is_a($data, 'PEAR_Error')) {
+                $ob->setForwardAddresses(explode("\n", $data['forward_addresses']), false);
+                $ob->setForwardKeep((bool)$data['forward_keep']);
+                $ob->setSaved(true);
+            }
+            break;
+
+        case self::ACTION_VACATION:
+            $query = sprintf('SELECT * FROM %s WHERE vacation_owner = ?',
+                             $this->_params['table_vacations']);
+            Horde::logMessage('Ingo_Storage_sql::_retrieve(): ' . $query,
+                              __FILE__, __LINE__, PEAR_LOG_DEBUG);
+            $result = $this->_db->query($query, Ingo::getUser());
+            $data = $result->fetchRow(DB_FETCHMODE_ASSOC);
+
+            $ob = new Ingo_Storage_vacation();
+            if ($data && !is_a($data, 'PEAR_Error')) {
+                $ob->setVacationAddresses(explode("\n", $data['vacation_addresses']), false);
+                $ob->setVacationDays((int)$data['vacation_days']);
+                $ob->setVacationStart((int)$data['vacation_start']);
+                $ob->setVacationEnd((int)$data['vacation_end']);
+                $ob->setVacationExcludes(explode("\n", $data['vacation_excludes']), false);
+                $ob->setVacationIgnorelist((bool)$data['vacation_ignorelists']);
+                $ob->setVacationReason(String::convertCharset($data['vacation_reason'], $this->_params['charset']));
+                $ob->setVacationSubject(String::convertCharset($data['vacation_subject'], $this->_params['charset']));
+                $ob->setSaved(true);
+            }
+            break;
+
+        case self::ACTION_SPAM:
+            $query = sprintf('SELECT * FROM %s WHERE spam_owner = ?',
+                             $this->_params['table_spam']);
+            Horde::logMessage('Ingo_Storage_sql::_retrieve(): ' . $query,
+                              __FILE__, __LINE__, PEAR_LOG_DEBUG);
+            $result = $this->_db->query($query, Ingo::getUser());
+            $data = $result->fetchRow(DB_FETCHMODE_ASSOC);
+
+            $ob = new Ingo_Storage_spam();
+            if ($data && !is_a($data, 'PEAR_Error')) {
+                $ob->setSpamFolder($data['spam_folder']);
+                $ob->setSpamLevel((int)$data['spam_level']);
+                $ob->setSaved(true);
+            }
+            break;
+
+        default:
+            $ob = false;
+        }
+
+        return $ob;
+    }
+
+    /**
+     * Stores the specified data in the storage backend.
+     *
+     * @access private
+     *
+     * @param Ingo_Storage_rule|Ingo_Storage_filters $ob  The object to store.
+     *
+     * @return boolean  True on success.
+     */
+    protected function _store(&$ob)
+    {
+        switch ($ob->obType()) {
+        case self::ACTION_BLACKLIST:
+        case self::ACTION_WHITELIST:
+            $is_blacklist = (int)($ob->obType() == self::ACTION_BLACKLIST);
+            if ($is_blacklist) {
+                $filters = &$this->retrieve(self::ACTION_FILTERS);
+                if (is_a($filters, 'PEAR_Error')) {
+                    return $filters;
+                }
+                $id = $filters->findRuleId(self::ACTION_BLACKLIST);
+                if ($id !== null) {
+                    $rule = $filters->getRule($id);
+                    if (!isset($rule['action-value']) ||
+                        $rule['action-value'] != $ob->getBlacklistFolder()) {
+                        $rule['action-value'] = $ob->getBlacklistFolder();
+                        $filters->updateRule($rule, $id);
+                    }
+                }
+            }
+            $query = sprintf('DELETE FROM %s WHERE list_owner = ? AND list_blacklist = ?',
+                             $this->_params['table_lists']);
+            $values = array(Ingo::getUser(), $is_blacklist);
+            Horde::logMessage('Ingo_Storage_sql::_store(): ' . $query,
+                              __FILE__, __LINE__, PEAR_LOG_DEBUG);
+            $result = $this->_write_db->query($query, $values);
+            if (is_a($result, 'PEAR_Error')) {
+                Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR);
+                return $result;
+            }
+            $query = sprintf('INSERT INTO %s (list_owner, list_blacklist, list_address) VALUES (?, ?, ?)',
+                             $this->_params['table_lists']);
+            Horde::logMessage('Ingo_Storage_sql::_store(): ' . $query,
+                              __FILE__, __LINE__, PEAR_LOG_DEBUG);
+            $addresses = $is_blacklist ? $ob->getBlacklist() : $ob->getWhitelist();
+            foreach ($addresses as $address) {
+                $result = $this->_write_db->query($query,
+                                                  array(Ingo::getUser(),
+                                                        $is_blacklist,
+                                                        $address));
+                if (is_a($result, 'PEAR_Error')) {
+                    Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR);
+                    return $result;
+                }
+            }
+            $ob->setSaved(true);
+            $ret = true;
+            break;
+
+        case self::ACTION_FILTERS:
+            $ret = true;
+            break;
+
+        case self::ACTION_FORWARD:
+            if ($ob->isSaved()) {
+                $query = 'UPDATE %s SET forward_addresses = ?, forward_keep = ? WHERE forward_owner = ?';
+            } else {
+                $query = 'INSERT INTO %s (forward_addresses, forward_keep, forward_owner) VALUES (?, ?, ?)';
+            }
+            $query = sprintf($query, $this->_params['table_forwards']);
+            $values = array(
+                implode("\n", $ob->getForwardAddresses()),
+                (int)(bool)$ob->getForwardKeep(),
+                Ingo::getUser());
+            Horde::logMessage('Ingo_Storage_sql::_store(): ' . $query,
+                              __FILE__, __LINE__, PEAR_LOG_DEBUG);
+            $ret = $this->_write_db->query($query, $values);
+            if (!is_a($ret, 'PEAR_Error')) {
+                $ob->setSaved(true);
+            }
+            break;
+
+        case self::ACTION_VACATION:
+            if ($ob->isSaved()) {
+                $query = 'UPDATE %s SET vacation_addresses = ?, vacation_subject = ?, vacation_reason = ?, vacation_days = ?, vacation_start = ?, vacation_end = ?, vacation_excludes = ?, vacation_ignorelists = ? WHERE vacation_owner = ?';
+            } else {
+                $query = 'INSERT INTO %s (vacation_addresses, vacation_subject, vacation_reason, vacation_days, vacation_start, vacation_end, vacation_excludes, vacation_ignorelists, vacation_owner) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)';
+            }
+            $query = sprintf($query, $this->_params['table_vacations']);
+            $values = array(
+                implode("\n", $ob->getVacationAddresses()),
+                String::convertCharset($ob->getVacationSubject(),
+                                       NLS::getCharset(),
+                                       $this->_params['charset']),
+                String::convertCharset($ob->getVacationReason(),
+                                       NLS::getCharset(),
+                                       $this->_params['charset']),
+                (int)$ob->getVacationDays(),
+                (int)$ob->getVacationStart(),
+                (int)$ob->getVacationEnd(),
+                implode("\n", $ob->getVacationExcludes()),
+                (int)(bool)$ob->getVacationIgnorelist(),
+                Ingo::getUser());
+            Horde::logMessage('Ingo_Storage_sql::_store(): ' . $query,
+                              __FILE__, __LINE__, PEAR_LOG_DEBUG);
+            $ret = $this->_write_db->query($query, $values);
+            if (!is_a($ret, 'PEAR_Error')) {
+                $ob->setSaved(true);
+            }
+            break;
+
+        case self::ACTION_SPAM:
+            if ($ob->isSaved()) {
+                $query = 'UPDATE %s SET spam_level = ?, spam_folder = ? WHERE spam_owner = ?';
+            } else {
+                $query = 'INSERT INTO %s (spam_level, spam_folder, spam_owner) VALUES (?, ?, ?)';
+            }
+            $query = sprintf($query, $this->_params['table_spam']);
+            $values = array(
+                (int)$ob->getSpamLevel(),
+                $ob->getSpamFolder(),
+                Ingo::getUser());
+            Horde::logMessage('Ingo_Storage_sql::_store(): ' . $query,
+                              __FILE__, __LINE__, PEAR_LOG_DEBUG);
+            $ret = $this->_write_db->query($query, $values);
+            if (!is_a($ret, 'PEAR_Error')) {
+                $ob->setSaved(true);
+            }
+            break;
+
+        default:
+            $ret = false;
+            break;
+        }
+
+        if (is_a($ret, 'PEAR_Error')) {
+            Horde::logMessage($ret, __FILE__, __LINE__);
+        }
+
+        return $ret;
+    }
+
+}
+
+/**
+ * Ingo_Storage_filters_sql is the object used to hold user-defined filtering
+ * rule information.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Ingo
+ */
+class Ingo_Storage_filters_sql extends Ingo_Storage_filters {
+
+    /**
+     * Handle for the current database connection.
+     *
+     * @var DB
+     */
+    protected $_db;
+
+    /**
+     * Handle for the current database connection, used for writing.
+     *
+     * Defaults to the same handle as $_db if a separate write database is not
+     * required.
+     *
+     * @var DB
+     */
+    protected $_write_db;
+
+    /**
+     * Driver specific parameters.
+     *
+     * @var array
+     */
+    protected $_params;
+
+    /**
+     * Constructor.
+     *
+     * @param DB $db         Handle for the database connection.
+     * @param DB $write_db   Handle for the database connection, used for
+     *                       writing.
+     * @param array $params  Driver specific parameters.
+     */
+    public function __construct($db, $write_db, $params)
+    {
+        $this->_db = $db;
+        $this->_write_db = $write_db;
+        $this->_params = $params;
+    }
+
+    /**
+     * Loads all rules from the DB backend.
+     *
+     * @param boolean $readonly  Whether to disable any write operations.
+     */
+    public function init($readonly = false)
+    {
+        $query = sprintf('SELECT * FROM %s WHERE rule_owner = ? ORDER BY rule_order',
+                         $this->_params['table_rules']);
+        $values = array(Ingo::getUser());
+        Horde::logMessage('Ingo_Storage_filters_sql(): ' . $query, __FILE__, __LINE__, PEAR_LOG_DEBUG);
+        $result = $this->_db->query($query, $values);
+        if (is_a($result, 'PEAR_Error')) {
+            return $result;
+        }
+        $data = array();
+        while ($row = $result->fetchRow(DB_FETCHMODE_ASSOC)) {
+            $data[$row['rule_order']] = array(
+                'id' => (int)$row['rule_id'],
+                'name' => String::convertCharset($row['rule_name'], $this->_params['charset']),
+                'action' => (int)$row['rule_action'],
+                'action-value' => String::convertCharset($row['rule_value'], $this->_params['charset']),
+                'flags' => (int)$row['rule_flags'],
+                'conditions' => empty($row['rule_conditions']) ? null : String::convertCharset(unserialize($row['rule_conditions']), $this->_params['charset']),
+                'combine' => (int)$row['rule_combine'],
+                'stop' => (bool)$row['rule_stop'],
+                'disable' => !(bool)$row['rule_active']);
+        }
+        $this->setFilterlist($data);
+
+        if (empty($data) && !$readonly) {
+            $data = @unserialize($GLOBALS['prefs']->getDefault('rules'));
+            if ($data) {
+                foreach ($data as $val) {
+                    $this->addRule($val, false);
+                }
+            } else {
+                $this->addRule(
+                    array('name' => 'Whitelist',
+                          'action' => Ingo_Storage::ACTION_WHITELIST),
+                    false);
+                $this->addRule(
+                    array('name' => 'Vacation',
+                          'action' => Ingo_Storage::ACTION_VACATION,
+                          'disable' => true),
+                    false);
+                $this->addRule(
+                    array('name' => 'Blacklist',
+                          'action' => Ingo_Storage::ACTION_BLACKLIST),
+                    false);
+                $this->addRule(
+                    array('name' => 'Spam Filter',
+                          'action' => Ingo_Storage::ACTION_SPAM,
+                          'disable' => true),
+                    false);
+                $this->addRule(
+                    array('name' => 'Forward',
+                          'action' => Ingo_Storage::ACTION_FORWARD),
+                    false);
+            }
+        }
+    }
+
+    /**
+     * Converts a rule hash from Ingo's internal format to the database
+     * format.
+     *
+     * @param array $rule  Rule hash in Ingo's format.
+     *
+     * @return array  Rule hash in DB's format.
+     */
+    protected function _ruleToBackend($rule)
+    {
+        return array(String::convertCharset($rule['name'], NLS::getCharset(), $this->_params['charset']),
+                     (int)$rule['action'],
+                     isset($rule['action-value']) ? String::convertCharset($rule['action-value'], NLS::getCharset(), $this->_params['charset']) : null,
+                     isset($rule['flags']) ? (int)$rule['flags'] : null,
+                     isset($rule['conditions']) ? serialize(String::convertCharset($rule['conditions'], NLS::getCharset(), $this->_params['charset'])) : null,
+                     isset($rule['combine']) ? (int)$rule['combine'] : null,
+                     isset($rule['stop']) ? (int)$rule['stop'] : null,
+                     isset($rule['disable']) ? (int)(!$rule['disable']) : 1);
+    }
+
+    /**
+     * Adds a rule hash to the filters list.
+     *
+     * @param array $rule       A rule hash.
+     * @param boolean $default  If true merge the rule hash with default rule
+     *                          values.
+     */
+    public function addRule($rule, $default = true)
+    {
+        if ($default) {
+            $rule = array_merge($this->getDefaultRule(), $rule);
+        }
+
+        $query = sprintf('INSERT INTO %s (rule_id, rule_owner, rule_name, rule_action, rule_value, rule_flags, rule_conditions, rule_combine, rule_stop, rule_active, rule_order) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)',
+                         $this->_params['table_rules']);
+        $id = $this->_write_db->nextId($this->_params['table_rules']);
+        if (is_a($id, 'PEAR_Error')) {
+            return $id;
+        }
+        $order = key(array_reverse($this->_filters, true)) + 1;
+        $values = array_merge(array($id, Ingo::getUser()),
+                              $this->_ruleToBackend($rule),
+                              array($order));
+        Horde::logMessage('Ingo_Storage_filters_sql::addRule(): ' . $query, __FILE__, __LINE__, PEAR_LOG_DEBUG);
+        $result = $this->_write_db->query($query, $values);
+        if (is_a($result, 'PEAR_Error')) {
+            Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR);
+            return $result;
+        }
+
+        $rule['id'] = $id;
+        $this->_filters[$order] = $rule;
+    }
+
+    /**
+     * Updates an existing rule with a rule hash.
+     *
+     * @param array $rule  A rule hash
+     * @param integer $id  A rule number
+     */
+    public function updateRule($rule, $id)
+    {
+        $query = sprintf('UPDATE %s SET rule_name = ?, rule_action = ?, rule_value = ?, rule_flags = ?, rule_conditions = ?, rule_combine = ?, rule_stop = ?, rule_active = ?, rule_order = ? WHERE rule_id = ? AND rule_owner = ?',
+                         $this->_params['table_rules']);
+        $values = array_merge($this->_ruleToBackend($rule),
+                              array($id, $rule['id'], Ingo::getUser()));
+        Horde::logMessage('Ingo_Storage_filters_sql::updateRule(): ' . $query, __FILE__, __LINE__, PEAR_LOG_DEBUG);
+        $result = $this->_write_db->query($query, $values);
+        if (is_a($result, 'PEAR_Error')) {
+            Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR);
+            return $result;
+        }
+
+        $this->_filters[$id] = $rule;
+    }
+
+    /**
+     * Deletes a rule from the filters list.
+     *
+     * @param integer $id  Number of the rule to delete.
+     *
+     * @return boolean  True if the rule has been found and deleted.
+     */
+    public function deleteRule($id)
+    {
+        if (!isset($this->_filters[$id])) {
+            return false;
+        }
+
+        $query = sprintf('DELETE FROM %s WHERE rule_id = ? AND rule_owner = ?',
+                         $this->_params['table_rules']);
+        $values = array($this->_filters[$id]['id'], Ingo::getUser());
+        Horde::logMessage('Ingo_Storage_filters_sql::deleteRule(): ' . $query, __FILE__, __LINE__, PEAR_LOG_DEBUG);
+        $result = $this->_write_db->query($query, $values);
+        if (is_a($result, 'PEAR_Error')) {
+            Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR);
+            return $result;
+        }
+        unset($this->_filters[$id]);
+
+        $query = sprintf('UPDATE %s SET rule_order = rule_order - 1 WHERE rule_owner = ? AND rule_order > ?',
+                         $this->_params['table_rules']);
+        $values = array(Ingo::getUser(), $id);
+        Horde::logMessage('Ingo_Storage_filters_sql::deleteRule(): ' . $query,
+                          __FILE__, __LINE__, PEAR_LOG_DEBUG);
+        $result = $this->_write_db->query($query, $values);
+        if (is_a($result, 'PEAR_Error')) {
+            Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR);
+            return $result;
+        }
+
+        return true;
+    }
+
+    /**
+     * Creates a copy of an existing rule.
+     *
+     * The created copy is added to the filters list right after the original
+     * rule.
+     *
+     * @param integer $id  Number of the rule to copy.
+     *
+     * @return boolean  True if the rule has been found and copied.
+     */
+    public function copyRule($id)
+    {
+        if (isset($this->_filters[$id])) {
+            $newrule = $this->_filters[$id];
+            $newrule['name'] = sprintf(_("Copy of %s"), $this->_filters[$id]['name']);
+            $this->addRule($newrule, false);
+            $this->ruleUp(count($this->_filters) - 1, count($this->_filters) - $id - 2);
+            return true;
+        }
+
+        return false;
+    }
+
+    /**
+     * Moves a rule up in the filters list.
+     *
+     * @param integer $id     Number of the rule to move.
+     * @param integer $steps  Number of positions to move the rule up.
+     */
+    public function ruleUp($id, $steps = 1)
+    {
+        return $this->_ruleMove($id, -$steps);
+    }
+
+    /**
+     * Moves a rule down in the filters list.
+     *
+     * @param integer $id     Number of the rule to move.
+     * @param integer $steps  Number of positions to move the rule down.
+     */
+    public function ruleDown($id, $steps = 1)
+    {
+        return $this->_ruleMove($id, $steps);
+    }
+
+    /**
+     * Moves a rule in the filters list.
+     *
+     * @param integer $id     Number of the rule to move.
+     * @param integer $steps  Number of positions and direction to move the
+     *                        rule.
+     */
+    protected function _ruleMove($id, $steps)
+    {
+        $query = sprintf('UPDATE %s SET rule_order = rule_order %s 1 WHERE rule_owner = ? AND rule_order %s ? AND rule_order %s ?',
+                         $this->_params['table_rules'],
+                         $steps > 0 ? '-' : '+',
+                         $steps > 0 ? '>' : '>=',
+                         $steps > 0 ? '<=' : '<');
+        $values = array(Ingo::getUser());
+        if ($steps < 0) {
+            $values[] = (int)($id + $steps);
+            $values[] = (int)$id;
+        } else {
+            $values[] = (int)$id;
+            $values[] = (int)($id + $steps);
+        }
+        Horde::logMessage('Ingo_Storage_filters_sql::ruleUp(): ' . $query,
+                          __FILE__, __LINE__, PEAR_LOG_DEBUG);
+        $result = $this->_write_db->query($query, $values);
+        if (is_a($result, 'PEAR_Error')) {
+            Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR);
+            return $result;
+        }
+        $query = sprintf('UPDATE %s SET rule_order = ? WHERE rule_owner = ? AND rule_id = ?',
+                         $this->_params['table_rules']);
+        $values = array((int)($id + $steps),
+                        Ingo::getUser(),
+                        $this->_filters[$id]['id']);
+        Horde::logMessage('Ingo_Storage_filters_sql::ruleUp(): ' . $query,
+                          __FILE__, __LINE__, PEAR_LOG_DEBUG);
+        $result = $this->_write_db->query($query, $values);
+        if (is_a($result, 'PEAR_Error')) {
+            Horde::logMessage($result, __FILE__, __LINE__, PEAR_LOG_ERR);
+            return $result;
+        }
+
+        $this->init();
+    }
+
+    /**
+     * Disables a rule.
+     *
+     * @param integer $id  Number of the rule to disable.
+     */
+    public function ruleDisable($id)
+    {
+        $rule = $this->_filters[$id];
+        $rule['disable'] = true;
+        $this->updateRule($rule, $id);
+    }
+
+    /**
+     * Enables a rule.
+     *
+     * @param integer $id  Number of the rule to enable.
+     */
+    public function ruleEnable($id)
+    {
+        $rule = $this->_filters[$id];
+        $rule['disable'] = false;
+        $this->updateRule($rule, $id);
+    }
+
+}
diff --git a/ingo/lib/Template.php b/ingo/lib/Template.php
new file mode 100644 (file)
index 0000000..71effba
--- /dev/null
@@ -0,0 +1,511 @@
+<?php
+/**
+ * Horde Template system. Adapted from bTemplate by Brian Lozier
+ * <brian@massassi.net>.
+ *
+ * Horde_Template provides a basic template engine with tags, loops,
+ * and if conditions. However, it is also a simple interface with
+ * several essential functions: set(), fetch(), and
+ * parse(). Subclasses or decorators can implement (or delegate) these
+ * three methods, plus the options api, and easily implement other
+ * template engines (PHP code, XSLT, etc.) without requiring usage
+ * changes.
+ *
+ * Compilation code adapted from code written by Bruno Pedro <bpedro@ptm.pt>.
+ *
+ * Copyright 2002-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file COPYING for license information (LGPL). If you
+ * did not receive this file, see http://www.fsf.org/copyleft/lgpl.html.
+ *
+ * @author  Chuck Hagenbuch <chuck@horde.org>
+ * @author  Michael Slusarz <slusarz@horde.org>
+ * @package Horde_Template
+ */
+
+/** The identifier to use for memory-only templates. */
+define('INGO_TEMPLATE_STRING', '**string');
+
+class Ingo_Template {
+
+    /**
+     * The Horde_Cache object to use.
+     *
+     * @var Horde_Cache
+     */
+    var $_cache;
+
+    /**
+     * Option values.
+     *
+     * @var array
+     */
+    var $_options = array();
+
+    /**
+     * Directory that templates should be read from.
+     *
+     * @var string
+     */
+    var $_basepath = '';
+
+    /**
+     * Tag (scalar) values.
+     *
+     * @var array
+     */
+    var $_scalars = array();
+
+    /**
+     * Loop tag values.
+     *
+     * @var array
+     */
+    var $_arrays = array();
+
+    /**
+     * Path to template source.
+     *
+     * @var string
+     */
+    var $_templateFile = null;
+
+    /**
+     * Template source.
+     *
+     * @var string
+     */
+    var $_template = null;
+
+    /**
+     * Foreach variable mappings.
+     *
+     * @var array
+     */
+    var $_foreachMap = array();
+
+    /**
+     * Foreach variable incrementor.
+     *
+     * @var integer
+     */
+    var $_foreachVar = 0;
+
+    /**
+     * preg_match() cache.
+     *
+     * @var array
+     */
+    var $_pregcache = array();
+
+    /**
+     * Constructor.
+     *
+     * @param string $basepath  The directory where templates are read from.
+     */
+    function Ingo_Template($basepath = null)
+    {
+        if (!is_null($basepath)) {
+            $this->_basepath = $basepath;
+        }
+
+        if (!empty($GLOBALS['conf']['cache']['driver'])) {
+            require_once 'Horde/Cache.php';
+            $this->_cache = &Horde_Cache::singleton($GLOBALS['conf']['cache']['driver'], Horde::getDriverConfig('cache', $GLOBALS['conf']['cache']['driver']));
+        }
+
+        // DEBUGGING
+        $this->setOption('forcecompile', true);
+    }
+
+    /**
+     * Sets an option.
+     * Currently available options are:
+     * <pre>
+     * 'debug' - Output debugging information to screen
+     * 'forcecompile' - Force a compilation on every page load
+     * 'gettext' - Activate gettext detection
+     * <pre>
+     *
+     * @param string $option  The option name.
+     * @param mixed $val      The option's value.
+     */
+    function setOption($option, $val)
+    {
+        $this->_options[$option] = $val;
+    }
+
+    /**
+     * Set the template contents to a string.
+     *
+     * @param string $template  The template text.
+     */
+    function setTemplate($template)
+    {
+        $this->_template = $template;
+        $this->_parse();
+        $this->_templateFile = INGO_TEMPLATE_STRING;
+    }
+
+    /**
+     * Returns an option's value.
+     *
+     * @param string $option  The option name.
+     *
+     * @return mixed  The option's value.
+     */
+    function getOption($option)
+    {
+        return isset($this->_options[$option]) ? $this->_options[$option] : null;
+    }
+
+    /**
+     * Sets a tag, loop, or if variable.
+     *
+     * @param string|array $tag   Either the tag name or a hash with tag names
+     *                            as keys and tag values as values.
+     * @param mixed        $var   The value to replace the tag with.
+     */
+    function set($tag, $var)
+    {
+        if (is_array($tag)) {
+            foreach ($tag as $tTag => $tVar) {
+                $this->set($tTag, $tVar);
+            }
+        } elseif (is_array($var) || is_object($var)) {
+            $this->_arrays[$tag] = $var;
+        } else {
+            $this->_scalars[$tag] = $var;
+        }
+    }
+
+    /**
+     * Returns the value of a tag or loop.
+     *
+     * @param string $tag  The tag name.
+     *
+     * @return mixed  The tag value or null if the tag hasn't been set yet.
+     */
+    function get($tag)
+    {
+        if (isset($this->_arrays[$tag])) {
+            return $this->_arrays[$tag];
+        }
+        if (isset($this->_scalars[$tag])) {
+            return $this->_scalars[$tag];
+        }
+        return null;
+    }
+
+    /**
+     * Fetches a template from the specified file and return the parsed
+     * contents.
+     *
+     * @param string $filename  The file to fetch the template from.
+     *
+     * @return string  The parsed template.
+     */
+    function fetch($filename = null)
+    {
+        $file = $this->_basepath . $filename;
+        $force = $this->getOption('forcecompile');
+
+        if (!is_null($filename) && ($file != $this->_templateFile)) {
+            $this->_template = $this->_templateFile = null;
+        }
+
+        /* First, check for a cached compiled version. */
+        if (!$force && is_null($this->_template) && isset($this->_cache)) {
+            $cacheid = 'horde_template|' . filemtime($file) . '|' . $file;
+            $this->_template = $this->_cache->get($cacheid, 0);
+            if ($this->_template === false) {
+                $this->_template = null;
+            }
+        }
+
+        /* Parse and compile the template. */
+        if ($force || is_null($this->_template)) {
+            $this->_template = str_replace("\n", " \n", file_get_contents($file));
+            $this->_parse();
+            if (isset($cacheid) &&
+                !$this->_cache->set($cacheid, $this->_template)) {
+                Horde::logMessage(sprintf(_("Could not save the compiled template file '%s'."), $file), __FILE__, __LINE__, PEAR_LOG_ERR);
+            }
+        }
+
+        $this->_templateFile = $file;
+
+        /* Template debugging. */
+        if ($this->getOption('debug')) {
+            echo '<pre>' . htmlspecialchars($this->_template) . '</pre>';
+        }
+
+        return $this->parse();
+    }
+
+    /**
+     * Parses all variables/tags in the template.
+     *
+     * @param string $contents  The unparsed template.
+     *
+     * @return string  The parsed template.
+     */
+    function parse($contents = null)
+    {
+        if (!is_null($contents)) {
+            $this->setTemplate(str_replace("\n", " \n", $contents));
+        }
+
+        /* Evaluate the compiled template and return the output. */
+        ob_start();
+        eval('?>' . $this->_template);
+        return str_replace(" \n", "\n", ob_get_clean());
+    }
+
+    /**
+     * Parses all variables/tags in the template.
+     */
+    function _parse()
+    {
+        // Escape XML instructions.
+        $this->_template = preg_replace('/\?>|<\?/',
+                                        '<?php echo \'$0\' ?>',
+                                        $this->_template);
+
+        // Parse gettext tags, if the option is enabled.
+        if ($this->getOption('gettext')) {
+            $this->_parseGettext();
+        }
+
+        // Process ifs.
+        $this->_parseIf();
+
+        // Process loops and arrays.
+        $this->_parseLoop();
+
+        // Process base scalar tags.  Needs to be after _parseLoop() as we
+        // rely on _foreachMap().
+        $this->_parseTags();
+
+        // Finally, process any associative array scalar tags.
+        $this->_parseAssociativeTags();
+    }
+
+    /**
+     * Parses gettext tags.
+     *
+     * @access private
+     */
+    function _parseGettext()
+    {
+        if (preg_match_all("/<gettext>(.+?)<\/gettext>/s", $this->_template, $matches, PREG_SET_ORDER)) {
+            $replace = array();
+            foreach ($matches as $val) {
+                $replace[$val[0]] = '<?php echo _(\'' . str_replace("'", "\\'", $val[1]) . '\'); ?>';
+            }
+            $this->_doReplace($replace);
+        }
+    }
+
+    /**
+     * Parses 'if' statements.
+     *
+     * @access private
+     *
+     * @param string $key  The key prefix to parse.
+     */
+    function _parseIf($key = null)
+    {
+        $replace = array();
+
+        foreach ($this->_doSearch('if', $key) as $val) {
+            $replace[$val[0]] = '<?php if (!empty(' . $this->_generatePHPVar('scalars', $val[1]) . ') || !empty(' . $this->_generatePHPVar('arrays', $val[1]) . ')): ?>';
+            $replace[$val[2]] = '<?php endif; ?>';
+
+            // Check for else statement.
+            foreach ($this->_doSearch('else', $key) as $val2) {
+                $replace[$val2[0]] = '<?php else: ?>';
+                $replace[$val2[2]] = '';
+            }
+        }
+
+        $this->_doReplace($replace);
+    }
+
+    /**
+     * Parses the given array for any loops or other uses of the array.
+     *
+     * @access private
+     *
+     * @param string $key  The key prefix to parse.
+     */
+    function _parseLoop($key = null)
+    {
+        $replace = array();
+
+        foreach ($this->_doSearch('loop', $key) as $val) {
+            $divider = null;
+
+            // See if we have a divider.
+            if (preg_match("/<divider:" . $val[1] . ">(.*)<\/divider:" . $val[1] . ">/sU", $this->_template, $m)) {
+                $divider = $m[1];
+                $replace[$m[0]] = '';
+            }
+
+            if (!isset($this->_foreachMap[$val[1]])) {
+                $this->_foreachMap[$val[1]] = ++$this->_foreachVar;
+            }
+            $varId = $this->_foreachMap[$val[1]];
+            $var = $this->_generatePHPVar('arrays', $val[1]);
+
+            $replace[$val[0]] = '<?php ' .
+                (($divider) ? '$i' . $varId . ' = count(' . $var . '); ' : '') .
+                'foreach (' . $this->_generatePHPVar('arrays', $val[1]) . ' as $k' . $varId . ' => $v' . $varId . '): ?>';
+            $replace[$val[2]] = '<?php ' .
+                (($divider) ? 'if (--$i' . $varId . ' != 0) { echo \'' . $divider . '\'; }; ' : '') .
+                'endforeach; ?>';
+
+            // Parse ifs.
+            $this->_parseIf($val[1]);
+
+            // Parse interior loops.
+            $this->_parseLoop($val[1]);
+
+            // Replace scalars.
+            $this->_parseTags($val[1]);
+        }
+
+        $this->_doReplace($replace);
+    }
+
+    /**
+     * Replaces 'tag' tags with their PHP equivalents.
+     *
+     * @access private
+     *
+     * @param string $key  The key prefix to parse.
+     */
+    function _parseTags($key = null)
+    {
+        $replace = array();
+
+        foreach ($this->_doSearch('tag', $key, true) as $val) {
+            $replace_text = '<?php ';
+            if (isset($this->_foreachMap[$val[1]])) {
+                $var = $this->_foreachMap[$val[1]];
+                $replace_text .= 'if (isset($v' . $var . ')) { echo is_array($v' . $var . ') ? $k' . $var . ' : $v' . $var . '; } else';
+            }
+            $var = $this->_generatePHPVar('scalars', $val[1]);
+            $replace[$val[0]] = $replace_text . 'if (isset(' . $var . ')) { echo ' . $var . '; } ?>';
+        }
+
+        $this->_doReplace($replace);
+    }
+
+    /**
+     * Parse associative tags (i.e. <tag:foo.bar />).
+     *
+     * @access private
+     */
+    function _parseAssociativeTags()
+    {
+        $replace = array();
+
+        foreach ($this->_pregcache['tag'] as $key => $val) {
+            $parts = explode('.', $val[1]);
+            $var = '$this->_arrays[\'' . $parts[0] . '\'][\'' . $parts[1] . '\']';
+            $replace[$val[0]] = '<?php if (isset(' . $var . ')) { echo ' . $var . '; } ?>';
+            unset($this->_pregcache['tag'][$key]);
+        }
+
+        $this->_doReplace($replace);
+    }
+
+    /**
+     * Output the correct PHP variable string for use in template space.
+     *
+     * @access private
+     */
+    function _generatePHPVar($tag, $key)
+    {
+        $out = '';
+
+        $a = explode('.', $key);
+        $a_count = count($a);
+
+        if ($a_count == 1) {
+            switch ($tag) {
+            case 'arrays':
+                $out = '$this->_arrays';
+                break;
+
+            case 'scalars':
+                $out = '$this->_scalars';
+                break;
+            }
+        } else {
+            $out = '$v' . $this->_foreachMap[implode('.', array_slice($a, 0, -1))];
+        }
+
+        return $out . '[\'' . end($a) . '\']';
+    }
+
+    /**
+     * TODO
+     *
+     * @access private
+     */
+    function _doSearch($tag, $key, $noclose = false)
+    {
+        $out = array();
+        $level = (is_null($key)) ? 0 : substr_count($key, '.') + 1;
+
+        if (!isset($this->_pregcache[$key])) {
+            $regex = ($noclose) ?
+                "/<" . $tag . ":(.+?)\s\/>/" :
+                "/<" . $tag . ":([^>]+)>/";
+            preg_match_all($regex, $this->_template, $this->_pregcache[$tag], PREG_SET_ORDER);
+        }
+
+        foreach ($this->_pregcache[$tag] as $pkey => $val) {
+            $val_level = substr_count($val[1], '.');
+            $add = false;
+            if (is_null($key)) {
+                $add = !$val_level;
+            } else {
+                $add = (($val_level == $level) &&
+                        (strpos($val[1], $key . '.') === 0));
+            }
+            if ($add) {
+                if (!$noclose) {
+                    $val[2] = '</' . $tag . ':' . $val[1] . '>';
+                }
+                $out[] = $val;
+                unset($this->_pregcache[$tag][$pkey]);
+            }
+        }
+
+        return $out;
+    }
+
+    /**
+     * TODO
+     *
+     * @access private
+     */
+    function _doReplace($replace)
+    {
+        if (empty($replace)) {
+            return;
+        }
+
+        $search = array();
+
+        foreach (array_keys($replace) as $val) {
+            $search[] = '/' . preg_quote($val, '/') . '/';
+        }
+
+        $this->_template = preg_replace($search, array_values($replace), $this->_template);
+    }
+
+}
diff --git a/ingo/lib/UI/VarRenderer/ingo.php b/ingo/lib/UI/VarRenderer/ingo.php
new file mode 100644 (file)
index 0000000..f4d77cc
--- /dev/null
@@ -0,0 +1,20 @@
+<?php
+/**
+ * Extension of Horde's variable renderer that support Ingo's folders variable
+ * type.
+ *
+ * Copyright 2006-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Jan Schneider <jan@horde.org>
+ * @package Ingo
+ */
+class Horde_UI_VarRenderer_ingo extends Horde_UI_VarRenderer_html
+{
+    function _renderVarInput_ingo_folders(&$form, &$var, &$vars)
+    {
+        return Ingo::flistSelect($var->type->getFolder(), 'horde_form', 'folder');
+    }
+}
diff --git a/ingo/lib/api.php b/ingo/lib/api.php
new file mode 100644 (file)
index 0000000..7f0fe71
--- /dev/null
@@ -0,0 +1,288 @@
+<?php
+/**
+ * Ingo external API interface.
+ *
+ * This file defines Ingo's external API interface. Other applications
+ * can interact with Ingo through this API.
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ */
+
+$_services['perms'] = array(
+    'args' => array(),
+    'type' => '{urn:horde}stringArray');
+
+$_services['blacklistFrom'] = array(
+    'args' => array('addresses' => '{urn:horde}stringArray'),
+    'type' => 'boolean',
+);
+
+$_services['showBlacklist'] = array(
+    'link' => '%application%/blacklist.php',
+);
+
+$_services['whitelistFrom'] = array(
+    'args' => array('addresses' => '{urn:horde}stringArray'),
+    'type' => 'boolean',
+);
+
+$_services['showWhitelist'] = array(
+    'link' => '%application%/whitelist.php',
+);
+
+$_services['canApplyFilters'] = array(
+    'args' => array(),
+    'type' => 'boolean',
+);
+
+$_services['applyFilters'] = array(
+    'args' => array('params' => '{urn:horde}stringArray'),
+    'type' => 'boolean',
+);
+
+$_services['showFilters'] = array(
+    'link' => '%application%/filters.php',
+);
+
+$_services['showVacation'] = array(
+    'link' => '%application%/vacation.php',
+);
+
+$_services['setVacation'] = array(
+    'args' => array('info' => '{urn:horde}stringArray'),
+    'type' => 'boolean',
+);
+
+$_services['disableVacation'] = array(
+    'args' => array(),
+    'type' => 'boolean',
+);
+
+/**
+ * Returns a list of available permissions.
+ *
+ * @return array  An array describing all available permissions.
+ */
+function _ingo_perms()
+{
+    $perms = array();
+    $perms['tree']['ingo']['allow_rules'] = false;
+    $perms['title']['ingo:allow_rules'] = _("Allow Rules");
+    $perms['type']['ingo:allow_rules'] = 'boolean';
+    $perms['tree']['ingo']['max_rules'] = false;
+    $perms['title']['ingo:max_rules'] = _("Maximum Number of Rules");
+    $perms['type']['ingo:max_rules'] = 'int';
+
+    return $perms;
+}
+
+/**
+ * Add addresses to the blacklist
+ *
+ * @param string $addresses    The addresses to add
+ */
+function _ingo_blacklistFrom($addresses)
+{
+    require_once dirname(__FILE__) . '/../lib/base.php';
+    if (!empty($GLOBALS['ingo_shares'])) {
+        $_SESSION['ingo']['current_share'] = $signature;
+    }
+
+    global $ingo_storage;
+
+    /* Check for '@' entries in $addresses - this would call all mail to
+     * be blacklisted which is most likely not what is desired. */
+    $addresses = array_unique($addresses);
+    $key = array_search('@', $addresses);
+    if ($key !== false) {
+        unset($addresses[$key]);
+    }
+
+    if (!empty($addresses)) {
+        $blacklist = &$ingo_storage->retrieve(Ingo_Storage::ACTION_BLACKLIST);
+        $ret = $blacklist->setBlacklist(array_merge($blacklist->getBlacklist(), $addresses));
+        if (is_a($ret, 'PEAR_Error')) {
+            $GLOBALS['notification']->push($ret, $ret->getCode());
+        } else {
+            $ingo_storage->store($blacklist);
+            Ingo::updateScript();
+            foreach ($addresses as $from) {
+                $GLOBALS['notification']->push(sprintf(_("The address \"%s\" has been added to your blacklist."), $from));
+            }
+        }
+    }
+}
+
+/**
+ * Add addresses to the white list
+ *
+ * @param string $addresses    The addresses to add
+ */
+function _ingo_whitelistFrom($addresses)
+{
+    require_once dirname(__FILE__) . '/../lib/base.php';
+    if (!empty($GLOBALS['ingo_shares'])) {
+        $_SESSION['ingo']['current_share'] = $signature;
+    }
+
+    global $ingo_storage;
+
+    $whitelist = &$ingo_storage->retrieve(Ingo_Storage::ACTION_WHITELIST);
+    $ret = $whitelist->setWhitelist(array_merge($whitelist->getWhitelist(), $addresses));
+    if (is_a($ret, 'PEAR_Error')) {
+        $GLOBALS['notification']->push($ret, $ret->getCode());
+    } else {
+        $ingo_storage->store($whitelist);
+        Ingo::updateScript();
+        foreach ($addresses as $from) {
+            $GLOBALS['notification']->push(sprintf(_("The address \"%s\" has been added to your whitelist."), $from));
+        }
+    }
+}
+
+/**
+ * Can this driver perform on-demand filtering?
+ *
+ * @return boolean  True if perform() is available, false if not.
+ */
+function _ingo_canApplyFilters()
+{
+    require_once dirname(__FILE__) . '/../lib/base.php';
+
+    $ingo_script = Ingo::loadIngoScript();
+    if ($ingo_script) {
+        return $ingo_script->performAvailable();
+    } else {
+        return false;
+    }
+}
+
+/**
+ * Perform the filtering specified in the rules.
+ *
+ * @param array $params  The parameter array.
+ *
+ * @return boolean  True if filtering was performed, false if not.
+ */
+function _ingo_applyFilters($params = array())
+{
+    require_once dirname(__FILE__) . '/../lib/base.php';
+    if (!empty($GLOBALS['ingo_shares'])) {
+        $_SESSION['ingo']['current_share'] = $signature;
+    }
+
+    $ingo_script = Ingo::loadIngoScript();
+    if ($ingo_script) {
+        return $ingo_script->perform($params);
+    }
+}
+
+/**
+ * Set vacation
+ *
+ * @param array $info  Vacation details
+ *
+ * @return boolean  True on success.
+ */
+function _ingo_setVacation($info)
+{
+    require_once dirname(__FILE__) . '/../lib/base.php';
+    if (!empty($GLOBALS['ingo_shares'])) {
+        $_SESSION['ingo']['current_share'] = $signature;
+    }
+
+    global $ingo_storage;
+
+    /* Get vacation filter. */
+    $filters = &$ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS);
+    $vacation_rule_id = $filters->findRuleId(Ingo_Storage::ACTION_VACATION);
+
+    if (empty($info)) {
+        return true;
+    }
+
+    /* Set vacation object and rules. */
+    $vacation = &$ingo_storage->retrieve(Ingo_Storage::ACTION_VACATION);
+
+    /* Make sure we have at least one address. */
+    if (empty($info['addresses'])) {
+        require_once 'Horde/Identity.php';
+        $identity = &Identity::singleton('none');
+        $info['addresses'] = implode("\n", $identity->getAll('from_addr'));
+        /* Remove empty lines. */
+        $info['addresses'] = preg_replace('/\n+/', "\n", $info['addresses']);
+        if (empty($addresses)) {
+            $info['addresses'] = Auth::getAuth();
+        }
+    }
+
+    $vacation->setVacationAddresses($addresses);
+
+    if (isset($info['days'])) {
+        $vacation->setVacationDays($info['days']);
+    }
+    if (isset($info['excludes'])) {
+        $vacation->setVacationExcludes($info['excludes']);
+    }
+    if (isset($info['ignorelist'])) {
+        $vacation->setVacationIgnorelist(($info['ignorelist'] == 'on'));
+    }
+    if (isset($info['reason'])) {
+        $vacation->setVacationReason($info['reason']);
+    }
+    if (isset($info['subject'])) {
+        $vacation->setVacationSubject($info['subject']);
+    }
+    if (isset($info['start'])) {
+        $vacation->setVacationStart($info['start']);
+    }
+    if (isset($info['end'])) {
+        $vacation->setVacationEnd($info['end']);
+    }
+
+    $filters->ruleEnable($vacation_rule_id);
+    $result = $ingo_storage->store($filters);
+    if (!is_a($result, 'PEAR_Error')) {
+        if ($GLOBALS['prefs']->getValue('auto_update')) {
+            Ingo::updateScript();
+        }
+
+        /* Update the timestamp for the rules. */
+        $_SESSION['ingo']['change'] = time();
+    }
+
+    return $result;
+}
+
+/**
+ * Disable vacation
+ *
+ * @return boolean  True on success.
+ */
+function _ingo_disableVacation()
+{
+    require_once dirname(__FILE__) . '/../lib/base.php';
+    if (!empty($GLOBALS['ingo_shares'])) {
+        $_SESSION['ingo']['current_share'] = $signature;
+    }
+
+    global $ingo_storage;
+
+    /* Get vacation filter. */
+    $filters = &$ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS);
+    $vacation_rule_id = $filters->findRuleId(Ingo_Storage::ACTION_VACATION);
+
+    $filters->ruleDisable($vacation_rule_id);
+    $result = $ingo_storage->store($filters);
+    if (!is_a($result, 'PEAR_Error')) {
+        if ($GLOBALS['prefs']->getValue('auto_update')) {
+            Ingo::updateScript();
+        }
+
+        /* Update the timestamp for the rules. */
+        $_SESSION['ingo']['change'] = time();
+    }
+
+    return $result;
+}
diff --git a/ingo/lib/base.php b/ingo/lib/base.php
new file mode 100644 (file)
index 0000000..7d1abd2
--- /dev/null
@@ -0,0 +1,104 @@
+<?php
+/**
+ * Ingo base inclusion file.
+ * This file brings in all of the dependencies that every Ingo
+ * script will need and sets up objects that all scripts use.
+ *
+ * Global variables defined:
+ *   $ingo_shared  - TODO
+ *   $ingo_storage - The Ingo_Storage:: object to use for storing rules.
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ */
+
+$ingo_dir = dirname(__FILE__);
+
+// Check for a prior definition of HORDE_BASE.
+if (!defined('HORDE_BASE')) {
+    /* Temporary fix - if horde does not live directly under the imp
+     * directory, the HORDE_BASE constant should be defined in
+     * imp/lib/base.local.php. */
+    if (file_exists($ingo_dir . '/base.local.php')) {
+        include $ingo_dir . '/base.local.php';
+    } else {
+        define('HORDE_BASE', $ingo_dir . '/../..');
+    }
+}
+
+// Find the base file path of Ingo.
+if (!defined('INGO_BASE')) {
+    define('INGO_BASE', $ingo_dir . '/..');
+}
+
+// Load the Horde Framework core, and set up inclusion paths.
+require_once HORDE_BASE . '/lib/core.php';
+Horde_Autoloader::addClassPath($ingo_dir);
+Horde_Autoloader::addClassPattern('/^Ingo_/', $ingo_dir);
+
+// Registry.
+$registry = &Registry::singleton();
+if (is_a(($pushed = $registry->pushApp('ingo', !defined('AUTH_HANDLER'))), 'PEAR_Error')) {
+    if ($pushed->getCode() == 'permission_denied') {
+        Horde::authenticationFailureRedirect();
+    }
+    Horde::fatal($pushed, __FILE__, __LINE__, false);
+}
+$conf = &$GLOBALS['conf'];
+
+if (!defined('INGO_TEMPLATES')) {
+    define('INGO_TEMPLATES', $registry->get('templates'));
+}
+
+// Notification system.
+$notification = &Notification::singleton();
+$notification->attach('status');
+
+// Redirect the user to the Horde login page if they haven't authenticated.
+if (!Auth::isAuthenticated() && !defined('AUTH_HANDLER')) {
+    Horde::authenticationFailureRedirect();
+}
+
+// Start compression.
+Horde::compressOutput();
+
+// Load the Ingo_Storage driver. It appears in the global variable
+// $ingo_storage.
+$GLOBALS['ingo_storage'] = Ingo_Storage::factory();
+
+// Create the ingo session (if needed).
+if (!isset($_SESSION['ingo']) || !is_array($_SESSION['ingo'])) {
+    Ingo_Session::createSession();
+}
+
+// Create shares if necessary.
+$driver = Ingo::getDriver();
+if ($driver->supportShares()) {
+    $GLOBALS['ingo_shares'] = &Horde_Share::singleton($registry->getApp());
+    $GLOBALS['all_rulesets'] = Ingo::listRulesets();
+
+    /* If personal share doesn't exist then create it. */
+    $signature = $_SESSION['ingo']['backend']['id'] . ':' . Auth::getAuth();
+    if (!$GLOBALS['ingo_shares']->exists($signature)) {
+        require_once 'Horde/Identity.php';
+        $identity = &Identity::singleton();
+        $name = $identity->getValue('fullname');
+        if (trim($name) == '') {
+            $name = Auth::removeHook(Auth::getAuth());
+        }
+        $share = &$GLOBALS['ingo_shares']->newShare($signature);
+        $share->set('name', $name);
+        $GLOBALS['ingo_shares']->addShare($share);
+        $GLOBALS['all_rulesets'][$signature] = &$share;
+    }
+
+    /* Select current share. */
+    $_SESSION['ingo']['current_share'] = Util::getFormData('ruleset', @$_SESSION['ingo']['current_share']);
+    if (empty($_SESSION['ingo']['current_share']) ||
+        empty($GLOBALS['all_rulesets'][$_SESSION['ingo']['current_share']]) ||
+        !$GLOBALS['all_rulesets'][$_SESSION['ingo']['current_share']]->hasPermission(Auth::getAuth(), PERMS_READ)) {
+        $_SESSION['ingo']['current_share'] = $signature;
+    }
+} else {
+    $GLOBALS['ingo_shares'] = null;
+}
diff --git a/ingo/lib/tests/MaildropTest.php b/ingo/lib/tests/MaildropTest.php
new file mode 100644 (file)
index 0000000..3e4f5a0
--- /dev/null
@@ -0,0 +1,121 @@
+<?php
+/**
+ * Test cases for Ingo_Script_sieve:: class
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author     Jason M. Felice <jason.m.felice@gmail.com>
+ * @package    Ingo
+ * @subpackage UnitTests
+ */
+
+require_once dirname(__FILE__) . '/TestBase.php';
+
+class Ingo_MaildropTest extends Ingo_TestBase {
+
+    function store($ob)
+    {
+        return $GLOBALS['ingo_storage']->store($ob);
+    }
+
+    function setUp()
+    {
+        $GLOBALS['ingo_storage'] = &Ingo_Storage::factory('mock',
+                                                 array('maxblacklist' => 3,
+                                                       'maxwhitelist' => 3));
+        $GLOBALS['ingo_script'] = &Ingo_Script::factory('maildrop', array('path_style' => 'mbox'));
+    }
+
+    function testForwardKeep()
+    {
+        $forward = &new Ingo_Storage_forward();
+        $forward->setForwardAddresses('joefabetes@example.com');
+        $forward->setForwardKeep(true);
+
+        $this->store($forward);
+        $this->assertScript('if( \
+/^From: .*/:h \
+)
+exception {
+cc "! joefabetes@example.com"
+to "${DEFAULT}"
+}');
+    }
+
+    function testForwardNoKeep()
+    {
+        $forward = &new Ingo_Storage_forward();
+        $forward->setForwardAddresses('joefabetes@example.com');
+        $forward->setForwardKeep(false);
+
+        $this->store($forward);
+        $this->assertScript('if( \
+/^From: .*/:h \
+)
+exception {
+cc "! joefabetes@example.com"
+exit
+}');
+    }
+
+    function testBlacklistWithFolder()
+    {
+        $bl = &new Ingo_Storage_blacklist(3);
+        $bl->setBlacklist(array('spammer@example.com'));
+        $bl->setBlacklistFolder('Junk');
+
+        $this->store($bl);
+        $this->assertScript('if( \
+/^From: .*spammer@example\.com/:h \
+)
+exception {
+to Junk
+}');
+    }
+
+    function testBlacklistMarker()
+    {
+        $bl = &new Ingo_Storage_blacklist(3);
+        $bl->setBlacklist(array('spammer@example.com'));
+        $bl->setBlacklistFolder(Ingo::BLACKLIST_MARKER);
+
+        $this->store($bl);
+        $this->assertScript('if( \
+/^From: .*spammer@example\.com/:h \
+)
+exception {
+to ++DELETE++
+}');
+    }
+
+    function testBlacklistDiscard()
+    {
+        $bl = &new Ingo_Storage_blacklist(3);
+        $bl->setBlacklist(array('spammer@example.com'));
+        $bl->setBlacklistFolder(null);
+
+        $this->store($bl);
+        $this->assertScript('if( \
+/^From: .*spammer@example\.com/:h \
+)
+exception {
+to "/dev/null"
+}');
+    }
+
+    function testWhitelist()
+    {
+        $wl = &new Ingo_Storage_whitelist(3);
+        $wl->setWhitelist(array('spammer@example.com'));
+
+        $this->store($wl);
+        $this->assertScript('if( \
+/^From: .*spammer@example\.com/:h \
+)
+exception {
+to "${DEFAULT}"
+}');
+    }
+
+}
diff --git a/ingo/lib/tests/ProcmailTest.php b/ingo/lib/tests/ProcmailTest.php
new file mode 100644 (file)
index 0000000..2915b0f
--- /dev/null
@@ -0,0 +1,186 @@
+<?php
+/**
+ * Test cases for Ingo_Script_procmail:: class
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author     Jason M. Felice <jason.m.felice@gmail.com>
+ * @package    Ingo
+ * @subpackage UnitTests
+ */
+
+require_once dirname(__FILE__) . '/TestBase.php';
+
+class Ingo_ProcmailTest extends Ingo_TestBase {
+
+    function store($ob)
+    {
+        return $GLOBALS['ingo_storage']->store($ob);
+    }
+
+    function setUp()
+    {
+        $GLOBALS['conf']['spam'] = array('enabled' => true,
+                                         'char' => '*',
+                                         'header' => 'X-Spam-Level');
+        $GLOBALS['ingo_storage'] = &Ingo_Storage::factory('mock',
+                                                 array('maxblacklist' => 3,
+                                                       'maxwhitelist' => 3));
+        $GLOBALS['ingo_script'] = &Ingo_Script::factory('procmail',
+                                                        array('path_style' => 'mbox'));
+    }
+
+    function testForwardKeep()
+    {
+        $forward = &new Ingo_Storage_forward();
+        $forward->setForwardAddresses('joefabetes@example.com');
+        $forward->setForwardKeep(true);
+
+        $this->store($forward);
+        $this->assertScript(':0 c
+{
+:0
+*$ ! ^From *\/[^  ]+
+*$ ! ^Sender: *\/[^   ]+
+*$ ! ^From: *\/[^     ]+
+*$ ! ^Reply-to: *\/[^     ]+
+{
+OUTPUT = `formail -zxFrom:`
+}
+:0 E
+{
+OUTPUT = $MATCH
+}
+:0 c
+* !^FROM_MAILER
+* !^X-Loop: to-joefabetes@example.com
+| formail -A"X-Loop: to-joefabetes@example.com" | $SENDMAIL -oi -f $OUTPUT joefabetes@example.com
+:0 E
+$DEFAULT
+:0
+/dev/null
+}');
+    }
+
+    function testForwardNoKeep()
+    {
+        $forward = &new Ingo_Storage_forward();
+        $forward->setForwardAddresses('joefabetes@example.com');
+        $forward->setForwardKeep(false);
+
+        $this->store($forward);
+        $this->assertScript(':0
+{
+:0
+*$ ! ^From *\/[^  ]+
+*$ ! ^Sender: *\/[^   ]+
+*$ ! ^From: *\/[^     ]+
+*$ ! ^Reply-to: *\/[^     ]+
+{
+OUTPUT = `formail -zxFrom:`
+}
+:0 E
+{
+OUTPUT = $MATCH
+}
+:0 c
+* !^FROM_MAILER
+* !^X-Loop: to-joefabetes@example.com
+| formail -A"X-Loop: to-joefabetes@example.com" | $SENDMAIL -oi -f $OUTPUT joefabetes@example.com
+:0 E
+$DEFAULT
+:0
+/dev/null
+}');
+    }
+
+    function testBlacklistWithFolder()
+    {
+        $bl = &new Ingo_Storage_blacklist(3);
+        $bl->setBlacklist(array('spammer@example.com'));
+        $bl->setBlacklistFolder('Junk');
+
+        $this->store($bl);
+        $this->assertScript(':0
+* ^From:(.*\<)?spammer@example\.com
+Junk');
+    }
+
+    function testBlacklistMarker()
+    {
+        $bl = &new Ingo_Storage_blacklist(3);
+        $bl->setBlacklist(array('spammer@example.com'));
+        $bl->setBlacklistFolder(Ingo::BLACKLIST_MARKER);
+
+        $this->store($bl);
+        $this->assertScript(':0
+* ^From:(.*\<)?spammer@example\.com
+++DELETE++');
+    }
+
+    function testBlacklistDiscard()
+    {
+        $bl = &new Ingo_Storage_blacklist(3);
+        $bl->setBlacklist(array('spammer@example.com'));
+        $bl->setBlacklistFolder(null);
+
+        $this->store($bl);
+        $this->assertScript(':0
+* ^From:(.*\<)?spammer@example\.com
+/dev/null');
+    }
+
+    function testWhitelist()
+    {
+        $wl = &new Ingo_Storage_whitelist(3);
+        $wl->setWhitelist(array('spammer@example.com'));
+
+        $this->store($wl);
+        $this->assertScript(':0
+* ^From:(.*\<)?spammer@example\.com
+$DEFAULT');
+    }
+
+    function testVacationDisabled()
+    {
+        $vacation = &new Ingo_Storage_vacation();
+        $vacation->setVacationAddresses(array('from@example.com'));
+        $vacation->setVacationSubject('Subject');
+        $vacation->setVacationReason("Because I don't like working!");
+
+        $this->store($vacation);
+        $this->assertScript('');
+    }
+
+    function testVacationEnabled()
+    {
+        $vacation = &new Ingo_Storage_vacation();
+        $vacation->setVacationAddresses(array('from@example.com'));
+        $vacation->setVacationSubject('Subject');
+        $vacation->setVacationReason("Because I don't like working!");
+
+        $this->store($vacation);
+        $this->_enableRule(INGO_STORAGE_ACTION_VACATION);
+
+        $this->assertScript(':0
+{
+FILEDATE=`test -f \'.vacation.from@example.com\' && ls -lcn --time-style=+%s \'.vacation.from@example.com\' | awk \'{ print $6 + (604800) }\'`
+DATE=`date +%s`
+DUMMY=`test -f \'.vacation.from@example.com\' && test $FILEDATE -le $DATE && rm \'.vacation.from@example.com\'`
+:0 Whc: vacation.lock
+* $^To:(.*\<)?from@example.com
+* !^X-Loop: from@example.com
+* !^FROM_DAEMON
+| formail -rD 8192 .vacation.from@example.com
+:0 ehc
+| (formail -rI"Precedence: junk" \
+-a"From: <from@example.com>" \
+-A"X-Loop: from@example.com" \
+-i"Subject: Subject" ; \
+echo "Because I don\'t like working!" \
+) | $SENDMAIL -ffrom@example.com -oi -t
+}');
+    }
+
+}
diff --git a/ingo/lib/tests/ScriptTest.php b/ingo/lib/tests/ScriptTest.php
new file mode 100644 (file)
index 0000000..00f664e
--- /dev/null
@@ -0,0 +1,339 @@
+<?php
+/**
+ * Test cases for Ingo_Script:: and derived classes
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author     Jason M. Felice <jason.m.felice@gmail.com>
+ * @package    Ingo
+ * @subpackage UnitTests
+ */
+
+require_once dirname(__FILE__) . '/TestBase.php';
+
+class Ingo_ScriptTest extends Ingo_TestBase {
+
+    function test_blacklist_rule_without_folder_will_discard_matching_message()
+    {
+        $runner = ScriptTester::factory('all', $this);
+
+        $ob = new Ingo_Storage_blacklist();
+        $ob->setBlacklist(array('spammer@example.com'));
+        $ob->setBlacklistFolder('');
+        $runner->addRule($ob);
+
+        $runner->assertDeletesMessage('from_spammer');
+        $runner->assertKeepsMessage('not_from_spammer');
+    }
+
+    function test_whitelist_rule_will_prevent_deletion_of_blacklisted_message()
+    {
+        $runner = ScriptTester::factory('all', $this);
+
+        $bl = new Ingo_Storage_blacklist();
+        $bl->setBlacklist(array('spammer@example.com'));
+        $bl->setBlacklistFolder('');
+        $runner->addRule($bl);
+
+        $wl = new Ingo_Storage_whitelist();
+        $wl->setWhitelist(array('spammer@example.com'));
+        $runner->addRule($wl);
+
+        $runner->assertKeepsMessage('from_spammer');
+        $runner->assertKeepsMessage('not_from_spammer');
+    }
+
+    function test_blacklist_rule_with_folder_will_move_matching_messages()
+    {
+        $runner = ScriptTester::factory('all', $this);
+
+        $ob = new Ingo_Storage_blacklist();
+        $ob->setBlacklist(array('spammer@example.com'));
+        $ob->setBlacklistFolder('Junk');
+        $runner->addRule($ob);
+
+        $runner->assertMovesMessage('from_spammer', 'Junk');
+    }
+
+    function test_partial_whitelist_address_should_not_match()
+    {
+        $runner = ScriptTester::factory('all', $this);
+
+        $bl = new Ingo_Storage_blacklist();
+        $bl->setBlacklist(array('spammer@example.com'));
+        $bl->setBlacklistFolder('');
+        $runner->addRule($bl);
+
+        $wl = new Ingo_Storage_whitelist();
+        $wl->setWhitelist(array('ammer@example.com'));
+        $runner->addRule($wl);
+
+        $runner->assertDeletesMessage('from_spammer');
+    }
+
+    function test_partial_blacklist_address_should_not_match()
+    {
+        $runner = ScriptTester::factory('all', $this);
+
+        $bl = new Ingo_Storage_blacklist();
+        $bl->setBlacklist(array('ammer@example.com'));
+        $bl->setBlacklistFolder('');
+        $runner->addRule($bl);
+
+        $runner->assertKeepsMessage('from_spammer');
+    }
+
+}
+
+/**
+ * Abstract base class for strategies for testing different Script backends
+ */
+class ScriptTester {
+
+    var $test;
+    var $rules = array();
+
+    function ScriptTester($test)
+    {
+        $this->test = $test;
+    }
+
+    function addRule($rule)
+    {
+        $this->rules[] = $rule;
+    }
+
+    function assertDeletesMessage($fixture)
+    {
+        return PEAR::raiseError('Not implemented.');
+    }
+
+    function assertKeepsMessage($fixture)
+    {
+        return PEAR::raiseError('Not implemented.');
+    }
+
+    function assertMovesMessage($fixture, $to_folder)
+    {
+        return PEAR::raiseError('Not implemented.');
+    }
+
+    function factory($type, $test)
+    {
+        $class = 'ScriptTester_' . $type;
+        $ob = new $class($test);
+        return $ob;
+    }
+
+    function _setupStorage()
+    {
+        $_SESSION['ingo']['change'] = 0;
+        $GLOBALS['ingo_storage'] = Ingo_Storage::factory('mock', array());
+        foreach ($this->rules as $ob) {
+            $GLOBALS['ingo_storage']->store($ob);
+        }
+    }
+
+}
+
+/**
+ * Implementation of ScriptTester:: for testing 'imap' scripts
+ */
+class ScriptTester_imap extends ScriptTester {
+
+    var $imap;
+    var $api;
+
+    function _setup()
+    {
+        $this->_setupStorage();
+        $this->api = Ingo_Script_imap_api::factory('mock', array());
+
+        $result = $this->api->loadFixtures(dirname(__FILE__) . '/_data/');
+        $this->test->assertNotA($result, 'PEAR_Error');
+
+        $params = array('api' => $this->api);
+        $this->imap = Ingo_Script::factory('imap', $params);
+    }
+
+    function _run()
+    {
+        $params = array('api' => $this->api);
+        $this->imap->perform($params);
+    }
+
+    function assertDeletesMessage($fixture)
+    {
+        $this->_setup();
+        $this->test->assertTrue($this->api->hasMessage($fixture));
+        $this->_run();
+        $this->test->assertFalse($this->api->hasMessage($fixture));
+    }
+
+    function assertKeepsMessage($fixture)
+    {
+        $this->_setup();
+        $this->test->assertTrue($this->api->hasMessage($fixture));
+        $this->_run();
+        $this->test->assertTrue($this->api->hasMessage($fixture));
+    }
+
+    function assertMovesMessage($fixture, $to_folder)
+    {
+        $this->_setup();
+        $this->test->assertTrue($this->api->hasMessage($fixture));
+        $this->_run();
+        $this->test->assertFalse($this->api->hasMessage($fixture));
+        $this->test->assertTrue($this->api->hasMessage($fixture, $to_folder));
+    }
+
+}
+
+/**
+ * This script tester iterates through all enabled backends to verify that
+ * each one works properly.
+ */
+class ScriptTester_all extends ScriptTester {
+
+    var $backends = array('imap', 'sieve');
+
+    function _delegate($method, $params)
+    {
+        foreach ($this->backends as $backend) {
+            $runner = ScriptTester::factory($backend, $this->test);
+            foreach ($this->rules as $rule) {
+                $runner->addRule($rule);
+            }
+            call_user_func_array(array($runner, $method), $params);
+        }
+    }
+
+    function assertDeletesMessage($fixture)
+    {
+        $this->_delegate('assertDeletesMessage', array($fixture));
+    }
+
+    function assertKeepsMessage($fixture)
+    {
+        $this->_delegate('assertKeepsMessage', array($fixture));
+    }
+
+    function assertMovesMessage($fixture, $to_folder)
+    {
+        $this->_delegate('assertMovesMessage', array($fixture, $to_folder));
+    }
+
+}
+
+/**
+ * Test the sieve Script backend.  This uses the command-line `sieve' from
+ * the GNU mailutils package.
+ */
+class ScriptTester_sieve extends ScriptTester {
+
+    function assertDeletesMessage($fixture)
+    {
+        $this->_run();
+        $this->_assertOutput("DISCARD on msg uid " . $this->uids[$fixture]);
+    }
+
+    function assertKeepsMessage($fixture)
+    {
+        $this->_run();
+        $this->_assertOutput("KEEP on msg uid " . $this->uids[$fixture]);
+    }
+
+    function assertMovesMessage($fixture, $to_folder)
+    {
+        $this->_run();
+        $this->_assertOutput("FILEINTO on msg uid " . $this->uids[$fixture] .
+                             ": delivering into " . $to_folder);
+    }
+
+    function _assertOutput($want)
+    {
+        $answer = $this->test->assertWantedPattern('/' .
+                                                   preg_quote($want, '/') . '/',
+                                                   $this->output);
+        if (!$answer) {
+            echo "FAILED SIEVE SCRIPT:\n\n", $this->sieve_text, "\n\n";
+        }
+    }
+
+    var $mbox;
+    var $sieve;
+    var $script_text;
+    var $output;
+    var $uids;
+
+    function _run()
+    {
+        $this->_buildMailboxFile();
+        $this->_writeSieveScript();
+        $this->_runSieve();
+
+        @unlink($this->mbox);
+        @unlink($this->sieve);
+    }
+
+    function _buildMailboxFile()
+    {
+        $this->uids = array();
+        $this->mbox = tempnam('/tmp', 'mbox');
+        $mh = fopen($this->mbox, 'w');
+        $uid = 1;
+
+        $dh = opendir(dirname(__FILE__) . '/_data');
+        while (($dent = readdir($dh)) !== false) {
+            if ($dent == '.' || $dent == '..' || $dent == 'CVS') {
+                continue;
+            }
+            $filespec = dirname(__FILE__) . '/_data/' . $dent;
+            $fh = fopen($filespec, 'r');
+            $data = fread($fh, filesize($filespec));
+            fclose($fh);
+
+            fwrite($mh, $data);
+            if ($data{strlen($data)-1} != "\n") {
+                fwrite($mh, "\n");
+            }
+
+            $this->uids[$dent] = $uid++;
+        }
+        closedir($dh);
+
+        fclose($mh);
+    }
+
+    function _writeSieveScript()
+    {
+        $params = array();
+
+        $this->_setupStorage();
+        $script = Ingo_Script::factory('sieve', $params);
+
+        $this->sieve = tempnam('/tmp', 'sieve');
+        $fh = fopen($this->sieve, 'w');
+
+        $this->sieve_text = $script->generate();
+        fwrite($fh, $this->sieve_text);
+        fclose($fh);
+    }
+
+    function _runSieve()
+    {
+        $this->output = '';
+        $ph = popen("sieve -vv -n -f " . escapeshellarg($this->mbox) . " " .
+                    escapeshellarg($this->sieve), 'r');
+        while (!feof($ph)) {
+            $data = fread($ph, 512);
+            if (is_string($data)) {
+                $this->output .= $data;
+            }
+        }
+        pclose($ph);
+    }
+
+}
+
diff --git a/ingo/lib/tests/SieveTest.php b/ingo/lib/tests/SieveTest.php
new file mode 100644 (file)
index 0000000..3e27015
--- /dev/null
@@ -0,0 +1,137 @@
+<?php
+/**
+ * Test cases for Ingo_Script_sieve:: class
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author     Jason M. Felice <jason.m.felice@gmail.com>
+ * @package    Ingo
+ * @subpackage UnitTests
+ */
+
+require_once dirname(__FILE__) . '/TestBase.php';
+
+class Ingo_SieveTest extends Ingo_TestBase {
+
+    function store($ob)
+    {
+        return $GLOBALS['ingo_storage']->store($ob);
+    }
+
+    function setUp()
+    {
+        $GLOBALS['conf']['spam'] = array('enabled' => true,
+                                         'char' => '*',
+                                         'header' => 'X-Spam-Level');
+        $GLOBALS['ingo_storage'] = &Ingo_Storage::factory('mock',
+                                                 array('maxblacklist' => 3,
+                                                       'maxwhitelist' => 3));
+        $GLOBALS['ingo_script'] = &Ingo_Script::factory('sieve', array());
+    }
+
+    function testForwardKeep()
+    {
+        $forward = &new Ingo_Storage_forward();
+        $forward->setForwardAddresses('joefabetes@example.com');
+        $forward->setForwardKeep(true);
+
+        $this->store($forward);
+        $this->assertScript('if true {
+redirect "joefabetes@example.com";
+keep;
+}');
+    }
+
+    function testForwardNoKeep()
+    {
+        $forward = &new Ingo_Storage_forward();
+        $forward->setForwardAddresses('joefabetes@example.com');
+        $forward->setForwardKeep(false);
+
+        $this->store($forward);
+        $this->assertScript('if true {
+redirect "joefabetes@example.com";
+}');
+    }
+
+    function testBlacklistMarker()
+    {
+        $bl = &new Ingo_Storage_blacklist(3);
+        $bl->setBlacklist(array('spammer@example.com'));
+        $bl->setBlacklistFolder(Ingo::BLACKLIST_MARKER);
+
+        $this->store($bl);
+        $this->assertScript('require "imapflags";
+if address :all :comparator "i;ascii-casemap" :is ["From", "Sender", "Resent-From"] "spammer@example.com"  {
+addflag "\\\\Deleted";
+keep;
+removeflag "\\\\Deleted";
+stop;
+}');
+    }
+
+    function testWhitelist()
+    {
+        $wl = &new Ingo_Storage_whitelist(3);
+        $wl->setWhitelist(array('spammer@example.com'));
+
+        $this->store($wl);
+        $this->assertScript('if address :all :comparator "i;ascii-casemap" :is ["From", "Sender", "Resent-From"] "spammer@example.com"  {
+keep;
+stop;
+}');
+    }
+
+    function testVacationDisabled()
+    {
+        $vacation = &new Ingo_Storage_vacation();
+        $vacation->setVacationAddresses(array('from@example.com'));
+        $vacation->setVacationSubject('Subject');
+        $vacation->setVacationReason("Because I don't like working!");
+
+        $this->store($vacation);
+        $this->assertScript('');
+    }
+
+    function testVacationEnabled()
+    {
+        $vacation = &new Ingo_Storage_vacation();
+        $vacation->setVacationAddresses(array('from@example.com'));
+        $vacation->setVacationSubject('Subject');
+        $vacation->setVacationReason("Because I don't like working!");
+
+        $this->store($vacation);
+        $this->_enableRule(INGO_STORAGE_ACTION_VACATION);
+
+        $this->assertScript('require "vacation";
+if allof ( not exists ["list-help", "list-unsubscribe", "list-subscribe", "list-owner", "list-post", "list-archive", "list-id"], not header :comparator "i;ascii-casemap" :is "Precedence" "list,bulk" ) {
+vacation :days 7 :addresses "from@example.com" :subject "Subject" "Because I don\'t like working!";
+}');
+    }
+
+    function testSpamDisabled()
+    {
+        $spam = &new Ingo_Storage_spam();
+        $spam->setSpamLevel(7);
+        $spam->setSpamFolder("Junk");
+
+        $this->store($spam);
+        $this->assertScript('');
+    }
+
+    function testSpamEnabled()
+    {
+        $spam = &new Ingo_Storage_spam();
+        $spam->setSpamLevel(7);
+        $spam->setSpamFolder("Junk");
+
+        $this->store($spam);
+        $this->_enableRule(INGO_STORAGE_ACTION_SPAM);
+        $this->assertScript('require "fileinto";
+if header :comparator "i;ascii-casemap" :contains "X-Spam-Level" "*******"  {
+fileinto "Junk";
+}');
+    }
+
+}
diff --git a/ingo/lib/tests/TestBase.php b/ingo/lib/tests/TestBase.php
new file mode 100644 (file)
index 0000000..6cdad05
--- /dev/null
@@ -0,0 +1,51 @@
+<?php
+/**
+ * Common library for Ingo test cases
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author  Jason M. Felice <jason.m.felice@gmail.com>
+ * @package Ingo
+ * @subpackage UnitTests
+ */
+class Ingo_TestBase extends PHPUnit_Framework_TestCase {
+
+    function _enableRule($rule)
+    {
+        $filters = $GLOBALS['ingo_storage']->retrieve(Ingo_Storage::ACTION_FILTERS);
+        foreach ($filters->getFilterList() as $k => $v) {
+            if ($v['action'] == $rule) {
+                $v['disable'] = false;
+                $filters->updateRule($v, $k);
+                $this->store($filters);
+            }
+        }
+    }
+
+    function assertScript($expect)
+    {
+        $result = $GLOBALS['ingo_script']->generate();
+        if (!is_string($result)) {
+            $this->fail("result not a script", 1);
+            return;
+        }
+
+        /* Remove comments and crunch whitespace so we can have a functional
+         * comparison. */
+        $new = array();
+        foreach (explode("\n", $result) as $line) {
+            if (preg_match('/^\s*$/', $line)) {
+                continue;
+            }
+            if (preg_match('/^\s*#.*$/', $line)) {
+                continue;
+            }
+            $new[] = trim($line);
+        }
+
+        $new_script = join("\n", $new);
+        $this->assertEqual($expect, $new_script);
+    }
+
+}
diff --git a/ingo/lib/tests/_data/from_spammer b/ingo/lib/tests/_data/from_spammer
new file mode 100644 (file)
index 0000000..34572a9
--- /dev/null
@@ -0,0 +1,40 @@
+From cyrus@prometheus Mon Aug  7 15:01:35 2006
+Return-Path: <cyrus@prometheus>
+Received: from murder ([unix socket])
+        by prometheus (Cyrus v2.2.4-Debian-2.2.4-2) with LMTPA;
+        Mon, 07 Aug 2006 15:01:35 -0400
+X-Sieve: CMU Sieve 2.2
+Received: from localhost (localhost.localdomain [127.0.0.1])
+       by prometheus.cronosys.com (Postfix) with ESMTP id 61BCA7080C6
+       for <jason.m.felice@gmail.com>; Mon,  7 Aug 2006 15:01:35 -0400 (EDT)
+Received: from prometheus.cronosys.com ([127.0.0.1])
+       by localhost (prometheus [127.0.0.1]) (amavisd-new, port 10024)
+       with ESMTP id 20060-03 for <jason.m.felice@gmail.com>;
+       Mon, 7 Aug 2006 15:01:35 -0400 (EDT)
+Received: from localhost.localdomain (cousteau.att.cronosys.com [66.73.22.6])
+       by prometheus.cronosys.com (Postfix) with ESMTP id 010CC7080C0
+       for <jason.m.felice@gmail.com>; Mon,  7 Aug 2006 15:01:34 -0400 (EDT)
+Received: by localhost.localdomain (Postfix, from userid 1000)
+       id 00D37C23; Mon,  7 Aug 2006 15:01:32 -0400 (EDT)
+Date: Mon, 7 Aug 2006 15:01:32 -0400
+From: Bad Guy Spammer <spammer@example.com>
+To: jason.m.felice@gmail.com
+Subject: This is a test
+Message-ID: <20060807190132.GC22633@untamo.cronosys.com>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+User-Agent: Mutt/1.5.6+20040907i
+X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at prometheus.cronosys.com
+X-Spam-Status: No, hits=-1.4 tagged_above=-50.0 required=4.0 tests=AWL,
+       BAYES_00, FORGED_RCVD_HELO
+X-Spam-Level: 
+
+Buy dumb stuff now.
+
+-- 
+ Jason Felice
+ (216) 221-4600  x302
+ Cronosys  -- Liberate the soul of your business <http://www.cronosys.com>.
+
+
diff --git a/ingo/lib/tests/_data/not_from_spammer b/ingo/lib/tests/_data/not_from_spammer
new file mode 100644 (file)
index 0000000..0701201
--- /dev/null
@@ -0,0 +1,40 @@
+From cyrus@prometheus Mon Aug  7 15:01:35 2006
+Return-Path: <cyrus@prometheus>
+Received: from murder ([unix socket])
+        by prometheus (Cyrus v2.2.4-Debian-2.2.4-2) with LMTPA;
+        Mon, 07 Aug 2006 15:01:35 -0400
+X-Sieve: CMU Sieve 2.2
+Received: from localhost (localhost.localdomain [127.0.0.1])
+       by prometheus.cronosys.com (Postfix) with ESMTP id 61BCA7080C6
+       for <jason.m.felice@gmail.com>; Mon,  7 Aug 2006 15:01:35 -0400 (EDT)
+Received: from prometheus.cronosys.com ([127.0.0.1])
+       by localhost (prometheus [127.0.0.1]) (amavisd-new, port 10024)
+       with ESMTP id 20060-03 for <jason.m.felice@gmail.com>;
+       Mon, 7 Aug 2006 15:01:35 -0400 (EDT)
+Received: from localhost.localdomain (cousteau.att.cronosys.com [66.73.22.6])
+       by prometheus.cronosys.com (Postfix) with ESMTP id 010CC7080C0
+       for <jason.m.felice@gmail.com>; Mon,  7 Aug 2006 15:01:34 -0400 (EDT)
+Received: by localhost.localdomain (Postfix, from userid 1000)
+       id 00D37C23; Mon,  7 Aug 2006 15:01:32 -0400 (EDT)
+Date: Mon, 7 Aug 2006 15:01:32 -0400
+From: Good Guy <goodguy@example.com>
+To: jason.m.felice@gmail.com
+Subject: This is a test
+Message-ID: <20060807190132.GC22633@untamo.cronosys.com>
+Mime-Version: 1.0
+Content-Type: text/plain; charset=us-ascii
+Content-Disposition: inline
+User-Agent: Mutt/1.5.6+20040907i
+X-Virus-Scanned: by amavisd-new-20030616-p10 (Debian) at prometheus.cronosys.com
+X-Spam-Status: No, hits=-1.4 tagged_above=-50.0 required=4.0 tests=AWL,
+       BAYES_00, FORGED_RCVD_HELO
+X-Spam-Level: 
+
+Buy not-so-dumb stuff now.
+
+-- 
+ Jason Felice
+ (216) 221-4600  x302
+ Cronosys  -- Liberate the soul of your business <http://www.cronosys.com>.
+
+
diff --git a/ingo/lib/version.php b/ingo/lib/version.php
new file mode 100644 (file)
index 0000000..d5aedd3
--- /dev/null
@@ -0,0 +1 @@
+<?php define('INGO_VERSION', 'H4 (2.0-git)') ?>
diff --git a/ingo/locale/ca_ES/LC_MESSAGES/ingo.mo b/ingo/locale/ca_ES/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..69387cb
Binary files /dev/null and b/ingo/locale/ca_ES/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/ca_ES/help.xml b/ingo/locale/ca_ES/help.xml
new file mode 100755 (executable)
index 0000000..309e802
--- /dev/null
@@ -0,0 +1,286 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- $Horde: ingo/locale/ca_ES/help.xml,v 1.3 2007/04/16 18:01:31 jan Exp $ -->
+<help>
+  <entry id="blacklist" md5="5c12e162f66f68c6c2d84cc7c280d710" state="uptodate">
+    <title>Llista negra</title>
+    <para>La llista negra és un llistat d'adreces de les quals no desitja veure missatges en la safata d'Entrada.</para>
+  </entry>
+  <entry id="blacklist-action" md5="1701f4152c090004e3b40205439f9108" state="uptodate">
+    <title>Llista negra: Acció</title>
+    <para>Aquesta acció defineix què fer al rebre un missatge d'un remitent bloquejat. Els valors possibles són "eliminar" o "traslladar a carpeta". Si es selecciona "eliminar", els missatges es descartaran abans d'emmagatzemar-los en la safata d'Entrada. Si es selecciona "Moure a carpeta", s'emmagatzemaran en la carpeta seleccionada.</para>
+  </entry>
+  <entry id="blacklist-addresses" md5="3431e98a8d15bfa645af394cefd8346d" state="uptodate">
+    <title>Llista negra: Adreces</title>
+    <para>La llista d'adreces bloquejades. Cal introduir cada adreça en una línia diferent.</para>
+  </entry>
+  <entry id="filters_rules" md5="d84617a2f5002d24ef11509e5f4eb6c0" state="uptodate">
+    <title>Filtres: Regles</title>
+    <para>Aquesta és la pantalla principal de regles. Aquí es poden crear regles prement el botó "Nova regla", reorganitzar l'ordre d'aplicació de les regles prement les fletxes cap amunt i cap avall o introduint noves posicions de les regles en la columna "Traslladar"; activar o desactivar regles específiques prement la icona de la columna "Activat" i modificar regles individuals prement la icona de la columna "Modificar" o el nom de la regla.</para>
+    <para>
+      <tip>Tingui en compte que les regles s'executen en l'ordre que es mostra aquí. Per exemple, si s'esborra un missatge a causa de la llista negra, les regles que segueixin ja no actuaran en aquest missatge</tip>
+      </para>
+  </entry>
+  <entry id="forward" md5="c9664b960ceef87cab4af83e8f33412c" state="uptodate">
+    <title>Reenviar</title>
+    <para>
+    Pot optar per reexpedir de forma automàtica el seu correu entrant a una sèrie d'adreces de correu electrònic.
+    </para>
+  </entry>
+  <entry id="forward-addresses" md5="817c5f002f99c0afd0010aabaf07c91c" state="uptodate">
+    <title>Reenviar: Adreces</title>
+    <heading>Reenviar: Adreces</heading>
+    <para>
+    Pot optar per reexpedir el correu entrant a altre compte. Pot introduir tantes adreces com desitgi, cadascuna en una línia diferent. 
+    </para>
+  </entry>
+  <entry id="forward-keepcopy" md5="be1f36c2f9a8dcba7517b8edf5319d64" state="uptodate">
+    <title>Reenviar: Mantenir una còpia</title>
+    <heading>Reenviar: Mantenir una còpia</heading>
+    <para>
+    Si activa aquesta opció, es conservarà una còpia dels missatges entrants en aquest compte al mateix temps que s'envien a les adreces a les quals desitja reenviar-les.
+    </para>
+  </entry>
+  <entry id="pref-show_filter_msg" md5="d8795e5b71c6287ed7bfe3f8dc4f4861" state="uptodate">
+    <title>Preferències: Mostrar avisos detallats al aplicar cada filtre?</title>
+    <para>
+    Si s'utilitza el driver IMAP de filtrat, aquesta preferència controla com d'informatiu serà el procés de filtrat. Si s'activa, es notificarà per pantalla cada missatge filtrat quan s'hagi processat. Si es desactiva, només es veurà a la pantalla un resum de les accions de filtrat.
+
+    </para>
+  </entry>
+  <entry id="pref-filter_seen" md5="85687c69db6145d77053a8b6302e5ad2" state="uptodate">
+    <title>Preferències: Filtrar només els missatges [no] llegits?</title>
+    <para>
+   Aquesta preferència identifica quan el controlador de filtrat IMAP intentarà aplicar regles en la safata d'Entrada. Pot aplicar els filtres a tots els missatges, NOMÉS a aquells marcats com no llegits o NOMÉS a aquells que s'han marcat com llegits .
+    </para>
+  </entry>
+  <entry id="rule" md5="cf211ec97956e9adc3b8f01b2a40888f" state="uptodate">
+    <title>Regla de filtratge</title>
+    <para>
+    Una regla és el bloc bàsic d'elaboració dels seus filtres de correu, consisteix en una o diverses condicions i una o diverses accions. Quan se li envia un missatge, es processa a través de les condicions de les regles de filtrat i si compleix alguna, s'executen les accions indicades en aquest missatge. Els filtres poden ser molt fàcils per a eliminar de forma automàtica correu no desitjat o per a facilitar la gestió del seu compte de correu emmagatzemant els missatges relacionats en carpetes diferents.
+    </para>
+  </entry>
+  <entry id="rule-action" md5="0f66574fec21645147b3cbb967cc23b1" state="uptodate">
+    <title>Regla de filtratge: Acció</title>
+    <para>
+    Aquestes són les accions que es poden portar a terme si un missatge entrant compleix la condició indicada. Tingui en compte que pot ser que no totes aquestes opcions estan disponibles - només es mostraran les opcions que funcionin amb el programari de filtrat utilitzat. 
+    </para>
+    <heading>Entregar a la meva bústia d'entrada</heading>
+    <para>
+El missatge es guardarà a la bústia a la seva safata d'entrada. És la opció per omisió. 
+    </para>
+    <heading>Entregar a la bústia</heading>
+    <para>
+El missatge s'emmagatzemarà en la carpeta indicada.
+    </para>
+    <heading>Eliminar completament el missatge</heading>
+    <para>
+    S'eliminarà silenciosament el missatge. Ni vostè ni el remitent rebran notificació alguna que ha succeït. 
+    </para>
+    <heading>Redirigir a</heading>
+    <para>
+    El missatge es reenviarà a l'adreça especificada. No es conservarà cap còpia del missatge al seu compte.
+    </para>
+    <heading>Entregar a la meva bústia d'entrega i redireccionar a</heading>
+    <para>
+    El missatge s'enviarà a l'adreça especificada i es conservarà una còpia a la safata d'entrada.
+    </para>
+    <heading>Rebutjar el motiu</heading>
+    <para>
+    El missatge original s'eliminarà i s'enviarà un missatge nou al remitent amb el text que indiqui. 
+    </para>
+  </entry>
+  <entry id="rule-combine" md5="29484c1ebdd7ce71edc34fc8100ef69c" state="uptodate">
+    <title>Regla de filtrat: Combinar opcions</title>
+    <para>
+    Pot definir diverses condicions en una mateixa regla. Pot agrupar-les de forma lógica mitjançant "I"/"O", no pot crear filtres complexos que continguin ambdós tipus de condicions.
+    </para>
+    <heading>I</heading>
+    <para>
+    Si selecciona I, un missatge entrant ha de complir totes i cadascuna de les condicions que especifiqui perquè s'executin les accions.
+    </para>
+    <heading>O</heading>
+    <para>
+    Si selecciona O, les accions indicades s'executaran si es compleix almenys una de les condicions.
+    </para>
+  </entry>
+  <entry id="rule-mark" md5="0cbcc4ad4857b8538cd4e3915fbe9d73" state="changed">
+    <title>Regla de filtratge: assenyalar missatge</title>
+    <para>
+    Com una de les accions d'una regla, pot indicar que es marqui un missatge amb un o més dels marcadors IMAP. Els valors possibles són: Llegit, Important, Respost i Eliminat.
+    </para>
+  <!-- English entry:
+<entry id="rule-mark">
+    <title>Filter Rule: Mark Message</title>
+    <para>You may specify marking a message with one or more IMAP flags as one
+    of the actions in a rule. The possible values are Seen, Flagged For Followup,
+    Answered, and Deleted.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-mark">
+    <title>Filter Rule: Mark Message</title>
+    <para>You may specify marking a message with one or more IMAP flags as one
+    of the actions in a rule. The possible values are Seen, Flagged For Followup,
+    Answered, and Deleted.</para>
+  </entry>--></entry>
+  <entry id="rule-matches" md5="517e24971f2c5443b2ed04e9c504e7eb" state="uptodate">
+    <title>Regla de filtrat: Coincidència</title>
+    <para>
+   A cada condició d'una regla hi ha tres components. El primer en el camp que cal examinar. El segon és el tipus de comparació a realitzar. El tercer és el valor amb el qual cal comparar el camp. Existeixen diversos tipus diferents de comparances realizables. Les comparances disponibles per a cada camp depenen tant del tipus de camp com del que pugui manejar el programari utilitzat. Per això no totes les següents possibles opcions de coincidència apareixeran en un camp determinat. 
+    </para>
+    <heading>Conté</heading>
+    <para>
+    Es considerarà cert si la cadena indicada es troba enlloc de la línia. Exemple: josep@exemple.com no conté usuari@exemple
+    </para>
+    <heading>No conté</heading>
+    <para>
+    És considerarà cert si la cadena indicada no es troba enlloc de la lína. Exemple: josep@exemple.com no conté usuari@exemple
+    </para>
+    <heading>És</heading>
+    <para>
+    Es considerarà cert si la cadena indicada coincideix exactament amb la línia. Exemple: usuari@exemple és usuari@exemple 
+    </para>
+    <heading>No és</heading>
+    <para>
+    Es considerarà cert si la cadena indicada no coincideix exactament amb la línia. Exemple: usuari@exemple no és usuari@exemple.com
+    </para>
+    <heading>Comença per</heading>
+    <para>
+     Es considerarà cert si la cadena indicada coincideix amb el començament de la línia. Exemple: usuari@exemple.com Comença per usuari@exemple
+    </para>
+    <heading>No comença per</heading>
+    <para>
+    Es considerarà cert si la cadena indicada no coincideix amb el començament de la línia. Exemple: josep@exemple.com No comença per usuari@exemple 
+    </para>
+    <heading>Finalitza per</heading>
+    <para>
+    Es considerarà cert si la cadena indicada coincideix amb el final de la línia. Exemple: usuari@exemple Acaba per @exemple
+    </para>
+    <heading>No finalitza per</heading>
+    <para>
+    Es considerarà cert si la cadena indicada no coincideix amb el final de la línia. Exemple: usuari@exemple No acaba per @exemple.com 
+    </para>
+    <heading>Existeix</heading>
+    <para>
+Es considerarà cert si la cadena indicada existeix en el missatge, independentment del que contingui.
+    </para>
+    <heading>No existe</heading>
+    <para>
+    És considerarà cert si la cadena indicada no existeix al missatge.
+    </para>
+    <heading>Regex</heading>
+    <para>
+    Li permet utilitzar en les comparacions de les capçaleres expressions regulars compatibles POSIX complexes.
+    Exemple: "Rebut des de [*\.*\.*\.*] per (amfitrio-a|amfitrio-b).exemple.com*" s'ha de cumplir amb "Rebut des de [172.16.100.1] per amfitrio-a.exemple.com el Dimarts"
+    </para>
+    <heading>Coincideix</heading>
+    <para>Coincideix és semblat a Conté amb la excepció que poden utilitzar-se * i ? com comodins. Un * substituirà qualsevol número de caràcters i una ? substituirà exactament un. Exemple: "*usuari?@exemple.com" es complirá tant amb "usuari1@exemple.com" com amb "otrousuario2@exemple.com" 
+    </para>
+    <heading>No coincideix</heading>
+    <para>
+No coincideix és el mateix que Coincideix excepte per que serà fals si el valor indicat coincideix amb la cadena de la capçalera del missatge.     
+    </para>
+    <heading>Menor que</heading>
+    <para>
+Aquesta és una prova relacional que compara numéricament el valor indicat i el valor de la capçalera del missatge. 
+    </para>
+    <heading>Menor o igual que</heading>
+    <para>
+Aquesta és una prova relacional que compara numéricament el valor indicat i el valor de la capçalera del missatge. 
+    </para>
+    <heading>Igual que</heading>
+    <para>
+Aquesta és una prova relacional que compara numéricament el valor indicat i el valor de la capçalera del missatge. 
+    </para>
+    <heading>Major o igual que</heading>
+    <para>
+   Aquesta és una prova relacional que compara numéricament el valor indicat i el valor de la capçalera del missatge. 
+    </para>
+    <heading>Major que</heading>
+    <para>
+   Aquesta és una prova relacional que compara numéricament el valor indicat i el valor de la capçalera del missatge. 
+    </para>
+  </entry>
+  <entry id="rule-name" md5="8faaf71e4bf2f91d943d77f803f9a2d5" state="uptodate">
+    <title>Regla de filtrat: Nom</title>
+    <para>
+Es tracta d'un nom descriptiu d'una regla. Pot usar-lo per a identificar una regla determinada en el seu llistat de filtres.
+    </para>
+  </entry>
+  <entry id="rule-stop" md5="677c920effca959123b7d539b3b0d864" state="uptodate">
+    <title>Regla de filtrat: Detenir comprovació</title>
+    <para>
+Si s'activa aquesta opció i un missatge compleix la regla, la resta dels missatges no es processarán. 
+    </para>
+  </entry>
+  <entry id="vacation" md5="2c9e12973d36fe94aeb73b32db9a64e6" state="uptodate">
+    <title>Absència</title>
+    <para>
+Els missatges d'absència són respostes automàticas enviades a la gent que li envíi correu. Normalment s'utilitzen quan va a estar absent per un llarg període de temps. 
+    </para>
+  </entry>
+  <entry id="vacation-period" state="new">
+     <title>Vacation Period</title>
+     <para>Vacation messages will only be sent during the period of time that you are on vacation.</para>
+  </entry>
+  <entry id="vacation-bulk" md5="6f6e4178e80f46e7876c7ee5d0ac53b7" state="uptodate">
+    <title>Absència: No respondre a orri</title>
+    <para>
+Activant aquesta opció les respostes per absència no s'enviaran amb missatges que semblin procedir de llistes de correu o que estiguin marcats com correu a orri. 
+    </para>
+  </entry>
+  <entry id="vacation-days" md5="25ba74c0e79ce72237795eb809ee4585" state="uptodate">
+    <title>Absència: Interval de resposta</title>
+    <para>
+És el nombre de dies a esperar abans de tornar a enviar una resposta automàtica a una adreça que ja hagi rebut una. 
+    </para>
+  </entry>
+  <entry id="vacation-myemail" md5="ef3fa70e940ed1472276c0fde5ae2aed" state="uptodate">
+    <title>Absència: Les meves adreces de correu</title>
+    <para>
+Si té més d'una adreça de correu assignades a aquesta bústia, indiqueu-les aquí. 
+    </para>
+  </entry>
+  <entry id="vacation-noresponse" md5="2b72e12b6989c9ef1667a59040c70310" state="uptodate">
+    <title>Absència: Sense respostes</title>
+    <para>
+No enviar la notificació d'absència a aquests destinataris. Cada adreça ha d'estar en una línia diferent. 
+    </para>
+  </entry>
+  <entry id="vacation-reason" md5="d4da2f3a0d357e00950ec57d984cbcee" state="uptodate">
+    <title>Absència: Motiu de l'absència</title>
+    <para>
+És el text que s'enviarà en les seves notificacions d'absència.     
+    </para>
+  </entry>
+  <entry id="vacation-subject" md5="ce16c7c6a08993821208cfbee0b188a0" state="uptodate">
+    <title>Absència: Assumpte de l'absència</title>
+    <para>
+És l'assumpte que s'utilitzarà en les notificacions d'absència.     
+    </para>
+  </entry>
+  <entry id="whitelist" md5="ecbf7000f107832d68bd7ba8f5121909" state="uptodate">
+    <title>Llista blanca</title>
+    <heading>Llista blanca</heading>
+    <para>
+La llista blanca és un llistat d'adreces (legítimes) de les quals sempre desitja poder veure els missatges en la safata d'Entrada. Cada adreça ha d'incloure's en una línia distinta. 
+    </para>
+  </entry>
+  <entry id="whitelist-addresses" md5="8fe054c1b55e6adc81d1d8525c131637" state="uptodate">
+    <title>Llista blanca: Adreces</title>
+    <para>
+   PENDENT. Cada adreça ha d'incloure's en una línia distinta. 
+    </para>
+  </entry>
+  <entry id="spam-level" state="new">
+    <title>Spam Filtering: Spam Level</title>
+    <para>The system will consider messages with a likely spam score greater
+    than or equal to the number entered here as spam.</para>
+    <para>Lower numbers will catch more messages, with the drawback that there
+    is a greater chance of catching real messages.  "5" is a typical value
+    if your system is using SpamAssassin.</para>
+  </entry>
+  <entry id="spam-folder" state="new">
+    <title>Spam Filtering: Folder to receive spam</title>
+    <para>The system will file messages which it determines to be spam into
+    this folder.</para>
+  </entry>
+</help>
diff --git a/ingo/locale/cs_CZ/LC_MESSAGES/ingo.mo b/ingo/locale/cs_CZ/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..af7c7d4
Binary files /dev/null and b/ingo/locale/cs_CZ/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/da_DK/LC_MESSAGES/ingo.mo b/ingo/locale/da_DK/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..4dab48c
Binary files /dev/null and b/ingo/locale/da_DK/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/de_DE/LC_MESSAGES/ingo.mo b/ingo/locale/de_DE/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..aa9b3ce
Binary files /dev/null and b/ingo/locale/de_DE/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/de_DE/help.xml b/ingo/locale/de_DE/help.xml
new file mode 100644 (file)
index 0000000..157d117
--- /dev/null
@@ -0,0 +1,294 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- $Horde: ingo/locale/de_DE/help.xml,v 1.6 2007/04/16 18:01:10 jan Exp $ -->
+<help>
+  <entry id="blacklist" md5="5c12e162f66f68c6c2d84cc7c280d710" state="uptodate">
+    <title>Ausschlussliste</title>
+    <para>In der Ausschlussliste befinden sich alle Emailadressen, von denen
+    Sie wissen, dass diese Ihnen Nachrichten schicken, die Sie nicht in Ihrem
+    Postfach haben möchten.</para>
+  </entry>
+  <entry id="blacklist-action" md5="1701f4152c090004e3b40205439f9108" state="uptodate">
+    <title>Ausschlussliste: Aktion</title>
+    <para>Diese Aktion legt fest, was mit Nachrichten geschieht, die Sie von
+    einem blockierten Absender erhalten. Mögliche Aktionen sind
+    "Löschen" und "Verschieben". Wenn Sie "Löschen" auswählen,
+    wird die Nachricht gelöscht, bevor sie überhaupt ausgeliefert
+    wurde. Mit "Verschieben" wird die Nachricht in den angegebenen Ordner
+    ausgeliefert.</para>
+  </entry>
+  <entry id="blacklist-addresses" md5="3431e98a8d15bfa645af394cefd8346d" state="uptodate">
+    <title>Ausschlussliste: Adressen</title>
+    <para>Die Liste der Adressen, die blockiert werden sollen. Jede Adresse
+    muss in einer eigenen Zeile eingetragen werden.</para>
+  </entry>
+  <entry id="filters_rules" md5="d84617a2f5002d24ef11509e5f4eb6c0" state="uptodate">
+    <title>Regeln: Filterregeln</title>
+    <para>Dies ist die Hauptseite mit den verschiedenen Regeln. Hier
+    können Sie Regeln hinzufügen, indem Sie auf "Neue Regel" klicken.
+    Sie können Regeln arrangieren, indem Sie auf die Hoch- und
+    Runterpfeile in der "Verschieben"-Spalte klicken oder neue Regelpositionen
+    in die Eingabefelder eintragen, Regeln aktivieren und deaktivieren, indem
+    Sie auf das entsprechende Icon in der "Aktiviert"-Spalte klicken, und
+    einzelne Regeln bearbeiten, indem Sie auf das entsprechende Icon in der
+    "Bearbeiten"-Spalte oder auf den den Regelnamen klicken.</para>
+    <para>
+      <tip>Beachten Sie, dass die Regeln in der hier aufgelisteten Reihenfolge
+      ausgeführt werden. Wird zum Beispiel eine Email durch einen Eintrag
+      in der Ausschlussliste gelöscht, haben die nachfolgenden Regeln
+      keinen Einfluss auf diese Email mehr.</tip>
+    </para>
+    
+  </entry>
+  <entry id="forward" md5="c9664b960ceef87cab4af83e8f33412c" state="uptodate">
+    <title>Weiterleitung</title>
+    <para>Damit können Sie Ihre eingehenden Emails automatisch an eine
+    oder mehrere andere Emailadressen weiterleiten.</para>
+  </entry>
+  <entry id="forward-addresses" md5="817c5f002f99c0afd0010aabaf07c91c" state="uptodate">
+    <title>Weiterleitung: Adressen</title>
+    <para>Hier können Sie festlegen, an welche Adressen Ihre Emails
+    weitergeleitet werden sollen. Sie können beliebig viele Emailadressen
+    eintragen, jede in einer eigenen Zeile.</para>
+  </entry>
+  <entry id="forward-keepcopy" md5="be1f36c2f9a8dcba7517b8edf5319d64" state="uptodate">
+    <title>Weiterleitung: Kopie behalten</title>
+    <para>Wenn Sie diese Einstellung aktivieren, werden Kopien aller
+    eingehenden Nachrichten in Ihrem Konto belassen. Unabhängig davon
+    werden alle Nachrichten an die Adressen, die Sie angegeben haben,
+    weitergeleitet.</para>
+  </entry>
+  <entry id="pref-show_filter_msg" md5="d8795e5b71c6287ed7bfe3f8dc4f4861" state="uptodate">
+    <title>Einstellungen: Detailierte Benachrichtigung anzeigen?</title>
+    <para>Wenn der IMAP-Filtertreiber verwendet wird, kann über diese
+    Einstellung festgelegt werden, wie ausführlich die Benachrichtigung
+    über die Auführung der Filter ausfällt. Wenn diese
+    Einstellung aktiviert wird, wird eine Benachrichtigung über jede
+    einzelne Nachricht, die gefiltert wurde, auf dem Bildschirm angezeigt.
+    Anderenfalls wird nur eine Zusammenfassung aller Filteraktionen
+    angezeigt.</para>
+  </entry>
+  <entry id="pref-filter_seen" md5="85687c69db6145d77053a8b6302e5ad2" state="uptodate">
+    <title>Einstellungen: Nur (un)gelesene Nachrichten filtern?</title>
+    <para>Mit dieser Einstellung können Sie festlegen, welche Nachrichten
+    im Posteingang von den Filterregeln betroffen sein sollen. Sie können
+    die Filter entweder auf alle, nur auf gelesene, oder nur auf ungelesene
+    Nachrichten anwenden lassen.</para>
+  </entry>
+  <entry id="rule" md5="cf211ec97956e9adc3b8f01b2a40888f" state="uptodate">
+    <title>Filterregel</title>
+    <para>Regeln sind der Grundbaustein Ihrer Emailfilter. Sie bestehen aus
+    einer oder mehrere Bedingungen und einer oder mehrere Aktionen. Wenn Sie
+    eine Nachricht erhalten, wird diese zunächst durch die Bedingungen
+    verarbeitet; wenn diese zutreffen, werden die Aktionen, die Sie angegeben
+    haben, mit dieser Nachricht ausgeführt. Filter können sehr
+    nützlich zur Aussortierung unerwünschter Emails sein, oder um Ihr
+    Emailkonto übersichtlicher zu gestalten, indem Sie
+    zusammengehörige Emails jeweils in unterschiedliche Ordner
+    einsortieren.</para>
+  </entry>
+  <entry id="rule-action" md5="0f66574fec21645147b3cbb967cc23b1" state="uptodate">
+    <title>Filterregel: Aktion</title>
+    <para>Dies sind alle möglichen Aktionen, die ausgeführt werden
+    können, wenn eine eingehende Nachricht den Bedingungen entspricht, die
+    in der Filterregel angegeben wurde. Beachten Sie, dass eventuell nicht alle
+    diese Möglichkeiten zur Verfügung stehen, nur die Aktionen werden
+    angezeigt, die von Ihrem System unterstützt werden.</para>
+    <heading>In meinen Posteingang ausliefern</heading>
+    <para>Die Nachricht wird in Ihrem Posteingang gespeichert. Dies ist die
+    Standardeinstellung.</para>
+    <heading>In diesen Ordner ausliefern</heading>
+    <para>Die Nachricht wird in den angegebenen Ordner ausgeliefert.</para>
+    <heading>Nachricht komplett löschen</heading>
+    <para>Die Nachricht wird stillschweigend gelöscht. Weder Sie noch der
+    Absender erhalten eine Benachrichtigung über diesen Vorgang.</para>
+    <heading>Weiterleiten an</heading>
+    <para>Die Nachricht wird an die angegebene Emailadresse weitergeleitet. Sie
+    erhalten keine Kopie dieser Nachricht in Ihren Posteingang.</para>
+    <heading>In meinen Posteingang ausliefern und weiterleiten an</heading>
+    <para>Die Nachricht wird an die angegebene Emailadresse weitergeleitet, und
+    Sie erhalten eine Kopie dieser Nachricht in Ihren Posteingang.</para>
+    <heading>Mit folgendem Grund ablehnen</heading>
+    <para>Die Nachricht wird gelöscht, und der Absender dieser Nachricht
+    erhält eine Antwort mit dem Text, den Sie hier angeben.</para>
+  </entry>
+  <entry id="rule-combine" md5="29484c1ebdd7ce71edc34fc8100ef69c" state="uptodate">
+    <title>Filterregel: Bedingungen kombinieren</title>
+    <para>Sie können mehrere Bedingungen in einer Regel angeben und diese
+    logisch mit "und" und "oder" verknüpfen. Komplexe Bedingungen mit
+    einer Kombination beider Verknüpfungstypen sind nicht
+    möglich.</para>
+    <heading>Und</heading>
+    <para>Wenn Sie "Alle der folgenden" auswählen, müssen eingehende
+    Nachrichten allen angegebenen Bedingungen entsprechen, bevor die
+    Filteraktionen ausgeführt werden.</para>
+    <heading>Oder</heading>
+    <para>Wenn Sie "Eine der folgenden" auswählen, müssen eingehende
+    Nachrichten mindestens einer der angegebenen Bedingungen entsprechen, bevor
+    die Filteraktionen ausgeführt werden.</para>
+  </entry>
+  <entry id="rule-mark" md5="e8bdb30d1c1c1cdc5ec1e5e4804f9300" state="uptodate">
+    <title>Filterregel: Nachricht markieren</title>
+    <para>Sie können festlegen, dass eine Nachricht als Filteraktion mit
+    einer oder mehreren IMAP-Markierungen versehen wird. Die möglichen
+    Markierungen sind Gelesen, Markiert zur Wiedervorlage, Beantwortet und Gelöscht.</para>
+  </entry>
+  <entry id="rule-matches" md5="517e24971f2c5443b2ed04e9c504e7eb" state="uptodate">
+    <title>Filterregel: Bedingungen</title>
+    <para>Jede Bedingung einer Filterregel besteht aus drei Komponenten. Die
+    erste bestimmt das Feld der Nachricht, das überprüft werden soll.
+    Die zweite legt die Art der Überprüfung fest, und die dritte gibt
+    den Wert an, mit dem das Feld verglichen werden soll. Es gibt viele
+    verschiedene Vergleichsarten, die je nach dem verwendeten Filtersystem und
+    dem zu überprüfenden Nachrichtenfeld variieren können. Daher
+    werden von den folgenden Möglichkeiten nicht unbedingt alle
+    angezeigt.</para>
+    <heading>Enhält</heading>
+    <para>Ist wahr, wenn die angegebene Zeichenkette irgendwo im Feld gefunden
+    wird. Beispiel: max_mustermann@beispiel.de Enthält
+    mustermann@beispiel.</para>
+    <heading>Enhält nicht</heading>
+    <para>Ist wahr, wenn die angegebene Zeichenkette nicht im Feld gefunden
+    wird. Beispiel: max_mustermann@beispiel.de Enthält nicht
+    mustermann@beispiel.</para>
+    <heading>Ist</heading>
+    <para>Ist wahr, wenn die angegebene Zeichenkette dem Feld genau entspricht.
+    Beispiel: max_mustermann@beispiel.de Ist max_mustermann@beispiel.de.</para>
+    <heading>Ist nicht</heading>
+    <para>Ist wahr, wenn die angegebene Zeichenkette dem Feld nicht genau
+    entspricht. Beispiel: max_mustermann@beispiel Ist Nicht
+    max_mustermann@beispiel.de.</para>
+    <heading>Beginnt mit</heading>
+    <para>Ist wahr, wenn die angegebene Zeichenkette dem Anfang des Feldes
+    entspricht. Beispiel: max_mustermann@beispiel.de Beginnt mit
+    max_mustermann@.</para>
+    <heading>Beginnt nicht mit</heading>
+    <para>Ist wahr, wenn die angegebene Zeichenkette nicht dem Anfang des
+    Feldes entspricht. Beispiel: max_mustermann@beispiel.de Beginnt nicht mit
+    mustermann@beispiel.de.</para>
+    <heading>Endet mit</heading>
+    <para>Ist wahr, wenn die angegebene Zeichenkette dem Ende des Feldes
+    entspricht. Beispiel: max_mustermann@beispiel.de Endet mit
+    @beispiel.de.</para>
+    <heading>Endet nicht mit</heading>
+    <para>Ist wahr, wenn die angegebene Zeichenkette nicht dem Ende des Feldes
+    entspricht. Beispiel: max_mustermann@beispiel.de Endet nicht mit
+    max_mustermann@beispiel.</para>
+    <heading>Existiert</heading>
+    <para>Ist wahr, wenn das angegebene Feld in der Nachricht existiert,
+    unabhänging von dessen Inhalt.</para>
+    <heading>Existiert nicht</heading>
+    <para>Ist wahr, wenn das angegebene Feld nicht in der Nachricht
+    existiert.</para>
+    <heading>Regulärer Ausdruck</heading>
+    <para>Erlaubt die Verwendung komplexer, POSIX kompatibler, regulärer
+    Ausdrücke, um die Nachrichtenfelder zu überprüfen. Beispiel:
+    "Received from [*\.*\.*\.*] by (hosta|hostb).beispiel.de*" würde auf
+    "Received from [172.16.100.1] by hosta.beispiel.de on Tuesday"
+    zutreffen.</para>
+    <heading>Entpricht (mit Platzhaltern)</heading>
+    <para>"Entspricht" ist ähnlich zu "Enthält", erlaubt aber die
+    Verwendung von * und ? als Platzhalter. Ein * entspricht einer beliebigen
+    Anzahl von Zeichen, ? entspricht genau einem Zeichen. Beispiel:
+    "*benutzer?@beispiel.de" würde sowohl auf "benutzer1@beispiel.de" als
+    auch auf "andererbenutzer2@beispiel.de" zutreffen.</para>
+    <heading>Entpricht nicht (mit Platzhaltern)</heading>
+    <para>"Entspricht nicht" funktioniert genau wie "Entspricht", außer
+    dass die Bedingung falsch wird, wenn der angegebene Ausdruck dem Wert im
+    Nachrichtenfeld entspricht.</para>
+    <heading>Kleiner als</heading>
+    <para>Dies ist ein Vergleichstest, der den angegebenen Wert und den Wert im
+    Nachrichtenfeld numerisch vergleicht.</para>
+    <heading>Kleiner als oder gleich</heading>
+    <para>Dies ist ein Vergleichstest, der den angegebenen Wert und den Wert im
+    Nachrichtenfeld numerisch vergleicht.</para>
+    <heading>Gleich</heading>
+    <para>Dies ist ein Vergleichstest, der den angegebenen Wert und den Wert im
+    Nachrichtenfeld numerisch vergleicht.</para>
+    <heading>Größer als oder gleich</heading>
+    <para>Dies ist ein Vergleichstest, der den angegebenen Wert und den Wert im
+    Nachrichtenfeld numerisch vergleicht.</para>
+    <heading>Größer als</heading>
+    <para>Dies ist ein Vergleichstest, der den angegebenen Wert und den Wert im
+    Nachrichtenfeld numerisch vergleicht.</para>
+  </entry>
+  <entry id="rule-name" md5="8faaf71e4bf2f91d943d77f803f9a2d5" state="uptodate">
+    <title>Filterregel: Regelname</title>
+    <para>Dies ist der Name der Regel, den Sie frei vergeben können. Er
+    wird in der Liste der Filterregeln benutzt, um auf die Regel
+    zuzugreifen.</para>
+  </entry>
+  <entry id="rule-stop" md5="677c920effca959123b7d539b3b0d864" state="uptodate">
+    <title>Filterregel: Weitere Überprüfung anhalten</title>
+    <para>Wenn diese Einstellung ausgewählt ist und die Regel auf eine
+    Nachricht zutrifft, werden alle folgenden Regeln nicht mehr auf diese
+    Nachricht angewendet.</para>
+  </entry>
+  <entry id="vacation" md5="2c9e12973d36fe94aeb73b32db9a64e6" state="uptodate">
+    <title>Abwesenheit</title>
+    <para>Abwesenheitsnachrichten sind automatische Antworten an Personen, die
+    Ihnen eine Email schreiben, während sie für eine längere
+    Zeit abwesend sind.</para>
+  </entry>
+  <entry id="vacation-period" state="uptodate" md5="531accb93b707d39b2986a779b260dbf">
+     <title>Abwesenheit: Dauer</title>
+     <para>Abwesenheitsnachrichten werden nur während des Zeitraumes
+     verschickt, den Sie angegeben haben.</para>
+  </entry>
+  <entry id="vacation-bulk" md5="6f6e4178e80f46e7876c7ee5d0ac53b7" state="uptodate">
+    <title>Abwesenheit: Keine Antworten auf Nachrichten von Mailinglisten oder
+    Massenemails</title>
+    <para>Wenn Sie diese Einstellung aktivieren, werden keine
+    Abwesenheitsnachrichten als Anwort auf Nachrichten von Mailinglisten oder
+    solchen, die als Massenmails markiert sind, verschickt.</para>
+  </entry>
+  <entry id="vacation-days" md5="25ba74c0e79ce72237795eb809ee4585" state="uptodate">
+    <title>Abwesenheit: Antwortintervall</title>
+    <para>Hier können Sie die Anzahl der Tage angeben, die gewartet werden
+    soll, bevor ein Absender, der schon eine Abwesenheitsnachricht erhalten
+    hat, eine weitere zugeschickt bekommt.</para>
+  </entry>
+  <entry id="vacation-myemail" md5="ef3fa70e940ed1472276c0fde5ae2aed" state="uptodate">
+    <title>Abwesenheit: Meine Emailadressen</title>
+    <para>Wenn Sie mehr als eine Emailadresse haben, für die Sie
+    Nachrichten in diesem Konto erhalten, können Sie diese hier
+    angeben.</para>
+  </entry>
+  <entry id="vacation-noresponse" md5="2b72e12b6989c9ef1667a59040c70310" state="uptodate">
+    <title>Abwesenheit: Keine Antworten</title>
+    <para>An die angebenen Emailadressen werden keine Abwesenheitsnachrichten
+    verschickt. Jede Adresse muss in einer eigenen Zeile stehen.</para>
+  </entry>
+  <entry id="vacation-reason" md5="d4da2f3a0d357e00950ec57d984cbcee" state="uptodate">
+    <title>Abwesenheit: Grund</title>
+    <para>Dieser Text wird in Ihren Abwesenheitsnachrichten verwendet.</para>
+  </entry>
+  <entry id="vacation-subject" md5="ce16c7c6a08993821208cfbee0b188a0" state="uptodate">
+    <title>Abwesenheit: Betreff</title>
+    <para>Dieser Betreff wird in Ihren Abwesenheitsnachrichten
+    verwendet.</para>
+  </entry>
+  <entry id="whitelist" md5="ecbf7000f107832d68bd7ba8f5121909" state="uptodate">
+    <title>Positivliste</title>
+    <para>In der Positivliste befinden sich alle Emailadressen, deren
+    Nachrichten Sie immer in Ihrem Postfach haben möchten. Jede Adresse
+    muss in einer eigenen Zeile stehen.</para>
+  </entry>
+  <entry id="whitelist-addresses" md5="8fe054c1b55e6adc81d1d8525c131637" state="uptodate">
+    <title>Positivliste: Adressen</title>
+    <para>Jede Adresse muss in einer eigenen Zeile stehen.</para>
+  </entry>
+  <entry id="spam-level" state="uptodate" md5="6f00c30a45b0acaef4ae9dba56d58013">
+    <title>Spamfilter: Spam-Level</title>
+    <para>Das System wird Nachrichten mit einem Spam-Level größer oder gleich
+    diesem Wert als Spam behandeln.</para>
+    <para>Mit niedrigeren Werten werden mehr Nachrichten abgefangen,
+    allerdings mit dem dem Nachteil, dass die Wahrscheinlichkeit größer wird,
+    dass auch echte Nachrichten herausgefiltert werden. "5" ist ein typischer
+    Wert, falls auf Ihrem System SpamAssassin verwendet wird.</para>
+  </entry>
+  <entry id="spam-folder" state="uptodate" md5="1639e6d1cfcd6706f93920f2c63f4a00">
+    <title>Spamfilter: Ordner für Spamnachrichten</title>
+    <para>Das System wird Nachrichten, die es als Spam klassifiziert, in diesen
+    Ordner verschieben.</para>
+  </entry>
+</help>
diff --git a/ingo/locale/el_GR/LC_MESSAGES/ingo.mo b/ingo/locale/el_GR/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..b79fcc2
Binary files /dev/null and b/ingo/locale/el_GR/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/en_US/help.xml b/ingo/locale/en_US/help.xml
new file mode 100644 (file)
index 0000000..6bee830
--- /dev/null
@@ -0,0 +1,267 @@
+<?xml version="1.0"?>
+<!-- $Horde: ingo/locale/en_US/help.xml,v 1.16 2007/04/16 17:30:26 jan Exp $ -->
+<help>
+  <entry id="blacklist">
+    <title>Blacklist</title>
+    <para>The blacklist is a list of email addresses known to send email that
+    you do not wish to see in your INBOX.</para>
+  </entry>
+  <entry id="blacklist-action">
+    <title>Blacklist: Action</title>
+    <para>This action defines what to do when a message from a blocked sender
+    is sent to you. The possible values are "delete" or "move to folder". If
+    "delete" is selected, the messages will be discarded before ever being
+    stored in your Inbox. If "move to folder" is selected, they will be
+    delivered to the selected folder.</para>
+  </entry>
+  <entry id="blacklist-addresses">
+    <title>Blacklist: Addresses</title>
+    <para>The list of addresses to block. Each address should be entered on a
+    separate line.</para>
+  </entry>
+  <entry id="filters_rules">
+    <title>Rules: Filter Rules</title>
+    <para>This is the main rules screen. From here you can create new rules by
+    clicking on the "New Rule" button; rearrange the rule order by clicking on
+    the up and down arrows or entering new rule positions in the "Move" column;
+    enable and disable specific rules by clicking on the icon in the "Enabled"
+    column; and edit individual rules by clicking on the icon in the "Edit"
+    column or on the rule name.</para>
+    <para>
+      <tip>Please note, that the rules are executed in the order displayed
+      here. For example, if an email is deleted by the blacklist, the following
+      rules will not have any influence on this email.</tip>
+    </para>
+  </entry>
+  <entry id="forward">
+    <title>Forward</title>
+    <para>You may choose to automatically forward your incoming mail to a
+    number of other mail addresses.</para>
+  </entry>
+  <entry id="forward-addresses">
+    <title>Forward: Addresses</title>
+    <para>You may choose to have your incoming mail redirected to another
+    account. You may enter as many addresses as you like. Enter each address on
+    a new line.</para>
+  </entry>
+  <entry id="forward-keepcopy">
+    <title>Forward: Keep Copy</title>
+    <para>If you select this option, a copy of your incoming messages will be
+    saved in this account as well as being sent to the addresses to which you
+    have your mail forwarded.</para>
+  </entry>
+  <entry id="pref-show_filter_msg">
+    <title>Preference: Show detailed filter status messages?</title>
+    <para>If using the IMAP filtering driver, this preference controls how
+    verbose the filtering process is. If set to yes, every message filtered
+    will result in a separate notification message output to the screen
+    immediately after the message is processed. If set to no, only a summary of
+    filter actions will be output to the screen.</para>
+  </entry>
+  <entry id="pref-filter_seen">
+    <title>Preference: Filter only [un]seen messages?</title>
+    <para>This preference identifies when the IMAP filtering driver will
+    attempt to apply rules to the INBOX. You can either apply filters to all
+    messages, apply filters ONLY to messages that are marked unseen, or apply
+    filters ONLY to message that have been marked seen.</para>
+  </entry>
+  <entry id="rule">
+    <title>Filter Rule</title>
+    <para>A rule is the basic building block of your mail filters, it consists
+    of one or more conditions and one or more actions. When a message is sent
+    to you, it is processed through the conditions of your filter rules, if the
+    conditions that you specify are met, then the actions that you specify will
+    be performed on that message. Filters can be very useful for automatically
+    deleting unwanted mail, or making your mail account more managable by
+    storing related messages into different folders.</para>
+  </entry>
+  <entry id="rule-action">
+    <title>Filter Rule: Action</title>
+    <para>These are the possible actions to take if an incoming message matches
+    the specified conditions. Note that all of these options may not be
+    available to you - only the options that work with the underlying filtering
+    software will be shown.</para>
+    <heading>Deliver this message into my INBOX</heading>
+    <para>The message will be saved in your INBOX. This is the default
+    option.</para>
+    <heading>Deliver to this mailbox</heading>
+    <para>The message will be delivered to the specified folder.</para>
+    <heading>Discard this message</heading>
+    <para>The message will be silently deleted. Neither you nor the sender will
+    receive notification that this has happened.</para>
+    <heading>Redirect this message to</heading>
+    <para>The message will be sent to the email address that you specify. No
+    copy of the message will remain in this account.</para>
+    <heading>Deliver to my INBOX and redirect to</heading>
+    <para>The message will be sent to the email address that you specify, and a
+    copy of the message will remain in your INBOX.</para>
+    <heading>Reject this message with reason</heading>
+    <para>The original message will be discarded, and a new message will be
+    sent to the sender with the text that you specify.</para>
+  </entry>
+  <entry id="rule-combine">
+    <title>Filter Rule: Combine Options</title>
+    <para>You may define multiple conditions within a single rule. You may
+    group them together logically using "and"/"or". You may not create complex
+    filters containg both types of conditions.</para>
+    <heading>And</heading>
+    <para>If you select AND, an incoming message must match every condition
+    that you specify in order for the actions to be executed.</para>
+    <heading>Or</heading>
+    <para>If you select OR, the specified actions will be executed if at least
+    one of the conditions is met.</para>
+  </entry>
+  <entry id="rule-mark">
+    <title>Filter Rule: Mark Message</title>
+    <para>You may specify marking a message with one or more IMAP flags as one
+    of the actions in a rule. The possible values are Seen, Flagged For Followup,
+    Answered, and Deleted.</para>
+  </entry>
+  <entry id="rule-matches">
+    <title>Filter Rule: Matches</title>
+    <para>There are 3 components to each condition in a rule. The first is the
+    field to examine. The second is the type of comparison to perform. The
+    third is the value to which the field should be compared. There are a few
+    different types of comparisons that can be performed. The comparisons
+    available for any given field will depend on both the type of the field and
+    what the underlying filtering software can handle. Thus, all potential
+    matching options listed below may not appear for a given field.</para>
+    <heading>Contains</heading>
+    <para>Will be considered to be true if the specified string is found
+    anywhere on the line. Example: user@example would match
+    joe_user@example.com</para>
+    <heading>Doesn't Contain</heading>
+    <para>Will be considered to be true if the specified string is not found
+    anywhere on the line. Example: user@example would not match
+    joe_user@example.com</para>
+    <heading>Is</heading>
+    <para>Will be considered to be true if the specified string matches the
+    line exactly. Example: user@example.com is user@example.com</para>
+    <heading>Isn't</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the line exactly. Example: user@example is not user@example.com</para>
+    <heading>Begins with</heading>
+    <para>Will be considered to be true if the specified string matches the
+    beginning of the line. Example: user@example will match
+    user@example.com</para>
+    <heading>Doesn't begin with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the beginning of the line. Example: user@example.com will not match
+    user@example</para>
+    <heading>Ends with</heading>
+    <para>Will be considered to be true if the specified string matches the end
+    of the line. Example: example.com will match user@example.com</para>
+    <heading>Doesn't end with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the end of the line. Example: horde.org will not match
+    user@example.com</para>
+    <heading>Exists</heading>
+    <para>Will be considered to be true if the specified header exists in the
+    message, regardless of what its value is.</para>
+    <heading>Doesn't Exist</heading>
+    <para>Will be considered to be true if the specified header does not exist
+    in the message.</para>
+    <heading>Regex</heading>
+    <para>Regex allows you to use complex POSIX compatible regular expressions
+    to compare against message headers. Example: "Received from [*\.*\.*\.*] by
+    (hosta|hostb).example.com*" would match "Received from [172.16.100.1] by
+    hosta.example.com on Tuesday"</para>
+    <heading>Matches</heading>
+    <para>Matches is similar to contains, with the exception that you may use *
+    and ? as wildcards. An * will match any number of characters, and a ? will
+    match exactly one charater. Example: "*user?@example.com" will match both
+    "user1@example.com" and "otheruser2@example.com"</para>
+    <heading>Doesn't match</heading>
+    <para>Doesn't match is the same as matches except that it will evaluate to
+    false if the specified value matches the string in the message
+    header.</para>
+    <heading>Less than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Less than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+  </entry>
+  <entry id="rule-name">
+    <title>Filter Rule: Name</title>
+    <para>This is a descriptive name for a rule. You may use it to identify a
+    rule in your filter listing.</para>
+  </entry>
+  <entry id="rule-stop">
+    <title>Filter Rule: Stop Checking</title>
+    <para>If this option is checked, and a message matches this rule, the
+    remaining filters will not be processed.</para>
+  </entry>
+  <entry id="vacation">
+    <title>Vacation</title>
+    <para>Vacation messages are automatic responses sent to people when they
+    email you. They are normally used when you are away for a long period of
+    time.</para>
+  </entry>
+  <entry id="vacation-period">
+     <title>Vacation: Period</title>
+     <para>Vacation messages will only be sent during the period of time that
+     you are on vacation.</para>
+  </entry>
+  <entry id="vacation-bulk">
+    <title>Vacation: No Respond to Bulk</title>
+    <para>Checking this option will cause vacation responses to not be sent to
+    messages that appear to come from mailing lists or that are marked as bulk
+    mail.</para>
+  </entry>
+  <entry id="vacation-days">
+    <title>Vacation: Reply Interval</title>
+    <para>This is the number of days to wait before sending an autoresponse to
+    an address that has already received one.</para>
+  </entry>
+  <entry id="vacation-myemail">
+    <title>Vacation: My Email Addresses</title>
+    <para>If you have more than one email address coming to this mailbox then
+    specify them here.</para>
+  </entry>
+  <entry id="vacation-noresponse">
+    <title>Vacation: No Responses</title>
+    <para>Don't send the vacation message to these recipients. Each address
+    should be on its own line.</para>
+  </entry>
+  <entry id="vacation-reason">
+    <title>Vacation: Vacation Reason</title>
+    <para>This is the text that will be sent in your vacation responses.</para>
+  </entry>
+  <entry id="vacation-subject">
+    <title>Vacation: Vacation Subject</title>
+    <para>This is the subject that will be used for vacation responses.</para>
+  </entry>
+  <entry id="whitelist">
+    <title>Whitelist</title>
+    <para>The whitelist is a list of (legitimate) email addresses that you
+    always wish to see in your INBOX. Each address should be entered on a
+    separate line.</para>
+  </entry>
+  <entry id="whitelist-addresses">
+    <title>Whitelist: Addresses</title>
+    <para>TODO. Each address should be entered on a separate line.</para>
+  </entry>
+  <entry id="spam-level">
+    <title>Spam Filtering: Spam Level</title>
+    <para>The system will consider messages with a likely spam score greater
+    than or equal to the number entered here as spam.</para>
+    <para>Lower numbers will catch more messages, with the drawback that there
+    is a greater chance of catching real messages.  "5" is a typical value
+    if your system is using SpamAssassin.</para>
+  </entry>
+  <entry id="spam-folder">
+    <title>Spam Filtering: Folder to receive spam</title>
+    <para>The system will file messages which it determines to be spam into
+    this folder.</para>
+  </entry>
+</help>
diff --git a/ingo/locale/es_ES/LC_MESSAGES/ingo.mo b/ingo/locale/es_ES/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..1dd7320
Binary files /dev/null and b/ingo/locale/es_ES/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/es_ES/help.xml b/ingo/locale/es_ES/help.xml
new file mode 100644 (file)
index 0000000..3c82a70
--- /dev/null
@@ -0,0 +1,286 @@
+<?xml version="1.0"?>
+<!-- $Horde: ingo/locale/es_ES/help.xml,v 1.7 2008/02/19 22:28:03 jan Exp $ -->
+<help>
+       <entry id="blacklist" md5="5c12e162f66f68c6c2d84cc7c280d710" state="uptodate">
+               <title>Lista negra</title>
+               <para>La lista negra es un listado de direcciones de las que no desea ver mensajes en el buz&#xF3;n de Entrada.</para>
+       </entry>
+       <entry id="blacklist-action" md5="1701f4152c090004e3b40205439f9108" state="uptodate">
+               <title>Lista negra: Acci&#xF3;n</title>
+               <para>Esta acci&#xF3;n define qu&#xE9; hacer al recibir un mensaje de un remitente bloqueado. Los valores posibles son "eliminar" o "trasladar a carpeta". Si se selecciona "eliminar", los mensajes se descartar&#xE1;n antes de almacenarlos en el buz&#xF3;n de Entrada. Si se selecciona "trasladar a carpeta", se almacenar&#xE1;n en la carpeta seleccionada.</para>
+       </entry>
+       <entry id="blacklist-addresses" md5="3431e98a8d15bfa645af394cefd8346d" state="uptodate">
+               <title>Lista negra: Direcciones</title>
+               <para>La lista de direcciones bloqueadas. Hay que introducir cada direcci&#xF3;n en una l&#xED;nea distinta.</para>
+       </entry>
+       <entry id="filters_rules" md5="d84617a2f5002d24ef11509e5f4eb6c0" state="uptodate">
+               <title>Filtros: Reglas</title>
+               <para>Esta es la pantalla principal de reglas. Aqu&#xED; se pueden crear reglas pulsando el bot&#xF3;n "Nueva regla"; reorganizar el orden de aplicaci&#xF3;n de las reglas pulsando las flechas hacia arriba y hacia abajo o introduciendo nuevas posiciones de las reglas en la columna "Trasladar"; activar o desactivar reglas espec&#xED;ficas pulsando el icono de la columna "Activado" y modificar reglas individuales pulsando el icono de la columna "Modificar" o el nombre de la regla.</para>
+               <para>
+                       <tip>Tenga en cuenta que las reglas se ejecutan en el orden que se muestra aqu&#xED;. Por ejemplo, si se borra un mensaje a causa de la lista negra, las reglas que sigan ya no actuar&#xE1;n en dicho mensaje</tip>
+               </para>
+       </entry>
+       <entry id="forward" md5="c9664b960ceef87cab4af83e8f33412c" state="uptodate">
+               <title>Reenviar</title>
+               <para>
+                       Puede optar por reenviar de forma autom&#xE1;tica su correo entrante a una serie de direcciones de correo electr&#xF3;nico.
+               </para>
+       </entry>
+       <entry id="forward-addresses" md5="817c5f002f99c0afd0010aabaf07c91c" state="uptodate">
+               <title>Reenviar: Direcciones</title>
+               <heading>Reenviar: Direcciones</heading>
+               <para>
+                       Puede optar por reenviar el correo entrante a otra cuenta. Puede introducir tantas direcciones como desee, cada una en una l&#xED;nea distinta.
+               </para>
+       </entry>
+       <entry id="forward-keepcopy" md5="be1f36c2f9a8dcba7517b8edf5319d64" state="uptodate">
+               <title>Reenviar: Conservar una copia</title>
+               <heading>Reenviar: Conservar una copia</heading>
+               <para>
+                       Si activa esta opci&#xF3;n, se conservar&#xE1; una copia de los mensajes entrantes en esta cuenta al tiempo que se env&#xED;an a las direcciones a las que desea reenviarlos.
+               </para>
+       </entry>
+       <entry id="pref-show_filter_msg" md5="d8795e5b71c6287ed7bfe3f8dc4f4861" state="uptodate">
+               <title>Preferencias: &#xBF;Mostrar avisos detallados al aplicar cada filtro?</title>
+               <para>
+                       Si se utiliza el driver IMAP de filtrado, esta preferencia controla c&#xF3;mo de informativo ser&#xE1; el proceso de filtrado. Si se activa, se notificar&#xE1; por pantalla cada mensaje filtrado en cuanto se haya procesado. Si se desactiva, s&#xF3;lo se ver&#xE1; en la pantalla un resumen de las acciones de filtrado.
+               </para>
+       </entry>
+       <entry id="pref-filter_seen" md5="85687c69db6145d77053a8b6302e5ad2" state="uptodate">
+               <title>Preferencias: &#xBF;Filtrar s&#xF3;lo los mensajes [no] le&#xED;dos?</title>
+               <para>
+                       Esta preferencia identifica cu&#xE1;ndo el controlador de filtrado IMAP intentar&#xE1; aplicar reglas en el buz&#xF3;n de Entrada. Puede aplicar los filtros a todos los mensajes, S&#xD3;LO a aquellos marcados como no le&#xED;dos o S&#xD3;LO a aquellos que se han marcado como le&#xED;dos.
+               </para>
+       </entry>
+       <entry id="rule" md5="cf211ec97956e9adc3b8f01b2a40888f" state="uptodate">
+               <title>Regla de filtrado</title>
+               <para>
+                       Una regla es el bloque b&#xE1;sico de elaboraci&#xF3;n de sus filtros de correo, consiste en una o varias condiciones y una o varias acciones. Cuando se le env&#xED;a un mensaje, se procesa a trav&#xE9;s de las condiciones de las reglas de filtrado y si cumple alguna, se ejecutan las acciones indicadas en dicho mensaje, Los filtros pueden ser muy &#xFA;tiles para eliminar de forma autom&#xE1;tica correo no deseado o para facilitar la gesti&#xF3;n de su cuenta de correo almacenando los mensajes relacionados en carpetas distintas.
+               </para>
+       </entry>
+       <entry id="rule-action" md5="0f66574fec21645147b3cbb967cc23b1" state="uptodate">
+               <title>Regla de filtrado: Acci&#xF3;n</title>
+               <para>
+                       &#xC9;stas son las acciones que se pueden llevar a cabo si un mensaje entrante cumple la condici&#xF3;n indicada. Tenga en cuenta que puede que no todas estas opciones est&#xE9;n disponibles - s&#xF3;lo se mostrar&#xE1;n las opciones que funcionen con el software de filtrado utilizado.
+               </para>
+               <heading>Entregar en mi buz&#xF3;n de Entrada</heading>
+               <para>
+                       El mensaje se guardar&#xE1; en su buz&#xF3;n de Entrada. Es la opci&#xF3;n por omisi&#xF3;n.
+               </para>
+               <heading>Entregar en el buz&#xF3;n</heading>
+               <para>
+                       El mensaje se almacenar&#xE1; en la carpeta indicada.
+               </para>
+               <heading>Eliminar completamente el mensaje</heading>
+               <para>
+                       Se eliminar&#xE1; silenciosamente el mensaje. Ni usted ni el remitente recibir&#xE1;n notificaci&#xF3;n alguna de que ha sucedido.
+               </para>
+               <heading>Redirigir a</heading>
+               <para>
+                       El mensaje se reenviar&#xE1; a la direcci&#xF3;n especificada. No se conservar&#xE1; copia alguna del mensaje en esta cuenta.
+               </para>
+               <heading>Entregar en mi buz&#xF3;n de Entrada y redirigir a</heading>
+               <para>
+                       El mensaje se enviar&#xE1; a la direcci&#xF3;n especificada y se conservar&#xE1; una copia en su buz&#xF3;n de Entrada.
+               </para>
+               <heading>Rechazar con motivo</heading>
+               <para>
+                       El mensaje original se eliminar&#xE1; y se enviar&#xE1; un mensaje nuevo al remitente con el texto que indique.
+               </para>
+       </entry>
+       <entry id="rule-combine" md5="29484c1ebdd7ce71edc34fc8100ef69c" state="uptodate">
+               <title>Regla de filtrado: Combinar opciones</title>
+               <para>
+                       Puede definir varias condiciones en una misma regla. Puede agruparlas de forma l&#xF3;gica mediante "Y"/"O", No puede crear filtros complejos que contengan ambos tipos de condiciones.
+               </para>
+               <heading>Y</heading>
+               <para>
+                       Si selecciona Y, un mensaje entrante tiene que cumplir todas y cada una de las condiciones que especifique para que se ejecuten las acciones.
+               </para>
+               <heading>O</heading>
+               <para>
+                       Si seleccion O, las acciones indicadas se ejecutar&#xE1;n si se cumple al menso una de las condiciones.
+               </para>
+       </entry>
+       <entry id="rule-mark" md5="e8bdb30d1c1c1cdc5ec1e5e4804f9300" state="uptodate">
+               <title>Regla de filtrado: Se&#xF1;alar mensaje</title>
+               <para>
+                       Como una de las acciones de una regla, puede indicar que se se&#xF1;ale un mensaje con uno o m&#xE1;s de los marcadores IMAP. Los valores posibles son Continuaci&#xF3;n, Respondido y Eliminado.
+               </para>
+       </entry>
+       <entry id="rule-matches" md5="517e24971f2c5443b2ed04e9c504e7eb" state="uptodate">
+               <title>Regla de filtrado: Coincidencia</title>
+               <para>
+                       En cada condici&#xF3;n de una regla hay tres componentes. El primero en el campo que hay que examinar. El segundo es el tipo de comparaci&#xF3;n a realizar. El tercero es el valor con el que hay que comparar el campo.
+                       Existen varios tipos distintos de comparaciones realizables. Las comparaciones disponibles para cada campo dependen tanto del tipo de campo como de lo que pueda manejar el software utilizado. Por ello no todas las siguientes posibles opciones de coincidencia aparecer&#xE1;n en un campo determinado.
+               </para>
+               <heading>Contiene</heading>
+               <para>
+                       Se considerar&#xE1; cierto si se localiza la cadena indicada en cualquier parte de la l&#xED;nea.
+                       Ejemplo: jose_usuario@ejemplo.com contiene usuario@ejemplo
+               </para>
+               <heading>No contiene</heading>
+               <para>
+                       Se considerar&#xE1; cierto si la cadena indicada no se encuentra en ninguna parte de la l&#xED;nea.
+                       Ejemplo: jose@ejemplo.com no contiene usuario@ejemplo
+               </para>
+               <heading>Es</heading>
+               <para>
+                       Se considerar&#xE1; cierto si la cadena indicada coincide exactamente con la l&#xED;nea.
+                       Ejemplo: usuario@ejemplo es usuario@ejemplo
+               </para>
+               <heading>No es</heading>
+               <para>
+                       Se considerar&#xE1; cierto si la cadena indicada no coincide exactamente con la l&#xED;nea.
+                       Ejemplo: usuario@ejemplo no es usuario@ejemplo.com
+               </para>
+               <heading>Empieza por</heading>
+               <para>
+                       Se considerar&#xE1; cierto si la cadena indicada coincide con el comienzo de la l&#xED;nea.
+                       Ejemplo: usuario@ejemplo.com Empieza por usuario@ejemplo
+               </para>
+               <heading>No empieza por</heading>
+               <para>
+                       Se considerar&#xE1; cierto si la cadena indicada no coincide con el comienzo de la l&#xED;nea.
+                       Ejemplo: jose@ejemplo.com No empieza por usuario@ejemplo
+               </para>
+               <heading>Termina por</heading>
+               <para>
+                       Se considerar&#xE1; cierto si la cadena indicada coincide con el final de la l&#xED;nea.
+                       Ejemplo: usuario@ejemplo Termina por @ejemplo
+               </para>
+               <heading>No termina por</heading>
+               <para>
+                       Se considerar&#xE1; cierto si la cadena indicada no coincide con el final de la l&#xED;nea.
+                       Ejemplo: usuario@ejemplo No termina por @ejemplo.com
+               </para>
+               <heading>Existe</heading>
+               <para>
+                       Se considerar&#xE1; cierto si la cadena indicada existe en el mensaje, independientemente de lo que contenga.
+               </para>
+               <heading>No existe</heading>
+               <para>
+                       Se considerar&#xE1; cierto si la cadena indicada no existe en el mensaje.
+               </para>
+               <heading>Regex</heading>
+               <para>
+                       Le permite utilizar en las comparaciones de las cabeceras expresiones regulares compatibles POSIX complejas.
+                       Ejemplo: "Recibido desde [*\.*\.*\.*] por (anfitrion-a|anfitrion-b).ejemplo.com*" se cumplir&#xE1; con "Recibido desde [172.16.100.1] por anfitrion-a.ejemplo.com el Martes"
+               </para>
+               <heading>Coincide</heading>
+               <para>
+                       Coincide es parecido a Contiene con la excepci&#xF3;n de que pueden utilizarse * y ? como comodines. Un * sustituir&#xE1; cualquier n&#xFA;mero de caracteres y una ? sustituir&#xE1; exactamente uno.
+                       Ejemplo: "*usuario?@ejemplo.com" se cumplir&#xE1; tanto con "usuario1@ejemplo.com" como con "otrousuario2@ejemplo.com"
+               </para>
+               <heading>No coincide</heading>
+               <para>
+                       No coincide es lo mismo que Coincide excepto por que ser&#xE1; falso si el valor indicado coincide con la cadena de la cabecera del mensaje.
+               </para>
+               <heading>Menor que</heading>
+               <para>
+                       &#xC9;sta es una prueba relacional que compara num&#xE9;ricamente el valor indicado y el valor de la cabecera del mensaje.
+               </para>
+               <heading>Menor o igual que</heading>
+               <para>
+                       &#xC9;sta es una prueba relacional que compara num&#xE9;ricamente el valor indicado y el valor de la cabecera del mensaje.
+               </para>
+               <heading>Igual que</heading>
+               <para>
+                       &#xC9;sta es una prueba relacional que compara num&#xE9;ricamente el valor indicado y el valor de la cabecera del mensaje.
+               </para>
+               <heading>Mayor o igual que</heading>
+               <para>
+                       &#xC9;sta es una prueba relacional que compara num&#xE9;ricamente el valor indicado y el valor de la cabecera del mensaje.
+               </para>
+               <heading>Mayor que</heading>
+               <para>
+                       &#xC9;sta es una prueba relacional que compara num&#xE9;ricamente el valor indicado y el valor de la cabecera del mensaje.
+               </para>
+       </entry>
+       <entry id="rule-name" md5="8faaf71e4bf2f91d943d77f803f9a2d5" state="uptodate">
+               <title>Regla de filtrado: Nombre</title>
+               <para>
+                       Se trata de un nombre descriptivo de una regla. Puede usarlo para identificar una regla determinada en su listado de filtros.
+               </para>
+       </entry>
+       <entry id="rule-stop" md5="677c920effca959123b7d539b3b0d864" state="uptodate">
+               <title>Regla de filtrado: Detener comprobaci&#xF3;n</title>
+               <para>
+                       Si se activa esta opci&#xF3;n y un mensaje cumple la regla, el resto de los mensajes no se procesar&#xE1;n.
+               </para>
+       </entry>
+       <entry id="vacation" md5="2c9e12973d36fe94aeb73b32db9a64e6" state="uptodate">
+               <title>Ausencia</title>
+               <para>
+                       Los mensajes de ausencia son respuestas autom&#xE1;ticas enviadas a la gente que le env&#xED;e correo. Normalmente se utilizan cuando va a estar ausente por un largo periodo de tiempo.
+               </para>
+       </entry>
+       <entry id="vacation-period" state="uptodate" md5="531accb93b707d39b2986a779b260dbf">
+               <title>Vacation Period</title>
+               <para>Vacation messages will only be sent during the period of time that you are on vacation.</para>
+       </entry>
+       <entry id="vacation-bulk" md5="6f6e4178e80f46e7876c7ee5d0ac53b7" state="uptodate">
+               <title>Ausencia: No responder a granel</title>
+               <para>
+                       Activando esta opci&#xF3;n las respuestas por ausencia no se enviar&#xE1;n con mensajes que parezcan proceder de listas de correo o que est&#xE9;n marcados como correo a granel.
+               </para>
+       </entry>
+       <entry id="vacation-days" md5="25ba74c0e79ce72237795eb809ee4585" state="uptodate">
+               <title>Ausencia: Intervalo de respuesta</title>
+               <para>
+                       Es el n&#xFA;mero de d&#xED;as a esperar antes de volver a enviar una respuesta autom&#xE1;tica a una direcci que ya haya recibido una.
+               </para>
+       </entry>
+       <entry id="vacation-myemail" md5="ef3fa70e940ed1472276c0fde5ae2aed" state="uptodate">
+               <title>Ausencia: Mis direcciones de correo</title>
+               <para>
+                       Si tiene m&#xE1;s de una direcci&#xF3;n de correo asignadas a este buz&#xF3;n, ind&#xED;quelas aqu&#xED;.
+               </para>
+       </entry>
+       <entry id="vacation-noresponse" md5="2b72e12b6989c9ef1667a59040c70310" state="uptodate">
+               <title>Ausencia: Sin respuestas</title>
+               <para>
+                       No enviar la notificaci&#xF3;n de ausencia a estos destinatarios. Cada direcci&#xF3;n debe estar en una l&#xED;nea distinta.
+               </para>
+       </entry>
+       <entry id="vacation-reason" md5="d4da2f3a0d357e00950ec57d984cbcee" state="uptodate">
+               <title>Ausencia: Motivo de la ausencia</title>
+               <para>
+                       Es el texto que se enviar&#xE1; en sus notificaciones de ausencia.
+               </para>
+       </entry>
+       <entry id="vacation-subject" md5="ce16c7c6a08993821208cfbee0b188a0" state="uptodate">
+               <title>Ausencia: Asunto de la ausencia</title>
+               <para>
+                       Es el asunto que se utilizar&#xE1; en las notificaciones de ausencia.
+               </para>
+       </entry>
+       <entry id="whitelist" md5="ecbf7000f107832d68bd7ba8f5121909" state="uptodate">
+               <title>Lista blanca</title>
+               <heading>Lista blanca</heading>
+               <para>
+                       La lista blanca es un listado de direcciones (leg&#xED;timas) de las que siempre desea poder ver los mensajes en el buz&#xF3;n de Entrada. Cada direcci&#xF3;n debe incluirse en una l&#xED;nea distinta.
+               </para>
+       </entry>
+       <entry id="whitelist-addresses" md5="8fe054c1b55e6adc81d1d8525c131637" state="uptodate">
+               <title>Lista blanca: Direcciones</title>
+               <para>
+                       PENDIENTE. Cada direcci&#xF3;n debe incluirse en una l&#xED;nea distinta.
+               </para>
+       </entry>
+       <entry id="spam-level" state="uptodate" md5="6f00c30a45b0acaef4ae9dba56d58013">
+               <title>Filtrado de Spam: Nivel de Spam</title>
+               <para>
+                       El sistema considerar&#xE1; como spam los mensajes con una puntuaci&#xF3;n de spam mayor o igual al n&#xFA;mero introducido aqu&#xED;.
+               </para>
+               <para>
+                       N&#xFA;meros m&#xE1;s reducidos interceptar&#xE1;n m&#xE1;s mensajes con el inconveniente de que hay mayores posibilidades de interceptar mensajes reales. "5" es un valor t&#xED;pico si su sistema utiliza SpamAssassin.
+               </para>
+       </entry>
+       <entry id="spam-folder" state="uptodate" md5="1639e6d1cfcd6706f93920f2c63f4a00">
+               <title>Filtrado de Spam: Carpeta en la que almacenar el spam</title>
+               <para>
+                       El sistema archivar&#xE1; los mensajes determinados como spam en esta carpeta.
+               </para>
+       </entry>
+</help>
diff --git a/ingo/locale/et_EE/LC_MESSAGES/ingo.mo b/ingo/locale/et_EE/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..590c202
Binary files /dev/null and b/ingo/locale/et_EE/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/eu_ES/LC_MESSAGES/ingo.mo b/ingo/locale/eu_ES/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..e11407f
Binary files /dev/null and b/ingo/locale/eu_ES/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/eu_ES/help.xml b/ingo/locale/eu_ES/help.xml
new file mode 100644 (file)
index 0000000..f5132a1
--- /dev/null
@@ -0,0 +1,53 @@
+<?xml version="1.0"?>
+<!-- $Horde: ingo/locale/eu_ES/help.xml,v 1.1 2008/07/17 21:07:11 jan Exp $ -->
+<help><entry id="blacklist" md5="5c12e162f66f68c6c2d84cc7c280d710" state="uptodate">
+    <title>Zerrenda beltza</title>
+    <para>SARRERAKO ONTZIAn ikusi nahi ez dituzun helbide elektronikoen zerrenda bat da zerrenda beltza.</para></entry> <entry id="blacklist-action" md5="1701f4152c090004e3b40205439f9108" state="uptodate">
+    <title>Zerrenda beltza: Ekintza</title>
+    <para>Blokeatutako bidaltzaile batek mezu bat bidaltzen dizunean zer egin behar den definitzen du ekintza honek. Aukerak hauek dituzu: "Ezabatu mezua erabat" edo "Eraman mezuak karpeta honetara:". "Ezabatu mezua erabat" hautatuz gero, mezuak baztertu egingo dira Sarrerako ontzian gorde baino lehen. "Eraman mezuak karpeta honetara:" hautatuz gero, hautatutako karpetara mugituko dira.</para></entry> <entry id="blacklist-addresses" md5="3431e98a8d15bfa645af394cefd8346d" state="uptodate">
+    <title>Zerrenda beltza: Helbideak</title>
+    <para>Blokeatu behar diren helbideen zerrenda da. Lerro batean helbide bakarra idatzi.</para></entry> <entry id="filters_rules" md5="d84617a2f5002d24ef11509e5f4eb6c0" state="uptodate">
+    <title>Arauak: Iragazteko arauak</title>
+    <para>Arauen pantaila nagusia da. Hemendik arau berriak sor ditzakezu "Arau berria" botoian klik eginez; arauen ordena berrantolatu gora eta behera gezien bidez edo "Lekuz aldatu" zutabean posizio-arau berria sartuz; arauak gaitu edo desgaitu "Gaituta" zutabeko ikonoan klik eginez, eta arau zehatzak editatu "Editatu" zutabeko ikonoan edo arauaren izenaren ikonoan klik eginez.</para> <para><tip>Kontuan izan arauak hemen bistaratzen diren ordenan exekutatzen direla. Adibidez, zerrenda beltzak mezu bat ezabatzen badu, hurrengo arauek ez dute inolako eraginik izango mezu horretan.</tip></para></entry> <entry id="forward" md5="c9664b960ceef87cab4af83e8f33412c" state="uptodate">
+    <title>Birbidali</title>
+    <para>Iritsitako mezuak helbide elektroniko batzuetara automatikoki birbidaltzea aukera dezakezu.</para></entry> <entry id="forward-addresses" md5="817c5f002f99c0afd0010aabaf07c91c" state="uptodate">
+    <title>Birbidali: Helbideak</title>
+    <para>Iristen zaizkizun mezuak beste kontu batera birbidaltzea aukera dezakezu. Nahi beste helbide jar ditzakezu. Lerro batean helbide bakarra idatzi.</para></entry> <entry id="forward-keepcopy" md5="be1f36c2f9a8dcba7517b8edf5319d64" state="uptodate">
+    <title>Birbidali: Gorde kopia bat</title>
+    <para>Aukera hau hautatzen baduzu iristen zaizkizun mezuen kopiak kontu horretan gordeko dira, eta era berean, mezu horiek birbidali nahi dituzun helbideetara ere bidaliko dira.</para></entry> <entry id="pref-show_filter_msg" md5="d8795e5b71c6287ed7bfe3f8dc4f4861" state="uptodate">
+    <title>Hobespena: Erakutsi mezu xehatuak iragazkiak aplikatzean?</title>
+    <para>IMAP iragazte-kontrolatzailea erabiliz gero, hobespen honek iragazkien prozesuaren xehetasuna kontrolatzen du. Ezarrita badago, iragazitako mezu guztiak beste berrespen mezu batean egongo dira, mezua prozesatu ondoren. Ez badago ezarrita, iragazkien laburpena egongo da pantailan.</para></entry> <entry id="pref-filter_seen" md5="85687c69db6145d77053a8b6302e5ad2" state="uptodate">
+    <title>Hobespena: Ikusi gabeko mezuak iragazi soilik?</title>
+    <para>IMAP iragazte-kontrolatzaileak arau horiek zure SARRERAKO ONTZIAn noiz aplikatuko dituen identifikatzen du arau honek. Iragazkiak mezu guztietan, ikusi gabe gisa markatuta dauden mezuetan SOILIK edo ikusitako gisa markatutako mezuetan SOILIK aplika ditzakezu.</para></entry> <entry id="rule" md5="cf211ec97956e9adc3b8f01b2a40888f" state="uptodate">
+    <title>Iragazteko araua</title>
+    <para>Arau bat zure posta-iragazkiaren oinarrizko atala da, eta baldintza edo ekintza batean edo gehiagotan oinarritzen da. Mezu bat bidaltzen dizutenean, zure iragazki-arauetako baldintzen bidez prozesatzen da. Zuk zehaztutako baldintzak betetzen badira, zuk zehaztutako ekintzak mezu horretan egingo dira. Iragazkiak erabilgarriak izan daitezke nahi ez dituzun mezuak automatikoki ezabatzeko edo posta-kontua errazago erabiltzeko, mezuak hainbat karpetatan gordez.</para></entry> <entry id="rule-action" md5="0f66574fec21645147b3cbb967cc23b1" state="uptodate">
+    <title>Iragazteko araua: Ekintza</title>
+    <para>Iritsitako mezu bat zehaztutako baldintzekin bat datorrenean, hauek dira egin daitezkeen ekintzak. Kontuan izan ez dituzula aukera hauek guztiak eskuragarri izango - mendeko iragazki-softwarearekin funtzionatzen duten aukerak erakutsiko dira soilik.</para> <heading>Bidali mezu hau SARRERAKO ONTZIra</heading> <para>Mezua zure SARRERAKO ONTZIAn gordeko da. Hau da aukera lehenetsia.</para> <heading>Bidali postontzi honetara</heading> <para>Mezua zehaztutako karpetara bidaliko da.</para> <heading>Baztertu mezu hau</heading> <para>Mezua ezer esan gabe ezabatuko da. Ez zuk, ez bidaltzaileak, ez duzue horren berri izango.</para> <heading>Birbideratu mezua</heading> <para>Mezua zuk zehaztutako helbide elektronikora bidaliko da. Ez da mezuaren kopiarik gordeko kontu honetan.</para> <heading>Bidali SARRERAKO ONTZIra eta birbidali</heading> <para>Mezua zehaztutako helbide elektronikora bidaliko da, eta mezuaren kopia SARRERAKO ONTZIAn gordeko da.</para> <heading>Ezetsi mezu hau arrazoiarekin</heading> <para>Jatorrizko mezua baztertu egingo da, eta mezu berri bat bidaliko diozu bidaltzaileari zuk zehaztutako testuarekin.</para></entry> <entry id="rule-combine" md5="29484c1ebdd7ce71edc34fc8100ef69c" state="uptodate">
+    <title>Iragazteko araua: Konbinatu aukerak</title>
+    <para>Arau batean baldintza asko defini ditzakezu. Logikoki batera taldeka ditzakezu "eta"/"edo" erabiliz. Ezin duzu bi baldintzak dauzkan iragazki konplexurik sortu.</para> <heading>Eta</heading> <para>ETA hautatzen baduzu, iristen den mezu batek zuk zehaztutako baldintza guztiak bete behar ditu, ekintzak exekutatzeko.</para> <heading>Edo</heading> <para>EDO hautatzen baduzu, zehaztutako ekintzak exekutatuko dira, gutxienez, baldintzetako bat betetzen bada.</para></entry> <entry id="rule-mark" md5="e8bdb30d1c1c1cdc5ec1e5e4804f9300" state="uptodate">
+    <title>Iragazteko araua: Markatu mezua</title>
+    <para>Mezu bat IMAP bandera bat baino gehiagorekin markatzea zehatz dezakezu, arau batean ekintza bat baino gehiago egiteko. Aukerak hauek dira: Ikusita, Garrantzitsua, Erantzunda eta Ezabatuta.</para></entry> <entry id="rule-matches" md5="517e24971f2c5443b2ed04e9c504e7eb" state="uptodate">
+    <title>Iragazteko araua: Bat-etortzeak</title>
+    <para>Arau bateko baldintza bakoitzean 3 osagai daude. Lehena aztertu behar den eremua da. Bigarrena egin behar den konparazio mota da. Hirugarrenak eremua zein baliorekin konparatu behar den zehazten du. Konparazio mota batzuk egin daitezke. Edozein eremutako konparazio erabilgarriak eremu motaren eta azpiko iragazki-softwareak maneia dezakeenaren mende daude. Beraz, behean zerrendatuta dauden bat-etortze potentzial guztiak ez dira agertuko eremuan.</para> <heading>Dauka</heading> <para>Egiatzat joko da, zehaztutako katea lerroan zehar, nonbait, aurkitzen bada. Adibidea: erabiltzailea@adibidea bat etor daiteke joe_erabiltzailea@adibidea.com helbidearekin</para> <heading>Ez dauka</heading> <para>Egiatzat joko da zehaztutako katea ez bada lerroan zehar inon aurkitzen. Adibidea: erabiltzailea@adibidea ez dator bat joe_user@adibidea.com helbidearekin</para> <heading>Bada</heading> <para> Egiatzat joko da zehaztutako katea lerroarekin bat badator zehatz-mehatz. Adibidea: erabiltzailea@adibidea.com erabiltzailea@adibidea.com helbidea da</para> <heading>Ez da</heading> <para>Egiatzat joko da zehaztutako katea ez badator bat zehatz-mehatz lerroarekin. Adibidea: erabiltzailea@adibidea ez da erabiltzailea@adibidea.com helbidea</para> <heading>Honela hasten da</heading> <para>Egiatzat joko da zehaztutako katea lerroaren hasierarekin bat etortzen bada. Adibidea: erabiltzailea@adibidea erabiltzailea@adibidea.com helbidearekin bat etorriko da</para> <heading>Ez da honela hasten</heading> <para>Egiatzat joko da zehaztutako katea ez badator bat lerroaren hasierarekin. Adibidea: erabiltzailea@adibidea ez da bat etorriko erabiltzailea@adibidea.com helbidearekin</para> <heading>Honela amaitzen da</heading> <para>Egiatzat joko da zehaztutako katea lerroaren amaierarekin bat datorrenean. Adibidea: adibidea.com bat etorriko da erabiltzailea@adibidea.com helbidearekin</para> <heading>Ez da honela amaitzen</heading> <para>Egiazkotzat joko da zehaztutako katea ez badator bat lerroaren amaierarekin. Adibidea: horde.org ez da bat etorriko erabiltzailea@adibidea.com helbidearekin</para> <heading>Badago</heading> <para>Egiatzat joko da zehaztutako goiburua mezuan badago, zein balio den kontuan hartu gabe.</para> <heading>Ez dago</heading> <para>Egiatzat joko da zehaztutako goiburua mezuan ez badago.</para> <heading>Regex</heading> <para>Regex-en bidez, POSIX adierazpen erregular bateragarri konplexuak erabil ditzakezu mezuaren goiburua hautatzeko. Adibidea: "Bidaltzailea [*\.*\.*\.*] (a-ostalaria|b-ostalaria).adibidea.com*" eta "Bidaltzailea [172.16.100.1] a-ostalaria.adibide.com asteartean" bat etor daitezke</para> <heading>Bat datoz</heading> <para>Bat-etortzea eta edukia antzekoak dira, baina * eta ? komodinak ere erabil ditzakezu. * komodinak edozein karaktere kopururekin bat egiten du eta ? komodinak zehazki karaktere batekin egiten du bat. Adibidea: "*erabiltzailea?@adibidea.com" helbideak "erabiltzailea1@adibidea.com" eta "bestelakoerabiltzailea2@adibidea.com" helbideekin bat egingo du.</para> <heading>Ez dator bat</heading> <para>Ez dator bat, bat egitea bezalakoa da; baina kasu honetan faltsura aldatuko da, zehaztutako balioak mezuko goiburuarekin bat egiten badu.</para> <heading>Hau baino gutxiago</heading> <para>Hau proba erlazional bat da, zehaztutako balioa eta mezuko goiburuko balioa zenbakien arabera konparatuko dituena.</para> <heading>Txikiago edo berdin</heading> <para>Hau proba erlazional bat da, zehaztutako balioa eta mezuko goiburuko balioa zenbakien arabera konparatuko dituena.</para> <heading>Berdin</heading> <para>Proba erlazional bat da, zehaztutako balioa eta mezuko goiburuko balioa zenbakien arabera konparatuko dituena.</para> <heading>Hau baino handiagoa edo berdina</heading> <para>Proba erlazional bat da, zehaztutako balioa eta mezuko goiburuko balioa zenbakien arabera konparatuko dituena.</para> <heading>Hau baino handiagoa</heading> <para>Proba erlazional bat da, zehaztutako balioa eta mezuko goiburuko balioa zenbakien arabera konparatuko dituena.</para></entry> <entry id="rule-name" md5="8faaf71e4bf2f91d943d77f803f9a2d5" state="uptodate">
+    <title>Iragazteko araua: Izena</title>
+    <para>Arau baten izen deskriptiboa da. Izen deskriptiboa erabil dezakezu iragazki-zerrendan arau bat identifikatzeko.</para></entry> <entry id="rule-stop" md5="677c920effca959123b7d539b3b0d864" state="uptodate">
+    <title>Iragazteko araua: Utzi egiaztatzeari</title>
+    <para>Aukera hau hautatzen bada, eta mezuren bat arauarekin bat badator, gainerako iragazkiak ez dira prozesatuko.</para></entry> <entry id="vacation" md5="2c9e12973d36fe94aeb73b32db9a64e6" state="uptodate">
+    <title>Kanpoan</title>
+    <para>Kanpoan zaudenean, zuri mezua bidaltzen dizuten pertsonei automatikoki bidaltzen zaizkien mezuak dira. Aldi baterako kanpora joaten zarenean bidaltzen dira.</para></entry> <entry id="vacation-bulk" md5="6f6e4178e80f46e7876c7ee5d0ac53b7" state="uptodate">
+    <title>Kanpoan: Ez erantzun mezu baztergarriei</title>
+    <para>Aukera hau hautatuz gero, posta-zerrendetatik bidalitako edo mezu baztergarri gisa markatutako mezuei ez zaie kanpoan zaudela jakinarazteko mezurik bidaltzen.</para></entry> <entry id="vacation-days" md5="25ba74c0e79ce72237795eb809ee4585" state="uptodate">
+    <title>Kanpoan: Erantzuteko bitartea</title>
+    <para>Mezu bidez kanpoan zaudela jakinarazi diozun helbide elektronikoari, beste mezu bat bidaltzeko zenbat egun pasako diren zehaztea da.</para></entry> <entry id="vacation-myemail" md5="ef3fa70e940ed1472276c0fde5ae2aed" state="uptodate">
+    <title>Kanpoan: Nire helbide elektronikoak</title>
+    <para>Postontzi honetarako helbide elektroniko bat baino gehiago badituzu, zehaztu hemen zein diren.</para></entry> <entry id="vacation-noresponse" md5="2b72e12b6989c9ef1667a59040c70310" state="uptodate">
+    <title>Kanpoan: Erantzunik ez</title>
+    <para>Ez bidali kanpoan nagoela jakinarazteko mezurik hartzaile hauei. Lerro batean helbide elektroniko bakarra jarri.</para></entry> <entry id="vacation-reason" md5="d4da2f3a0d357e00950ec57d984cbcee" state="uptodate">
+    <title>Kanpoan: Kanpoan egoteko arrazoia</title>
+    <para>Hau da kanpoan zaudela jakinarazteko bidaltzen diren mezuetako testua.</para></entry> <entry id="vacation-subject" md5="ce16c7c6a08993821208cfbee0b188a0" state="uptodate">
+    <title>Kanpoan: Kanpoan zaudeneko gaia</title>
+    <para>Hau da kanpoan zaudela jakinarazteko bidaliko diren mezuetako gaia.</para></entry> <entry id="whitelist" md5="ecbf7000f107832d68bd7ba8f5121909" state="uptodate">
+    <title>Zerrenda zuria</title>
+    <para>Zerrenda zuria, zure SARRERAKO ONTZIAn beti ikusi nahi dituzun mezuen helbide elektronikoen zerrenda da. Lerro batean helbide bakarra idatzi.</para></entry> <entry id="whitelist-addresses" md5="8fe054c1b55e6adc81d1d8525c131637" state="uptodate">
+    <title>Zerrenda zuriko helbideak</title>
+    <para>EGITEKO. Lerro batean helbide bakarra idatzi.</para></entry></help>
diff --git a/ingo/locale/fi_FI/LC_MESSAGES/ingo.mo b/ingo/locale/fi_FI/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..bcd5eb8
Binary files /dev/null and b/ingo/locale/fi_FI/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/fi_FI/help.xml b/ingo/locale/fi_FI/help.xml
new file mode 100644 (file)
index 0000000..b4e1832
--- /dev/null
@@ -0,0 +1,275 @@
+<?xml version="1.0"?>
+<!-- $Horde: ingo/locale/fi_FI/help.xml,v 1.6 2008/02/22 13:35:45 jan Exp $ -->
+<help>
+  <entry id="blacklist" state="uptodate" md5="5c12e162f66f68c6c2d84cc7c280d710">
+    <title>Musta lista</title>
+    <para>
+    Musta lista on lista s&#xE4;hk&#xF6;postiosoitteista, joista tulevia viestej&#xE4; et halua n&#xE4;hd&#xE4; INBOX (saapuneiden viestien) -postilaatikossasi.
+    </para>
+</entry>
+  <entry id="blacklist-action" state="uptodate" md5="1701f4152c090004e3b40205439f9108">
+    <title>Musta lista: Toiminto</title>
+    <para>
+    T&#xE4;ss&#xE4; m&#xE4;&#xE4;ritell&#xE4;&#xE4;n mit&#xE4; tehd&#xE4;&#xE4;n niille viesteille, joiden l&#xE4;hett&#xE4;j&#xE4;n on sellainen osoite, joka on mustalla listalla. Vaihtoehtoina on "Poista" tai "Siirr&#xE4; kansioon". Jos valitset "Poista", niin viestit poistetaan ennenkuin ne on jaettu INBOX postikansioosi. Jos valitset "Siirr&#xE4; kansioon", niin viesti toimitetaan suoraan valitsemaasi kansioon.
+    </para>
+</entry>
+  <entry id="blacklist-addresses" state="uptodate" md5="3431e98a8d15bfa645af394cefd8346d">
+    <title>Musta lista: Osoitteet</title>
+    <para>
+    Lista osoitteista, joista ei oteta viestej&#xE4; vastaan. Jokainen osoite pit&#xE4;&#xE4; olla omalla rivill&#xE4;&#xE4;n.
+    </para>
+</entry>
+  <entry id="filters_rules" state="uptodate" md5="d84617a2f5002d24ef11509e5f4eb6c0">
+    <title>S&#xE4;&#xE4;nn&#xF6;t: Suodatins&#xE4;&#xE4;nn&#xF6;t</title>
+    <para>
+    T&#xE4;m&#xE4; on suodantins&#xE4;&#xE4;nt&#xF6;jen p&#xE4;&#xE4;sivu. Voit tehd&#xE4; uusia suodatins&#xE4;&#xE4;nt&#xF6;j&#xE4; napauttamalla "Uusi s&#xE4;&#xE4;nt&#xF6;" -painiketta; Muuttaa s&#xE4;&#xE4;nt&#xF6;jen j&#xE4;rjestyst&#xE4; napauttamalla nuoli alas ja nuoli yl&#xF6;s painikkeita tai laittamalla numeron "Siirr&#xE4;" sarakkeeseen; Laittaa s&#xE4;&#xE4;nn&#xF6;n p&#xE4;&#xE4;lle tai poistaa p&#xE4;&#xE4;lt&#xE4; s&#xE4;&#xE4;nn&#xF6;n napauttamalla ikonia "P&#xE4;&#xE4;ll&#xE4;" sarakkeessa; muokata yksitt&#xE4;isi&#xE4; s&#xE4;&#xE4;nt&#xF6;j&#xE4; napauttamalla ikonia "Muokkaa" sarakkeessa tai napauttamalla s&#xE4;&#xE4;nn&#xF6;n nime&#xE4;.
+    </para>
+    <para>
+      <tip>Huomioithan, ett&#xE4; s&#xE4;&#xE4;nn&#xF6;t suoritetaan siin&#xE4; j&#xE4;rjestyksess&#xE4;, jossa ne n&#xE4;kyy t&#xE4;ss&#xE4; listassa. Esimerkiksi jos viesti poistetaan mustassa listass&#xE4;, niin siihen ei en&#xE4;&#xE4; p&#xE4;de t&#xE4;m&#xE4;n mustan listan j&#xE4;lkeiset s&#xE4;&#xE4;nn&#xF6;t.</tip>
+    </para>
+</entry>
+  <entry id="forward" state="uptodate" md5="c9664b960ceef87cab4af83e8f33412c">
+    <title>Uudelleenohjaa</title>
+    <para>
+    Voit automaattisesti uudelleenohjata tulevat viestit yhteen tai useampaan s&#xE4;hk&#xF6;postiosoitteeseen.
+    </para>
+</entry>
+  <entry id="forward-addresses" state="uptodate" md5="817c5f002f99c0afd0010aabaf07c91c">
+    <title>Uudelleenohjaa: Osoitteet</title>
+    <para>
+    Voit ohjata sinulle tulevat viestit toiseen osoitteeseen. Voit ohjata viestit yhteen tai useampaa osoitteeseen. Jokainen osoite pit&#xE4;&#xE4; olla omalla rivill&#xE4;&#xE4;n.
+    </para>
+</entry>
+  <entry id="forward-keepcopy" state="uptodate" md5="be1f36c2f9a8dcba7517b8edf5319d64">
+    <title>Uudelleenohjaa: J&#xE4;t&#xE4; kopio</title>
+    <para>
+    Jos valitset t&#xE4;m&#xE4;n asetuksen, niin jokaisesta sinulle saapuvasta viestist&#xE4; j&#xE4;tet&#xE4;&#xE4;n kopio palvelimelle ja viesti ohjataan edelleen m&#xE4;&#xE4;rittelemiisi osoitteisiin.
+    </para>
+</entry>
+  <entry id="pref-show_filter_msg" state="uptodate" md5="d8795e5b71c6287ed7bfe3f8dc4f4861">
+    <title>Asetus: N&#xE4;yt&#xE4; yksityiskohtaiset tilatiedot viestien suodatuksesta.</title>
+    <para>
+    Jos k&#xE4;yt&#xE4;t IMAP-ajurin suodatusta, niin t&#xE4;m&#xE4; asetus m&#xE4;&#xE4;r&#xE4;&#xE4; miten paljon suodatinprosessista n&#xE4;ytet&#xE4;&#xE4;n tietoja. Jos valitset kyll&#xE4;, niin jokainen suodatettu viesti tulostaa aina yhden ilmoituksen ruudulle. Jos valitset ei, niin viestien suodatuksesta n&#xE4;ytet&#xE4;&#xE4;n vain yhteenvetotiedot.
+    </para>
+</entry>
+  <entry id="pref-filter_seen" state="uptodate" md5="85687c69db6145d77053a8b6302e5ad2">
+    <title>Asetus: Suodata vain Uudet/Vanhat viestit.</title>
+    <para>
+    T&#xE4;m&#xE4; asetus m&#xE4;&#xE4;rittele mit&#xE4; viestej&#xE4; IMAP-ajurin suodatus koskee. Voit m&#xE4;&#xE4;ritell&#xE4; koskeeko suodatus kaikkia viestej&#xE4;, uusia viestej&#xE4; tai viestej&#xE4; jotka on merkitty vanhoiksi.
+    </para>
+</entry>
+  <entry id="rule" state="uptodate" md5="cf211ec97956e9adc3b8f01b2a40888f">
+    <title>Suodatins&#xE4;&#xE4;nt&#xF6;</title>
+    <para>
+    Suodatins&#xE4;&#xE4;nt&#xF6; on peruskomponentti, joista muodostetaan suodatins&#xE4;&#xE4;nn&#xF6;st&#xF6;. S&#xE4;&#xE4;nt&#xF6; koostuu yhdest&#xE4; tai useammasta ehdosta ja yhdest&#xE4; tai useammasta toiminnosta. Kun sinulle tulee viesti, niin jokainen viesti menee suodatinprosessin l&#xE4;vitse. Jos viesti t&#xE4;ytt&#xE4;&#xE4; m&#xE4;&#xE4;rittelem&#xE4;si ehdot, niin sille suoritetaan m&#xE4;&#xE4;rittelem&#xE4;si toiminto. Voit esimerkiksi poistaa viestit, joita et halua vastaanottaa tai ohjata tietyt viestit automaattisesti tiettyihin kansioihin.
+    </para>
+</entry>
+  <entry id="rule-action" state="uptodate" md5="0f66574fec21645147b3cbb967cc23b1">
+    <title>Suodatins&#xE4;&#xE4;nt&#xF6;: Toiminto</title>
+    <para>
+    Jos viesti t&#xE4;ytt&#xE4;&#xE4; m&#xE4;&#xE4;ritellyt ehdot, niin voit m&#xE4;&#xE4;ritell&#xE4; mit&#xE4; viestille tehd&#xE4;&#xE4;n. Kaikki toiminnot eiv&#xE4;t ole k&#xE4;ytett&#xE4;viss&#xE4;si vaan ne m&#xE4;&#xE4;r&#xE4;ytyv&#xE4;t sen mukaan mit&#xE4; toimintoja suodatusohjelmistolla on mahdollista k&#xE4;ytt&#xE4;&#xE4;.
+    </para>
+    <heading>Laita viesti INBOX postikansiooni</heading>
+    <para>
+    Viesti talletetaan INBOX postikansioosi. T&#xE4;m&#xE4; on oletusasetus.
+    </para>
+    <heading>Laita viesti t&#xE4;h&#xE4;n kansioon</heading>
+    <para>
+    Viesti toimitetaan m&#xE4;&#xE4;rittelem&#xE4;&#xE4;si kansioon.
+    </para>
+    <heading>Poista viesti kokonaan</heading>
+    <para>
+    Viesti poistetaan. Sinulle tai viestin vastaanottajalle ei tule mit&#xE4;&#xE4;n ilmoitusta siit&#xE4; ett&#xE4; jokin viesti on poistettu.
+    </para>
+    <heading>Uudelleenohjaa osoitteeseen</heading>
+    <para>
+    Viesti ohjataan edelleen m&#xE4;&#xE4;rittelem&#xE4;&#xE4;si osoitteeseen, palvelimelle ei j&#xE4;&#xE4; viestist&#xE4; kopiota.
+    </para>
+    <heading>Laita viesti INBOX postikansiooni ja uudelleenohjaa osoitteeseen</heading>
+    <para>
+    Viesti ohjataan edelleen m&#xE4;&#xE4;rittelem&#xE4;&#xE4;si osoitteeseen, mutta viestist&#xE4; j&#xE4;&#xE4; kopio my&#xF6;s INBOX postikansioosi.
+    </para>
+    <heading>Hylk&#xE4;&#xE4; viesti vastauksella</heading>
+    <para>
+    Alkuper&#xE4;inen viesti h&#xE4;vitet&#xE4;&#xE4;n ja l&#xE4;hett&#xE4;j&#xE4;lle l&#xE4;hetetet&#xE4;&#xE4;n ilmoitus siit&#xE4; ett&#xE4; viesti on hyl&#xE4;tty. Voit itse m&#xE4;&#xE4;ritell&#xE4; vastausviestin tekstin.
+    </para>
+</entry>
+  <entry id="rule-combine" state="uptodate" md5="29484c1ebdd7ce71edc34fc8100ef69c">
+    <title>Suodatins&#xE4;&#xE4;nt&#xF6;: Yhdist&#xE4; asetuksia</title>
+    <para>
+    Yksi suodatins&#xE4;&#xE4;nt&#xF6; voi koostua monesta ehdosta. Voit yhdist&#xE4;&#xE4; ehtoja loogisilla "ja"/"tai" operaattoreilla. Et voi tehd&#xE4; suodatins&#xE4;&#xE4;nt&#xF6;&#xE4;, jossa olisi sek&#xE4; "ja" ett&#xE4; "tai" operaattoreita.
+    </para>
+    <heading>Ja</heading>
+    <para>
+    Jos valitset JA, niin tulevan viestin pit&#xE4;&#xE4; t&#xE4;ytt&#xE4;&#xE4; kaikki sille m&#xE4;&#xE4;rittelem&#xE4;si ehdot, jotta sille suoritetaan m&#xE4;&#xE4;ritellyt toimenpiteet.
+    </para>
+    <heading>Tai</heading>
+    <para>
+    Jos valitset TAI, niin m&#xE4;&#xE4;ritellyt toimenpiteet suoritetaan jos v&#xE4;hint&#xE4;&#xE4;n yksi ehto t&#xE4;yttyy.
+    </para>
+</entry>
+  <entry id="rule-mark" state="uptodate" md5="e8bdb30d1c1c1cdc5ec1e5e4804f9300">
+    <title>Suodatins&#xE4;&#xE4;nt&#xF6;: Merkitse viesti</title>
+    <para>
+    Yhten&#xE4; toimintona voit valita viestin merkinn&#xE4;n, jolloin voit merkit&#xE4; viestin yhdell&#xE4; tai useammalla IMAP tilatiedolla. K&#xE4;ytett&#xE4;viss&#xE4; on tilatiedot: Vanha, T&#xE4;rke&#xE4;, Vastattu ja Poistettu.
+    </para>
+</entry>
+  <entry id="rule-matches" state="uptodate" md5="517e24971f2c5443b2ed04e9c504e7eb">
+    <title>Suodatins&#xE4;&#xE4;nt&#xF6;: T&#xE4;sm&#xE4;ys</title>
+    <para>
+    Jokainen suodatins&#xE4;&#xE4;nt&#xF6; koostuu kolmesta komponentista. Ensimm&#xE4;inen on tutkittava kentt&#xE4;. Toinen on vertailutapa. Kolmas on arvo johon kent&#xE4;&#xE4; verrataan.
+    Kentti&#xE4; voidaan vertailla eri tavoilla. K&#xE4;ytett&#xE4;viss&#xE4; olevat vertailutavat riippuvat kent&#xE4;n tyypist&#xE4; ja siit&#xE4; millaisia vertailutapoja taustaj&#xE4;rjestelm&#xE4;ss&#xE4; on mahdollista k&#xE4;ytt&#xE4;&#xE4;. Eli, vaikka alla on lueteltu monta erilaista vertailutapaa, niin riippuen kent&#xE4;n tyypist&#xE4; vain jotkut vertailutavat ovat mahdollisia.
+    </para>
+    <heading>Sis&#xE4;lt&#xE4;&#xE4;</heading>
+    <para>
+    Tosi, jos merkkijono l&#xF6;ytyy jostakin kohtaa rivi&#xE4;. Esimerkki: user@example t&#xE4;sm&#xE4;&#xE4; joe_user@example.com
+    </para>
+    <heading>Ei sis&#xE4;ll&#xE4;</heading>
+    <para>
+    Tosi, jos merkkijonoa ei l&#xF6;ydy mist&#xE4;&#xE4;n kohtaa rivilt&#xE4;. Esimerkki: user@example ei t&#xE4;sm&#xE4;&#xE4; joe_user@example.com
+    </para>
+    <heading>On</heading>
+    <para>
+    Tosi, jos m&#xE4;&#xE4;ritelty merkkijono t&#xE4;sm&#xE4;&#xE4; t&#xE4;ydellisesti riviin. Esimerkki: user@example.com t&#xE4;sm&#xE4;&#xE4; user@example.com
+    </para>
+    <heading>Ei ole</heading>
+    <para>
+    Tosi, jos m&#xE4;&#xE4;ritelty merkkijono ei t&#xE4;sm&#xE4;&#xE4; t&#xE4;ydellisesti riviin. Esimerkki: user@example ei t&#xE4;sm&#xE4;&#xE4; user@example.com
+    </para>
+    <heading>Alkaa</heading>
+    <para>
+    Tosi, jos m&#xE4;&#xE4;ritelty merkkijono aloitaa rivin. Esimerkki: user@example t&#xE4;sm&#xE4;&#xE4; user@example.com
+    </para>
+    <heading>Ei ala</heading>
+    <para>
+    Tosi, jos m&#xE4;&#xE4;ritelty merkkijono ei aloita rivi&#xE4;. Esimerkki: user@example.com ei t&#xE4;sm&#xE4;&#xE4; user@example
+    </para>
+    <heading>P&#xE4;&#xE4;ttyy</heading>
+    <para>
+    Tosi, jos rivi p&#xE4;&#xE4;ttyy m&#xE4;&#xE4;riteltyyn merkkijonoon. Esimerkki: example.com t&#xE4;sm&#xE4;&#xE4; user@example.com
+    </para>
+    <heading>Ei p&#xE4;&#xE4;ty</heading>
+    <para>
+    Tosi, jos rivi ei p&#xE4;&#xE4;ty m&#xE4;&#xE4;riteltyyn merkkijonoon. Esimerkki: horde.org ei t&#xE4;sm&#xE4;&#xE4; riviin user@example.com
+    </para>
+    <heading>Olemassa</heading>
+    <para>
+    Tosi, jos viestiss&#xE4; on m&#xE4;&#xE4;ritelty otsake.
+    </para>
+    <heading>Ei ole olemassa</heading>
+    <para>
+    Tosi, jos viestiss&#xE4; ei ole m&#xE4;&#xE4;ritelty&#xE4; otsaketta.
+    </para>
+    <heading>S&#xE4;&#xE4;nn&#xF6;llinen lauseke</heading>
+    <para>
+    S&#xE4;&#xE4;nn&#xF6;llisella lausekkeella voit m&#xE4;&#xE4;ritell&#xE4; POSIX-yhteensopiva s&#xE4;&#xE4;nn&#xF6;llisi&#xE4; lausekkeita, joita verrataan viestin otsakkeihin. Esimerkiksi: "Received from [*\.*\.*\.*] by (hosta|hostb).example.com*" sopii riviin "Received from [172.16.100.1] by hosta.example.com on Tuesday"
+    </para>
+    <heading>T&#xE4;sm&#xE4;&#xE4;</heading>
+    <para>
+    T&#xE4;sm&#xE4;&#xE4; on samankaltainen sis&#xE4;lt&#xE4;&#xE4; kanssa, mutta sill&#xE4; erotuksella ett&#xE4; voit k&#xE4;ytt&#xE4;&#xE4; * ja ?-merkkej&#xE4; jokereina. *-merkki vastaa mihin tahansa merkkiin miten monta kertaa tahansa ja ?-merkki vastaa mit&#xE4; tahansa yht&#xE4; merkki&#xE4; tahansa. Esimerkiksi: "*user?@example.com" sopii osoitteeseen "user1@example.com" tai "otheruser2@example.com".
+    </para>
+    <heading>Ei t&#xE4;sm&#xE4;&#xE4;</heading>
+    <para>
+    Ei t&#xE4;sm&#xE4;&#xE4; on muuten sama kuin t&#xE4;sm&#xE4;&#xE4;, paitsi ett&#xE4; se palauttaa arvon ep&#xE4;tosi, jos merkkijono l&#xF6;ytyy viestin otsakkeista.
+    </para>
+    <heading>Pienempi kuin</heading>
+    <para>
+    T&#xE4;m&#xE4; vertaa antaamasi lukua ja viestin otsakkeissa olevaa lukuarvoa numeerisesti kesken&#xE4;&#xE4;n.
+    </para>
+    <heading>Pienempi tai yht&#xE4;suuri kuin</heading>
+    <para>
+    T&#xE4;m&#xE4; vertaa antaamasi lukua ja viestin otsakkeissa olevaa lukuarvoa numeerisesti kesken&#xE4;&#xE4;n.
+    </para>
+    <heading>Yht&#xE4;suuri kuin</heading>
+    <para>
+    T&#xE4;m&#xE4; vertaa antaamasi lukua ja viestin otsakkeissa olevaa lukuarvoa numeerisesti kesken&#xE4;&#xE4;n.
+    </para>
+    <heading>Suurempi tai yht&#xE4;suuri kuin</heading>
+    <para>
+    T&#xE4;m&#xE4; vertaa antaamasi lukua ja viestin otsakkeissa olevaa lukuarvoa numeerisesti kesken&#xE4;&#xE4;n.
+    </para>
+    <heading>Suurempi kuin</heading>
+    <para>
+    T&#xE4;m&#xE4; vertaa antaamasi lukua ja viestin otsakkeissa olevaa lukuarvoa numeerisesti kesken&#xE4;&#xE4;n.
+    </para>
+</entry>
+  <entry id="rule-name" state="uptodate" md5="8faaf71e4bf2f91d943d77f803f9a2d5">
+    <title>Suodatins&#xE4;&#xE4;nt&#xF6;: Nimi</title>
+    <para>
+    T&#xE4;m&#xE4; on sinun s&#xE4;&#xE4;nn&#xF6;lle antamasi kuvaava nimi. Voit k&#xE4;ytt&#xE4;&#xE4; t&#xE4;t&#xE4; tunnistamaan eri s&#xE4;&#xE4;nt&#xF6;j&#xE4; suodatins&#xE4;&#xE4;nt&#xF6;listassa.
+    </para>
+</entry>
+  <entry id="rule-stop" state="uptodate" md5="677c920effca959123b7d539b3b0d864">
+    <title>Suodatins&#xE4;&#xE4;nt&#xF6;: Lopeta tarkistus</title>
+    <para>
+    Jos t&#xE4;m&#xE4; asetus on valittuna ja jos viesti t&#xE4;sm&#xE4;&#xE4; s&#xE4;&#xE4;nt&#xF6;&#xF6;n, niin t&#xE4;m&#xE4;n j&#xE4;lkeen tulevia suodatuksia ei en&#xE4;&#xE4; huomioida.
+    </para>
+</entry>
+  <entry id="vacation" state="uptodate" md5="2c9e12973d36fe94aeb73b32db9a64e6">
+    <title>Poissaoloviesti</title>
+    <para>
+    Poissaoloviesti on automaattisesti l&#xE4;hetett&#xE4;v&#xE4; vastausviesti, joka l&#xE4;hetet&#xE4;&#xE4;n niille henkil&#xF6;ille, jotka ovat l&#xE4;hett&#xE4;neet sinulle s&#xE4;hk&#xF6;postia. Poissaoloviesti&#xE4; k&#xE4;ytet&#xE4;&#xE4;n yleens&#xE4; silloin kun olet poissa pidemm&#xE4;n aikaa tai et p&#xE4;&#xE4;se lukemaan viestej&#xE4;si pidemp&#xE4;&#xE4;n aikaan.
+    </para>
+</entry>
+  <entry id="vacation-period" state="uptodate" md5="531accb93b707d39b2986a779b260dbf">
+     <title>Poissaoloaika</title>
+     <para>Poissaoloviesti l&#xE4;hetet&#xE4;&#xE4;n vain m&#xE4;&#xE4;ritellyn ajanjakson aikana.</para>
+  </entry>
+  <entry id="vacation-bulk" state="uptodate" md5="6f6e4178e80f46e7876c7ee5d0ac53b7">
+    <title>Poissaoloviesti: &#xC4;l&#xE4; vastaa joukkoviesteihin</title>
+    <para>
+    Valitsemalla t&#xE4;m&#xE4;n asetuksen vastausviestej&#xE4; ei l&#xE4;hetet&#xE4;, jos viesti on tullut postilistan kautta tai jos viesti on merkitty joukkoviestiksi.
+    </para>
+</entry>
+  <entry id="vacation-days" state="uptodate" md5="25ba74c0e79ce72237795eb809ee4585">
+    <title>Poissaoloviesti: Vastausv&#xE4;li</title>
+    <para>
+    Jos osoitteeseen on l&#xE4;hetetty automaattinen vastausviesti, niin seuraava viesti samaan osoitteeseen l&#xE4;hetet&#xE4;&#xE4;n vasta t&#xE4;ss&#xE4; m&#xE4;&#xE4;ritellyn p&#xE4;iv&#xE4;n p&#xE4;&#xE4;st&#xE4;.
+    </para>
+</entry>
+  <entry id="vacation-myemail" state="uptodate" md5="ef3fa70e940ed1472276c0fde5ae2aed">
+    <title>Poissaoloviesti: Omat osoitteet</title>
+    <para>
+    Jos postikansioosi tulee viestej&#xE4; useammalla eri osoitteella, niin m&#xE4;&#xE4;rittele t&#xE4;ss&#xE4; ne osoitteet.
+    </para>
+</entry>
+  <entry id="vacation-noresponse" state="uptodate" md5="2b72e12b6989c9ef1667a59040c70310">
+    <title>Poissaoloviesti: Ei vastauksia</title>
+    <para>
+    &#xC4;l&#xE4; l&#xE4;het&#xE4; vastauksia n&#xE4;ihin osoitteisiin. Jokainen osoite pit&#xE4;&#xE4; laittaa omalle rivilleen.
+    </para>
+</entry>
+  <entry id="vacation-reason" state="uptodate" md5="d4da2f3a0d357e00950ec57d984cbcee">
+    <title>Poissaoloviesti:: Poissaolon syy</title>
+    <para>
+    T&#xE4;t&#xE4; teksti&#xE4; k&#xE4;ytet&#xE4;&#xE4;n poissaoloviestien tekstin&#xE4;.
+    </para>
+</entry>
+  <entry id="vacation-subject" state="uptodate" md5="ce16c7c6a08993821208cfbee0b188a0">
+    <title>Poissaoloviesti:: Viestin otsikko</title>
+    <para>
+    T&#xE4;t&#xE4; teksti&#xE4; k&#xE4;ytet&#xE4;&#xE4;n poissaoloviestien otsikkona.
+    </para>
+</entry>
+  <entry id="whitelist" state="uptodate" md5="ecbf7000f107832d68bd7ba8f5121909">
+    <title>Valkoinen lista</title>
+    <para>
+    Valkoinen lista on lista niist&#xE4; osoitteista, joiden haluat tulevan aina perille postikansioosi. Jokainen osoite pit&#xE4;&#xE4; laittaa omalle rivilleen.
+    </para>
+</entry>
+  <entry id="whitelist-addresses" state="uptodate" md5="8fe054c1b55e6adc81d1d8525c131637">
+    <title>Valkoinen lista: Osoitteet</title>
+    <para>
+    Jokainen osoite pit&#xE4;&#xE4; laittaa omalle rivilleen.
+    </para>
+</entry>
+  <entry id="spam-level" state="uptodate" md5="6f00c30a45b0acaef4ae9dba56d58013">
+    <title>Roskapostisuodatus: Roskapostitaso</title>
+    <para>J&#xE4;rjestelm&#xE4; tulkitsee roskapostiksi viestit, joiden roskapostitaso on suurempi tai yht&#xE4;suuri kuin t&#xE4;m&#xE4; arvo</para>
+    <para>Mit&#xE4; pienempi arvo, niin sen enemm&#xE4;n viestej&#xE4; k&#xE4;sitell&#xE4;&#xE4;n roskapostina, mutta vastaavasti my&#xF6;s virhetunnistusten m&#xE4;&#xE4;r&#xE4; lis&#xE4;&#xE4;ntyy. Jos j&#xE4;rjestelm&#xE4; k&#xE4;ytt&#xE4;&#xE4; SpamAssassin ohjelmistoa, niin tyypillinen arvo ja sopiva arvo on "5".</para>
+  </entry>
+  <entry id="spam-folder" state="uptodate" md5="1639e6d1cfcd6706f93920f2c63f4a00">
+    <title>Roskapostisuodatus: Roskapostikansio</title>
+    <para>J&#xE4;rjestelm&#xE4; siirt&#xE4;&#xE4; roskapostiksi tunnistetut viestit automaattisesti t&#xE4;h&#xE4;n kansioon.</para>
+  </entry>
+</help>
diff --git a/ingo/locale/fr_FR/LC_MESSAGES/ingo.mo b/ingo/locale/fr_FR/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..1d80593
Binary files /dev/null and b/ingo/locale/fr_FR/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/fr_FR/help.xml b/ingo/locale/fr_FR/help.xml
new file mode 100644 (file)
index 0000000..fe3a8bf
--- /dev/null
@@ -0,0 +1,361 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- $Horde: ingo/locale/fr_FR/help.xml,v 1.3 2007/04/16 18:01:30 jan Exp $ -->
+<help>
+  <entry id="blacklist" md5="5c12e162f66f68c6c2d84cc7c280d710" state="uptodate">
+    <title>Liste noire</title>
+    <heading>Liste noire</heading>
+    <para>
+La liste noire est une liste des adresses de courriel dont vous ne désirez pas recevoir de courriel dans votre boîte de réception.
+    </para>
+       
+</entry>
+  <entry id="blacklist-action" md5="1701f4152c090004e3b40205439f9108" state="uptodate">
+    <title>Liste noire: Action</title>
+    <para>
+           Cette action définit ce que vous désirez faire lorsqu'un message provenant d'une adresse que vous avez bloquée vous est envoyé.  Les valeurs possibles sont de supprimer le message complètement, de marquer le message comme supprimé ou de déplacer le message vers un dossier. Dans le cas où le message est complètement supprimé, le message sera écarté avant même de parvenir à votre boîte de réception. Si vous marquez le message comme supprimé, il se retrouvera alors dans votre corbeille.    
+    </para>
+       
+</entry>
+  <entry id="blacklist-addresses" md5="3431e98a8d15bfa645af394cefd8346d" state="uptodate">
+    <title>Liste noire: Adresses</title>
+    <para>
+    La liste des adresses à bloquer. Chaque adresse doit être entrée sur un ligne séparée.
+    </para>
+       
+</entry>
+  <entry id="filters_rules" md5="d84617a2f5002d24ef11509e5f4eb6c0" state="uptodate">
+    <title>Règles de filtrage</title>
+    <para> Ceci est l'écran principal où trouver les règles. D'ici, vous pouvez:
+           - créer de nouvelles règles en cliquant sur le bouton « Nouvelle règle »; 
+           - réarranger l'ordre des règles en cliquant les flèches vers le haut ou vers le bas, ou en entrant la nouvelle position de la règle dans le champ « A »: à droite de la règle;
+           - activer ou désactiver des règles spécifiques en cliquant sur l'icône situé dans la colonne « Activé »;
+           - modifier une règle à la fois en cliquant sur l'icône de gauche de la colonne « Modifier » ou sur le nom de la règle. 
+    </para>
+    <para>
+           <tip>Veuillez noter que les règles sont exécutées dans l'ordre où elles sont affichées ici.
+                   Par exemple, si un courriel est supprimé par la liste noire, les règles qui suivent n'auront aucune influence sur ce courriel.
+           </tip>
+    </para>
+       
+  </entry>
+  <entry id="forward" md5="c9664b960ceef87cab4af83e8f33412c" state="uptodate">
+    <title>Redirection</title>
+    <heading>Redirection</heading>
+    <para>
+Vous pouvez choisir de rediriger automatiquement vos courriels entrants vers d'autres adresses.
+    </para>
+       
+</entry>
+  <entry id="forward-addresses" md5="817c5f002f99c0afd0010aabaf07c91c" state="uptodate">
+       <title>Redirection: Adresses</title>
+       <heading>Redirection: Adresses</heading>
+       <para>
+               Vous pouvez rediriger vos courriels entrants vers un autre compte.  Vous pouvez entrer autant d'adresses que vous désirez.Entrez chaque adresse sur une ligne différente. 
+       </para>
+       
+</entry>
+  <entry id="forward-keepcopy" md5="be1f36c2f9a8dcba7517b8edf5319d64" state="uptodate">
+    <title>Redirection: Garder une copie</title>
+    <heading>Redirection: Garder une copie</heading>
+    <para>
+Si cette option est sélectionnée, une copie de vos messages entrants sera
+sauvegardée dans votre compte en même temps qu'ils seront envoyés vers les
+adresses où vous avez choisi de rediriger vos courriels.
+    </para>
+       
+</entry>
+  <entry id="pref-show_filter_msg" md5="d8795e5b71c6287ed7bfe3f8dc4f4861" state="uptodate">
+    <title>Option: Afficher un message détaillé après l'application de chaque
+           filtre ?</title>
+    <para>Si le pilote de filtre utilisé est un pilote IMPA, cette option
+           contrôle les messages affichés par le processus de filtrage. Si elle
+           est cochée, tous les messages filtrés enverront un avertissement
+           séparé a l'écran immédiatement après que le message ait été traité.
+           Sinon, seul un sommaire de l'action des filtres sera affiché à
+           l'écran.
+          </para>
+  
+  </entry>
+  <entry id="pref-filter_seen" md5="85687c69db6145d77053a8b6302e5ad2" state="uptodate">
+    <title>Option: Filtrer seulement les messages [non] vus?</title>
+    <para>Cette préférence indique à quel moment le pilote de filtrage IMAP va
+           tenter d'appliquer les règles de filtrage à la boîte de réception.
+           Vous pouvez soit appliquer les règles à tous les messages, seulement
+           aux messages non vus, ou aux messages vus.</para>
+  
+  </entry>
+  <entry id="rule" md5="cf211ec97956e9adc3b8f01b2a40888f" state="uptodate">
+    <title>Règle de filtrage</title>
+    <heading>Règle de filtrage</heading>
+    <para>
+    Une règle de filtrage consiste en une ou plusieurs conditions et en une ou
+    plusieurs actions. Quand un message vous est envoyé, il est traité à travers
+    les conditions spécifiées dans vos règles de filtrage. Si les conditions que
+    vous avez indiquées sont réunies, les actions que vous avez spécifiées
+    seront exécutées sur ce message. Les filtres peuvent être très utiles pour
+    supprimer automatiquement le courrier non désiré, ou pour rendre votre
+    compte de courriel plus gérable en classant automatiquement votre courriel
+    dans différents dossiers.
+    </para>
+
+</entry>
+  <entry id="rule-action" md5="0f66574fec21645147b3cbb967cc23b1" state="uptodate">
+    <title>Règle de filtrage: Action</title>
+    <para>
+    Voici les actions qu'il est possible de faire si un message entrant répond
+    aux conditions indiquées. Notez que toutes ces options ne sont peut être pas
+    disponible pour vous - seules les options permises par le logiciel de
+    filtrage de votre installation seront affichées.
+    </para>
+    <heading>Déposer ce message dans ma boîte de réception</heading>
+    <para>
+Ce message sera déposé dans votre boîte de réception.  C'est l'option par défaut.
+    </para>
+    <heading>Placer dans ce dossier</heading>
+    <para>
+    Ce message sera placé dans le dossier spécifié.
+    </para>
+    <heading>Supprimer le message complètement</heading>
+    <para>
+    Le message sera supprimé sans que vous ou l'expéditeur n'en soyez averti.
+    </para>
+    <heading>Rediriger vers</heading>
+    <para>
+    Le message sera redirigé vers une adresse de courriel que vous spécifiez.  Aucune copie n'est conservée localement.
+    </para>
+    <heading>Déposer dans ma boîte de réception et rediriger vers</heading>
+    <para>
+Le message sera envoyé à l'adresse que vous spécifiez et une copie sera
+conservée dans votre boîte de réception.
+    </para>
+    <heading>Rejeter avec la raison</heading>
+    <para>
+Le message original sera rejeté et un message sera envoyé à l'expéditeur avec un
+texte que vous aurez spécifié.
+    </para>
+
+</entry>
+  <entry id="rule-combine" md5="29484c1ebdd7ce71edc34fc8100ef69c" state="uptodate">
+    <title>Règle de filtrage: Combiner des options</title>
+    <para>
+    Vous pouvez spécifier plusieurs options dans une même régle.  Vous pouvez les regrouper logiquement avec « et », « ou ».  Vous ne pouvez pas créer des filtres complexes contenant les deux types de conditions.
+    </para>
+    <heading>Et</heading>
+    <para>
+           Si vous sélectionné « et », le message entrant doit répondre à toutes les conditions que vous avez spécifiées pour que les actions soient exécutées.
+    </para>
+
+    <heading>Ou</heading>
+    <para>
+Si vous sélectionné « ou », les actions seront exécutées si au moins une des conditions est remplie.
+    </para>
+
+</entry>
+  <entry id="rule-mark" md5="0cbcc4ad4857b8538cd4e3915fbe9d73" state="changed">
+    <title>Règle de filtrage: Marquer le message</title>
+    <para>
+Vous pouvez marquer un message avec un ou plusieurs drapeaux IMAP comme une
+action d'une régle.  Les drapeaux disponibles sont: Vu, Important, Répondu et Supprimé.
+    </para>
+
+<!-- English entry:
+<entry id="rule-mark">
+    <title>Filter Rule: Mark Message</title>
+    <para>You may specify marking a message with one or more IMAP flags as one
+    of the actions in a rule. The possible values are Seen, Flagged For Followup,
+    Answered, and Deleted.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-mark">
+    <title>Filter Rule: Mark Message</title>
+    <para>You may specify marking a message with one or more IMAP flags as one
+    of the actions in a rule. The possible values are Seen, Flagged For Followup,
+    Answered, and Deleted.</para>
+  </entry>--></entry>
+  <entry id="rule-matches" md5="517e24971f2c5443b2ed04e9c504e7eb" state="uptodate">
+    <title>Règle de filtrage: Correspondances</title>
+    <para>
+    Il y a 3 composantes pour chaque condition dans une règle. La première est le champ à examiner. La seconde est le type de comparaison à exécuter. Le troisième est la valeur à laquelle le champ devrait être comparé. Il y a quelques types de comparaisons qui peuvent être effectuées. Les comparaisons disponibles pour n'importe quel champ dépendront du type du champ et de ce que le logiciel de filtrage peut manipuler.
+    </para>
+    <heading>Contient</heading>
+    <para>
+    Sera considéré vrai si la chaîne spécifiée est trouvée n'importe où dans le
+    champ. Par exemple, utilisateur@example sera trouvé si le champ est
+    mon_utilisateur@example.com
+    </para>
+    <heading>Ne contient pas</heading>
+    <para>
+    Sera considéré vrai si la chaîne spécifiée n'est pas trouvée danns le champ. 
+    </para>
+    <heading>Est</heading>
+    <para>
+    Sera considéré vrai si la chaîne spécifiée correspond exactement au champ.
+    Par exemple, mon_utilisateur@exemple.com correspondra avec
+    mon_utilisateur@exemple.com et rien d'autre.
+    </para>
+    <heading>N'est pas</heading>
+    <para>
+    Sera considéré comme vrai si la chaîne spécifiée ne correspond pas
+    exactement au champ.
+</para>
+    <heading>Commence avec</heading>
+    <para>
+    Sera considéré vrai si la chaîne spécifiée est trouvée au début du champ.
+    Par exemple, mon_utilisateur sera trouvé dans le champ
+    mon_utilisateur@exemple.com
+   </para>
+    <heading>Ne commence pas par</heading>
+    <para>
+Sera considéré vrai si la chaîne spécifiée n'est pas trouvée au début du champ.
+    </para>
+    <heading>Se termine avec</heading>
+    <para>
+    Sera considéré vrai si la chaîne spécifiée correspondent avec la fin de la ligne.
+    </para>
+    <heading>Ne se termine pas avec</heading>
+    <para>
+Sera considéré vrai si la chaîne spécifiée ne correspondent pas avec la fin de la ligne.
+    </para>
+    <heading>Existe</heading>
+    <para>
+    Sera considéré vrai si l'en-tête indiqué existe dans le message, peu importe sa valeur.
+    </para>
+    <heading>N'existe pas</heading>
+    <para>
+Sera considéré vrai si l'en-tête indiqué n'existe pas dans le message.
+    </para>
+    <heading>Expression régulière</heading>
+    <para>
+    Une expression régulière permet d'utiliser des expressions régulières
+    complexes compatibles POSIX pour comparer des entêtes de message. Par
+    exemple, « Received from [*\.*\.*\.*] by (hosta|hostb).example.com* »
+    correspondra avec
+     "Received from [172.16.100.1] by hosta.example.com on Tuesday"
+    </para>
+    <heading>Correspond</heading>
+    <para>
+    La correspondance est similaire à «contient» à l'exeption que vous pouvez utiliser * et ? comme information.  Une * remplace un ou plusieurs caractères tandis qu'un ? ne remplace qu'un seul caractère.
+    </para>
+    <heading>Ne correspond pas</heading>
+    <para>
+    Fonctionne comme «Correspond» de façon inverse.
+
+    </para>
+    <heading>Plus petit que</heading>
+    <para>
+    Ceci est un test relationnel qui compare la valeur que vous spécifié et la
+    valeur de l'en-tête du message numériquement.
+    </para>
+    <heading>Plus petit ou égal à</heading>
+    <para>
+    Ceci est un test relationnel qui compare la valeur que vous spécifié et la
+    valeur de l'en-tête du message numériquement.
+    </para>
+    <heading>Égal à</heading>
+    <para>
+    Ceci est un test relationnel qui compare la valeur que vous spécifié et la
+    valeur de l'en-tête du message numériquement.
+    </para>
+    <heading>Plus grand ou égal à</heading>
+      <para>
+    Ceci est un test relationnel qui compare la valeur que vous spécifié et la
+    valeur de l'en-tête du message numériquement.
+    </para>
+    <heading>Plus grand que</heading>
+      <para>
+    Ceci est un test relationnel qui compare la valeur que vous spécifié et la
+    valeur de l'en-tête du message numériquement.
+    </para>
+    
+
+</entry>
+  <entry id="rule-name" md5="8faaf71e4bf2f91d943d77f803f9a2d5" state="uptodate">
+    <title>Règle de filtrage: Nom</title>
+    <para>
+    C'est le nom qui décrit la règle et qui l'identifiera dans la liste des filtres.
+     </para>
+
+</entry>
+  <entry id="rule-stop" md5="677c920effca959123b7d539b3b0d864" state="uptodate">
+    <title>Règle de filtrage: Arrêt de vérification</title>
+    <para>
+    Si cette option est sélectionnée et que le message correspond à la règle,
+    les filtres restants ne seront pas appliqués.
+    </para>
+
+</entry>
+  <entry id="vacation" md5="2c9e12973d36fe94aeb73b32db9a64e6" state="uptodate">
+    <title>Absence</title>
+    <para>Les messages d'absences sont des réponses automatiques envoyées aux
+           gens qui vous écrivent. Ils sont normalement utilisés lorsque vous
+           êtes à l'extérieur pour une longue période.</para>
+  
+  </entry>
+  <entry id="vacation-period" state="new">
+     <title>Vacation Period</title>
+     <para>Vacation messages will only be sent during the period of time that you are on vacation.</para>
+  </entry>
+  <entry id="vacation-bulk" md5="6f6e4178e80f46e7876c7ee5d0ac53b7" state="uptodate">
+    <title>Absence: Ne pas envoyer de réponses aux messages provenant de listes ou d'envois massifs</title>
+    <para>En cochant cette option, les messages d'absences ne seront pas envoyés
+           si le message semble provenir d'une liste de diffusion ou est marqué
+           comme un envoi massif.</para>
+  
+  </entry>
+  <entry id="vacation-days" md5="25ba74c0e79ce72237795eb809ee4585" state="uptodate">
+    <title>Absence: Nombre de jours entre les messages d'absence</title>
+    <para>Correspond au nombre de jours d'attente avant que le système n'envoie
+           un message d'absence à une adresse qui en a déjà reçu un.
+    </para>
+  
+  </entry>
+  <entry id="vacation-myemail" md5="ef3fa70e940ed1472276c0fde5ae2aed" state="uptodate">
+    <title>Absence: Mes adresses courriel</title>
+    <para>Si vous avez plus d'une adresse courriel entrant dans cette boîte de
+           réception, spécifiez les ici.</para>
+  
+  </entry>
+  <entry id="vacation-noresponse" md5="2b72e12b6989c9ef1667a59040c70310" state="uptodate">
+    <title>Absence: adresses auxquelles ne pas envoyer de réponses</title>
+    <para>Ne pas envoyer de message d'absence à ces adresses. Chaque adresse
+           doit être entrée sur une ligne séparée.</para>
+  
+  </entry>
+  <entry id="vacation-reason" md5="d4da2f3a0d357e00950ec57d984cbcee" state="uptodate">
+    <title>Absence: raison</title>
+    <para>C'est le texte qui sera envoyé dans le message d'absence.</para>
+    
+  </entry>
+  <entry id="vacation-subject" md5="ce16c7c6a08993821208cfbee0b188a0" state="uptodate">
+    <title>Absence: Sujet du message d'absence</title>
+    <para>C'est le sujet qui sera utilisé pour le message d'absence.</para>
+    
+  </entry>
+  <entry id="whitelist" md5="ecbf7000f107832d68bd7ba8f5121909" state="uptodate">
+    <title>Liste blanche</title>
+    <heading>Liste blanche</heading>
+    <para>
+    La liste blanche contient des adresses de courriel d'expéditeur dont vous désirez toujours recevoir les messages.  Chaque adresse doit être entrée sur une ligne différente.
+    </para>
+
+</entry>
+  <entry id="whitelist-addresses" md5="8fe054c1b55e6adc81d1d8525c131637" state="uptodate">
+    <title>Liste blanche: Adresses</title>
+    <para>
+   La liste des adresses de courriel des expéditeurs dont vous avez entièrement confiance.  Chaque adresse doit être insérée sur une ligne différente.
+    </para>
+
+</entry>
+  <entry id="spam-level" state="new">
+    <title>Spam Filtering: Spam Level</title>
+    <para>The system will consider messages with a likely spam score greater
+    than or equal to the number entered here as spam.</para>
+    <para>Lower numbers will catch more messages, with the drawback that there
+    is a greater chance of catching real messages.  "5" is a typical value
+    if your system is using SpamAssassin.</para>
+  </entry>
+  <entry id="spam-folder" state="new">
+    <title>Spam Filtering: Folder to receive spam</title>
+    <para>The system will file messages which it determines to be spam into
+    this folder.</para>
+  </entry>
+</help>
diff --git a/ingo/locale/hu_HU/LC_MESSAGES/ingo.mo b/ingo/locale/hu_HU/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..df5bdd7
Binary files /dev/null and b/ingo/locale/hu_HU/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/it_IT/LC_MESSAGES/ingo.mo b/ingo/locale/it_IT/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..a7f2652
Binary files /dev/null and b/ingo/locale/it_IT/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/ja_JP/LC_MESSAGES/ingo.mo b/ingo/locale/ja_JP/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..302af64
Binary files /dev/null and b/ingo/locale/ja_JP/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/ko_KR/LC_MESSAGES/ingo.mo b/ingo/locale/ko_KR/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..f2280fc
Binary files /dev/null and b/ingo/locale/ko_KR/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/lt_LT/LC_MESSAGES/ingo.mo b/ingo/locale/lt_LT/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..447055e
Binary files /dev/null and b/ingo/locale/lt_LT/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/lv_LV/LC_MESSAGES/ingo.mo b/ingo/locale/lv_LV/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..fa17123
Binary files /dev/null and b/ingo/locale/lv_LV/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/lv_LV/help.xml b/ingo/locale/lv_LV/help.xml
new file mode 100644 (file)
index 0000000..19c4bbd
--- /dev/null
@@ -0,0 +1,1262 @@
+<?xml version="1.0" encoding="iso-8859-1"?>
+<!-- $Horde: ingo/locale/lv_LV/help.xml,v 1.5 2007/04/16 18:01:30 jan Exp $ -->
+<help>
+  <entry id="blacklist" md5="74bee567c19947a8c9de526f92137256" state="changed">
+    <title>Melnais saraksts</title>
+    <heading>Melnais saraksts</heading>
+    <para>
+    [Melnais saraksts] ir E-pasta adreðu saraksts, no kurâm saòemtâs vçstules Jûs nevçlaties redzçt savâ pastkastîtç (INBOX).
+    </para>
+<!-- English entry:
+<entry id="blacklist">
+    <title>Blacklist</title>
+    <para>The blacklist is a list of email addresses known to send email that
+    you do not wish to see in your INBOX.</para>
+  </entry>--><!-- English entry:
+<entry id="blacklist">
+    <title>Blacklist</title>
+    <para>The blacklist is a list of email addresses known to send email that
+    you do not wish to see in your INBOX.</para>
+  </entry>--><!-- English entry:
+<entry id="blacklist">
+    <title>Blacklist</title>
+    <para>The blacklist is a list of email addresses known to send email that
+    you do not wish to see in your INBOX.</para>
+  </entry>--><!-- English entry:
+<entry id="blacklist">
+    <title>Blacklist</title>
+    <para>The blacklist is a list of email addresses known to send email that
+    you do not wish to see in your INBOX.</para>
+  </entry>--></entry>
+  <entry id="blacklist-action" md5="d11ed07f0671f3a374d3307ecd71b6f2" state="changed">
+    <title> Melnais saraksts: Darbîba</title>
+    <para>
+    Ðî darbîba nosaka rîcîbu, ja ir saòemta vçstule no Melnajâ sarakstâ uzskaitîtajiem nosûtîtâjiem. Iespçjamâs darbîbas ir [Dzçst] vai [Pârcelt uz]. Ja ir izvçlçts [Dzçst], vçstules tiks izdzçstas vçl pirms nonâkðanas Jûsu INBOX. Ja Jûsu izvçle ir [Pârvietot uz], ienâkusî vçstule tiks pârvietota uz norâdîto mapi.
+    </para>
+<!-- English entry:
+<entry id="blacklist-action">
+    <title>Blacklist: Action</title>
+    <para>This action defines what to do when a message from a blocked sender
+    is sent to you. The possible values are "delete" or "move to folder". If
+    "delete" is selected, the messages will be discarded before ever being
+    stored in your Inbox. If "move to folder" is selected, they will be
+    delivered to the selected folder.</para>
+  </entry>--><!-- English entry:
+<entry id="blacklist-action">
+    <title>Blacklist: Action</title>
+    <para>This action defines what to do when a message from a blocked sender
+    is sent to you. The possible values are "delete" or "move to folder". If
+    "delete" is selected, the messages will be discarded before ever being
+    stored in your Inbox. If "move to folder" is selected, they will be
+    delivered to the selected folder.</para>
+  </entry>--><!-- English entry:
+<entry id="blacklist-action">
+    <title>Blacklist: Action</title>
+    <para>This action defines what to do when a message from a blocked sender
+    is sent to you. The possible values are "delete" or "move to folder". If
+    "delete" is selected, the messages will be discarded before ever being
+    stored in your Inbox. If "move to folder" is selected, they will be
+    delivered to the selected folder.</para>
+  </entry>--><!-- English entry:
+<entry id="blacklist-action">
+    <title>Blacklist: Action</title>
+    <para>This action defines what to do when a message from a blocked sender
+    is sent to you. The possible values are "delete" or "move to folder". If
+    "delete" is selected, the messages will be discarded before ever being
+    stored in your Inbox. If "move to folder" is selected, they will be
+    delivered to the selected folder.</para>
+  </entry>--></entry>
+  <entry id="blacklist-addresses" md5="1cbd05d7cb651fdbccc9181be6a789d8" state="changed">
+    <title>Melnais saraksts: Adreses</title>
+    <para>
+    E-pasta adreses, no kurâm Jûs noteikti nevçlaties saòemt vçstules. Katru adresi ir jâievada atseviðíâ rindâ.
+    </para>
+<!-- English entry:
+<entry id="blacklist-addresses">
+    <title>Blacklist: Addresses</title>
+    <para>The list of addresses to block. Each address should be entered on a
+    separate line.</para>
+  </entry>--><!-- English entry:
+<entry id="blacklist-addresses">
+    <title>Blacklist: Addresses</title>
+    <para>The list of addresses to block. Each address should be entered on a
+    separate line.</para>
+  </entry>--><!-- English entry:
+<entry id="blacklist-addresses">
+    <title>Blacklist: Addresses</title>
+    <para>The list of addresses to block. Each address should be entered on a
+    separate line.</para>
+  </entry>--><!-- English entry:
+<entry id="blacklist-addresses">
+    <title>Blacklist: Addresses</title>
+    <para>The list of addresses to block. Each address should be entered on a
+    separate line.</para>
+  </entry>--></entry>
+  <entry id="filters_rules" md5="6683bfda1a3eb627ac02b4ec1c486c87" state="changed">
+    <title>Likumi: Filtru likumi</title>
+    <para>
+    Tas ir galvenais likumu ekrâns. No ðejienes Jûs varat radît jaunu likumu, uzklikðíinot pogai "Jauns likums"; mainît pielietojamo filtru secîbu, uzklikðíinot bultiòu ikonâm stabiòâ "Pârvietot"; ieslçgt vai izslçgt atseviðíus likumus, uzklikðíinot ikonai stabiòâ "Ieslçgts"; labot atseviðíus likumus, uzklikðíinot ikonai stabiòâ "Labot" vai likuma nosaukumam.
+    </para>
+<!-- English entry:
+<entry id="filters_rules">
+    <title>Rules: Filter Rules</title>
+    <para>This is the main rules screen. From here you can create new rules by
+    clicking on the "New Rule" button; rearrange the rule order by clicking on
+    the up and down arrows in the "Move" column; enable and disable specific
+    rules by clicking on the icon in the "Enabled" column; and edit individual
+    rules by clicking on the icon in the "Edit" column or on the rule
+    name.</para>
+    <para>
+      <tip>Please note, that the rules are executed in the order displayed
+      here. For example, if an email is deleted by the blacklist, the following
+      rules will not have any influence on this email.</tip>
+    </para>
+  </entry>--><!-- English entry:
+<entry id="filters_rules">
+    <title>Rules: Filter Rules</title>
+    <para>This is the main rules screen. From here you can create new rules by
+    clicking on the "New Rule" button; rearrange the rule order by clicking on
+    the up and down arrows or entering new rule positions in the "Move" column;
+    enable and disable specific rules by clicking on the icon in the "Enabled"
+    column; and edit individual rules by clicking on the icon in the "Edit"
+    column or on the rule name.</para>
+    <para>
+      <tip>Please note, that the rules are executed in the order displayed
+      here. For example, if an email is deleted by the blacklist, the following
+      rules will not have any influence on this email.</tip>
+    </para>
+  </entry>--><!-- English entry:
+<entry id="filters_rules">
+    <title>Rules: Filter Rules</title>
+    <para>This is the main rules screen. From here you can create new rules by
+    clicking on the "New Rule" button; rearrange the rule order by clicking on
+    the up and down arrows or entering new rule positions in the "Move" column;
+    enable and disable specific rules by clicking on the icon in the "Enabled"
+    column; and edit individual rules by clicking on the icon in the "Edit"
+    column or on the rule name.</para>
+    <para>
+      <tip>Please note, that the rules are executed in the order displayed
+      here. For example, if an email is deleted by the blacklist, the following
+      rules will not have any influence on this email.</tip>
+    </para>
+  </entry>--><!-- English entry:
+<entry id="filters_rules">
+    <title>Rules: Filter Rules</title>
+    <para>This is the main rules screen. From here you can create new rules by
+    clicking on the "New Rule" button; rearrange the rule order by clicking on
+    the up and down arrows or entering new rule positions in the "Move" column;
+    enable and disable specific rules by clicking on the icon in the "Enabled"
+    column; and edit individual rules by clicking on the icon in the "Edit"
+    column or on the rule name.</para>
+    <para>
+      <tip>Please note, that the rules are executed in the order displayed
+      here. For example, if an email is deleted by the blacklist, the following
+      rules will not have any influence on this email.</tip>
+    </para>
+  </entry>--></entry>
+  <entry id="forward" md5="876cd0cf20642eab9a06d58a2eaad95c" state="changed">
+    <title>Pârsûtît</title>
+    <heading>Pârsûtît</heading>
+    <para>
+    Jûs varat noradît E-pasta adresi(-es), kurp automâtiski pârsûtît jaunpienâkuðâs vçstules.
+    </para>
+<!-- English entry:
+<entry id="forward">
+    <title>Forward</title>
+    <para>You may choose to automatically forward your incoming mail to a
+    number of other mail addresses.</para>
+  </entry>--><!-- English entry:
+<entry id="forward">
+    <title>Forward</title>
+    <para>You may choose to automatically forward your incoming mail to a
+    number of other mail addresses.</para>
+  </entry>--><!-- English entry:
+<entry id="forward">
+    <title>Forward</title>
+    <para>You may choose to automatically forward your incoming mail to a
+    number of other mail addresses.</para>
+  </entry>--><!-- English entry:
+<entry id="forward">
+    <title>Forward</title>
+    <para>You may choose to automatically forward your incoming mail to a
+    number of other mail addresses.</para>
+  </entry>--></entry>
+  <entry id="forward-addresses" md5="ab4033b99005075d3d099ca8c879c7d1" state="changed">
+    <title>Pârsûtît: Adreses</title>
+    <heading>Pârsûtît: Adreses</heading>
+    <para>
+    Jûs varat izvçlçties pârsûtît jaunpienâkuðâs vçstules uz citu E-pasta adresi. Jûs varat norâdît neierobeþotu adreðu skaitu, katru adresi ievadot atseviðíâ rindâ.
+    </para>
+<!-- English entry:
+<entry id="forward-addresses">
+    <title>Forward: Addresses</title>
+    <para>You may choose to have your incoming mail redirected to another
+    account. You may enter as many addresses as you like. Enter each address on
+    a new line.</para>
+  </entry>--><!-- English entry:
+<entry id="forward-addresses">
+    <title>Forward: Addresses</title>
+    <para>You may choose to have your incoming mail redirected to another
+    account. You may enter as many addresses as you like. Enter each address on
+    a new line.</para>
+  </entry>--><!-- English entry:
+<entry id="forward-addresses">
+    <title>Forward: Addresses</title>
+    <para>You may choose to have your incoming mail redirected to another
+    account. You may enter as many addresses as you like. Enter each address on
+    a new line.</para>
+  </entry>--><!-- English entry:
+<entry id="forward-addresses">
+    <title>Forward: Addresses</title>
+    <para>You may choose to have your incoming mail redirected to another
+    account. You may enter as many addresses as you like. Enter each address on
+    a new line.</para>
+  </entry>--></entry>
+  <entry id="forward-keepcopy" md5="3b755b6dc934d2a5e75c74d577ae3a8f" state="changed">
+    <title>Pârsûtît: Saglabât kopiju</title>
+    <heading>Pârsûtît: Saglabât kopiju</heading>
+    <para>
+    Ja Jûs izvçlçsieties ðo opciju, jaunpienâkuðo vçstuïu kopijas tiks saglabâtas ðajâ pastkastîtç, kâ arî tiks pârsûtîtas uz Jûsu norâdîtajâm pârsûtîðanas adresçm.
+    </para>
+<!-- English entry:
+<entry id="forward-keepcopy">
+    <title>Forward: Keep Copy</title>
+    <para>If you select this option, a copy of your incoming messages will be
+    saved in this account as well as being sent to the addresses to which you
+    have your mail forwarded.</para>
+  </entry>--><!-- English entry:
+<entry id="forward-keepcopy">
+    <title>Forward: Keep Copy</title>
+    <para>If you select this option, a copy of your incoming messages will be
+    saved in this account as well as being sent to the addresses to which you
+    have your mail forwarded.</para>
+  </entry>--><!-- English entry:
+<entry id="forward-keepcopy">
+    <title>Forward: Keep Copy</title>
+    <para>If you select this option, a copy of your incoming messages will be
+    saved in this account as well as being sent to the addresses to which you
+    have your mail forwarded.</para>
+  </entry>--><!-- English entry:
+<entry id="forward-keepcopy">
+    <title>Forward: Keep Copy</title>
+    <para>If you select this option, a copy of your incoming messages will be
+    saved in this account as well as being sent to the addresses to which you
+    have your mail forwarded.</para>
+  </entry>--></entry>
+  <entry id="pref-show_filter_msg" md5="8ae1c08eeabece935b2b4f212c42361a" state="changed">
+    <title>Izvçle: Râdît detalizçtus filtru statusa paziòojumus?</title>
+    <para>
+    Ja tiek lietots IMAP filtrçðanas dzinis, ðî izvçle nosaka, cik pïâpîgs ir filtrçðanas process. Ja ir uzstâdîts "Jâ", katra caur filtriem izgâjusî vçstule izsauks uz ekrâna atseviðíu informatîvo paziòojumu uzreiz pçc vçstules apstrâdes. Ja ir uzstâdîts "Nç", tiks parâdîts tikai filtru darbîbas kopsavilkums.
+    </para>
+<!-- English entry:
+<entry id="pref-show_filter_msg">
+    <title>Preference: Show detailed filter status messages?</title>
+    <para>If using the IMAP filtering driver, this preference controls how
+    verbose the filtering process is. If set to yes, every message filtered
+    will result in a separate notification message output to the screen
+    immediately after the message is processed. If set to no, only a summary of
+    filter actions will be output to the screen.</para>
+  </entry>--><!-- English entry:
+<entry id="pref-show_filter_msg">
+    <title>Preference: Show detailed filter status messages?</title>
+    <para>If using the IMAP filtering driver, this preference controls how
+    verbose the filtering process is. If set to yes, every message filtered
+    will result in a separate notification message output to the screen
+    immediately after the message is processed. If set to no, only a summary of
+    filter actions will be output to the screen.</para>
+  </entry>--><!-- English entry:
+<entry id="pref-show_filter_msg">
+    <title>Preference: Show detailed filter status messages?</title>
+    <para>If using the IMAP filtering driver, this preference controls how
+    verbose the filtering process is. If set to yes, every message filtered
+    will result in a separate notification message output to the screen
+    immediately after the message is processed. If set to no, only a summary of
+    filter actions will be output to the screen.</para>
+  </entry>--><!-- English entry:
+<entry id="pref-show_filter_msg">
+    <title>Preference: Show detailed filter status messages?</title>
+    <para>If using the IMAP filtering driver, this preference controls how
+    verbose the filtering process is. If set to yes, every message filtered
+    will result in a separate notification message output to the screen
+    immediately after the message is processed. If set to no, only a summary of
+    filter actions will be output to the screen.</para>
+  </entry>--></entry>
+  <entry id="pref-filter_seen" md5="d8ed2a21acac08d50d0c0e2e27ae5d54" state="changed">
+    <title>Izvçle: Filtrçt tikai [ne]lasîtâs vçstules?</title>
+    <para>
+    Ðî izvçle nosaka, kad IMAP filtrçðanas dzinis apstrâdâs INBOX esoðâs vçstules. Jûs varat apstrâdât visas INBOX esoðâs vçstules vai TIKAI tâs, kas atzîmçtas kâ nelasîtas vai arî TIKAI tâs, kas atzîmçtas kâ lasîtas.
+    </para>
+<!-- English entry:
+<entry id="pref-filter_seen">
+    <title>Preference: Filter only [un]seen messages?</title>
+    <para>This preference identifies when the IMAP filtering driver will
+    attempt to apply rules to the INBOX. You can either apply filters to all
+    messages, apply filters ONLY to messages that are marked unseen, or apply
+    filters ONLY to message that have been marked seen.</para>
+  </entry>--><!-- English entry:
+<entry id="pref-filter_seen">
+    <title>Preference: Filter only [un]seen messages?</title>
+    <para>This preference identifies when the IMAP filtering driver will
+    attempt to apply rules to the INBOX. You can either apply filters to all
+    messages, apply filters ONLY to messages that are marked unseen, or apply
+    filters ONLY to message that have been marked seen.</para>
+  </entry>--><!-- English entry:
+<entry id="pref-filter_seen">
+    <title>Preference: Filter only [un]seen messages?</title>
+    <para>This preference identifies when the IMAP filtering driver will
+    attempt to apply rules to the INBOX. You can either apply filters to all
+    messages, apply filters ONLY to messages that are marked unseen, or apply
+    filters ONLY to message that have been marked seen.</para>
+  </entry>--><!-- English entry:
+<entry id="pref-filter_seen">
+    <title>Preference: Filter only [un]seen messages?</title>
+    <para>This preference identifies when the IMAP filtering driver will
+    attempt to apply rules to the INBOX. You can either apply filters to all
+    messages, apply filters ONLY to messages that are marked unseen, or apply
+    filters ONLY to message that have been marked seen.</para>
+  </entry>--></entry>
+  <entry id="rule" md5="70b8b9599c0a68a262f01fbd71c4dd7a" state="changed">
+    <title>Filtra likumi</title>
+    <heading>Filtra likumi</heading>
+    <para>
+    Likums ir Jûsu pasta filtru uzbûves stûrakmens. Tas sastâv no viena vai vairâkiem nosacîjumiem un vienas vai vairâkâm darbîbâm. Kad jums pienâk jauna vçstule, tâ tiek apstrâdâta atbilstoði Jûsu filtru nosacîjumiem. Ja tiek konstatçta atbilstîba filtra nosacîjumiem, vçstule tiek apstrâdâta atbilstoði likumâ noteiktajâm darbîbâm. Filtri ir ïoti noderîgi, lai atbrîvotos no nevçlamâm vçstulçm vai organizçtu Jûsu pastkastîti, uzglabâjot vçstules tematiskâs mapçs.
+    </para>
+<!-- English entry:
+<entry id="rule">
+    <title>Filter Rule</title>
+    <para>A rule is the basic building block of your mail filters, it consists
+    of one or more conditions and one or more actions. When a message is sent
+    to you, it is processed through the conditions of your filter rules, if the
+    conditions that you specify are met, then the actions that you specify will
+    be performed on that message. Filters can be very useful for automatically
+    deleting unwanted mail, or making your mail account more managable by
+    storing related messages into different folders.</para>
+  </entry>--><!-- English entry:
+<entry id="rule">
+    <title>Filter Rule</title>
+    <para>A rule is the basic building block of your mail filters, it consists
+    of one or more conditions and one or more actions. When a message is sent
+    to you, it is processed through the conditions of your filter rules, if the
+    conditions that you specify are met, then the actions that you specify will
+    be performed on that message. Filters can be very useful for automatically
+    deleting unwanted mail, or making your mail account more managable by
+    storing related messages into different folders.</para>
+  </entry>--><!-- English entry:
+<entry id="rule">
+    <title>Filter Rule</title>
+    <para>A rule is the basic building block of your mail filters, it consists
+    of one or more conditions and one or more actions. When a message is sent
+    to you, it is processed through the conditions of your filter rules, if the
+    conditions that you specify are met, then the actions that you specify will
+    be performed on that message. Filters can be very useful for automatically
+    deleting unwanted mail, or making your mail account more managable by
+    storing related messages into different folders.</para>
+  </entry>--><!-- English entry:
+<entry id="rule">
+    <title>Filter Rule</title>
+    <para>A rule is the basic building block of your mail filters, it consists
+    of one or more conditions and one or more actions. When a message is sent
+    to you, it is processed through the conditions of your filter rules, if the
+    conditions that you specify are met, then the actions that you specify will
+    be performed on that message. Filters can be very useful for automatically
+    deleting unwanted mail, or making your mail account more managable by
+    storing related messages into different folders.</para>
+  </entry>--></entry>
+  <entry id="rule-action" md5="774acc549f6ddfd52871f957de2deee5" state="changed">
+    <title>Filtra likums: Darbîba</title>
+    <para>
+    Ir iespçjamas vairâkas darbîbas, ja pienâkusî vçstule atbilst filtra likuma nosacîjumiem. Ievçrojiet, ka visas zemâk uzskaitîtâs darbîbas var nebût Jums pieejamas, darbîbu sarakstâ parâdîsies tikai sistçmas filtrçjoðâs programmatûras atbalstîtâs.
+    </para>
+    <heading>Nogâdât manâ INBOX</heading>
+    <para>
+    Vçstule tiks saglabâta Jûsu INBOX. Tâ ir noklusçtâ opcija.
+    </para>
+    <heading>Nogâdât ðajâ mapç</heading>
+    <para>
+    Vçstule tiks nogâdâta norâdîtajâ mapç.
+    </para>
+    <heading>Atmest vçstuli</heading>
+    <para>
+    Vçstule tiks klusîtçm izdzçsta. Nedz Jûs, nedz nosûtîtâjs nesaòems paziòojumu par notikuðo.
+    </para>
+    <heading>Pâradresçt vçstuli</heading>
+    <para>
+    Vçstule tiks pârsûtîta uz Jûsu norâdîto E-pasta adresi, nesaglabâjot vçstules kopiju Jûsu pastkastîtç.
+    </para>
+    <heading>Piegâdât manâ INBOX un pâradresçt</heading>
+    <para>
+    Vçstule tiks pârsûtîta uz Jûsu norâdîto E-pasta adresi, saglabâjot vçstules kopiju Jûsu pastkastîtç.
+    </para>
+    <heading>Noraidît vçstuli ar pamatojumu</heading>
+    <para>
+    Oriìinâlâ vçstule tiks klusîtçm izdzçsta, nosûtot tâs autoram jaunu vçstuli ar Jûsu norâdîto tekstu.
+    </para>
+<!-- English entry:
+<entry id="rule-action">
+    <title>Filter Rule: Action</title>
+    <para>These are the possible actions to take if an incoming message matches
+    the specified conditions. Note that all of these options may not be
+    available to you - only the options that work with the underlying filtering
+    software will be shown.</para>
+    <heading>Deliver this message into my INBOX</heading>
+    <para>The message will be saved in your INBOX. This is the default
+    option.</para>
+    <heading>Deliver to this mailbox</heading>
+    <para>The message will be delivered to the specified folder.</para>
+    <heading>Discard this message</heading>
+    <para>The message will be silently deleted. Neither you nor the sender will
+    receive notification that this has happened.</para>
+    <heading>Redirect this message to</heading>
+    <para>The message will be sent to the email address that you specify. No
+    copy of the message will remain in this account.</para>
+    <heading>Deliver to my INBOX and redirect to</heading>
+    <para>The message will be sent to the email address that you specify, and a
+    copy of the message will remain in your INBOX.</para>
+    <heading>Reject this message with reason</heading>
+    <para>The original message will be discarded, and a new message will be
+    sent to the sender with the text that you specify.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-action">
+    <title>Filter Rule: Action</title>
+    <para>These are the possible actions to take if an incoming message matches
+    the specified conditions. Note that all of these options may not be
+    available to you - only the options that work with the underlying filtering
+    software will be shown.</para>
+    <heading>Deliver this message into my INBOX</heading>
+    <para>The message will be saved in your INBOX. This is the default
+    option.</para>
+    <heading>Deliver to this mailbox</heading>
+    <para>The message will be delivered to the specified folder.</para>
+    <heading>Discard this message</heading>
+    <para>The message will be silently deleted. Neither you nor the sender will
+    receive notification that this has happened.</para>
+    <heading>Redirect this message to</heading>
+    <para>The message will be sent to the email address that you specify. No
+    copy of the message will remain in this account.</para>
+    <heading>Deliver to my INBOX and redirect to</heading>
+    <para>The message will be sent to the email address that you specify, and a
+    copy of the message will remain in your INBOX.</para>
+    <heading>Reject this message with reason</heading>
+    <para>The original message will be discarded, and a new message will be
+    sent to the sender with the text that you specify.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-action">
+    <title>Filter Rule: Action</title>
+    <para>These are the possible actions to take if an incoming message matches
+    the specified conditions. Note that all of these options may not be
+    available to you - only the options that work with the underlying filtering
+    software will be shown.</para>
+    <heading>Deliver this message into my INBOX</heading>
+    <para>The message will be saved in your INBOX. This is the default
+    option.</para>
+    <heading>Deliver to this mailbox</heading>
+    <para>The message will be delivered to the specified folder.</para>
+    <heading>Discard this message</heading>
+    <para>The message will be silently deleted. Neither you nor the sender will
+    receive notification that this has happened.</para>
+    <heading>Redirect this message to</heading>
+    <para>The message will be sent to the email address that you specify. No
+    copy of the message will remain in this account.</para>
+    <heading>Deliver to my INBOX and redirect to</heading>
+    <para>The message will be sent to the email address that you specify, and a
+    copy of the message will remain in your INBOX.</para>
+    <heading>Reject this message with reason</heading>
+    <para>The original message will be discarded, and a new message will be
+    sent to the sender with the text that you specify.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-action">
+    <title>Filter Rule: Action</title>
+    <para>These are the possible actions to take if an incoming message matches
+    the specified conditions. Note that all of these options may not be
+    available to you - only the options that work with the underlying filtering
+    software will be shown.</para>
+    <heading>Deliver this message into my INBOX</heading>
+    <para>The message will be saved in your INBOX. This is the default
+    option.</para>
+    <heading>Deliver to this mailbox</heading>
+    <para>The message will be delivered to the specified folder.</para>
+    <heading>Discard this message</heading>
+    <para>The message will be silently deleted. Neither you nor the sender will
+    receive notification that this has happened.</para>
+    <heading>Redirect this message to</heading>
+    <para>The message will be sent to the email address that you specify. No
+    copy of the message will remain in this account.</para>
+    <heading>Deliver to my INBOX and redirect to</heading>
+    <para>The message will be sent to the email address that you specify, and a
+    copy of the message will remain in your INBOX.</para>
+    <heading>Reject this message with reason</heading>
+    <para>The original message will be discarded, and a new message will be
+    sent to the sender with the text that you specify.</para>
+  </entry>--></entry>
+  <entry id="rule-combine" md5="15a1cee3a778b72560a03aea738c4b28" state="changed">
+    <title>Filtra likums: Kombinçt opcijas</title>
+    <para>
+    Ir iespçjams norâdît vairâkus nosacîjumus viena likuma ietvaros, tos loìiski grupçjot (un/vai). Nav iespçjams radît kompleksus filtrus, izmantojot vienlaicîgi abus loìiskos nosacîjumus.
+    </para>
+    <heading>Un</heading>
+    <para>
+    Ja izvçlçsieties UN, ienâkoðai vçstulei ir jâatbilst visiem norâdîtajiem nosacîjumiem, lai izpildîtos Jûsu norâdîtâs darbîbas. 
+    </para>
+    <heading>Vai</heading>
+    <para>
+    Ja izvçlçsieties VAI, filtrâ norâdîtâs darbîbas tiks izpildîtas, ja tiks konstatçta atbilstîba vismaz vienam filtra nosacîjumam.
+    </para>
+<!-- English entry:
+<entry id="rule-combine">
+    <title>Filter Rule: Combine Options</title>
+    <para>You may define multiple conditions within a single rule. You may
+    group them together logically using "and"/"or". You may not create complex
+    filters containg both types of conditions.</para>
+    <heading>And</heading>
+    <para>If you select AND, an incoming message must match every condition
+    that you specify in order for the actions to be executed.</para>
+    <heading>Or</heading>
+    <para>If you select OR, the specified actions will be executed if at least
+    one of the conditions is met.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-combine">
+    <title>Filter Rule: Combine Options</title>
+    <para>You may define multiple conditions within a single rule. You may
+    group them together logically using "and"/"or". You may not create complex
+    filters containg both types of conditions.</para>
+    <heading>And</heading>
+    <para>If you select AND, an incoming message must match every condition
+    that you specify in order for the actions to be executed.</para>
+    <heading>Or</heading>
+    <para>If you select OR, the specified actions will be executed if at least
+    one of the conditions is met.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-combine">
+    <title>Filter Rule: Combine Options</title>
+    <para>You may define multiple conditions within a single rule. You may
+    group them together logically using "and"/"or". You may not create complex
+    filters containg both types of conditions.</para>
+    <heading>And</heading>
+    <para>If you select AND, an incoming message must match every condition
+    that you specify in order for the actions to be executed.</para>
+    <heading>Or</heading>
+    <para>If you select OR, the specified actions will be executed if at least
+    one of the conditions is met.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-combine">
+    <title>Filter Rule: Combine Options</title>
+    <para>You may define multiple conditions within a single rule. You may
+    group them together logically using "and"/"or". You may not create complex
+    filters containg both types of conditions.</para>
+    <heading>And</heading>
+    <para>If you select AND, an incoming message must match every condition
+    that you specify in order for the actions to be executed.</para>
+    <heading>Or</heading>
+    <para>If you select OR, the specified actions will be executed if at least
+    one of the conditions is met.</para>
+  </entry>--></entry>
+  <entry id="rule-mark" md5="ecabf7aaede106b7dd32a2aee05cee57" state="changed">
+    <title>Filtra likums: Atzîmçt vçstuli</title>
+    <para>
+    Ir iespçjams kâ vienu no filtra darbîbâm norâdît vçstules atzîmçðanu ar vienu vai vairâkiem IMAP karodziòiem. Iespçjamâs vçrtîbas ir Lasîts, Svarîgs, Atbildçts un Dzçsts.
+    </para>
+<!-- English entry:
+<entry id="rule-mark">
+    <title>Filter Rule: Mark Message</title>
+    <para>You may specify marking a message with one or more IMAP flags as one
+    of the actions in a rule. The possible values are Seen, Important,
+    Answered, and Deleted.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-mark">
+    <title>Filter Rule: Mark Message</title>
+    <para>You may specify marking a message with one or more IMAP flags as one
+    of the actions in a rule. The possible values are Seen, Important,
+    Answered, and Deleted.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-mark">
+    <title>Filter Rule: Mark Message</title>
+    <para>You may specify marking a message with one or more IMAP flags as one
+    of the actions in a rule. The possible values are Seen, Flagged For Followup,
+    Answered, and Deleted.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-mark">
+    <title>Filter Rule: Mark Message</title>
+    <para>You may specify marking a message with one or more IMAP flags as one
+    of the actions in a rule. The possible values are Seen, Flagged For Followup,
+    Answered, and Deleted.</para>
+  </entry>--></entry>
+  <entry id="rule-matches" md5="2fe0ccfd87fca17aea372e9829ca0e21" state="changed">
+    <title>Filtra likums: Atbilstîbas</title>
+    <para>
+    Ikviens likuma nosacîjums sastâv no 3 komponentiem: pirmais ir pârbaudâmais lauks, otrais - veicamâs salîdzinâðanas veids, treðais - informâcija, atbilstîba kurai ir jâpârbauda.
+    Ir vairâki atðíirîgi veicamâs salîdzinâðanas veidi. Izmantojamie veidi ikvienam laukam ir atkarîgi no lauka tipa un filtrçjoðâs programmatûras spçjâm. Tâdçjâdi, visas zemâk uzskaitîtâs atbilstîbas opcijas var neparâdîties laukam piemçrojamo veidu sarakstâ. </para>
+    <heading>Satur</heading>
+    <para>
+    Tiks uzskatîts par patiesu, ja norâdîtais teksts tiks atrasts jebkur laukâ. Piemçram: user@example bûs patiess joe_user@example.com gadîjumâ.
+    </para>
+    <heading>Nesatur</heading>
+    <para>
+    Tiks uzskatîts par patiesu, ja norâdîtais teksts netiks atrasts jebkur laukâ. Piemçram: user@example bûs patiess user_joe@example.com gadîjumâ.
+    </para>
+    <heading>Ir</heading>
+    <para>
+    Tiks uzskatîts par patiesu, ja norâdîtais teksts precîzi atbildîs lauka saturam. Piemçram: user@example.com ir patiess tikai user@example.com gadîjumâ.
+    </para>
+    <heading>Nav</heading>
+    <para>
+    Tiks uzskatîts par patiesu, ja norâdîtais teksts precîzi neatbildîs lauka saturam. Piemçram: user@example nav user@example.com.
+    </para>
+    <heading>Sâkas ar</heading>
+    <para>
+    Tiks uzskatîts par patiesu, ja norâdîtais teksts atradîsies lauka sâkumâ. Piemçram: user@example ir patiess user@example.com gadîjumâ.
+    </para>
+    <heading>Nesâkas ar</heading>
+    <para>
+    Tiks uzskatîts par patiesu, ja norâdîtais teksts neatradîsies lauka sâkumâ. Piemçram: @example.com ir patiess user@example.com gadîjumâ.
+    </para>
+    <heading>Beidzas ar</heading>
+    <para>
+    Tiks uzskatîts par patiesu, ja norâdîtais teksts atradîsies lauka beigâs. Piemçram: @example.com ir patiess user@example.com gadîjumâ.
+    </para>
+    <heading>Nebeidzas ar</heading>
+    <para>
+    Tiks uzskatîts par patiesu, ja norâdîtais teksts neatradîsies lauka beigâs. Piemçram: @horde.org ir patiess user@example.com gadîjumâ.
+    </para>
+    <heading>Eksistç</heading>
+    <para>
+    Tiks uzskatîts par patiesu, ja norâdîtâ galvene (header) vçstulç eksistç, neatkarîgi no tâ satura.
+    </para>
+    <heading>Neeksistç</heading>
+    <para>
+    Tiks uzskatîts par patiesu, ja norâdîtâ galvene (header) vçstulç neeksistç.
+    </para>
+    <heading>Regex</heading>
+    <para>
+    Regex ïauj lietot kompleksas POSIX savietojamas loìiskâs izteiksmes vçstuïu galveòu salîdzinâðanai. Piemçram: "Received from [*\.*\.*\.*] by (hosta|hostb).example.com*" atbilst "Received from [172.16.100.1] by hosta.example.com on Tuesday"
+    </para>
+    <heading>Atbilstîba</heading>
+    <para>
+    [Atbilstîba] ir lîdzîga [Satur], izòemot iespçju lietot "*" un "?" kâ aizstâjçjzîmes. "*" aizstâj jebkuru zîmju skaitu, "?" aizvieto tikai vienu zîmi. Piemçram, "*user?@example.com" atbildîs gan "user1@example.com" gan "otheruser2@example.com"
+    </para>
+    <heading>Neatbilst</heading>
+    <para>
+    [Neatbilst] ir lîdzîgs [Atbilst], tikai tas iegûs noliedzoðu vçrtîbu, ja norâdîtais teksts atbildîs galvenes lauka saturam.
+    </para>
+    <heading>Mazâks</heading>
+    <para>
+    Ðî pârbaude ïauj salîdzinât Jûsu norâdîto skaitlisko lielumu ar vçrtîbu vçstules galvenes laukâ.
+    </para>
+    <heading>Mazâks vai vienâds</heading>
+    <para>
+    Ðî pârbaude ïauj salîdzinât Jûsu norâdîto skaitlisko lielumu ar vçrtîbu vçstules galvenes laukâ.
+    </para>
+    <heading>Vienâds</heading>
+    <para>
+    Ðî pârbaude ïauj salîdzinât Jûsu norâdîto skaitlisko lielumu ar vçrtîbu vçstules galvenes laukâ.
+    </para>
+    <heading>Lielâks vai vienâds</heading>
+    <para>
+    Ðî pârbaude ïauj salîdzinât Jûsu norâdîto skaitlisko lielumu ar vçrtîbu vçstules galvenes laukâ.
+    </para>
+    <heading>Lielâks</heading>
+    <para>
+    Ðî pârbaude ïauj salîdzinât Jûsu norâdîto skaitlisko lielumu ar vçrtîbu vçstules galvenes laukâ.
+    </para>
+<!-- English entry:
+<entry id="rule-matches">
+    <title>Filter Rule: Matches</title>
+    <para>There are 3 components to each condition in a rule. The first is the
+    field to examine. The second is the type of comparison to perform. The
+    third is the value to which the field should be compared. There are a few
+    different types of comparisons that can be performed. The comparisons
+    available for any given field will depend on both the type of the field and
+    what the underlying filtering software can handle. Thus, all potential
+    matching options listed below may not appear for a given field.</para>
+    <heading>Contains</heading>
+    <para>Will be considered to be true if the specified string is found
+    anywhere on the line. Example: user@example would match
+    joe_user@example.com</para>
+    <heading>Doesn't Contain</heading>
+    <para>Will be considered to be true if the specified string is not found
+    anywhere on the line. Example: user@example would not match
+    joe_user@example.com</para>
+    <heading>Is</heading>
+    <para>Will be considered to be true if the specified string matches the
+    line exactly. Example: user@example.com is user@example.com</para>
+    <heading>Isn't</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the line exactly. Example: user@example is not user@example.com</para>
+    <heading>Begins with</heading>
+    <para>Will be considered to be true if the specified string matches the
+    beginning of the line. Example: user@example will match
+    user@example.com</para>
+    <heading>Doesn't begin with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the beginning of the line. Example: user@example.com will not match
+    user@example</para>
+    <heading>Ends with</heading>
+    <para>Will be considered to be true if the specified string matches the end
+    of the line. Example: example.com will match user@example.com</para>
+    <heading>Doesn't end with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the end of the line. Example: horde.org will not match
+    user@example.com</para>
+    <heading>Exists</heading>
+    <para>Will be considered to be true if the specified header exists in the
+    message, regardless of what its value is.</para>
+    <heading>Doesn't Exist</heading>
+    <para>Will be considered to be true if the specified header does not exist
+    in the message.</para>
+    <heading>Regex</heading>
+    <para>Regex allows you to use complex POSIX compatible regular expressions
+    to compare against message headers. Example: "Received from [*\.*\.*\.*] by
+    (hosta|hostb).example.com*" would match "Received from [172.16.100.1] by
+    hosta.example.com on Tuesday"</para>
+    <heading>Matches</heading>
+    <para>Matches is similar to contains, with the exception that you may use *
+    and ? as wildcards. An * will match any number of characters, and a ? will
+    match exactly one charater. Example: "*user?@example.com" will match both
+    "user1@example.com" and "otheruser2@example.com"</para>
+    <heading>Doesn't match</heading>
+    <para>Doesn't match is the same as matches except that it will evaluate to
+    false if the specified value matches the string in the message
+    header.</para>
+    <heading>Less than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Less than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-matches">
+    <title>Filter Rule: Matches</title>
+    <para>There are 3 components to each condition in a rule. The first is the
+    field to examine. The second is the type of comparison to perform. The
+    third is the value to which the field should be compared. There are a few
+    different types of comparisons that can be performed. The comparisons
+    available for any given field will depend on both the type of the field and
+    what the underlying filtering software can handle. Thus, all potential
+    matching options listed below may not appear for a given field.</para>
+    <heading>Contains</heading>
+    <para>Will be considered to be true if the specified string is found
+    anywhere on the line. Example: user@example would match
+    joe_user@example.com</para>
+    <heading>Doesn't Contain</heading>
+    <para>Will be considered to be true if the specified string is not found
+    anywhere on the line. Example: user@example would not match
+    joe_user@example.com</para>
+    <heading>Is</heading>
+    <para>Will be considered to be true if the specified string matches the
+    line exactly. Example: user@example.com is user@example.com</para>
+    <heading>Isn't</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the line exactly. Example: user@example is not user@example.com</para>
+    <heading>Begins with</heading>
+    <para>Will be considered to be true if the specified string matches the
+    beginning of the line. Example: user@example will match
+    user@example.com</para>
+    <heading>Doesn't begin with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the beginning of the line. Example: user@example.com will not match
+    user@example</para>
+    <heading>Ends with</heading>
+    <para>Will be considered to be true if the specified string matches the end
+    of the line. Example: example.com will match user@example.com</para>
+    <heading>Doesn't end with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the end of the line. Example: horde.org will not match
+    user@example.com</para>
+    <heading>Exists</heading>
+    <para>Will be considered to be true if the specified header exists in the
+    message, regardless of what its value is.</para>
+    <heading>Doesn't Exist</heading>
+    <para>Will be considered to be true if the specified header does not exist
+    in the message.</para>
+    <heading>Regex</heading>
+    <para>Regex allows you to use complex POSIX compatible regular expressions
+    to compare against message headers. Example: "Received from [*\.*\.*\.*] by
+    (hosta|hostb).example.com*" would match "Received from [172.16.100.1] by
+    hosta.example.com on Tuesday"</para>
+    <heading>Matches</heading>
+    <para>Matches is similar to contains, with the exception that you may use *
+    and ? as wildcards. An * will match any number of characters, and a ? will
+    match exactly one charater. Example: "*user?@example.com" will match both
+    "user1@example.com" and "otheruser2@example.com"</para>
+    <heading>Doesn't match</heading>
+    <para>Doesn't match is the same as matches except that it will evaluate to
+    false if the specified value matches the string in the message
+    header.</para>
+    <heading>Less than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Less than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-matches">
+    <title>Filter Rule: Matches</title>
+    <para>There are 3 components to each condition in a rule. The first is the
+    field to examine. The second is the type of comparison to perform. The
+    third is the value to which the field should be compared. There are a few
+    different types of comparisons that can be performed. The comparisons
+    available for any given field will depend on both the type of the field and
+    what the underlying filtering software can handle. Thus, all potential
+    matching options listed below may not appear for a given field.</para>
+    <heading>Contains</heading>
+    <para>Will be considered to be true if the specified string is found
+    anywhere on the line. Example: user@example would match
+    joe_user@example.com</para>
+    <heading>Doesn't Contain</heading>
+    <para>Will be considered to be true if the specified string is not found
+    anywhere on the line. Example: user@example would not match
+    joe_user@example.com</para>
+    <heading>Is</heading>
+    <para>Will be considered to be true if the specified string matches the
+    line exactly. Example: user@example.com is user@example.com</para>
+    <heading>Isn't</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the line exactly. Example: user@example is not user@example.com</para>
+    <heading>Begins with</heading>
+    <para>Will be considered to be true if the specified string matches the
+    beginning of the line. Example: user@example will match
+    user@example.com</para>
+    <heading>Doesn't begin with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the beginning of the line. Example: user@example.com will not match
+    user@example</para>
+    <heading>Ends with</heading>
+    <para>Will be considered to be true if the specified string matches the end
+    of the line. Example: example.com will match user@example.com</para>
+    <heading>Doesn't end with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the end of the line. Example: horde.org will not match
+    user@example.com</para>
+    <heading>Exists</heading>
+    <para>Will be considered to be true if the specified header exists in the
+    message, regardless of what its value is.</para>
+    <heading>Doesn't Exist</heading>
+    <para>Will be considered to be true if the specified header does not exist
+    in the message.</para>
+    <heading>Regex</heading>
+    <para>Regex allows you to use complex POSIX compatible regular expressions
+    to compare against message headers. Example: "Received from [*\.*\.*\.*] by
+    (hosta|hostb).example.com*" would match "Received from [172.16.100.1] by
+    hosta.example.com on Tuesday"</para>
+    <heading>Matches</heading>
+    <para>Matches is similar to contains, with the exception that you may use *
+    and ? as wildcards. An * will match any number of characters, and a ? will
+    match exactly one charater. Example: "*user?@example.com" will match both
+    "user1@example.com" and "otheruser2@example.com"</para>
+    <heading>Doesn't match</heading>
+    <para>Doesn't match is the same as matches except that it will evaluate to
+    false if the specified value matches the string in the message
+    header.</para>
+    <heading>Less than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Less than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-matches">
+    <title>Filter Rule: Matches</title>
+    <para>There are 3 components to each condition in a rule. The first is the
+    field to examine. The second is the type of comparison to perform. The
+    third is the value to which the field should be compared. There are a few
+    different types of comparisons that can be performed. The comparisons
+    available for any given field will depend on both the type of the field and
+    what the underlying filtering software can handle. Thus, all potential
+    matching options listed below may not appear for a given field.</para>
+    <heading>Contains</heading>
+    <para>Will be considered to be true if the specified string is found
+    anywhere on the line. Example: user@example would match
+    joe_user@example.com</para>
+    <heading>Doesn't Contain</heading>
+    <para>Will be considered to be true if the specified string is not found
+    anywhere on the line. Example: user@example would not match
+    joe_user@example.com</para>
+    <heading>Is</heading>
+    <para>Will be considered to be true if the specified string matches the
+    line exactly. Example: user@example.com is user@example.com</para>
+    <heading>Isn't</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the line exactly. Example: user@example is not user@example.com</para>
+    <heading>Begins with</heading>
+    <para>Will be considered to be true if the specified string matches the
+    beginning of the line. Example: user@example will match
+    user@example.com</para>
+    <heading>Doesn't begin with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the beginning of the line. Example: user@example.com will not match
+    user@example</para>
+    <heading>Ends with</heading>
+    <para>Will be considered to be true if the specified string matches the end
+    of the line. Example: example.com will match user@example.com</para>
+    <heading>Doesn't end with</heading>
+    <para>Will be considered to be true if the specified string does not match
+    the end of the line. Example: horde.org will not match
+    user@example.com</para>
+    <heading>Exists</heading>
+    <para>Will be considered to be true if the specified header exists in the
+    message, regardless of what its value is.</para>
+    <heading>Doesn't Exist</heading>
+    <para>Will be considered to be true if the specified header does not exist
+    in the message.</para>
+    <heading>Regex</heading>
+    <para>Regex allows you to use complex POSIX compatible regular expressions
+    to compare against message headers. Example: "Received from [*\.*\.*\.*] by
+    (hosta|hostb).example.com*" would match "Received from [172.16.100.1] by
+    hosta.example.com on Tuesday"</para>
+    <heading>Matches</heading>
+    <para>Matches is similar to contains, with the exception that you may use *
+    and ? as wildcards. An * will match any number of characters, and a ? will
+    match exactly one charater. Example: "*user?@example.com" will match both
+    "user1@example.com" and "otheruser2@example.com"</para>
+    <heading>Doesn't match</heading>
+    <para>Doesn't match is the same as matches except that it will evaluate to
+    false if the specified value matches the string in the message
+    header.</para>
+    <heading>Less than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Less than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than or equal to</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+    <heading>Greater than</heading>
+    <para>This is a relational test which will compare the value you specify
+    and the value in the message header numerically.</para>
+  </entry>--></entry>
+  <entry id="rule-name" md5="ed8e3b8044b7e1a681b259fa605dc9ee" state="changed">
+    <title>Filtra likums: Nosaukums</title>
+    <para>
+    Filtra likuma nosaukums. To var lietot, lai identificçtu likumu filtru sarakstâ.
+    </para>
+<!-- English entry:
+<entry id="rule-name">
+    <title>Filter Rule: Name</title>
+    <para>This is a descriptive name for a rule. You may use it to identify a
+    rule in your filter listing.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-name">
+    <title>Filter Rule: Name</title>
+    <para>This is a descriptive name for a rule. You may use it to identify a
+    rule in your filter listing.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-name">
+    <title>Filter Rule: Name</title>
+    <para>This is a descriptive name for a rule. You may use it to identify a
+    rule in your filter listing.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-name">
+    <title>Filter Rule: Name</title>
+    <para>This is a descriptive name for a rule. You may use it to identify a
+    rule in your filter listing.</para>
+  </entry>--></entry>
+  <entry id="rule-stop" md5="042f935941275ddff92d53259118a2d2" state="changed">
+    <title>Filtra likums: Beigt pârbaudi</title>
+    <para>
+    Ja ir atzîmçta ðî opcija un vçstule atbilst ðim likumam, pârçjie filtri netiks pielietoti. 
+    </para>
+<!-- English entry:
+<entry id="rule-stop">
+    <title>Filter Rule: Stop Checking</title>
+    <para>If this option is checked, and a message matches this rule, the
+    remaining filters will not be processed.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-stop">
+    <title>Filter Rule: Stop Checking</title>
+    <para>If this option is checked, and a message matches this rule, the
+    remaining filters will not be processed.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-stop">
+    <title>Filter Rule: Stop Checking</title>
+    <para>If this option is checked, and a message matches this rule, the
+    remaining filters will not be processed.</para>
+  </entry>--><!-- English entry:
+<entry id="rule-stop">
+    <title>Filter Rule: Stop Checking</title>
+    <para>If this option is checked, and a message matches this rule, the
+    remaining filters will not be processed.</para>
+  </entry>--></entry>
+  <entry id="vacation" md5="330bb029e3e07392bc1c127bb1d9b94c" state="changed">
+    <title>Brîvdienas</title>
+    <heading>Brîvdienas</heading>
+    <para>
+    Brîvdienu ziòas ir automâtiski nosûtîtas atbildes cilvçkiem, kas ir rakstîjuði Jums. Tâs parasti lieto, ja atrodaties ilgstoðâ prombûtnç. 
+    </para>
+<!-- English entry:
+<entry id="vacation">
+    <title>Vacation</title>
+    <para>Vacation messages are automatic responses sent to people when they
+    email you. They are normally used when you are away for a long period of
+    time.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation">
+    <title>Vacation</title>
+    <para>Vacation messages are automatic responses sent to people when they
+    email you. They are normally used when you are away for a long period of
+    time.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation">
+    <title>Vacation</title>
+    <para>Vacation messages are automatic responses sent to people when they
+    email you. They are normally used when you are away for a long period of
+    time.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation">
+    <title>Vacation</title>
+    <para>Vacation messages are automatic responses sent to people when they
+    email you. They are normally used when you are away for a long period of
+    time.</para>
+  </entry>--></entry>
+  <entry id="vacation-period" state="new">
+     <title>Vacation Period</title>
+     <para>Vacation messages will only be sent during the period of time that you are on vacation.</para>
+  </entry>
+  <entry id="vacation-bulk" md5="a92a7ab8ec7be826f90e544fe64e9d3a" state="changed">
+    <title>Brîvdienas: Neatbildçt uz vairumvestulçm</title>
+    <para>
+    Ðî opcija ïauj izvairîties no Brîvdienu paziòojuma nosûtîðanu, ja vçstule nâk no vçstkopâm vai arî ir identificçta kâ vairumvçstule (bulk mail).
+    </para>
+<!-- English entry:
+<entry id="vacation-bulk">
+    <title>Vacation: No Respond to Bulk</title>
+    <para>Checking this option will cause vacation responses to not be sent to
+    messages that appear to come from mailing lists or that are marked as bulk
+    mail.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-bulk">
+    <title>Vacation: No Respond to Bulk</title>
+    <para>Checking this option will cause vacation responses to not be sent to
+    messages that appear to come from mailing lists or that are marked as bulk
+    mail.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-bulk">
+    <title>Vacation: No Respond to Bulk</title>
+    <para>Checking this option will cause vacation responses to not be sent to
+    messages that appear to come from mailing lists or that are marked as bulk
+    mail.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-bulk">
+    <title>Vacation: No Respond to Bulk</title>
+    <para>Checking this option will cause vacation responses to not be sent to
+    messages that appear to come from mailing lists or that are marked as bulk
+    mail.</para>
+  </entry>--></entry>
+  <entry id="vacation-days" md5="2a24527a223d1e1338e4f739826d2e2b" state="changed">
+    <title>Brîvdienas: Atbildes intervâls</title>
+    <para>
+    Nosaka, cik dienas jâgaida lîdz atkârtota Brîvdienu paziòojuma nosûtîðanai adresâtam, kas tâdu jau ir saòçmis.
+    </para>
+<!-- English entry:
+<entry id="vacation-days">
+    <title>Vacation: Reply Interval</title>
+    <para>This is the number of days to wait before sending an autoresponse to
+    an address that has already received one.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-days">
+    <title>Vacation: Reply Interval</title>
+    <para>This is the number of days to wait before sending an autoresponse to
+    an address that has already received one.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-days">
+    <title>Vacation: Reply Interval</title>
+    <para>This is the number of days to wait before sending an autoresponse to
+    an address that has already received one.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-days">
+    <title>Vacation: Reply Interval</title>
+    <para>This is the number of days to wait before sending an autoresponse to
+    an address that has already received one.</para>
+  </entry>--></entry>
+  <entry id="vacation-myemail" md5="23c118b29b383ba5abf70269cc7d7227" state="changed">
+    <title>Brîvdienas: Manas adreses</title>
+    <para>
+    Ja uz Jûsu pastkastîti pienâk vçstules vairâk nekâ vienai adresei, norâdiet tâs ðeit. Piemçram, Jums ir E-pasta adreses user@server1.net un user@server2.com, kurâm adresçtâs vçstules pienâk ðajâ pastkastîtç.
+    </para>
+<!-- English entry:
+<entry id="vacation-myemail">
+    <title>Vacation: My Email Addresses</title>
+    <para>If you have more than one email address coming to this mailbox then
+    specify them here.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-myemail">
+    <title>Vacation: My Email Addresses</title>
+    <para>If you have more than one email address coming to this mailbox then
+    specify them here.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-myemail">
+    <title>Vacation: My Email Addresses</title>
+    <para>If you have more than one email address coming to this mailbox then
+    specify them here.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-myemail">
+    <title>Vacation: My Email Addresses</title>
+    <para>If you have more than one email address coming to this mailbox then
+    specify them here.</para>
+  </entry>--></entry>
+  <entry id="vacation-noresponse" md5="9e7ace4ab8394b8d6e70bb399bee4022" state="changed">
+    <title>Brîvdienas: Nesûtît</title>
+    <para>
+    Nesûtît Brîvdienu paziòojumu ðeit norâdîtajiem adresâtiem. Katru adresi jânorâda jaunaâ rindâ.
+    </para>
+<!-- English entry:
+<entry id="vacation-noresponse">
+    <title>Vacation: No Responses</title>
+    <para>Don't send the vacation message to these recipients. Each address
+    should be on its own line.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-noresponse">
+    <title>Vacation: No Responses</title>
+    <para>Don't send the vacation message to these recipients. Each address
+    should be on its own line.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-noresponse">
+    <title>Vacation: No Responses</title>
+    <para>Don't send the vacation message to these recipients. Each address
+    should be on its own line.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-noresponse">
+    <title>Vacation: No Responses</title>
+    <para>Don't send the vacation message to these recipients. Each address
+    should be on its own line.</para>
+  </entry>--></entry>
+  <entry id="vacation-reason" md5="0c9d695636f409eb71c217e299bf2edc" state="changed">
+    <title>Brîvdienas: Iemesls</title>
+    <para>
+    Ðeit ievadîtais teksts tiks nosûtîts Jûsu Brîvdienu paziòojumâ.
+    </para>
+<!-- English entry:
+<entry id="vacation-reason">
+    <title>Vacation: Vacation Reason</title>
+    <para>This is the text that will be sent in your vacation responses.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-reason">
+    <title>Vacation: Vacation Reason</title>
+    <para>This is the text that will be sent in your vacation responses.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-reason">
+    <title>Vacation: Vacation Reason</title>
+    <para>This is the text that will be sent in your vacation responses.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-reason">
+    <title>Vacation: Vacation Reason</title>
+    <para>This is the text that will be sent in your vacation responses.</para>
+  </entry>--></entry>
+  <entry id="vacation-subject" md5="7333282ece05b30157750357a399ec09" state="changed">
+    <title>Brîvdienas: Temats</title>
+    <para>
+    Ðeit ievadîtais teksts tiks izmantots kâ Jûsu Brîvdienu paziòojuma temats.
+    </para>
+<!-- English entry:
+<entry id="vacation-subject">
+    <title>Vacation: Vacation Subject</title>
+    <para>This is the subject that will be used for vacation responses.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-subject">
+    <title>Vacation: Vacation Subject</title>
+    <para>This is the subject that will be used for vacation responses.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-subject">
+    <title>Vacation: Vacation Subject</title>
+    <para>This is the subject that will be used for vacation responses.</para>
+  </entry>--><!-- English entry:
+<entry id="vacation-subject">
+    <title>Vacation: Vacation Subject</title>
+    <para>This is the subject that will be used for vacation responses.</para>
+  </entry>--></entry>
+  <entry id="whitelist" md5="cbde7a6e185b29269376d1514163d21f" state="changed">
+    <title>Baltais saraksts</title>
+    <heading>Baltais saraksts</heading>
+    <para>
+    [Baltais saraksts] ir E-pasta adreðu saraksts, no kurâm saòemtâs vçstules Jûs noteikti vçlaties redzçt savâ pastkastîtç (INBOX). Katru adresi ir jâievada atseviðíâ rindâ.
+    </para>
+<!-- English entry:
+<entry id="whitelist">
+    <title>Whitelist</title>
+    <para>The whitelist is a list of (legitimate) email addresses that you
+    always wish to see in your INBOX. Each address should be entered on a
+    separate line.</para>
+  </entry>--><!-- English entry:
+<entry id="whitelist">
+    <title>Whitelist</title>
+    <para>The whitelist is a list of (legitimate) email addresses that you
+    always wish to see in your INBOX. Each address should be entered on a
+    separate line.</para>
+  </entry>--><!-- English entry:
+<entry id="whitelist">
+    <title>Whitelist</title>
+    <para>The whitelist is a list of (legitimate) email addresses that you
+    always wish to see in your INBOX. Each address should be entered on a
+    separate line.</para>
+  </entry>--><!-- English entry:
+<entry id="whitelist">
+    <title>Whitelist</title>
+    <para>The whitelist is a list of (legitimate) email addresses that you
+    always wish to see in your INBOX. Each address should be entered on a
+    separate line.</para>
+  </entry>--></entry>
+  <entry id="whitelist-addresses" md5="22fc837888f4e6b1e97f860eaee256e9" state="changed">
+    <title> Baltais saraksts: Adreses</title>
+    <para>
+    (Darbs turpinâs) Katra adrese ir jâievada atseviðíâ rindâ.
+    </para>
+<!-- English entry:
+<entry id="whitelist-addresses">
+    <title>Whitelist: Addresses</title>
+    <para>TODO. Each address should be entered on a separate line.</para>
+  </entry>--><!-- English entry:
+<entry id="whitelist-addresses">
+    <title>Whitelist: Addresses</title>
+    <para>TODO. Each address should be entered on a separate line.</para>
+  </entry>--><!-- English entry:
+<entry id="whitelist-addresses">
+    <title>Whitelist: Addresses</title>
+    <para>TODO. Each address should be entered on a separate line.</para>
+  </entry>--><!-- English entry:
+<entry id="whitelist-addresses">
+    <title>Whitelist: Addresses</title>
+    <para>TODO. Each address should be entered on a separate line.</para>
+  </entry>--></entry>
+  <entry id="spam-level" state="new">
+    <title>Spam Filtering: Spam Level</title>
+    <para>The system will consider messages with a likely spam score greater
+    than or equal to the number entered here as spam.</para>
+    <para>Lower numbers will catch more messages, with the drawback that there
+    is a greater chance of catching real messages.  "5" is a typical value
+    if your system is using SpamAssassin.</para>
+  </entry>
+  <entry id="spam-folder" state="new">
+    <title>Spam Filtering: Folder to receive spam</title>
+    <para>The system will file messages which it determines to be spam into
+    this folder.</para>
+  </entry>
+</help>
diff --git a/ingo/locale/nb_NO/LC_MESSAGES/ingo.mo b/ingo/locale/nb_NO/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..140c6c8
Binary files /dev/null and b/ingo/locale/nb_NO/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/nl_NL/LC_MESSAGES/ingo.mo b/ingo/locale/nl_NL/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..93538ec
Binary files /dev/null and b/ingo/locale/nl_NL/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/pl_PL/LC_MESSAGES/ingo.mo b/ingo/locale/pl_PL/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..ae471cb
Binary files /dev/null and b/ingo/locale/pl_PL/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/pt_BR/LC_MESSAGES/ingo.mo b/ingo/locale/pt_BR/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..e3a4e03
Binary files /dev/null and b/ingo/locale/pt_BR/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/pt_PT/LC_MESSAGES/ingo.mo b/ingo/locale/pt_PT/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..1634b47
Binary files /dev/null and b/ingo/locale/pt_PT/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/ro_RO/LC_MESSAGES/ingo.mo b/ingo/locale/ro_RO/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..27bd904
Binary files /dev/null and b/ingo/locale/ro_RO/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/ru_RU/LC_MESSAGES/ingo.mo b/ingo/locale/ru_RU/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..529c447
Binary files /dev/null and b/ingo/locale/ru_RU/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/sk_SK/LC_MESSAGES/ingo.mo b/ingo/locale/sk_SK/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..35227e7
Binary files /dev/null and b/ingo/locale/sk_SK/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/sl_SI/LC_MESSAGES/ingo.mo b/ingo/locale/sl_SI/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..5cbdd86
Binary files /dev/null and b/ingo/locale/sl_SI/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/sv_SE/LC_MESSAGES/ingo.mo b/ingo/locale/sv_SE/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..4a5b3d7
Binary files /dev/null and b/ingo/locale/sv_SE/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/tr_TR/LC_MESSAGES/ingo.mo b/ingo/locale/tr_TR/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..010b794
Binary files /dev/null and b/ingo/locale/tr_TR/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/uk_UA/LC_MESSAGES/ingo.mo b/ingo/locale/uk_UA/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..4b04cb3
Binary files /dev/null and b/ingo/locale/uk_UA/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/zh_CN/LC_MESSAGES/ingo.mo b/ingo/locale/zh_CN/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..9180f6a
Binary files /dev/null and b/ingo/locale/zh_CN/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/locale/zh_TW/LC_MESSAGES/ingo.mo b/ingo/locale/zh_TW/LC_MESSAGES/ingo.mo
new file mode 100644 (file)
index 0000000..1643e7f
Binary files /dev/null and b/ingo/locale/zh_TW/LC_MESSAGES/ingo.mo differ
diff --git a/ingo/po/README b/ingo/po/README
new file mode 100644 (file)
index 0000000..a985e94
--- /dev/null
@@ -0,0 +1 @@
+see horde/po/README
diff --git a/ingo/po/ca_ES.po b/ingo/po/ca_ES.po
new file mode 100644 (file)
index 0000000..8187593
--- /dev/null
@@ -0,0 +1,923 @@
+# Ingo Catalan translation.
+# Copyright 2004-2009 The Horde Project
+# This file is distributed under the same license as the Ingo package.
+# Jordi Giralt <projecte.k2@upcnet.es>, 2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo 1.1\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2006-05-08 16:29+0200\n"
+"PO-Revision-Date: 2006-02-15 17:46+0100\n"
+"Last-Translator: Jordi Giralt <projecte.k2@upcnet.es>\n"
+"Language-Team: i18n@lists.horde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: filters.php:190
+msgid " and"
+msgstr " i"
+
+#: filters.php:190
+msgid " or"
+msgstr "o"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Acció per a adreces de la llista negra:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Activar Script"
+
+#: lib/Driver/ldap.php:232
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "Ha fallat l'activació de l'script per a \"%s\": (%d) %s"
+
+#: templates/filters/settings.inc:6
+msgid "Additional Settings"
+msgstr "Opcions addicionals"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Tot el que segueix"
+
+#: lib/api.php:54
+msgid "Allow Rules"
+msgstr "Permetre regles"
+
+#: templates/rule/footer.inc:33
+msgid "Answered"
+msgstr "Respost"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Qualsevol del que segueix"
+
+#: templates/filters/footer.inc:7
+msgid "Apply Filters"
+msgstr "Aplicar filtres"
+
+#: filters.php:219
+msgid "Are you sure you want to delete this rule?"
+msgstr "Esteu segur que voleu eliminar aquesta regla?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Actualitzar automàticament l'script després de cada canvi?"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Bcc"
+
+#: lib/Storage.php:379
+msgid "Begins with"
+msgstr "Comença per"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Ha fallat la vinculació: (%s) %s"
+
+#: filters.php:149 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:87 lib/Block/overview.php:90
+msgid "Blacklist"
+msgstr "Llista negra"
+
+#: blacklist.php:107
+msgid "Blacklist Edit"
+msgstr "Edita la llista negra"
+
+#: blacklist.php:17
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "L'actual controlador de filtratge no suporta llistes negres."
+
+#: lib/Script/procmail.php:207 lib/Script/maildrop.php:176
+#: lib/Script/sieve.php:244
+msgid "Blacklisted Addresses"
+msgstr "Adreces incloses a la llista negra"
+
+#: config/fields.php.dist:88
+msgid "Body"
+msgstr "Cos"
+
+#: filters.php:187 rule.php:281
+msgid "Case Sensitive"
+msgstr "Distingeix majúscules i minúscules"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: forward.php:33 blacklist.php:73 rule.php:122 vacation.php:41
+#: whitelist.php:36
+msgid "Changes saved."
+msgstr "S'han desat els canvis."
+
+#: lib/Driver/ldap.php:75
+msgid "Connection failure"
+msgstr "Error de connexió"
+
+#: lib/Storage.php:375
+msgid "Contains"
+msgstr "Conté"
+
+#: filters.php:230 filters.php:231
+#, php-format
+msgid "Copy %s"
+msgstr "Copiar %s"
+
+#: lib/Storage.php:875
+#, php-format
+msgid "Copy of %s"
+msgstr "Còpia de %s"
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Crear carpeta"
+
+#: lib/Script/procmail.php:336 lib/Script/maildrop.php:280
+msgid "DISABLED: "
+msgstr "DESACTIVAT: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Desactivar Script"
+
+#: filters.php:219 filters.php:220
+#, php-format
+msgid "Delete %s"
+msgstr "Elimina %s"
+
+#: templates/rule/filter.inc:30
+msgid "Delete Condition"
+msgstr "Elimina la condició"
+
+#: lib/Storage.php:323
+msgid "Delete message completely"
+msgstr "Eliminar el missatge completament"
+
+#: templates/rule/footer.inc:35
+msgid "Deleted"
+msgstr "Eliminat"
+
+#: lib/Storage.php:311
+msgid "Deliver into my Inbox"
+msgstr "Entregar en la meva bústia d'entrada"
+
+#: lib/Storage.php:337
+msgid "Deliver into my Inbox and copy to"
+msgstr "Entregar en la meva bústia d'entrada i copiar a"
+
+#: lib/Storage.php:332
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Entregar en la meva bústia d'entrada i reenviar a"
+
+#: lib/Storage.php:317
+msgid "Deliver to folder"
+msgstr "Deixar a la carpeta"
+
+#: filters.php:243 filters.php:244
+#, php-format
+msgid "Disable %s"
+msgstr "Desactivar %s"
+
+#: templates/rule/header.inc:26 templates/forward/forward.inc:10
+#: templates/vacation/vacation.inc:6 templates/whitelist/whitelist.inc:10
+#: templates/blacklist/blacklist.inc:10
+msgid "Disabled"
+msgstr "Desactivada"
+
+#: templates/filters/settings.inc:13
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Mostrar avisos detallats en aplicar cada filtre?"
+
+#: templates/vacation/vacation.inc:34
+msgid "Do _not send responses to bulk or list messages"
+msgstr ""
+"_No enviar respostes a missatges de correu a graner ni a missatges de llistes"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Fer això:"
+
+#: lib/Storage.php:380
+msgid "Doesn't begin with"
+msgstr "No comença per"
+
+#: lib/Storage.php:376
+msgid "Doesn't contain"
+msgstr "No conté"
+
+#: lib/Storage.php:382
+msgid "Doesn't end with"
+msgstr "No acaba per"
+
+#: lib/Storage.php:384
+msgid "Doesn't exist"
+msgstr "No existeix"
+
+#: lib/Storage.php:387
+msgid "Doesn't match (with placeholders)"
+msgstr "No coincideix (amb comodins)"
+
+#: templates/filters/header.inc:26 lib/Block/overview.php:61
+#: lib/Block/overview.php:68 lib/Block/overview.php:81
+#: lib/Block/overview.php:89
+msgid "Edit"
+msgstr "Editar"
+
+#: filters.php:208 filters.php:210 filters.php:214 filters.php:215
+#, php-format
+msgid "Edit %s"
+msgstr "Editar %s"
+
+#: filters.php:247 filters.php:248
+#, php-format
+msgid "Enable %s"
+msgstr "Activar %s"
+
+#: templates/filters/header.inc:28
+msgid "Enabled"
+msgstr "Activat"
+
+#: lib/Storage.php:381
+msgid "Ends with"
+msgstr "Acaba per"
+
+#: lib/Storage.php:392
+msgid "Equal to"
+msgstr "Igual a"
+
+#: lib/Driver/ldap.php:139 lib/Driver/ldap.php:149 lib/Driver/ldap.php:158
+#: lib/Driver/ldap.php:168
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Error en recuperar l'actual script: (%d) %s"
+
+#: blacklist.php:71
+msgid "Error saving changes."
+msgstr "Error en desar els canvis."
+
+#: templates/filters/header.inc:22
+msgid "Existing Rules"
+msgstr "Regles existents"
+
+#: lib/Storage.php:383
+msgid "Exists"
+msgstr "Existeix"
+
+#: lib/Driver/ldap.php:144
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "Se esperava 1 objeto, s'ha obtingut %d."
+
+#: templates/filters/settings.inc:20
+msgid "Filter All Messages"
+msgstr "Filtrar tots els missatges"
+
+#: templates/filters/settings.inc:22
+msgid "Filter Only Seen Messages"
+msgstr "Filtrar només missatges llegits"
+
+#: templates/filters/settings.inc:21
+msgid "Filter Only Unseen Messages"
+msgstr "Filtrar només missatges no llegits"
+
+#: templates/filters/settings.inc:18
+msgid "Filter Options"
+msgstr "Opcions de filtratge"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Regla de filtratge"
+
+#: filters.php:113
+msgid "Filter Rules"
+msgstr "Regles"
+
+#: script.php:52
+msgid "Filter Script Display"
+msgstr "Mostrar script de filtratge"
+
+#: lib/Ingo.php:322
+msgid "Filter _Rules"
+msgstr "_Regles"
+
+#: lib/Script/imap.php:314
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr ""
+"Activitat del filtre: %s missatge(s) ha(n) estat copiat(s) a la carpeta \"%s"
+"\"."
+
+#: lib/Script/imap.php:301
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Activitat del filtre: %s missatge(s) ha(n) estat eliminat(s)."
+
+#: lib/Script/imap.php:279
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr ""
+"Activitat del filtre: %s missatge(s) ha(n) estat mogut(s) a la carpeta \"%s"
+"\"."
+
+#: lib/Script/imap.php:182
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Activitat del filtre: %s missatge(s) que coincideix(en) amb la llista negra "
+"ha(n) estat eliminat(s)."
+
+#: lib/Script/imap.php:311
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Activitat del filtre: El missatge \"%s\" ha estat copiat de \"%s\" a la "
+"carpeta \"%s\"."
+
+#: lib/Script/imap.php:296
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Activitat del filtre: El missatge \"%s\" ha estat eliminat de \"%s\"."
+
+#: lib/Script/imap.php:273
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Activitat del filtre: El missatge \"%s\" ha estat mogut de \"%s\" a la "
+"carpeta \"%s\"."
+
+#: rule.php:160
+msgid "Filter not found."
+msgstr "No s'ha trobat el filtre."
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Per a cada missatge d'entrada que coincideixi amb:"
+
+#: filters.php:167 templates/forward/forward.inc:8 lib/Block/overview.php:67
+#: lib/Block/overview.php:69
+msgid "Forward"
+msgstr "Reenviar"
+
+#: forward.php:16
+msgid "Forward is not supported in the current filtering driver."
+msgstr "L'actual controlador de filtratge no suporta reenviaments."
+
+#: lib/Script/procmail.php:282 lib/Script/maildrop.php:225
+#: lib/Script/sieve.php:214
+msgid "Forwards"
+msgstr "Reenviaments"
+
+#: forward.php:45
+msgid "Forwards Edit"
+msgstr "Editar reenviaments"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "De"
+
+#: lib/Script/sieve.php:2062
+msgid "From:"
+msgstr "De:"
+
+#: lib/Script/sieve.php:110
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr ""
+
+#: lib/Storage.php:390
+msgid "Greater than"
+msgstr "Més gran que"
+
+#: lib/Storage.php:391
+msgid "Greater than or equal to"
+msgstr "Més gran o igual que"
+
+#: templates/rule/footer.inc:31
+msgid "Important"
+msgstr "Important"
+
+#: rule.php:36
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "L'actual controlador de filtratge no suporta regles individuals."
+
+#: lib/Script/sieve.php:1860
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "No existeix la bústia especificada per a l'entrega de correu."
+
+#: lib/Storage.php:377
+msgid "Is"
+msgstr "És"
+
+#: lib/Storage.php:378
+msgid "Isn't"
+msgstr "No és"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"Es requereix el suport LDAP i no es disposa del mòdul LDAP o no ha estat "
+"carregat."
+
+#: lib/Storage.php:388
+msgid "Less than"
+msgstr "Més petit que"
+
+#: lib/Storage.php:389
+msgid "Less than or equal to"
+msgstr "Més petit o igual que"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "List-ID"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "_Marcar el missatge com a eliminat"
+
+#: templates/rule/footer.inc:24
+msgid "Mark message as:"
+msgstr "Marcar el missatge com a:"
+
+#: lib/Storage.php:386
+msgid "Matches (with placeholders)"
+msgstr "Coincideix (amb comodins)"
+
+#: lib/api.php:57
+msgid "Maximum Number of Rules"
+msgstr "Nombre màxim de regles"
+
+#: lib/Storage.php:513
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"S'ha superat el nombre màxim d'adreces de la llista negra (Adreces totals: %"
+"s, Màxim d'adreces: %s). No es poden afegir més adreces a la llista negra."
+
+#: lib/Storage.php:566
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"S'ha superat el nombre màxim d'adreces de la llista blanca (Adreces totals: %"
+"s, Màxim d'adreces: %s). No es poden afegir més adreces a la llista blanca."
+
+#: lib/Script/sieve.php:2070
+msgid "Missing address to notify"
+msgstr "Falta l'adreça on enviar la notificació"
+
+#: lib/Script/sieve.php:1728
+msgid "Missing address to redirect message to"
+msgstr "Falta l'adreça on reenviar el missatge"
+
+#: lib/Script/sieve.php:1760
+msgid "Missing reason for reject"
+msgstr "Falta el motiu del rebuig"
+
+#: lib/Script/sieve.php:1927
+msgid "Missing reason in vacation."
+msgstr "Falta el motiu de l'absència."
+
+#: templates/filters/header.inc:29
+msgid "Move"
+msgstr "Moure"
+
+#: filters.php:131 filters.php:240
+msgid "Move Rule Down"
+msgstr "Moure la regla cap avall"
+
+#: filters.php:132 filters.php:239
+msgid "Move Rule Up"
+msgstr "Moure la regla cap amunt"
+
+#: templates/vacation/vacation.inc:42
+msgid "N_umber of days between vacation replies:"
+msgstr "Nombre de _dies entre respostes per absència:"
+
+#: templates/filters/footer.inc:5 templates/filters/filter-none.inc:3
+#: lib/Storage.php:771
+msgid "New Rule"
+msgstr "Nova regla"
+
+#: lib/Ingo.php:235 lib/Ingo.php:237
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "No s'ha trobat cap element \"%s\" en la configuració del motor."
+
+#: lib/Ingo.php:233
+msgid "No backend configured for this host"
+msgstr "No s'ha configurat cap motor per a aquest servidor"
+
+#: lib/Ingo.php:210
+msgid "No backends configured in backends.php"
+msgstr "No s'ha configurat cap motor en backends.php"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "No hi ha filtres. Feu clic a \"%s\" per crear-ne un."
+
+#: lib/Script/sieve.php:1332 lib/Script/sieve.php:1425
+#: lib/Script/sieve.php:1599
+msgid "No headers specified"
+msgstr "No s'ha especificat cap capçalera"
+
+#: script.php:67
+msgid "No script generated."
+msgstr "No s'ha generat cap script."
+
+#: lib/Script/sieve.php:1614
+msgid "No strings specified"
+msgstr "No s'ha especificat cap cadena"
+
+#: lib/Storage.php:393
+msgid "Not equal to"
+msgstr "Diferent de"
+
+#: lib/Storage.php:353
+msgid "Notify email address"
+msgstr "Adreça de correu per a avisos"
+
+#: lib/Storage.php:347
+msgid "Only flag the message"
+msgstr "Només marcar el missatge"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Opcions d'actualització d'scripts."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Altres opcions"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Introducció"
+
+#: templates/javascript/new_folder.js:6
+msgid "Please enter the name of the new folder:"
+msgstr "Introduïu el nom de la nova carpeta:"
+
+#: templates/vacation/vacation.inc:60
+msgid "R_eason"
+msgstr "_Motiu"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Rebut"
+
+#: lib/Storage.php:328
+msgid "Redirect to"
+msgstr "Redirigir cap a"
+
+#: lib/Storage.php:385
+msgid "Regular expression"
+msgstr "Expressió regular"
+
+#: lib/Storage.php:343
+msgid "Reject with reason"
+msgstr "Rebutjar amb motiu"
+
+#: config/fields.php.dist:55
+msgid "Resent To"
+msgstr "Reenviat a"
+
+#: config/fields.php.dist:51
+msgid "Resent-from"
+msgstr "Reenviat - des de"
+
+#: templates/rule/footer.inc:60
+msgid "Return to Filters List"
+msgstr "Tornar a la llista de filtres"
+
+#: templates/forward/forward.inc:34 templates/vacation/vacation.inc:71
+#: templates/whitelist/whitelist.inc:24 templates/blacklist/blacklist.inc:41
+msgid "Return to Rules List"
+msgstr "Tornar a la llista de regles"
+
+#: templates/filters/header.inc:27
+msgid "Rule"
+msgstr "Regla"
+
+#: filters.php:63
+msgid "Rule Copied"
+msgstr "Regla copiada"
+
+#: filters.php:42
+msgid "Rule Deleted"
+msgstr "Regla esborrada"
+
+#: filters.php:79
+msgid "Rule Disabled"
+msgstr "Regla desactivada"
+
+#: filters.php:84
+msgid "Rule Enabled"
+msgstr "Regla activada"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name"
+msgstr "Nom de la regla"
+
+#: lib/Script/sieve.php:2064
+msgid "Rule:"
+msgstr "Regla:"
+
+#: lib/Driver/ldap.php:88
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "Ha fallat STARTTLS: (%s) %s"
+
+#: templates/rule/footer.inc:59 templates/forward/forward.inc:33
+#: templates/vacation/vacation.inc:70 templates/whitelist/whitelist.inc:23
+#: templates/blacklist/blacklist.inc:40
+msgid "Save"
+msgstr "Desar"
+
+#: templates/filters/settings.inc:29
+msgid "Save Settings"
+msgstr "Desa les opcions"
+
+# ¿Dónde está?
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "script"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Actualització de l'script"
+
+#: lib/Ingo.php:186
+msgid "Script not updated."
+msgstr "Script no actualitzat."
+
+#: lib/Ingo.php:141
+msgid "Script successfully activated."
+msgstr "Script activat amb èxit."
+
+#: lib/Ingo.php:140
+msgid "Script successfully deactivated."
+msgstr "Script desactivat amb èxit."
+
+#: templates/rule/footer.inc:29
+msgid "Seen"
+msgstr "Llegit"
+
+#: rule.php:190
+msgid "Select a field"
+msgstr "Seleccioneu un camp"
+
+#: lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "Seleccioneu la carpeta destí"
+
+#: rule.php:227
+msgid "Self-Defined Header"
+msgstr "Capçalera auto-definida"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Remitent"
+
+#: filters.php:98
+msgid "Settings successfully updated."
+msgstr "Opcions actualitzades amb èxit."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Mostrar script actiu"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Mostrar script actual"
+
+#: config/fields.php.dist:83
+msgid "Size"
+msgstr "Grandària"
+
+#: templates/rule/footer.inc:49
+msgid "Stop checking if this rule matches?"
+msgstr "Aturar la comprovació si aquesta regla coincideix?"
+
+#: templates/vacation/vacation.inc:51
+msgid "Subje_ct of vacation message:"
+msgstr "_Assumpte del missatge d'absència:"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Assumpte"
+
+#: lib/Script/sieve.php:2063
+msgid "Subject:"
+msgstr "Assumpte:"
+
+#: lib/api.php:85
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "L'adreça \"%s\" ha estat afegida a la llista negra."
+
+#: lib/api.php:104
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "L'adreça \"%s\" ha estat afegida a la llista blanca."
+
+#: lib/Ingo.php:136
+msgid "The driver said: "
+msgstr "El controlador ha dit: "
+
+#: lib/Ingo.php:135
+msgid "There was an error activating the script."
+msgstr "S'ha produït un error en activar l'script."
+
+#: lib/Ingo.php:134
+msgid "There was an error deactivating the script."
+msgstr "S'ha produït un error en desactivar l'script."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Per a"
+
+#: templates/filters/filter.html:21
+msgid "To:"
+msgstr "Per a:"
+
+#: lib/Script.php:127
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "No és possible carregar la definició de %s."
+
+#: filters.php:161 templates/vacation/vacation.inc:5 lib/Block/overview.php:60
+#: lib/Block/overview.php:62 lib/Script/procmail.php:262
+#: lib/Script/sieve.php:352
+msgid "Vacation"
+msgstr "Absència"
+
+#: vacation.php:71
+msgid "Vacation Edit"
+msgstr "Editar el missatge d'absència"
+
+#: vacation.php:16
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "L'actual controlador de filtratge no suporta notificacions d'absència."
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Adreces de llista _blanca:"
+
+#: filters.php:155 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:79 lib/Block/overview.php:82
+msgid "Whitelist"
+msgstr "Llista blanca"
+
+#: whitelist.php:55
+msgid "Whitelist Edit"
+msgstr "Editar llista blanca"
+
+#: whitelist.php:18
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "L'actual controlador de filtratge no suporta llistes blanques."
+
+#: lib/Script/procmail.php:234 lib/Script/maildrop.php:203
+#: lib/Script/sieve.php:298
+msgid "Whitelisted Addresses"
+msgstr "Adreces incloses en la llista blanca"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: filters.php:56 rule.php:144
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "No disposeu de privilegis per crear més de %d regles."
+
+#: filters.php:48 rule.php:21
+msgid "You are not allowed to create or edit custom rules."
+msgstr ""
+"No disposeu de privilegis per crear o modificar regles personalitzades."
+
+#: lib/Script/sieve.php:2061
+msgid "You have received a new message"
+msgstr "Heu rebut un missatge nou"
+
+#: vacation.php:30
+msgid ""
+"You must specify at least one email address for which the vacation messages "
+"should be activated."
+msgstr ""
+"Heu d'especificar com a mínim una adreça de correu per a la qual activar els "
+"missatges d'absència."
+
+#: lib/Script/imap.php:274 lib/Script/imap.php:297 lib/Script/imap.php:311
+msgid "[No Subject]"
+msgstr "[Sense assumpte]"
+
+#: templates/forward/forward.inc:24
+msgid "_Address(es) to forward to:"
+msgstr "Adreces a les quals _reenviar:"
+
+#: templates/vacation/vacation.inc:23
+msgid "_Addresses to not send responses to:"
+msgstr "Adreces a les quals no en_viar respostes:"
+
+#: lib/Ingo.php:327
+msgid "_Blacklist"
+msgstr "Llista _negra"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "_Eliminar completament el missatge"
+
+#: templates/blacklist/blacklist.inc:31
+msgid "_Enter each address on a new line:"
+msgstr "_Intruduïu cada adreça en una línia diferent:"
+
+#: lib/Ingo.php:333
+msgid "_Forward"
+msgstr "_Reenviar"
+
+#: templates/forward/forward.inc:17
+msgid "_Keep a copy of messages in this account?"
+msgstr "Guardar una _còpia dels missatges en aquest compte?"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "_Moure el missatge a la carpeta:"
+
+#: templates/vacation/vacation.inc:13
+msgid "_My email addresses:"
+msgstr "_Les meves adreces de correu:"
+
+# ¿Dónde está?
+#: lib/Ingo.php:336
+msgid "_Script"
+msgstr "_Script"
+
+#: lib/Ingo.php:330
+msgid "_Vacation"
+msgstr "A_bsència"
+
+#: lib/Ingo.php:324
+msgid "_Whitelist"
+msgstr "Llista _blanca"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "actiu"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "i"
+
+#: templates/filters/filter.html:13
+msgid "disabled - click to enable"
+msgstr "desactivada - feu clic per activar-la"
+
+#: filters.php:185
+msgid "field"
+msgstr "camp"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "inactiu"
+
+#: lib/Script/maildrop.php:121
+msgid "maildrop script generated by Ingo"
+msgstr "script maildrop generat per Ingo"
+
+#: filters.php:185
+msgid "match"
+msgstr "coincidir"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "o"
+
+#: lib/Script/procmail.php:128
+msgid "procmail script generated by Ingo"
+msgstr "script procmail generat per Ingo"
diff --git a/ingo/po/cs_CZ.po b/ingo/po/cs_CZ.po
new file mode 100644 (file)
index 0000000..bee13d1
--- /dev/null
@@ -0,0 +1,792 @@
+# Czech translations for Ingo.
+# Copyright 2004-2009 The Horde Project
+# This file is distributed under the same license as the Horde package.
+# Pavel Chytil <pavel@chytil.org>, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo 0.1-cvs\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2004-11-21 09:01-0800\n"
+"PO-Revision-Date: 2004-11-21 09:01-0800\n"
+"Last-Translator: Pavel Chytil <pavel@chytil.org>\n"
+"Language-Team: i18n@lists.horde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: filters.php:167
+msgid " and"
+msgstr " a"
+
+#: filters.php:167
+msgid " or"
+msgstr " nebo"
+
+#: templates/blacklist/blacklist.inc:19
+msgid "Action for blacklisted addresses:"
+msgstr "Akce pro adresy na èerné listinì:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Aktivovat Skript"
+
+#: templates/filters/settings.inc:9
+msgid "Additional Settings"
+msgstr "Doplòující Nastavení"
+
+#: templates/rule/header.inc:53
+msgid "All of the following"
+msgstr "V¹e co následuje"
+
+#: templates/rule/footer.inc:44
+msgid "Answered"
+msgstr "Zodpovìzené"
+
+#: templates/rule/header.inc:56
+msgid "Any of the following"
+msgstr "Cokoliv co následuje"
+
+#: templates/filters/footer.inc:16
+msgid "Apply Filters"
+msgstr "Aplikovat Filtry"
+
+#: filters.php:196
+msgid "Are you sure you want to delete this rule?"
+msgstr "Jste si jistí, ¾e chcete vymazat toto pravidlo?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Obnovte skript automaticky po ka¾dé zmìnì?"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Skrytá Kopie"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Zaèíná s"
+
+#: filters.php:126 templates/blacklist/blacklist.inc:8
+msgid "Blacklist"
+msgstr "Èerná Listina"
+
+#: blacklist.php:100
+msgid "Blacklist Edit"
+msgstr "Úprava Èerné Listina"
+
+#: blacklist.php:17
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "Èerná Listina není zahrnutá v souèasném driveru pro filtrování."
+
+#: lib/Script/procmail.php:209
+msgid "Blacklisted Address"
+msgstr "Adresa na Èerná Listinì"
+
+#: lib/Script/sieve.php:245
+msgid "Blacklisted Addresses"
+msgstr "Adresy na Èerná Listinì"
+
+#: config/fields.php.dist:88
+msgid "Body"
+msgstr "Zpráva"
+
+#: filters.php:164 rule.php:238
+msgid "Case Sensitive"
+msgstr "Rozli¹uje Velká a Malá Písmena"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Kopie"
+
+#: blacklist.php:69 forward.php:33 rule.php:105 vacation.php:41
+#: whitelist.php:36
+msgid "Changes saved."
+msgstr "Zmìny Ulo¾eny."
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Obsahuje"
+
+#: filters.php:204 filters.php:205
+#, php-format
+msgid "Copy %s"
+msgstr "Kopírovat %s"
+
+#: lib/Storage.php:778
+#, php-format
+msgid "Copy of %s"
+msgstr "Kopie %s"
+
+#: lib/Ingo.php:53
+msgid "Create new folder"
+msgstr "Vytvoøit novou slo¾ku"
+
+#: templates/filters/filter.html:16
+msgid "DISABLED"
+msgstr "DEAKTIVOVÁNO"
+
+#: lib/Script/procmail.php:354
+msgid "DISABLED: "
+msgstr "DEAKTIVOVÁNO: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Deaktivovat Skript"
+
+#: filters.php:196 filters.php:197
+#, php-format
+msgid "Delete %s"
+msgstr "Smazat %s"
+
+#: templates/rule/filter.inc:27
+msgid "Delete Condition"
+msgstr "Smazat Podmínku"
+
+#: lib/Storage.php:298
+msgid "Delete message completely"
+msgstr "Úplnì smazat zprávu"
+
+#: templates/rule/footer.inc:47
+msgid "Deleted"
+msgstr "Smazáno"
+
+#: lib/Storage.php:286
+msgid "Deliver into my INBOX"
+msgstr "Doruèit do PØÍCHOZÍ PO©TY"
+
+#: lib/Storage.php:312
+msgid "Deliver into my INBOX and copy to"
+msgstr "Doruèit do PØÍCHOZÍ PO©TY a kopii do"
+
+#: lib/Storage.php:307
+msgid "Deliver into my INBOX and redirect to"
+msgstr "Doruèit do PØÍCHOZÍ PO©TY a pøesmìrovat do"
+
+#: lib/Storage.php:292
+msgid "Deliver to folder"
+msgstr "Doruèit do slo¾ky"
+
+#: filters.php:218 filters.php:219
+#, php-format
+msgid "Disable %s"
+msgstr "Deaktivovat %s"
+
+#: templates/whitelist/whitelist.inc:9 templates/vacation/vacation.inc:9
+#: templates/rule/header.inc:30 templates/forward/forward.inc:9
+#: templates/blacklist/blacklist.inc:10
+msgid "Disabled"
+msgstr "Deaktivováno"
+
+#: templates/filters/settings.inc:21
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Zobrazit idetailní upozornìní pøi ka¾dém pou¾ití filtrù?"
+
+#: templates/vacation/vacation.inc:38
+msgid "Do _not send responses to bulk or list messages"
+msgstr "_Neposílat odpovìdi na zpravy oznaèené bulk nebo na zprávy z listù"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Provést:"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "Nezáèíná na:"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Neobsahuje"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "Nekonèí na:"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "Neexistuje"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "Neshoduje se"
+
+#: templates/filters/header.inc:20
+msgid "Edit"
+msgstr "Upravit"
+
+#: filters.php:185 filters.php:187 filters.php:191 filters.php:192
+#, php-format
+msgid "Edit %s"
+msgstr "Upravit %s"
+
+#: filters.php:222 filters.php:223
+#, php-format
+msgid "Enable %s"
+msgstr "Aktivovat %s"
+
+#: templates/filters/header.inc:22
+msgid "Enabled"
+msgstr "Aktivováno"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "Konèí na"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "Ronvá se"
+
+#: templates/filters/header.inc:7
+msgid "Existing Rules"
+msgstr "Existující Pravidla"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Existuje"
+
+#: templates/filters/settings.inc:30
+msgid "Filter All Messages"
+msgstr "Filtrovat V¹echny Zprávy"
+
+#: templates/filters/settings.inc:32
+msgid "Filter Only Seen Messages"
+msgstr "Filtrovat Pouze Prohlídnuté Zprávy"
+
+#: templates/filters/settings.inc:31
+msgid "Filter Only Unseen Messages"
+msgstr "iltrovat Pouze Neprohlídnuté Zprávy"
+
+#: templates/filters/settings.inc:28
+msgid "Filter Options"
+msgstr "Mo¾nosti Filtrù"
+
+#: templates/rule/header.inc:28
+msgid "Filter Rule"
+msgstr "Filtrovací Pravidlo"
+
+#: filters.php:92
+msgid "Filter Rules"
+msgstr "Filtrovací Pravidla"
+
+#: script.php:52
+msgid "Filter Script Display"
+msgstr "Zoobrazení Filtrovacího Skriptu"
+
+#: lib/Ingo.php:269
+msgid "Filter _Rules"
+msgstr "Filtrovací _Pravidla"
+
+#: lib/Script/imap.php:321
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Filtrace: %s zpráv(a) bylo(a) kopírováno(a) do slo¾ky \"%s\"."
+
+#: lib/Script/imap.php:308
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Filtrace: %s práv(a) bylo(a) vymazáno(a)."
+
+#: lib/Script/imap.php:286
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Filtrace: %s zpráv(a) bylo(a) pøesunuto(a) do slo¾ky \"%s\"."
+
+#: lib/Script/imap.php:189
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr "Filtrace: %s zpráv(a) jsou/je na èerné listinì a bylo(a) vymazány(a)."
+
+#: lib/Script/imap.php:318
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr "Filtrace: Zpráva \"%s\" od \"%s\" byla kopírována do slo¾ky \"%s\"."
+
+#: lib/Script/imap.php:303
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Filtrace: Zpráva \"%s\" od \"%s\" byla vymazána."
+
+#: lib/Script/imap.php:280
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr "Filtrace: Zpráva \"%s\" od \"%s\" byla pøesunuta do slo¾ky \"%s\"."
+
+#: rule.php:133
+msgid "Filter not found."
+msgstr "Filtrovací pravidla nebyli nalezeny."
+
+#: templates/rule/header.inc:48
+msgid "For an incoming message that matches:"
+msgstr "Pro pøíchozí zprávy které obsahují:"
+
+#: filters.php:144 templates/forward/forward.inc:7
+msgid "Forward"
+msgstr "Pøeposlat"
+
+#: forward.php:16
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Pøeposlání není zahrnuto v souèasném driveru pro filtrování."
+
+#: lib/Script/procmail.php:296
+msgid "Forwards"
+msgstr "Pøeposlání"
+
+#: forward.php:46
+msgid "Forwards Edit"
+msgstr "Upravit Pøeposlání"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Od"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Vìt¹í ne¾"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Vìt¹í nebo rovno"
+
+#: templates/rule/footer.inc:41
+msgid "Important"
+msgstr "Dùle¾ité"
+
+#: rule.php:26
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr ""
+"Individuální pravidla nejsou zahrnuty v souèasném driveru pro filtrování."
+
+#: lib/Script/sieve.php:1783
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Byla vybrána neexistující slo¾ka pro doruèení zprávy."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "Je"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "Není"
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Men¹í ne¾"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Men¹í nebo rovno"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "Seznam-Id"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "Mar_k message as deleted"
+msgstr "Ozna_èit zprávu za vymazanou"
+
+#: templates/rule/footer.inc:33
+msgid "Mark message as:"
+msgstr "Oznaèit Zprávu jako:"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "Shoduje se"
+
+#: lib/Storage.php:486
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Byl pøekroèen maximální limit adres na èerné listinì (Celkový poèet adres: %"
+"s, Maximální poèet adres: %s). Nelze pøidat adresu na èernou listinu."
+
+#: lib/Storage.php:541
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Byl pøekroèen maximální limit adres na bílé listinì (Celkový poèet adres: %"
+"s, Maximální poèet adres: %s). Nelze pøidat adresu na bílou listinu."
+
+#: lib/Script/sieve.php:1646
+msgid "Missing address to redirect message to"
+msgstr "Chybí adresa pro pøesmìrování zprávy"
+
+#: lib/Script/sieve.php:1680
+msgid "Missing reason for reject"
+msgstr "Chybí dùvod pro zamítnutí zprávy"
+
+#: lib/Script/sieve.php:1850
+msgid "Missing reason in vacation."
+msgstr "Chybí dùvod v dovolené."
+
+#: templates/filters/header.inc:23
+msgid "Move"
+msgstr "Pøesunout"
+
+#: filters.php:109 filters.php:215
+msgid "Move Rule Down"
+msgstr "Posunout Pravidlo Dolù"
+
+#: filters.php:110 filters.php:214
+msgid "Move Rule Up"
+msgstr "Posunout Pravidlo Nahoru"
+
+#: templates/vacation/vacation.inc:46
+msgid "N_umber of days between vacation replies:"
+msgstr "P_oèet dnù mezi odpovìdi dovolené:"
+
+#: templates/filters/filter-none.inc:4 templates/filters/footer.inc:13
+#: lib/Storage.php:729
+msgid "New Rule"
+msgstr "Nové Pravidlo"
+
+#: lib/Ingo.php:204 lib/Ingo.php:206
+#, php-format
+msgid "No '%s' element found in backend configuration."
+msgstr "®ádný element '%s' nebyl nalezen v konfiguraci backendu."
+
+#: lib/Ingo.php:202
+msgid "No backend configured for this host"
+msgstr "Backend nebyl konfigurován pro tento host."
+
+#: lib/Ingo.php:179
+msgid "No backends configured in backends.php"
+msgstr "Backend nebyl konfigurován v backends.php"
+
+#: templates/filters/filter-none.inc:4
+#, php-format
+msgid "No filters. Click '%s' to create a new filter."
+msgstr "¬ádné filtry. Kliknìte '%s' pro vytvoøení nového filtru."
+
+#: lib/Script/sieve.php:1233 lib/Script/sieve.php:1333
+#: lib/Script/sieve.php:1515
+msgid "No headers specified"
+msgstr "Nebyla uvedena ¾ádná hlavièka."
+
+#: script.php:67
+msgid "No script generated."
+msgstr "Nebyl generován ¾ádný skript."
+
+#: lib/Script/sieve.php:1530
+msgid "No strings specified"
+msgstr "Nebyli uvedeny ¾ádné znaky"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Nerovná se"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Mo¾nosti pro aktualizaci skriptu."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Dal¹í Mo¾nosti"
+
+#: templates/javascript/new_folder.js:6
+msgid "Please enter the name of the new folder:"
+msgstr "Prosím zadejte název nové slo¾ky:"
+
+#: templates/vacation/vacation.inc:64
+msgid "R_eason"
+msgstr "D_ùvod"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Pøijato"
+
+#: lib/Storage.php:303
+msgid "Redirect to"
+msgstr "Pøesmìrovat do"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Regular expression"
+
+#: lib/Storage.php:318
+msgid "Reject with reason"
+msgstr "Zamítnuto s dùvodem"
+
+#: config/fields.php.dist:55
+msgid "Resent To"
+msgstr "Pøeposláno Komu"
+
+#: config/fields.php.dist:51
+msgid "Resent-from"
+msgstr "Pøeposláno-Odkoho"
+
+#: templates/rule/footer.inc:72
+msgid "Return to Filters List"
+msgstr "Návrat k Seznamu Filtrù"
+
+#: templates/whitelist/whitelist.inc:28 templates/vacation/vacation.inc:75
+#: templates/forward/forward.inc:38 templates/blacklist/blacklist.inc:43
+msgid "Return to Rules List"
+msgstr "Návrat k Seznamu Filtrovacích Pravidel"
+
+#: templates/filters/header.inc:21
+msgid "Rule"
+msgstr "Pravidlo"
+
+#: filters.php:45
+msgid "Rule Copied"
+msgstr "Pravislo bylo kopírováno"
+
+#: filters.php:39
+msgid "Rule Deleted"
+msgstr "Pravidlo bylo Smazáno"
+
+#: filters.php:59
+msgid "Rule Disabled"
+msgstr "Pravidlo bylo Deaktivováno"
+
+#: filters.php:64
+msgid "Rule Enabled"
+msgstr "Pravidlo bylo Aktivováno"
+
+#: templates/rule/header.inc:39
+msgid "Rule Name"
+msgstr "Název Pravidla"
+
+#: templates/whitelist/whitelist.inc:27 templates/vacation/vacation.inc:74
+#: templates/rule/footer.inc:71 templates/forward/forward.inc:37
+#: templates/blacklist/blacklist.inc:42
+msgid "Save"
+msgstr "Ulo¾it"
+
+#: templates/filters/settings.inc:47
+msgid "Save Settings"
+msgstr "Mo¾nosti Ulo¾ení"
+
+#: templates/script/header.inc:3
+msgid "Script"
+msgstr "Skript"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Aktualizace Skriptu"
+
+#: lib/Ingo.php:229
+msgid "Script not updated."
+msgstr "Skript nebyl Aktualizován."
+
+#: lib/Ingo.php:136
+msgid "Script successfully activated."
+msgstr "Skript byl úspì¹nì aktivován."
+
+#: lib/Ingo.php:135
+msgid "Script successfully deactivated."
+msgstr "Skript byl úspì¹nì deaktivován."
+
+#: templates/rule/footer.inc:38
+msgid "Seen"
+msgstr "Prohlídnuté"
+
+#: rule.php:163
+msgid "Select a field"
+msgstr "Vybrat pole"
+
+#: lib/Ingo.php:50
+msgid "Select target folder"
+msgstr "Vybrat cílovou slo¾ku"
+
+#: rule.php:184
+msgid "Self-Defined Header"
+msgstr "Sama se Definující Hlavièka"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Odesílatel"
+
+#: filters.php:78
+msgid "Settings successfully updated."
+msgstr "Va¹e nastavení bylo úspì¹nì aktualizováno."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Zobrazit Aktivní Skript"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Zobrazit Aktuální Skript"
+
+#: config/fields.php.dist:83
+msgid "Size"
+msgstr "Velikost"
+
+#: templates/rule/footer.inc:61
+msgid "Stop checking if this rule matches?"
+msgstr "Zatstavit kontrolu pokud se shoduje s tímto pravodlem?"
+
+#: templates/vacation/vacation.inc:55
+msgid "Subje_ct of vacation message:"
+msgstr "Pøed_mìt pro zprávu o dovolené:"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Pøedmìt"
+
+#: lib/Ingo.php:131
+msgid "The driver said: "
+msgstr "Zpráva od driveru: "
+
+#: lib/Ingo.php:130
+msgid "There was an error activating the script."
+msgstr "Nastala chyba pøi aktivaci skriptu."
+
+#: lib/Ingo.php:129
+msgid "There was an error deactivating the script."
+msgstr "Nastala chyba pøi deaktivaci skriptu."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Komu"
+
+#: lib/Script.php:116
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Nelze dosáhnout definici pro %s."
+
+#: filters.php:138 templates/vacation/vacation.inc:7
+#: lib/Script/procmail.php:272
+msgid "Vacation"
+msgstr "Dovolená"
+
+#: vacation.php:66
+msgid "Vacation Edit"
+msgstr "Upravit Dovolenou"
+
+#: lib/Script/sieve.php:352
+msgid "Vacation Message"
+msgstr "Zpráva o Dovolené"
+
+#: vacation.php:16
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "Nelze pou¾ít Dovolenou se souèasným driverem pro filtraci."
+
+#: templates/whitelist/whitelist.inc:18
+msgid "Wh_itelist addresses:"
+msgstr "Bí_lé adresy:"
+
+#: filters.php:132 templates/whitelist/whitelist.inc:7
+msgid "Whitelist"
+msgstr "Bílá listina"
+
+#: whitelist.php:55
+msgid "Whitelist Edit"
+msgstr "Upravit Bílou listinu"
+
+#: whitelist.php:18
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Nelze pou¾ít Bílou listinu se souèasným driverem pro filtraci."
+
+#: lib/Script/procmail.php:240 lib/Script/sieve.php:299
+msgid "Whitelisted Addresses"
+msgstr "Adresy na Bilé listinì"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: vacation.php:30
+msgid ""
+"You must specify at least one email address for which the vacation messages "
+"should be activated."
+msgstr "Musí být uvedena nejménì jedna adresa pro pou¾ití Dovolené"
+
+#: lib/Script/imap.php:281 lib/Script/imap.php:304 lib/Script/imap.php:318
+msgid "[No Subject]"
+msgstr "[®ádný Pøedmìt]"
+
+#: templates/forward/forward.inc:27
+msgid "_Address(es) to forward to:"
+msgstr "_Adresa(y) pro pøeposlání:"
+
+#: templates/vacation/vacation.inc:28
+msgid "_Addresses to not send responses to:"
+msgstr "_Adresy kterám nebude zaslána odpovìï:"
+
+#: lib/Ingo.php:274
+msgid "_Blacklist"
+msgstr "_Èerná Listina"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "_Delete message completely"
+msgstr "_Úplné Smazání Zprávy"
+
+#: templates/blacklist/blacklist.inc:33
+msgid "_Enter each address on a new line:"
+msgstr "_Vlo¾it ka¾dou adresu na nový øádek:"
+
+#: lib/Ingo.php:280
+msgid "_Forward"
+msgstr "_Pøeposlat"
+
+#: templates/forward/forward.inc:19
+msgid "_Keep a copy of messages in this account?"
+msgstr "_Ponechat kopii zprávy na tomto úètu?"
+
+#: templates/blacklist/blacklist.inc:24
+msgid "_Move message to folder:"
+msgstr "_Pøesunout zprávu do slo¾ky:"
+
+#: templates/vacation/vacation.inc:18
+msgid "_My email addresses:"
+msgstr "_Moje emailové adresy:"
+
+#: lib/Ingo.php:283
+msgid "_Script"
+msgstr "_Skript"
+
+#: lib/Ingo.php:277
+msgid "_Vacation"
+msgstr "_Dovolená"
+
+#: lib/Ingo.php:271
+msgid "_Whitelist"
+msgstr "_Bílá listina"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "a:"
+
+#: filters.php:162
+msgid "field"
+msgstr "pole"
+
+#: filters.php:162
+msgid "match"
+msgstr "shoda"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "nebo"
+
+#: lib/Script/procmail.php:126
+msgid "procmail script generated by Ingo"
+msgstr "procmail skript generovaný Ingem"
+
+#: lib/Script/sieve.php:111
+msgid "sieve filter generated by Ingo"
+msgstr "sieve filter generovaný Ingem"
diff --git a/ingo/po/da_DK.po b/ingo/po/da_DK.po
new file mode 100644 (file)
index 0000000..30aec01
--- /dev/null
@@ -0,0 +1,965 @@
+# Danish translations for Ingo package
+# Danske oversættelser for pakke Ingo.
+# Copyright 2005-2009 The Horde Project
+# This file is distributed under the same license as the Ingo package.
+# Brian Truelsen <horde+i18n@briantruelsen.dk>, 2005-2006.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo H3 (1.2-cvs)\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2006-03-11 12:34+0100\n"
+"PO-Revision-Date: 2006-03-11 12:51+0100\n"
+"Last-Translator: Brian Truelsen <horde+i18n@briantruelsen.dk>\n"
+"Language-Team: i18n@lists.horde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: filters.php:222
+msgid " and"
+msgstr " og"
+
+#: filters.php:222
+msgid " or"
+msgstr " eller"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Handling for uønskede adresser:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Aktivér script"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "Aktivering af scripted til \"%s\" mislykkedes: (%d) %s"
+
+#: templates/filters/settings.inc:6
+msgid "Additional Settings"
+msgstr "Yderligere indstillinger"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Alle nedenstående"
+
+#: lib/api.php:54
+msgid "Allow Rules"
+msgstr "Tillad regler"
+
+#: templates/rule/footer.inc:33
+msgid "Answered"
+msgstr "Besvaret"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Vilkårlige af nedenstående"
+
+#: templates/filters/footer.inc:7
+msgid "Apply Filters"
+msgstr "Påfør filtre"
+
+#: filters.php:251
+msgid "Are you sure you want to delete this rule?"
+msgstr "Er du sikker på, at du vil slette denne regel?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Opdatér automatisk scriptet efter hver ændring?"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Bcc"
+
+#: lib/Storage.php:387
+msgid "Begins with"
+msgstr "Starter med"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Tilkobling fejlede: (%s) %s"
+
+#: filters.php:173 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:87 lib/Block/overview.php:90
+msgid "Blacklist"
+msgstr "Blackliste"
+
+#: blacklist.php:107
+msgid "Blacklist Edit"
+msgstr "Ændre sortlistning"
+
+#: blacklist.php:17
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "Sortlistning understøttes ikke af den nuværende filtreringsmekanisme."
+
+#: lib/Script/maildrop.php:176 lib/Script/procmail.php:207
+#: lib/Script/sieve.php:252
+msgid "Blacklisted Addresses"
+msgstr "Sortlistede adresser"
+
+#: config/fields.php.dist:88
+msgid "Body"
+msgstr "Besked"
+
+#: filters.php:219 rule.php:297
+msgid "Case Sensitive"
+msgstr "Forskel på store og små bogstaver"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: blacklist.php:73 forward.php:33 rule.php:128 vacation.php:41
+#: whitelist.php:36 spam.php:38
+msgid "Changes saved."
+msgstr "Ændringer gemt."
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Forbindelsesfejl"
+
+#: lib/Storage.php:383
+msgid "Contains"
+msgstr "Indeholder"
+
+#: filters.php:262 filters.php:263
+#, php-format
+msgid "Copy %s"
+msgstr "Kopiér %s"
+
+#: lib/Storage.php:905 lib/Storage/sql.php:569
+#, php-format
+msgid "Copy of %s"
+msgstr "Kopi af %s"
+
+#: lib/Ingo.php:63
+msgid "Create new folder"
+msgstr "Opret ny mappe"
+
+#: lib/Script/maildrop.php:280 lib/Script/procmail.php:336
+msgid "DISABLED: "
+msgstr "Slået FRA: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Inaktivér script"
+
+#: filters.php:251 filters.php:252
+#, php-format
+msgid "Delete %s"
+msgstr "Slet %s"
+
+#: templates/rule/filter.inc:30
+msgid "Delete Condition"
+msgstr "Slet betingelse"
+
+#: lib/Storage.php:331
+msgid "Delete message completely"
+msgstr "Slet beskeder totalt"
+
+#: templates/rule/footer.inc:35
+msgid "Deleted"
+msgstr "Slettet"
+
+#: lib/Storage.php:319
+msgid "Deliver into my Inbox"
+msgstr "Aflevér i min Indbakke"
+
+#: lib/Storage.php:345
+msgid "Deliver into my Inbox and copy to"
+msgstr "Aflevér i min Indbakke og kopiér til"
+
+#: lib/Storage.php:340
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Aflevér i min Indbakke og omadressér til"
+
+#: lib/Storage.php:325
+msgid "Deliver to folder"
+msgstr "Aflevér i mappe"
+
+#: filters.php:276 filters.php:277
+#, php-format
+msgid "Disable %s"
+msgstr "Slå %s fra"
+
+#: templates/spam/spam.inc:7 templates/whitelist/whitelist.inc:10
+#: templates/vacation/vacation.inc:6 templates/rule/header.inc:26
+#: templates/forward/forward.inc:10 templates/blacklist/blacklist.inc:10
+msgid "Disabled"
+msgstr "Slået fra"
+
+#: templates/filters/settings.inc:13
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Vis detaljerede notifikationer når hvert filter udføres?"
+
+#: templates/vacation/vacation.inc:34
+msgid "Do _not send responses to bulk or list messages"
+msgstr "Send ikke meddelelser til masse- eller liste-beskeder"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Gør dette:"
+
+#: lib/Storage.php:388
+msgid "Doesn't begin with"
+msgstr "Starter ikke med"
+
+#: lib/Storage.php:384
+msgid "Doesn't contain"
+msgstr "Indeholder ikke"
+
+#: lib/Storage.php:390
+msgid "Doesn't end with"
+msgstr "Slutter ikke med"
+
+#: lib/Storage.php:392
+msgid "Doesn't exist"
+msgstr "Findes ikke"
+
+#: lib/Storage.php:395
+msgid "Doesn't match (with placeholders)"
+msgstr "Passer ikke (med pladsholder)"
+
+#: templates/filters/header.inc:26 lib/Block/overview.php:61
+#: lib/Block/overview.php:68 lib/Block/overview.php:81
+#: lib/Block/overview.php:89 lib/Block/overview.php:97
+msgid "Edit"
+msgstr "Rediger"
+
+#: filters.php:240 filters.php:242 filters.php:246 filters.php:247
+#, php-format
+msgid "Edit %s"
+msgstr "Ret %s"
+
+#: filters.php:285 filters.php:286
+#, php-format
+msgid "Enable %s"
+msgstr "Slå %s til"
+
+#: templates/filters/header.inc:28
+msgid "Enabled"
+msgstr "Slået til"
+
+#: lib/Storage.php:389
+msgid "Ends with"
+msgstr "Ender med"
+
+#: lib/Storage.php:400
+msgid "Equal to"
+msgstr "Lig med"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Der opstod en fejl under hentning af aktuel rutine: (%d) %s"
+
+#: blacklist.php:71
+msgid "Error saving changes."
+msgstr "Fejl under lagring af ændringer."
+
+#: templates/filters/header.inc:22
+msgid "Existing Rules"
+msgstr "Eksisterende regler"
+
+#: lib/Storage.php:391
+msgid "Exists"
+msgstr "Findes"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "Forventede 1 objekt, fik %d."
+
+#: templates/filters/settings.inc:20
+msgid "Filter All Messages"
+msgstr "Filtrér alle beskeder"
+
+#: templates/filters/settings.inc:22
+msgid "Filter Only Seen Messages"
+msgstr "Filtrér kun læste beskeder"
+
+#: templates/filters/settings.inc:21
+msgid "Filter Only Unseen Messages"
+msgstr "Filtrér kun ulæste beskeder"
+
+#: templates/filters/settings.inc:18
+msgid "Filter Options"
+msgstr "Filter-indstillinger"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Filterregel"
+
+#: filters.php:137
+msgid "Filter Rules"
+msgstr "Filterregler"
+
+#: script.php:52
+msgid "Filter Script Display"
+msgstr "Visning af filter-script"
+
+#: lib/Ingo.php:375
+msgid "Filter _Rules"
+msgstr "Filterregler"
+
+#: lib/Script/imap.php:314
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Filteraktivitet: %s besked(er) er blevet kopieret til mappen \"%s\"."
+
+#: lib/Script/imap.php:301
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Filteraktivitet: %s besked(er) er blevet slettet."
+
+#: lib/Script/imap.php:279
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Filteraktivitet: %s besked(er) er flyttet til mappen \"%s\"."
+
+#: lib/Script/imap.php:182
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr "Filteraktivitet: %s besked(er), der var sortlistet, er slettet."
+
+#: lib/Script/imap.php:311
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Filteraktivitet: Beskeden \"%s\" fra \"%s\" er kopieret til mappen \"%s\"."
+
+#: lib/Script/imap.php:296
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Filteraktivitet: Beskeden \"%s\" fra \"%s\" er slettet."
+
+#: lib/Script/imap.php:273
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Filteraktivitet: Beskeden \"%s\" fra \"%s\" er flyttet til mappen \"%s\"."
+
+#: rule.php:176
+msgid "Filter not found."
+msgstr "Filter ikke fundet"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "For en indkommende besked, som passer til:"
+
+#: filters.php:191 templates/forward/forward.inc:8 lib/Block/overview.php:67
+#: lib/Block/overview.php:69
+msgid "Forward"
+msgstr "Videresend"
+
+#: forward.php:16
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Videresendelse er ikke understøttet af den nuværende filtermekanisme."
+
+#: lib/Script/maildrop.php:225 lib/Script/procmail.php:282
+#: lib/Script/sieve.php:212
+msgid "Forwards"
+msgstr "Videresendelse"
+
+#: forward.php:45
+msgid "Forwards Edit"
+msgstr "Redigér videresendelser"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Fra"
+
+#: lib/Script/sieve.php:2145
+msgid "From:"
+msgstr "Fra:"
+
+#: lib/Script/sieve.php:111
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Genereret af Ingo (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:398
+msgid "Greater than"
+msgstr "Større end"
+
+#: lib/Storage.php:399
+msgid "Greater than or equal to"
+msgstr "Større end eller lig med"
+
+#: templates/rule/footer.inc:31
+msgid "Important"
+msgstr "Vigtigt"
+
+#: rule.php:36
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr ""
+"Individuelle regler er ikke understøttet af den nuværende filtermekanisme."
+
+#: lib/Script/sieve.php:1943
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Ikke-eksisterende brevbakke angivet til aflevering af besked."
+
+#: lib/Storage.php:385
+msgid "Is"
+msgstr "Er"
+
+#: lib/Storage.php:386
+msgid "Isn't"
+msgstr "Er ikke"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"LDAP understøttelse er nødvendig men LDAP-modulet er ikke tilgængelig eller "
+"ikke lastet."
+
+#: lib/Storage.php:396
+msgid "Less than"
+msgstr "Mindre end"
+
+#: lib/Storage.php:397
+msgid "Less than or equal to"
+msgstr "Mindre end eller lig med"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "List-ID"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "Markér beskeden slettet"
+
+#: templates/rule/footer.inc:24
+msgid "Mark message as:"
+msgstr "Markér beskeden:"
+
+#: lib/Storage.php:394
+msgid "Matches (with placeholders)"
+msgstr "Passer til (med pladsholdere)"
+
+#: lib/api.php:57
+msgid "Maximum Number of Rules"
+msgstr "Maksimalt antal regler"
+
+#: lib/Storage.php:521
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Maksimalt antal sortlistede adresser oversteget (Antal adresser: %s, "
+"maksimalt antal: %s).  Kunne ikke tilføje nye adresser til sortlistning."
+
+#: lib/Storage.php:574
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Maksimalt antal hvidlistede adresser oversteget (Antal adresser: %s, "
+"maksimalt antal: %s).  Kunne ikke tilføje nye adresser til hvidlistning."
+
+#: templates/spam/spam.inc:18
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+"Beskeder med et sandsynlig skidtpost-pointtal større end eller lig med dette "
+"tal vil bliver håndteret som skidtpost."
+
+#: lib/Script/sieve.php:2153
+msgid "Missing address to notify"
+msgstr "Mangler adresser at informere"
+
+#: lib/Script/sieve.php:1811
+msgid "Missing address to redirect message to"
+msgstr "Mangler adresser at omadressere til"
+
+#: lib/Script/sieve.php:1843
+msgid "Missing reason for reject"
+msgstr "Mangler årsag for afvisning"
+
+#: lib/Script/sieve.php:2010
+msgid "Missing reason in vacation."
+msgstr "Mangler årsag i ferie."
+
+#: templates/filters/header.inc:30
+msgid "Move"
+msgstr "Flyt"
+
+#: filters.php:155 filters.php:272
+msgid "Move Rule Down"
+msgstr "Flyt regel ned"
+
+#: filters.php:156 filters.php:271
+msgid "Move Rule Up"
+msgstr "Flyt regel op"
+
+#: templates/vacation/vacation.inc:42
+msgid "N_umber of days between vacation replies:"
+msgstr "Antal dage mellem ferie-svar:"
+
+#: templates/filters/filter-none.inc:3 templates/filters/footer.inc:5
+#: lib/Storage.php:801
+msgid "New Rule"
+msgstr "Ny regel"
+
+#: lib/Ingo.php:225 lib/Ingo.php:227
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "\"%s\" element ikke fundet i <em>backend</em>-konfiguration."
+
+#: lib/Ingo.php:218
+msgid "No backend configured for this host"
+msgstr "Ingen <em>backend</em> konfigureret for denne server"
+
+#: lib/Ingo.php:194
+msgid "No backends configured in backends.php"
+msgstr "Ingen <em>backends</em> konfigureret i <code>backends.php</code>"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Ingen filtre. Click \"%s\" for at oprettet et nyt filter."
+
+#: lib/Script/sieve.php:1415 lib/Script/sieve.php:1508
+#: lib/Script/sieve.php:1682
+msgid "No headers specified"
+msgstr "Ingen brevhoveder angivet"
+
+#: script.php:67
+msgid "No script generated."
+msgstr "Script ikke genereret."
+
+#: lib/Script/sieve.php:1697
+msgid "No strings specified"
+msgstr "Ingen tekst-strenge angivet"
+
+#: lib/Storage.php:401
+msgid "Not equal to"
+msgstr "Ikke lig med"
+
+#: lib/Storage.php:361
+msgid "Notify email address"
+msgstr "Informér e-post-adresser"
+
+#: lib/Storage.php:355
+msgid "Only flag the message"
+msgstr "Markér kun beskeden"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Indstillinger vedrørende script-opdatering."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Andre indstillinger"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Overblik"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Indtast venligst navnet til den nye mappe:"
+
+#: templates/vacation/vacation.inc:60
+msgid "R_eason"
+msgstr "Årsag"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Modtaget"
+
+#: lib/Storage.php:336
+msgid "Redirect to"
+msgstr "Omadresser til"
+
+#: lib/Storage.php:393
+msgid "Regular expression"
+msgstr "Regulære udtryk"
+
+#: lib/Storage.php:351
+msgid "Reject with reason"
+msgstr "Afvis med årsag"
+
+#: config/fields.php.dist:55
+msgid "Resent To"
+msgstr "Gensendt til"
+
+#: config/fields.php.dist:51
+msgid "Resent-from"
+msgstr "Gensendt fra"
+
+#: templates/rule/footer.inc:60
+msgid "Return to Filters List"
+msgstr "Vend tilbage til filterfortegnelsen"
+
+#: templates/spam/spam.inc:38 templates/whitelist/whitelist.inc:24
+#: templates/vacation/vacation.inc:71 templates/forward/forward.inc:34
+#: templates/blacklist/blacklist.inc:41
+msgid "Return to Rules List"
+msgstr "Vend tilbage til regelfortegnelsen"
+
+#: templates/filters/header.inc:27
+msgid "Rule"
+msgstr "Regel"
+
+#: filters.php:77
+msgid "Rule Copied"
+msgstr "Regel kopieret"
+
+#: filters.php:56
+msgid "Rule Deleted"
+msgstr "Regel slettet"
+
+#: filters.php:93
+msgid "Rule Disabled"
+msgstr "Regel slået fra"
+
+#: filters.php:98
+msgid "Rule Enabled"
+msgstr "Regel slået til"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name"
+msgstr "Regelnavn"
+
+#: lib/Script/sieve.php:2147
+msgid "Rule:"
+msgstr "Regel:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "STARTTLS fejlede: (%s) %s"
+
+#: lib/Ingo.php:390
+msgid "S_pam"
+msgstr "Skidtpost"
+
+#: templates/spam/spam.inc:37 templates/whitelist/whitelist.inc:23
+#: templates/vacation/vacation.inc:70 templates/rule/footer.inc:59
+#: templates/forward/forward.inc:33 templates/blacklist/blacklist.inc:40
+msgid "Save"
+msgstr "Gem"
+
+#: templates/filters/settings.inc:29
+msgid "Save Settings"
+msgstr "Gem indstillinger"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Script"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Opdaterer script"
+
+#: lib/Ingo.php:170
+msgid "Script not updated."
+msgstr "Script ikke opdateret."
+
+#: lib/Ingo.php:141
+msgid "Script successfully activated."
+msgstr "Script slået til."
+
+#: lib/Ingo.php:140
+msgid "Script successfully deactivated."
+msgstr "Script slået fra."
+
+#: templates/rule/footer.inc:29
+msgid "Seen"
+msgstr "Set"
+
+#: rule.php:206
+msgid "Select a field"
+msgstr "Vælg et felt"
+
+#: templates/menu.inc:7
+msgid "Select ruleset to display:"
+msgstr "Vælg de regelsæt, der skal vises:"
+
+#: lib/Ingo.php:60
+msgid "Select target folder"
+msgstr "Vælg endelig mappe"
+
+#: rule.php:243
+msgid "Self-Defined Header"
+msgstr "Egen-defined brevhoved"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Afsender"
+
+#: filters.php:117
+msgid "Settings successfully updated."
+msgstr "Præferencerne opdateret."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Vis aktivt script"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Vis nuværende script"
+
+#: spam.php:15
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr ""
+"Simpel skidtpost-filtrering er ikke understøttet i den nuværende "
+"filtermekanisme."
+
+#: config/fields.php.dist:83
+msgid "Size"
+msgstr "Størrelse"
+
+#: filters.php:197 lib/Block/overview.php:95 lib/Block/overview.php:98
+#: lib/Script/sieve.php:414
+msgid "Spam Filter"
+msgstr "Skidtpost-filter"
+
+#: spam.php:59 templates/spam/spam.inc:6
+msgid "Spam Filtering"
+msgstr "Skidtpost-filtrering"
+
+#: templates/spam/spam.inc:14
+msgid "Spam _Level:"
+msgstr "Skidtpost-niveau:"
+
+#: templates/rule/footer.inc:49
+msgid "Stop checking if this rule matches?"
+msgstr "Stop videre undersøgelser, hvis denne regel passer?"
+
+#: templates/vacation/vacation.inc:51
+msgid "Subje_ct of vacation message:"
+msgstr "Emne til ferie-besked:"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Emne"
+
+#: lib/Script/sieve.php:2146
+msgid "Subject:"
+msgstr "Emne:"
+
+#: lib/api.php:89
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "Adressen \"%s\" er sat på din negativliste."
+
+#: lib/api.php:112
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "Adressen \"%s\" er sat på din positivliste."
+
+#: lib/Ingo.php:136
+msgid "The driver said: "
+msgstr "Mekanismen sagde: "
+
+#: lib/Ingo.php:135
+msgid "There was an error activating the script."
+msgstr "Der opstod en fejl under aktivering af scriptet."
+
+#: lib/Ingo.php:134
+msgid "There was an error deactivating the script."
+msgstr "Der opstod en fejl under deaktivering af scriptet."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Til"
+
+#: templates/filters/filter.html:28
+msgid "To:"
+msgstr "Til:"
+
+#: lib/Script.php:127
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Kan ikke indlæse definitionen af %s."
+
+#: filters.php:185 templates/vacation/vacation.inc:5 lib/Block/overview.php:60
+#: lib/Block/overview.php:62 lib/Script/procmail.php:262
+#: lib/Script/sieve.php:381
+msgid "Vacation"
+msgstr "Ferie"
+
+#: vacation.php:71
+msgid "Vacation Edit"
+msgstr "Ændre ferie"
+
+#: vacation.php:16
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "Ferie er ikke understøttet i den nuværende filtermekanisme."
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Hvidlistede adresser:"
+
+#: filters.php:179 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:79 lib/Block/overview.php:82
+msgid "Whitelist"
+msgstr "Positivliste"
+
+#: whitelist.php:55
+msgid "Whitelist Edit"
+msgstr "Ændre hvidliste"
+
+#: whitelist.php:18
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Hvidlistning er ikke understøttet i den nuværende filtermekanisme."
+
+#: lib/Script/maildrop.php:203 lib/Script/procmail.php:234
+#: lib/Script/sieve.php:315
+msgid "Whitelisted Addresses"
+msgstr "Hvidlistede adresser"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: filters.php:70 rule.php:160
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Du har ikke tilladelse til at danne flere end %d regler."
+
+#: filters.php:62 rule.php:21
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Du har ikke tilladelse til at danne eller ændre fælles regler."
+
+#: filters.php:51 rule.php:138
+msgid "You do not have permission to delete filter rules."
+msgstr "Du har ikke tilladelse til at slette filterregler."
+
+#: filters.php:44 filters.php:111 filters.php:122 rule.php:56 rule.php:153
+msgid "You do not have permission to edit filter rules."
+msgstr "Du har ikke tilladelse til at ændre filterregler."
+
+#: lib/Script/sieve.php:2144
+msgid "You have received a new message"
+msgstr "Du har modtaget en ny besked"
+
+#: vacation.php:30
+msgid ""
+"You must specify at least one email address for which the vacation messages "
+"should be activated."
+msgstr ""
+"Du skal angive mindst én e-mail-adresse hvortil ferie-beskeder skal være "
+"aktiveret."
+
+#: lib/Script/imap.php:274 lib/Script/imap.php:297 lib/Script/imap.php:311
+msgid "[No Subject]"
+msgstr "[Intet emne]"
+
+#: templates/forward/forward.inc:24
+msgid "_Address(es) to forward to:"
+msgstr "Adresser at videresende til:"
+
+#: templates/vacation/vacation.inc:23
+msgid "_Addresses to not send responses to:"
+msgstr "Adresser, som der ikke skal sendes respons til:"
+
+#: lib/Ingo.php:380
+msgid "_Blacklist"
+msgstr "Blackliste"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "Slet besked totalt"
+
+#: templates/blacklist/blacklist.inc:31
+msgid "_Enter each address on a new line:"
+msgstr "Kun én adresse pr. linie:"
+
+#: templates/spam/spam.inc:26
+msgid "_Folder to receive spam:"
+msgstr "Mapppe til skidtpost:"
+
+#: lib/Ingo.php:386
+msgid "_Forward"
+msgstr "Videresend"
+
+#: templates/forward/forward.inc:17
+msgid "_Keep a copy of messages in this account?"
+msgstr "Behold en kopi af beskeder i denne konto?"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "Flyt beskeder til mappe:"
+
+#: templates/vacation/vacation.inc:13
+msgid "_My email addresses:"
+msgstr "Mine e-mail-adresser:"
+
+#: lib/Ingo.php:396
+msgid "_Permissions"
+msgstr "Tilladelser"
+
+#: lib/Ingo.php:393
+msgid "_Script"
+msgstr "Script"
+
+#: lib/Ingo.php:383
+msgid "_Vacation"
+msgstr "Ferie"
+
+#: lib/Ingo.php:377
+msgid "_Whitelist"
+msgstr "Positivliste"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "aktivt"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "og"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "slået fra - klik for at slå til"
+
+#: filters.php:217
+msgid "field"
+msgstr "brevhovede"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "inaktivt"
+
+#: lib/Script/maildrop.php:121
+msgid "maildrop script generated by Ingo"
+msgstr "maildrop script genereret af Ingo"
+
+#: filters.php:217
+msgid "match"
+msgstr "passer til"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "eller"
+
+#: lib/Script/procmail.php:128
+msgid "procmail script generated by Ingo"
+msgstr "procmail script genereret af Ingo"
diff --git a/ingo/po/de_DE.po b/ingo/po/de_DE.po
new file mode 100644 (file)
index 0000000..afb7a33
--- /dev/null
@@ -0,0 +1,1043 @@
+# German translations for Ingo.
+# Copyright 2003-2009 The Horde Project
+# This file is distributed under the same license as the Ingo package.
+# Jan Schneider <jan@horde.org>, 2003-2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo 1.2-cvs\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2008-08-01 10:44+0200\n"
+"PO-Revision-Date: 2007-11-22 18:21+0100\n"
+"Last-Translator: Jan Schneider\n"
+"Language-Team: i18n@lists.horde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: filters.php:223
+msgid " and"
+msgstr " und"
+
+#: filters.php:223
+msgid " or"
+msgstr " oder"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Aktion für ausgeschlossene Adressen:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Skript aktivieren"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "Aktivieren des Skripts für \"%s\" fehlgeschlagen: (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Zusätzliche Einstellungen"
+
+#: forward.php:43
+msgid "Address(es) to forward to:"
+msgstr "Adresse(n), an die weitergeleitet werden soll:"
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr "Adresse(n), an die keine Antwort geschickt werden soll:"
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr "Erweiterte Einstellungen"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Alle der folgenden"
+
+#: lib/api.php:68
+msgid "Allow Rules"
+msgstr "Regeln erlauben"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Beantwortet"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Einer der folgenden"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Filterregeln anwenden"
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr "Sind Sie sicher, dass Sie diese Regel löschen möchten?"
+
+#: config/prefs.php.dist:32
+msgid "Automatically update the script after each change?"
+msgstr "Das Skript nach jeder Änderung automatisch aktualisieren?"
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr "Einfache Einstellungen"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Bcc"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Beginnt mit"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Verbindung fehlgeschlagen: (%s) %s"
+
+#: filters.php:174 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:95 lib/Block/overview.php:98
+msgid "Blacklist"
+msgstr "Ausschlussliste"
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr "Ausschlussliste Bearbeiten"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "Ausschlusslisten werden vom aktuellen Filtertreiber nicht unterstützt."
+
+#: lib/Script/procmail.php:219 lib/Script/sieve.php:276
+#: lib/Script/maildrop.php:197
+msgid "Blacklisted Addresses"
+msgstr "Ausgeschlossene Adressen"
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "Text"
+
+#: filters.php:220 rule.php:322
+msgid "Case Sensitive"
+msgstr "Groß-/Kleinschreibung beachten"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: spam.php:106 rule.php:141 whitelist.php:38 forward.php:56 vacation.php:81
+#: blacklist.php:70
+msgid "Changes saved."
+msgstr "Änderungen gespeichert."
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Verbindung fehlgeschlagen"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Enthält"
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr "%s kopieren"
+
+#: lib/Storage.php:993 lib/Storage/sql.php:621
+#, php-format
+msgid "Copy of %s"
+msgstr "Kopie von %s"
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "Die kompilierte Templatedatei '%s' konnte nicht gespeichert werden."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Neuen Ordner erstellen"
+
+#: lib/Script/procmail.php:352 lib/Script/maildrop.php:362
+msgid "DISABLED: "
+msgstr "DEAKTIVIERT: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Skript deaktivieren"
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr "%s löschen"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "Bedingung löschen"
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "Nachricht komplett löschen"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Gelöscht"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "In meinen Posteingang ausliefern"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr "In meinen Posteingang ausliefern und kopieren nach"
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr "In meinen Posteingang ausliefern und weiterleiten nach"
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "In diesen Ordner ausliefern"
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "Adressat (An, Cc, Bcc etc.)"
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr "%s deaktivieren"
+
+#: spam.php:160 forward.php:99 vacation.php:153
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+#: templates/rule/header.inc:26
+msgid "Disabled"
+msgstr "Deaktiviert"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr ""
+"Detailierte Benachrichtigung anzeigen bei jedem Filter, der angewendet wurde?"
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr ""
+"Keine Antworten auf Nachrichten von Mailinglisten oder Massenemails "
+"verschicken?"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Dieses tun:"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "Beginnt nicht mit"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Enthält nicht"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "Endet nicht mit"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "Existiert nicht"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "Entspricht nicht (mit Platzhaltern)"
+
+#: templates/filters/header.inc:23 lib/Block/overview.php:63
+#: lib/Block/overview.php:72 lib/Block/overview.php:87
+#: lib/Block/overview.php:97 lib/Block/overview.php:107
+msgid "Edit"
+msgstr "Bearbeiten"
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr "%s Bearbeiten"
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr "%s aktivieren"
+
+#: templates/filters/header.inc:25
+msgid "Enabled"
+msgstr "Aktiviert"
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr "Ende der Abwesenheit:"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "Endet mit"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "Gleich"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Fehler beim Lesen des aktuellen Skripts: (%d) %s"
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr "Fehler beim Speichern der Änderungen."
+
+#: templates/filters/header.inc:17
+msgid "Existing Rules"
+msgstr "Bestehende Regeln"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Existiert"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "1 Objekt erwartet, %d erhalten."
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr "Lesen vom Socket fehlgeschlagen: "
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr "Schreiben zum Socket fehlgeschlagen: "
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "Schreiben zum Socket fehlgeschlagen: (Verbindung abgebrochen!)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "Feld"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Alle Nachrichten filtern"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Nur gelesene Nachrichten filtern"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Nur ungelesene Nachrichten filtern"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Filtereinstellungen"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Filterregel"
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr "Filterregeln"
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr "Filterskript-Anzeige"
+
+#: lib/Ingo.php:382
+msgid "Filter _Rules"
+msgstr "_Filterregeln"
+
+#: lib/Script/imap.php:357
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Filteraktivität: %s Nachricht(en) wurden zum Ordner \"%s\" kopiert."
+
+#: lib/Script/imap.php:338
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Filteraktivität: %s Nachricht(en) wurden gelöscht."
+
+#: lib/Script/imap.php:314
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Filteraktivität: %s Nachricht(en) wurden zum Ordner \"%s\" verschoben."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Filteraktivität: %s Nachricht(en), die der Ausschlussliste entsprachen, "
+"wurden gelöscht."
+
+#: lib/Script/imap.php:350
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Filteraktivität: Die Nachricht \"%s\" von \"%s\" wurde zum Ordner \"%s\" "
+"kopiert."
+
+#: lib/Script/imap.php:332
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Filteraktivität: Die Nachricht \"%s\" von \"%s\" wurde gelöscht."
+
+#: lib/Script/imap.php:307
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Filteraktivität: Die Nachricht \"%s\" von \"%s\" wurde zum Ordner \"%s\" "
+"verschoben."
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr "Filterregel nicht gefunden."
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "Zur Wiedervorlage Markiert"
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr "Ordner für Spamnachrichten:"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Für eingehende Nachrichten, auf die folgende Regeln zutreffen:"
+
+#: filters.php:192 forward.php:97 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Weiterleitung"
+
+#: lib/Script/sieve.php:229
+msgid "Forward Keep Action"
+msgstr "Weiterleiten und behalten"
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Weiterleitungen werden vom aktuellen Filtertreiber nicht unterstützt."
+
+#: lib/Script/procmail.php:298 lib/Script/sieve.php:239
+#: lib/Script/maildrop.php:246
+msgid "Forwards"
+msgstr "Weiterleitung"
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr "Weiterleitung Bearbeiten"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Von"
+
+#: lib/Script/sieve.php:2948
+msgid "From:"
+msgstr "Von:"
+
+#: lib/Script/sieve.php:123
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Erzeugt von Ingo (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Größer als"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Größer als oder gleich"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr ""
+"Individuelle Regeln werden vom aktuellen Filtertreiber nicht unterstützt."
+
+#: lib/Script/sieve.php:2542
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Nicht vorhandener Ordner für die Nachrichtenauslieferung angegeben."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "Ist"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "Ist nicht"
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr "Kopien der Nachrichten in diesem Konto belassen?"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"LDAP-Unterstützung wird benötigt, aber das LDAP-Modul ist nicht verfügbar "
+"oder wurde nicht geladen."
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Kleiner als"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Kleiner als oder gleich"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "List-ID"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "Nachricht als _gelöscht markieren"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Nachricht markieren als:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "Vergleichstyp"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "Entspricht (mit Platzhaltern)"
+
+#: lib/api.php:71
+msgid "Maximum Number of Rules"
+msgstr "Maximale Anzahl an Regeln"
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Maximale Anzahl der ausgeschlossenen Adressen überschritten (Adressen "
+"insgesamt: %s, Maximale Anzahl: %s). Neue Adressen konnten nicht zur "
+"Ausschlussliste hinzugefügt werden."
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Maximale Anzahl der positivgelisteten Adressen überschritten (Adressen "
+"insgesamt: %s, Maximale Anzahl: %s). Neue Adressen konnten nicht zur "
+"Positivliste hinzugefügt werden."
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+"Nachrichten mit einem Spam-Level größer oder gleich diesem Wert werden als "
+"Spam behandelt."
+
+#: lib/Script/sieve.php:2962
+msgid "Missing address to notify"
+msgstr "Benachrichtigungsadresse fehlt"
+
+#: lib/Script/sieve.php:2343
+msgid "Missing address to redirect message to"
+msgstr "Die Adresse, zu der weitergeleitet werden soll, wurde nicht angegeben"
+
+#: lib/Script/sieve.php:2389
+msgid "Missing reason for reject"
+msgstr "Der Grund für Ablehnung wurde nicht angegeben"
+
+#: lib/Script/sieve.php:2692
+msgid "Missing reason in vacation."
+msgstr "Der Grund für die Abwesenheitsnachricht wurde nicht angegeben"
+
+#: templates/filters/header.inc:29
+msgid "Move"
+msgstr "Verschieben"
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr "Regel nach unten verschieben"
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr "Regel nach oben verschieben"
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr "Meine E-Mail-Adressen:"
+
+#: templates/filters/filter-none.inc:3 templates/filters/footer.inc:6
+#: lib/Storage.php:889
+msgid "New Rule"
+msgstr "Neue Regel"
+
+#: lib/Ingo.php:233 lib/Ingo.php:235
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "\"%s\" in der Backendkonfiguration nicht angegeben."
+
+#: lib/Ingo.php:226
+msgid "No backend configured for this host"
+msgstr "Keine Backendkonfiguration für diesen Host angegeben"
+
+#: lib/Ingo.php:202
+msgid "No backends configured in backends.php"
+msgstr "Keine Backends in backends.php konfiguriert"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Keine Filter. Klicken Sie auf \"%s\", um neue Filter anzulegen."
+
+#: lib/Script/sieve.php:1692 lib/Script/sieve.php:1841
+#: lib/Script/sieve.php:2065
+msgid "No headers specified"
+msgstr "Keine E-Mail-Köpfe angegeben"
+
+#: script.php:69
+msgid "No script generated."
+msgstr "Kein Skript erzeugt."
+
+#: lib/Script/sieve.php:2081 lib/Script/sieve.php:2165
+msgid "No strings specified"
+msgstr "Keine Texte angegeben"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Ungleich"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr "Diese E-Mail-Adresse benachrichtigen"
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr "Anzahl der Tage zwischen den Abwesenheitsnachrichten:"
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr "Nachricht nur markieren"
+
+#: config/prefs.php.dist:18
+msgid "Options about script updating."
+msgstr "Einstellungen zur Skript-Aktualisierung"
+
+#: config/prefs.php.dist:16
+msgid "Other Options"
+msgstr "Andere Einstellungen"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Übersicht"
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr "Beteiligter (Von, An etc.)"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Bitte geben Sie den Namen für den neuen Ordner an:"
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr "Grund:"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Empfangen (Received)"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Weiterleiten an"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Regulärer Ausdruck"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr "Mit folgendem Grund ablehnen"
+
+#: config/fields.php.dist:51
+msgid "Resent-From"
+msgstr "Neu versendet von (Resent-From)"
+
+#: config/fields.php.dist:55
+msgid "Resent-To"
+msgstr "Neu versendet an (Resent-To)"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "Zurück zur Filterliste"
+
+#: spam.php:62 spam.php:141 forward.php:34 forward.php:88 vacation.php:34
+#: vacation.php:117 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "Zurück zur Regelliste"
+
+#: templates/filters/header.inc:24
+msgid "Rule"
+msgstr "Regel"
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr "Regel kopiert"
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr "Regel gelöscht"
+
+#: spam.php:122 filters.php:94 forward.php:72 vacation.php:97
+msgid "Rule Disabled"
+msgstr "Regel deaktiviert"
+
+#: spam.php:113 filters.php:99 forward.php:63 vacation.php:88
+msgid "Rule Enabled"
+msgstr "Regel aktiviert"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "Regelname:"
+
+#: lib/Script/sieve.php:2950
+msgid "Rule:"
+msgstr "Regel:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "STARTTLS fehlgeschlagen: (%s) %s"
+
+#: lib/Ingo.php:396
+msgid "S_pam"
+msgstr "Spa_m"
+
+#: spam.php:79 forward.php:45 vacation.php:62
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:41
+#: templates/rule/footer.inc:60
+msgid "Save"
+msgstr "Speichern"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Einstellungen speichern"
+
+#: spam.php:116 spam.php:137 forward.php:66 forward.php:84 vacation.php:91
+#: vacation.php:113
+msgid "Save and Disable"
+msgstr "Speichern und Deaktivieren"
+
+#: spam.php:107 spam.php:139 forward.php:57 forward.php:86 vacation.php:82
+#: vacation.php:115
+msgid "Save and Enable"
+msgstr "Speichern und Aktivieren"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Skript"
+
+#: config/prefs.php.dist:17
+msgid "Script Updating"
+msgstr "Skript-Aktualisierung"
+
+#: lib/Ingo.php:178
+msgid "Script not updated."
+msgstr "Skript nicht aktualisiert."
+
+#: lib/Ingo.php:149
+msgid "Script successfully activated."
+msgstr "Skript erfolgreich aktiviert."
+
+#: lib/Ingo.php:148
+msgid "Script successfully deactivated."
+msgstr "Skript erfolgreich deaktiviert."
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Gelesen"
+
+#: rule.php:218
+msgid "Select a field"
+msgstr "Wählen Sie ein Feld aus"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Filtersatz auswählen:"
+
+#: rule.php:347 templates/blacklist/blacklist.inc:23 lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "Zielordner auswählen"
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr "Benutzerdefinierte Kopfeinträge"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Absender (Sender)"
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr "Die Einstellungen wurden erfolgreich gespeichert."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Aktives Skript anzeigen"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Aktuelles Skript anzeigen"
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr ""
+"Vereinfachte Spamfilter werden vom aktuellen Filtertreiber nicht unterstützt."
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "Größe"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr "Absender (Von, Antwort-an etc.)"
+
+#: filters.php:198 lib/Script/sieve.php:438 lib/Script/maildrop.php:301
+#: lib/Block/overview.php:105 lib/Block/overview.php:108
+msgid "Spam Filter"
+msgstr "Spamfilter"
+
+#: spam.php:158 spam.php:165
+msgid "Spam Filtering"
+msgstr "Spamfilter"
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr "Spam-Level:"
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr "Beginn der Abwesenheit:"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "Weitere Überprüfung anhalten, wenn diese Regel zutrifft?"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Betreff"
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr "Betreff der Abwesenheitsnachricht:"
+
+#: lib/Script/sieve.php:2949
+msgid "Subject:"
+msgstr "Betreff:"
+
+#: lib/api.php:103
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "Die Adresse \"%s\" wurde zu Ihrer Ausschlussliste hinzugefügt."
+
+#: lib/api.php:126
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "Die Adresse \"%s\" wurde zu Ihrer Positivliste hinzugefügt."
+
+#: lib/Ingo.php:144
+msgid "The driver said: "
+msgstr "Antwort des Treibers: "
+
+#: lib/Ingo.php:143
+msgid "There was an error activating the script."
+msgstr "Beim Aktivieren des Skripts ist ein Fehler aufgetreten."
+
+#: lib/Ingo.php:142
+msgid "There was an error deactivating the script."
+msgstr "Beim Deaktivieren des Skripts ist ein Fehler aufgetreten."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "An"
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr "Nach:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Der %s-Treiber konnte nicht geladen werden."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "Benutzerdefinierter Kopfeintrag"
+
+#: filters.php:186 vacation.php:151 lib/Script/procmail.php:278
+#: lib/Script/sieve.php:412 lib/Script/maildrop.php:276
+#: lib/Block/overview.php:61 lib/Block/overview.php:64
+msgid "Vacation"
+msgstr "Abwesenheit"
+
+#: vacation.php:158
+msgid "Vacation Edit"
+msgstr "Abwesenheitsnachricht Bearbeiten"
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr ""
+"Abwesenheitsnachrichten werden vom aktuellen Filtertreiber nicht unterstützt."
+
+#: rule.php:353
+msgid "Value"
+msgstr "Wert"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "P_ositivgelistete Adressen:"
+
+#: filters.php:180 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:85 lib/Block/overview.php:88
+msgid "Whitelist"
+msgstr "Positivliste"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "Positivliste Bearbeiten"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Positivlisten werden vom aktuellen Filtertreiber nicht unterstützt."
+
+#: lib/Script/procmail.php:246 lib/Script/sieve.php:336
+#: lib/Script/maildrop.php:224
+msgid "Whitelisted Addresses"
+msgstr "Positivgelistete Adressen"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: filters.php:71 rule.php:172
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Sie dürfen nicht mehr als %d Regeln erstellen."
+
+#: filters.php:63 rule.php:23
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Sie dürfen keine eigenen Regeln erstellen oder bearbeiten."
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr ""
+"Sie können keine leeren Bedingungen festlegen. Bitte geben Sie einen Wert "
+"für \"%s\" an."
+
+#: filters.php:52 rule.php:151
+msgid "You do not have permission to delete filter rules."
+msgstr "Sie haben nicht genügend Rechte, um Filterregeln zu löschen."
+
+#: filters.php:45 filters.php:112 filters.php:123 rule.php:58 rule.php:165
+msgid "You do not have permission to edit filter rules."
+msgstr "Sie haben nicht genügend Rechte, um Filterregeln zu bearbeiten."
+
+#: lib/Script/sieve.php:2947
+msgid "You have received a new message"
+msgstr "Sie haben eine neue Nachricht erhalten"
+
+#: lib/Script/imap.php:309 lib/Script/imap.php:334 lib/Script/imap.php:352
+msgid "[No Sender]"
+msgstr "[Kein Absender]"
+
+#: lib/Script/imap.php:308 lib/Script/imap.php:333 lib/Script/imap.php:351
+msgid "[No Subject]"
+msgstr "[Kein Betreff]"
+
+#: lib/Ingo.php:387
+msgid "_Blacklist"
+msgstr "_Ausschlussliste"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "Nachricht komplett _löschen"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "_Jede Adresse in einer eigenen Zeile eintragen:"
+
+#: lib/Ingo.php:393
+msgid "_Forward"
+msgstr "_Weiterleitung"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "Nachricht in diesen Ordner _verschieben:"
+
+#: lib/Ingo.php:402
+msgid "_Permissions"
+msgstr "_Rechte"
+
+#: lib/Ingo.php:399
+msgid "_Script"
+msgstr "_Skript"
+
+#: lib/Ingo.php:390
+msgid "_Vacation"
+msgstr "A_bwesenheit"
+
+#: lib/Ingo.php:384
+msgid "_Whitelist"
+msgstr "_Positivliste"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "aktiv"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "und"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "deaktiviert - zum Aktivieren anklicken"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "inaktiv"
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr "Von Ingo erzeugtes maildrop Script"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "oder"
+
+#: lib/Script/procmail.php:140
+msgid "procmail script generated by Ingo"
+msgstr "Von Ingo erzeugtes procmail Script"
diff --git a/ingo/po/el_GR.po b/ingo/po/el_GR.po
new file mode 100644 (file)
index 0000000..d02e2da
--- /dev/null
@@ -0,0 +1,793 @@
+# German translations for Ingo package
+# German messages for Ingo.
+# Copyright 2003-2009 The Horde Project
+# This file is distributed under the same license as the Ingo package.
+# Milosis C. Konstantinos, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo 0.1-cvs\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2005-01-13 11:57+0100\n"
+"PO-Revision-Date: 2005-01-07 22:36+0100\n"
+"Last-Translator: Konstantinos C. Milosis <kmilosis@yahoo.com>\n"
+"Language-Team: i18n@lists.horde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-7\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: filters.php:167
+msgid " and"
+msgstr " êáé"
+
+#: filters.php:167
+msgid " or"
+msgstr " Þ"
+
+#: templates/blacklist/blacklist.inc:19
+msgid "Action for blacklisted addresses:"
+msgstr "ÅíÝñãåéá ãéá äéåõèýíóåéò ìáýñçò ëßóôáò:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Åíåñãïðïßçóç ðñïãñÜììáôïò (script)"
+
+#: templates/filters/settings.inc:9
+msgid "Additional Settings"
+msgstr "Ðñüóèåôåò Ñõèìßóåéò"
+
+#: templates/rule/header.inc:53
+msgid "All of the following"
+msgstr "Ïëá ôá ðáñáêÜôù"
+
+#: templates/rule/footer.inc:44
+msgid "Answered"
+msgstr "ÁðáíôçìÝíï"
+
+#: templates/rule/header.inc:56
+msgid "Any of the following"
+msgstr "ÏðïéïäÞðïôå áðü ôá ðáñáêÜôù"
+
+#: templates/filters/footer.inc:16
+msgid "Apply Filters"
+msgstr "ÅöáñìïãÞ Ößëôñùí"
+
+#: filters.php:196
+msgid "Are you sure you want to delete this rule?"
+msgstr "Åßóôå óßãïõñïé ãéá ôç äéáãñáöÞ áõôïý ôïõ êáíüíá;"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Áõôüìáôç åíçìÝñùóç ôïõ ðñïãñÜììáôïò (script) ìåôÜ áðü êÜèå áëëáãÞ;"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Ê.Êïéí"
+
+#: lib/Storage.php:349
+msgid "Begins with"
+msgstr "Áñ÷ßæåé ìå"
+
+#: filters.php:126 templates/blacklist/blacklist.inc:8
+msgid "Blacklist"
+msgstr "Ìáýñç Ëßóôá"
+
+#: blacklist.php:100
+msgid "Blacklist Edit"
+msgstr "Åðåîåñãáóßá Ìáýñçò Ëßóôáò"
+
+#: blacklist.php:17
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "Äåí õðïóôçñßæåôáé Ìáýñç Ëßóôá ìå ôïí ôñÝ÷ïíôá ïäçãü ößëôñùí."
+
+#: lib/Script/procmail.php:209
+msgid "Blacklisted Address"
+msgstr "Äéåýèõíóç óå Ìáýñç Ëßóôá"
+
+#: lib/Script/sieve.php:245
+msgid "Blacklisted Addresses"
+msgstr "Äéåõèýíóåéò óå Ìáýñç Ëßóôá"
+
+#: config/fields.php.dist:88
+msgid "Body"
+msgstr "Óþìá ÊåéìÝíïõ"
+
+#: filters.php:164 rule.php:238
+msgid "Case Sensitive"
+msgstr "Äéá÷ùñéóìüò Ðåæþí/Êåöáëáßùí"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Êïéí."
+
+#: rule.php:105 whitelist.php:36 forward.php:33 vacation.php:41
+#: blacklist.php:69
+msgid "Changes saved."
+msgstr "Ïé áëëáãÝò áðïèçêÝõèçêáí."
+
+#: lib/Storage.php:345
+msgid "Contains"
+msgstr "ÐåñéÝ÷åé"
+
+msgid "Compose"
+msgstr "Óýíèåóç"
+
+#: filters.php:204 filters.php:205
+msgid "Copy %s"
+msgstr "ÁíôéãñáöÞ %s"
+
+#: lib/Storage.php:775
+msgid "Copy of %s"
+msgstr "ÁíôéãñáöÞ ôïõ %s"
+
+#: lib/Ingo.php:53
+msgid "Create new folder"
+msgstr "Äçìéïõñãßá íÝïõ öáêÝëïõ"
+
+#: templates/filters/filter.html:16
+msgid "DISABLED"
+msgstr "ÁÐÅÍÅÑÃÏÐÏÉÇÌÅÍÏ"
+
+#: lib/Script/procmail.php:354
+msgid "DISABLED: "
+msgstr "ÁÐÅÍÅÑÃÏÐÏÉÇÌÅÍÏ: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Áðåíåñãïðïßçóç ðñïãñÜììáôïò (Script)"
+
+#: filters.php:196 filters.php:197
+msgid "Delete %s"
+msgstr "ÄéáãñáöÞ %s"
+
+#: templates/rule/filter.inc:30
+msgid "Delete Condition"
+msgstr "ÄéáãñáöÞ ÓõíèÞêçò"
+
+#: lib/Storage.php:301
+msgid "Delete message completely"
+msgstr "ÐëÞñçò äéáãñáöÞ ìçíýìáôïò"
+
+#: templates/rule/footer.inc:47
+msgid "Deleted"
+msgstr "ÄéáãñÜöçêå"
+
+#: lib/Storage.php:289
+msgid "Deliver into my INBOX"
+msgstr "ÁðïèÞêåõóç óôá Åéóåñ÷üìåíá (INBOX)"
+
+#: lib/Storage.php:315
+msgid "Deliver into my INBOX and copy to"
+msgstr "ÁðïèÞêåõóç óôá Åéóåñ÷üìåíá (INBOX) êáé áíôéãñáöÞ óå"
+
+#: lib/Storage.php:310
+msgid "Deliver into my INBOX and redirect to"
+msgstr "ÁðïèÞêåõóç óôá Åéóåñ÷üìåíá (ÉÍÂÏ×) êáé áíáêáôåýèõíóç óå"
+
+#: lib/Storage.php:295
+msgid "Deliver to folder"
+msgstr "ÁðïèÞêåõóç óôï öÜêåëëï"
+
+#: filters.php:218 filters.php:219
+msgid "Disable %s"
+msgstr "Áðåíåñãïðïßçóç %s"
+
+#: templates/whitelist/whitelist.inc:9 templates/blacklist/blacklist.inc:10
+#: templates/vacation/vacation.inc:9 templates/forward/forward.inc:9
+#: templates/rule/header.inc:30
+msgid "Disabled"
+msgstr "ÁðåíåñãïðïéÞèçêå"
+
+#: templates/filters/settings.inc:21
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Íá åìöáíßæïíôáé ëåðôïìåñåßò ðëçñïöïñßåò üôáí åöáñìüæåôáé êÜèå ößëôñï;"
+
+#: templates/vacation/vacation.inc:38
+msgid "Do _not send responses to bulk or list messages"
+msgstr "Íá ìç óôÝëíïíôáé áðáíôÞóåéò ìáæéêÜ Þ óå ëßóôåò ìçíõìÜôùí"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "ÊÜíå áõôü:"
+
+#: lib/Storage.php:350
+msgid "Doesn't begin with"
+msgstr "Äåí áñ÷ßæåé ìå"
+
+#: lib/Storage.php:346
+msgid "Doesn't contain"
+msgstr "Äåí ðåñéÝ÷åé"
+
+#: lib/Storage.php:352
+msgid "Doesn't end with"
+msgstr "Äåí ôåëåéþíåé óå"
+
+#: lib/Storage.php:354
+msgid "Doesn't exist"
+msgstr "Äåí õðÜñ÷åé"
+
+#: lib/Storage.php:357
+msgid "Doesn't match (with placeholders)"
+msgstr "Äåí ôáéñéÜæåé (ìå áíôéêáôáóôÜóåéò)"
+
+msgid "Due _By"
+msgstr "ÄéÜñêåéá ùò"
+
+#: templates/filters/header.inc:20
+msgid "Edit"
+msgstr "Åðåîåñãáóßá"
+
+#: filters.php:185 filters.php:187 filters.php:191 filters.php:192
+msgid "Edit %s"
+msgstr "Åðåîåñãáóßá %s"
+
+#: filters.php:222 filters.php:223
+msgid "Enable %s"
+msgstr "Åíåñãïðïßçóç %s"
+
+#: templates/filters/header.inc:22
+msgid "Enabled"
+msgstr "ÅíåñãïðïéÞèçêå"
+
+#: lib/Storage.php:351
+msgid "Ends with"
+msgstr "Ôåëåéþíåé óå"
+
+#: lib/Storage.php:362
+msgid "Equal to"
+msgstr "Éóï ìå"
+
+#: templates/filters/header.inc:7
+msgid "Existing Rules"
+msgstr "ÕðÜñ÷ïíôåò Êáíüíåò"
+
+#: lib/Storage.php:353
+msgid "Exists"
+msgstr "ÕðÜñ÷åé"
+
+#: templates/filters/settings.inc:30
+msgid "Filter All Messages"
+msgstr "ÖéëôñÜñéóå üëá ôá Ìçíýìáôá"
+
+#: templates/filters/settings.inc:32
+msgid "Filter Only Seen Messages"
+msgstr "ÖéëôñÜñéóìá ìüíï ôùí áíáãíùóìÝíùí Ìçíýìáôá"
+
+#: templates/filters/settings.inc:31
+msgid "Filter Only Unseen Messages"
+msgstr "ÖéëôñÜñéóìá ìüíï ôùí ìç áíáãíùóìÝíùí ÌçíõìÜôùí"
+
+#: templates/filters/settings.inc:28
+msgid "Filter Options"
+msgstr "ÅðéëïãÝò Ößëôñùí"
+
+#: templates/rule/header.inc:28
+msgid "Filter Rule"
+msgstr "Êáíüíáò Ößëôñùí"
+
+#: filters.php:92
+msgid "Filter Rules"
+msgstr "Êáíüíåò Ößëôñùí"
+
+#: script.php:52
+msgid "Filter Script Display"
+msgstr "ÅìöÜíéóç ðñïãñÜììáôïò (script) ößëôñïõ"
+
+#: lib/Ingo.php:269
+msgid "Filter _Rules"
+msgstr "Êáíüíåò Ößëôñùí"
+
+#: lib/Script/imap.php:321
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Äñáóôçñéüôçôá Ößëôñïõ: %s ÌÞíõìá(ôá) áíôéãñÜöèçêáí óôï öÜêåëï \"%s\"."
+
+#: lib/Script/imap.php:308
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Äñáóôçñéüôçôá Ößëôñïõ: %s ÌÞíõìá(ôá) äéáãñÜöçêáí."
+
+#: lib/Script/imap.php:286
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Äñáóôçñéüôçôá Ößëôñïõ: %s ÌÞíõìá(ôá) ìåôáöÝñèçêáí óôï öÜêåëï \"%s\"."
+
+#: lib/Script/imap.php:189
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Äñáóôçñéüôçôá Ößëôñïõ: %s ÌÞíõìá(ôá) ðïõ ôáßñéáæáí óôç Ìáýñç Ëßóôá "
+"äéáãñÜöçêáí."
+
+#: lib/Script/imap.php:318
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Äñáóôçñéüôçôá Ößëôñïõ: Ôï ìÞíõìá \"%s\" áðü \"%s\" áíôéãñÜöçêå óôï öÜêåëï \"%"
+"s\"."
+
+#: lib/Script/imap.php:303
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Äñáóôçñéüôçôá Ößëôñïõ: Ôï ìÞíõìá \"%s\" áðü \"%s\" äéáãñÜöçêå."
+
+#: lib/Script/imap.php:280
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Äñáóôçñéüôçôá Ößëôñïõ: Ôï ìÞíõìá \"%s\" áðü \"%s\" ìåôáöÝñèçêå óôï öÜêåëï \"%"
+"s\"."
+
+#: rule.php:133
+msgid "Filter not found."
+msgstr "Ôï ößëôñï äåí âñÝèçêå."
+
+#: templates/rule/header.inc:48
+msgid "For an incoming message that matches:"
+msgstr "Ãéá Ýíá åéóåñ÷üìåíï ìÞíõìá ðïõ ôáéñéÜæåé:"
+
+#: filters.php:144 templates/forward/forward.inc:7
+msgid "Forward"
+msgstr "Ðñïþèçóç"
+
+#: forward.php:16
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Ç ðñïþèçóç äåí õðïóôçñßæåôáé áðü ôïí ôñÝ÷ïíôá ïäçãü ößëôñùí."
+
+#: lib/Script/procmail.php:296
+msgid "Forwards"
+msgstr "ÐñïùèÞóåéò"
+
+#: forward.php:46
+msgid "Forwards Edit"
+msgstr "Åðåîåñãáóßá ÐñïùèÞóåùí"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Áðü"
+
+#: lib/Storage.php:360
+msgid "Greater than"
+msgstr "Ìåãáëýôåñï áðü"
+
+#: lib/Storage.php:361
+msgid "Greater than or equal to"
+msgstr "Ìåãáëýôåñï Þ ßóï ìå"
+
+#: templates/rule/footer.inc:41
+msgid "Important"
+msgstr "Óçìáíôéêü"
+
+#: rule.php:26
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "ÌåìïíùìÝíïé êáíïíåò äåí õðïóôçñßæïíôáé áðü ôïí ôñÝ÷ïíôá ïäçãü ößëôñùí."
+
+#: lib/Script/sieve.php:1783
+msgid "Inexistant mailbox specified for message delivery."
+msgstr ""
+"Êáèïñßóáôå áíýðáñêôç ãñáììáôïèõñßäá (mailbox) ãéá áðïèÞêåõóç ìçíõìÜôùí."
+
+#: lib/Storage.php:347
+msgid "Is"
+msgstr "Åßíáé"
+
+#: lib/Storage.php:348
+msgid "Isn't"
+msgstr "Äåí åßíáé"
+
+#: lib/Storage.php:358
+msgid "Less than"
+msgstr "Ìéãñüôåñï áðü"
+
+#: lib/Storage.php:359
+msgid "Less than or equal to"
+msgstr "Ìéêñüôåñï Þ ßóï ìå"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "Áíáãíùñéóôéêü (ID) Ëßóôáò"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "Mar_k message as deleted"
+msgstr "ÌáñêÜñéóìá ìçíýìáôïò ãéá äéáãñáöÞ"
+
+#: templates/rule/footer.inc:33
+msgid "Mark message as:"
+msgstr "ÌáñêÜñéóìá ìçíýìáôïò óáí:"
+
+#: lib/Storage.php:356
+msgid "Matches (with placeholders)"
+msgstr "ÔáéñéÜæåé (ìå áíôéêáôáóôÜóåéò)"
+
+#: lib/Storage.php:487
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"ÎåðåñÜóèçêå ï ìÝãéóôïò áñéèìüò äéåõèýíóåùí Ìáýñçò Ëßóôáò (Óýíïëï "
+"äéåõèýíóåùí: %s, ÌÝãéóôïò áñéèìüò: %s). Äåí ìðïñïýí íá ðñïóôåèïýí íÝåò "
+"äéåõèýíóåéò óôç Ìáýñç Ëßóôá."
+
+#: lib/Storage.php:541
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"ÎåðåñÜóèçêå ï ìÝãéóôïò áñéèìüò äéåõèýíóåùí ËåõêÞò Ëßóôáò (Óýíïëï "
+"äéåõèýíóåùí: %s, ÌÝãéóôïò áñéèìüò: %s). Äåí ìðïñïýí íá ðñïóôåèïýí íÝåò "
+"äéåõèýíóåéò óôç ËåõêÞ Ëßóôá."
+
+#: lib/Script/sieve.php:1646
+msgid "Missing address to redirect message to"
+msgstr "Ëåßðåé ç äéåýèõíóç ãéá áíáêáôåýèõíóç ìçíýìáôïò"
+
+#: lib/Script/sieve.php:1680
+msgid "Missing reason for reject"
+msgstr "Ëåßðåé ëüãïò ãéá áðüññéøç"
+
+#: lib/Script/sieve.php:1850
+msgid "Missing reason in vacation."
+msgstr "Ëåßðåé ëüãïò 'óå äéáêïðÝò'"
+
+#: templates/filters/header.inc:23
+msgid "Move"
+msgstr "Ìåôáêßíçóç"
+
+#: filters.php:109 filters.php:215
+msgid "Move Rule Down"
+msgstr "Ìåôáêßíçóç êáíüíá ÊÜôù"
+
+#: filters.php:110 filters.php:214
+msgid "Move Rule Up"
+msgstr "Ìåôáêßíçóç êáíüíá ÐÜíù"
+
+#: templates/vacation/vacation.inc:46
+msgid "N_umber of days between vacation replies:"
+msgstr "Áñéèìüò çìåñþí ìåôáîý áðáíôÞóåùí 'äéáêïðþí':"
+
+#: templates/filters/filter-none.inc:4 templates/filters/footer.inc:13
+#: lib/Storage.php:726
+msgid "New Rule"
+msgstr "ÍÝïò Êáíüíáò"
+
+#: lib/Ingo.php:204 lib/Ingo.php:206
+msgid "No '%s' element found in backend configuration."
+msgstr "ÊáíÝíá '%s' áíôéêåßìåíï äåí âñÝèçêå óôç äéáìüñöùóç backend."
+
+#: lib/Ingo.php:202
+msgid "No backend configured for this host"
+msgstr "Äåí õðÜñ÷åé äéáìüñöùóç backend ãéá áõôüí ôïí åîõðçñåôçôÞ"
+
+#: lib/Ingo.php:179
+msgid "No backends configured in backends.php"
+msgstr "Äåí Ý÷ïõí äéáìïñöùèåß backends in backends.php"
+
+#: templates/filters/filter-none.inc:4
+msgid "No filters. Click '%s' to create a new filter."
+msgstr "Äåí õðÜñ÷ïõí êáíüíåò. ÊÜíôå êëéê óôï '%s', ãéá íá äçìéïõñãÞóåôå."
+
+#: lib/Script/sieve.php:1233 lib/Script/sieve.php:1333
+#: lib/Script/sieve.php:1515
+msgid "No headers specified"
+msgstr "Äåí êáèïñßóèçêáí åðéêåöáëßäåò"
+
+#: script.php:67
+msgid "No script generated."
+msgstr "Äåí äçìéïõñãÞèçêå ðñüãñáììá (script)."
+
+#: lib/Script/sieve.php:1530
+msgid "No strings specified"
+msgstr "Äåí êáèïñßóèçêáí óõìâïëïóåéñÝò (strings)"
+
+#: lib/Storage.php:363
+msgid "Not equal to"
+msgstr "Äåí åßíáé ßóï ìå"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "ÅðéëïãÝò ãéá åíçìÝñùóç ðñïãñáììÜôùí (scripts)"
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Áëëåò åðéëïãÝò"
+
+#: templates/javascript/new_folder.js:6
+msgid "Please enter the name of the new folder:"
+msgstr "Ðáñáêáëþ äþóôå ôï üíïìá ôïõ íÝïõ öáêÝëïõ:"
+
+#: templates/vacation/vacation.inc:64
+msgid "R_eason"
+msgstr "Ëüãïò"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "ÐáñáëÞöèçêå"
+
+#: lib/Storage.php:306
+msgid "Redirect to"
+msgstr "Áíáêáôåýèõíóç ðñïò"
+
+#: lib/Storage.php:355
+msgid "Regular expression"
+msgstr "ÊáíïíéêÞ óõíèÞêç"
+
+#: lib/Storage.php:321
+msgid "Reject with reason"
+msgstr "Áðüññéøç ìå ëüãï"
+
+#: config/fields.php.dist:55
+msgid "Resent To"
+msgstr "Îáíáóôåßëôï ðñïò"
+
+#: config/fields.php.dist:51
+msgid "Resent-from"
+msgstr "Îáíáóôåßëôï-áðü (Resent-from)"
+
+#: templates/rule/footer.inc:72
+msgid "Return to Filters List"
+msgstr "ÅðéóôñïöÞ óôç Ëßóôá Ößëôñùí"
+
+#: templates/whitelist/whitelist.inc:28 templates/blacklist/blacklist.inc:43
+#: templates/vacation/vacation.inc:75 templates/forward/forward.inc:38
+msgid "Return to Rules List"
+msgstr "ÅðéóôñïöÞ óôç Ëßóôá Êáíüíùí"
+
+#: templates/filters/header.inc:21
+msgid "Rule"
+msgstr "Êáíüíáò"
+
+#: filters.php:45
+msgid "Rule Copied"
+msgstr "Ï Êáíüíáò áíôéãñÜöçêå"
+
+#: filters.php:39
+msgid "Rule Deleted"
+msgstr "Ï êáíüíáò äéáãñÜöçêå"
+
+#: filters.php:59
+msgid "Rule Disabled"
+msgstr "Ï êáíüíáò áðåíåñãïðïéÞèçêå"
+
+#: filters.php:64
+msgid "Rule Enabled"
+msgstr "Ï êáíüíáò åíåñãïðïéÞèçêå"
+
+#: templates/rule/header.inc:39
+msgid "Rule Name"
+msgstr "Ïíïìá Êáíüíá"
+
+#: templates/whitelist/whitelist.inc:27 templates/blacklist/blacklist.inc:42
+#: templates/vacation/vacation.inc:74 templates/forward/forward.inc:37
+#: templates/rule/footer.inc:71
+msgid "Save"
+msgstr "ÁðïèÞêåõóç"
+
+#: templates/filters/settings.inc:47
+msgid "Save Settings"
+msgstr "ÁðïèÞêåõóç Ñõèìßóåùí"
+
+#: templates/script/header.inc:3
+msgid "Script"
+msgstr "Ðñüãñáììá (Script)"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Åíçìåñþíïíôáò Ðñüãñáììá (Script)"
+
+#: lib/Ingo.php:229
+msgid "Script not updated."
+msgstr "Ôï ðñüãñáììá (script) äåí åíçìåñþèçêå."
+
+#: lib/Ingo.php:136
+msgid "Script successfully activated."
+msgstr "Ôï ðñüãñáììá (script) åíåñãïðïéÞèçêå åðéôõ÷þò."
+
+#: lib/Ingo.php:135
+msgid "Script successfully deactivated."
+msgstr "Ôï ðñüãñáììá (script) áðåíåñãïðïéÞèçêå åðéôõ÷þò."
+
+#: templates/rule/footer.inc:38
+msgid "Seen"
+msgstr "ÁíáãíùóìÝíá"
+
+#: rule.php:163
+msgid "Select a field"
+msgstr "ÅðéëÝîôå Ýíá ðåäßï"
+
+#: lib/Ingo.php:50
+msgid "Select target folder"
+msgstr "ÅðéëÝîôå öÜêåëï ðñïïñéóìïý"
+
+#: rule.php:184
+msgid "Self-Defined Header"
+msgstr "Áõôüìáôá ïñéæüìåíç Åðéêåöáëßäá"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "ÁðïóôïëÝáò"
+
+#: filters.php:78
+msgid "Settings successfully updated."
+msgstr "Ïé ñõèìßóåéò åíçìåñþèçêáí åðéôõ÷þò."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "ÅìöÜíéóç Åíåñãþí ÐñïãñáììÜôùí (Scripts)"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "ÅìöÜíéóç ôñÝ÷ïíôïò ðñïãñÜììáôïò (script)"
+
+#: config/fields.php.dist:83
+msgid "Size"
+msgstr "ÌÝãåèïò"
+
+#: templates/rule/footer.inc:61
+msgid "Stop checking if this rule matches?"
+msgstr "Íá óôáìáôÞóåé ï Ýëåã÷ïò ãéá ôáßñéáóìá áõôïý ôïõ êáíüíá;"
+
+#: templates/vacation/vacation.inc:55
+msgid "Subje_ct of vacation message:"
+msgstr "ÈÝìá ôïõ ìçíýìáôïò äéáêïðþí:"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "ÈÝìá"
+
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "Ç äéåýèõíóç \"%ó\" ðñïóôÝèçêå óôç ËåõêÞ Ëßóôá óáò."
+
+#: lib/Ingo.php:131
+msgid "The driver said: "
+msgstr "Ï ïäçãüò (driver) ëÝåé: "
+
+#: lib/Ingo.php:130
+msgid "There was an error activating the script."
+msgstr "ÕðÞñîå ëÜèïò êáôÜ ôçí åíåñãïðïßçóç ôïõ ðñïãñÜììáôïò (script)."
+
+#: lib/Ingo.php:129
+msgid "There was an error deactivating the script."
+msgstr "ÕðÞñîå ëÜèïò êáôÜ ôçí áðåíåñãïðïßçóç ôïõ ðñïãñÜììáôïò (script)."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Ðñïò"
+
+#: lib/Script.php:116
+msgid "Unable to load the definition of %s."
+msgstr "Áäýíáôç ç öüñôùóç ôïõ ïñéóìïý %s."
+
+#: filters.php:138 templates/vacation/vacation.inc:7
+#: lib/Script/procmail.php:272
+msgid "Vacation"
+msgstr "ÄéáêïðÝò"
+
+#: vacation.php:66
+msgid "Vacation Edit"
+msgstr "Åðåîåñãáóßá Äéáêïðþí"
+
+#: lib/Script/sieve.php:352
+msgid "Vacation Message"
+msgstr "ÌÞíõìá Äéáêïðþí"
+
+#: vacation.php:16
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "Ïé ÄéáêïðÝò äåí õðïóôçñßæïíôáé áðü ôïí ôñÝ÷ïíôá ïäçãü ößëôñùí."
+
+#: templates/whitelist/whitelist.inc:18
+msgid "Wh_itelist addresses:"
+msgstr "Äéåõèýíóåéò ËåõêÞò Ëßóôáò:"
+
+#: filters.php:132 templates/whitelist/whitelist.inc:7
+msgid "Whitelist"
+msgstr "ËåõêÞ Ëßóôá"
+
+#: whitelist.php:55
+msgid "Whitelist Edit"
+msgstr "Åðåîåñãáóßá ËåõêÞò Ëßóôáò"
+
+#: whitelist.php:18
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Ç ËåõêÞ Ëßóôá äåí õðïóôçñßæåôáé áðü ôïí ôñÝ÷ïíôá ïäçãü ößëôñùí."
+
+#: lib/Script/procmail.php:240 lib/Script/sieve.php:299
+msgid "Whitelisted Addresses"
+msgstr "Äéåõèýíóåéò ðïõ õðÜñ÷ïõí óôç ËåõêÞ Ëßóôá"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "Ðñïôåñáéüôçôá"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: vacation.php:30
+msgid ""
+"You must specify at least one email address for which the vacation messages "
+"should be activated."
+msgstr ""
+"ÐñÝðåé íá ïñßóåôå ôïõëÜ÷éóôïí ìéá äéåýèõíóç email ãéá ôçí ïðïßá èá "
+"åíåñãïðïéçèïýí ôá ìçíýìáôá äéáêïðþí."
+
+#: lib/Script/imap.php:281 lib/Script/imap.php:304 lib/Script/imap.php:318
+msgid "[No Subject]"
+msgstr "[×ùñßò ÈÝìá]"
+
+#: templates/forward/forward.inc:27
+msgid "_Address(es) to forward to:"
+msgstr "Äéåõèýíóåéò ãéá ðñïþèçóç ðñïò:"
+
+#: templates/vacation/vacation.inc:28
+msgid "_Addresses to not send responses to:"
+msgstr "Äéåõèýíóåéò ãéá ôéò ïðïéåò äåí èá áðïóôÝëëïíôáé áðáíôÞóåéò:"
+
+#: lib/Ingo.php:274
+msgid "_Blacklist"
+msgstr "Ìáýñç Ëßóôá"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "_Delete message completely"
+msgstr "ÐëÞñçò äéáãñáöÞ ìçíýìáôïò"
+
+#: templates/blacklist/blacklist.inc:33
+msgid "_Enter each address on a new line:"
+msgstr "ÅéóáãùãÞ êÜèå äéåýèõíóçò óå íÝá ãñáììÞ:"
+
+#: lib/Ingo.php:280
+msgid "_Forward"
+msgstr "Ðñïþèçóç"
+
+#: templates/forward/forward.inc:19
+msgid "_Keep a copy of messages in this account?"
+msgstr "ÄéáôÞñçóç áíôéãñÜöùí ôùí ìçíõìÜôùí óå áõôü ôï ëïãáñéáóìü;"
+
+#: templates/blacklist/blacklist.inc:24
+msgid "_Move message to folder:"
+msgstr "Ìåôáêßíçóç ìçíõìÜôùí óôï öÜêåëï:"
+
+#: templates/vacation/vacation.inc:18
+msgid "_My email addresses:"
+msgstr "Ç email äéåýèõíóÞ ìïõ:"
+
+#: lib/Ingo.php:283
+msgid "_Script"
+msgstr "Ðñüãñáììá (Script)"
+
+#: lib/Ingo.php:277
+msgid "_Vacation"
+msgstr "ÄéáêïðÝò"
+
+#: lib/Ingo.php:271
+msgid "_Whitelist"
+msgstr "ËåõêÞ Ëßóôá"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "êáé"
+
+#: filters.php:162
+msgid "field"
+msgstr "Ðåäßï"
+
+#: filters.php:162
+msgid "match"
+msgstr "ôáéñéÜæåé"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "Þ"
+
+#: lib/Script/procmail.php:126
+msgid "procmail script generated by Ingo"
+msgstr "Ðñüãñáììá (script) ðïõ äçìéïõñãÞèçêå áðü ôï Ingo"
+
+#: lib/Script/sieve.php:111
+msgid "sieve filter generated by Ingo"
+msgstr "Ößëôñï 'êüóêéíï' ðïõ äçìéïõñãÞèçêå áðü ôï Ingo"
diff --git a/ingo/po/es_ES.po b/ingo/po/es_ES.po
new file mode 100644 (file)
index 0000000..591a73e
--- /dev/null
@@ -0,0 +1,1044 @@
+# Spanish translations for ingo package.
+# Traducciones al español para el paquete ingo.
+# Copyright 2008-2009 The Horde Project
+# This file is distributed under the same license as the ingo package.
+# Automatically generated, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo 1.2rc3\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2008-05-24 09:25+0200\n"
+"PO-Revision-Date: 2008-05-24 09:25+0200\n"
+"Last-Translator: Manuel P. Ayala <mayala@unex.es>\n"
+"Language-Team: i18n@lists.horde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: filters.php:223
+msgid " and"
+msgstr " y"
+
+#: filters.php:223
+msgid " or"
+msgstr " o"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Acción para direcciones de la lista negra:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Activar guión"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "Falló la activación del guión para \"%s\": (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Opciones adicionales"
+
+#: forward.php:43
+msgid "Address(es) to forward to:"
+msgstr "Dirección(es) a la(s) que reenviar:"
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr "Direcciones a las que no se envían respuestas:"
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr "Opciones avanzadas"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Todo lo que sigue"
+
+#: lib/api.php:68
+msgid "Allow Rules"
+msgstr "Permitir reglas"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Respondido"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Cualquiera de lo que sigue"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Aplicar filtros"
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr "¿Está seguro de que desea eliminar esta regla?"
+
+#: config/.bak/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "¿Actualizar automáticamente el guión tras cada cambio?"
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr "Opciones básicas"
+
+#: config/.bak/fields.php.dist:47
+msgid "Bcc"
+msgstr "Bcc"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Empieza por"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Ha fallado la vinculación: (%s) %s"
+
+#: filters.php:174 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:95 lib/Block/overview.php:98
+msgid "Blacklist"
+msgstr "Lista negra"
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr "Modificar lista negra"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "El controlador de filtrado actual no soporta listas negras."
+
+#: lib/Script/sieve.php:269 lib/Script/maildrop.php:197
+#: lib/Script/procmail.php:219
+msgid "Blacklisted Addresses"
+msgstr "Direcciones incluidas en la lista negra"
+
+#: config/.bak/fields.php.dist:100
+msgid "Body"
+msgstr "Cuerpo"
+
+#: rule.php:322 filters.php:220
+msgid "Case Sensitive"
+msgstr "Distinguir may./min."
+
+#: config/.bak/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: blacklist.php:70 spam.php:106 forward.php:56 vacation.php:81 rule.php:141
+#: whitelist.php:38
+msgid "Changes saved."
+msgstr "Se han guardado los cambios."
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Fallo de conexión"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Contiene"
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr "Copiar %s"
+
+#: lib/Storage.php:993 lib/Storage/sql.php:621
+#, php-format
+msgid "Copy of %s"
+msgstr "Copia de %s"
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "No se puede guardar el archivo de plantilla compilado '%s'."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Crear carpeta"
+
+#: lib/Script/maildrop.php:362 lib/Script/procmail.php:352
+msgid "DISABLED: "
+msgstr "DESACTIVADO: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Desactivar guión"
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr "Eliminar %s"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "Eliminar condición"
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "Eliminar completamente el mensaje"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Eliminado"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "Entregar en mi buzón de Entrada"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr "Entregar en mi buzón de Entrada y copiar a"
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Entregar en mi buzón de Entrada y redirigir a"
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "Entregar en el buzón"
+
+#: config/.bak/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "Destinatario (Para,Cc,Bcc,etc)"
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr "Desactivar %s"
+
+#: spam.php:160 forward.php:99 vacation.php:153
+#: templates/blacklist/blacklist.inc:10 templates/rule/header.inc:26
+#: templates/whitelist/whitelist.inc:10
+msgid "Disabled"
+msgstr "Desactivado"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "¿Mostrar avisos detallados al aplicar cada filtro?"
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr "¿No enviar respuestas a mensajes de listas o de correo masivo?"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Haga ésto:"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "No empieza por"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "No contiene"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "No termina por"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "No existe"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "No coincide (con comodines)"
+
+#: templates/filters/header.inc:23 lib/Block/overview.php:63
+#: lib/Block/overview.php:72 lib/Block/overview.php:87
+#: lib/Block/overview.php:97 lib/Block/overview.php:107
+msgid "Edit"
+msgstr "Modificar"
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr "Modificar %s"
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr "Activar %s"
+
+#: templates/filters/header.inc:25
+msgid "Enabled"
+msgstr "Activado"
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr "Fin de la ausencia:"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "Termina por"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "Igual a"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Error al recuperar el guión actual: (%d) %s"
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr "Error al guardar los cambios."
+
+#: templates/filters/header.inc:17
+msgid "Existing Rules"
+msgstr "Reglas existentes"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Existe"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "Se esperaba 1 objeto, se obtuvieron %d."
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr "Fallo al leer el socket: "
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr "Fallo al escribir en el socket: "
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "Fallo al escribir en el socket: (¡conexión perdida!)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "campo"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Filtrar todos los mensajes"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Filtrar sólo los mensajes leídos"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Filtrar sólo los mensajes no leídos"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Opciones de filtrado"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Regla de filtrado"
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr "Reglas"
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr "Mostrar guión de filtrado"
+
+#: lib/Ingo.php:379
+msgid "Filter _Rules"
+msgstr "_Reglas"
+
+#: lib/Script/imap.php:348
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr ""
+"Actividad del filtro: Se ha(n) copiado %s mensaje(s) a la carpeta \"%s\"."
+
+#: lib/Script/imap.php:334
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Actividad del filtro: Se ha(n) eliminado %s mensaje(s)."
+
+#: lib/Script/imap.php:312
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr ""
+"Actividad del filtro: Se ha(n) trasladado %s mensaje(s) a la carpeta \"%s\"."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Actividad del filtro: Se ha(n) eliminado %s mensaje(s) incluidos en la lista "
+"negra."
+
+#: lib/Script/imap.php:345
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Actividad del filtro: Se ha copiado el mensaje \"%s\" de \"%s\" a la carpeta "
+"\"%s\"."
+
+#: lib/Script/imap.php:329
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Actividad del filtro: Se ha eliminado el mensaje \"%s\" de \"%s\"."
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Actividad del filtro: Se ha trasladado el mensaje \"%s\" de \"%s\" a la "
+"carpeta \"%s\"."
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr "No se encontró el filtro."
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "Continuación"
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr "Carpeta de recepción de spam:"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Por cada mensaje entrante coincidente con:"
+
+#: forward.php:97 filters.php:192 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Reenviar"
+
+#: lib/Script/sieve.php:222
+msgid "Forward Keep Action"
+msgstr "Acción de conservación de reenvío"
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr "El controlador de filtrado actual no soporta reenvíos."
+
+#: lib/Script/sieve.php:232 lib/Script/maildrop.php:246
+#: lib/Script/procmail.php:298
+msgid "Forwards"
+msgstr "Reenvíos"
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr "Modificar reenvíos"
+
+#: config/.bak/fields.php.dist:39
+msgid "From"
+msgstr "De"
+
+#: lib/Script/sieve.php:2927
+msgid "From:"
+msgstr "De:"
+
+#: lib/Script/sieve.php:118
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Generado por Ingo (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Mayor que"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Mayor o igual que"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "El controlador de filtrado actual no soporta reglas individuales."
+
+#: lib/Script/sieve.php:2521
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Se ha indicado un buzón inexistente para envío de correo."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "Es"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "No es"
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr "¿Conservar una copia de los mensajes en esta identidad?"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"Se precisa soporte LDAP pero el módulo LDAP no está disponible o cargado."
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Menor que"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Menor o igual que"
+
+#: config/.bak/fields.php.dist:59
+msgid "List-ID"
+msgstr "List-ID"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "_Señalar mensaje como eliminado"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Señalar mensaje como:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "Tipo de coincidencia"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "Coincide (con comodines)"
+
+#: lib/api.php:71
+msgid "Maximum Number of Rules"
+msgstr "Número máximo de reglas"
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Se ha superado el número máximo de direcciones en una lista negra (Total de "
+"direcciones: %s, Nº máx. de direcciones: %s). No se pueden añadir más "
+"direcciones a la lista negra."
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Se ha superado el número máximo de direcciones en una lista blanca (Total de "
+"direcciones: %s, Nº máx. de direcciones: %s). No se pueden añadir más "
+"direcciones a la lista blanca."
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+"Los mensajes con una puntuación de spam superior o igual a este número se "
+"tratarán como spam."
+
+#: lib/Script/sieve.php:2941
+msgid "Missing address to notify"
+msgstr "Falta la dirección a la que informar"
+
+#: lib/Script/sieve.php:2322
+msgid "Missing address to redirect message to"
+msgstr "Falta la dirección a la que redirigir el mensaje"
+
+#: lib/Script/sieve.php:2368
+msgid "Missing reason for reject"
+msgstr "Falta el motivo del rechazo"
+
+#: lib/Script/sieve.php:2671
+msgid "Missing reason in vacation."
+msgstr "Falta el motivo de la ausencia."
+
+#: templates/filters/header.inc:29
+msgid "Move"
+msgstr "Trasladar"
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr "Bajar la regla"
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr "Subir la regla"
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr "Mis direcciones de correo:"
+
+#: templates/filters/filter-none.inc:3 templates/filters/footer.inc:6
+#: lib/Storage.php:889
+msgid "New Rule"
+msgstr "Nueva regla"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "No se ha encontrado un elemento \"%s\" en la configuración del motor."
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr "No se ha configurado un motor para este servidor"
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr "No se han configurado motores en backends.php"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Sin filtros. Pulse \"%s\" para crear uno."
+
+#: lib/Script/sieve.php:1679 lib/Script/sieve.php:1828
+#: lib/Script/sieve.php:2044
+msgid "No headers specified"
+msgstr "No se han especificado cabeceras"
+
+#: script.php:69
+msgid "No script generated."
+msgstr "No se ha generado ningún guión."
+
+#: lib/Script/sieve.php:2060 lib/Script/sieve.php:2144
+msgid "No strings specified"
+msgstr "No se han especificado cadenas"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Distinto de"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr "Notificar dirección de correo"
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr "Número de días entre respuestas por ausencia:"
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr "Sólo marcar el mensaje"
+
+#: config/.bak/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Opciones de actualización de guiones."
+
+#: config/.bak/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Otras opciones"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Resumen"
+
+#: config/.bak/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr "Participante (De,Para,etc)"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Introduzca el nombre de la nueva carpeta:"
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr "Motivo:"
+
+#: config/.bak/fields.php.dist:63
+msgid "Received"
+msgstr "Recibido"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Redirigir a"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Expresión regular"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr "Rechazar con motivo"
+
+#: config/.bak/fields.php.dist:51
+msgid "Resent-From"
+msgstr "Reenviado-por"
+
+#: config/.bak/fields.php.dist:55
+msgid "Resent-To"
+msgstr "Reenviar-a"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "Regresar al listado de filtros"
+
+#: spam.php:62 spam.php:141 forward.php:34 forward.php:88 vacation.php:34
+#: vacation.php:117 templates/blacklist/blacklist.inc:42
+#: templates/whitelist/whitelist.inc:24
+msgid "Return to Rules List"
+msgstr "Regresar al listado de reglas"
+
+#: templates/filters/header.inc:24
+msgid "Rule"
+msgstr "Regla"
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr "Se ha copiado la regla"
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr "Se ha eliminado la regla"
+
+#: spam.php:122 forward.php:72 vacation.php:97 filters.php:94
+msgid "Rule Disabled"
+msgstr "Regla desactivada"
+
+#: spam.php:113 forward.php:63 vacation.php:88 filters.php:99
+msgid "Rule Enabled"
+msgstr "Regla activada"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "Nombre de la regla:"
+
+#: lib/Script/sieve.php:2929
+msgid "Rule:"
+msgstr "Regla:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "Ha fallado STARTTLS: (%s) %s"
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "S_pam"
+
+#: spam.php:79 forward.php:45 vacation.php:62
+#: templates/blacklist/blacklist.inc:41 templates/rule/footer.inc:60
+#: templates/whitelist/whitelist.inc:23
+msgid "Save"
+msgstr "Guardar"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Guardar opciones"
+
+#: spam.php:116 spam.php:137 forward.php:66 forward.php:84 vacation.php:91
+#: vacation.php:113
+msgid "Save and Disable"
+msgstr "Guardar y desactivar"
+
+#: spam.php:107 spam.php:139 forward.php:57 forward.php:86 vacation.php:82
+#: vacation.php:115
+msgid "Save and Enable"
+msgstr "Guardar y activar"
+
+# ¿Dónde está?
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Guión"
+
+#: config/.bak/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Actualización de guión"
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr "No se ha actualizado el guión."
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr "Se ha activado correctamente el guión."
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr "Se ha desactivado correctamente el guión."
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Leído"
+
+#: rule.php:218
+msgid "Select a field"
+msgstr "Seleccione un campo"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Seleccione reglas a mostrar:"
+
+#: rule.php:347 templates/blacklist/blacklist.inc:23 lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "Seleccione carpeta destino"
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr "Cabecera Auto-Definida"
+
+#: config/.bak/fields.php.dist:35
+msgid "Sender"
+msgstr "Remitente"
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr "Se han actualizado correctamente las opciones."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Mostrar guión activo"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Mostrar guión actual"
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr "El controlador de filtrado actual no soporta filtrado simple de spam."
+
+#: config/.bak/fields.php.dist:95
+msgid "Size"
+msgstr "Tamaño"
+
+#: config/.bak/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr "Origen (Desde,Responder-a,etc)"
+
+#: filters.php:198 lib/Script/sieve.php:425 lib/Script/maildrop.php:301
+#: lib/Block/overview.php:105 lib/Block/overview.php:108
+msgid "Spam Filter"
+msgstr "Filtro de Spam"
+
+#: spam.php:158 spam.php:165
+msgid "Spam Filtering"
+msgstr "Filtrado de Spam"
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr "Nivel de Spam:"
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr "Inicio de la ausencia:"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "¿Detener comprobación si esta regla coincide?"
+
+#: config/.bak/fields.php.dist:31
+msgid "Subject"
+msgstr "Asunto"
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr "Asunto del mensaje de ausencia:"
+
+#: lib/Script/sieve.php:2928
+msgid "Subject:"
+msgstr "Asunto:"
+
+#: lib/api.php:103
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "La dirección \"%s\" se ha añadido a su lista negra."
+
+#: lib/api.php:126
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "La dirección \"%s\" se ha añadido a su lista blanca."
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "El controlador dijo: "
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr "Se produjo un error al activar el guión."
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr "Se produjo un error al desactivar el guión."
+
+#: config/.bak/fields.php.dist:27
+msgid "To"
+msgstr "Para"
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr "Para:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Incapaz de cargar la definición de %s."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "Cabecera de usuario"
+
+#: vacation.php:151 filters.php:186 lib/Script/sieve.php:399
+#: lib/Script/maildrop.php:276 lib/Script/procmail.php:278
+#: lib/Block/overview.php:61 lib/Block/overview.php:64
+msgid "Vacation"
+msgstr "Ausencia"
+
+#: vacation.php:158
+msgid "Vacation Edit"
+msgstr "Modificar notificación de ausencia"
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr ""
+"El controlador de filtrado actual no soporta notificaciones de ausencia."
+
+#: rule.php:353
+msgid "Value"
+msgstr "Valor"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Direcciones de lista _blanca:"
+
+#: filters.php:180 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:85 lib/Block/overview.php:88
+msgid "Whitelist"
+msgstr "Lista blanca"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "Modificar lista blanca"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "El controlador de filtrado actual no soporta lista blancas."
+
+#: lib/Script/sieve.php:329 lib/Script/maildrop.php:224
+#: lib/Script/procmail.php:246
+msgid "Whitelisted Addresses"
+msgstr "Direcciones incluidas en la lista blanca"
+
+#: config/.bak/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/.bak/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/.bak/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/.bak/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: rule.php:172 filters.php:71
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Carece de permisos para crear más de %d reglas."
+
+#: rule.php:23 filters.php:63
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Carece de permisos para crear o modificar reglas personalizadas."
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr "No puede crear condiciones vacías. Rellene un valor para \"%s\"."
+
+#: rule.php:151 filters.php:52
+msgid "You do not have permission to delete filter rules."
+msgstr "Carece de permisos para eliminar reglas de filtrado."
+
+#: rule.php:58 rule.php:165 filters.php:45 filters.php:112 filters.php:123
+msgid "You do not have permission to edit filter rules."
+msgstr "Carece de permisos para modificar reglas de filtrado."
+
+#: lib/Script/sieve.php:2926
+msgid "You have received a new message"
+msgstr "A recibido un mensaje nuevo"
+
+#: lib/Script/imap.php:307 lib/Script/imap.php:330 lib/Script/imap.php:345
+msgid "[No Subject]"
+msgstr "[Sin asunto]"
+
+#: lib/Ingo.php:384
+msgid "_Blacklist"
+msgstr "Lista ne_gra"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "_Eliminar completamente el mensaje"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "_Introducir cada dirección en una línea distinta:"
+
+#: lib/Ingo.php:390
+msgid "_Forward"
+msgstr "Ree_nviar"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "_Trasladar mensajes a la carpeta:"
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "_Permisos"
+
+# ¿Dónde está?
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr "_Guión"
+
+#: lib/Ingo.php:387
+msgid "_Vacation"
+msgstr "A_usencia"
+
+#: lib/Ingo.php:381
+msgid "_Whitelist"
+msgstr "Lista bl_anca"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "activa"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "y"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "desactivada - pulse para activarla"
+
+#: filters.php:218
+msgid "field"
+msgstr "campo"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "desactivada"
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr "guión maildrop generado por Ingo"
+
+#: filters.php:218
+msgid "match"
+msgstr "coincidir"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "o"
+
+#: lib/Script/procmail.php:140
+msgid "procmail script generated by Ingo"
+msgstr "guión procmail generado por Ingo"
diff --git a/ingo/po/et_EE.po b/ingo/po/et_EE.po
new file mode 100644 (file)
index 0000000..cf7059e
--- /dev/null
@@ -0,0 +1,1024 @@
+# INGO ESTONIAN TRANSLATION 
+#
+# Toomas Aas <toomas.aas@mail.ee>, 2006
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo 1.1-cvs\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2008-05-29 15:49+0300\n"
+"PO-Revision-Date: 2008-07-30 19:05+0200\n"
+"Last-Translator: Alar SIng <alar.sing@err.ee>\n"
+"Language-Team: Estonian <i18n@lists.horde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-13\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: filters.php:223
+msgid " and"
+msgstr " ja"
+
+#: filters.php:223
+msgid " or"
+msgstr " või"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Tegevus mustas nimekirjas oleva aadressi korral:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Aktiveeri skript"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "\"%s\" skripti aktiveerimine nurjus: (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Lisaseadistus"
+
+#: forward.php:43
+msgid "Address(es) to forward to:"
+msgstr "Aadress(id), kuhu edastada:"
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr "Ära saada teadet aadressidele:"
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr "Põhjalikud seadistused"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Kõigile järgnevaist"
+
+#: lib/api.php:68
+msgid "Allow Rules"
+msgstr "Luba reeglid"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Vastatud"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Mõnele järgnevaist"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Rakenda filtreid"
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr "Kas oled kindel, et soovid selle reegli kustutada?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Uuenda skript automaatselt pärast iga muudatust"
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr "Seadistused"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Pimekoopia"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Algab"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Sisenemine nurjus: (%s) %s"
+
+#: filters.php:174 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:95 lib/Block/overview.php:98
+msgid "Blacklist"
+msgstr "Must nimekiri"
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr "Musta nimekirja muutmine"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "See filtridraiver ei võimalda musta nimekirja."
+
+#: lib/Script/sieve.php:269 lib/Script/procmail.php:209
+#: lib/Script/maildrop.php:197
+msgid "Blacklisted Addresses"
+msgstr "Aadressid mustas nimekirjas"
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "Sisu"
+
+#: filters.php:220 rule.php:322
+msgid "Case Sensitive"
+msgstr "Tõstutundlik"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Koopia"
+
+#: forward.php:56 rule.php:141 spam.php:90 whitelist.php:38 blacklist.php:70
+#: vacation.php:81
+msgid "Changes saved."
+msgstr "Muudatused salvestatud."
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Ühendus nurjus"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Sisaldab"
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr "Kopeeri %s"
+
+#: lib/Storage.php:993 lib/Storage/sql.php:621
+#, php-format
+msgid "Copy of %s"
+msgstr "%s koopia"
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "Ei õnnestunud salvestaja ja kompileerida malli faili '%s'."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Loo uus kaust"
+
+#: lib/Script/procmail.php:342 lib/Script/maildrop.php:362
+msgid "DISABLED: "
+msgstr "VÄLJA LÜLITATUD:"
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Deaktiveeri skript"
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr "Kustuta %s"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "Kustuta tingimus"
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "Kustuta kiri tervenisti"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Kustutatud"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "Pane kiri minu INBOXi"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr "Pane kiri minu INBOXi ja kopeeri kausta"
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Pane kiri minu INBOXi ja saada aadressile"
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "Pane kiri kausta"
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "Siht (Kellele, Koopja, jne)"
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr "Lülita välja %s"
+
+#: forward.php:99 spam.php:149 vacation.php:153 templates/rule/header.inc:26
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+msgid "Disabled"
+msgstr "Välja lülitatud"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Näita iga reegli rakendamisel üksikasjalikku teadet"
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr "Ära saada vastuseid listidest tulnud kirjadele?"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Tee nii:"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "Ei alga"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Ei sisalda"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "Ei lõpe"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "Pole olemas"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "Ei vasta tingimusele (koos muutujatega)"
+
+#: templates/filters/header.inc:26 lib/Block/overview.php:63
+#: lib/Block/overview.php:72 lib/Block/overview.php:87
+#: lib/Block/overview.php:97 lib/Block/overview.php:107
+msgid "Edit"
+msgstr "Muuda"
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr "Muuda %s"
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr "Lülita sisse %s"
+
+#: templates/filters/header.inc:28
+msgid "Enabled"
+msgstr "Toimib"
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr "Äraoleku lõpp:"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "Lõpeb"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "Võrdub"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Viga aktiivse skripti laadimisel: (%d) %s"
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr "Viga muudatuste salvestamisel."
+
+#: templates/filters/header.inc:20
+msgid "Existing Rules"
+msgstr "Olemasolevad reeglid"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "On olemas"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "Oodati 1 objekti, aga on %d."
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr "Ebaõnnestus lugeda soklist:"
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr "Ebaõnnestus kirjutada soklisse:"
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "Ebaõnnestus kirjutada soklisse: (ühendus katkes!)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "Väli"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Filtreeri kõik kirjad"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Filtreeri ainult loetud kirjad"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Filtreeri ainult lugemata kirjad"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Filtreerimise seadistus"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Filtreerimisreegel"
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr "Filtreerimis reeglid"
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr "Filtreerimisskripti esitus"
+
+#: lib/Ingo.php:379
+msgid "Filter _Rules"
+msgstr "Filtreerimis_reeglid"
+
+#: lib/Script/imap.php:348
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Filtreerimine: %s kirja kopeeritud kausta \"%s\"."
+
+#: lib/Script/imap.php:334
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Filtreerimine: %s kirja kustutatud."
+
+#: lib/Script/imap.php:312
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Filtreerimine: %s kirja tõstetud kausta \"%s\"."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr "Filtreerimine: %s kirja kustutatud musta nimekirja alusel."
+
+#: lib/Script/imap.php:345
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr "Filtreerimine: Kiri \"%s\" aadressilt \"%s\" kopeeritud kausta \"%s\"."
+
+#: lib/Script/imap.php:329
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Filtreerimine: Kiri \"%s\" aadressilt \"%s\" kustutatud."
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr "Filtreerimine: Kiri \"%s\" aadressilt \"%s\" tõstetud kausta \"%s\"."
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr "Filtrit ei leitud."
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "Lipustatud järgnevuseks"
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr "Kaust kuhu SPAM tuleb:"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Saabuva kirjaga, mis vastab:"
+
+#: forward.php:97 filters.php:192 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Edastus"
+
+#: lib/Script/sieve.php:222
+msgid "Forward Keep Action"
+msgstr "Edastamise tegevus"
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Kasutatav filtridraiver ei võimalda edastamist."
+
+#: lib/Script/sieve.php:232 lib/Script/procmail.php:288
+#: lib/Script/maildrop.php:246
+msgid "Forwards"
+msgstr "Edastused"
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr "Edastuste muutmine"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Kellelt"
+
+#: lib/Script/sieve.php:2927
+msgid "From:"
+msgstr "Kellelt:"
+
+#: lib/Script/sieve.php:118
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Tehtud Ingo (http://www.horde.org/ingo/) poolt"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Suurem kui"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Suurem või võrdne"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "Kasutatav filtridraiver ei võimalda üksikuid reegleid."
+
+#: lib/Script/sieve.php:2521
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Püüad panna kirju olematusse kausta."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "On"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "Ei ole"
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr "Jäta kirja koopia oma postkasti"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr "Vajalik on LDAP toetus, kuid LDAP moodul puudub või pole laetud."
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Väiksem kui"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Väiksem või võrdne"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "List-ID"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "Mär_gi kiri kustutatuks"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Märgi kiri:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "Vastavus tüüp"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "Vastab (koos muutujatega)"
+
+#: lib/api.php:71
+msgid "Maximum Number of Rules"
+msgstr "Reeglite suurim arv"
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Musta nimekirja suuruse piirang ületatud (Aadresse kokku: %s, piirang %s). "
+"Rohkem aadresse ei saanud lisada."
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Valge nimekirja suuruse piirang ületatud (Aadresse kokku: %s, piirang %s). "
+"Rohkem aadresse ei saanud lisada."
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+"Kiri oletava spami tunnustega rohkem või sama selle numbriga koheldakse kui "
+"spami."
+
+#: lib/Script/sieve.php:2941
+msgid "Missing address to notify"
+msgstr "Teavituse aadress puudub"
+
+#: lib/Script/sieve.php:2322
+msgid "Missing address to redirect message to"
+msgstr "Edastamise aadress puudub"
+
+#: lib/Script/sieve.php:2368
+msgid "Missing reason for reject"
+msgstr "Puudub tagasilükkamise põhjus"
+
+#: lib/Script/sieve.php:2671
+msgid "Missing reason in vacation."
+msgstr "Äraoleku põhjendus puudub."
+
+#: templates/filters/header.inc:32
+msgid "Move"
+msgstr "Järjesta"
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr "Nihuta reeglit allapoole"
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr "Nihuta reeglit ülespoole"
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr "Minu e-posti aadressid:"
+
+#: templates/filters/filter-none.inc:3 templates/filters/footer.inc:6
+#: lib/Storage.php:889
+msgid "New Rule"
+msgstr "Uus reegel"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "Alusrakenduse seadistuses ei leitud elementi \"%s\"."
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr "Alusrakendus ei ole sellel serveril seadistatud"
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr "Failis backends.php pole ühtki alusrakendust seadistatud"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Reegleid ei ole. Uue reegli loomiseks klõpsa \"%s\"."
+
+#: lib/Script/sieve.php:1679 lib/Script/sieve.php:1828
+#: lib/Script/sieve.php:2044
+msgid "No headers specified"
+msgstr "Päiseid pole määratud"
+
+#: script.php:69
+msgid "No script generated."
+msgstr "Skripti ei loodud."
+
+#: lib/Script/sieve.php:2060 lib/Script/sieve.php:2144
+msgid "No strings specified"
+msgstr "Sõnu pole määratud"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Erineb"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr "Saada teavitus aadressile"
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr "Päe_vade arv äraolekuteadete vahel:"
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr "Muuda ainult kirja atribuute"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Skriptis muudatuste tegemise seaded."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Muud seaded"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Ülevaade"
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr "Osavõtjad (Kellelt, Kellele, jne)"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Sisesta uue kausta nimi:"
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr "Põhjus"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Saabunud"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Edasta aadressile"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Regulaaravaldis"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr "Lükka tagasi põhjusega"
+
+#: config/fields.php.dist:51
+msgid "Resent-From"
+msgstr "Saada uuesti Kellelt"
+
+#: config/fields.php.dist:55
+msgid "Resent-To"
+msgstr "Saada uuesti kellele"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "Tagasi filtrite nimekirja"
+
+#: forward.php:34 forward.php:88 spam.php:62 spam.php:130 vacation.php:34
+#: vacation.php:117 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "Tagasi reeglite nimekirja"
+
+#: templates/filters/header.inc:27
+msgid "Rule"
+msgstr "Reegel"
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr "Reegel kopeeritud"
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr "Reegel kustutatud"
+
+#: forward.php:72 filters.php:94 spam.php:106 vacation.php:97
+msgid "Rule Disabled"
+msgstr "Reegel välja lülitatud"
+
+#: forward.php:63 filters.php:99 spam.php:97 vacation.php:88
+msgid "Rule Enabled"
+msgstr "Reegel sisse lülitatud"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "Reegli nimi:"
+
+#: lib/Script/sieve.php:2929
+msgid "Rule:"
+msgstr "Reegel:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "STARTTLS nurjus: (%s) %s"
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "Spam"
+
+#: forward.php:45 spam.php:79 vacation.php:62 templates/rule/footer.inc:60
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:41
+msgid "Save"
+msgstr "Salvesta"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Salvesta seadistus"
+
+#: forward.php:66 forward.php:84 spam.php:100 spam.php:126 vacation.php:91
+#: vacation.php:113
+msgid "Save and Disable"
+msgstr "Salvesta ja Lülita välja"
+
+#: forward.php:57 forward.php:86 spam.php:91 spam.php:128 vacation.php:82
+#: vacation.php:115
+msgid "Save and Enable"
+msgstr "Salvesta ja Aktiveeri"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Skript"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Skripti uuendamine"
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr "Skripti ei muudetud."
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr "Skripti aktiveerimine õnnestus."
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr "Skripti deaktiveerimine õnnestus."
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Loetud"
+
+#: rule.php:218
+msgid "Select a field"
+msgstr "Vali väli"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Vali reeglid mida näidata:"
+
+#: rule.php:347 templates/blacklist/blacklist.inc:23 lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "Vali sihtkaust"
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr "Muu päis"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Saatja"
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr "Seadistus muudetud."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Näita aktiivset skripti"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Näita kehtivat skripti"
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr "Spami eemaldamine ei ole toeatud hetkege reegli draiveri poolt."
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "Suurus"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr "Lähe (Kelletl, Vastus, jne)"
+
+#: filters.php:198 lib/Block/overview.php:105 lib/Block/overview.php:108
+#: lib/Script/sieve.php:425 lib/Script/maildrop.php:301
+msgid "Spam Filter"
+msgstr "Spami filter"
+
+#: spam.php:147 spam.php:154
+msgid "Spam Filtering"
+msgstr "Spami filtrid"
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr "Spami Level:"
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr "Äraoleku algus:"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "Kui vastab sellele reeglile, katkesta kontroll"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Teema"
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr "Äraolekuteate teema:"
+
+#: lib/Script/sieve.php:2928
+msgid "Subject:"
+msgstr "Teema:"
+
+#: lib/api.php:103
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "Aadress \"%s\" lisati musta nimekirja."
+
+#: lib/api.php:126
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "Aadress \"%s\" lisati valgesse nimekirja."
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "Draiver ütles: "
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr "Skripti aktiveerimisel tekkis viga."
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr "Skripti deaktiveerimisel tekkis viga."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Kellele"
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr "Kellele:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "%s kirjelduse laadimine nurjus."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "Kasutaja päis"
+
+#: filters.php:186 vacation.php:151 lib/Block/overview.php:61
+#: lib/Block/overview.php:64 lib/Script/sieve.php:399
+#: lib/Script/procmail.php:268 lib/Script/maildrop.php:276
+msgid "Vacation"
+msgstr "Äraolek"
+
+#: vacation.php:158
+msgid "Vacation Edit"
+msgstr "Äraolekuteate muutmine"
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "Kasutatav filtreerimisdraiver ei võimalda äraolekuteadet."
+
+#: rule.php:353
+msgid "Value"
+msgstr "Väärtus"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Aadressid valges nimekirjas:"
+
+#: filters.php:180 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:85 lib/Block/overview.php:88
+msgid "Whitelist"
+msgstr "Valgenimekiri"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "Valge nimekirja muutmine"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Kasutatav filtreerimisdraiver ei võimalda valget nimekirja."
+
+#: lib/Script/sieve.php:329 lib/Script/procmail.php:236
+#: lib/Script/maildrop.php:224
+msgid "Whitelisted Addresses"
+msgstr "Aadressid valges nimekirjas"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: filters.php:71 rule.php:172
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Sa ei saa luua rohkem kui %d reeglit."
+
+#: filters.php:63 rule.php:23
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Sa ei saa luua või muuta kohandatud reegleid."
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr "Ei saa tekkitada tühja vastet. Palun täida väärtus \"%s\"."
+
+#: filters.php:52 rule.php:151
+msgid "You do not have permission to delete filter rules."
+msgstr "Sul puuduvad õigused filtrite kustutamiseks."
+
+#: filters.php:45 filters.php:112 filters.php:123 rule.php:58 rule.php:165
+msgid "You do not have permission to edit filter rules."
+msgstr "Sul puuduvad õigused filtrite muutmiseks"
+
+#: lib/Script/sieve.php:2926
+msgid "You have received a new message"
+msgstr "Sulle on uus kiri"
+
+#: lib/Script/imap.php:307 lib/Script/imap.php:330 lib/Script/imap.php:345
+msgid "[No Subject]"
+msgstr "[Teema puudub]"
+
+#: lib/Ingo.php:384
+msgid "_Blacklist"
+msgstr "_Mustnimekiri"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "_Kustuta kiri tervenisti"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "_Kirjuta iga aadress omaette reale:"
+
+#: lib/Ingo.php:390
+msgid "_Forward"
+msgstr "_Edastus"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "_Tõsta kiri kausta:"
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "Õig_used"
+
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr "_Skript"
+
+#: lib/Ingo.php:387
+msgid "_Vacation"
+msgstr "Äraoleku teade"
+
+#: lib/Ingo.php:381
+msgid "_Whitelist"
+msgstr "_Valgenimekiri"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "aktiivne"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "ja"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "välja lülitatud - klõpsa sisse lülitamiseks"
+
+#: filters.php:218
+msgid "field"
+msgstr "väli"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "mitteaktiivne"
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr "Ingo genereeritud maildrop skript"
+
+#: filters.php:218
+msgid "match"
+msgstr "vastab"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "või"
+
+#: lib/Script/procmail.php:130
+msgid "procmail script generated by Ingo"
+msgstr "Ingo genereeritud procmail skript"
diff --git a/ingo/po/eu_ES.po b/ingo/po/eu_ES.po
new file mode 100644 (file)
index 0000000..7fca394
--- /dev/null
@@ -0,0 +1,918 @@
+# Basque translations for Ingo.
+# Copyright 2008-2009 The Horde Project
+# This file is distributed under the same license as the Ingo package.
+# Euskal Herriko Unibertsitatea EHU/UPV <xabier.arrieta@ehu.es>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo H3 (1.1)\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2008-01-16 09:33+0100\n"
+"PO-Revision-Date: 2008-07-17 14:26+0200\n"
+"Last-Translator: Euskal Herriko Unibertsitatea EHU/UPV <xabier.arrieta@ehu."
+"es>\n"
+"Language-Team: Euskal Herriko Unibertsitatea EHU/UPV <xabier.arrieta@ehu."
+"es>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: filters.php:189
+msgid " and"
+msgstr " eta"
+
+#: filters.php:189
+msgid " or"
+msgstr " edo"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Zerrenda beltzeko helbideen ekintza:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Aktibatu script-a"
+
+#: lib/Driver/ldap.php:232
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "Huts egin du \"%s\"(r)en script-a aktibatzean: (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Beste ezarpen batzuk"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Ondoko guztiarekin"
+
+#: lib/api.php:54
+msgid "Allow Rules"
+msgstr "Onartu arauak"
+
+#: templates/rule/footer.inc:33
+msgid "Answered"
+msgstr "Erantzunda"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Ondoko guztietako edozeinekin"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Aplikatu iragazkiak"
+
+#: filters.php:218
+msgid "Are you sure you want to delete this rule?"
+msgstr "Ziur zaude arau hau ezabatu nahi duzula?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Automatikoki eguneratu script-a aldaketa bakoitzaren ondoren?"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Bcc"
+
+#: lib/Storage.php:379
+msgid "Begins with"
+msgstr "Honela hasten da"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Loturak huts egin du: (%s) %s"
+
+#: filters.php:148 lib/Block/overview.php:95 lib/Block/overview.php:98
+#: templates/blacklist/blacklist.inc:7
+msgid "Blacklist"
+msgstr "Zerrenda beltza"
+
+#: blacklist.php:107
+msgid "Blacklist Edit"
+msgstr "Editatu zerrenda beltza"
+
+#: blacklist.php:17
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "Uneko iragazte-kontrolatzaileak ez du zerrenda beltzik onartzen."
+
+#: lib/Script/sieve.php:244 lib/Script/procmail.php:207
+#: lib/Script/maildrop.php:176
+msgid "Blacklisted Addresses"
+msgstr "Zerrenda beltzeko helbideak"
+
+#: config/fields.php.dist:88
+msgid "Body"
+msgstr "Testua"
+
+#: filters.php:186 rule.php:281
+msgid "Case Sensitive"
+msgstr "Maiuskula/minuskula"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: whitelist.php:36 rule.php:122 vacation.php:41 forward.php:33
+#: blacklist.php:73
+msgid "Changes saved."
+msgstr "Aldaketak gorde dira."
+
+#: lib/Driver/ldap.php:75
+msgid "Connection failure"
+msgstr "Konexioak huts egin du"
+
+#: lib/Storage.php:375
+msgid "Contains"
+msgstr "Hau dauka"
+
+#: filters.php:229 filters.php:230
+#, php-format
+msgid "Copy %s"
+msgstr "Kopiatu %s"
+
+#: lib/Storage.php:875
+#, php-format
+msgid "Copy of %s"
+msgstr "Kopia - %s"
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Sortu karpeta berria"
+
+#: lib/Script/procmail.php:336 lib/Script/maildrop.php:280
+msgid "DISABLED: "
+msgstr "DESGAITUTA: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Desaktibatu script-a"
+
+#: filters.php:218 filters.php:219
+#, php-format
+msgid "Delete %s"
+msgstr "Ezabatu %s"
+
+#: templates/rule/filter.inc:30
+msgid "Delete Condition"
+msgstr "Ezabatu baldintza"
+
+#: lib/Storage.php:323
+msgid "Delete message completely"
+msgstr "Ezabatu mezua erabat"
+
+#: templates/rule/footer.inc:35
+msgid "Deleted"
+msgstr "Ezabatuta"
+
+#: lib/Storage.php:311
+msgid "Deliver into my Inbox"
+msgstr "Banatu nire sarrerako ontzian"
+
+#: lib/Storage.php:337
+msgid "Deliver into my Inbox and copy to"
+msgstr "Banatu sarrerako ontzian eta kopiatu hona"
+
+#: lib/Storage.php:332
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Banatu sarrerako ontzian eta birbideratu hona"
+
+#: lib/Storage.php:317
+msgid "Deliver to folder"
+msgstr "Banatu karpetan"
+
+#: filters.php:242 filters.php:243
+#, php-format
+msgid "Disable %s"
+msgstr "Desgaitu %s"
+
+#: templates/vacation/vacation.inc:6 templates/rule/header.inc:26
+#: templates/forward/forward.inc:10 templates/blacklist/blacklist.inc:10
+#: templates/whitelist/whitelist.inc:10
+msgid "Disabled"
+msgstr "Desgaituta"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Jakinarazpen xehea bistaratu iragazki bakoitza aplikatzen denean?"
+
+#: templates/vacation/vacation.inc:34
+msgid "Do _not send responses to bulk or list messages"
+msgstr "E_z erantzun mezu baztergarriei edo masiboei"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Egin ondokoa:"
+
+#: lib/Storage.php:380
+msgid "Doesn't begin with"
+msgstr "Ez da honela hasten"
+
+#: lib/Storage.php:376
+msgid "Doesn't contain"
+msgstr "Ez dauka"
+
+#: lib/Storage.php:382
+msgid "Doesn't end with"
+msgstr "Ez da honela amaitzen"
+
+#: lib/Storage.php:384
+msgid "Doesn't exist"
+msgstr "Ez dago"
+
+#: lib/Storage.php:387
+msgid "Doesn't match (with placeholders)"
+msgstr "Ez dator bat (leku-markekin)"
+
+#: lib/Block/overview.php:63 lib/Block/overview.php:72
+#: lib/Block/overview.php:87 lib/Block/overview.php:97
+#: templates/filters/header.inc:46
+msgid "Edit"
+msgstr "Editatu"
+
+#: filters.php:207 filters.php:209 filters.php:213 filters.php:214
+#, php-format
+msgid "Edit %s"
+msgstr "Editatu %s"
+
+#: filters.php:246 filters.php:247
+#, php-format
+msgid "Enable %s"
+msgstr "Gaitu %s"
+
+#: templates/filters/header.inc:48
+msgid "Enabled"
+msgstr "Gaituta"
+
+#: lib/Storage.php:381
+msgid "Ends with"
+msgstr "Honela amaitzen da"
+
+#: lib/Storage.php:392
+msgid "Equal to"
+msgstr "Berdin"
+
+#: lib/Driver/ldap.php:139 lib/Driver/ldap.php:149 lib/Driver/ldap.php:158
+#: lib/Driver/ldap.php:168
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Errorea uneko script-a eskuratzean: (%d) %s"
+
+#: blacklist.php:71
+msgid "Error saving changes."
+msgstr "Errorea aldaketak gordetzean."
+
+#: templates/filters/header.inc:41
+msgid "Existing Rules"
+msgstr "Arauak"
+
+#: lib/Storage.php:383
+msgid "Exists"
+msgstr "Badago"
+
+#: lib/Driver/ldap.php:144
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "Objektu 1 espero zen, % lortu dira."
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Iragazi mezu guztiak"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Iragazi ikusitako mezuak bakarrik"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Iragazi ikusi gabeko mezuak bakarrik"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Iragazteko aukerak"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Iragazteko araua"
+
+#: filters.php:113
+msgid "Filter Rules"
+msgstr "Iragazteko arauak"
+
+#: script.php:52
+msgid "Filter Script Display"
+msgstr "Iragazteko script-aren bistaratzea"
+
+#: lib/Ingo.php:321
+msgid "Filter _Rules"
+msgstr "Iragazteko _arauak"
+
+#: lib/Script/imap.php:314
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Iragazkiaren jarduera: %s mezu kopiatu dira \"%s\" karpetan."
+
+#: lib/Script/imap.php:301
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Iragazkiaren jarduera: %s mezu ezabatu dira."
+
+#: lib/Script/imap.php:279
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Iragazkiaren jarduera: %s mezu eraman dira \"%s\" karpetara."
+
+#: lib/Script/imap.php:182
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Iragazkiaren jarduera: zerrenda beltzarekin bat zetozen %s mezu ezabatu dira."
+
+#: lib/Script/imap.php:311
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Iragazkiaren jarduera: \"%2$s\"(r)en \"%1$s\" mezua \"%3$s\" karpetan "
+"kopiatu da."
+
+#: lib/Script/imap.php:296
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Iragazkiaren jarduera: \"%2$s\"(r)en \"%1$s\" mezua ezabatu egin da."
+
+#: lib/Script/imap.php:273
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Iragazkiaren jarduera: \"%2$s\"(r)en \"%1$s\" mezua \"%3$s\" karpetara "
+"eraman da."
+
+#: rule.php:160
+msgid "Filter not found."
+msgstr "Iragazkia ez da aurkitu."
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Honekin bat datorren iritsitako mezu bakoitza:"
+
+#: filters.php:166 lib/Block/overview.php:71 lib/Block/overview.php:73
+#: templates/forward/forward.inc:8
+msgid "Forward"
+msgstr "Birbidali"
+
+#: forward.php:16
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Uneko iragazte-kontrolatzaileak ez du birbidaltzerik onartzen."
+
+#: lib/Script/sieve.php:214 lib/Script/procmail.php:282
+#: lib/Script/maildrop.php:225
+msgid "Forwards"
+msgstr "Birbidalketak"
+
+#: forward.php:45
+msgid "Forwards Edit"
+msgstr "Editatu birbidalketak"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Nork"
+
+#: lib/Script/sieve.php:2066
+msgid "From:"
+msgstr "Nork:"
+
+#: lib/Script/sieve.php:110
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Ingo-k sortua (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:390
+msgid "Greater than"
+msgstr "Hau baino handiagoa"
+
+#: lib/Storage.php:391
+msgid "Greater than or equal to"
+msgstr "Hau baino handiagoa edo berdina da"
+
+#: templates/rule/footer.inc:31
+msgid "Important"
+msgstr "Garrantzitsua"
+
+#: rule.php:36
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "Uneko iragazte-kontrolatzaileak ez du arau indibidualik onartzen."
+
+#: lib/Script/sieve.php:1864
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Mezua banatzeko zehaztutako postontzia ez dago."
+
+#: lib/Storage.php:377
+msgid "Is"
+msgstr "Hau da"
+
+#: lib/Storage.php:378
+msgid "Isn't"
+msgstr "Ez da hau"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"LDAP euskarria behar da, baina LDAP modulua ez dago erabilgarri edo ez da "
+"kargatu."
+
+#: lib/Storage.php:388
+msgid "Less than"
+msgstr "Hau baino txikiagoa"
+
+#: lib/Storage.php:389
+msgid "Less than or equal to"
+msgstr "Txikiago edo berdin"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "List-Id"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "_Markatu mezua ezabatutako gisa"
+
+#: templates/rule/footer.inc:24
+msgid "Mark message as:"
+msgstr "Markatu mezua honela:"
+
+#: lib/Storage.php:386
+msgid "Matches (with placeholders)"
+msgstr "Bat dator (leku-markekin)"
+
+#: lib/api.php:57
+msgid "Maximum Number of Rules"
+msgstr "Arauen gehieneko kopurua"
+
+#: lib/Storage.php:513
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Zerrenda beltzeko helbideen gehieneko kopurua gainditu da (Helbideak "
+"guztira: %s, Gehieneko kopurua: %s).  Ezin izan da helbide berririk gehitu "
+"zerrenda beltzean."
+
+#: lib/Storage.php:566
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Zerrenda zuriko helbideen gehieneko kopurua gainditu da (Helbideak guztira: %"
+"s, Gehieneko kopurua: %s).  Ezin izan da helbide berririk gehitu zerrenda "
+"zurian."
+
+#: lib/Script/sieve.php:2074
+msgid "Missing address to notify"
+msgstr "Jakinarazpena bidali beharreko helbidea falta da"
+
+#: lib/Script/sieve.php:1732
+msgid "Missing address to redirect message to"
+msgstr "Mezua birbideratu beharreko helbidea falta da"
+
+#: lib/Script/sieve.php:1764
+msgid "Missing reason for reject"
+msgstr "Ezesteko arrazoia falta da"
+
+#: lib/Script/sieve.php:1931
+msgid "Missing reason in vacation."
+msgstr "Kanpoan egoteko arrazoia falta da."
+
+#: templates/filters/header.inc:49
+msgid "Move"
+msgstr "Lekuz aldatu"
+
+#: filters.php:130 filters.php:239
+msgid "Move Rule Down"
+msgstr "Eraman araua behera"
+
+#: filters.php:131 filters.php:238
+msgid "Move Rule Up"
+msgstr "Eraman araua gora"
+
+#: templates/vacation/vacation.inc:42
+msgid "N_umber of days between vacation replies:"
+msgstr "_Kanpoan zaudeneko erantzunen arteko egun kopurua:"
+
+#: lib/Storage.php:771 templates/filters/footer.inc:6
+#: templates/filters/filter-none.inc:3
+msgid "New Rule"
+msgstr "Arau berria"
+
+#: lib/Ingo.php:235 lib/Ingo.php:237
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "Ez da \"%s\" elementurik aurkitu modulu-konfigurazioan."
+
+#: lib/Ingo.php:233
+msgid "No backend configured for this host"
+msgstr "Ez da modulurik konfiguratu ostalari honentzat"
+
+#: lib/Ingo.php:210
+msgid "No backends configured in backends.php"
+msgstr "Ez dago modulurik konfiguratuta backends.php-n"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Iragazkirik ez. Hautatu \"%s\" iragazki berri bat sortzeko."
+
+#: lib/Script/sieve.php:1332 lib/Script/sieve.php:1425
+#: lib/Script/sieve.php:1602
+msgid "No headers specified"
+msgstr "Ez da goibururik zehaztu"
+
+#: script.php:67
+msgid "No script generated."
+msgstr "Ez da script-ik sortu."
+
+#: lib/Script/sieve.php:1618
+msgid "No strings specified"
+msgstr "Ez da katerik zehaztu"
+
+#: lib/Storage.php:393
+msgid "Not equal to"
+msgstr "Desberdina"
+
+#: lib/Storage.php:353
+msgid "Notify email address"
+msgstr "Jakinarazi posta-helbidea"
+
+#: lib/Storage.php:347
+msgid "Only flag the message"
+msgstr "Jarri bandera mezuari bakarrik"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Script-ak eguneratzeari buruzko aukerak."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Beste aukera batzuk"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Aurkezpen orokorra"
+
+#: templates/javascript/new_folder.js:6
+msgid "Please enter the name of the new folder:"
+msgstr "Idatzi karpeta berriaren izena:"
+
+#: templates/vacation/vacation.inc:60
+msgid "R_eason"
+msgstr "_Arrazoia"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Jasotze-data"
+
+#: lib/Storage.php:328
+msgid "Redirect to"
+msgstr "Birbideratu hona"
+
+#: lib/Storage.php:385
+msgid "Regular expression"
+msgstr "Adierazpen erregularra"
+
+#: lib/Storage.php:343
+msgid "Reject with reason"
+msgstr "Ezetsi arrazoiarekin"
+
+#: config/fields.php.dist:55
+msgid "Resent To"
+msgstr "Bidali berriro honi"
+
+#: config/fields.php.dist:51
+msgid "Resent-from"
+msgstr "Honek berriro bidalia"
+
+#: templates/rule/footer.inc:60
+msgid "Return to Filters List"
+msgstr "Itzuli iragazkien zerrendara"
+
+#: templates/vacation/vacation.inc:71 templates/forward/forward.inc:34
+#: templates/blacklist/blacklist.inc:41 templates/whitelist/whitelist.inc:24
+msgid "Return to Rules List"
+msgstr "Itzuli arauen zerrendara"
+
+#: templates/filters/header.inc:47
+msgid "Rule"
+msgstr "Araua"
+
+#: filters.php:63
+msgid "Rule Copied"
+msgstr "Araua kopiatu da"
+
+#: filters.php:42
+msgid "Rule Deleted"
+msgstr "Araua ezabatu da"
+
+#: filters.php:79
+msgid "Rule Disabled"
+msgstr "Araua desgaitu da"
+
+#: filters.php:84
+msgid "Rule Enabled"
+msgstr "Araua gaitu da"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name"
+msgstr "Arauaren izena"
+
+#: lib/Script/sieve.php:2068
+msgid "Rule:"
+msgstr "Araua:"
+
+#: lib/Driver/ldap.php:88
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "STARTTLSek huts egin du: (%s) %s"
+
+#: templates/vacation/vacation.inc:70 templates/rule/footer.inc:59
+#: templates/forward/forward.inc:33 templates/blacklist/blacklist.inc:40
+#: templates/whitelist/whitelist.inc:23
+msgid "Save"
+msgstr "Gorde"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Gorde ezarpenak"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Script-a"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Script-a eguneratzea"
+
+#: lib/Ingo.php:186
+msgid "Script not updated."
+msgstr "Script-a ez da eguneratu."
+
+#: lib/Ingo.php:141
+msgid "Script successfully activated."
+msgstr "Script-a ondo aktibatu da."
+
+#: lib/Ingo.php:140
+msgid "Script successfully deactivated."
+msgstr "Script-a ondo desaktibatu da."
+
+#: templates/rule/footer.inc:29
+msgid "Seen"
+msgstr "Ikusita"
+
+#: rule.php:190
+msgid "Select a field"
+msgstr "Hautatu eremua"
+
+#: lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "Hautatu helburu-karpeta"
+
+#: rule.php:227
+msgid "Self-Defined Header"
+msgstr "Erabiltzaileak definitutako goiburua"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Bidaltzailea"
+
+#: filters.php:98
+msgid "Settings successfully updated."
+msgstr "Ezarpenak ondo eguneratu dira."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Erakutsi script aktiboa"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Erakutsi uneko script-a"
+
+#: config/fields.php.dist:83
+msgid "Size"
+msgstr "Tamaina"
+
+#: templates/rule/footer.inc:49
+msgid "Stop checking if this rule matches?"
+msgstr "Egiaztatzeari utzi araua bat badator?"
+
+#: templates/vacation/vacation.inc:51
+msgid "Subje_ct of vacation message:"
+msgstr "_Kanpoan zaudeneko mezuaren gaia:"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Gaia"
+
+#: lib/Script/sieve.php:2067
+msgid "Subject:"
+msgstr "Gaia:"
+
+#: lib/api.php:85
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "\"%s\" helbidea zerrenda beltzean gehitu da."
+
+#: lib/api.php:104
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "\"%s\" helbidea zerrenda zurian gehitu da."
+
+#: lib/Ingo.php:136
+msgid "The driver said: "
+msgstr "Kontrolatzaileak hau esan du: "
+
+#: lib/Ingo.php:135
+msgid "There was an error activating the script."
+msgstr "Errorea gertatu da script-a aktibatzean."
+
+#: lib/Ingo.php:134
+msgid "There was an error deactivating the script."
+msgstr "Errorea gertatu da script-a desaktibatzean."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Nori"
+
+#: templates/filters/filter.html:23
+msgid "To:"
+msgstr "Nori:"
+
+#: lib/Script.php:127
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Ezin da kargatu %s(r)en definizioa."
+
+#: filters.php:160 lib/Script/sieve.php:352 lib/Script/procmail.php:262
+#: lib/Block/overview.php:61 lib/Block/overview.php:64
+#: templates/vacation/vacation.inc:5
+msgid "Vacation"
+msgstr "Kanpoan"
+
+#: vacation.php:71
+msgid "Vacation Edit"
+msgstr "Editatu kanpoan zaudeneko mezua"
+
+#: vacation.php:16
+msgid "Vacation is not supported in the current filtering driver."
+msgstr ""
+"Uneko iragazte-kontrolatzaileak ez du kanpoan zaudeneko baliabidea onartzen."
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Z_errenda zuriko helbideak:"
+
+#: filters.php:154 lib/Block/overview.php:85 lib/Block/overview.php:88
+#: templates/whitelist/whitelist.inc:8
+msgid "Whitelist"
+msgstr "Zerrenda zuria"
+
+#: whitelist.php:55
+msgid "Whitelist Edit"
+msgstr "Editatu zerrenda zuria"
+
+#: whitelist.php:18
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Uneko iragazte-kontrolatzaileak ez du zerrenda zuririk onartzen."
+
+#: lib/Script/sieve.php:298 lib/Script/procmail.php:234
+#: lib/Script/maildrop.php:203
+msgid "Whitelisted Addresses"
+msgstr "Zerrenda zuriko helbideak"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: filters.php:56 rule.php:144
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Ez duzu baimenik %d arau baino gehiago sortzeko."
+
+#: filters.php:48 rule.php:21
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Ez duzu baimenik arau pertsonalizatuak sortzeko edo editatzeko."
+
+#: lib/Script/sieve.php:2065
+msgid "You have received a new message"
+msgstr "Mezu berri bat jaso duzu"
+
+#: vacation.php:30
+msgid ""
+"You must specify at least one email address for which the vacation messages "
+"should be activated."
+msgstr ""
+"Helbide elektronikoren bat zehaztu behar duzu kanpoan zaudeneko mezuak "
+"aktibatu ahal izateko."
+
+#: lib/Script/imap.php:274 lib/Script/imap.php:297 lib/Script/imap.php:311
+msgid "[No Subject]"
+msgstr "[Gairik ez]"
+
+#: templates/forward/forward.inc:24
+msgid "_Address(es) to forward to:"
+msgstr "_Birbideratu beharreko helbideak:"
+
+#: templates/vacation/vacation.inc:23
+msgid "_Addresses to not send responses to:"
+msgstr "_Erantzunik ez bidaltzeko helbideak:"
+
+#: lib/Ingo.php:326
+msgid "_Blacklist"
+msgstr "_Zerrenda beltza"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "Ez_abatu mezua erabat"
+
+#: templates/blacklist/blacklist.inc:31
+msgid "_Enter each address on a new line:"
+msgstr "_Sartu helbide bakoitza lerro berri batean:"
+
+#: lib/Ingo.php:332
+msgid "_Forward"
+msgstr "_Birbidali"
+
+#: templates/forward/forward.inc:17
+msgid "_Keep a copy of messages in this account?"
+msgstr "_Mezuen kopia bat gorde kontu honetan?"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "_Eraman mezuak karpeta honetara:"
+
+#: templates/vacation/vacation.inc:13
+msgid "_My email addresses:"
+msgstr "_Nire helbide elektronikoak:"
+
+#: lib/Ingo.php:335
+msgid "_Script"
+msgstr "_Script-a"
+
+#: lib/Ingo.php:329
+msgid "_Vacation"
+msgstr "_Kanpoan"
+
+#: lib/Ingo.php:323
+msgid "_Whitelist"
+msgstr "Ze_rrenda zuria"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "aktibo"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "eta"
+
+#: templates/filters/filter.html:13
+msgid "disabled - click to enable"
+msgstr "desgaituta - egin klik gaitzeko"
+
+#: filters.php:184
+msgid "field"
+msgstr "eremua"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "inaktibo"
+
+#: lib/Script/maildrop.php:121
+msgid "maildrop script generated by Ingo"
+msgstr "Ingo-k sortutako maildrop script-a"
+
+#: filters.php:184
+msgid "match"
+msgstr "bat etorri"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "edo"
+
+#: lib/Script/procmail.php:128
+msgid "procmail script generated by Ingo"
+msgstr "Ingo-k sortutako procmail script-a"
diff --git a/ingo/po/fi_FI.po b/ingo/po/fi_FI.po
new file mode 100644 (file)
index 0000000..2d64135
--- /dev/null
@@ -0,0 +1,1029 @@
+# Finnish translation for Ingo.
+# Copyright
+# Leena Heino <liinu@uta.fi>, 2003-2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo 2.0-cvs\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2008-05-17 16:38+0300\n"
+"PO-Revision-Date: 2008-05-20 12:59+0200\n"
+"Last-Translator: Leena Heino <liinu@uta.fi>\n"
+"Language-Team: Finnish <i18n@lists.horde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=iso-8859-1\n"
+"Content-Transfer-Encoding: 8-bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: filters.php:223
+msgid " and"
+msgstr " ja"
+
+#: filters.php:223
+msgid " or"
+msgstr " tai"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Toiminto mustalistatuille osoitteille:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Aktivoi skripti"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "Skriptin aktivointi \"%s\":lle epäonnistui: (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Lisäasetukset"
+
+#: forward.php:43
+msgid "Address(es) to forward to:"
+msgstr "Välitä viestit osoitteisiin:"
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr "Älä lähetä vastausviestiä osoitteisiin:"
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr "Tarkemmat asetukset"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Kaikki seuraavat"
+
+#: lib/api.php:68
+msgid "Allow Rules"
+msgstr "Salli säännöt"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Vastattu"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Jokin seuraavista"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Suodata viestit"
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr "Oletko varma, että haluat poistaa tämän säännön?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Päivitä skripti jokaisen muutoksen jälkeen."
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr "Perusasetukset"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Piilokopio"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Alkaa"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Yhdistäminen epäonnistui: (%s) %s"
+
+#: filters.php:174 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:95 lib/Block/overview.php:98
+msgid "Blacklist"
+msgstr "Musta lista"
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr "Mustan listan muokkaus"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "Käytössä oleva suodatinajuri ei tue mustia listoja."
+
+#: lib/Script/maildrop.php:197 lib/Script/procmail.php:219
+#: lib/Script/sieve.php:269
+msgid "Blacklisted Addresses"
+msgstr "Mustalle listalle lisätyt osoitteet"
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "Sisältö"
+
+#: filters.php:220 rule.php:322
+msgid "Case Sensitive"
+msgstr "Kirjainkokoriippuvainen"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Kopio"
+
+#: blacklist.php:70 forward.php:56 rule.php:141 spam.php:106 vacation.php:81
+#: whitelist.php:38
+msgid "Changes saved."
+msgstr "Muutokset talletettiin."
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Yhteys epäonnistui"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Sisältää"
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr "Kopioi %s"
+
+#: lib/Storage.php:993 lib/Storage/sql.php:621
+#, php-format
+msgid "Copy of %s"
+msgstr "%s:n kopio"
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "Ei voitu tallentaa käänettyä mallitiedosta '%s'."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Luo uusi kansio"
+
+#: lib/Script/maildrop.php:362 lib/Script/procmail.php:352
+msgid "DISABLED: "
+msgstr "POIS PÄÄLTÄ:"
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Poista skripti käytöstä"
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr "Poista %s"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "Poista sääntö"
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "Poista viesti kokonaan"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Poistettu"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "Laita viesti INBOXiini"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr "Laita viesti INBOXiini ja kopioi kohteeseen"
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Laita viesti INBOXiini ja uudelleenohjaa kohteeseen"
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "Laita viesti tähän kansioon"
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "Kohde (To,CC,Bcc,etc)"
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr "Poista käytöstä %s"
+
+#: forward.php:99 spam.php:160 vacation.php:153
+#: templates/whitelist/whitelist.inc:10 templates/rule/header.inc:26
+#: templates/blacklist/blacklist.inc:10
+msgid "Disabled"
+msgstr "Poistettu käytöstä"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Näytä ilmoitus jokaisella suodattimen käyttökerralla."
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr "Älä lähetä vastausviestia joukkoviesteihin tai postilistaviesteihin."
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Tee tämä:"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "Ei ala"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Ei sisällä"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "Ei pääty"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "Ei ole olemassa"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "Ei täsmää (placeholderien kanssa)"
+
+#: templates/filters/header.inc:23 lib/Block/overview.php:63
+#: lib/Block/overview.php:72 lib/Block/overview.php:87
+#: lib/Block/overview.php:97 lib/Block/overview.php:107
+msgid "Edit"
+msgstr "Muokkaa"
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr "Muokkaa %s"
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr "Laita päälle %s"
+
+#: templates/filters/header.inc:25
+msgid "Enabled"
+msgstr "Päällä"
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr "Poissaolo päättyy:"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "Päättyy"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "On yhtäsuuri kuin"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Virhe haettaessa tämänhetkistä skriptiä: (%d) %s"
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr "Virhe talletettaessa muutoksia."
+
+#: templates/filters/header.inc:17
+msgid "Existing Rules"
+msgstr "Olemassaolevat säännöt"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Olemassa"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "Odotettiin 1 objekti, saatiin %d."
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr "Ei voitu lukea socketista:"
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr "Ei voitu kirjoittaa socketiin:"
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "Ei voitu kirjoittaa socketiin (yhteys katkesi!)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "kenttä"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Suodata kaikki viestit"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Suodata vain vanhat viestit"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Suodata vain uudet viestit"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Suodatin asetukset"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Suodatinsääntö"
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr "Suodatinsäännöt"
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr "Suodatusskripti näkymä"
+
+#: lib/Ingo.php:379
+msgid "Filter _Rules"
+msgstr "Suodati_nsäännöt"
+
+#: lib/Script/imap.php:348
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Suodatintoiminto: %s viestiä on siirretty kansioon \"%s\"."
+
+#: lib/Script/imap.php:334
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Suodatintoiminto: %s viestiä on poistettu."
+
+#: lib/Script/imap.php:312
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Suodatintoiminto: %s viestiä on siirretty kansioon \"%s\"."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr "Suodatintoiminto: %s mustalla listalla olevaa viestiä on poistettu."
+
+#: lib/Script/imap.php:345
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Suodatintoiminto: Viesti \"%s\" osoitteesta \"%s\" on kopioitu kansioon \"%s"
+"\"."
+
+#: lib/Script/imap.php:329
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Suodatintoiminto: Viesti \"%s\" osoitteesta \"%s\" on poistettu."
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Suodatintoiminto: Viesti \"%s\" osoitteesta \"%s\" on siirretty kansioon \"%s"
+"\"."
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr "Suodatinta ei löytynyt"
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "Merkitty jatkoksi"
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr "Roskapostikansio:"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Kaikille tuleville viesteille, jotka sopivat:"
+
+#: filters.php:192 forward.php:97 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Uudelleenohjaa"
+
+#: lib/Script/sieve.php:222
+msgid "Forward Keep Action"
+msgstr "Uudelleenohjauksen tallennustoiminto"
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Käytössä oleva ajuri ei tue uudelleenohjausta."
+
+#: lib/Script/maildrop.php:246 lib/Script/procmail.php:298
+#: lib/Script/sieve.php:232
+msgid "Forwards"
+msgstr "Uudelleenohjaukset"
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr "Uudelleenohjauksen muokkaus"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Lähettäjä"
+
+#: lib/Script/sieve.php:2927
+msgid "From:"
+msgstr "Lähettäjä (From):"
+
+#: lib/Script/sieve.php:118
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Generated by Ingo (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Suurempi kuin"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Suurempi tai yhtäsuuri kuin"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "Käytössä oleva ajuri ei tue yksittäisiä suodatinsääntöjä."
+
+#: lib/Script/sieve.php:2521
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Yrität ohjata viestejä olemattomaan postikansioon."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "On"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "Ei ole"
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr "Jätä viestistä kopio tähän osoitteeseen."
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"LDAP tuki on pakollinen, mutta LDAP-moduuliu ei ole käytettävissä tai ole "
+"ladattu."
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Pienempi kuin"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Pienempi tai yhtäsuuri kuin"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "List-ID"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "Merkitse viesti poistetuksi"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Merkitse viesti:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "Täsmäystyyppi"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "Täsmää (placeholderin kanssa)"
+
+#: lib/api.php:71
+msgid "Maximum Number of Rules"
+msgstr "Sääntöjen enimmäismäärä"
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Mustalla listalla on suurin sallittu määrä osoitteita (Osoitteita yhteensä: %"
+"s, Suurin sallittu määrä: %s). Uutta osoitetta ei voitu lisätä mustalle "
+"listalle."
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Valkoisella listalla on suurin sallittu määrä osoitteita (Osoitteita "
+"yhteensä: %s, Suurin sallittu määrä: %s). Uutta osoitetta ei voitu lisätä "
+"valkoiselle listalle."
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+"Viestit, joissa on suurempi roskapostiarvo kuin tämä tai suurempi "
+"käsitellään roskapostina."
+
+#: lib/Script/sieve.php:2941
+msgid "Missing address to notify"
+msgstr "Ilmoitusviestin kohdeosoite puuttuu"
+
+#: lib/Script/sieve.php:2322
+msgid "Missing address to redirect message to"
+msgstr "Viestin uudelleenohjauksen kohdeosoite puuttuu"
+
+#: lib/Script/sieve.php:2368
+msgid "Missing reason for reject"
+msgstr "Hylkäämisviesti puuttuu"
+
+#: lib/Script/sieve.php:2671
+msgid "Missing reason in vacation."
+msgstr "Poissaoloviesti puuttuu."
+
+#: templates/filters/header.inc:29
+msgid "Move"
+msgstr "Siirrä"
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr "Siirrä sääntöä alaspäin"
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr "Siirrä sääntöä ylöspäin"
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr "Omat sähköpostiosoiteeni:"
+
+#: templates/filters/filter-none.inc:3 templates/filters/footer.inc:6
+#: lib/Storage.php:889
+msgid "New Rule"
+msgstr "Uusi sääntö"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "Elementtiä \"%s\" ei löytynyt taustajärjestelmän asetuksista."
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr "Taustajärjestelmää ei ole määritelty tälle palvelimelle"
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr "Taustajärjestelmiä ei ole määritelty backends.php tiedostossa"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Ei suodattimia. Napsauta \"%s\" tehdäksesi uuden suodattimen."
+
+#: lib/Script/sieve.php:1679 lib/Script/sieve.php:1828
+#: lib/Script/sieve.php:2044
+msgid "No headers specified"
+msgstr "Otsakkeita ei ole määritelty"
+
+#: script.php:69
+msgid "No script generated."
+msgstr "Skriptiä ei luotu."
+
+#: lib/Script/sieve.php:2060 lib/Script/sieve.php:2144
+msgid "No strings specified"
+msgstr "Merkkijonoja ei ole määritelty"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "erisuuri kuin"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr "Ilmoitussähköpostiosoiteet:"
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr "Monenko päivän välein lähetetään poissaoloviesti:"
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr "Muuta vain viestin tilatietoa"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Voit muuttaa skriptin päivitykseen liittyviä asetuksia."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Muut asetukset"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Yleiskuva"
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr "Osallistujat (From,To,etc)"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Anna uuden kansion nimi:"
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr "Syy:"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Vastaanotettu"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Uudelleenohjaa osoitteeseen"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Säännöllinen lauseke"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr "Hylkää viesti vastauksella"
+
+#: config/fields.php.dist:51
+msgid "Resent-From"
+msgstr "Uudelleenlähetetty osoitteesta"
+
+#: config/fields.php.dist:55
+msgid "Resent-To"
+msgstr "Lähetä uudelleen osoitteeseen"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "Palaa suodatinlistaan"
+
+#: forward.php:34 forward.php:88 spam.php:62 spam.php:141 vacation.php:34
+#: vacation.php:117 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "Palaa säännöstölistaan"
+
+#: templates/filters/header.inc:24
+msgid "Rule"
+msgstr "Sääntö"
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr "Sääntö kopioitiin"
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr "Sääntö poistettiin"
+
+#: filters.php:94 forward.php:72 spam.php:122 vacation.php:97
+msgid "Rule Disabled"
+msgstr "Sääntö pois käytöstä"
+
+#: filters.php:99 forward.php:63 spam.php:113 vacation.php:88
+msgid "Rule Enabled"
+msgstr "Sääntö käytössä"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "Säännön nimi:"
+
+#: lib/Script/sieve.php:2929
+msgid "Rule:"
+msgstr "Sääntö:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "STARTTLS epäonnistui: (%s) %s"
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "Roska_posti"
+
+#: forward.php:45 spam.php:79 vacation.php:62
+#: templates/whitelist/whitelist.inc:23 templates/rule/footer.inc:60
+#: templates/blacklist/blacklist.inc:41
+msgid "Save"
+msgstr "Talleta"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Talleta asetukset"
+
+#: forward.php:66 forward.php:84 spam.php:116 spam.php:137 vacation.php:91
+#: vacation.php:113
+msgid "Save and Disable"
+msgstr "Talleta ja poista käytöstä"
+
+#: forward.php:57 forward.php:86 spam.php:107 spam.php:139 vacation.php:82
+#: vacation.php:115
+msgid "Save and Enable"
+msgstr "Taleta ja ota käyttöön"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Skripti"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Skriptin päivitys"
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr "Skriptiä ei päivitetty."
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr "Skriptin aktivointi onnistui."
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr "Skriptin aktivointi onnistui."
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Vanha"
+
+#: rule.php:218
+msgid "Select a field"
+msgstr "Valitse kenttä"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Valitse näytettävä sääntö:"
+
+#: rule.php:347 templates/blacklist/blacklist.inc:23 lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "Valitse kohdekansio"
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr "Itsemääritelty otsake"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Lähettäjä"
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr "Asetusten päivitys onnistui."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Näytä aktiivinen skripti"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Näytä nykyinen skripti"
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr ""
+"Yksinkertainen roskapostisuodatin ei ole tuettu nykyisessä suodatinajurissa."
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "Koko"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr "Lähde (From,Reply-to,etc)"
+
+#: filters.php:198 lib/Script/maildrop.php:301 lib/Script/sieve.php:425
+#: lib/Block/overview.php:105 lib/Block/overview.php:108
+msgid "Spam Filter"
+msgstr "Roskapostisuodatin"
+
+#: spam.php:158 spam.php:165
+msgid "Spam Filtering"
+msgstr "Roskapostisuodatus"
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr "Roskapostitaso:"
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr "Poissaolon alku:"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "Lopeta tarkistus jos tämä sääntö sopii."
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Otsikko"
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr "Poissaoloviestin otsikko:"
+
+#: lib/Script/sieve.php:2928
+msgid "Subject:"
+msgstr "Otsikko:"
+
+#: lib/api.php:103
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "Osoite \"%s\" on lisätty mustalle listallesi."
+
+#: lib/api.php:126
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "Osoite \"%s\" on lisätty valkoiselle listallesi."
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "Ajurin virheilmoitus oli: "
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr "Skriptin aktivoinnissa tapahtui virhe."
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr "Skriptin ei-aktivoinnissa tapahtui virhe."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Vastaanottaja"
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr "Vastaanottaja:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Määrityksen %s lukeminen epäonnistui."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "Käytäjän määrittelemä otsake"
+
+#: filters.php:186 vacation.php:151 lib/Script/maildrop.php:276
+#: lib/Script/procmail.php:278 lib/Script/sieve.php:399
+#: lib/Block/overview.php:61 lib/Block/overview.php:64
+msgid "Vacation"
+msgstr "Poissaoloviesti"
+
+#: vacation.php:158
+msgid "Vacation Edit"
+msgstr "Poissaoloviestin muokkaus"
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "Käytössä oleva suodatinajuri ei tue poissaoloviestejä."
+
+#: rule.php:353
+msgid "Value"
+msgstr "Arvo"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Sa_llittujen listan osoitteet:"
+
+#: filters.php:180 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:85 lib/Block/overview.php:88
+msgid "Whitelist"
+msgstr "Valkoinen lista"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "Valkoisen listan muokkaus"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Käytössä oleva ajuri ei tue valkoista listaa."
+
+#: lib/Script/maildrop.php:224 lib/Script/procmail.php:246
+#: lib/Script/sieve.php:329
+msgid "Whitelisted Addresses"
+msgstr "Valkoiselle listalle lisätyt osoitteet"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Prioriteetti"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: filters.php:71 rule.php:172
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Et voi luoda enempää kuin %d sääntöä."
+
+#: filters.php:63 rule.php:23
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Et voi luoda tai muokata erityisiä sääntöjä."
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr "Et voi luoda tyhjiä ehtoja. Täytä arvo kohtaan  \"%s\"."
+
+#: filters.php:52 rule.php:151
+msgid "You do not have permission to delete filter rules."
+msgstr "Sinulla ei ole oikeuksia poistaa suodatinsääntöjä."
+
+#: filters.php:45 filters.php:112 filters.php:123 rule.php:58 rule.php:165
+msgid "You do not have permission to edit filter rules."
+msgstr "Sinulla ei ole oikeuksia muokata suodatinsääntöjä."
+
+#: lib/Script/sieve.php:2926
+msgid "You have received a new message"
+msgstr "Sinulle on tullut uusi viesti"
+
+#: lib/Script/imap.php:307 lib/Script/imap.php:330 lib/Script/imap.php:345
+msgid "[No Subject]"
+msgstr "[Ei otsikkoa]"
+
+#: lib/Ingo.php:384
+msgid "_Blacklist"
+msgstr "_Musta lista"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "_Poista viesti kokonaan"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "_Laita jokainen osoite omalle rivilleen:"
+
+#: lib/Ingo.php:390
+msgid "_Forward"
+msgstr "_Uudelleenohjaa"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "_Siirrä viesti kansioon:"
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "_Oikeudet"
+
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr "_Skripti"
+
+#: lib/Ingo.php:387
+msgid "_Vacation"
+msgstr "_Poissaoloviesti"
+
+#: lib/Ingo.php:381
+msgid "_Whitelist"
+msgstr "_Valkoinen lista"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "aktiivinen"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "ja"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "pois päältä - napsauta laittaaksesi päälle"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "ei aktiivinen"
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr "Ingo ohjelman tuottama skripti"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "tai"
+
+#: lib/Script/procmail.php:140
+msgid "procmail script generated by Ingo"
+msgstr "Ingo ohjelman tuottama procmail-skripti"
diff --git a/ingo/po/fr_FR.po b/ingo/po/fr_FR.po
new file mode 100644 (file)
index 0000000..cb6d3eb
--- /dev/null
@@ -0,0 +1,1054 @@
+# translation of fr_FR.po to french
+# French translation for Ingo
+# Copyright 2003-2009 The Horde Project
+# This file is distributed under the same license as the ingo package.
+#
+# AIDE Florent <faide@alphacent.com>, 2003.
+# Pierre Lachance <pl@pierrelachance.net> et Benoit St-André  <ben@benoitst-andre.net>, 2003, 2004.
+# Yannick Sebastia <yannick.sebastia@ecole-navale.fr>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: fr_FR\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2008-03-18 09:02+0100\n"
+"PO-Revision-Date: 2008-03-18 08:22+0100\n"
+"Last-Translator: Yannick Sebastia <yannick.sebastia@ecole-navale.fr>\n"
+"Language-Team: Francais <i18n@lists.horde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: filters.php:223
+msgid " and"
+msgstr " et"
+
+#: filters.php:223
+msgid " or"
+msgstr " ou"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Action pour les adresses en liste noire:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Activer ce script "
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "Activation du script pour \"%s\" échoué : (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Options supplémentaires"
+
+#: forward.php:43
+#, fuzzy
+msgid "Address(es) to forward to:"
+msgstr "Adresse(s) vers où rediriger:"
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr "Adresses auxquelles ne pas envoyer de réponses:"
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr "Paramètres avancés"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Tout ce qui suit"
+
+#: lib/api.php:68
+msgid "Allow Rules"
+msgstr "Autoriser les règles"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Répondu"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Au moins l'un de ce qui suit"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Appliquer les filtres"
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr "Êtes-vous certain de vouloir supprimer cette règle ?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Mettre à jour le script automatiquement après chaque changement?"
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr "Paramètres de base"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Cci"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Commence par"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Liaison échouée : (%s) %s"
+
+#: filters.php:174 lib/Block/overview.php:95 lib/Block/overview.php:98
+#: templates/blacklist/blacklist.inc:7
+msgid "Blacklist"
+msgstr "Liste Noire"
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr "Éditer la Liste Noire"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "La liste noire n'est pas supporté dans le filtre actuel."
+
+#: lib/Script/procmail.php:209 lib/Script/maildrop.php:197
+#: lib/Script/sieve.php:269
+msgid "Blacklisted Addresses"
+msgstr "Adresses en liste Noire"
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "Corps"
+
+#: filters.php:220 rule.php:322
+msgid "Case Sensitive"
+msgstr "Tenir compte de la casse"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: blacklist.php:70 spam.php:90 forward.php:56 whitelist.php:38 rule.php:141
+#: vacation.php:81
+msgid "Changes saved."
+msgstr "Changements enregistrés."
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Échec de connexion"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Contient"
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr "Copier %s"
+
+#: lib/Storage.php:993 lib/Storage/sql.php:618
+#, php-format
+msgid "Copy of %s"
+msgstr "Copie de %s"
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "N'a pas pu sauvegardé le fichier de gabarit compilé '%s'."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Créer un nouveau dossier"
+
+#: lib/Script/procmail.php:342 lib/Script/maildrop.php:362
+msgid "DISABLED: "
+msgstr "DÉSACTIVÉ:"
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Désactiver ce script"
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr "Effacer %s"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "Efface la condition"
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "Supprimer le message complètement"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Effacé"
+
+#: lib/Storage.php:278
+#, fuzzy
+msgid "Deliver into my Inbox"
+msgstr "Déposer ce message dans ma boite de réception"
+
+#: lib/Storage.php:304
+#, fuzzy
+msgid "Deliver into my Inbox and copy to"
+msgstr "Déposer dans ma Boite de réception et copier dans"
+
+#: lib/Storage.php:299
+#, fuzzy
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Déposer dans ma Boite de réception et rediriger vers"
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "Placer dans le dossier"
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "Destination (A,Cc, Cci, etc)"
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr "Désactiver %s "
+
+#: spam.php:149 forward.php:99 vacation.php:153 templates/rule/header.inc:26
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+msgid "Disabled"
+msgstr "Désactivé"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Afficher le message après l'application des filtres ? "
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr ""
+"Ne pas envoyer de réponses aux messages provenant de listes ou d'envois "
+"massifs ?"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Faire ceci: "
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "Ne commence pas par "
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Ne contient pas "
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "Ne finit pas par "
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "N'existe pas "
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "Ne correspond pas"
+
+#: lib/Block/overview.php:63 lib/Block/overview.php:72
+#: lib/Block/overview.php:87 lib/Block/overview.php:97
+#: lib/Block/overview.php:107 templates/filters/header.inc:26
+msgid "Edit"
+msgstr "Modifier"
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr "Editer %s"
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr "Activer %s"
+
+#: templates/filters/header.inc:28
+msgid "Enabled"
+msgstr "Activé"
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr "Fin d'absence"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr " Finit par"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "Égal à"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Erreur lors de la récupération du script actuel : (%d) %s"
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr "Erreur lors de la sauvegarde des changements"
+
+#: templates/filters/header.inc:20
+msgid "Existing Rules"
+msgstr "Règles existantes"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Existe"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "1 objet attendu, %d trouvé(s)."
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr "Erreur de lecture du socket :"
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr "Erreur d'écriture du socket : "
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "Erreur d'écriture du socket : (connexion perdue !)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "Champ"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Filtrer chaque message"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Filtrer seulement les message vus"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Filtrer seulement les messages non vus"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Options de filtrage"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Règle de filtrage"
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr "Règles de filtrage"
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr "Affichage du script de filtre"
+
+#: lib/Ingo.php:379
+msgid "Filter _Rules"
+msgstr "_Règles de filtrage"
+
+#: lib/Script/imap.php:348
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr ""
+"Activité du filtre : %s message(s) ont été déplacés vers le dossier « %s »."
+
+#: lib/Script/imap.php:334
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Activité du filtre : %s message(s) ont été effacés."
+
+#: lib/Script/imap.php:312
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr ""
+"Activité du filtre : %s message(s) ont été déplacés vers le dossier « %s »."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Activité du filtre : %s message(s) correspondant à la liste noire ont été "
+"effacés."
+
+#: lib/Script/imap.php:345
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Activité du filtre : le message « %s » de « %s » a été copié vers le dossier "
+"« %s ». "
+
+#: lib/Script/imap.php:329
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Activité du filtre : le message « %s » de « %s » a été effacé. "
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Activité du filtre : le message « %s » de « %s » a été déplacé vers le "
+"dossier « %s ». "
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr "Filtre non trouvé"
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "Marqué pour remonter"
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr "Dossier recevant le spam: "
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Pour les messages entrants qui correspondent:"
+
+#: filters.php:192 forward.php:97 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Transfert"
+
+#: lib/Script/sieve.php:222
+msgid "Forward Keep Action"
+msgstr ""
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr "La redirection n'est pas supportée dans le présent filtre."
+
+#: lib/Script/procmail.php:288 lib/Script/maildrop.php:246
+#: lib/Script/sieve.php:232
+msgid "Forwards"
+msgstr "Transmettre"
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr "Éditer la redirection"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "De"
+
+#: lib/Script/sieve.php:2927
+msgid "From:"
+msgstr "De:"
+
+#: lib/Script/sieve.php:118
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Généré par Ingo (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Plus grand que "
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Plus grand ou égale à"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "Les règles individuelles ne sont pas supportées."
+
+#: lib/Script/sieve.php:2521
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "La boîte spécifiée est inexistante"
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "Est"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "N'est pas"
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr "Garder une copie des messages dans ce compte?"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"Le support LDAP est requis mais le module LDAP n'est pas disponible ou n'est "
+"pas chargé."
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Plus petit que"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Plus petit ou égale à"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "List-ID"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "Mar_quer le message comme supprimé"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Marquer le message comme:  "
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "Correspondant"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "Correspond"
+
+#: lib/api.php:71
+msgid "Maximum Number of Rules"
+msgstr "Nombre maximum de règles"
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Nombre maximum d'adresses en liste noire dépassé (Nombre total: %s, Nombre "
+"maximum d'adresses: %s). Impossible d'ajouter plus d'adresses en liste noire."
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Nombre maximum d'adresses en liste blanche dépassé (Nombre total: %s, Nombre "
+"maximum d'adresses: %s). Impossible d'ajouter plus d'adresses en liste "
+"blanche."
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+"Message avec un score supérieur ou égale à ce nombre seront traités comme du "
+"spam."
+
+#: lib/Script/sieve.php:2941
+msgid "Missing address to notify"
+msgstr "Adresse manquante pour la notification"
+
+#: lib/Script/sieve.php:2322
+msgid "Missing address to redirect message to"
+msgstr "Adresse manquante pour y rediriger le message "
+
+#: lib/Script/sieve.php:2368
+msgid "Missing reason for reject"
+msgstr "Raison de rejet manquante "
+
+#: lib/Script/sieve.php:2671
+msgid "Missing reason in vacation."
+msgstr "Raison manquante dans la règle d'absence"
+
+#: templates/filters/header.inc:32
+msgid "Move"
+msgstr "Déplacer"
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr "Descendre la règle"
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr "Monter la règle"
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr "Mes adresses courriel:"
+
+#: lib/Storage.php:889 templates/filters/footer.inc:6
+#: templates/filters/filter-none.inc:3
+msgid "New Rule"
+msgstr "Nouvelle règle"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr ""
+"Le paramètre obligatoire \"%s\" n'est pas spécifié dans la configuration."
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr "Pas de Backend configuré pour ce serveur"
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr "Pas de Backend configuré pour ce serveur "
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Pas de filtre. Cliquez '%s' pour creer un nouveau filtre."
+
+#: lib/Script/sieve.php:1679 lib/Script/sieve.php:1828
+#: lib/Script/sieve.php:2044
+msgid "No headers specified"
+msgstr "Pas d'en tête spécifié"
+
+#: script.php:69
+msgid "No script generated."
+msgstr "Aucun script généré."
+
+#: lib/Script/sieve.php:2060 lib/Script/sieve.php:2144
+msgid "No strings specified"
+msgstr "Pas de chaine spécifiée"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Non égale à"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr "Adresses courriel de notification"
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr "Nombre de jours entre les messages d'absence:"
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr "Seulement marquer le message"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Options de mise à jour des scripts"
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Autres Options"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Vue d'ensemble"
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr "Participants (De,A,etc)"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Veuilez saisir le nom du nouveau dossier:"
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr "Raison:"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Reçu"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Rediriger vers"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Expression régulière"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr "Rejeter avec la raison"
+
+#: config/fields.php.dist:51
+msgid "Resent-From"
+msgstr "Renvoyé depuis"
+
+#: config/fields.php.dist:55
+#, fuzzy
+msgid "Resent-To"
+msgstr "Renvoyé vers"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "Retour vers la liste des filtres"
+
+#: spam.php:62 spam.php:130 forward.php:34 forward.php:88 vacation.php:34
+#: vacation.php:117 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "Retour vers la liste des règles"
+
+#: templates/filters/header.inc:27
+msgid "Rule"
+msgstr "Règle"
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr "Règle copiée"
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr "Règle effacée"
+
+#: spam.php:106 filters.php:94 forward.php:72 vacation.php:97
+msgid "Rule Disabled"
+msgstr "Règle désactivée"
+
+#: spam.php:97 filters.php:99 forward.php:63 vacation.php:88
+msgid "Rule Enabled"
+msgstr "Règle désactivé"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "Nom de la règle :"
+
+#: lib/Script/sieve.php:2929
+msgid "Rule:"
+msgstr "Règle:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "STARTTLS échoué : (%s) %s"
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "S_pam"
+
+#: spam.php:79 forward.php:45 vacation.php:62 templates/rule/footer.inc:60
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:41
+msgid "Save"
+msgstr "Enregistrer"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Enregistrer les options"
+
+#: spam.php:100 spam.php:126 forward.php:66 forward.php:84 vacation.php:91
+#: vacation.php:113
+msgid "Save and Disable"
+msgstr "Sauvegarder et Désactiver"
+
+#: spam.php:91 spam.php:128 forward.php:57 forward.php:86 vacation.php:82
+#: vacation.php:115
+msgid "Save and Enable"
+msgstr "Sauvegarder et Activer"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Script"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Mise à jour du script"
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr "Script non mis à jour"
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr "Script activé avec succès."
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr "Script désactivé avec succès."
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Vu"
+
+#: rule.php:218
+msgid "Select a field"
+msgstr "Choisissez un champ"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Sélectionner les règles à afficher: "
+
+#: rule.php:347 lib/Ingo.php:59 templates/blacklist/blacklist.inc:23
+msgid "Select target folder"
+msgstr "Choisissez un dossier cible"
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr "En-tête auto-définissable"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Expéditeur"
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr "Les préférences ont bien été mises à jour."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Afficher le script actif?"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Afficher le script courant"
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr ""
+"Le filtrage simple du spam n'est pas supporté avec le pilote de filtrage "
+"actuel."
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "Taille"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr "Source (De,Réponse à,etc)"
+
+#: filters.php:198 lib/Block/overview.php:105 lib/Block/overview.php:108
+#: lib/Script/maildrop.php:301 lib/Script/sieve.php:425
+msgid "Spam Filter"
+msgstr "Filtre de spam"
+
+#: spam.php:147 spam.php:154
+msgid "Spam Filtering"
+msgstr "Filtrage de spam"
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr "Niveau de spam"
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr "Début d'abscence: "
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "Arreter la vérification lorsque la règle correspond?"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Sujet"
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr "Sujet du message d'absence:"
+
+#: lib/Script/sieve.php:2928
+msgid "Subject:"
+msgstr "Sujet :"
+
+#: lib/api.php:103
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "L'adresse \"%s\" a été ajoutée à votre liste noire."
+
+#: lib/api.php:126
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "L'adresse \"%s\" a été ajoutée à votre liste blanche."
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "Message du pilote (driver): "
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr "Une erreur s'est produite lors de l'activation du script."
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr "Une erreur s'est produite lors de la désactivation du script."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "à"
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr "à :"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Impossible de charger la définition de %s."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "Entête utilisateur"
+
+#: filters.php:186 vacation.php:151 lib/Block/overview.php:61
+#: lib/Block/overview.php:64 lib/Script/procmail.php:268
+#: lib/Script/maildrop.php:276 lib/Script/sieve.php:399
+msgid "Vacation"
+msgstr "Absence"
+
+#: vacation.php:158
+msgid "Vacation Edit"
+msgstr "Éditer absence"
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "Absence n'est pas supporté par le pilote actuel."
+
+#: rule.php:353
+msgid "Value"
+msgstr "Valeur"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Adresse en l_iste blanche"
+
+#: filters.php:180 lib/Block/overview.php:85 lib/Block/overview.php:88
+#: templates/whitelist/whitelist.inc:8
+msgid "Whitelist"
+msgstr "Liste blanche"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "Éditer Liste blanche"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Liste blanche n'est pas supportée pas le présent filtre."
+
+#: lib/Script/procmail.php:236 lib/Script/maildrop.php:224
+#: lib/Script/sieve.php:329
+msgid "Whitelisted Addresses"
+msgstr "Adresse en liste blanche"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "Score de pourriel (X-Spam-Score)"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: filters.php:71 rule.php:172
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Vous n'êtes pas autorisés à créer plus de %d règles."
+
+#: filters.php:63 rule.php:23
+msgid "You are not allowed to create or edit custom rules."
+msgstr ""
+"Vous n'êtes pas autorisés à créer ou à éditer des règles personnalisées."
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr ""
+"Vous ne pouvez créer des conditions vides. Merci de saisir une valeur pour "
+"\"%s\"."
+
+#: filters.php:52 rule.php:151
+msgid "You do not have permission to delete filter rules."
+msgstr "Vous n'avez pas la permission de supprimer les règles de filtrage."
+
+#: filters.php:45 filters.php:112 filters.php:123 rule.php:58 rule.php:165
+msgid "You do not have permission to edit filter rules."
+msgstr "Vous n'avez pas la permission d'éditer les règles de filtrage."
+
+#: lib/Script/sieve.php:2926
+msgid "You have received a new message"
+msgstr "Vous avez reçu un nouveau message"
+
+#: lib/Script/imap.php:307 lib/Script/imap.php:330 lib/Script/imap.php:345
+msgid "[No Subject]"
+msgstr "[Pas de sujet]"
+
+#: lib/Ingo.php:384
+msgid "_Blacklist"
+msgstr "Liste _noire"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "_Supprimer le message complètement"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "_Entrer chaque adresse sur une ligne séparée:"
+
+#: lib/Ingo.php:390
+msgid "_Forward"
+msgstr "Trans_fert"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "Déplacer le _message vers le dossier"
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "Permissions"
+
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr "_Script"
+
+#: lib/Ingo.php:387
+msgid "_Vacation"
+msgstr "_Absences"
+
+#: lib/Ingo.php:381
+msgid "_Whitelist"
+msgstr "Li_ste blanche"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "actif"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "et"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "désactivé - cliquer pour activer"
+
+#: filters.php:218
+msgid "field"
+msgstr "champ"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "inactif"
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr "Script maildrop généré par Ingo"
+
+#: filters.php:218
+msgid "match"
+msgstr "correspond"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "ou"
+
+#: lib/Script/procmail.php:130
+msgid "procmail script generated by Ingo"
+msgstr "Script procmail généré par Ingo"
diff --git a/ingo/po/hu_HU.po b/ingo/po/hu_HU.po
new file mode 100644 (file)
index 0000000..794a53e
--- /dev/null
@@ -0,0 +1,1044 @@
+# Ingo Hungarian translation file
+# Copyright 2004-2008 Laszlo L. Tornoci
+# This file is distributed under the same license as the Ingo package.
+#
+# Attila Nagy <bra@fsn.hu>, 2004.
+# Laszlo L. Tornoci <torlasz@xenia.sote.hu>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo-h3-1.2\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2008-01-22 17:27+0100\n"
+"PO-Revision-Date: 2008-01-26 15:14+0100\n"
+"Last-Translator: Laszlo L. Tornoci <torlasz@xenia.sote.hu>\n"
+"Language-Team: Hungarian <i18n@lists.horde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  nplurals=2; plural=(n != 1);\n"
+
+#: filters.php:223
+msgid " and"
+msgstr " és"
+
+#: filters.php:223
+msgid " or"
+msgstr " vagy"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr ""
+"A feketelistán szereplõ feladótól érkezõ üzenettel a következõ történjen:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Szûrõlista érvényesítése"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "A \"%s\" script aktiválása nem sikerült: (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "További beállítások"
+
+#: forward.php:43
+msgid "Address(es) to forward to:"
+msgstr "Cím(ek), amelyekre továbbítjuk az üzenetet:"
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr "A következõ címekre ne küldjünk választ:"
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr "Haladó beállítások"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "mindegyikének"
+
+#: lib/api.php:68
+msgid "Allow Rules"
+msgstr "Szabályok engedélyezése"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Megválaszolt"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "valamelyikének"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Kapcsoljuk be a szûrõket"
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr "Biztos, hogy törölni akarja ezt a szabályt?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Automatikusan frissítsük a szûrõszabályt minden változtatás után?"
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr "Alapbeállítások"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Bcc"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "A következõvel kezdõdik"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "A kapcsolat felvétele nem sikerült: (%s) %s"
+
+#: filters.php:174 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:95 lib/Block/overview.php:98
+msgid "Blacklist"
+msgstr "Tiltott címek"
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr "Tiltott címek szerkesztése"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "A feketelista nem támogatott a szûrõmeghajtóban"
+
+#: lib/Script/procmail.php:209 lib/Script/sieve.php:269
+#: lib/Script/maildrop.php:197
+msgid "Blacklisted Addresses"
+msgstr "Tiltott címek"
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "Levéltörzs"
+
+#: filters.php:220 rule.php:322
+msgid "Case Sensitive"
+msgstr "Kis/nagybetû érzékeny"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: spam.php:90 rule.php:141 whitelist.php:38 forward.php:56 vacation.php:81
+#: blacklist.php:70
+msgid "Changes saved."
+msgstr "Változások elmentve."
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "A kapcsolat nem sikerült"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "A következõt tartalmazza"
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr "%s másolása"
+
+#: lib/Storage.php:993 lib/Storage/sql.php:618
+#, php-format
+msgid "Copy of %s"
+msgstr "%s másolata"
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "Nem sikerült elmenteni a lefordított '%s' állományt."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Hozzunk létre új mappát"
+
+#: lib/Script/procmail.php:342 lib/Script/maildrop.php:362
+msgid "DISABLED: "
+msgstr "LETILTVA:"
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Szûrõlista érvénytelenítése"
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr "%s törlése"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "A feltétel törlése"
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "Végérvényesen töröljük a levelet"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Törölt"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "A levél kerüljön az INBOX-omba"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr "A levél kerüljön az INBOX-omba és másoljuk át ide"
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr "A levél kerüljön az INBOX-omba és irányítsuk át a következõ címre"
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "Kézbesítés a következõ folderbe"
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "Címzett (To,Cc,Bcc, stb.)"
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr "%s inaktiválása"
+
+#: spam.php:149 forward.php:99 vacation.php:153
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+#: templates/rule/header.inc:26
+msgid "Disabled"
+msgstr "Letiltott"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr ""
+"Jelenítsünk meg részletes tájékoztatást amint az egyes sz?r?k alkalmazása "
+"megtörténik?"
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr "Tömeges és levelezõlistás üzenetekre ne küljdünk választ?"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Tedd ezt:"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "Nem a következõvel kezdõdik"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Nem tartalmazza a következõt"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "Nem a következõvel végzõdik"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "Nem létezik"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "Nem illeszkedik (adatszimbólumokkal)"
+
+#: templates/filters/header.inc:26 lib/Block/overview.php:63
+#: lib/Block/overview.php:72 lib/Block/overview.php:87
+#: lib/Block/overview.php:97 lib/Block/overview.php:107
+msgid "Edit"
+msgstr "Szerkesztés"
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr "%s szerkesztése"
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr "%s engedélyezése"
+
+#: templates/filters/header.inc:28
+msgid "Enabled"
+msgstr "Engedélyezett"
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr "Az automatikus válaszlevelek küldésének vége:"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "A következõvel végzõdik"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "A következõvel egyenlõ"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Nem sikerült beolvasni a scriptet: (%d) %s"
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr "A változások elmentésekor hiba történt."
+
+#: templates/filters/header.inc:20
+msgid "Existing Rules"
+msgstr "Létezõ szabályok"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Létezik"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "A várt 1 objektum helyett %d jött."
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr "Nem sikerült olvasni a socketról:"
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr "Nem sikerült írni a socketra:"
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "Nem sikerült írni a socketra: (megszakadt a kapcsolat!)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "mezõ"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Összes levél szûrése"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Csak az olvasott levelek szûrése"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Csak az olvasatlan levelek szûrése"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Szûrési beállítások"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Szûrési szabály"
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr "Szûrési szabályok"
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr "A szûrõprogram megjelenítése"
+
+#: lib/Ingo.php:379
+msgid "Filter _Rules"
+msgstr "_Szûrõfeltételek"
+
+#: lib/Script/imap.php:348
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Szûrõfunkció: %s levelet áthelyeztünk a %s mappába."
+
+#: lib/Script/imap.php:334
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Szûrõfunkció: %s levelet töröltünk."
+
+#: lib/Script/imap.php:312
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Szûrõfunkció: %s levelet áthelyeztünk a %s mappába."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Szûrõfunkció: %s olyan levelet töröltünk, amely megfelelt a feketelistának."
+
+#: lib/Script/imap.php:345
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Szûrõfunkció: A %s levelet, amely %s-tõl érkezett áthelyeztük a %s mappába."
+
+#: lib/Script/imap.php:329
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Szûrõfunkció: \"%s\"-tõl \"%s\"-ig a leveleket töröltük."
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Szûrõfunkció: A %s levelet, amely %s-tõl érkezett áthelyeztük a %s mappába."
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr "Nem létezõ szabály"
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "Követésre megjelölve"
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr "A spam mappa neve:"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr ""
+"A szabály arra a bejövõ levélre lesz érvényes, amely megfelel az alábbi "
+"feltételek:"
+
+#: filters.php:192 forward.php:97 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Továbbítás"
+
+#: lib/Script/sieve.php:222
+msgid "Forward Keep Action"
+msgstr "Továbbítási másolat"
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr "A továbbítás nem támogatott a szûrõmeghajtóban"
+
+#: lib/Script/procmail.php:288 lib/Script/sieve.php:232
+#: lib/Script/maildrop.php:246
+msgid "Forwards"
+msgstr "Továbbítások"
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr "Továbbítások szerkesztése"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Feladó"
+
+#: lib/Script/sieve.php:2927
+msgid "From:"
+msgstr "Feladó:"
+
+#: lib/Script/sieve.php:118
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr ""
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Nagyobb mint"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Nagyobb mint, vagy egyenlõ"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "A jelenlegi szûrõmeghajtó nem támogatja az egyéni szûrõszabályokat."
+
+#: lib/Script/sieve.php:2521
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "A kézbesítéshez nemlétezõ levélládát adtak meg."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "Megegyezik a következõvel"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "Nem a következõ"
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr "Küldjünk a levelekrõl egy másolatot erre a címre?"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"LDAP támogatásra lenne szükség, de az LDAP modul nem áll rendelkezésre, vagy "
+"nem töltõdött be."
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Kevesebb, mint"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Kevesebb, vagy egyenlõ mint"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "Lista azonosító"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "_Jelöljük meg a levelet töröltnek"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Jelöljük meg a levelet a következõképpen:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "Az illeszkedés típusa"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "Illeszkedik (adatszimbólumokkal)"
+
+#: lib/api.php:71
+msgid "Maximum Number of Rules"
+msgstr "A szabályok maximális száma"
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Túllépte a tiltólistán tárolható címek maximálisan megengedett számát (címek "
+"száma: %s, maximális szám: %s). Az új cím nem került fel a listára."
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Túllépte az engedélyezett címek listáján tárolható címek maximálisan "
+"megengedett számát (címek száma: %s, maximális szám: %s). Az új cím nem "
+"került fel a listára."
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+"Azokat a leveleket, melyeknek spampontszáma ennél nagyobb, vagy egyenlõ, "
+"spamként kezeljük."
+
+#: lib/Script/sieve.php:2941
+msgid "Missing address to notify"
+msgstr "Hiányzik a cím, amelyre figyelmeztetést kell küldeni"
+
+#: lib/Script/sieve.php:2322
+msgid "Missing address to redirect message to"
+msgstr "Hiányzik a cím, amelyre át kell irányítanom a levelet"
+
+#: lib/Script/sieve.php:2368
+msgid "Missing reason for reject"
+msgstr "Hiányzik a visszautasításra küldendõ válasz"
+
+#: lib/Script/sieve.php:2671
+msgid "Missing reason in vacation."
+msgstr "Hiányzik a vakációs üzenet."
+
+#: templates/filters/header.inc:32
+msgid "Move"
+msgstr "Mozgatás"
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr "A szabály lejjebb léptetése"
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr "A szabály fejlebb léptetése"
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr "Az én e-mail címeim:"
+
+#: templates/filters/filter-none.inc:3 templates/filters/footer.inc:6
+#: lib/Storage.php:889
+msgid "New Rule"
+msgstr "Új szabály"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "Az alrendszer beállításaiban nem található \"%s\" elem."
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr "Nincs háttérszerver beállítva ehhez a szolgáltatáshoz"
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr "Nincs háttérszerver beállítva"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Nincsenek szûrõk. Kattintson a(z) \"%s\" gombra egy új létrehozásához."
+
+#: lib/Script/sieve.php:1679 lib/Script/sieve.php:1828
+#: lib/Script/sieve.php:2044
+msgid "No headers specified"
+msgstr "Nem adott meg fejléceket"
+
+#: script.php:69
+msgid "No script generated."
+msgstr "A szûrõlistát nem frissítettem"
+
+#: lib/Script/sieve.php:2060 lib/Script/sieve.php:2144
+msgid "No strings specified"
+msgstr "Nem adott meg értéket"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Nem egyenlõ a következõvel"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr "Küldjön figyelmeztetést erre a címre"
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr "Ennyi naponként küldjünk csak újból üzenetet:"
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr "Csak jelöljük meg a levelet"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "A szûrõlista frissítésével kapcsolatos beállítások."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Egyéb beállítások"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Áttekintés"
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr "Résztvevõ (Feladó, címzett, stb.)"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Kérem adja meg az új mappa nevét:"
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr "Az ok:"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "A beérkezés napja"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Átirányítás"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Reguláris kifejezés"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr "Az üzenet visszadobása a következõ indokkal"
+
+#: config/fields.php.dist:51
+msgid "Resent-From"
+msgstr ""
+
+#: config/fields.php.dist:55
+msgid "Resent-To"
+msgstr ""
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "Vissza a szabálylistához"
+
+#: spam.php:62 spam.php:130 forward.php:34 forward.php:88 vacation.php:34
+#: vacation.php:117 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "Vissza a szabálylistához"
+
+#: templates/filters/header.inc:27
+msgid "Rule"
+msgstr "Szabály"
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr "A szabályt lemásoltam"
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr "A szabályt töröltem"
+
+#: spam.php:106 filters.php:94 forward.php:72 vacation.php:97
+msgid "Rule Disabled"
+msgstr "A szabályt letiltottuk"
+
+#: spam.php:97 filters.php:99 forward.php:63 vacation.php:88
+msgid "Rule Enabled"
+msgstr "A szabályt engedélyeztem"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "A szabály neve:"
+
+#: lib/Script/sieve.php:2929
+msgid "Rule:"
+msgstr "Szabály:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "A STARTTLS nem sikerült: (%s) %s"
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "Spam"
+
+#: spam.php:79 forward.php:45 vacation.php:62
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:41
+#: templates/rule/footer.inc:60
+msgid "Save"
+msgstr "Mentés"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Beállítások elmentése"
+
+#: spam.php:100 spam.php:126 forward.php:66 forward.php:84 vacation.php:91
+#: vacation.php:113
+msgid "Save and Disable"
+msgstr "Mentsük el és inaktiváljuk"
+
+#: spam.php:91 spam.php:128 forward.php:57 forward.php:86 vacation.php:82
+#: vacation.php:115
+msgid "Save and Enable"
+msgstr "Mentsük el és aktiváljuk"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Szûrõlista"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Szûrõlista frissítés"
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr "A szûrõlistát nem frissítettem"
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr "A szûrõlistát sikeresen érvényesítettem."
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr "A szûrõlistát sikeresen érvényesítettem."
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Olvasott"
+
+#: rule.php:218
+msgid "Select a field"
+msgstr "Válasszon ki egy mezõt"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Melyik szabályrendszert mutassuk:"
+
+#: rule.php:347 templates/blacklist/blacklist.inc:23 lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "Válassza ki a célmappát"
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr "Általam megadott fejléc"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Küldõ"
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr "A beállításokat sikeresen érvényesítettem."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Aktuális szûrõlista megtekintése"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Az aktuális szûrõlista megjelenítése"
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr "Az egyszerû spamszûrés nem támogatott a jelenlegi szûrõmeghajtóban."
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "Méret"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr "Küldõ (Feladó, Viszontválasz cím, stb.)"
+
+#: filters.php:198 lib/Script/sieve.php:425 lib/Script/maildrop.php:301
+#: lib/Block/overview.php:105 lib/Block/overview.php:108
+msgid "Spam Filter"
+msgstr "Spamszûrés"
+
+#: spam.php:147 spam.php:154
+msgid "Spam Filtering"
+msgstr "Spamszûrés"
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr "Spam szint:"
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr "Az automatikus válaszlevelek küldésének kezdete:"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "Ha ez a szabály ráillik az üzenetre, a többi szabályt ne dolgozzuk fel"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Tárgy"
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr "A válaszüzenet tárgy mezõje:"
+
+#: lib/Script/sieve.php:2928
+msgid "Subject:"
+msgstr "Tárgy:"
+
+#: lib/api.php:103
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "A \"%s\" címet hozzátettük a feketelistához."
+
+#: lib/api.php:126
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "A \"%s\" címet hozzátettük az engedélyezési listájához."
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "A meghajtó a következõt üzente: "
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr "Hiba történt a szûrõlista engedélyezése során."
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr "Hiba történt a szûrõlista letiltása során."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Címzett"
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr "Címzett:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Nem sikerült beolvasni %s definícióját."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "Felhasználói fejléc"
+
+#: filters.php:186 vacation.php:151 lib/Script/procmail.php:268
+#: lib/Script/sieve.php:399 lib/Script/maildrop.php:276
+#: lib/Block/overview.php:61 lib/Block/overview.php:64
+msgid "Vacation"
+msgstr "Automatikus válaszlevél"
+
+#: vacation.php:158
+msgid "Vacation Edit"
+msgstr "Az automatikus válaszlevél szerkesztése"
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr ""
+"A jelenlegi szûrõmeghajtó nem támogatja az automatikus válaszlevelek "
+"küldését."
+
+#: rule.php:353
+msgid "Value"
+msgstr "Érték"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "_Engedélyezett címek"
+
+#: filters.php:180 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:85 lib/Block/overview.php:88
+msgid "Whitelist"
+msgstr "Engedélyezett címek"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "Engedélyezett címek szerkesztése"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Egyedi címek engedélyezése nem támogatott a szûrõmeghajtóban"
+
+#: lib/Script/procmail.php:236 lib/Script/sieve.php:329
+#: lib/Script/maildrop.php:224
+msgid "Whitelisted Addresses"
+msgstr "Engedélyezett címek"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr ""
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr ""
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr ""
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr ""
+
+#: filters.php:71 rule.php:172
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Ön legfeljebb %d szabályt hozhat létre."
+
+#: filters.php:63 rule.php:23
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Ön nem hozhat létre ill. nem módosíthat saját szabályokat."
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr "Üres feltétel nem hozható létre. Kérem adja meg \"%s\" értékét."
+
+#: filters.php:52 rule.php:151
+msgid "You do not have permission to delete filter rules."
+msgstr "Önnek nincs jogosultsága törölni a szûrõlistát."
+
+#: filters.php:45 filters.php:112 filters.php:123 rule.php:58 rule.php:165
+msgid "You do not have permission to edit filter rules."
+msgstr "Önnek nincs jogosultsága módosítani a szûrõlistát."
+
+#: lib/Script/sieve.php:2926
+msgid "You have received a new message"
+msgstr "Érkezett egy új levele"
+
+#: lib/Script/imap.php:307 lib/Script/imap.php:330 lib/Script/imap.php:345
+msgid "[No Subject]"
+msgstr "[Tárgy nélkül]"
+
+#: lib/Ingo.php:384
+msgid "_Blacklist"
+msgstr "_Tiltott címek"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "Végérvényesen tö_röljük a levelet"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "Írja be a _címeket, mindegyiket új sorba."
+
+#: lib/Ingo.php:390
+msgid "_Forward"
+msgstr "T_ovábbítás"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "Tegyük át az üzenetet a következõ _mappába:"
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "_Jogosultságok"
+
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr "Szûrõlista"
+
+#: lib/Ingo.php:387
+msgid "_Vacation"
+msgstr "_Vakáció"
+
+#: lib/Ingo.php:381
+msgid "_Whitelist"
+msgstr "_Engedélyezett címek"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "aktív"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "és"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "inaktiválva - kattintson ide az aktiváláshoz"
+
+#: filters.php:218
+msgid "field"
+msgstr "mezõ"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "inaktív"
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr "a maildrop szkriptet az Ingo keszitette"
+
+#: filters.php:218
+msgid "match"
+msgstr "egyezés"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "vagy"
+
+#: lib/Script/procmail.php:130
+msgid "procmail script generated by Ingo"
+msgstr "a procmail szkriptet az Ingo keszitette"
diff --git a/ingo/po/ingo.pot b/ingo/po/ingo.pot
new file mode 100644 (file)
index 0000000..b3fb16d
--- /dev/null
@@ -0,0 +1,1019 @@
+# SOME DESCRIPTIVE TITLE.
+# Copyright YEAR Horde Project
+# This file is distributed under the same license as the PACKAGE package.
+# FIRST AUTHOR <EMAIL@ADDRESS>, YEAR.
+#
+#, fuzzy
+msgid ""
+msgstr ""
+"Project-Id-Version: PACKAGE VERSION\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2008-08-01 10:44+0200\n"
+"PO-Revision-Date: YEAR-MO-DA HO:MI+ZONE\n"
+"Last-Translator: FULL NAME <EMAIL@ADDRESS>\n"
+"Language-Team: LANGUAGE <LL@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CHARSET\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: filters.php:223
+msgid " and"
+msgstr ""
+
+#: filters.php:223
+msgid " or"
+msgstr ""
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr ""
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr ""
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr ""
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr ""
+
+#: forward.php:43
+msgid "Address(es) to forward to:"
+msgstr ""
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr ""
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr ""
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr ""
+
+#: lib/api.php:68
+msgid "Allow Rules"
+msgstr ""
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr ""
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr ""
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr ""
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr ""
+
+#: config/prefs.php.dist:32
+msgid "Automatically update the script after each change?"
+msgstr ""
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr ""
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr ""
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr ""
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr ""
+
+#: filters.php:174 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:95 lib/Block/overview.php:98
+msgid "Blacklist"
+msgstr ""
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr ""
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/procmail.php:219 lib/Script/sieve.php:276
+#: lib/Script/maildrop.php:197
+msgid "Blacklisted Addresses"
+msgstr ""
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr ""
+
+#: filters.php:220 rule.php:322
+msgid "Case Sensitive"
+msgstr ""
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr ""
+
+#: spam.php:106 rule.php:141 whitelist.php:38 forward.php:56 vacation.php:81
+#: blacklist.php:70
+msgid "Changes saved."
+msgstr ""
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr ""
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr ""
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr ""
+
+#: lib/Storage.php:993 lib/Storage/sql.php:621
+#, php-format
+msgid "Copy of %s"
+msgstr ""
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr ""
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr ""
+
+#: lib/Script/procmail.php:352 lib/Script/maildrop.php:362
+msgid "DISABLED: "
+msgstr ""
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr ""
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr ""
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr ""
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr ""
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr ""
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr ""
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr ""
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr ""
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr ""
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr ""
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr ""
+
+#: spam.php:160 forward.php:99 vacation.php:153
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+#: templates/rule/header.inc:26
+msgid "Disabled"
+msgstr ""
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr ""
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr ""
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr ""
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr ""
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr ""
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr ""
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr ""
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr ""
+
+#: templates/filters/header.inc:23 lib/Block/overview.php:63
+#: lib/Block/overview.php:72 lib/Block/overview.php:87
+#: lib/Block/overview.php:97 lib/Block/overview.php:107
+msgid "Edit"
+msgstr ""
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr ""
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr ""
+
+#: templates/filters/header.inc:25
+msgid "Enabled"
+msgstr ""
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr ""
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr ""
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr ""
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr ""
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr ""
+
+#: templates/filters/header.inc:17
+msgid "Existing Rules"
+msgstr ""
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr ""
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr ""
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr ""
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr ""
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr ""
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr ""
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr ""
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr ""
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr ""
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr ""
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr ""
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr ""
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr ""
+
+#: lib/Ingo.php:382
+msgid "Filter _Rules"
+msgstr ""
+
+#: lib/Script/imap.php:357
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr ""
+
+#: lib/Script/imap.php:338
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr ""
+
+#: lib/Script/imap.php:314
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr ""
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+
+#: lib/Script/imap.php:350
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+
+#: lib/Script/imap.php:332
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr ""
+
+#: lib/Script/imap.php:307
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr ""
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr ""
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr ""
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr ""
+
+#: filters.php:192 forward.php:97 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr ""
+
+#: lib/Script/sieve.php:229
+msgid "Forward Keep Action"
+msgstr ""
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/procmail.php:298 lib/Script/sieve.php:239
+#: lib/Script/maildrop.php:246
+msgid "Forwards"
+msgstr ""
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr ""
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr ""
+
+#: lib/Script/sieve.php:2948
+msgid "From:"
+msgstr ""
+
+#: lib/Script/sieve.php:123
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr ""
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr ""
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr ""
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/sieve.php:2542
+msgid "Inexistant mailbox specified for message delivery."
+msgstr ""
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr ""
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr ""
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr ""
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr ""
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr ""
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr ""
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr ""
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr ""
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr ""
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr ""
+
+#: lib/api.php:71
+msgid "Maximum Number of Rules"
+msgstr ""
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+
+#: lib/Script/sieve.php:2962
+msgid "Missing address to notify"
+msgstr ""
+
+#: lib/Script/sieve.php:2343
+msgid "Missing address to redirect message to"
+msgstr ""
+
+#: lib/Script/sieve.php:2389
+msgid "Missing reason for reject"
+msgstr ""
+
+#: lib/Script/sieve.php:2692
+msgid "Missing reason in vacation."
+msgstr ""
+
+#: templates/filters/header.inc:29
+msgid "Move"
+msgstr ""
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr ""
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr ""
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr ""
+
+#: templates/filters/filter-none.inc:3 templates/filters/footer.inc:6
+#: lib/Storage.php:889
+msgid "New Rule"
+msgstr ""
+
+#: lib/Ingo.php:233 lib/Ingo.php:235
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr ""
+
+#: lib/Ingo.php:226
+msgid "No backend configured for this host"
+msgstr ""
+
+#: lib/Ingo.php:202
+msgid "No backends configured in backends.php"
+msgstr ""
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr ""
+
+#: lib/Script/sieve.php:1692 lib/Script/sieve.php:1841
+#: lib/Script/sieve.php:2065
+msgid "No headers specified"
+msgstr ""
+
+#: script.php:69
+msgid "No script generated."
+msgstr ""
+
+#: lib/Script/sieve.php:2081 lib/Script/sieve.php:2165
+msgid "No strings specified"
+msgstr ""
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr ""
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr ""
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr ""
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr ""
+
+#: config/prefs.php.dist:18
+msgid "Options about script updating."
+msgstr ""
+
+#: config/prefs.php.dist:16
+msgid "Other Options"
+msgstr ""
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr ""
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr ""
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr ""
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr ""
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr ""
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr ""
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr ""
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr ""
+
+#: config/fields.php.dist:51
+msgid "Resent-From"
+msgstr ""
+
+#: config/fields.php.dist:55
+msgid "Resent-To"
+msgstr ""
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr ""
+
+#: spam.php:62 spam.php:141 forward.php:34 forward.php:88 vacation.php:34
+#: vacation.php:117 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr ""
+
+#: templates/filters/header.inc:24
+msgid "Rule"
+msgstr ""
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr ""
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr ""
+
+#: spam.php:122 filters.php:94 forward.php:72 vacation.php:97
+msgid "Rule Disabled"
+msgstr ""
+
+#: spam.php:113 filters.php:99 forward.php:63 vacation.php:88
+msgid "Rule Enabled"
+msgstr ""
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr ""
+
+#: lib/Script/sieve.php:2950
+msgid "Rule:"
+msgstr ""
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr ""
+
+#: lib/Ingo.php:396
+msgid "S_pam"
+msgstr ""
+
+#: spam.php:79 forward.php:45 vacation.php:62
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:41
+#: templates/rule/footer.inc:60
+msgid "Save"
+msgstr ""
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr ""
+
+#: spam.php:116 spam.php:137 forward.php:66 forward.php:84 vacation.php:91
+#: vacation.php:113
+msgid "Save and Disable"
+msgstr ""
+
+#: spam.php:107 spam.php:139 forward.php:57 forward.php:86 vacation.php:82
+#: vacation.php:115
+msgid "Save and Enable"
+msgstr ""
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr ""
+
+#: config/prefs.php.dist:17
+msgid "Script Updating"
+msgstr ""
+
+#: lib/Ingo.php:178
+msgid "Script not updated."
+msgstr ""
+
+#: lib/Ingo.php:149
+msgid "Script successfully activated."
+msgstr ""
+
+#: lib/Ingo.php:148
+msgid "Script successfully deactivated."
+msgstr ""
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr ""
+
+#: rule.php:218
+msgid "Select a field"
+msgstr ""
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr ""
+
+#: rule.php:347 templates/blacklist/blacklist.inc:23 lib/Ingo.php:59
+msgid "Select target folder"
+msgstr ""
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr ""
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr ""
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr ""
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr ""
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr ""
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr ""
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr ""
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr ""
+
+#: filters.php:198 lib/Script/sieve.php:438 lib/Script/maildrop.php:301
+#: lib/Block/overview.php:105 lib/Block/overview.php:108
+msgid "Spam Filter"
+msgstr ""
+
+#: spam.php:158 spam.php:165
+msgid "Spam Filtering"
+msgstr ""
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr ""
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr ""
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr ""
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr ""
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr ""
+
+#: lib/Script/sieve.php:2949
+msgid "Subject:"
+msgstr ""
+
+#: lib/api.php:103
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr ""
+
+#: lib/api.php:126
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr ""
+
+#: lib/Ingo.php:144
+msgid "The driver said: "
+msgstr ""
+
+#: lib/Ingo.php:143
+msgid "There was an error activating the script."
+msgstr ""
+
+#: lib/Ingo.php:142
+msgid "There was an error deactivating the script."
+msgstr ""
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr ""
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr ""
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr ""
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr ""
+
+#: filters.php:186 vacation.php:151 lib/Script/procmail.php:278
+#: lib/Script/sieve.php:412 lib/Script/maildrop.php:276
+#: lib/Block/overview.php:61 lib/Block/overview.php:64
+msgid "Vacation"
+msgstr ""
+
+#: vacation.php:158
+msgid "Vacation Edit"
+msgstr ""
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr ""
+
+#: rule.php:353
+msgid "Value"
+msgstr ""
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr ""
+
+#: filters.php:180 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:85 lib/Block/overview.php:88
+msgid "Whitelist"
+msgstr ""
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr ""
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/procmail.php:246 lib/Script/sieve.php:336
+#: lib/Script/maildrop.php:224
+msgid "Whitelisted Addresses"
+msgstr ""
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr ""
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr ""
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr ""
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr ""
+
+#: filters.php:71 rule.php:172
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr ""
+
+#: filters.php:63 rule.php:23
+msgid "You are not allowed to create or edit custom rules."
+msgstr ""
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr ""
+
+#: filters.php:52 rule.php:151
+msgid "You do not have permission to delete filter rules."
+msgstr ""
+
+#: filters.php:45 filters.php:112 filters.php:123 rule.php:58 rule.php:165
+msgid "You do not have permission to edit filter rules."
+msgstr ""
+
+#: lib/Script/sieve.php:2947
+msgid "You have received a new message"
+msgstr ""
+
+#: lib/Script/imap.php:309 lib/Script/imap.php:334 lib/Script/imap.php:352
+msgid "[No Sender]"
+msgstr ""
+
+#: lib/Script/imap.php:308 lib/Script/imap.php:333 lib/Script/imap.php:351
+msgid "[No Subject]"
+msgstr ""
+
+#: lib/Ingo.php:387
+msgid "_Blacklist"
+msgstr ""
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr ""
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr ""
+
+#: lib/Ingo.php:393
+msgid "_Forward"
+msgstr ""
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr ""
+
+#: lib/Ingo.php:402
+msgid "_Permissions"
+msgstr ""
+
+#: lib/Ingo.php:399
+msgid "_Script"
+msgstr ""
+
+#: lib/Ingo.php:390
+msgid "_Vacation"
+msgstr ""
+
+#: lib/Ingo.php:384
+msgid "_Whitelist"
+msgstr ""
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr ""
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr ""
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr ""
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr ""
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr ""
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr ""
+
+#: lib/Script/procmail.php:140
+msgid "procmail script generated by Ingo"
+msgstr ""
diff --git a/ingo/po/it_IT.po b/ingo/po/it_IT.po
new file mode 100644 (file)
index 0000000..827f9ff
--- /dev/null
@@ -0,0 +1,1041 @@
+# Italian translations for Ingo package.
+# Copyright 2003-2009 The Horde Project
+# This file is distributed under the same license as the Ingo package.
+# Automatically generated, 2003.
+# Copyright 2007 nethesis srl.
+# Cristian Manoni, Alessio Fattorini, Davide marini 2007
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo 2.0-cvs\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2008-05-17 11:04+0200\n"
+"PO-Revision-Date: 2003-09-28 23:50-0100\n"
+"Last-Translator: nethesis srl <info@nethesis.it>\n"
+"Language-Team: Horde Italian <i18n@lists.horde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: filters.php:223
+msgid " and"
+msgstr " e"
+
+#: filters.php:223
+msgid " or"
+msgstr " o"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Azione per indirizzi nella lista nera:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Attiva Script"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "Attivazione dello script \"%s\" fallita: (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Ulteriori Impostazioni"
+
+#: forward.php:43
+msgid "Address(es) to forward to:"
+msgstr "Indirizzi ai quali inoltrare:"
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr "Indirizzi ai quali non rispondere:"
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr "Impostazioni avanzate"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Soddisfano tutte le condizioni"
+
+#: lib/api.php:68
+msgid "Allow Rules"
+msgstr "Permetti Regole"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Risposto"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Soddisfano anche una sola condizione"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Applica i Filtri"
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr "Sei sicuro di voler eliminare questa regola?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Aggiorna automaticamente lo script dopo ogni modifica?"
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr "Impostazioni di Base"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Bcc"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Inizia con"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Connessione fallita: (%s) %s"
+
+#: filters.php:174 lib/Block/overview.php:95 lib/Block/overview.php:98
+#: templates/blacklist/blacklist.inc:7
+msgid "Blacklist"
+msgstr "Lista nera"
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr "Modifica la Lista Nera"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr ""
+"La lista nera non è supportata nella configurazione attuale dei filtri."
+
+#: lib/Script/sieve.php:269 lib/Script/procmail.php:219
+#: lib/Script/maildrop.php:197
+msgid "Blacklisted Addresses"
+msgstr "Indirizzi nella Lista Nera:"
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "Corpo"
+
+#: filters.php:220 rule.php:322
+msgid "Case Sensitive"
+msgstr "Rispetta Maiuscole minuscole"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: forward.php:56 vacation.php:81 spam.php:106 rule.php:141 blacklist.php:70
+#: whitelist.php:38
+msgid "Changes saved."
+msgstr "Modifiche salvate."
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Connessione Fallita"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Contiene"
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr "Copia di %s"
+
+#: lib/Storage.php:993 lib/Storage/sql.php:621
+#, php-format
+msgid "Copy of %s"
+msgstr "Copia di %s"
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "Impossibile salvare teplate file '%s'."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Crea Nuova Cartella"
+
+#: lib/Script/procmail.php:352 lib/Script/maildrop.php:362
+msgid "DISABLED: "
+msgstr "DISABILITATO:"
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Disattiva Script"
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr "Cancella %s"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "Elimina la Condizione"
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "Elimina messaggio completamente"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Eliminato"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "Consegna nella mia INBOX"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr "Consegna nella mia INBOX e inoltra a"
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Consegna nella mia INBOX e inoltra a"
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "Sposta nella Cartella"
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "Destinazione (A, Cc,Bcc etc)"
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr "Disattiva %s"
+
+#: forward.php:99 vacation.php:153 spam.php:160 templates/rule/header.inc:26
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+msgid "Disabled"
+msgstr "Disattivato"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Notifica dettagliata dopo l'applicazione di ogni filtro"
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr ""
+"Non rispondere a gruppi o a messaggi inviati a liste di indirizzi email"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Esegui queste azioni:"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "Non inizia con"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Non contiene"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "Non finisce con"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "Non esiste"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "Non corrisponde"
+
+#: lib/Block/overview.php:63 lib/Block/overview.php:72
+#: lib/Block/overview.php:87 lib/Block/overview.php:97
+#: lib/Block/overview.php:107 templates/filters/header.inc:23
+msgid "Edit"
+msgstr "Modifica"
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr "Modifica %s"
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr "Attiva %s"
+
+#: templates/filters/header.inc:25
+msgid "Enabled"
+msgstr "Attivato"
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr "Fine del periodo di vacanza:"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "Finisce con"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "Uguale a"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Errore durante l'esecuzione dello script: (%d) %s"
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr "Errore durante il salvataggio delle modifiche"
+
+#: templates/filters/header.inc:17
+msgid "Existing Rules"
+msgstr "Regole Esistenti"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Esiste"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "Previsto 1 oggetto, ottenuto/i %d."
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr "Impossibile leggere dal socket:"
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr "Impossibile scrivere sul socket:"
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "Impossibile scrivere sul socket: (connessione persa!)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "Campo"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Filtra Tutti i Messaggi"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Filtra Solo Messaggi Letti"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Filtra Solo Messaggi Non Letti"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Opzioni Filtri"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Regola del Filtro"
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr "Regole del Filtro"
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr "Visualizzazione Script di Filtro"
+
+#: lib/Ingo.php:379
+msgid "Filter _Rules"
+msgstr "_Regole del Filtro"
+
+#: lib/Script/imap.php:348
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Attività del filtro: %s messaggio/i spostati nella cartella \"%s\"."
+
+#: lib/Script/imap.php:334
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Attività del filtro: %s messaggio/i sono stati eliminati."
+
+#: lib/Script/imap.php:312
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Attività del filtro: %s messaggio/i spostati nella cartella \"%s\"."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Attività del filtro: %s messaggio/i corrispondenti alla lista nera sono "
+"stati eliminati."
+
+#: lib/Script/imap.php:345
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Attività del filtro: Il messaggio \"%s\" da \"%s\" è stato spostato nella "
+"cartella \"%s\"."
+
+#: lib/Script/imap.php:329
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Attività del filtro: Il messaggio \"%s\" da \"%s\" è stato eliminato."
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Attività del filtro: Il messaggio \"%s\" da \"%s\" è stato spostato nella "
+"cartella \"%s\"."
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr "Filtro non trovato."
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "Marcato per followup"
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr "Cartella destinata allo spam"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Per messaggi in ingresso che :"
+
+#: filters.php:192 forward.php:97 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Inoltra"
+
+#: lib/Script/sieve.php:222
+msgid "Forward Keep Action"
+msgstr "Inoltra Keep Action"
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr "L'inoltro non è supportato"
+
+#: lib/Script/sieve.php:232 lib/Script/procmail.php:298
+#: lib/Script/maildrop.php:246
+msgid "Forwards"
+msgstr "Inoltri"
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr "Modifica Inoltro"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Da"
+
+#: lib/Script/sieve.php:2927
+msgid "From:"
+msgstr "Da:"
+
+#: lib/Script/sieve.php:118
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Generato da Ingo (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Più grande di"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Più grande  o uguale a"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "Regole individuali non supportate"
+
+#: lib/Script/sieve.php:2521
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Casella specificata per la consegna del messaggio inesistente."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "E'"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "Non è"
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr "Mantieni una copia dei messaggi in questo account?"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"Supporto LDAP richiesto ma il modulo LDAP non è disponibile o non è stato "
+"caricato."
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Meno di"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Meno di o uguale a"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "ID Lista"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "Con_trassegna messaggio come eliminato"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Contrassegna messagio come:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "Tipo corrispondente"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "Combacia (with placeholders)"
+
+#: lib/api.php:71
+msgid "Maximum Number of Rules"
+msgstr "Numero massimo di regole"
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"E' stato superato il numero massimo di indirizzi in lista Nera(Indirizzi "
+"Totali: %s, Numero Massimo di indirizzi: %s).  Impossibile aggiungere altri "
+"indirizzi alla lista Nera."
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"E' stato superato il numero massimo di indirizzi in lista Bianca(Indirizzi "
+"Totali: %s, Numero Massimo di indirizzi: %s).  Impossibile aggiungere altri "
+"indirizzi alla lista Bianca."
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+"Tratta come spam i messaggi con punteggio maggiore o uguale a quello "
+"indicato."
+
+#: lib/Script/sieve.php:2941
+msgid "Missing address to notify"
+msgstr "Indirizzo a cui inviare la notifica assente"
+
+#: lib/Script/sieve.php:2322
+msgid "Missing address to redirect message to"
+msgstr "Indirizzo su cui redirigere il messaggio assente"
+
+#: lib/Script/sieve.php:2368
+msgid "Missing reason for reject"
+msgstr "Informazioni mancante"
+
+#: lib/Script/sieve.php:2671
+msgid "Missing reason in vacation."
+msgstr "Informazioni mancante"
+
+#: templates/filters/header.inc:29
+msgid "Move"
+msgstr "Sposta"
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr "Sposta la Regola Giù"
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr "Sposta la Regola Sù"
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr "_Miei indirizzi di posta:"
+
+#: lib/Storage.php:889 templates/filters/filter-none.inc:3
+#: templates/filters/footer.inc:6
+msgid "New Rule"
+msgstr "Nuova Regola"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "'%s' non specificata nella configurazione delle categorie."
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr "Nessun backend configurato per questo host"
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr "Nessun backend configurato in backends.php"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Nessun filtro presente. Clicca '%s' per creare un nuovo filtro."
+
+#: lib/Script/sieve.php:1679 lib/Script/sieve.php:1828
+#: lib/Script/sieve.php:2044
+msgid "No headers specified"
+msgstr "Nessuna intestazione specificata"
+
+#: script.php:69
+msgid "No script generated."
+msgstr "Nessun script generato."
+
+#: lib/Script/sieve.php:2060 lib/Script/sieve.php:2144
+msgid "No strings specified"
+msgstr "Nessuna stringa specificata"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Non uguale a"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr "Indirizzo a cui inviare la notifica"
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr "Numero di giorni tra due risposte allo stesso indirizzo"
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr "Marca il messaggio"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Opzioni riguardo l'aggiornamento dello script."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Altre Opzioni"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Panoramica"
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr "Partecipante (Da, A, etc)"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Inserisci il nome della nuova cartella:"
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr "Motivo"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Ricevuto"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Redirigi a"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Espressione regolare"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr "Scarta con una motivazione"
+
+#: config/fields.php.dist:51
+msgid "Resent-From"
+msgstr "Rispedito Da"
+
+#: config/fields.php.dist:55
+msgid "Resent-To"
+msgstr "Rispedito A"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "Torna al Elenco Filtri"
+
+#: forward.php:34 forward.php:88 vacation.php:34 vacation.php:117 spam.php:62
+#: spam.php:141 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "Torna al Elenco Filtri"
+
+#: templates/filters/header.inc:24
+msgid "Rule"
+msgstr "Regola"
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr "Regola Copiata"
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr "Regola Eliminata"
+
+#: filters.php:94 forward.php:72 vacation.php:97 spam.php:122
+msgid "Rule Disabled"
+msgstr "Regola Disattivata"
+
+#: filters.php:99 forward.php:63 vacation.php:88 spam.php:113
+msgid "Rule Enabled"
+msgstr "Regola Attivata"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "Nome Regola:"
+
+#: lib/Script/sieve.php:2929
+msgid "Rule:"
+msgstr "Regola:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "STARTTLS fallito: (%s) %s"
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "S_pam"
+
+#: forward.php:45 vacation.php:62 spam.php:79 templates/rule/footer.inc:60
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:41
+msgid "Save"
+msgstr "Salva"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Salva Impostazioni"
+
+#: forward.php:66 forward.php:84 vacation.php:91 vacation.php:113 spam.php:116
+#: spam.php:137
+msgid "Save and Disable"
+msgstr "Salva e Disattiva"
+
+#: forward.php:57 forward.php:86 vacation.php:82 vacation.php:115 spam.php:107
+#: spam.php:139
+msgid "Save and Enable"
+msgstr "Salva e Attiva"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Script"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Aggiornamento Script"
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr "Script non aggiornato."
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr "Script attivato con successo."
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr "Script disattivato con successo."
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Visto"
+
+#: rule.php:218
+msgid "Select a field"
+msgstr "Seleziona un campo"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Seleziona un set di regole da mostrare:"
+
+#: rule.php:347 lib/Ingo.php:59 templates/blacklist/blacklist.inc:23
+msgid "Select target folder"
+msgstr "Seleziona la cartella di destinazione"
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr "Intestazione definita dall'utente"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Mittente"
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr "Impostazioni aggiornate con successo."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Mostra Script Attivo"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Mostra Script Attuale"
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr "Filtro antispam non supportato dall'attuale configurazione dei filtri."
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "Dimensione"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr "Sorgente (Da, Rispondi a , etc.)"
+
+#: filters.php:198 lib/Block/overview.php:105 lib/Block/overview.php:108
+#: lib/Script/sieve.php:425 lib/Script/maildrop.php:301
+msgid "Spam Filter"
+msgstr "Filtro Antispam"
+
+#: spam.php:158 spam.php:165
+msgid "Spam Filtering"
+msgstr "Filtro Antispam"
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr "Livello di Spam"
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr "Inizio vacanza:"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "Non applicare altri filtri se questa regola corrisponde"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Oggetto"
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr "Oggetto del messaggio da inviare:"
+
+#: lib/Script/sieve.php:2928
+msgid "Subject:"
+msgstr "Oggetto"
+
+#: lib/api.php:103
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "L'indirizzo \"%s\" è stato aggiunto alla Lista Nera"
+
+#: lib/api.php:126
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "L'indirizzo \"%s\" è stato aggiunto alla Lista Bianca"
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "Il driver ha risposto: "
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr "Errore nel attivazione del script."
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr "Errore nel disattivazione del script."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "A"
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr "A:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Impossibile caricare le definizioni di %s."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "Intestazione Utente"
+
+#: filters.php:186 vacation.php:151 lib/Block/overview.php:61
+#: lib/Block/overview.php:64 lib/Script/sieve.php:399
+#: lib/Script/procmail.php:278 lib/Script/maildrop.php:276
+msgid "Vacation"
+msgstr "Vacanze"
+
+#: vacation.php:158
+msgid "Vacation Edit"
+msgstr "Modifica Vacanze"
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "Vacanze non sono supportate dall'attuale configurazione dei filtri."
+
+#: rule.php:353
+msgid "Value"
+msgstr "Valore"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Indirizzi della Lista Bianca:"
+
+#: filters.php:180 lib/Block/overview.php:85 lib/Block/overview.php:88
+#: templates/whitelist/whitelist.inc:8
+msgid "Whitelist"
+msgstr "Lista bianca"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "Modifica la Lista Bianca"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Whitelist non è supportata"
+
+#: lib/Script/sieve.php:329 lib/Script/procmail.php:246
+#: lib/Script/maildrop.php:224
+msgid "Whitelisted Addresses"
+msgstr "Indirizzi nella Lista Bianca:"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: filters.php:71 rule.php:172
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Non ti è permesso creare più di %d regole."
+
+#: filters.php:63 rule.php:23
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Non ti è permesso creare o modificare regole custom."
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr ""
+"Non è possibile creare condizioni vuote. Inserire un valore per \"%s\"."
+
+#: filters.php:52 rule.php:151
+msgid "You do not have permission to delete filter rules."
+msgstr "Non ti è permesso eliminare regole."
+
+#: filters.php:45 filters.php:112 filters.php:123 rule.php:58 rule.php:165
+msgid "You do not have permission to edit filter rules."
+msgstr "Non ti è permesso modificare le regole."
+
+#: lib/Script/sieve.php:2926
+msgid "You have received a new message"
+msgstr "Hai ricevuto un nuovo messaggio"
+
+#: lib/Script/imap.php:307 lib/Script/imap.php:330 lib/Script/imap.php:345
+msgid "[No Subject]"
+msgstr "[Nessun Oggetto]"
+
+#: lib/Ingo.php:384
+msgid "_Blacklist"
+msgstr "_Lista nera"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "_Elimina messaggio completamente"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "_Inserisci ogni indirizzo su una nuova riga:"
+
+#: lib/Ingo.php:390
+msgid "_Forward"
+msgstr "_Inoltra"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "_Sposta messaggi alla cartella:"
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "_Permessi"
+
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr "_Script"
+
+#: lib/Ingo.php:387
+msgid "_Vacation"
+msgstr "_Vacanze"
+
+#: lib/Ingo.php:381
+msgid "_Whitelist"
+msgstr "_Lista bianca"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "Attivo"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "e"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "Disabilitato - Click per abilitare"
+
+#: filters.php:218
+msgid "field"
+msgstr "campo"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "Inattivo"
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr "script procmail generato da Ingo"
+
+#: filters.php:218
+msgid "match"
+msgstr "corrisponde"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "o"
+
+#: lib/Script/procmail.php:140
+msgid "procmail script generated by Ingo"
+msgstr "script procmail generato da Ingo"
diff --git a/ingo/po/ja_JP.po b/ingo/po/ja_JP.po
new file mode 100644 (file)
index 0000000..e40d351
--- /dev/null
@@ -0,0 +1,1038 @@
+# Japanese translation for Ingo.
+# Copyright YEAR Horde Project
+# This file is distributed under the same license as the Ingo package.
+# Hiromi Kimura <hiromi@tac.tsukuba.ac.jp>
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo 1.2-RC1\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2007-08-03 12:47+0100\n"
+"PO-Revision-Date: 2007-11-30 20:41+0900\n"
+"Last-Translator: Hiromi Kimura <hiromi@tac.tsukuba.ac.jp>\n"
+"Language-Team: i18n@lists.horde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=SHIFT_JIS\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: filters.php:223
+msgid " and"
+msgstr " \82©\82Â"
+
+#: filters.php:223
+msgid " or"
+msgstr " \82Ü\82½\82Í"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "\83u\83\89\83b\83N\83\8a\83X\83g\82Ì\83A\83h\83\8c\83X\82É\91Î\82·\82é\93®\8dì\81F"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "\83X\83N\83\8a\83v\83g\82ð\97L\8cø\82É\82·\82é"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "\"%s\" \97p\82Ì\83X\83N\83\8a\83v\83g\97L\8cø\89»\8e¸\94s\81F(%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "\92Ç\89Á\82Ì\90Ý\92è"
+
+#: forward.php:43
+msgid "Address(es) to forward to:"
+msgstr "\93]\91\97\90æ\82Ì\83A\83h\83\8c\83X\81F"
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr "\89\9e\93\9a\82ð\95Ô\82³\82È\82¢\83A\83h\83\8c\83X\81F"
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr "\8fÚ\8d×\90Ý\92è"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "\88È\89º\91S\95\94"
+
+#: lib/api.php:54
+msgid "Allow Rules"
+msgstr "\83\8b\81[\83\8b\82ð\8b\96\89Â"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "\95Ô\90M\8dÏ\82Ý"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "\88È\89º\82Ì\82Ç\82ê\82©"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "\83t\83B\83\8b\83^\81[\82ð\93K\97p"
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr "\96{\93\96\82É\82±\82Ì\83\8b\81[\83\8b\82ð\8dí\8f\9c\82µ\82Ä\82à\97Ç\82¢\82Å\82·\82©?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "\95Ï\8dX\82ª\82 \82Á\82½\8e\9e\82É\8e©\93®\93I\82É\83X\83N\83\8a\83v\83g\82ð\8dX\90V\82µ\82Ü\82·\82©\81H"
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr "\8aî\96{\90Ý\92è"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Bcc"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "\8en\82Ü\82é"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "\83o\83C\83\93\83h\8e¸\94s\81F(%s) %s"
+
+#: filters.php:174 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:95 lib/Block/overview.php:98
+msgid "Blacklist"
+msgstr "\83u\83\89\83b\83N\83\8a\83X\83g"
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr "\83u\83\89\83b\83N\83\8a\83X\83g\82ð\95Ò\8fW"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "\8c»\8dÝ\82Ì\83h\83\89\83C\83o\81[\82Í\83u\83\89\83b\83N\83\8a\83X\83g\82ð\83T\83|\81[\83g\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B"
+
+#: lib/Script/procmail.php:209 lib/Script/sieve.php:269
+#: lib/Script/maildrop.php:197
+msgid "Blacklisted Addresses"
+msgstr "\83u\83\89\83b\83N\83\8a\83X\83g\82Ì\83A\83h\83\8c\83X"
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "\96{\95¶"
+
+#: filters.php:220 rule.php:322
+msgid "Case Sensitive"
+msgstr "\91å\95\8e\9a\8f¬\95\8e\9a\82ð\8bæ\95Ê\82·\82é"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: spam.php:90 rule.php:141 whitelist.php:38 forward.php:56 vacation.php:81
+#: blacklist.php:70
+msgid "Changes saved."
+msgstr "\95Ï\8dX\82Í\95Û\91\82³\82ê\82Ü\82µ\82½\81B"
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "\90Ú\91±\8e¸\94s"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "\8aÜ\82Þ"
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr "%s \82ð\83R\83s\81["
+
+#: lib/Storage.php:992 lib/Storage/sql.php:618
+#, php-format
+msgid "Copy of %s"
+msgstr "%s \82Ì\83R\83s\81["
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "\83R\83\93\83p\83C\83\8b\82µ\82½\90\97\8c`\83t\83@\83C\83\8b '%s' \82ª\95Û\91\82Å\82«\82Ü\82¹\82ñ\81B"
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "\90V\8bK\83t\83H\83\8b\83_\8dì\90¬"
+
+#: lib/Script/procmail.php:342 lib/Script/maildrop.php:362
+msgid "DISABLED: "
+msgstr "\8bÖ\8e~\81F"
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "\83X\83N\83\8a\83v\83g\82ð\96³\8cø\82É\82·\82é"
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr "%s \82ð\8dí\8f\9c"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "\8fð\8c\8f\82ð\8dí\8f\9c"
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "\83\81\83b\83Z\81[\83W\82ð\8dí\8f\9c"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "\8dí\8f\9c\8dÏ\82Ý"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "INBOX \82É\94z\91\97\82·\82é"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr "INBOX \82É\94z\91\97\82µ\81A\83R\83s\81[\82ð"
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr "INBOX \82É\94z\91\97\82µ\81A\93]\91\97\82ð"
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "\83t\83H\83\8b\83_\82É\94z\91\97"
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "\8eó\90M\90æ (To, Cc, Bcc \93\99)"
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr "%s \82ð\8bÖ\8e~\82É\82·\82é"
+
+#: spam.php:149 forward.php:99 vacation.php:159
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+#: templates/rule/header.inc:26
+msgid "Disabled"
+msgstr "\8bÖ\8e~"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "\8ae\83t\83B\83\8b\83^\81[\82ð\93K\97p\82µ\82½\8fÚ\8d×\82È\92Ê\92m\82ð\95\\8e¦\82µ\82Ü\82·\82©\81H"
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr "\89\9e\93\9a\82ð\83\81\81[\83\8a\83\93\83O\83\8a\83X\83g\82É\91\97\82ç\82È\82¢\81H"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "\82±\82¤\82·\82é\81F"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "\8en\82Ü\82ç\82È\82¢"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "\8aÜ\82Ü\82È\82¢"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "\8fI\82í\82ç\82È\82¢"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "\91\8dÝ\82µ\82È\82¢"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "\88ê\92v\82µ\82È\82¢"
+
+#: templates/filters/header.inc:26 lib/Block/overview.php:63
+#: lib/Block/overview.php:72 lib/Block/overview.php:87
+#: lib/Block/overview.php:97 lib/Block/overview.php:107
+msgid "Edit"
+msgstr "\95Ò\8fW"
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr "%s \82Ì\95Ò\8fW"
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr "%s \82ð\97L\8cø\82É\82·\82é"
+
+#: templates/filters/header.inc:28
+msgid "Enabled"
+msgstr "\97L\8cø"
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr "\8bx\89É\82Ì\8fI\82í\82è\81F"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "\8fI\82í\82é"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "\88ê\92v\82·\82é"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "\83X\83N\83\8a\83v\83g\82Ì\8eæ\93¾\92\86\82Ì\83G\83\89\81[\81F(%d) %s"
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr "\95Ï\8dX\82Ì\95Û\91\82É\8e¸\94s\82µ\82Ü\82µ\82½\81B"
+
+#: templates/filters/header.inc:20
+msgid "Existing Rules"
+msgstr "\8aù\91\82Ì\83\8b\81[\83\8b"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "\91\8dÝ\82·\82é"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "\82P\83I\83u\83W\83F\83N\83g\82ð\8aú\91Ò\82µ\82Ü\82µ\82½\82ª\81A\8eÀ\8dÛ\82Í %d \82Å\82µ\82½\81B"
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr "Socket \82©\82ç\82Ì\93Ç\82Ý\8fo\82µ\8e¸\94s\81F"
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr "Socket \82Ö\82Ì\8f\91\82«\8d\9e\82Ý\8e¸\94s\81F"
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "Socket \82Ö\82Ì\8f\91\82«\8d\9e\82Ý\8e¸\94s\81F\81i\90Ú\91±\92f\81I\81j"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "\8d\80\96Ú"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "\91S\82Ä\82Ì\83\81\83b\83Z\81[\83W\82ð\83t\83B\83\8b\83^\81[\82É\82©\82¯\82é"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "\93Ç\82ñ\82¾\83\81\83b\83Z\81[\83W\82¾\82¯\82ð\83t\83B\83\8b\83^\81[\82É\82©\82¯\82é"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "\96¢\93Ç\82Ì\83\81\83b\83Z\81[\83W\82¾\82¯\82ð\83t\83B\83\8b\83^\81[\82É\82©\82¯\82é"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "\83t\83B\83\8b\83^\81[\82Ì\83I\83v\83V\83\87\83\93"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "\83t\83B\83\8b\83^\81[\83\8b\81[\83\8b"
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr "\83t\83B\83\8b\83^\81[\83\8b\81[\83\8b"
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr "\83t\83B\83\8b\83^\81[\83X\83N\83\8a\83v\83g\82Ì\95\\8e¦"
+
+#: lib/Ingo.php:379
+msgid "Filter _Rules"
+msgstr "_R\83t\83B\83\8b\83^\81[\83\8b\81[\83\8b"
+
+#: lib/Script/imap.php:348
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "\83t\83B\83\8b\83^\81[\82Ì\8eÀ\8ds\81F%s \83\81\83b\83Z\81[\83W\82Í\83t\83H\83\8b\83_ \"%s\" \82É\83R\83s\81[\82³\82ê\82Ü\82µ\82½\81B"
+
+#: lib/Script/imap.php:334
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "\83t\83B\83\8b\83^\81[\82Ì\8eÀ\8ds\81F%s \83\81\83b\83Z\81[\83W\82Í\8dí\8f\9c\82³\82ê\82Ü\82µ\82½\81B"
+
+#: lib/Script/imap.php:312
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "\83t\83B\83\8b\83^\81[\82Ì\8eÀ\8ds\81F%s \83\81\83b\83Z\81[\83W\82Í\83t\83H\83\8b\83_ \"%s\" \82É\88Ú\93®\82³\82ê\82Ü\82µ\82½\81B"
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"\83t\83B\83\8b\83^\81[\82Ì\8eÀ\8ds\81F\83u\83\89\83b\83N\83\8a\83X\83g\82É\88ê\92v\82µ\82½ %s \83\81\83b\83Z\81[\83W\82Í\8dí\8f\9c\82³\82ê\82Ü\82µ\82½\81B"
+
+#: lib/Script/imap.php:345
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"\83t\83B\83\8b\83^\81[\82Ì\8eÀ\8ds\81F\"%2$s\" \82©\82ç\82Ì\83\81\83b\83Z\81[\83W \"%1$s\" \82Í\83t\83H\83\8b\83_ \"%3$s\" \82É\83R"
+"\83s\81[\82³\82ê\82Ü\82µ\82½\81B"
+
+#: lib/Script/imap.php:329
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr ""
+"\83t\83B\83\8b\83^\81[\82Ì\8eÀ\8ds\81F\"%2$s\" \82©\82ç\82Ì\83\81\83b\83Z\81[\83W \"%1$s\" \82Í\8dí\8f\9c\82³\82ê\82Ü\82µ\82½\81B"
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"\83t\83B\83\8b\83^\81[\82Ì\8eÀ\8ds\81F\"%2$s\" \82©\82ç\82Ì\83\81\83b\83Z\81[\83W \"%1$s\" \82Í\83t\83H\83\8b\83_ \"%3$s\" \82É\88Ú"
+"\93®\82³\82ê\82Ü\82µ\82½\81B"
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr "\83t\83B\83\8b\83^\81[\82ª\8c©\95t\82©\82è\82Ü\82¹\82ñ\81B"
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "\83t\83H\83\8d\81["
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr "SPAM \8eó\90M\97p\83t\83H\83\8b\83_\81F"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "\8eó\90M\82µ\82½\83\81\81[\83\8b\82ª\88È\89º\82Ì\8fð\8c\8f\82É\88ê\92v\81F"
+
+#: filters.php:192 forward.php:97 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "\93]\91\97"
+
+#: lib/Script/sieve.php:222
+msgid "Forward Keep Action"
+msgstr "\93]\91\97\82µ\93®\8dì\91±\8ds"
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr "\8c»\8dÝ\82Ì\83h\83\89\83C\83o\81[\82Å\82Í\93]\91\97\82Í\83T\83|\81[\83g\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B"
+
+#: lib/Script/procmail.php:288 lib/Script/sieve.php:232
+#: lib/Script/maildrop.php:246
+msgid "Forwards"
+msgstr "\93]\91\97"
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr "\93]\91\97\90æ\82Ì\95Ò\8fW"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "From"
+
+#: lib/Script/sieve.php:2933
+msgid "From:"
+msgstr "From:"
+
+#: lib/Script/sieve.php:118
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Ingo (http://www.horde.org/ingo/)\82ª\90\90¬"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "\8e\9f\82Ì\92l\82æ\82è\91å\82«\82¢"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "\8e\9f\82Ì\92l\82æ\82è\91å\82«\82¢\82©\93\99\82µ\82¢"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "\8c»\8dÝ\82Ì\83t\83B\83\8b\83^\81[\83h\83\89\83C\83o\81[\82Å\82Í\8cÂ\95Ê\82Ì\83\8b\81[\83\8b\82Í\83T\83|\81[\83g\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B"
+
+#: lib/Script/sieve.php:2527
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "\83\81\83b\83Z\81[\83W\82Ì\94z\91\97\90æ\82É\91\8dÝ\82µ\82È\82¢\83\81\81[\83\8b\83{\83b\83N\83X\82ª\8ew\92è\82³\82ê\82Ä\82¢\82Ü\82·\81B"
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr ""
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr ""
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr "\83\81\83b\83Z\81[\83W\82Ì\83R\83s\81[\82ð\95Û\91\82µ\82Ä\82¨\82«\82Ü\82·\82©\81H"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"LDAP \83T\83|\81[\83g\82ª\97v\8b\81\82³\82ê\82Ü\82µ\82½\82ª\81ALDAP \83\82\83W\83\85\81[\83\8b\82ª\96³\82¢\82©\83\8d\81[\83h\82³\82ê\82Ä\82¢\82Ü\82¹"
+"\82ñ\81B"
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "\8e\9f\82Ì\92l\82æ\82è\8f¬\82³\82¢"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "\8e\9f\82Ì\92l\82æ\82è\8f¬\82³\82¢\82©\93\99\82µ\82¢"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "List-ID"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "_K\8dí\8f\9c\8dÏ\82Ý\82Æ\88ó\82ð\95t\82¯\82é"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "\83\81\81[\83\8b\82É\88ó\82ð\95t\82¯\82é\81F"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr ""
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "\88ê\92v\82·\82é"
+
+#: lib/api.php:57
+msgid "Maximum Number of Rules"
+msgstr "\83\8b\81[\83\8b\82Ì\8dÅ\91å\90\94"
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"\83u\83\89\83b\83N\83\8a\83X\83g\82Ì\83A\83h\83\8c\83X\90\94\82ª\8dÅ\91å\92l\82ð\92´\89ß\82µ\82Ü\82µ\82½(\8d\87\8cv\83A\83h\83\8c\83X\81F%s\81A\8dÅ\91å\83A\83h\83\8c"
+"\83X\81F%s)\81B\82à\82¤\83u\83\89\83b\83N\83\8a\83X\83g\82É\83A\83h\83\8c\83X\82ð\92Ç\89Á\82Å\82«\82Ü\82¹\82ñ\81B"
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"\83z\83\8f\83C\83g\83\8a\83X\83g\82Ì\83A\83h\83\8c\83X\90\94\82ª\8dÅ\91å\92l\82ð\92´\89ß\82µ\82Ü\82µ\82½(\8d\87\8cv\83A\83h\83\8c\83X\81F%s\81A\8dÅ\91å\83A\83h\83\8c"
+"\83X\81F%s)\81B\82à\82¤\83z\83\8f\83C\83g\83\8a\83X\83g\82É\83A\83h\83\8c\83X\82ð\92Ç\89Á\82Å\82«\82Ü\82¹\82ñ\81B"
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr "SPAM \83X\83R\83A\82ª\82±\82Ì\92l\82Æ\93¯\82\82©\8fã\82¾\82Á\82½\82ç\81ASPAM \82Æ\94»\92è\82·\82é\81B"
+
+#: lib/Script/sieve.php:2947
+msgid "Missing address to notify"
+msgstr "\92Ê\92m\83A\83h\83\8c\83X\82ª\95s\96¾\82Å\82·"
+
+#: lib/Script/sieve.php:2328
+msgid "Missing address to redirect message to"
+msgstr "\93]\91\97\90æ\83A\83h\83\8c\83X\82ª\95s\96¾\82Å\82·"
+
+#: lib/Script/sieve.php:2374
+msgid "Missing reason for reject"
+msgstr "\8b\91\94Û\97\9d\97R\82ª\95s\96¾\82Å\82·"
+
+#: lib/Script/sieve.php:2677
+msgid "Missing reason in vacation."
+msgstr "\8bx\89É\97\9d\97R\82ª\95s\96¾\82Å\82·"
+
+#: templates/filters/header.inc:32
+msgid "Move"
+msgstr "\88Ú\93®"
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr "\83\8b\81[\83\8b\82ð\89º\82É"
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr "\83\8b\81[\83\8b\82ð\8fã\82É"
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr "\8e\84\82Ì\83\81\81[\83\8b\83A\83h\83\8c\83X\81F"
+
+#: templates/filters/filter-none.inc:3 templates/filters/footer.inc:6
+#: lib/Storage.php:888
+msgid "New Rule"
+msgstr "\90V\8bK\83\8b\81[\83\8b"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "\"%s\" \97v\91f\82ª\83o\83b\83N\83G\83\93\83h\82Ì\90Ý\92è\82É\82 \82è\82Ü\82¹\82ñ\81B"
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr "\82±\82Ì\83z\83X\83g\97p\82Ì\83o\83b\83N\83G\83\93\83h\90Ý\92è\82ª\82 \82è\82Ü\82¹\82ñ"
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr "backends.php \82É\83o\83b\83N\83G\83\93\83h\82Ì\90Ý\92è\82ª\82 \82è\82Ü\82¹\82ñ"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr ""
+"\83t\83B\83\8b\83^\81[\82ª\82 \82è\82Ü\82¹\82ñ\81B\"%s\" \82ð\83N\83\8a\83b\83N\82µ\82Ä\90V\82µ\82¢\83t\83B\83\8b\83^\81[\82ð\8dì\90¬\82µ\82Ä\89º\82³"
+"\82¢\81B"
+
+#: lib/Script/sieve.php:1685 lib/Script/sieve.php:1834
+#: lib/Script/sieve.php:2050
+msgid "No headers specified"
+msgstr "\83w\83b\83_\81[\82ª\8ew\92è\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ"
+
+#: script.php:69
+msgid "No script generated."
+msgstr "\83X\83N\83\8a\83v\83g\82Í\90\90¬\82³\82ê\82Ü\82¹\82ñ\82Å\82µ\82½\81B"
+
+#: lib/Script/sieve.php:2066 lib/Script/sieve.php:2150
+msgid "No strings specified"
+msgstr "\95\8e\9a\97ñ\82ª\8ew\92è\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "\93¯\88ê\82Å\82Í\82È\82¢"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr "\92Ê\92m\83\81\81[\83\8b\83A\83h\83\8c\83X"
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr "\8bx\89É\92\86\82Æ\95Ô\90M\82·\82é\93ú\90\94\81F"
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr "\83\81\83b\83Z\81[\83W\82É\88ó\82ð\82Â\82¯\82é\82¾\82¯"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "\83X\83N\83\8a\83v\83g\8dX\90V\82Ì\83I\83v\83V\83\87\83\93"
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "\82»\82Ì\91¼\82Ì\83I\83v\83V\83\87\83\93"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "\8aT\97ª"
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr "\8aÖ\8cW\8eÒ (From, To \93\99)"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "\90V\8bK\83t\83H\83\8b\83_\81[\82Ì\96¼\91O\82ð\93ü\97Í\82µ\82Ä\89º\82³\82¢\81F"
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr "\97\9d\97R\81F"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Received"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Redirect to"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "\90³\8bK\95\\8c»"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr "\8b\91\94Û\82Ì\97\9d\97R"
+
+#: config/fields.php.dist:51
+msgid "Resent-From"
+msgstr "Resent-From"
+
+#: config/fields.php.dist:55
+msgid "Resent-To"
+msgstr "Resent-To"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "\83t\83B\83\8b\83^\88ê\97\97\82É\96ß\82é"
+
+#: spam.php:62 spam.php:130 forward.php:34 forward.php:88 vacation.php:34
+#: vacation.php:117 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "\83\8b\81[\83\8b\88ê\97\97\82É\96ß\82é"
+
+#: templates/filters/header.inc:27
+msgid "Rule"
+msgstr "\83\8b\81[\83\8b"
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr "\83\8b\81[\83\8b\82ª\83R\83s\81[\82³\82ê\82Ü\82µ\82½"
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr "\83\8b\81[\83\8b\82Í\8dí\8f\9c\82³\82ê\82Ü\82µ\82½"
+
+#: spam.php:106 filters.php:94 forward.php:72 vacation.php:97
+msgid "Rule Disabled"
+msgstr "\83\8b\81[\83\8b\82Í\8bÖ\8e~\82³\82ê\82Ü\82µ\82½"
+
+#: spam.php:97 filters.php:99 forward.php:63 vacation.php:88
+msgid "Rule Enabled"
+msgstr "\83\8b\81[\83\8b\82Í\97L\8cø\82É\82È\82è\82Ü\82µ\82½"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "\83\8b\81[\83\8b\96¼\81F"
+
+#: lib/Script/sieve.php:2935
+msgid "Rule:"
+msgstr "\83\8b\81[\83\8b\81F"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "STARTTLS \8e¸\94s: (%s) %s"
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "_PSPAM"
+
+#: spam.php:79 forward.php:45 vacation.php:62
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:41
+#: templates/rule/footer.inc:60
+msgid "Save"
+msgstr "\95Û\91¶"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "\90Ý\92è\82Ì\95Û\91¶"
+
+#: spam.php:100 spam.php:126 forward.php:66 forward.php:84 vacation.php:91
+#: vacation.php:113
+msgid "Save and Disable"
+msgstr "\95Û\91\82µ\82Ä\8bÖ\8e~"
+
+#: spam.php:91 spam.php:128 forward.php:57 forward.php:86 vacation.php:82
+#: vacation.php:115
+msgid "Save and Enable"
+msgstr "\95Û\91\82µ\82Ä\97L\8cø"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "\83X\83N\83\8a\83v\83g"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "\83X\83N\83\8a\83v\83g\82Ì\8dX\90V\92\86"
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr "\83X\83N\83\8a\83v\83g\82Í\8dX\90V\82³\82ê\82Ü\82¹\82ñ\81B"
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr "\83X\83N\83\8a\83v\83g\82Í\8bN\93®\82³\82ê\82Ü\82µ\82½\81B"
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr "\83X\83N\83\8a\83v\83g\82Í\92â\8e~\82µ\82Ü\82µ\82½\81B"
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "\8aù\93Ç"
+
+#: rule.php:218
+msgid "Select a field"
+msgstr "\8d\80\96Ú\82ð\91I\91ð"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "\95\\8e¦\82·\82é\83\8b\81[\83\8b\83Z\83b\83g\82ð\91I\91ð\81F"
+
+#: rule.php:347 templates/blacklist/blacklist.inc:23 lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "\96Ú\93I\82Ì\83t\83H\83\8b\83_\82ð\91I\91ð"
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr "\83\86\81[\83U\92è\8b`\83w\83b\83_\81["
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Sender"
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr "\90Ý\92è\82Í\8dX\90V\82³\82ê\82Ü\82µ\82½\81B"
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "\83A\83N\83e\83B\83u\82È\83X\83N\83\8a\83v\83g\82ð\95\\8e¦"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "\8c»\8dÝ\82Ì\83X\83N\83\8a\83v\83g\82ð\95\\8e¦"
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr ""
+"\92P\8f\83 SPAM \83t\83B\83\8b\83^\81[\82Í\8c»\8dÝ\82Ì\83t\83B\83\8b\83^\81[\83h\83\89\83C\83o\81[\82Å\82Í\83T\83|\81[\83g\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B"
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "\83T\83C\83Y"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr "\91\97\90M\8c³ (From, Reply-to \93\99)"
+
+#: filters.php:198 lib/Script/sieve.php:431 lib/Script/maildrop.php:301
+#: lib/Block/overview.php:105 lib/Block/overview.php:108
+msgid "Spam Filter"
+msgstr "SPAM \83t\83B\83\8b\83^"
+
+#: spam.php:147 spam.php:154
+msgid "Spam Filtering"
+msgstr "SPAM \83t\83B\83\8b\83^\83\8a\83\93\83O"
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr "SPAM Level\81F"
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr "\8bx\89É\92\86\82Ì\8en\82ß\81F"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "\82±\82Ì\83\8b\81[\83\8b\82É\88ê\92v\82µ\82½\82ç\83`\83F\83b\83N\82ð\8fI\97¹\82³\82¹\82é\81H"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "\8c\8f\96¼"
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr "\8bx\89É\92\86\83\81\83b\83Z\81[\83W\82Ì\8c\8f\96¼\81F"
+
+#: lib/Script/sieve.php:2934
+msgid "Subject:"
+msgstr "\8c\8f\96¼\81F"
+
+#: lib/api.php:89
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "\83A\83h\83\8c\83X \"%s\" \82ª\83u\83\89\83b\83N\83\8a\83X\83g\82É\92Ç\89Á\82³\82ê\82Ü\82µ\82½\81B"
+
+#: lib/api.php:112
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "\83A\83h\83\8c\83X \"%s\" \82ª\83z\83\8f\83C\83g\83\8a\83X\83g\82É\92Ç\89Á\82³\82ê\82Ü\82µ\82½\81B"
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "\83h\83\89\83C\83o\81[\82Ì\89\9e\93\9a\81F"
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr "\83X\83N\83\8a\83v\83g\82ð\93®\8dì\82³\82¹\82é\8dÛ\82É\83G\83\89\81[\82ª\94­\90\82µ\82Ü\82µ\82½\81B"
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr "\83X\83N\83\8a\83v\83g\82ð\8bx\8e~\82³\82¹\82é\8dÛ\82É\83G\83\89\81[\82ª\94­\90\82µ\82Ü\82µ\82½\81B"
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "To"
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr "To:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "%s \82Ì\92è\8b`\82ð\83\8d\81[\83h\82Å\82«\82Ü\82¹\82ñ\81B"
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "\83\86\81[\83U\83w\83b\83_\81["
+
+#: filters.php:186 vacation.php:157 lib/Script/procmail.php:268
+#: lib/Script/sieve.php:405 lib/Script/maildrop.php:276
+#: lib/Block/overview.php:61 lib/Block/overview.php:64
+msgid "Vacation"
+msgstr "\8bx\89É\81i\89\9e\93\9a\81j"
+
+#: vacation.php:164
+msgid "Vacation Edit"
+msgstr "\8bx\89É\81i\89\9e\93\9a\81j\82Ì\95Ò\8fW"
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "\8bx\89É\81i\89\9e\93\9a\81j\82Í\8c»\8dÝ\82Ì\83t\83B\83\8b\83^\81[\83h\83\89\83C\83o\81[\82Å\82Í\83T\83|\81[\83g\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ\81B"
+
+#: rule.php:353
+msgid "Value"
+msgstr "\92l"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "_I\83z\83\8f\83C\83g\83\8a\83X\83g\82Ì\83A\83h\83\8c\83X"
+
+#: filters.php:180 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:85 lib/Block/overview.php:88
+msgid "Whitelist"
+msgstr "\83z\83\8f\83C\83g\83\8a\83X\83g"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "\83z\83\8f\83C\83g\83\8a\83X\83g\82Ì\95Ò\8fW"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "\8c»\8dÝ\82Ì\83h\83\89\83C\83o\81[\82Å\82Í\83z\83\8f\83C\83g\83\8a\83X\83g\82Í\83T\83|\81[\83g\82µ\82Ä\82¢\82Ü\82¹\82ñ\81B"
+
+#: lib/Script/procmail.php:236 lib/Script/sieve.php:329
+#: lib/Script/maildrop.php:224
+msgid "Whitelisted Addresses"
+msgstr "\83z\83\8f\83C\83g\83\8a\83X\83g\82Ì\83A\83h\83\8c\83X"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: filters.php:71 rule.php:172
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "\82 \82È\82½\82Í %d \88È\8fã\82Ì\83\8b\81[\83\8b\8dì\90¬\82ª\8b\96\89Â\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ\81B"
+
+#: filters.php:63 rule.php:23
+msgid "You are not allowed to create or edit custom rules."
+msgstr "\82 \82È\82½\82Í\83\8b\81[\83\8b\82Ì\8dì\90¬\81E\95Ò\8fW\82ª\8b\96\89Â\82³\82ê\82Ä\82¢\82Ü\82¹\82ñ\81B"
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr "\8fð\8c\8f\82ª\8bó\82Å\82·\81B\"%s\" \82Ì\92l\82ð\93ü\97Í\82µ\82Ä\89º\82³\82¢\81B"
+
+#: filters.php:52 rule.php:151
+msgid "You do not have permission to delete filter rules."
+msgstr "\82 \82È\82½\82É\82Í\83\8b\81[\83\8b\82ð\8dí\8f\9c\82·\82é\8c \8cÀ\82ª\82 \82è\82Ü\82¹\82ñ\81B"
+
+#: filters.php:45 filters.php:112 filters.php:123 rule.php:58 rule.php:165
+msgid "You do not have permission to edit filter rules."
+msgstr "\82 \82È\82½\82É\82Í\83\8b\81[\83\8b\82ð\95Ò\8fW\82·\82é\8c \8cÀ\82ª\82 \82è\82Ü\82¹\82ñ\81B"
+
+#: lib/Script/sieve.php:2932
+msgid "You have received a new message"
+msgstr "\90V\82µ\82¢\83\81\83b\83Z\81[\83W\82ð\8eó\90M\82µ\82Ü\82µ\82½"
+
+#: lib/Script/imap.php:307 lib/Script/imap.php:330 lib/Script/imap.php:345
+msgid "[No Subject]"
+msgstr "[\8c\8f\96¼\82È\82µ]"
+
+#: lib/Ingo.php:384
+msgid "_Blacklist"
+msgstr "_B\83u\83\89\83b\83N\83\8a\83X\83g"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "_D\83\81\83b\83Z\81[\83W\82ð\8dí\8f\9c"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "_E\82P\8ds\82É\82P\82Â\82Ì\83A\83h\83\8c\83X\82ð\93ü\97Í\81F"
+
+#: lib/Ingo.php:390
+msgid "_Forward"
+msgstr "_F\93]\91\97"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "_M\83\81\83b\83Z\81[\83W\82ð\83t\83H\83\8b\83_?\82É\88Ú\93®\81F"
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "_P\83A\83N\83Z\83X\8c "
+
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr "_S"
+
+#: lib/Ingo.php:387
+msgid "_Vacation"
+msgstr "_V"
+
+#: lib/Ingo.php:381
+msgid "_Whitelist"
+msgstr "_W\83z\83\8f\83C\83g\83\8a\83X\83g"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "\93®\8dì"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "\82©\82Â"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "\8bÖ\8e~\82Å\82· - \83N\83\8a\83b\83N\82Å\97L\8cø\82É\82È\82è\82Ü\82·"
+
+#: filters.php:218
+msgid "field"
+msgstr "\8d\80\96Ú"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "\8bx\8e~"
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr "Ingo \82Å\90\90¬\82³\82ê\82½ maildrop \83X\83N\83\8a\83v\83g"
+
+#: filters.php:218
+msgid "match"
+msgstr "\88ê\92v"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "\82Ü\82½\82Í"
+
+#: lib/Script/procmail.php:130
+msgid "procmail script generated by Ingo"
+msgstr "Ingo \82Å\90\90¬\82³\82ê\82½ procmail \83X\83N\83\8a\83v\83g"
diff --git a/ingo/po/ko_KR.po b/ingo/po/ko_KR.po
new file mode 100644 (file)
index 0000000..1aea62a
--- /dev/null
@@ -0,0 +1,1087 @@
+# Korean translations for horde package
+# horde ÆÐŰÁö¿¡ ´ëÇÑ Çѱ¹¾î ¹ø¿ª¹®.
+# Copyright 2005-2009 The Horde Project
+# This file is distributed under the same license as the horde package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: horde 3\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2005-01-25 18:46+0100\n"
+"PO-Revision-Date: 2005-05-08 16:42+0900\n"
+"Last-Translator: Jinhyok Heo <novembre@ournature.org>\n"
+"Language-Team: i18n@lists.horde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=EUC-KR\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: filters.php:167
+msgid " and"
+msgstr " ±×¸®°í"
+
+#: filters.php:167
+msgid " or"
+msgstr " ¶Ç´Â"
+
+#: templates/blacklist/blacklist.inc:19
+msgid "Action for blacklisted addresses:"
+msgstr "¼ö½Å°ÅºÎ ÁÖ¼Ò¿¡ ´ëÇÑ ¸í·É"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr ""
+
+#: templates/filters/settings.inc:9
+msgid "Additional Settings"
+msgstr "Ãß°¡ÀûÀΠ¼³Á¤"
+
+#: templates/rule/header.inc:53
+msgid "All of the following"
+msgstr "´ÙÀ½ÀÇ ÀüºÎ"
+
+#: templates/rule/footer.inc:44
+msgid "Answered"
+msgstr "´äÀåÇÑ ¸ÞÀÏ"
+
+#: templates/rule/header.inc:56
+msgid "Any of the following"
+msgstr "´ÙÀ½ Áß Çϳª ÀÌ»ó"
+
+#: templates/filters/footer.inc:16
+msgid "Apply Filters"
+msgstr "ÇÊÅÍ Àû¿ëÇϱâ"
+
+#: filters.php:196
+#, fuzzy
+msgid "Are you sure you want to delete this rule?"
+msgstr ""
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"ÀÌ ¸Þ½ÃÁö¸¦ ¿µ¿øÈ÷ »èÁ¦ÇϽðڽÀ´Ï±î?\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"ÀÌ ¸Þ½ÃÁö¸¦ ¿µ¿øÈ÷ »èÁ¦ÇϽðڽÀ´Ï±î?\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"ÀÌ ¸Þ½ÃÁö¸¦ ¿µ¿øÈ÷ »èÁ¦ÇϽðڽÀ´Ï±î?\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"ÀÌ ¸Þ½ÃÁö¸¦ ¿µ¿øÈ÷ »èÁ¦ÇϽðڽÀ´Ï±î?\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"ÀÌ ¸Þ½ÃÁö¸¦ ¿µ¿øÈ÷ »èÁ¦ÇϽðڽÀ´Ï±î?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr ""
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "¼ûÀº ÂüÁ¶"
+
+#: lib/Storage.php:349
+msgid "Begins with"
+msgstr ""
+
+#: filters.php:126 templates/blacklist/blacklist.inc:8
+msgid "Blacklist"
+msgstr "¼ö½Å°ÅºÎ"
+
+#: blacklist.php:100
+msgid "Blacklist Edit"
+msgstr "¼ö½Å°ÅºÎ ¸ñ·Ï ¼öÁ¤"
+
+#: blacklist.php:17
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/procmail.php:209
+msgid "Blacklisted Address"
+msgstr "¼ö½Å°ÅºÎµÈ ÁÖ¼Ò"
+
+#: lib/Script/sieve.php:245
+msgid "Blacklisted Addresses"
+msgstr "¼ö½Å°ÅºÎµÈ ÁÖ¼Ò"
+
+#: config/fields.php.dist:88
+msgid "Body"
+msgstr "º»¹®"
+
+#: filters.php:164 rule.php:238
+msgid "Case Sensitive"
+msgstr "´ë¼Ò¹®ÀÚ ±¸ºÐ"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "ÂüÁ¶"
+
+#: rule.php:105 whitelist.php:36 forward.php:33 vacation.php:41
+#: blacklist.php:69
+msgid "Changes saved."
+msgstr "¼öÁ¤»çÇ× ÀúÀåµÊ"
+
+#: lib/Storage.php:345
+msgid "Contains"
+msgstr "Æ÷ÇÔ"
+
+#: filters.php:204 filters.php:205
+msgid "Copy %s"
+msgstr "º¹»ç %s"
+
+#: lib/Storage.php:775
+msgid "Copy of %s"
+msgstr "%s º¹»ç"
+
+#: lib/Ingo.php:53
+msgid "Create new folder"
+msgstr "»õ Æú´õ ¸¸µé±â"
+
+#: templates/filters/filter.html:16
+msgid "DISABLED"
+msgstr "»ç¿ë¾ÈÇÔ"
+
+#: lib/Script/procmail.php:354
+msgid "DISABLED: "
+msgstr "»ç¿ë¾ÈÇÔ:"
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr ""
+
+#: filters.php:196 filters.php:197
+msgid "Delete %s"
+msgstr "»èÁ¦ %s"
+
+#: templates/rule/filter.inc:30
+msgid "Delete Condition"
+msgstr "»èÁ¦ Á¶°Ç"
+
+#: lib/Storage.php:301
+msgid "Delete message completely"
+msgstr "¸Þ½ÃÁö ¿ÏÀü »èÁ¦"
+
+#: templates/rule/footer.inc:47
+msgid "Deleted"
+msgstr "»èÁ¦µÈ ¸ÞÀÏ"
+
+#: lib/Storage.php:289
+msgid "Deliver into my INBOX"
+msgstr "¹ÞÀºÆíÁöÇÔÀ¸·Î Àü´Þ"
+
+#: lib/Storage.php:315
+msgid "Deliver into my INBOX and copy to"
+msgstr "¹ÞÀºÆíÁöÇÔÀ¸·Î Àü´ÞÇ졒ʫÙÀ½ ÆíÁöÇÔÀ¸·Î º¹»çÇϱâ"
+
+#: lib/Storage.php:310
+msgid "Deliver into my INBOX and redirect to"
+msgstr "¹ÞÀºÆíÁöÇÔÀ¸·Î Àü´ÞÇ졒ʫÙÀ½ÁּҷΠÀü´Þ"
+
+#: lib/Storage.php:295
+msgid "Deliver to folder"
+msgstr "Æú´õ·Î À̵¿"
+
+#: filters.php:218 filters.php:219
+msgid "Disable %s"
+msgstr "»ç¿ë¾ÈÇÔ: %s"
+
+#: templates/whitelist/whitelist.inc:9 templates/blacklist/blacklist.inc:10
+#: templates/vacation/vacation.inc:9 templates/forward/forward.inc:9
+#: templates/rule/header.inc:30
+msgid "Disabled"
+msgstr "»ç¿ë¾ÈÇÔ"
+
+#: templates/filters/settings.inc:21
+msgid "Display detailed notification when each filter is applied?"
+msgstr "ÇÊÅͰ¡ Àû¿ëµÉ ¶§ ÀÚ¼¼ÇÑ ¾Ë¸² ¸Þ½ÃÁö¸¦ Ç¥½ÃÇÕ´Ï´Ù."
+
+#: templates/vacation/vacation.inc:38
+msgid "Do _not send responses to bulk or list messages"
+msgstr "_n¹úÅ© È¤Àº ¸®½ºÆ® ¸Þ½ÃÁö¿¡ ´ëÇØ ÀÀ´äÀ» º¸³»Áö ¾Ê´Â´Ù"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr ""
+
+#: lib/Storage.php:350
+msgid "Doesn't begin with"
+msgstr ""
+
+#: lib/Storage.php:346
+msgid "Doesn't contain"
+msgstr ""
+
+#: lib/Storage.php:352
+msgid "Doesn't end with"
+msgstr ""
+
+#: lib/Storage.php:354
+msgid "Doesn't exist"
+msgstr ""
+
+#: lib/Storage.php:357
+msgid "Doesn't match (with placeholders)"
+msgstr ""
+
+#: templates/filters/header.inc:20
+msgid "Edit"
+msgstr "¼öÁ¤"
+
+#: filters.php:185 filters.php:187 filters.php:191 filters.php:192
+msgid "Edit %s"
+msgstr "¼öÁ¤ '%s'"
+
+#: filters.php:222 filters.php:223
+msgid "Enable %s"
+msgstr "»ç¿ëÇϱâ: %s"
+
+#: templates/filters/header.inc:22
+msgid "Enabled"
+msgstr "»ç¿ëÁß"
+
+#: lib/Storage.php:351
+#, fuzzy
+msgid "Ends with"
+msgstr "¼öÁ¤"
+
+#: lib/Storage.php:362
+msgid "Equal to"
+msgstr ""
+
+#: templates/filters/header.inc:7
+msgid "Existing Rules"
+msgstr "Á¸ÀçÇϴ ÇÊÅ͸µ"
+
+#: lib/Storage.php:353
+msgid "Exists"
+msgstr "Á¸ÀçÇÔ"
+
+#: templates/filters/settings.inc:30
+msgid "Filter All Messages"
+msgstr "¸ðµç ¸Þ½ÃÁö ÇÊÅÍ"
+
+#: templates/filters/settings.inc:32
+msgid "Filter Only Seen Messages"
+msgstr "ÀÐÀº ¸ÞÀϸ¸ ÇÊÅÍ"
+
+#: templates/filters/settings.inc:31
+msgid "Filter Only Unseen Messages"
+msgstr "ÀÐÁö ¾ÊÀº ¸ÞÀϸ¸ ÇÊÅÍ"
+
+#: templates/filters/settings.inc:28
+msgid "Filter Options"
+msgstr "ÇÊÅÍ ¼±ÅûçÇ×"
+
+#: templates/rule/header.inc:28
+msgid "Filter Rule"
+msgstr "ÇÊÅ͠ťĢ"
+
+#: filters.php:92
+msgid "Filter Rules"
+msgstr "ÇÊÅ͠ťĢ"
+
+#: script.php:52
+#, fuzzy
+msgid "Filter Script Display"
+msgstr "±âŸ ¼³Á¤"
+
+#: lib/Ingo.php:269
+msgid "Filter _Rules"
+msgstr "_rÇÊÅ͠ťĢ"
+
+#: lib/Script/imap.php:321
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr ""
+
+#: lib/Script/imap.php:308
+#, fuzzy, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "%d°³ ¸Þ½ÃÁö Áö¿öÁü. "
+
+#: lib/Script/imap.php:286
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr ""
+
+#: lib/Script/imap.php:189
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+
+#: lib/Script/imap.php:318
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+
+#: lib/Script/imap.php:303
+#, fuzzy, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "¸Þ½ÃÁö Áö¿öÁü"
+
+#: lib/Script/imap.php:280
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+
+#: rule.php:133
+msgid "Filter not found."
+msgstr "ÇÊÅ͠ãÁö ¸øÇÔ"
+
+#: templates/rule/header.inc:48
+msgid "For an incoming message that matches:"
+msgstr ""
+
+#: filters.php:144 templates/forward/forward.inc:7
+msgid "Forward"
+msgstr "Àü´Þ"
+
+#: forward.php:16
+msgid "Forward is not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/procmail.php:296
+msgid "Forwards"
+msgstr "Àü´Þ"
+
+#: forward.php:46
+msgid "Forwards Edit"
+msgstr "Àü´Þ ¼öÁ¤"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "À§Ä¡"
+
+#: lib/Storage.php:360
+#, fuzzy
+msgid "Greater than"
+msgstr "¸µÅ© ¸¸µé±â"
+
+#: lib/Storage.php:361
+msgid "Greater than or equal to"
+msgstr ""
+
+#: templates/rule/footer.inc:41
+msgid "Important"
+msgstr "Áß¿äÇÑ ¸ÞÀÏ"
+
+#: rule.php:26
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/sieve.php:1783
+msgid "Inexistant mailbox specified for message delivery."
+msgstr ""
+
+#: lib/Storage.php:347
+msgid "Is"
+msgstr ""
+
+#: lib/Storage.php:348
+msgid "Isn't"
+msgstr ""
+
+#: lib/Storage.php:358
+msgid "Less than"
+msgstr ""
+
+#: lib/Storage.php:359
+msgid "Less than or equal to"
+msgstr ""
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr ""
+
+#: templates/blacklist/blacklist.inc:22
+msgid "Mar_k message as deleted"
+msgstr "_kÁö¿öÁø ¸Þ½ÃÁö·Î Ç¥½Ã"
+
+#: templates/rule/footer.inc:33
+#, fuzzy
+msgid "Mark message as:"
+msgstr "¸Þ½ÃÁö ±¸ºÐ"
+
+#: lib/Storage.php:356
+msgid "Matches (with placeholders)"
+msgstr ""
+
+#: lib/Storage.php:487
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+
+#: lib/Storage.php:541
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+
+#: lib/Script/sieve.php:1646
+msgid "Missing address to redirect message to"
+msgstr ""
+
+#: lib/Script/sieve.php:1680
+msgid "Missing reason for reject"
+msgstr ""
+
+#: lib/Script/sieve.php:1850
+msgid "Missing reason in vacation."
+msgstr ""
+
+#: templates/filters/header.inc:23
+msgid "Move"
+msgstr "À̵¿"
+
+#: filters.php:109 filters.php:215
+msgid "Move Rule Down"
+msgstr "¾Æ·¡·Î À̵¿"
+
+#: filters.php:110 filters.php:214
+msgid "Move Rule Up"
+msgstr "À§·Î À̵¿"
+
+#: templates/vacation/vacation.inc:46
+msgid "N_umber of days between vacation replies:"
+msgstr ""
+
+#: templates/filters/filter-none.inc:4 templates/filters/footer.inc:13
+#: lib/Storage.php:726
+msgid "New Rule"
+msgstr "»õ·Î¿î ±ÔÄ¢"
+
+#: lib/Ingo.php:204 lib/Ingo.php:206
+#, fuzzy, php-format
+msgid "No '%s' element found in backend configuration."
+msgstr "VFS ¼³Á¤ Á¤º¸¿¡¼­ 'port'ÀÌ ¾ø½À´Ï´Ù."
+
+#: lib/Ingo.php:202
+msgid "No backend configured for this host"
+msgstr ""
+
+#: lib/Ingo.php:179
+msgid "No backends configured in backends.php"
+msgstr ""
+
+#: templates/filters/filter-none.inc:4
+msgid "No filters. Click '%s' to create a new filter."
+msgstr "ÇÊÅͰ¡ ¾øÀ½. '%s'¸¦ ´­·¯ »õ ÇÊÅ͸¦ ¸¸µå¼¼¿ä."
+
+#: lib/Script/sieve.php:1233 lib/Script/sieve.php:1333
+#: lib/Script/sieve.php:1515
+#, fuzzy
+msgid "No headers specified"
+msgstr "¹®ÀÚ¿­ ÀԷ ¿À·ù"
+
+#: script.php:67
+#, fuzzy
+msgid "No script generated."
+msgstr "»èÁ¦µÇÁö ¾ÊÀº ¸ÞÀÏ"
+
+#: lib/Script/sieve.php:1530
+#, fuzzy
+msgid "No strings specified"
+msgstr "Æú´õ¸¦ ¼±ÅÃÇϼ¼¿ä"
+
+#: lib/Storage.php:363
+#, fuzzy
+msgid "Not equal to"
+msgstr ""
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾ø½¿\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½\n"
+"#-#-#-#-#  ko_KR.po (Horde 3.0-cvs)  #-#-#-#-#\n"
+"Á¦¸ñ ¾øÀ½"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr ""
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "±âŸ ¼³Á¤"
+
+#: templates/javascript/new_folder.js:6
+msgid "Please enter the name of the new folder:"
+msgstr "\\n»õ·Î¿î Æú´õÀÇ À̸§À» ÀÔ·ÂÇϼ¼¿ä:\\n"
+
+#: templates/vacation/vacation.inc:64
+msgid "R_eason"
+msgstr ""
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr ""
+
+#: lib/Storage.php:306
+msgid "Redirect to"
+msgstr ""
+
+#: lib/Storage.php:355
+msgid "Regular expression"
+msgstr ""
+
+#: lib/Storage.php:321
+msgid "Reject with reason"
+msgstr ""
+
+#: config/fields.php.dist:55
+msgid "Resent To"
+msgstr ""
+
+#: config/fields.php.dist:51
+msgid "Resent-from"
+msgstr ""
+
+#: templates/rule/footer.inc:72
+msgid "Return to Filters List"
+msgstr "ÇÊÅÍ ¸ñ·ÏÀ¸·Î µ¹¾Æ°¡±â"
+
+#: templates/whitelist/whitelist.inc:28 templates/blacklist/blacklist.inc:43
+#: templates/vacation/vacation.inc:75 templates/forward/forward.inc:38
+msgid "Return to Rules List"
+msgstr "±ÔÄ¢ ¸ñ·Ï·Î µ¹¾Æ°¡±â"
+
+#: templates/filters/header.inc:21
+msgid "Rule"
+msgstr "±ÔÄ¢"
+
+#: filters.php:45
+msgid "Rule Copied"
+msgstr "±ÔÄ¢ º¹»çµÊ"
+
+#: filters.php:39
+msgid "Rule Deleted"
+msgstr "±ÔÄ¢ Áö¿öÁü"
+
+#: filters.php:59
+msgid "Rule Disabled"
+msgstr "±ÔÄ¢ »ç¿ë¾ÈÇÔ"
+
+#: filters.php:64
+msgid "Rule Enabled"
+msgstr "±ÔÄ¢ »ç¿ëÇÔ"
+
+#: templates/rule/header.inc:39
+msgid "Rule Name"
+msgstr "±ÔÄ¢ À̸§"
+
+#: templates/whitelist/whitelist.inc:27 templates/blacklist/blacklist.inc:42
+#: templates/vacation/vacation.inc:74 templates/forward/forward.inc:37
+#: templates/rule/footer.inc:71
+msgid "Save"
+msgstr "ÀúÀå"
+
+#: templates/filters/settings.inc:47
+msgid "Save Settings"
+msgstr "¼³Á¤ ÀúÀå"
+
+#: templates/script/header.inc:3
+#, fuzzy
+msgid "Script"
+msgstr "¾Æ·¡Ã·ÀÚ"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr ""
+
+#: lib/Ingo.php:229
+#, fuzzy
+msgid "Script not updated."
+msgstr "%s ¼öÁ¤µÊ"
+
+#: lib/Ingo.php:136
+#, fuzzy
+msgid "Script successfully activated."
+msgstr ""
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"¸ÞÀÏÇÔ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù."
+
+#: lib/Ingo.php:135
+#, fuzzy
+msgid "Script successfully deactivated."
+msgstr ""
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"¸ÞÀÏÇÔ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù.\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"Æú´õ \"%s\"ÀÌ »èÁ¦µÇ¾ú½À´Ï´Ù."
+
+#: templates/rule/footer.inc:38
+msgid "Seen"
+msgstr "ÀÐÀº ¸ÞÀÏ"
+
+#: rule.php:163
+msgid "Select a field"
+msgstr "Ç׸ñ ¼±ÅÃ"
+
+#: lib/Ingo.php:50
+msgid "Select target folder"
+msgstr "Æú´õ ¼±ÅÃ"
+
+#: rule.php:184
+msgid "Self-Defined Header"
+msgstr ""
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr ""
+
+#: filters.php:78
+msgid "Settings successfully updated."
+msgstr "¼³Á¤ÀÌ ¼º°øÀûÀ¸·Î ÀúÀåµÇ¾ú½À´Ï´Ù."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr ""
+
+#: templates/script/activate.inc:31
+#, fuzzy
+msgid "Show Current Script"
+msgstr "¿¬¶ô󠺸±â"
+
+#: config/fields.php.dist:83
+msgid "Size"
+msgstr "Å©±â"
+
+#: templates/rule/footer.inc:61
+msgid "Stop checking if this rule matches?"
+msgstr ""
+
+#: templates/vacation/vacation.inc:55
+msgid "Subje_ct of vacation message:"
+msgstr ""
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Á¦¸ñ"
+
+#: lib/Ingo.php:131
+msgid "The driver said: "
+msgstr ""
+
+#: lib/Ingo.php:130
+#, fuzzy
+msgid "There was an error activating the script."
+msgstr "µ¥ÀÌŸ ÀÓÆ÷Æ® ¿À·ù"
+
+#: lib/Ingo.php:129
+#, fuzzy
+msgid "There was an error deactivating the script."
+msgstr ""
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"#-#-#-#-#  compendium.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"¸Þ½ÃÁö Àü¼Û ¿À·ù\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"¸Þ½ÃÁö º¸³»±â ¿À·ù\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"¸Þ½ÃÁö º¸³»±â ¿À·ù\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"¸Þ½ÃÁö º¸³»±â ¿À·ù\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"¸Þ½ÃÁö º¸³»±â ¿À·ù\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"¸Þ½ÃÁö º¸³»±â ¿À·ù\n"
+"#-#-#-#-#  ko_KR.po (IMP 4.0-cvs)  #-#-#-#-#\n"
+"¸Þ½ÃÁö º¸³»±â ¿À·ù"
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "¹Þ´Â »ç¶÷"
+
+#: lib/Script.php:116
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "%s Á¤ÀǸ¦ ÀÐÀ» ¼ö ¾ø½À´Ï´Ù."
+
+#: filters.php:138 templates/vacation/vacation.inc:7
+#: lib/Script/procmail.php:272
+#, fuzzy
+msgid "Vacation"
+msgstr "½ÇÇà"
+
+#: vacation.php:66
+#, fuzzy
+msgid "Vacation Edit"
+msgstr "½ÇÇà"
+
+#: lib/Script/sieve.php:352
+#, fuzzy
+msgid "Vacation Message"
+msgstr "¸Þ½ÃÁö·Î °¡±â"
+
+#: vacation.php:16
+msgid "Vacation is not supported in the current filtering driver."
+msgstr ""
+
+#: templates/whitelist/whitelist.inc:18
+msgid "Wh_itelist addresses:"
+msgstr "_i¼ö½Å½ÂÀΠÁÖ¼Ò"
+
+#: filters.php:132 templates/whitelist/whitelist.inc:7
+msgid "Whitelist"
+msgstr "¼ö½Å½ÂÀÎ"
+
+#: whitelist.php:55
+msgid "Whitelist Edit"
+msgstr "¼ö½Å½ÂÀΠ¸ñ·Ï ¼öÁ¤"
+
+#: whitelist.php:18
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/procmail.php:240 lib/Script/sieve.php:299
+msgid "Whitelisted Addresses"
+msgstr "¼ö½Å½ÂÀεȠÁÖ¼Ò"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr ""
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr ""
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr ""
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr ""
+
+#: vacation.php:30
+msgid ""
+"You must specify at least one email address for which the vacation messages "
+"should be activated."
+msgstr ""
+
+#: lib/Script/imap.php:281 lib/Script/imap.php:304 lib/Script/imap.php:318
+msgid "[No Subject]"
+msgstr "[Á¦¸ñ ¾øÀ½]"
+
+#: templates/forward/forward.inc:27
+msgid "_Address(es) to forward to:"
+msgstr ""
+
+#: templates/vacation/vacation.inc:28
+msgid "_Addresses to not send responses to:"
+msgstr ""
+
+#: lib/Ingo.php:274
+msgid "_Blacklist"
+msgstr "_B¼ö½Å°ÅºÎ"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "_Delete message completely"
+msgstr "_d¸Þ½ÃÁö ¿ÏÀü »èÁ¦"
+
+#: templates/blacklist/blacklist.inc:33
+msgid "_Enter each address on a new line:"
+msgstr "_eÇÑ ÁÙ¿¡ ÁÖ¼Ò Çϳª¾¿ ÀÔ·ÂÇϼ¼¿ä:"
+
+#: lib/Ingo.php:280
+msgid "_Forward"
+msgstr "_fÀü´Þ"
+
+#: templates/forward/forward.inc:19
+#, fuzzy
+msgid "_Keep a copy of messages in this account?"
+msgstr "ÀÌ Æú´õ¿¡ ¸Þ½ÃÁö°¡ ¾ø½À´Ï´Ù."
+
+#: templates/blacklist/blacklist.inc:24
+msgid "_Move message to folder:"
+msgstr "_mÆú´õ·Î À̵¿:"
+
+#: templates/vacation/vacation.inc:18
+msgid "_My email addresses:"
+msgstr "_m³ªÀÇ À̸ÞÀÏ ÁÖ¼Ò:"
+
+#: lib/Ingo.php:283
+#, fuzzy
+msgid "_Script"
+msgstr "¾Æ·¡Ã·ÀÚ"
+
+#: lib/Ingo.php:277
+#, fuzzy
+msgid "_Vacation"
+msgstr "½ÇÇà"
+
+#: lib/Ingo.php:271
+msgid "_Whitelist"
+msgstr "_W¼ö½Å½ÂÀÎ"
+
+#: templates/rule/filter.inc:4
+#, fuzzy
+msgid "and"
+msgstr "È®Àå"
+
+#: filters.php:162
+#, fuzzy
+msgid "field"
+msgstr "Çʵå"
+
+#: filters.php:162
+#, fuzzy
+msgid "match"
+msgstr "ã´Â ¹®ÀÚ¿­"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "¶Ç´Â"
+
+#: lib/Script/procmail.php:126
+msgid "procmail script generated by Ingo"
+msgstr ""
+
+#: lib/Script/sieve.php:111
+msgid "sieve filter generated by Ingo"
+msgstr ""
diff --git a/ingo/po/lt_LT.po b/ingo/po/lt_LT.po
new file mode 100644 (file)
index 0000000..ada07b3
--- /dev/null
@@ -0,0 +1,1035 @@
+# Lithuanian translations for Ingo package.
+# Copyright 2007-2009 The Horde Project
+# This file is distributed under the same license as the Ingo package.
+# Vilius Sumskas <vilius@lnk.lt>, 2003, 2004, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo 1.2-cvs\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2007-11-02 15:40+0200\n"
+"PO-Revision-Date: 2007-11-11 17:26+0200\n"
+"Last-Translator: Vilius Sumskas <vilius@lnk.lt>\n"
+"Language-Team: Lithuanian <vilius@lnk.lt>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-13\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && (n%"
+"100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: filters.php:223
+msgid " and"
+msgstr " ir"
+
+#: filters.php:223
+msgid " or"
+msgstr " arba"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Veiksmas adresams ið juodojo sàraðo:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Ájungti skriptà"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "Nepavyko aktyvuoti \"%s\" skripto: (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Papildomi nustatymai"
+
+#: forward.php:43
+msgid "Address(es) to forward to:"
+msgstr "Adresas(ai) persiunèiami á:"
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr "Adresai á kuriuos neatsakyti:"
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr "Kiti nustatymai"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Visas sekanèias sàlygas"
+
+#: lib/api.php:54
+msgid "Allow Rules"
+msgstr "Leisti taisykles"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Atsakyta"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Bet kurià sekanèià sàlygà"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Taikyti filtrus"
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr "Ar tikrai norite iðtrinti ðià filtravimo taisyklæ?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Automatiðkai atnaujinti skriptà po kiekvieno atnaujinimo?"
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr "Pagrindiniai nustatymai"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Bcc"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Prasideda"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Prisijungti nepavyko: (%s) %s"
+
+#: filters.php:174 lib/Block/overview.php:95 lib/Block/overview.php:98
+#: templates/blacklist/blacklist.inc:7
+msgid "Blacklist"
+msgstr "Juodasis sàraðas"
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr "Juodojo sàraðo redagavimas"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "Dabartinë filtravimo posistemë nepalaiko juodojo sàraðo."
+
+#: lib/Script/procmail.php:209 lib/Script/sieve.php:269
+#: lib/Script/maildrop.php:197
+msgid "Blacklisted Addresses"
+msgstr "Adresai átraukti á juodàjá sàraðà"
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "Laiðko turinys"
+
+#: filters.php:220 rule.php:322
+msgid "Case Sensitive"
+msgstr "Atkreipti dëmesá á didþiasias/maþasias raides"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: vacation.php:81 spam.php:90 whitelist.php:38 forward.php:56
+#: blacklist.php:70 rule.php:141
+msgid "Changes saved."
+msgstr "Pakeitimai iðsaugoti."
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Prisijungti nepavyko"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Turi"
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr "Kopijuoti %s"
+
+#: lib/Storage.php:992 lib/Storage/sql.php:618
+#, php-format
+msgid "Copy of %s"
+msgstr "%s kopija"
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "Nepavyko iðsaugoti sukompiliuoto ðablono failo '%s'."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Sukurti naujà katalogà"
+
+#: lib/Script/procmail.php:342 lib/Script/maildrop.php:362
+msgid "DISABLED: "
+msgstr "IÐJUNGTA: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Iðjungti skriptà"
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr "Iðtrinti %s"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "Iðtrinti sàlygà"
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "Visiðkai iðtrinti laiðkà"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Iðtrinta"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "Pristatyti á mano Inbox katalogà"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr "Pristatyti á mano Inbox katalogà ir nukopijuoti á"
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Pristatyti á mano Inbox katalogà ir nukreipti á"
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "Perkelti á katalogà"
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "Gavëjas (Kam,Cc,Bcc,ir t.t.)"
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr "Iðjungti %s"
+
+#: vacation.php:159 spam.php:149 forward.php:99
+#: templates/blacklist/blacklist.inc:10 templates/rule/header.inc:26
+#: templates/whitelist/whitelist.inc:10
+msgid "Disabled"
+msgstr "Iðjungta"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Kai panaudojamas filtras rodyti detalø praneðimà?"
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr "Nesiøsti atsakymø á konferencijø laiðkus?"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Vykdyti tai:"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "Neprasideda"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Neturi"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "Nesibaigia"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "Neegzistuoja"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "Neatitinka"
+
+#: lib/Block/overview.php:63 lib/Block/overview.php:72
+#: lib/Block/overview.php:87 lib/Block/overview.php:97
+#: lib/Block/overview.php:107 templates/filters/header.inc:26
+msgid "Edit"
+msgstr "Redagavimas"
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr "Redaguoti %s"
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr "Ájungti %s"
+
+#: templates/filters/header.inc:28
+msgid "Enabled"
+msgstr "Ájungta"
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr "Atostogø pabaiga:"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "Baigiasi"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "Lygus"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Klaida skaitant dabartiná skriptà: (%d) %s"
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr "Klaida iðsaugant pakeitimus."
+
+#: templates/filters/header.inc:20
+msgid "Existing Rules"
+msgstr "Egzistuojanèios filtrø taisyklës"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Egzistuoja"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "Tikëtasi 1 objekto, gauta %d."
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr "Nepavyko perskaityti ið soketo: "
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr "Nepavyko raðyti á soketà: "
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "Nepavyko raðyti á soketà: (atsijungta!)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "Laukas"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Filtruoti visus laiðkus"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Filtruoti tik perskaitytus laiðkus"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Filtruoti tik neperskaitytus laiðkus"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Filtrø parametrai"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Filtravimo taisyklë"
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr "Filtravimo taisyklës"
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr "Filtro skripto rodymas"
+
+#: lib/Ingo.php:379
+msgid "Filter _Rules"
+msgstr "_Filtrai"
+
+#: lib/Script/imap.php:348
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Filtravimas: %s laiðkas(ai, ø) nukopijuotas(i, a) á katalogà \"%s\"."
+
+#: lib/Script/imap.php:334
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Filtravimas: iðtrintas(i, a) %s laiðkas(ai, ø)."
+
+#: lib/Script/imap.php:312
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Filtravimas: %s laiðkas(ai, ø) perkeltas(i, a) á katalogà \"%s\"."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Filtravimas: %s laiðkas(ai, ø) atitinkantis(ys, ø) juodàjá sàraðà iðtrintas"
+"(i, a)."
+
+#: lib/Script/imap.php:345
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr "Filtravimas: laiðkas \"%s\" nuo \"%s\" nukopijuotas á katalogà \"%s\"."
+
+#: lib/Script/imap.php:329
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Filtravimas: laiðkas \"%s\" nuo \"%s\" iðtrintas."
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr "Filtravimas: laiðkas \"%s\" nuo \"%s\" perkeltas á katalogà \"%s\"."
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr "Tokio filtro nëra."
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "Paþymëta priminimui"
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr "Nepageidaujamø (spam) laiðkø katalogas:"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Visiems gaunamiems laiðkams kurie atitinka:"
+
+#: forward.php:97 filters.php:192 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Persiøsti"
+
+#: lib/Script/sieve.php:222
+msgid "Forward Keep Action"
+msgstr "Persiuntimo iðsaugojimo veiksmas"
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Dabartinë filtravimo posistemë nepalaiko persiuntimø."
+
+#: lib/Script/procmail.php:288 lib/Script/sieve.php:232
+#: lib/Script/maildrop.php:246
+msgid "Forwards"
+msgstr "Persiuntimai"
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr "Persiuntimø redagavimas"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Nuo"
+
+#: lib/Script/sieve.php:2933
+msgid "From:"
+msgstr "Nuo:"
+
+#: lib/Script/sieve.php:118
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Sugeneruota su Ingo (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Daugiau nei"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Daugiau arba lygu"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "Dabartinë filtravimo posistemë nepalaiko individualiø filtrø."
+
+#: lib/Script/sieve.php:2527
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Laiðkø gavimui nurodyta neegzistuojanti paðto dëþutë."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "Yra"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "Nëra"
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr "Ar palikti laiðko kopijà ðioje paðto dëþutëje?"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"Reikalingas LDAP palaikymas, taèiau LDAP modulis nerastas arba neákrautas."
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Maþiau nei"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Maþiau arba lygu"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "Konferencijos ID"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "Paþymëti laið_kus kaip iðtrintus"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Paþymëti laiðkà kaip:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "Paieðkos tipas"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "Atitinka"
+
+#: lib/api.php:57
+msgid "Maximum Number of Rules"
+msgstr "Maksimalus taisykliø skaièius"
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Pasiektas maksimalus adresø skaièius juodajame sàraðë. (Ið viso adresø: %s, "
+"maksimalus adresø kiekis: %s). Naujø adresø pridëti negalima."
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Pasiektas maksimalus adresø skaièius baltajame sàraðë. (Ið viso adresø: %s, "
+"maksimalus adresø kiekis: %s). Naujø adresø pridëti negalima."
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+"Laiðkai su tokiu arba didesniø taðkø skaièiumi bus laikomi kaip "
+"nepageidaujami (spam)."
+
+#: lib/Script/sieve.php:2947
+msgid "Missing address to notify"
+msgstr "Perspëjimui apie laiðkus nenurodytas el. paðto adresas"
+
+#: lib/Script/sieve.php:2328
+msgid "Missing address to redirect message to"
+msgstr "Laiðkø persiuntimui nenurodytas el. paðto adresas"
+
+#: lib/Script/sieve.php:2374
+msgid "Missing reason for reject"
+msgstr "Atmetimui nenurodyta prieþastis"
+
+#: lib/Script/sieve.php:2677
+msgid "Missing reason in vacation."
+msgstr "Atostogø modulyje nenurodyta prieþastis."
+
+#: templates/filters/header.inc:32
+msgid "Move"
+msgstr "Perkelti"
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr "Perkelti þemyn"
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr "Perkelti aukðtyn"
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr "Mano el. paðto adresai:"
+
+#: lib/Storage.php:888 templates/filters/filter-none.inc:3
+#: templates/filters/footer.inc:6
+msgid "New Rule"
+msgstr "Nauja filtravimo taisyklë"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "Elementas \"%s\" nenurodytas posistemës konfigûracijoje."
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr "Ðiame serveryje nesukonfigûruota posistemë"
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr "Posistemë nesukonfigûruota backends.php faile"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Filtrø nëra. Norëdami sukurti naujà filtrà, spauskite \"%s\"."
+
+#: lib/Script/sieve.php:1685 lib/Script/sieve.php:1834
+#: lib/Script/sieve.php:2050
+msgid "No headers specified"
+msgstr "Nëra antraðèiø specifikacijos"
+
+#: script.php:69
+msgid "No script generated."
+msgstr "Skriptas nesugeneruotas."
+
+#: lib/Script/sieve.php:2066 lib/Script/sieve.php:2150
+msgid "No strings specified"
+msgstr "Neávestos reikðmës"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Nelygus"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr "Perspëti el. paðto adresu"
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr "Dienø skaièius tarp atostogø atsakymø:"
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr "Tik paþymëti laiðkà"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Nustatymai susijæ su skriptø atnaujinimu."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Kiti nustatymai"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Santrauka"
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr "Dalyvis (Nuo,Kam,ir t.t.)"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Áveskite naujo katalogo pavadinimà:"
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr "Prieþastis:"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Gauta"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Nukreipti á"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Reguliari iðraiðka"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr "Atmesti su prieþastimi"
+
+#: config/fields.php.dist:51
+msgid "Resent-From"
+msgstr "Persiøstas nuo"
+
+#: config/fields.php.dist:55
+msgid "Resent-To"
+msgstr "Persiøstas á"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "Gráþti á filtrø sàraðà"
+
+#: vacation.php:34 vacation.php:117 spam.php:62 spam.php:130 forward.php:34
+#: forward.php:88 templates/blacklist/blacklist.inc:42
+#: templates/whitelist/whitelist.inc:24
+msgid "Return to Rules List"
+msgstr "Gráþti á filtrø sàraðà"
+
+#: templates/filters/header.inc:27
+msgid "Rule"
+msgstr "Taisyklë"
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr "Taisyklë nukopijuota"
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr "Taisyklë iðtrinta"
+
+#: vacation.php:97 spam.php:106 forward.php:72 filters.php:94
+msgid "Rule Disabled"
+msgstr "Taisyklë iðjungta"
+
+#: vacation.php:88 spam.php:97 forward.php:63 filters.php:99
+msgid "Rule Enabled"
+msgstr "Taisyklë ájungta"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "Taisyklës pavadinimas:"
+
+#: lib/Script/sieve.php:2935
+msgid "Rule:"
+msgstr "Taisyklë:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "STARTTLS nepavyko: (%s) %s"
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "Spamas"
+
+#: vacation.php:62 spam.php:79 forward.php:45
+#: templates/blacklist/blacklist.inc:41 templates/rule/footer.inc:60
+#: templates/whitelist/whitelist.inc:23
+msgid "Save"
+msgstr "Iðsaugoti"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Iðsaugoti nustatymus"
+
+#: vacation.php:91 vacation.php:113 spam.php:100 spam.php:126 forward.php:66
+#: forward.php:84
+msgid "Save and Disable"
+msgstr "Iðsaugoti ir iðjungti"
+
+#: vacation.php:82 vacation.php:115 spam.php:91 spam.php:128 forward.php:57
+#: forward.php:86
+msgid "Save and Enable"
+msgstr "Iðsaugoti ir ájungti"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Skriptas"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Skripto atnaujinimas"
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr "Skriptas neatnaujintas."
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr "Skriptas sëkmingai ájungtas."
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr "Skriptas sëkmingai iðjungtas."
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Skaityta"
+
+#: rule.php:218
+msgid "Select a field"
+msgstr "Pasirinkite laukà"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Pasirinkite taisykles:"
+
+#: rule.php:347 lib/Ingo.php:59 templates/blacklist/blacklist.inc:23
+msgid "Select target folder"
+msgstr "Pasirinkite katalogà"
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr "Paèio apraðyta antraðtë"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Siuntëjas"
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr "Nustatymai sëkmingai atnaujinti."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Rodyti aktyvøjá skriptà"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Rodyti dabartiná skriptà"
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr ""
+"Dabartinë filtravimo posistemë nepalaiko paprasto nepageidaujamø (spam) "
+"laiðkø filtravimo."
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "Dydis"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr "Ðaltinis (Nuo,Atsakyti á,ir t.t.)"
+
+#: filters.php:198 lib/Block/overview.php:105 lib/Block/overview.php:108
+#: lib/Script/sieve.php:431 lib/Script/maildrop.php:301
+msgid "Spam Filter"
+msgstr "Nepageidaujamø (spam) laiðkø filtras"
+
+#: spam.php:147 spam.php:154
+msgid "Spam Filtering"
+msgstr "Nepageidaujamø (spam) laiðkø filtravimas"
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr "Spam lygis:"
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr "Atostogø pradþia:"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "Nustoti tikrinti jeigu atitinka ðià taisyklæ?"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Tema"
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr "Atostogø laiðko tema:"
+
+#: lib/Script/sieve.php:2934
+msgid "Subject:"
+msgstr "Tema:"
+
+#: lib/api.php:89
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "Adresas \"%s\" átrauktas á jûsø juodàjá sàraðà."
+
+#: lib/api.php:112
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "Adresas \"%s\" átrauktas á jûsø baltàjá sàraðà."
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "Posistemës praneðimas: "
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr "Klaida ájungiant skriptà."
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr "Klaida iðjungiant skriptà."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Kam"
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr "Kam:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Negaliu uþkrauti %s apraðymo."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "Vartotojo apraðyta antraðtë"
+
+#: vacation.php:157 filters.php:186 lib/Block/overview.php:61
+#: lib/Block/overview.php:64 lib/Script/procmail.php:268
+#: lib/Script/sieve.php:405 lib/Script/maildrop.php:276
+msgid "Vacation"
+msgstr "Atostogos"
+
+#: vacation.php:164
+msgid "Vacation Edit"
+msgstr "Atostogø redagavimas"
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "Dabartinë filtravimo posistemë nepalaiko atostogø modulio."
+
+#: rule.php:353
+msgid "Value"
+msgstr "Reikðmë"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Baltojo sàraðo _adresai:"
+
+#: filters.php:180 lib/Block/overview.php:85 lib/Block/overview.php:88
+#: templates/whitelist/whitelist.inc:8
+msgid "Whitelist"
+msgstr "Baltasis sàraðas"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "Baltojo sàraðo redagavimas"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Dabartinë filtravimo posistemë nepalaiko baltojo sàraðo."
+
+#: lib/Script/procmail.php:236 lib/Script/sieve.php:329
+#: lib/Script/maildrop.php:224
+msgid "Whitelisted Addresses"
+msgstr "Adresai átraukti á baltàjá sàraðà"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "Svarba"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: filters.php:71 rule.php:172
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Jûs neturite teisiø kurti daugiau nei %d taisyklæ(es, iø)."
+
+#: filters.php:63 rule.php:23
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Jûs neturite teisiø kurti arba keisti savo taisykliø."
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr "Jûs negalite kuri tuðèiø sàlygø. Áraðykite \"%s\" reikðmæ."
+
+#: filters.php:52 rule.php:151
+msgid "You do not have permission to delete filter rules."
+msgstr "Jûs neturite teisiø iðtrinti taisykliø."
+
+#: filters.php:45 filters.php:112 filters.php:123 rule.php:58 rule.php:165
+msgid "You do not have permission to edit filter rules."
+msgstr "Jûs neturite teisiø redaguoti taisykliø."
+
+#: lib/Script/sieve.php:2932
+msgid "You have received a new message"
+msgstr "Jûs gavote naujà laiðkà"
+
+#: lib/Script/imap.php:307 lib/Script/imap.php:330 lib/Script/imap.php:345
+msgid "[No Subject]"
+msgstr "[be pavadinimo]"
+
+#: lib/Ingo.php:384
+msgid "_Blacklist"
+msgstr "_Juodasis sàraðas"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "_Visiðkai iðtrinti laiðkà"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "Kiekvienà _adresà raðykite naujoje eilutëje:"
+
+#: lib/Ingo.php:390
+msgid "_Forward"
+msgstr "P_ersiøsti"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "Perkelti laiðkus á _katalogà:"
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "_Teisës"
+
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr "_Skriptas"
+
+#: lib/Ingo.php:387
+msgid "_Vacation"
+msgstr "At_ostogos"
+
+#: lib/Ingo.php:381
+msgid "_Whitelist"
+msgstr "_Baltasis sàraðas"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "ájungta"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "ir"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "iðjungta - paspauskite, kad ájungtumëte"
+
+#: filters.php:218
+msgid "field"
+msgstr "laukas"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "iðjungta"
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr "maildrop skriptas sugeneruotas su Ingo"
+
+#: filters.php:218
+msgid "match"
+msgstr "atitinka"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "arba"
+
+#: lib/Script/procmail.php:130
+msgid "procmail script generated by Ingo"
+msgstr "procmail skriptas sugeneruotas su Ingo"
diff --git a/ingo/po/lv_LV.po b/ingo/po/lv_LV.po
new file mode 100644 (file)
index 0000000..ff49be5
--- /dev/null
@@ -0,0 +1,775 @@
+# Latvian translations for Ingo package.
+# Copyright 2004-2009 The Horde Project
+# This file is distributed under the same license as the Ingo package.
+# Automatically generated, 2004.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo H3 (1.0-RC2)\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2004-11-27 13:12+0200\n"
+"PO-Revision-Date: 2005-04-14 18:10+0200\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: i18n@lists.horde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CP1257\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n != 0 ? 1 : "
+"2);\n"
+
+#: filters.php:167
+msgid " and"
+msgstr " un"
+
+#: filters.php:167
+msgid " or"
+msgstr " vai"
+
+#: templates/blacklist/blacklist.inc:19
+msgid "Action for blacklisted addresses:"
+msgstr "Darbîba Melnâ saraksta adresçm:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Aktivçt skriptu"
+
+#: templates/filters/settings.inc:9
+msgid "Additional Settings"
+msgstr "Papildus iestatîjumi"
+
+#: templates/rule/header.inc:53
+msgid "All of the following"
+msgstr "Visi sekojoðie"
+
+#: templates/rule/footer.inc:44
+msgid "Answered"
+msgstr "Atbildçta"
+
+#: templates/rule/header.inc:56
+msgid "Any of the following"
+msgstr "Jebkurð no sekojoðiem"
+
+#: templates/filters/footer.inc:16
+msgid "Apply Filters"
+msgstr "Pielietot filtrus"
+
+#: filters.php:196
+msgid "Are you sure you want to delete this rule?"
+msgstr "Vai tieðâm vçlaties dzçst ðo likumu?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Automâtiski atsvaidzinât skriptu pçc katras izmaiòas?"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Bcc"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Sâkas ar"
+
+#: filters.php:126 templates/blacklist/blacklist.inc:8
+msgid "Blacklist"
+msgstr "Melnais saraksts"
+
+#: blacklist.php:100
+msgid "Blacklist Edit"
+msgstr "Labot Melno saraksts"
+
+#: blacklist.php:17
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "Paðreizçjais filtrçðanas dzinis neatbalsta Melno sarakstu."
+
+#: lib/Script/procmail.php:209
+msgid "Blacklisted Address"
+msgstr "Adrese no Melnâ saraksta"
+
+#: lib/Script/sieve.php:245
+msgid "Blacklisted Addresses"
+msgstr "Melnâ saraksta adreses"
+
+#: config/fields.php.dist:88
+msgid "Body"
+msgstr "Íermenis"
+
+#: filters.php:164 rule.php:238
+msgid "Case Sensitive"
+msgstr "Reìistrjutîgs"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: blacklist.php:69 forward.php:33 rule.php:105 vacation.php:41
+#: whitelist.php:36
+msgid "Changes saved."
+msgstr "Izmaiòas saglabâtas."
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Satur"
+
+#: filters.php:204 filters.php:205
+#, php-format
+msgid "Copy %s"
+msgstr "Kopçt %s"
+
+#: lib/Storage.php:778
+#, php-format
+msgid "Copy of %s"
+msgstr "%s kopija"
+
+#: lib/Ingo.php:53
+msgid "Create new folder"
+msgstr "Izveidot jaunu mapi"
+
+#: templates/filters/filter.html:16
+msgid "DISABLED"
+msgstr "IZSLÇGTS"
+
+#: lib/Script/procmail.php:354
+msgid "DISABLED: "
+msgstr "IZSLÇGTS: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Deaktivçt skriptu"
+
+#: filters.php:196 filters.php:197
+#, php-format
+msgid "Delete %s"
+msgstr "Dzçst %s"
+
+#: templates/rule/filter.inc:27
+msgid "Delete Condition"
+msgstr "Dzçðanas nosacîjums"
+
+#: lib/Storage.php:298
+msgid "Delete message completely"
+msgstr "Dzçst vçstuli pavisam"
+
+#: templates/rule/footer.inc:47
+msgid "Deleted"
+msgstr "Izdzçsta"
+
+#: lib/Storage.php:286
+msgid "Deliver into my INBOX"
+msgstr "Nogâdât INBOX"
+
+#: lib/Storage.php:312
+msgid "Deliver into my INBOX and copy to"
+msgstr "Nogâdât INBOX un kopçt uz"
+
+#: lib/Storage.php:307
+msgid "Deliver into my INBOX and redirect to"
+msgstr "Nogâdât INBOX un pâradresçt"
+
+#: lib/Storage.php:292
+msgid "Deliver to folder"
+msgstr "Nogâdât mapç"
+
+#: filters.php:218 filters.php:219
+#, php-format
+msgid "Disable %s"
+msgstr "Izslçgt %s"
+
+#: templates/whitelist/whitelist.inc:9 templates/blacklist/blacklist.inc:10
+#: templates/vacation/vacation.inc:9 templates/forward/forward.inc:9
+#: templates/rule/header.inc:30
+msgid "Disabled"
+msgstr "Izslçgts"
+
+#: templates/filters/settings.inc:21
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Parâdît detalizçtu paziòojumu pçc katra filtra pielietoðanas? "
+
+#: templates/vacation/vacation.inc:38
+msgid "Do _not send responses to bulk or list messages"
+msgstr "Nesûtît atbildi uz vairum- vai vçstkopu vçstulçm"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Darbîba"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "Nesâkas ar"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Nesatur"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "Nebeidzas ar"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "Neeksistç"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "Neatbilst (ar vietturiem)"
+
+#: templates/filters/header.inc:20
+msgid "Edit"
+msgstr "Labot"
+
+#: filters.php:185 filters.php:187 filters.php:191 filters.php:192
+#, php-format
+msgid "Edit %s"
+msgstr "Labot %s"
+
+#: filters.php:222 filters.php:223
+#, php-format
+msgid "Enable %s"
+msgstr "Ieslçgt %s"
+
+#: templates/filters/header.inc:22
+msgid "Enabled"
+msgstr "Ieslçgts"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "Beidzas ar"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "Vienâds ar"
+
+#: templates/filters/header.inc:7
+msgid "Existing Rules"
+msgstr "Filtrçðanas likumi"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Eksistç"
+
+#: templates/filters/settings.inc:30
+msgid "Filter All Messages"
+msgstr "Filtrçt visas vçstules"
+
+#: templates/filters/settings.inc:32
+msgid "Filter Only Seen Messages"
+msgstr "Filtrçt tikai lasîtâs vçstules"
+
+#: templates/filters/settings.inc:31
+msgid "Filter Only Unseen Messages"
+msgstr "Filtrçt tikai neredzçtas vçstules"
+
+#: templates/filters/settings.inc:28
+msgid "Filter Options"
+msgstr "Filtru opcijas"
+
+#: templates/rule/header.inc:28
+msgid "Filter Rule"
+msgstr "Filtrçðanas likums"
+
+#: filters.php:92
+msgid "Filter Rules"
+msgstr "Filtrçðanas likumi"
+
+#: script.php:52
+msgid "Filter Script Display"
+msgstr "Parâdît filtra skriptu"
+
+#: lib/Ingo.php:269
+msgid "Filter _Rules"
+msgstr "Filtrçðanas likumi"
+
+#: lib/Script/imap.php:321
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Filtrçðana: %s vçstule(s) nokopçta(s)uz mapi \"%s\"."
+
+#: lib/Script/imap.php:308
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Filtrçðana: %s vçstules izdzçsta(s)."
+
+#: lib/Script/imap.php:189
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr "Filtrçðana: %s Melnajam sarakstam atbilstoða(s) vçstule(s) izdzçstas."
+
+#: lib/Script/imap.php:318
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr "Filtrçðana: Vçstule \"%s\" no \"%s\" nokopçta uz mapi \"%s\"."
+
+#: lib/Script/imap.php:303
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Filtrçðana: Vçstule \"%s\" no \"%s\" izdzçsta."
+
+#: lib/Script/imap.php:280
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr "Filtrçðana: Vçstule \"%s\" no \"%s\" pârvietota uz mapi \"%s\"."
+
+#: rule.php:133
+msgid "Filter not found."
+msgstr "Filtrs nav atrodams"
+
+#: templates/rule/header.inc:48
+msgid "For an incoming message that matches:"
+msgstr "Ienâkoðajai vçstulei, kas atbilst:"
+
+#: filters.php:144 templates/forward/forward.inc:7
+msgid "Forward"
+msgstr "Pârsûtît"
+
+#: forward.php:16
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Paðreizçjais filtrçðanas dzinis neatbalsta pârsûtîðanu."
+
+#: lib/Script/procmail.php:296
+msgid "Forwards"
+msgstr "Pârsûtîðanas"
+
+#: forward.php:46
+msgid "Forwards Edit"
+msgstr "Labot Pârsûtîðanu"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Sûtîtâjs"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Lielâks par"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Lielâks vai vienâds ar"
+
+#: templates/rule/footer.inc:41
+msgid "Important"
+msgstr "Svarîga"
+
+#: rule.php:26
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "Paðreizçjais filtrçðanas dzinis neatbalsta individuâlus likumus."
+
+#: lib/Script/sieve.php:1783
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Norâdîta neeksistçjoða pastkastîte."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "Ir"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "Nav"
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Mazâks par"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Mazâks vai vienâds ar"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "List-ID"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "Mar_k message as deleted"
+msgstr "Atzîmçt vçstuli kâ izdzçstu"
+
+#: templates/rule/footer.inc:33
+msgid "Mark message as:"
+msgstr "Atzîmçt vçstuli kâ:"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "Atbilst (ar vietturiem)"
+
+#: lib/Storage.php:486
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Adreðu skaits Melnajâ sarakstâ izsmelts (Adreses kopâ: %s, maksimâlais "
+"skaits: %s). Pievienot adreses Melnajam sarakstam vairs nav iespçjams."
+
+#: lib/Storage.php:541
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Adreðu skaits Baltajâ sarakstâ izsmelts (Adreses kopâ: %s, maksimâlais "
+"skaits: %s). Pievienot adreses Baltajam sarakstam vairs nav iespçjams."
+
+#: lib/Script/sieve.php:1646
+msgid "Missing address to redirect message to"
+msgstr "Nav norâdîts, kam pâradresçt"
+
+#: lib/Script/sieve.php:1680
+msgid "Missing reason for reject"
+msgstr "Nav norâdîts atteikuma iemesls"
+
+#: lib/Script/sieve.php:1850
+msgid "Missing reason in vacation."
+msgstr "Nav norâdîts prombûtnes paskaidrojums"
+
+#: templates/filters/header.inc:23
+msgid "Move"
+msgstr "Pârvietot"
+
+#: filters.php:109 filters.php:215
+msgid "Move Rule Down"
+msgstr "Pârvietot lejup"
+
+#: filters.php:110 filters.php:214
+msgid "Move Rule Up"
+msgstr "Pârvietot augðup"
+
+#: templates/vacation/vacation.inc:46
+msgid "N_umber of days between vacation replies:"
+msgstr "Dienu skaits starp brîvdienu atbildes nosûtîðanu:"
+
+#: templates/filters/filter-none.inc:4 templates/filters/footer.inc:13
+#: lib/Storage.php:729
+msgid "New Rule"
+msgstr "Jauns likums"
+
+#: lib/Ingo.php:204 lib/Ingo.php:206
+#, php-format
+msgid "No '%s' element found in backend configuration."
+msgstr "Programmatûrâ nav atrasts neviens '%s' elements."
+
+#: lib/Ingo.php:202
+msgid "No backend configured for this host"
+msgstr "Nav atrodams konfigurçts dzinis"
+
+#: lib/Ingo.php:179
+msgid "No backends configured in backends.php"
+msgstr "Dzinies nav konfigurçts backends.php "
+
+#: templates/filters/filter-none.inc:4
+#, php-format
+msgid "No filters. Click '%s' to create a new filter."
+msgstr "Filtru nav. Nospiediet '%s', lai radîtu jaunu filtru."
+
+#: lib/Script/sieve.php:1233 lib/Script/sieve.php:1333
+#: lib/Script/sieve.php:1515
+msgid "No headers specified"
+msgstr "Nav norâdîta neviena galvene"
+
+#: script.php:67
+msgid "No script generated."
+msgstr "Nav ìenerçts neviens skripts."
+
+#: lib/Script/sieve.php:1530
+msgid "No strings specified"
+msgstr "Nav norâdîts teksts"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Nav vienâds ar"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Skriptu atjauninâðanas opcijas"
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Citas opcijas"
+
+#: templates/javascript/new_folder.js:6
+msgid "Please enter the name of the new folder:"
+msgstr "Lûdzu ievadiet jaunâs mapes nosaukumu:"
+
+#: templates/vacation/vacation.inc:64
+msgid "R_eason"
+msgstr "Iemesls"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Saòemta"
+
+#: lib/Storage.php:303
+msgid "Redirect to"
+msgstr "Pâradresçt"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Loìiskâs izteiksmes"
+
+#: lib/Storage.php:318
+msgid "Reject with reason"
+msgstr "Atteikt ar iemeslu"
+
+#: config/fields.php.dist:55
+msgid "Resent To"
+msgstr "Pârsûtîts"
+
+#: config/fields.php.dist:51
+msgid "Resent-from"
+msgstr "Pârsûtîts no"
+
+#: templates/rule/footer.inc:72
+msgid "Return to Filters List"
+msgstr "Atgriezties pie filtru saraksta"
+
+#: templates/whitelist/whitelist.inc:28 templates/blacklist/blacklist.inc:43
+#: templates/vacation/vacation.inc:75 templates/forward/forward.inc:38
+msgid "Return to Rules List"
+msgstr "Atgriezties pie likumu saraksta"
+
+#: templates/filters/header.inc:21
+msgid "Rule"
+msgstr "Likums"
+
+#: filters.php:45
+msgid "Rule Copied"
+msgstr "Likums nokopçts"
+
+#: filters.php:39
+msgid "Rule Deleted"
+msgstr "Likums izdzçsts"
+
+#: filters.php:59
+msgid "Rule Disabled"
+msgstr "Likums izslçgts"
+
+#: filters.php:64
+msgid "Rule Enabled"
+msgstr "Likums ieslçgts"
+
+#: templates/rule/header.inc:39
+msgid "Rule Name"
+msgstr "Likuma nosaukums"
+
+#: templates/whitelist/whitelist.inc:27 templates/blacklist/blacklist.inc:42
+#: templates/vacation/vacation.inc:74 templates/forward/forward.inc:37
+#: templates/rule/footer.inc:71
+msgid "Save"
+msgstr "Saglabât"
+
+#: templates/filters/settings.inc:47
+msgid "Save Settings"
+msgstr "Saglabât opcijas"
+
+#: templates/script/header.inc:3
+msgid "Script"
+msgstr "Skripts"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Skripta atjauninâðana"
+
+#: lib/Ingo.php:229
+msgid "Script not updated."
+msgstr "Skripts nav atjauninâts"
+
+#: lib/Ingo.php:136
+msgid "Script successfully activated."
+msgstr "Skripts veiksmîgi aktivçts."
+
+#: lib/Ingo.php:135
+msgid "Script successfully deactivated."
+msgstr "Skripts veiksmîgi deaktivçts."
+
+#: templates/rule/footer.inc:38
+msgid "Seen"
+msgstr "Redzçta"
+
+#: rule.php:163
+msgid "Select a field"
+msgstr "Izvçlieties lauku"
+
+#: lib/Ingo.php:50
+msgid "Select target folder"
+msgstr "izvçlçties mapi"
+
+#: rule.php:184
+msgid "Self-Defined Header"
+msgstr "Paðdefinçta galvene"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Sûtîtâjs"
+
+#: filters.php:78
+msgid "Settings successfully updated."
+msgstr "Iestatîjumi veiksmîgi atjauninâti."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Râdît aktîvos skriptus"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Râdît paðreizçjo skriptu"
+
+#: config/fields.php.dist:83
+msgid "Size"
+msgstr "Izmçrs"
+
+#: templates/rule/footer.inc:61
+msgid "Stop checking if this rule matches?"
+msgstr "Pârtraukt pârbaudi, ja ðis likums izpildâs?"
+
+#: templates/vacation/vacation.inc:55
+msgid "Subje_ct of vacation message:"
+msgstr "Brîvdienu paziòojuma temats"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Temats"
+
+#: lib/Ingo.php:131
+msgid "The driver said: "
+msgstr "Dzinis paziòoja:"
+
+#: lib/Ingo.php:130
+msgid "There was an error activating the script."
+msgstr "Kïûda aktivçjot skriptu."
+
+#: lib/Ingo.php:129
+msgid "There was an error deactivating the script."
+msgstr "Kïûda deaktivçjot skriptu."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Saòçmçjs"
+
+#: lib/Script.php:116
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Nevar ielasît %s nosacîjumus."
+
+#: filters.php:138 templates/vacation/vacation.inc:7
+#: lib/Script/procmail.php:272
+msgid "Vacation"
+msgstr "Brîvdienas"
+
+#: vacation.php:66
+msgid "Vacation Edit"
+msgstr "Labot Brîvdienu paziòojumu"
+
+#: lib/Script/sieve.php:352
+msgid "Vacation Message"
+msgstr "Brîvdienu paziòojums"
+
+#: vacation.php:16
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "Paðreizçjais filtrçðanas dzinis neatbalsta brîvdienu paziòôjumus."
+
+#: templates/whitelist/whitelist.inc:18
+msgid "Wh_itelist addresses:"
+msgstr "Baltâ saraksta adreses"
+
+#: filters.php:132 templates/whitelist/whitelist.inc:7
+msgid "Whitelist"
+msgstr "Baltais saraksts"
+
+#: whitelist.php:55
+msgid "Whitelist Edit"
+msgstr "Labot Balto sarakstu"
+
+#: whitelist.php:18
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Paðreizçjais filtrçðanas dzinis neatbalsta Balto sarakstu."
+
+#: lib/Script/procmail.php:240 lib/Script/sieve.php:299
+msgid "Whitelisted Addresses"
+msgstr "Baltâ saraksta adreses"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: vacation.php:30
+msgid ""
+"You must specify at least one email address for which the vacation messages "
+"should be activated."
+msgstr ""
+"Jânorâda vismaz viena e-pasta adrese, kurai aktivçt Brîvdienu paziòojumus."
+
+#: lib/Script/imap.php:281 lib/Script/imap.php:304 lib/Script/imap.php:318
+msgid "[No Subject]"
+msgstr "[Bez temata]"
+
+#: templates/forward/forward.inc:27
+msgid "_Address(es) to forward to:"
+msgstr "Adrese(s) pârsûtîðanai:"
+
+#: templates/vacation/vacation.inc:28
+msgid "_Addresses to not send responses to:"
+msgstr "Adreses, kurâm nesûtît atbildes:"
+
+#: lib/Ingo.php:274
+msgid "_Blacklist"
+msgstr "Melnais saraksts"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "_Delete message completely"
+msgstr "Dzçst vçstuli"
+
+#: templates/blacklist/blacklist.inc:33
+msgid "_Enter each address on a new line:"
+msgstr "Katru adresi ievadiet jaunâ rindâ:"
+
+#: lib/Ingo.php:280
+msgid "_Forward"
+msgstr "Pârsûtît"
+
+#: templates/forward/forward.inc:19
+msgid "_Keep a copy of messages in this account?"
+msgstr "Saglabât vçstuïu kopijas ðajâ kontâ?"
+
+#: templates/blacklist/blacklist.inc:24
+msgid "_Move message to folder:"
+msgstr "Pârvietot vçstules uz mapi:"
+
+#: templates/vacation/vacation.inc:18
+msgid "_My email addresses:"
+msgstr "Jûsu e-pasta adrese:"
+
+#: lib/Ingo.php:283
+msgid "_Script"
+msgstr "Skripts"
+
+#: lib/Ingo.php:277
+msgid "_Vacation"
+msgstr "Brîvdienas"
+
+#: lib/Ingo.php:271
+msgid "_Whitelist"
+msgstr "Baltais sarksts"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "un"
+
+#: filters.php:162
+msgid "field"
+msgstr "lauks"
+
+#: filters.php:162
+msgid "match"
+msgstr "atbilst"
diff --git a/ingo/po/nb_NO.po b/ingo/po/nb_NO.po
new file mode 100644 (file)
index 0000000..f848d92
--- /dev/null
@@ -0,0 +1,820 @@
+# Norwegian translations for Ingo package.
+# Copyright 2005-2009 The Horde Project
+# This file is distributed under the same license as the Ingo package.
+# Automatically generated, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo H3 (1.0)\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2005-01-11 15:38+0100\n"
+"PO-Revision-Date: 2005-01-11 15:38+0100\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: i18n@lists.horde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: filters.php:167
+msgid " and"
+msgstr "og"
+
+#: filters.php:167
+msgid " or"
+msgstr "eller"
+
+#: templates/blacklist/blacklist.inc:19
+msgid "Action for blacklisted addresses:"
+msgstr "Aksjon for svartelistede adresser:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Aktiver script"
+
+#: templates/filters/settings.inc:9
+msgid "Additional Settings"
+msgstr "Andre valg"
+
+#: templates/rule/header.inc:53
+msgid "All of the following"
+msgstr "Alle de følgende"
+
+#: templates/rule/footer.inc:44
+msgid "Answered"
+msgstr "Besvart"
+
+#: templates/rule/header.inc:56
+msgid "Any of the following"
+msgstr "Noen av de følgende"
+
+#: templates/filters/footer.inc:16
+msgid "Apply Filters"
+msgstr "Ta filter i bruk"
+
+#: filters.php:196
+msgid "Are you sure you want to delete this rule?"
+msgstr "Er du SIKKER på at du ønsker å slette denne regelen?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Automatisk oppdater scriptet etter hver forandring?"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Blind kopi"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Begynner med"
+
+#: filters.php:126 templates/blacklist/blacklist.inc:8
+msgid "Blacklist"
+msgstr "Svarteliste"
+
+#: blacklist.php:100
+msgid "Blacklist Edit"
+msgstr "Svarteliste"
+
+#: blacklist.php:17
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "Svartelisting er ikke støttet i denne filter driveren"
+
+#: lib/Script/procmail.php:209
+msgid "Blacklisted Address"
+msgstr "Svartelistet adresse"
+
+#: lib/Script/sieve.php:245
+msgid "Blacklisted Addresses"
+msgstr "Svartelistet adresser"
+
+#: config/fields.php.dist:88
+msgid "Body"
+msgstr "Meldingstekst"
+
+#: rule.php:238 filters.php:164
+msgid "Case Sensitive"
+msgstr ""
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Kopi til"
+
+#: blacklist.php:69 vacation.php:41 rule.php:105 forward.php:33
+#: whitelist.php:36
+msgid "Changes saved."
+msgstr "Endringer lagret"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Inneholder"
+
+#: filters.php:204 filters.php:205
+msgid "Copy %s"
+msgstr "Kopier %s"
+
+#: lib/Storage.php:778
+msgid "Copy of %s"
+msgstr "Kopi av %s"
+
+#: lib/Ingo.php:53
+msgid "Create new folder"
+msgstr "Opprett ny mappe"
+
+#: templates/filters/filter.html:16
+msgid "DISABLED"
+msgstr "Deaktivert"
+
+#: lib/Script/procmail.php:354
+msgid "DISABLED: "
+msgstr "Deaktivert: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Deaktiver script"
+
+#: filters.php:196 filters.php:197
+msgid "Delete %s"
+msgstr "Slett %s"
+
+#: templates/rule/filter.inc:30
+msgid "Delete Condition"
+msgstr "Fjern regel"
+
+#: lib/Storage.php:298
+msgid "Delete message completely"
+msgstr "Slett melding helt"
+
+#: templates/rule/footer.inc:47
+msgid "Deleted"
+msgstr "Slettet"
+
+#: lib/Storage.php:286
+msgid "Deliver into my INBOX"
+msgstr "Lever til min Innboks"
+
+#: lib/Storage.php:312
+msgid "Deliver into my INBOX and copy to"
+msgstr "Lever til min Innboks og kopier til"
+
+#: lib/Storage.php:307
+msgid "Deliver into my INBOX and redirect to"
+msgstr "Lever til min Innboks og rederiger til"
+
+#: lib/Storage.php:292
+msgid "Deliver to folder"
+msgstr "Lever til mappe"
+
+#: filters.php:218 filters.php:219
+msgid "Disable %s"
+msgstr "Deaktiver %s"
+
+#: templates/blacklist/blacklist.inc:10 templates/vacation/vacation.inc:9
+#: templates/whitelist/whitelist.inc:9 templates/forward/forward.inc:9
+#: templates/rule/header.inc:30
+msgid "Disabled"
+msgstr "Deaktivert"
+
+#: templates/filters/settings.inc:21
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Vis detaljert melding når hvert filter blir tatt i bruk?"
+
+#: templates/vacation/vacation.inc:38
+msgid "Do _not send responses to bulk or list messages"
+msgstr "Ikke send respons til bulk eller liste meldinger"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Gjør dette:"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "Som ikke begynner med"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Som ikke inneholder"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "Som ikke slutter med"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "Eksisterer ikke"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr ""
+
+#: templates/filters/header.inc:20
+msgid "Edit"
+msgstr "Rediger"
+
+#: filters.php:185 filters.php:187 filters.php:191 filters.php:192
+msgid "Edit %s"
+msgstr "Rediger %s"
+
+#: filters.php:222 filters.php:223
+msgid "Enable %s"
+msgstr "Aktiver %s"
+
+#: templates/filters/header.inc:22
+msgid "Enabled"
+msgstr "Aktivert"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "Slutter med"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "Lik som"
+
+msgid "Existing Rules"
+msgstr "Eksisterende regler"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Eksisterer"
+
+#: templates/filters/settings.inc:30
+msgid "Filter All Messages"
+msgstr "Filtrer alle meldinger"
+
+#: templates/filters/settings.inc:32
+msgid "Filter Only Seen Messages"
+msgstr "Filtrer bare leste meldinger"
+
+#: templates/filters/settings.inc:31
+msgid "Filter Only Unseen Messages"
+msgstr "Filtrer bare uleste meldinger"
+
+#: templates/filters/settings.inc:28
+msgid "Filter Options"
+msgstr "Filter valg"
+
+#: templates/rule/header.inc:28
+msgid "Filter Rule"
+msgstr "Filterregler"
+
+#: filters.php:92
+msgid "Filter Rules"
+msgstr "Filterregler"
+
+#: script.php:52
+msgid "Filter Script Display"
+msgstr "Filter script visning"
+
+#: lib/Ingo.php:269
+msgid "Filter _Rules"
+msgstr "Filterregler"
+
+#: lib/Script/imap.php:321
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr ""
+"Filtrering: Meldingen \"%s\" fra \"%s\" har blitt flyttet til mappen \"%s\"."
+
+#: lib/Script/imap.php:308
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Filtreromg: %s melding(en) ble slettet."
+
+#: lib/Script/imap.php:286
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr ""
+"Filtrering: Meldingen \"%s\" fra \"%s\" har blitt flyttet til mappen \"%s\"."
+
+#: lib/Script/imap.php:189
+#, fuzzy, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr "Filtrering: Meldingen \"%s\" fra \"%s\" har blitt slettet."
+
+#: lib/Script/imap.php:318
+#, fuzzy, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Filtrering: Meldingen \"%s\" fra \"%s\" har blitt flyttet til mappen \"%s\"."
+
+#: lib/Script/imap.php:303
+#, fuzzy, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Filtrering: Meldingen \"%s\" fra \"%s\" har blitt slettet."
+
+#: lib/Script/imap.php:280
+#, fuzzy, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Filtrering: Meldingen \"%s\" fra \"%s\" har blitt flyttet til mappen \"%s\"."
+
+#: rule.php:133
+msgid "Filter not found."
+msgstr "Filter ikke funnet"
+
+#: templates/rule/header.inc:48
+msgid "For an incoming message that matches:"
+msgstr "For en innkommende melding som passer:"
+
+#: filters.php:144 templates/forward/forward.inc:7
+msgid "Forward"
+msgstr "Videresend"
+
+#: forward.php:16
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Videresend er ikke støttet i valgt filter driver"
+
+#: lib/Script/procmail.php:296
+msgid "Forwards"
+msgstr "Videresendinger"
+
+#: forward.php:46
+msgid "Forwards Edit"
+msgstr "Videresendings valg"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Fra"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Større enn"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Større enn eller lik som"
+
+#: templates/rule/footer.inc:41
+msgid "Important"
+msgstr "Viktig"
+
+#: rule.php:26
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/sieve.php:1783
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Ikke eksisterende mailboks spesifisert for meldings levering"
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "Er"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "Er ikke"
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Mindre enn"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Mindre enn eller lik som"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "Liste-ID"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "Mar_k message as deleted"
+msgstr "Marker melding som slettet"
+
+#: templates/rule/footer.inc:33
+msgid "Mark message as:"
+msgstr "Marker melding som:"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr ""
+
+#: lib/Storage.php:486
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+
+#: lib/Storage.php:541
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+
+#: lib/Script/sieve.php:1646
+msgid "Missing address to redirect message to"
+msgstr ""
+
+#: lib/Script/sieve.php:1680
+msgid "Missing reason for reject"
+msgstr ""
+
+#: lib/Script/sieve.php:1850
+msgid "Missing reason in vacation."
+msgstr ""
+
+#: templates/filters/header.inc:23
+msgid "Move"
+msgstr "Flytt"
+
+#: filters.php:109 filters.php:215
+msgid "Move Rule Down"
+msgstr "Flytt regel ned"
+
+#: filters.php:110 filters.php:214
+msgid "Move Rule Up"
+msgstr "Flytt regel opp"
+
+#: templates/vacation/vacation.inc:46
+msgid "N_umber of days between vacation replies:"
+msgstr "Antall dager mellom svar på feriemelding"
+
+#: templates/filters/filter-none.inc:4 templates/filters/footer.inc:13
+#: lib/Storage.php:729
+msgid "New Rule"
+msgstr "Ny regel"
+
+#: lib/Ingo.php:204 lib/Ingo.php:206
+msgid "No '%s' element found in backend configuration."
+msgstr "Ingen '%s' elementer funnet i oppsettet"
+
+#: lib/Ingo.php:202
+msgid "No backend configured for this host"
+msgstr "Ingen backend konfigurert for denne hosten"
+
+#: lib/Ingo.php:179
+msgid "No backends configured in backends.php"
+msgstr ""
+
+#: templates/filters/filter-none.inc:4
+msgid "No filters. Click '%s' to create a new filter."
+msgstr "Ingen filter. Klikk '%s' for å lage ett nytt filter."
+
+#: lib/Script/sieve.php:1233 lib/Script/sieve.php:1333
+#: lib/Script/sieve.php:1515
+msgid "No headers specified"
+msgstr "Ingen header spesifisert"
+
+#: script.php:67
+msgid "No script generated."
+msgstr "Ingen script generert"
+
+#: lib/Script/sieve.php:1530
+msgid "No strings specified"
+msgstr "Ingen strenger spesifisert"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Ikke lik som"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr ""
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Andre valg"
+
+#: templates/javascript/new_folder.js:6
+msgid "Please enter the name of the new folder:"
+msgstr "Vennligst skriv inn navnet p den nye mappen:"
+
+#: templates/vacation/vacation.inc:64
+msgid "R_eason"
+msgstr "Grunn"
+
+#: config/fields.php.dist:63
+#, fuzzy
+msgid "Received"
+msgstr "Mottatt:"
+
+#: lib/Storage.php:303
+#, fuzzy
+msgid "Redirect to"
+msgstr "Omadressr"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Vanlig utrykk"
+
+#: lib/Storage.php:318
+msgid "Reject with reason"
+msgstr "Ikke motta med grunn"
+
+#: config/fields.php.dist:55
+#, fuzzy
+msgid "Resent To"
+msgstr ""
+"#-#-#-#-#  compendium.po (Turba 1.2)  #-#-#-#-#\n"
+"Nullstill\n"
+"#-#-#-#-#  nb_NO.po (Kronolith 1.1)  #-#-#-#-#\n"
+"Tm"
+
+#: config/fields.php.dist:51
+#, fuzzy
+msgid "Resent-from"
+msgstr ""
+"#-#-#-#-#  compendium.po (Turba 1.2)  #-#-#-#-#\n"
+"Nullstill\n"
+"#-#-#-#-#  nb_NO.po (Kronolith 1.1)  #-#-#-#-#\n"
+"Tm"
+
+#: templates/rule/footer.inc:72
+msgid "Return to Filters List"
+msgstr "Tilbake til Filter liste"
+
+#: templates/blacklist/blacklist.inc:43 templates/vacation/vacation.inc:75
+#: templates/whitelist/whitelist.inc:28 templates/forward/forward.inc:38
+msgid "Return to Rules List"
+msgstr "Tilbake til Regel liste"
+
+#: templates/filters/header.inc:21
+msgid "Rule"
+msgstr "Regel"
+
+#: filters.php:45
+msgid "Rule Copied"
+msgstr "Regel kopiert"
+
+#: filters.php:39
+msgid "Rule Deleted"
+msgstr "Regel slettet"
+
+#: filters.php:59
+msgid "Rule Disabled"
+msgstr "Regel deaktivert"
+
+#: filters.php:64
+msgid "Rule Enabled"
+msgstr "Regel aktivert"
+
+#: templates/rule/header.inc:39
+msgid "Rule Name"
+msgstr "Regel navn"
+
+#: templates/blacklist/blacklist.inc:42 templates/vacation/vacation.inc:74
+#: templates/whitelist/whitelist.inc:27 templates/forward/forward.inc:37
+#: templates/rule/footer.inc:71
+msgid "Save"
+msgstr "Lagre"
+
+#: templates/filters/settings.inc:47
+msgid "Save Settings"
+msgstr "Lagre instillinger"
+
+#: templates/script/header.inc:3
+msgid "Script"
+msgstr "Script"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Script oppdatering"
+
+#: lib/Ingo.php:229
+msgid "Script not updated."
+msgstr "Script ikke oppdatert"
+
+#: lib/Ingo.php:136
+msgid "Script successfully activated."
+msgstr "Script aktivert"
+
+#: lib/Ingo.php:135
+#, fuzzy
+msgid "Script successfully deactivated."
+msgstr "Mappen \"%s\" ble slettet."
+
+#: templates/rule/footer.inc:38
+msgid "Seen"
+msgstr "Lest"
+
+#: rule.php:163
+msgid "Select a field"
+msgstr "Velg ett felt"
+
+#: lib/Ingo.php:50
+msgid "Select target folder"
+msgstr "velg mappe"
+
+#: rule.php:184
+msgid "Self-Defined Header"
+msgstr ""
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Sender"
+
+#: filters.php:78
+#, fuzzy
+msgid "Settings successfully updated."
+msgstr "Mappen \"%s\" ble opprettet."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr ""
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Vis script som er i bruk"
+
+#: config/fields.php.dist:83
+msgid "Size"
+msgstr "Størrelse"
+
+#: templates/rule/footer.inc:61
+msgid "Stop checking if this rule matches?"
+msgstr "Stopp sjekk dersom denne regelen stemmer?"
+
+#: templates/vacation/vacation.inc:55
+msgid "Subje_ct of vacation message:"
+msgstr ""
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Emne"
+
+#: lib/Ingo.php:131
+msgid "The driver said: "
+msgstr ""
+
+#: lib/Ingo.php:130
+#, fuzzy
+msgid "There was an error activating the script."
+msgstr ""
+"#-#-#-#-#  compendium.po (Turba 1.2)  #-#-#-#-#\n"
+"Det oppstod en feil ved import av dataene.\n"
+"#-#-#-#-#  nb_NO.po (Kronolith 1.1)  #-#-#-#-#\n"
+"Det skjedde en feil ved import av data."
+
+#: lib/Ingo.php:129
+#, fuzzy
+msgid "There was an error deactivating the script."
+msgstr ""
+"#-#-#-#-#  compendium.po (Turba 1.2)  #-#-#-#-#\n"
+"Det oppstod en feil ved import av dataene.\n"
+"#-#-#-#-#  nb_NO.po (Kronolith 1.1)  #-#-#-#-#\n"
+"Det skjedde en feil ved import av data."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Til"
+
+#: lib/Script.php:116
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Kan ikke laste detfinisjonen av %s."
+
+#: filters.php:138 templates/vacation/vacation.inc:7
+#: lib/Script/procmail.php:272
+#, fuzzy
+msgid "Vacation"
+msgstr "Plassering"
+
+#: vacation.php:66
+#, fuzzy
+msgid "Vacation Edit"
+msgstr "Plassering"
+
+#: lib/Script/sieve.php:352
+#, fuzzy
+msgid "Vacation Message"
+msgstr "Neste melding"
+
+#: vacation.php:16
+msgid "Vacation is not supported in the current filtering driver."
+msgstr ""
+
+#: templates/whitelist/whitelist.inc:18
+msgid "Wh_itelist addresses:"
+msgstr "Hvitlistete adresser:"
+
+#: filters.php:132 templates/whitelist/whitelist.inc:7
+msgid "Whitelist"
+msgstr "Hvitlistet"
+
+#: whitelist.php:55
+#, fuzzy
+msgid "Whitelist Edit"
+msgstr "Hvitlistet"
+
+#: whitelist.php:18
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/procmail.php:240 lib/Script/sieve.php:299
+#, fuzzy
+msgid "Whitelisted Addresses"
+msgstr "Velg adressebker:"
+
+#: config/fields.php.dist:79
+#, fuzzy
+msgid "X-Priority"
+msgstr "Prioritet"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr ""
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr ""
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr ""
+
+#: vacation.php:30
+msgid ""
+"You must specify at least one email address for which the vacation messages "
+"should be activated."
+msgstr ""
+
+#: lib/Script/imap.php:281 lib/Script/imap.php:304 lib/Script/imap.php:318
+msgid "[No Subject]"
+msgstr "[Intet emne]"
+
+#: templates/forward/forward.inc:27
+msgid "_Address(es) to forward to:"
+msgstr ""
+
+#: templates/vacation/vacation.inc:28
+msgid "_Addresses to not send responses to:"
+msgstr ""
+
+#: lib/Ingo.php:274
+msgid "_Blacklist"
+msgstr "Svartelist avsender"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "_Delete message completely"
+msgstr "Slett melding helt"
+
+#: templates/blacklist/blacklist.inc:33
+msgid "_Enter each address on a new line:"
+msgstr "Skriv inn hver adresse på en ny linje:"
+
+#: lib/Ingo.php:280
+#, fuzzy
+msgid "_Forward"
+msgstr "Videresend"
+
+#: templates/forward/forward.inc:19
+#, fuzzy
+msgid "_Keep a copy of messages in this account?"
+msgstr "Det er ingen meldinger i denne postboksen."
+
+#: templates/blacklist/blacklist.inc:24
+msgid "_Move message to folder:"
+msgstr "Flytt melding til mappe:"
+
+#: templates/vacation/vacation.inc:18
+#, fuzzy
+msgid "_My email addresses:"
+msgstr ""
+"#-#-#-#-#  compendium.po (Turba 1.2)  #-#-#-#-#\n"
+"E-postadresse\n"
+"#-#-#-#-#  nb_NO.po (Kronolith 1.1)  #-#-#-#-#\n"
+"E-post adresse"
+
+#: lib/Ingo.php:283
+#, fuzzy
+msgid "_Script"
+msgstr "Emne"
+
+#: lib/Ingo.php:277
+#, fuzzy
+msgid "_Vacation"
+msgstr "Plassering"
+
+#: lib/Ingo.php:271
+msgid "_Whitelist"
+msgstr "Hvitlist avsender"
+
+#: templates/rule/filter.inc:4
+#, fuzzy
+msgid "and"
+msgstr "Kalender"
+
+#: filters.php:162
+#, fuzzy
+msgid "field"
+msgstr "Felt"
+
+#: filters.php:162
+#, fuzzy
+msgid "match"
+msgstr "til"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "eller"
+
+#: lib/Script/procmail.php:126
+msgid "procmail script generated by Ingo"
+msgstr ""
+
+#: lib/Script/sieve.php:111
+msgid "sieve filter generated by Ingo"
+msgstr ""
diff --git a/ingo/po/nl_NL.po b/ingo/po/nl_NL.po
new file mode 100644 (file)
index 0000000..7bc5a37
--- /dev/null
@@ -0,0 +1,1045 @@
+# Dutch translations for Ingo package
+# Copyright 2003: Ruben van der Steenhoven, Webmeesters
+# Ruben van der Steenhoven <ingoxlate@webmeesters.net>, 2003
+# Jan Kuipers <jrkuipers@lauwerscollege.nl>, 2004-2007
+# This file is distributed under the same license as the Ingo package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo H3 (1.2-cvs)\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2007-11-21 19:43+0100\n"
+"PO-Revision-Date: 2007-11-21 23:17+0100\n"
+"Last-Translator: Jan Kuipers <jrkuipers@lauwerscollege.nl>\n"
+"Language-Team: i18n@lists.horde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: filters.php:223
+msgid " and"
+msgstr " en"
+
+#: filters.php:223
+msgid " or"
+msgstr " of"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Bewerking voor zwarte lijst adressen:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Script activeren"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "Aktiveren van het script voor \"%s\" mislukt: (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Extra instellingen"
+
+#: forward.php:43
+msgid "Address(es) to forward to:"
+msgstr "Adressen waarnaar moet worden doorgestuurd:"
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr "Adressen waar geen antwoord naar gestuurd moet worden:"
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr "Geavanceerde instellingen"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Ieder van de volgende"
+
+#: lib/api.php:54
+msgid "Allow Rules"
+msgstr "Regels toestaan"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Beantwoord"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Een van de volgende"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Filters toepassen"
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr "Weet u zeker dat u deze regel wilt verwijderen?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Het script na iedere verandering automatisch bijwerken?"
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr "Basis instellingen"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Bcc"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Begint met"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Verbinding mislukt: (%s) %s"
+
+#: filters.php:174 lib/Block/overview.php:95 lib/Block/overview.php:98
+#: templates/blacklist/blacklist.inc:7
+msgid "Blacklist"
+msgstr "Zwarte lijst"
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr "Zwarte lijst bewerken"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr ""
+"Zwarte lijst wordt niet ondersteund in het huidige filterstuurprogramma."
+
+#: lib/Script/maildrop.php:197 lib/Script/sieve.php:269
+#: lib/Script/procmail.php:209
+msgid "Blacklisted Addresses"
+msgstr "Zwarte lijst adressen"
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "Body"
+
+#: filters.php:220 rule.php:322
+msgid "Case Sensitive"
+msgstr "Hoofdlettergevoelig"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: blacklist.php:70 vacation.php:81 rule.php:141 forward.php:56 spam.php:90
+#: whitelist.php:38
+msgid "Changes saved."
+msgstr "Veranderingen opgeslagen"
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Verbinding mislukt"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Bevat"
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr "%s kopiëren"
+
+#: lib/Storage.php:992 lib/Storage/sql.php:618
+#, php-format
+msgid "Copy of %s"
+msgstr "Kopie van %s"
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "Kon het gecompileerde sjabloonbestand %s niet opslaan."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Nieuwe map maken"
+
+#: lib/Script/maildrop.php:362 lib/Script/procmail.php:342
+msgid "DISABLED: "
+msgstr "Uitgeschakeld: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Script deactiveren"
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr "Verwijder %s"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "Voorwaarde voor verwijderen"
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "Bericht volledig wissen"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Verwijderd"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "In mijn INBOX afleveren"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr "Afleveren in mijn INBOX en kopiëren naar"
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Afleveren in mijn INBOX en verdersturen naar"
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "Afleveren in map"
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "Bestemming (Aan,Cc,Bcc,enz.)"
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr "%s uitschakelen"
+
+#: vacation.php:159 forward.php:99 spam.php:149 templates/rule/header.inc:26
+#: templates/blacklist/blacklist.inc:10 templates/whitelist/whitelist.inc:10
+msgid "Disabled"
+msgstr "Uitgeschakeld"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Weergeven van bericht wanneer filters zijn toegepast?"
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr "Geen antwoorden versturen naar bulk- of mailinglistberichten?"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Doe dit:"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "Begint niet met"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Bevat niet"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "Eindigt niet met"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "Bestaat niet"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "Komt niet overeen (met placeholders)"
+
+#: lib/Block/overview.php:63 lib/Block/overview.php:72
+#: lib/Block/overview.php:87 lib/Block/overview.php:97
+#: lib/Block/overview.php:107 templates/filters/header.inc:26
+msgid "Edit"
+msgstr "Bewerken"
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr "%s bewerken"
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr "Activeer %s"
+
+#: templates/filters/header.inc:28
+msgid "Enabled"
+msgstr "Geactiveerd"
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr "Einde van vakantie:"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "Eindigt met"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "Gelijk aan"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Fout bij ophalen van het huidige script: (%d) %s"
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr "Fout bij opslaan van wijzigingen."
+
+#: templates/filters/header.inc:20
+msgid "Existing Rules"
+msgstr "Bestaande regels"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Bestaat"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "Verwachtte 1 object, ontvangen %d."
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr "Lezen van socket mislukt: "
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr "Schrijven naar socket mislukt: "
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "Schrijven naar socket mislukt: (verbinding verbroken!)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "veld"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Filter alle berichten"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Filter alleen geopende berichten"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Filter alleen ongeopende berichten"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Filteropties"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Filterregel"
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr "Filterregels"
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr "Filterscriptweergave"
+
+#: lib/Ingo.php:379
+msgid "Filter _Rules"
+msgstr "Filter_regels"
+
+#: lib/Script/imap.php:348
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Filterbewerking: %s bericht(en) zijn gekopieerd naar map \"%s\"."
+
+#: lib/Script/imap.php:334
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Filterbewerking: %s bericht(en) zijn verwijderd."
+
+#: lib/Script/imap.php:312
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Filterbewerking: %s bericht(en) zijn verplaatst naar map \"%s\"."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Filterbewerking: %s bericht(en), die op de zwarte lijst stonden, zijn "
+"verwijderd."
+
+#: lib/Script/imap.php:345
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Filterbewerking: Het bericht \"%s\" van \"%s\" is naar de map \"%s\" "
+"gekopieerd."
+
+#: lib/Script/imap.php:329
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Filterbewerking: Het bericht \"%s\" van \"%s\" is verwijderd."
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Filterbewerking: Het bericht \"%s\" van \"%s\" is naar de map \"%s\" "
+"verplaatst."
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr "Filter niet gevonden."
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "Gemarkeerd voor opvolging"
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr "Map voor ontvangen van spam:"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Voor een inkomend berichten dat voldoet aan:"
+
+#: filters.php:192 forward.php:97 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Doorsturen"
+
+#: lib/Script/sieve.php:222
+msgid "Forward Keep Action"
+msgstr "Doorsturen bewaren bewerking"
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Doorsturen wordt niet ondersteund in het huidige filterstuurprogramma."
+
+#: lib/Script/maildrop.php:246 lib/Script/sieve.php:232
+#: lib/Script/procmail.php:288
+msgid "Forwards"
+msgstr "Doorsturen"
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr "Doorsturen bewerken"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Van"
+
+#: lib/Script/sieve.php:2933
+msgid "From:"
+msgstr "Van:"
+
+#: lib/Script/sieve.php:118
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Gegenereerd door Ingo (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Groter dan"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Groter dan of gelijk aan"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr ""
+"Individuele regels worden niet ondersteund in het huidige "
+"filterstuurprogramma."
+
+#: lib/Script/sieve.php:2527
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Niet bestaande mailbox opgegeven voor berichtaflevering."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "Is"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "Is niet"
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr "Bewaar een kopie van berichten in dit account?"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"LDAP ondersteuning is vereist, maar de LDAP module is niet beschikbaar of "
+"niet geladen."
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Minder dan"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Minder dan of gelijk aan"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "List-ID"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "Bericht als gewist mar_keren"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Bericht markeren als:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "Overeenkomend type"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "Komt overeen (met placeholders)"
+
+#: lib/api.php:57
+msgid "Maximum Number of Rules"
+msgstr "Maximum aantal regels."
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Maximum aantal zwarte lijst adressen overschreden (Totaal aantal adressen: %"
+"s, maximum aantal adressen: %s). Kon geen nieuwe adressen aan de zwarte "
+"lijst toevoegen."
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Maximum aantal witte lijst adressen overschreden (Totaal aantal adressen: %"
+"s, maximum aantal adressen: %s). Kon geen nieuwe adressen aan de witte lijst "
+"toevoegen."
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+"Berichten met een waarschijnlijke spamscore groter dan, of gelijk aan dit "
+"getal zullen als spam worden behandeld."
+
+#: lib/Script/sieve.php:2947
+msgid "Missing address to notify"
+msgstr "Het adres, waar de notificatie heen moet worden gezonden, ontbreekt"
+
+#: lib/Script/sieve.php:2328
+msgid "Missing address to redirect message to"
+msgstr "Het adres, waar dit bericht heen moet worden doorgezonden, ontbreekt"
+
+#: lib/Script/sieve.php:2374
+msgid "Missing reason for reject"
+msgstr "De reden voor afwijzing ontbreekt"
+
+#: lib/Script/sieve.php:2677
+msgid "Missing reason in vacation."
+msgstr "De reden voor het afwezigheidbericht werd niet opgegeven"
+
+#: templates/filters/header.inc:32
+msgid "Move"
+msgstr "Verplaatsen"
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr "Regel naar beneden verschuiven"
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr "Regel naar boven verschuiven"
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr "Mijn e-mailadressen:"
+
+#: lib/Storage.php:888 templates/filters/filter-none.inc:3
+#: templates/filters/footer.inc:6
+msgid "New Rule"
+msgstr "Nieuwe Regel"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "Geen \"%s\" element in de backendconfiguratie gevonden."
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr "Geen Backendconfiguratie voor deze Host opgegeven"
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr "Geen backends geconfigureerd in backends.php"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Geen filters. Klik op \"%s\", om een nieuw filter te maken."
+
+#: lib/Script/sieve.php:1685 lib/Script/sieve.php:1834
+#: lib/Script/sieve.php:2050
+msgid "No headers specified"
+msgstr "Geen headers opgegeven"
+
+#: script.php:69
+msgid "No script generated."
+msgstr "Script niet gemaakt."
+
+#: lib/Script/sieve.php:2066 lib/Script/sieve.php:2150
+msgid "No strings specified"
+msgstr "Geen tekst opgegeven"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Niet gelijk aan"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr "Notificatie e-mailadres"
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr "Aantal dagen tussen afwezigheidsantwoorden:"
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr "Alleen het bericht markeren"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Opties mbt scripts bijwerken."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Andere opties"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Overzicht"
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr "Deelnemer (Van,Aan,enz.)"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Geef de naam van de nieuwe map, a.u.b.:"
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr "Reden:"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Ontvangen (Received)"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Verder sturen naar"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Reguliere expressie"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr "Afwijzen met reden"
+
+#: config/fields.php.dist:51
+msgid "Resent-From"
+msgstr "Opnieuw verzonden door (Resent-from)"
+
+#: config/fields.php.dist:55
+msgid "Resent-To"
+msgstr "Opnieuw verzonden aan (Resent to)"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "Terug naar filterlijst"
+
+#: vacation.php:34 vacation.php:117 forward.php:34 forward.php:88 spam.php:62
+#: spam.php:130 templates/blacklist/blacklist.inc:42
+#: templates/whitelist/whitelist.inc:24
+msgid "Return to Rules List"
+msgstr "Terug naar regellijst"
+
+#: templates/filters/header.inc:27
+msgid "Rule"
+msgstr "Regel"
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr "Regel gecopieerd"
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr "Regel gewist"
+
+#: filters.php:94 vacation.php:97 forward.php:72 spam.php:106
+msgid "Rule Disabled"
+msgstr "Regel uitgeschakeld"
+
+#: filters.php:99 vacation.php:88 forward.php:63 spam.php:97
+msgid "Rule Enabled"
+msgstr "Regel ingeschakeld"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "Regelnaam:"
+
+#: lib/Script/sieve.php:2935
+msgid "Rule:"
+msgstr "Regel:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "STARTTLS mislukt: (%s) %s"
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "S_pam"
+
+#: vacation.php:62 forward.php:45 spam.php:79 templates/rule/footer.inc:60
+#: templates/blacklist/blacklist.inc:41 templates/whitelist/whitelist.inc:23
+msgid "Save"
+msgstr "Opslaan"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Instellingen opslaan"
+
+#: vacation.php:91 vacation.php:113 forward.php:66 forward.php:84 spam.php:100
+#: spam.php:126
+msgid "Save and Disable"
+msgstr "Opslaan en uitschakelen"
+
+#: vacation.php:82 vacation.php:115 forward.php:57 forward.php:86 spam.php:91
+#: spam.php:128
+msgid "Save and Enable"
+msgstr "Opslaan en inschakelen"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Script"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Script-bijwerken"
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr "Script niet bijgewerkt."
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr "Script succesvol geactiveerd."
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr "Script succesvol gedeactiveerd."
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Gezien"
+
+#: rule.php:218
+msgid "Select a field"
+msgstr "Selecteer een veld"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Selecteer regelset voor weergave:"
+
+#: rule.php:347 lib/Ingo.php:59 templates/blacklist/blacklist.inc:23
+msgid "Select target folder"
+msgstr "Doelmap selecteren"
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr "Zelf gedefinieerde header"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Afzender (Sender)"
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr "Instellingen met succes bijgewerkt."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Actief script weergeven"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Huidig script weergeven"
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr ""
+"Eenvoudige spamfiltering wordt niet ondersteund door het huidige filter "
+"stuurprogramma."
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "Grootte"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr "Bron (Van,Antwoord-aan,enz.)"
+
+#: filters.php:198 lib/Script/maildrop.php:301 lib/Script/sieve.php:431
+#: lib/Block/overview.php:105 lib/Block/overview.php:108
+msgid "Spam Filter"
+msgstr "Spamfilter"
+
+#: spam.php:147 spam.php:154
+msgid "Spam Filtering"
+msgstr "Spamfiltering"
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr "Spamlevel:"
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr "Begin van vakantie:"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "Geen verdere controles uitvoeren als deze regel van toepassing is?"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Onderwerp"
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr "Onderwerp van het vakantiebericht:"
+
+#: lib/Script/sieve.php:2934
+msgid "Subject:"
+msgstr "Onderwerp:"
+
+#: lib/api.php:89
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "Het adres \"%s\" is aan uw zwarte lijst toegevoegd."
+
+#: lib/api.php:112
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "Het adres \"%s\" is aan uw witte list toegevoegd."
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "Het stuurprogramma meldt: "
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr "Er was een fout bij het activeren van het script."
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr "Er was een fout bij het deactiveren van het script."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Aan"
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr "Aan:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Niet in staat om de definitie van %s te laden."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "Gebruiker kop"
+
+#: filters.php:186 vacation.php:157 lib/Script/maildrop.php:276
+#: lib/Script/sieve.php:405 lib/Script/procmail.php:268
+#: lib/Block/overview.php:61 lib/Block/overview.php:64
+msgid "Vacation"
+msgstr "Afwezigheid"
+
+#: vacation.php:164
+msgid "Vacation Edit"
+msgstr "Afwezigheid bewerken"
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "Vakantie wordt niet ondersteund in het huidige filterstuurprogramma."
+
+#: rule.php:353
+msgid "Value"
+msgstr "Waarde"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "W_itte lijst adressen"
+
+#: filters.php:180 lib/Block/overview.php:85 lib/Block/overview.php:88
+#: templates/whitelist/whitelist.inc:8
+msgid "Whitelist"
+msgstr "Witte lijst"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "Witte lijst bewerken"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr ""
+"Witte lijst wordt niet ondersteund in het huidige filterstuurprogramma."
+
+#: lib/Script/maildrop.php:224 lib/Script/sieve.php:329
+#: lib/Script/procmail.php:236
+msgid "Whitelisted Addresses"
+msgstr "Witte lijst adressen"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: filters.php:71 rule.php:172
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "U mag niet meer dan %d regels aanmaken."
+
+#: filters.php:63 rule.php:23
+msgid "You are not allowed to create or edit custom rules."
+msgstr "U mag geen regels aanmaken of aangepaste regels bewerken."
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr ""
+"U kunt geen lege voorwaarden maken. Vul een waarde voor \"%s\" in, a.u.b."
+
+#: filters.php:52 rule.php:151
+msgid "You do not have permission to delete filter rules."
+msgstr "U heeft geen recht om filterregels te verwijderen."
+
+#: filters.php:45 filters.php:112 filters.php:123 rule.php:58 rule.php:165
+msgid "You do not have permission to edit filter rules."
+msgstr "U heeft geen recht om filterregels te bewerken."
+
+#: lib/Script/sieve.php:2932
+msgid "You have received a new message"
+msgstr "U heeft een nieuw bericht ontvangen"
+
+#: lib/Script/imap.php:307 lib/Script/imap.php:330 lib/Script/imap.php:345
+msgid "[No Subject]"
+msgstr "[Geen onderwerp]"
+
+#: lib/Ingo.php:384
+msgid "_Blacklist"
+msgstr "Z_warte lijst"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "Bericht volledig _wissen"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "Plaats _ieder adres op een nieuwe regel"
+
+#: lib/Ingo.php:390
+msgid "_Forward"
+msgstr "_Doorsturen"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "Bericht naar deze map _verplaatsen:"
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "_Rechten"
+
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr "_Script"
+
+#: lib/Ingo.php:387
+msgid "_Vacation"
+msgstr "_Vakantie"
+
+#: lib/Ingo.php:381
+msgid "_Whitelist"
+msgstr "Witte li_jst"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "aktief"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "en"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "uitgeschakeld - klik om in te schakelen"
+
+#: filters.php:218
+msgid "field"
+msgstr "veld"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "inaktief"
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr "maildropscript gegenereerd door Ingo"
+
+#: filters.php:218
+msgid "match"
+msgstr "overeenkomend met"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "of"
+
+#: lib/Script/procmail.php:130
+msgid "procmail script generated by Ingo"
+msgstr "procmailscript gegenereerd door Ingo"
diff --git a/ingo/po/pl_PL.po b/ingo/po/pl_PL.po
new file mode 100644 (file)
index 0000000..3f610b3
--- /dev/null
@@ -0,0 +1,1043 @@
+# Polish translations for Ingo package
+# Polskie tlumaczenia dla pakietu Ingo.
+# Copyright 2007-2009 The Horde Project
+# This file is distributed under the same license as the Ingo package.
+# Automatically generated, 2007.
+# Mariusz Zynel <mariusz@math.uwb.edu.pl>, 2001.
+# Piotr Roszatycki <dexter@debian.org>, 2001.
+# Krzysztof Kozlowski <kozik1@o2.pl>, 2005.
+# Piotr Adamcio <adamcios@o2.pl>, 2007
+# Tadeusz Lesiecki <lesiecki@tmtsystem.pl>, 2007.
+# Piotr Tarnowski <drfugazi@drfugazi.eu.org>, 2007.
+# 
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo H3 (1.2-cvs)\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2007-06-21 13:16+0200\n"
+"PO-Revision-Date: 2007-03-31 09:57+0200\n"
+"Last-Translator: Automatically generated\n"
+"Language-Team: i18n@lists.horde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1 ? 0 : n%10>=2 && n%10<=4 && (n%100<10 "
+"|| n%100>=20) ? 1 : 2);\n"
+
+#: filters.php:221
+msgid " and"
+msgstr " i"
+
+#: filters.php:221
+msgid " or"
+msgstr " lub"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Czynno¶ci dla adresów z czarnej listy:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Aktywuj skrypty"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "Aktywowanie skryptów dla \"%s\" nie powiod³o siê: (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Ustawienia dodatkowe"
+
+#: forward.php:41
+msgid "Address(es) to forward to:"
+msgstr "Adres(y) na które przekazaæ:"
+
+#: vacation.php:54
+msgid "Addresses to not send responses to:"
+msgstr "Adresy na które nie wysy³aæ odpowiedzi:"
+
+#: vacation.php:48
+msgid "Advanced Settings"
+msgstr "Ustawienia zaawansowane"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Wszystkie nastêpuj±ce"
+
+#: lib/api.php:54
+msgid "Allow Rules"
+msgstr "Dopu¶æ regu³y"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Odpowiedzian±"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Dowolny z nastêpuj±cych"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Zastosuj filtry"
+
+#: filters.php:250
+msgid "Are you sure you want to delete this rule?"
+msgstr "Czy na pewno chcesz skasowaæ t± regu³ê?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Aktualizowaæ skrypt automatycznie po ka¿dej zmianie?"
+
+#: vacation.php:39
+msgid "Basic Settings"
+msgstr "Ustawienia podstawowe"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "UDW"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Rozpoczyna siê na"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Powi±zanie nie powiod³o siê: (%s) %s"
+
+#: filters.php:172 lib/Block/overview.php:95 lib/Block/overview.php:98
+#: templates/blacklist/blacklist.inc:7
+msgid "Blacklist"
+msgstr "Czarna lista"
+
+#: blacklist.php:109
+msgid "Blacklist Edit"
+msgstr "Edytuj czarn± listê"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "Czarna lista nie jest wpierana przez obecny sterownik filtrowania."
+
+#: lib/Script/procmail.php:207 lib/Script/maildrop.php:186
+#: lib/Script/sieve.php:252
+msgid "Blacklisted Addresses"
+msgstr "Adresy na czarnej li¶cie"
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "Tre¶æ"
+
+#: rule.php:300 filters.php:218
+msgid "Case Sensitive"
+msgstr "Rozró¿nianie wielko¶ci liter"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "DW"
+
+#: rule.php:130 vacation.php:79 spam.php:91 forward.php:54 whitelist.php:38
+#: blacklist.php:75
+msgid "Changes saved."
+msgstr "Zapisano zmiany."
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "B³±d po³±czenia"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Zawiera"
+
+#: filters.php:261 filters.php:262
+#, php-format
+msgid "Copy %s"
+msgstr "Kopiuj %s"
+
+#: lib/Storage.php:978 lib/Storage/sql.php:618
+#, php-format
+msgid "Copy of %s"
+msgstr "Kopia %s"
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "Nie mo¿na zapisaæ skompilowanego pliku szablonu '%s'."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Utwórz nowy folder"
+
+#: lib/Script/procmail.php:340 lib/Script/maildrop.php:317
+msgid "DISABLED: "
+msgstr "WY£¡CZONE: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Deaktywuj skrypt"
+
+#: filters.php:250 filters.php:251
+#, php-format
+msgid "Delete %s"
+msgstr "Skasuj %s"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "Warunek kasowania"
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "Ca³kowicie usuñ wiadomo¶æ"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Usuniêt±"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "Dostarcz do moich odebranych"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr "Dostarcz do moich odebranych i skopiuj do"
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Dostarcz do moich odebranych i przekieruj do"
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "Dostarcz do folderu"
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "Przeznaczenie (Do,DW,UDW,itp.)"
+
+#: filters.php:275 filters.php:276
+#, php-format
+msgid "Disable %s"
+msgstr "Wy³±cz %s"
+
+#: vacation.php:157 spam.php:150 forward.php:97
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+#: templates/rule/header.inc:26
+msgid "Disabled"
+msgstr "Wy³±czone"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr ""
+"Wy¶wietlaæ szczegó³owe powiadomienie podczas stosowania ka¿dego filtra?"
+
+#: vacation.php:56
+msgid "Do not send responses to bulk or list messages?"
+msgstr "Nie wysy³aæ odpowiedzi do wiadomo¶ci pustych lub z listy?"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Zrób to:"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "Nie zaczyna siê na"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Nie zawiera"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "Nie koñczy siê na"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "Nie istnieje"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "Nie pasuje (z zastêpnikami)"
+
+#: lib/Block/overview.php:63 lib/Block/overview.php:72
+#: lib/Block/overview.php:87 lib/Block/overview.php:97
+#: lib/Block/overview.php:107 templates/filters/header.inc:47
+msgid "Edit"
+msgstr "Edytuj"
+
+#: filters.php:239 filters.php:241 filters.php:245 filters.php:246
+#, php-format
+msgid "Edit %s"
+msgstr "Edytuj %s"
+
+#: filters.php:285 filters.php:286
+#, php-format
+msgid "Enable %s"
+msgstr "W³±cz %s"
+
+#: templates/filters/header.inc:49
+msgid "Enabled"
+msgstr "W³±czone"
+
+#: vacation.php:43
+msgid "End of vacation:"
+msgstr "Koniec nieobecno¶ci:"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "Koñczy siê na"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "Jest równe"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "B³±d przy pobieraniu bie¿±cego skryptu: (%d) %s"
+
+#: blacklist.php:73
+msgid "Error saving changes."
+msgstr "B³±d przy zapisywaniu zmian."
+
+#: templates/filters/header.inc:41
+msgid "Existing Rules"
+msgstr "Istniej±ce regu³y"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Istnieje"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "Oczekiwano 1 obiektu, otrzymano %d."
+
+#: lib/Driver/sivtest.php:205
+msgid "Failed to read from socket: "
+msgstr "Nie uda³o siê odczytaæ z gniazda: "
+
+#: lib/Driver/sivtest.php:200
+msgid "Failed to write to socket: "
+msgstr "Nie uda³o siê zapisaæ do gniazda: "
+
+#: lib/Driver/sivtest.php:195
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "Nie uda³o siê zapisaæ do gniazda: (po³±czenie utracone!)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "Pole"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Filtruj wszystkie wiadomo¶ci"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Filtruj tylko widziane wiadomo¶ci"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Filtruj tylko niewidziane wiadomo¶ci"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Opcje filtra"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Regu³a filtrowania"
+
+#: filters.php:137
+msgid "Filter Rules"
+msgstr "Regu³y filtrowania"
+
+#: script.php:52
+msgid "Filter Script Display"
+msgstr "Ekran skryptu filtrowania"
+
+#: lib/Ingo.php:378
+msgid "Filter _Rules"
+msgstr "_Regu³y filtrów"
+
+#: lib/Script/imap.php:342
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr ""
+"Dzia³anie filtra: %s wiadomo¶ci zosta³o skopiowanych do folderu \"%s\"."
+
+#: lib/Script/imap.php:328
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Dzia³ania filtra: %s wiadomo¶ci zosta³o skasowanych."
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr ""
+"Dzia³anie filtra: %s wiadomo¶ci zosta³o przeniesionych do folderu \"%s\"."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Dzia³anie filtra: %s wiadomo¶ci, które pasowa³y do czarnej listy zosta³o "
+"usuniêtych."
+
+#: lib/Script/imap.php:339
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Dzia³anie filtra: Wiadomo¶æ \"%s\" od \"%s\" zosta³a skopiowana do folderu "
+"\"%s\"."
+
+#: lib/Script/imap.php:323
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Dzia³anie filtra: Wiadomo¶æ \"%s\" od \"%s\" zosta³a skasowana."
+
+#: lib/Script/imap.php:300
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Dzia³anie filtra: Wiadomo¶æ \"%s\" od \"%s\" zosta³a przeniesiona do folderu "
+"\"%s\"."
+
+#: rule.php:178
+msgid "Filter not found."
+msgstr "Nie znaleziono filtra."
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "Oznaczon± do ¶ledzenia"
+
+#: spam.php:75
+msgid "Folder to receive spam:"
+msgstr "Folder do odbierania spamu:"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Dla wiadomo¶ci przychodz±cej, do której pasuj±:"
+
+#: forward.php:95 filters.php:190 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Przeka¿"
+
+#: forward.php:16
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Przekierowanie nie jest wspierane przez obecny sterownik filtrowania."
+
+#: lib/Script/procmail.php:286 lib/Script/maildrop.php:235
+#: lib/Script/sieve.php:212
+msgid "Forwards"
+msgstr "Przekierowania"
+
+#: forward.php:102
+msgid "Forwards Edit"
+msgstr "Edycja przekierowañ"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Od"
+
+#: lib/Script/sieve.php:2400
+msgid "From:"
+msgstr "Od:"
+
+#: lib/Script/sieve.php:111
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Wygenerowane przez Ingo (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Wiêksze ni¿"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Wiêksze lub równe"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr ""
+"Regu³y indywidualne nie s± wspierane w bie¿±cym sterowniku filtrowania."
+
+#: lib/Script/sieve.php:2062
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Podano nieistniej±c± skrzynkê do dostarczania wiadomo¶ci."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "Jest"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "Nie jest"
+
+#: forward.php:39
+msgid "Keep a copy of messages in this account?"
+msgstr "Zachowaæ kopiê wiadomo¶ci na tym koncie?"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"Wymagane jest wsparcie dla LDAP ale modu³ LDAP jest niedostêpny lub "
+"nieza³adowany."
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Mniejsze ni¿"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Mniejsze lub równe"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "List-ID"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "Oznacz wiadomo¶ci jako skasowane"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Oznacz wiadomo¶æ jako:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "Rodzaj porównania"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "Dopasowania (z zastêpnikami)"
+
+#: lib/api.php:57
+msgid "Maximum Number of Rules"
+msgstr "Maksymalna liczba regu³"
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Przekroczono maksymaln± liczbê adresów na czarnej li¶cie (Ca³kowita liczba "
+"adresów: %s, maksymalna liczba adresów %s). Nie mo¿na dodaæ nowych adresów "
+"do czarnej listy."
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Przekroczono maksymaln± liczbê adresów na bia³ej li¶cie (Ca³kowita liczba "
+"adresów: %s, maksymalna liczba adresów %s). Nie mo¿na dodaæ nowych adresów "
+"do bia³ej listy."
+
+#: spam.php:72
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+"Wiadomo¶ci z ocen± kwalifikuj±c± jako spam wiêksz± lub równ± tej liczbie "
+"bêd± traktowane jako spam."
+
+#: lib/Script/sieve.php:2408
+msgid "Missing address to notify"
+msgstr "Brak adresu do powiadomienia"
+
+#: lib/Script/sieve.php:1930
+msgid "Missing address to redirect message to"
+msgstr "Brak adresu na który przekierowaæ wiadomo¶æ"
+
+#: lib/Script/sieve.php:1962
+msgid "Missing reason for reject"
+msgstr "Brak powodu do odrzucenia"
+
+#: lib/Script/sieve.php:2190
+msgid "Missing reason in vacation."
+msgstr "Brak powodu w wakacjach."
+
+#: templates/filters/header.inc:51
+msgid "Move"
+msgstr "Przesuñ"
+
+#: filters.php:154 filters.php:271
+msgid "Move Rule Down"
+msgstr "Przesuñ regu³ê w dó³"
+
+#: filters.php:155 filters.php:270
+msgid "Move Rule Up"
+msgstr "Przesuñ regu³ê do góry"
+
+#: vacation.php:51
+msgid "My email addresses:"
+msgstr "Moje adresy email:"
+
+#: lib/Storage.php:874 templates/filters/filter-none.inc:3
+#: templates/filters/footer.inc:6
+msgid "New Rule"
+msgstr "Nowa regu³a"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "Nie znaleziono elementu \"%s\" w konfiguracji backendu."
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr "Nie skonfigurowano backendu dla tego hosta"
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr "Nie skonfigurowano backendów w backends.php"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Brak filtrów. Kliknij \"%s\" aby utworzyæ nowy filtr."
+
+#: lib/Script/sieve.php:1460 lib/Script/sieve.php:1558
+#: lib/Script/sieve.php:1735
+msgid "No headers specified"
+msgstr "Nie okre¶lono nag³ówków"
+
+#: script.php:67
+msgid "No script generated."
+msgstr "Nie wygenerowano skryptu."
+
+#: lib/Script/sieve.php:1751 lib/Script/sieve.php:1815
+msgid "No strings specified"
+msgstr "Nie okre¶lono ³añcucha znaków"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Nie równe"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr "Adres email powiadomienia"
+
+#: vacation.php:58
+msgid "Number of days between vacation replies:"
+msgstr "Ilo¶æ dni pomiêdzy odpowiedziami vacation:"
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr "Tylko oznacz wiadomo¶æ"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Opcje aktualizacji skryptu."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Inne opcje"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Podgl±d"
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr "Bior±cy udzia³ (Nadawca,Odbiorca,itp.)"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Proszê wprowadziæ nazwê nowego folderu:"
+
+#: vacation.php:46
+msgid "Reason:"
+msgstr "Powód:"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Odebrano"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Przekieruj do"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Wyra¿enie regularne"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr "Odrzuæ z powodu"
+
+#: config/fields.php.dist:55
+msgid "Resent To"
+msgstr "Resent To"
+
+#: config/fields.php.dist:51
+msgid "Resent-from"
+msgstr "Resent-from"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "Powrót do listy filtrów"
+
+#: vacation.php:32 vacation.php:115 spam.php:63 spam.php:131 forward.php:32
+#: forward.php:86 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "Powrót do listy regu³"
+
+#: templates/filters/header.inc:48
+msgid "Rule"
+msgstr "Regu³a"
+
+#: filters.php:76
+msgid "Rule Copied"
+msgstr "Regu³a skopiowana"
+
+#: filters.php:55
+msgid "Rule Deleted"
+msgstr "Regu³a usuniêta"
+
+#: vacation.php:95 spam.php:107 forward.php:70 filters.php:92
+msgid "Rule Disabled"
+msgstr "Regu³a wy³±czona"
+
+#: vacation.php:86 spam.php:98 forward.php:61 filters.php:97
+msgid "Rule Enabled"
+msgstr "Regu³a w³±czona"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "Nazwa regu³y:"
+
+#: lib/Script/sieve.php:2402
+msgid "Rule:"
+msgstr "Regu³a:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "B³±d podczas wywo³ania STARTTLS: (%s) %s"
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "S_pam"
+
+#: vacation.php:60 spam.php:80 forward.php:43
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:41
+#: templates/rule/footer.inc:60
+msgid "Save"
+msgstr "Zapisz"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Zapisz ustawienia"
+
+#: vacation.php:89 vacation.php:111 spam.php:101 spam.php:127 forward.php:64
+#: forward.php:82
+msgid "Save and Disable"
+msgstr "Zapisz i zablokuj"
+
+#: vacation.php:80 vacation.php:113 spam.php:92 spam.php:129 forward.php:55
+#: forward.php:84
+msgid "Save and Enable"
+msgstr "Zapisz i uaktywnij"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Skrypt"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Aktualizacja skryptu"
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr "Skrypt nie zosta³ zaktualizowany."
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr "Skrypt pomy¶lnie uaktywniony."
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr "Skrypt pomy¶lnie zdeaktywowany."
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Widzian±"
+
+#: rule.php:208
+msgid "Select a field"
+msgstr "Wybierz pole"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Wybierz zestaw regu³ do wy¶wietlenia:"
+
+#: rule.php:326 lib/Ingo.php:59 templates/blacklist/blacklist.inc:23
+msgid "Select target folder"
+msgstr "Wybierz folder docelowy"
+
+#: rule.php:245
+msgid "Self-Defined Header"
+msgstr "Nag³ówek w³asny"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Nadawca"
+
+#: filters.php:116
+msgid "Settings successfully updated."
+msgstr "Ustawienia pomy¶lnie zaktualizowane."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Poka¿ aktywny skrypt"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Poka¿ bie¿±cy skrypt"
+
+#: spam.php:19
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr ""
+"Proste filtrowanie nie jest dostêpne w bie¿±cym sterowniku filtrowania."
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "Rozmiar"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr "¯ród³o (Od,Odpowiedz-do,itp.)"
+
+#: filters.php:196 lib/Block/overview.php:105 lib/Block/overview.php:108
+#: lib/Script/sieve.php:429
+msgid "Spam Filter"
+msgstr "Filtr Spamu"
+
+#: spam.php:148 spam.php:155
+msgid "Spam Filtering"
+msgstr "Filtrowanie spamu"
+
+#: spam.php:72
+msgid "Spam Level:"
+msgstr "Poziom spamu:"
+
+#: vacation.php:41
+msgid "Start of vacation:"
+msgstr "Pocz±tek nieobecno¶ci:"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "Przestaæ sprawdzaæ je¶li ta regu³a pasuje?"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Temat"
+
+#: vacation.php:44
+msgid "Subject of vacation message:"
+msgstr "Temat wiadomo¶ci o nieobecno¶ci:"
+
+#: lib/Script/sieve.php:2401
+msgid "Subject:"
+msgstr "Temat:"
+
+#: lib/api.php:89
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "Adres \"%s\" zosta³ dodany do Twojej czarnej listy."
+
+#: lib/api.php:112
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "Adres \"%s\" zosta³ dodany do Twojej bia³ej listy."
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "Sterownik odpowiedzia³: "
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr "Wyst±pi³ b³±d przy aktywacji skryptu."
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr "Wyst±pi³ b³±d przy dekatywacji skryptu."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Do"
+
+#: templates/filters/filter.html:30
+msgid "To:"
+msgstr "Do:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Nie mo¿na za³adowaæ definicji %s."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "Nag³ówek u¿ytkownika"
+
+#: vacation.php:155 filters.php:184 lib/Block/overview.php:61
+#: lib/Block/overview.php:64 lib/Script/procmail.php:266
+#: lib/Script/maildrop.php:265 lib/Script/sieve.php:396
+msgid "Vacation"
+msgstr "Nieobecno¶æ"
+
+#: vacation.php:162
+msgid "Vacation Edit"
+msgstr "Edycja nieobecno¶ci"
+
+#: vacation.php:16
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "Nieobecno¶æ nie jest wspierana w bie¿±cym sterowniku filtrowania."
+
+#: rule.php:332
+msgid "Value"
+msgstr "Warto¶æ"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Adresy b_ia³ej listy:"
+
+#: filters.php:178 lib/Block/overview.php:85 lib/Block/overview.php:88
+#: templates/whitelist/whitelist.inc:8
+msgid "Whitelist"
+msgstr "Bia³a lista"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "Edytuj bia³± listê"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Bia³a lista nie jest wspierana w bie¿±cym sterowniku filtrowania."
+
+#: lib/Script/procmail.php:234 lib/Script/maildrop.php:213
+#: lib/Script/sieve.php:315
+msgid "Whitelisted Addresses"
+msgstr "Adresy na bia³ej li¶cie"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: rule.php:162 filters.php:69
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Nie mo¿esz utworzyæ wiêcej ni¿ %d regu³."
+
+#: rule.php:23 filters.php:61
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Nie mo¿esz tworzyæ ani edytowaæ regu³."
+
+#: rule.php:140 filters.php:50
+msgid "You do not have permission to delete filter rules."
+msgstr "Nie masz uprawnieñ do usuwania regu³ filtra."
+
+#: rule.php:58 rule.php:155 filters.php:43 filters.php:110 filters.php:121
+msgid "You do not have permission to edit filter rules."
+msgstr "Nie masz uprawnieñ do edycji regu³ filtra."
+
+#: lib/Script/sieve.php:2399
+msgid "You have received a new message"
+msgstr "Odebrano now± wiadomo¶æ"
+
+#: lib/Script/imap.php:301 lib/Script/imap.php:324 lib/Script/imap.php:339
+msgid "[No Subject]"
+msgstr "[Brak tematu]"
+
+#: lib/Ingo.php:383
+msgid "_Blacklist"
+msgstr "Czarna lista"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "Ca³kowicie usuñ wiadomo¶æ"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "Wprowad¼ ka¿dy adres w nowej linii:"
+
+#: lib/Ingo.php:389
+msgid "_Forward"
+msgstr "Przeka¿"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "Przenie¶ wiadomo¶æ do folderu:"
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "U_prawnienia"
+
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr "_Skrypt"
+
+#: lib/Ingo.php:386
+msgid "_Vacation"
+msgstr "Nieobecno¶æ"
+
+#: lib/Ingo.php:380
+msgid "_Whitelist"
+msgstr "Bia³a lista"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "aktywny"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "i"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "wy³±czone - kliknij aby w³±czyæ"
+
+#: filters.php:216
+msgid "field"
+msgstr "pole"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "nieaktywny"
+
+#: lib/Script/maildrop.php:127
+msgid "maildrop script generated by Ingo"
+msgstr "skrypt maildrop wygenerowany przez Ingo"
+
+#: filters.php:216
+msgid "match"
+msgstr "pasuje"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "lub"
+
+#: lib/Script/procmail.php:128
+msgid "procmail script generated by Ingo"
+msgstr "skrypt procmail wygenerowany przez Ingo"
diff --git a/ingo/po/pt_BR.po b/ingo/po/pt_BR.po
new file mode 100644 (file)
index 0000000..56bb130
--- /dev/null
@@ -0,0 +1,1047 @@
+# translation of pt_BR.po to Português brasileiro
+# This file is distributed under the same license as the Ingo package.
+# Copyright YEAR Horde Project.
+#
+# Fabio Gomes <flgoms@uol.com.br>, 2005.
+# Luis Felipe Marzagao <duli@fedoraproject.org>, 2008.
+msgid ""
+msgstr ""
+"Project-Id-Version: pt_BR\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2008-07-06 23:31-0300\n"
+"PO-Revision-Date: 2008-07-06 23:31-0300\n"
+"Last-Translator: Luis Felipe Marzagao <duli@fedoraproject.org>\n"
+"Language-Team: Português brasileiro <i18n@lists.horde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+"Plural-Forms:  nplurals=2; plural=(n > 1);\n"
+
+#: filters.php:223
+msgid " and"
+msgstr " e"
+
+#: filters.php:223
+msgid " or"
+msgstr " ou"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Ação para endereços na lista negra:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Ativar Rotina"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "A ativação para o script \"%s\" falhou: (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Configurações Adicionais"
+
+#: forward.php:43
+msgid "Address(es) to forward to:"
+msgstr "Address(es) to forward to:"
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr "Endereços para não enviar respostas:"
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr "Configurações Avançadas"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Todos os seguintes"
+
+#: lib/api.php:68
+msgid "Allow Rules"
+msgstr "Permitir Regras"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Respondida"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Qualquer um dos seguintes"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Aplicar Filtros"
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr "Você tem certeza que quer excluir esta regra?"
+
+#: config/prefs.php.dist:32
+msgid "Automatically update the script after each change?"
+msgstr "Atualizar automaticamente a rotina depois de cada alteração?"
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr "Configurações Básicas"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Cco"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Começa com"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "A conexão falhou: (%s) %s"
+
+#: filters.php:174 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:95 lib/Block/overview.php:98
+msgid "Blacklist"
+msgstr "Lista Negra"
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr "Editar Lista Negra"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "Lista Negra não é suportada pelo driver de filtro atual."
+
+#: lib/Script/sieve.php:276 lib/Script/procmail.php:219
+#: lib/Script/maildrop.php:197
+msgid "Blacklisted Addresses"
+msgstr "Endereços na Lista Negra"
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "Corpo"
+
+#: rule.php:322 filters.php:220
+msgid "Case Sensitive"
+msgstr "Sensível à Caixa"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: spam.php:106 whitelist.php:38 rule.php:141 blacklist.php:70 vacation.php:81
+#: forward.php:56
+msgid "Changes saved."
+msgstr "Alterações gravadas."
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Falha de conexão"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Contém"
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr "Copiar %s"
+
+#: lib/Storage.php:993 lib/Storage/sql.php:621
+#, php-format
+msgid "Copy of %s"
+msgstr "Copiar de %s"
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "Não foi possível gravar o arquivo de modelo compilado '%s'."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Criar nova pasta"
+
+#: lib/Script/procmail.php:352 lib/Script/maildrop.php:362
+msgid "DISABLED: "
+msgstr "DESATIVADA: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Desativar Rotina"
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr "Excluir %s"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "Excluir Condição"
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "Excluir mensagem completamente"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Excluída"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "Entregar em minha Caixa de Entrada"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr "Entregar em minha Caixa de Entrada e copiar para"
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Entregar em minha Caixa de Entrada e redirecionar para"
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "Entregar na pasta"
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "Destino (Para,Cc,Cco,etc)"
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr "Desativar %s "
+
+#: spam.php:160 vacation.php:153 forward.php:99
+#: templates/whitelist/whitelist.inc:10 templates/rule/header.inc:26
+#: templates/blacklist/blacklist.inc:10
+msgid "Disabled"
+msgstr "Desativado"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Exibir notificação detalhada quando cada filtro for aplicado?"
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr "Não enviar respostas para mensagens spam ou de listas?"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Faça isto:"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "Não começa com"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Não contém"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "Não termina com"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "Não existe"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "Não corresponde a (com coringas)"
+
+#: templates/filters/header.inc:23 lib/Block/overview.php:63
+#: lib/Block/overview.php:72 lib/Block/overview.php:87
+#: lib/Block/overview.php:97 lib/Block/overview.php:107
+msgid "Edit"
+msgstr "Editar"
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr "Editar %s"
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr "Ativar %s"
+
+#: templates/filters/header.inc:25
+msgid "Enabled"
+msgstr "Ativado"
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr "Fim das férias:"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "Termina com"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "Igual a"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Erro ao obter o script atual: (%d) %s"
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr "Erro ao gravar alterações."
+
+#: templates/filters/header.inc:17
+msgid "Existing Rules"
+msgstr "Regras Existentes"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Existe"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "1 objeto esperado, obtidos %d."
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr "Erro ao ler do socket: "
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr "Erro ao gravar para o socket: "
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "Erro ao gravar para o socket: (conexão perdida!)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "Campo"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Filtrar Todas Mensagens"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Filtrar Somente Mensagens Lidas"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Filtrar Somente Mensagens Não Lidas"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Opções de Filtro"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Regra do Filtro"
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr "Regras de Filtro"
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr "Exibição da Rotina do Filtro"
+
+#: lib/Ingo.php:382
+msgid "Filter _Rules"
+msgstr "_Regras de Filtro"
+
+#: lib/Script/imap.php:357
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Atividade do Filtro: %s mensagem(ns) copiada(s) para a pasta \"%s\"."
+
+#: lib/Script/imap.php:338
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Atividade do Filtro: %s mensagem(ns) excluída(s)."
+
+#: lib/Script/imap.php:314
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Atividade do Filtro: %s mensagem(ns) movida(s) para a pasta \"%s\"."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Atividade do Filtro: %s mensagem(ns) que correspondeu(ram) a lista negra foi"
+"(ram) excluída(s)."
+
+#: lib/Script/imap.php:350
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Atividade do filtro: A mensagem \"%s\" de \"%s\" foi copiada para a pasta \"%"
+"s\"."
+
+#: lib/Script/imap.php:332
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Atividade do Filtro: A mensagem \"%s\" de \"%s\" foi excluída."
+
+#: lib/Script/imap.php:307
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Atividade do Filtro: A mensagem \"%s\" de \"%s\"foi movida para a pasta \"%s"
+"\"."
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr "Filtro não encontrado."
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "Marcada para Acompanhamento"
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr "Pasta para receber spam:"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Para uma nova mensagem que corresponda:"
+
+#: forward.php:97 filters.php:192 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Encaminhar"
+
+#: lib/Script/sieve.php:229
+msgid "Forward Keep Action"
+msgstr "Encaminhar Manter Ação"
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Encaminhamento não é suportado pelo driver de filtro atual."
+
+#: lib/Script/sieve.php:239 lib/Script/procmail.php:298
+#: lib/Script/maildrop.php:246
+msgid "Forwards"
+msgstr "Redirecionamentos"
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr "Editar Redirecionamentos"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "De"
+
+#: lib/Script/sieve.php:2948
+msgid "From:"
+msgstr "De:"
+
+#: lib/Script/sieve.php:123
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Gerado pelo Ingo (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Maior que"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Maior ou igual a"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "Regras individuais não são suportadas pelo driver de filtro atual."
+
+#: lib/Script/sieve.php:2542
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Pasta especificada para entrega não existe."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "É"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "Não é"
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr "Manter uma cópia das mensagens nesta conta?"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"É obrigatório suporte a LDAP mas o módulo LDAP não está disponível ou não "
+"foi carregado."
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Menor que"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Menor ou igual a"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "List-ID"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "Mar_car mensagem como excluída"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Marcar mensagem como:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "Coincidir tipo"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "Corresponde a (com coringas)"
+
+#: lib/api.php:71
+msgid "Maximum Number of Rules"
+msgstr "Número Máximo de Regras"
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Excedeu o número máximo de endereços na lista negra (Total de endereços: %s, "
+"Máximo de endereços: %s).  Não consegui adicionar novos endereços à lista "
+"negra."
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Excedeu o número máximo de endereços na lista branca (Total de endereços: %"
+"s, Máximo de endereços: %s).  Não consegui adicionar novos endereços à lista "
+"branca."
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+"Mensagens com um índice de spam maior ou igual a esse número serão tratadas "
+"como spam."
+
+#: lib/Script/sieve.php:2962
+msgid "Missing address to notify"
+msgstr "Endereço para notificar ausente"
+
+#: lib/Script/sieve.php:2343
+msgid "Missing address to redirect message to"
+msgstr "Endereço para redirecionamento não informado"
+
+#: lib/Script/sieve.php:2389
+msgid "Missing reason for reject"
+msgstr "Razão para rejeição não informada"
+
+#: lib/Script/sieve.php:2692
+msgid "Missing reason in vacation."
+msgstr "Razão para mensagem de férias não informada."
+
+#: templates/filters/header.inc:29
+msgid "Move"
+msgstr "Mover"
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr "Mover Regra Abaixo"
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr "Mover Regra Acima"
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr "Meus endereços de e-mail:"
+
+#: templates/filters/footer.inc:6 templates/filters/filter-none.inc:3
+#: lib/Storage.php:889
+msgid "New Rule"
+msgstr "Nova Regra"
+
+#: lib/Ingo.php:233 lib/Ingo.php:235
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "Nenhum elemento \"%s\" encontrado na configuração da estrutura."
+
+#: lib/Ingo.php:226
+msgid "No backend configured for this host"
+msgstr "Não foi configurado um driver para este servidor"
+
+#: lib/Ingo.php:202
+msgid "No backends configured in backends.php"
+msgstr "Nenhum driver configurado em backends.php"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Nenhum filtro. Clique em \"%s\" para criar um novo filtro."
+
+#: lib/Script/sieve.php:1692 lib/Script/sieve.php:1841
+#: lib/Script/sieve.php:2065
+msgid "No headers specified"
+msgstr "Nenhum cabeçalho especificado"
+
+#: script.php:69
+msgid "No script generated."
+msgstr "Nenhuma rotina gerada."
+
+#: lib/Script/sieve.php:2081 lib/Script/sieve.php:2165
+msgid "No strings specified"
+msgstr "Nenhuma string especificada"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Diferente de"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr "Endereços de e-mail de notificação:"
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr "Número de dias entre as respostas de férias:"
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr "Somente marcar a mensagem"
+
+#: config/prefs.php.dist:18
+msgid "Options about script updating."
+msgstr "Opções sobre atualização da rotina."
+
+#: config/prefs.php.dist:16
+msgid "Other Options"
+msgstr "Outras Opções"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Visão geral"
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr "Participante (De,Para,etc)"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Por favor forneça o nome para a nova pasta:"
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr "Razão:"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Recebido"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Redirecionar para"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Expressão regular"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr "Rejeitar com a razão"
+
+#: config/fields.php.dist:51
+msgid "Resent-From"
+msgstr "Reenviado-De"
+
+#: config/fields.php.dist:55
+msgid "Resent-To"
+msgstr "Reenviado-Para"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "Retornar para a Lista de Filtros"
+
+#: spam.php:62 spam.php:141 vacation.php:34 vacation.php:117 forward.php:34
+#: forward.php:88 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "Retornar para a Lista de Regras"
+
+#: templates/filters/header.inc:24
+msgid "Rule"
+msgstr "Regra"
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr "Regra Copiada"
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr "Regra Excluída"
+
+#: spam.php:122 vacation.php:97 forward.php:72 filters.php:94
+msgid "Rule Disabled"
+msgstr "Regra Desativada"
+
+#: spam.php:113 vacation.php:88 forward.php:63 filters.php:99
+msgid "Rule Enabled"
+msgstr "Regra Ativada"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "Nome da Regra:"
+
+#: lib/Script/sieve.php:2950
+msgid "Rule:"
+msgstr "Regra:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "O STARTTLS falhou: (%s) %s"
+
+#: lib/Ingo.php:396
+msgid "S_pam"
+msgstr "S_pam"
+
+#: spam.php:79 vacation.php:62 forward.php:45
+#: templates/whitelist/whitelist.inc:23 templates/rule/footer.inc:60
+#: templates/blacklist/blacklist.inc:41
+msgid "Save"
+msgstr "Gravar"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Gravar Configurações"
+
+#: spam.php:116 spam.php:137 vacation.php:91 vacation.php:113 forward.php:66
+#: forward.php:84
+msgid "Save and Disable"
+msgstr "Gravar e Desabilitar"
+
+#: spam.php:107 spam.php:139 vacation.php:82 vacation.php:115 forward.php:57
+#: forward.php:86
+msgid "Save and Enable"
+msgstr "Gravar e Habilitar"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Rotina"
+
+#: config/prefs.php.dist:17
+msgid "Script Updating"
+msgstr "Atualizando Rotina"
+
+#: lib/Ingo.php:178
+msgid "Script not updated."
+msgstr "Rotina não Atualizada."
+
+#: lib/Ingo.php:149
+msgid "Script successfully activated."
+msgstr "Rotina ativada com sucesso."
+
+#: lib/Ingo.php:148
+msgid "Script successfully deactivated."
+msgstr "Rotina desativada com sucesso."
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Lida"
+
+#: rule.php:218
+msgid "Select a field"
+msgstr "Selecione um campo"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Selecionar conjunto de regras para exibir:"
+
+#: rule.php:347 templates/blacklist/blacklist.inc:23 lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "Selecione a pasta destino"
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr "Cabeçalho Personalizado"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Remetente"
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr "Configurações atualizadas com sucesso."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Exibir Rotina Ativa"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Exibir Rotina Atual"
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr "Filtro simples de spam não é suportado no driver atual de filtragem."
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "Tamanho"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr "Origem (De,Responder a,etc)"
+
+#: filters.php:198 lib/Script/sieve.php:438 lib/Script/maildrop.php:301
+#: lib/Block/overview.php:105 lib/Block/overview.php:108
+msgid "Spam Filter"
+msgstr "Filtro de Spam"
+
+#: spam.php:158 spam.php:165
+msgid "Spam Filtering"
+msgstr "Filtragem de Spam"
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr "Nível de Spam:"
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr "Início das férias:"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "Parar a checagem se esta regra corresponder?"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Assunto"
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr "Assunto da mensagem de férias:"
+
+#: lib/Script/sieve.php:2949
+msgid "Subject:"
+msgstr "Assunto:"
+
+#: lib/api.php:103
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "O edereço \"%s\" foi adicionado a sua lista negra."
+
+#: lib/api.php:126
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "O edereço \"%s\" foi adicionado a sua lista branca."
+
+#: lib/Ingo.php:144
+msgid "The driver said: "
+msgstr "O driver disse: "
+
+#: lib/Ingo.php:143
+msgid "There was an error activating the script."
+msgstr "Houve um erro ao ativar a rotina."
+
+#: lib/Ingo.php:142
+msgid "There was an error deactivating the script."
+msgstr "Houve um erro ao desativar a rotina."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Para"
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr "Para:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Impossível carregar a definição de %s."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "Cabeçalho de usuário"
+
+#: vacation.php:151 filters.php:186 lib/Script/sieve.php:412
+#: lib/Script/procmail.php:278 lib/Script/maildrop.php:276
+#: lib/Block/overview.php:61 lib/Block/overview.php:64
+msgid "Vacation"
+msgstr "Férias"
+
+#: vacation.php:158
+msgid "Vacation Edit"
+msgstr "Editar Opções de Férias"
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "Opções de férias não são suportadas no driver de filtro atual."
+
+#: rule.php:353
+msgid "Value"
+msgstr "Valor"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Endereços na _Lista Branca:"
+
+#: filters.php:180 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:85 lib/Block/overview.php:88
+msgid "Whitelist"
+msgstr "Lista Branca"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "Editar Lista Branca"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Lista Branca não é supportada pelo driver de filtro atual."
+
+#: lib/Script/sieve.php:336 lib/Script/procmail.php:246
+#: lib/Script/maildrop.php:224
+msgid "Whitelisted Addresses"
+msgstr "Endereços na Lista Branca"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: rule.php:172 filters.php:71
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Você não pode cirar mais do que %d regras."
+
+#: rule.php:23 filters.php:63
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Você não pode criar ou editar regras configuráveis."
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr ""
+"Você não pode criar condições vazias. Por favor preencha um valor para \"%s"
+"\"."
+
+#: rule.php:151 filters.php:52
+msgid "You do not have permission to delete filter rules."
+msgstr "Você não tem permissão de excluir regras de filtro."
+
+#: rule.php:58 rule.php:165 filters.php:45 filters.php:112 filters.php:123
+msgid "You do not have permission to edit filter rules."
+msgstr "Você não tem permissão de editar regras de filtro."
+
+#: lib/Script/sieve.php:2947
+msgid "You have received a new message"
+msgstr "Você tem uma nova mensagem"
+
+#: lib/Script/imap.php:309 lib/Script/imap.php:334 lib/Script/imap.php:352
+msgid "[No Sender]"
+msgstr "[Sem Remetente]"
+
+#: lib/Script/imap.php:308 lib/Script/imap.php:333 lib/Script/imap.php:351
+msgid "[No Subject]"
+msgstr "[Sem Assunto]"
+
+#: lib/Ingo.php:387
+msgid "_Blacklist"
+msgstr "Lista _Negra"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "E_xcluir mensagem completamente"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "_Preencha cada endereço em uma nova linha:"
+
+#: lib/Ingo.php:393
+msgid "_Forward"
+msgstr "_Encaminhar"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "_Mover mensagem para a pasta:"
+
+#: lib/Ingo.php:402
+msgid "_Permissions"
+msgstr "_Permissões"
+
+#: lib/Ingo.php:399
+msgid "_Script"
+msgstr "_Rotina"
+
+#: lib/Ingo.php:390
+msgid "_Vacation"
+msgstr "_Férias"
+
+#: lib/Ingo.php:384
+msgid "_Whitelist"
+msgstr "Lista _Branca"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "ativo"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "e"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "desabilitado - clique para habilitar"
+
+#: filters.php:218
+msgid "field"
+msgstr "campo"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "inativo"
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr "script de descarte de mensagem gerado pelo Ingo"
+
+#: filters.php:218
+msgid "match"
+msgstr "corresponde"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "ou"
+
+#: lib/Script/procmail.php:140
+msgid "procmail script generated by Ingo"
+msgstr "rotina do procmail gerada pelo Ingo"
diff --git a/ingo/po/pt_PT.po b/ingo/po/pt_PT.po
new file mode 100644 (file)
index 0000000..43e5968
--- /dev/null
@@ -0,0 +1,932 @@
+# INGO Portugal Portuguese translation.
+# Manuel Menezes de Sequeira <Manuel.Sequeira>, 2005.
+# Based on a previous
+# translation of pt_BR.po to Brazilian Portuguese
+# translation of ingo.po to Brazilian Portuguese
+# This file is distributed under the same license as the PACKAGE package.
+# Copyright YEAR Horde Project.
+# Fabio Gomes <flgomes@fazenda.sp.gov.br>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: pt_PT\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2006-12-26 23:59+0000\n"
+"PO-Revision-Date: 2007-01-06 10:12-0000\n"
+"Last-Translator: Manuel Menezes de Sequeira <Manuel.Sequeira@iscte.pt>\n"
+"Language-Team: Brazilian Portuguese <i18n@lists.horde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.3.1\n"
+"Plural-Forms: nplurals=2; plural=(n > 1);\n"
+
+#: filters.php:189
+msgid " and"
+msgstr " e"
+
+#: filters.php:189
+msgid " or"
+msgstr " ou"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Acção para endereços na lista negra:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Activar \"Script\""
+
+#: lib/Driver/ldap.php:232
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "A activação do \"script\" para \"%s\" falhou: (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Configurações Adicionais"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Todos os seguintes"
+
+#: lib/api.php:54
+msgid "Allow Rules"
+msgstr "Permitir Regras"
+
+#: templates/rule/footer.inc:33
+msgid "Answered"
+msgstr "Respondido"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Qualquer dos seguintes"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Aplicar Filtros"
+
+#: filters.php:218
+msgid "Are you sure you want to delete this rule?"
+msgstr "Tem a certeza que quer remover esta regra?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Actualizar automaticamente o \"script\" depois de cada alteração?"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Cco"
+
+#: lib/Storage.php:379
+msgid "Begins with"
+msgstr "Começa com"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Ligação falhou: (%s) %s"
+
+#: filters.php:148 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:87 lib/Block/overview.php:90
+msgid "Blacklist"
+msgstr "Lista Negra"
+
+#: blacklist.php:107
+msgid "Blacklist Edit"
+msgstr "Editar Lista Negra"
+
+#: blacklist.php:17
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "A Lista Negra não é suportada pelo mecanismo de filtragem corrente."
+
+#: lib/Script/procmail.php:207 lib/Script/sieve.php:244
+#: lib/Script/maildrop.php:176
+msgid "Blacklisted Addresses"
+msgstr "Endereços na Lista Negra"
+
+#: config/fields.php.dist:88
+msgid "Body"
+msgstr "Corpo"
+
+#: filters.php:186 rule.php:281
+msgid "Case Sensitive"
+msgstr "Discrimina Maiúsculas de Minúsculas"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: rule.php:122 whitelist.php:36 forward.php:33 vacation.php:41
+#: blacklist.php:73
+msgid "Changes saved."
+msgstr "Alterações guardadas."
+
+#: lib/Driver/ldap.php:75
+msgid "Connection failure"
+msgstr "Falha de ligação"
+
+#: lib/Storage.php:375
+msgid "Contains"
+msgstr "Contém"
+
+#: filters.php:229 filters.php:230
+#, php-format
+msgid "Copy %s"
+msgstr "Copiar %s"
+
+#: lib/Storage.php:875
+#, php-format
+msgid "Copy of %s"
+msgstr "Cópia de %s"
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Criar nova pasta"
+
+#: lib/Script/procmail.php:336 lib/Script/maildrop.php:280
+msgid "DISABLED: "
+msgstr "DESACTIVADA: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Desactivar \"Script\""
+
+#: filters.php:218 filters.php:219
+#, php-format
+msgid "Delete %s"
+msgstr "Remover %s"
+
+#: templates/rule/filter.inc:30
+msgid "Delete Condition"
+msgstr "Remover Condição"
+
+#: lib/Storage.php:323
+msgid "Delete message completely"
+msgstr "Remover mensagem completamente"
+
+#: templates/rule/footer.inc:35
+msgid "Deleted"
+msgstr "Removida"
+
+#: lib/Storage.php:311
+msgid "Deliver into my Inbox"
+msgstr "Entregar na minha Caixa de Entrada"
+
+#: lib/Storage.php:337
+msgid "Deliver into my Inbox and copy to"
+msgstr "Entregar na minha Caixa de Entrada e copiar para"
+
+#: lib/Storage.php:332
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Entregar na minha Caixa de Entrada e redireccionar para"
+
+#: lib/Storage.php:317
+msgid "Deliver to folder"
+msgstr "Entregar na pasta"
+
+#: filters.php:242 filters.php:243
+#, php-format
+msgid "Disable %s"
+msgstr "Desativar %s "
+
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+#: templates/vacation/vacation.inc:6 templates/forward/forward.inc:10
+#: templates/rule/header.inc:26
+msgid "Disabled"
+msgstr "Desativado"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Mostrar notificação pormenorizada quando cada filtro for aplicado?"
+
+#: templates/vacation/vacation.inc:34
+msgid "Do _not send responses to bulk or list messages"
+msgstr ""
+"_Não enviar respostas para mensagens em massa ou de listas de correio "
+"electrónico"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Fazer isto:"
+
+#: lib/Storage.php:380
+msgid "Doesn't begin with"
+msgstr "Não começa com"
+
+#: lib/Storage.php:376
+msgid "Doesn't contain"
+msgstr "Não contém"
+
+#: lib/Storage.php:382
+msgid "Doesn't end with"
+msgstr "Não termina com"
+
+#: lib/Storage.php:384
+msgid "Doesn't exist"
+msgstr "Não existe"
+
+#: lib/Storage.php:387
+msgid "Doesn't match (with placeholders)"
+msgstr "Não corresponde a (com marcações)"
+
+#: templates/filters/header.inc:46 lib/Block/overview.php:61
+#: lib/Block/overview.php:68 lib/Block/overview.php:81
+#: lib/Block/overview.php:89
+msgid "Edit"
+msgstr "Editar"
+
+#: filters.php:207 filters.php:209 filters.php:213 filters.php:214
+#, php-format
+msgid "Edit %s"
+msgstr "Editar %s"
+
+#: filters.php:246 filters.php:247
+#, php-format
+msgid "Enable %s"
+msgstr "Activar %s"
+
+#: templates/filters/header.inc:48
+msgid "Enabled"
+msgstr "Activado"
+
+#: lib/Storage.php:381
+msgid "Ends with"
+msgstr "Termina com"
+
+#: lib/Storage.php:392
+msgid "Equal to"
+msgstr "Igual a"
+
+#: lib/Driver/ldap.php:139 lib/Driver/ldap.php:149 lib/Driver/ldap.php:158
+#: lib/Driver/ldap.php:168
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Erro ao aceder ao \"script\" corrente: (%d) %s"
+
+#: blacklist.php:71
+msgid "Error saving changes."
+msgstr "Erro ao guardar as alterações."
+
+#: templates/filters/header.inc:41
+msgid "Existing Rules"
+msgstr "Regras Existentes"
+
+#: lib/Storage.php:383
+msgid "Exists"
+msgstr "Existe"
+
+#: lib/Driver/ldap.php:144
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "Esperava 1 objecto, obtive %d."
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Filtrar Todas as Mensagens"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Filtrar Apenas Mensagens Lidas"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Filtrar Apenas Mensagens Por Ler"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Opções de Filtragem"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Regra de Filtragem"
+
+#: filters.php:113
+msgid "Filter Rules"
+msgstr "Regras de Filtragem"
+
+#: script.php:52
+msgid "Filter Script Display"
+msgstr "Visualização do \"Script\" de Filtragem"
+
+#: lib/Ingo.php:321
+msgid "Filter _Rules"
+msgstr "_Regras de Filtragem"
+
+#: lib/Script/imap.php:314
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr ""
+"Actividade de filtragem: %s mensagem(ns) foi(ram) copiada(s) para a pasta \"%"
+"s\"."
+
+#: lib/Script/imap.php:301
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Actividade de filtragem: %s mensagem(ns) foi(ram) removidas(s)."
+
+#: lib/Script/imap.php:279
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr ""
+"Actividade de filtragem: %s mensagem(ns) foi(ram) movida(s) para a pasta \"%s"
+"\"."
+
+#: lib/Script/imap.php:182
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Actividade de filtragem: %s mensagem(ns) com correspondente na lista negra "
+"foi(ram) removidas(s)."
+
+#: lib/Script/imap.php:311
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Actividade de filtragem: A mensagem \"%s\" de \"%s\" foi copiada para a "
+"pasta \"%s\"."
+
+#: lib/Script/imap.php:296
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Actividade de filtragem: A mensagem \"%s\" de \"%s\" foi removida."
+
+#: lib/Script/imap.php:273
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Actividade de Filtragem: A mensagem \"%s\" de \"%s\" foi movida para a pasta "
+"\"%s\"."
+
+#: rule.php:160
+msgid "Filter not found."
+msgstr "Filtro não encontrado."
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Para uma mensagem recém-chegada que corresponda:"
+
+#: filters.php:166 templates/forward/forward.inc:8 lib/Block/overview.php:67
+#: lib/Block/overview.php:69
+msgid "Forward"
+msgstr "Redirecionamento"
+
+#: forward.php:16
+msgid "Forward is not supported in the current filtering driver."
+msgstr ""
+"O redireccionamento não é suportado pelo mecanismo de filtragem corrente."
+
+#: lib/Script/procmail.php:282 lib/Script/sieve.php:214
+#: lib/Script/maildrop.php:225
+msgid "Forwards"
+msgstr "Redireccionamentos"
+
+#: forward.php:45
+msgid "Forwards Edit"
+msgstr "Editar Redireccionamentos"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "De"
+
+#: lib/Script/sieve.php:2066
+msgid "From:"
+msgstr "De:"
+
+#: lib/Script/sieve.php:110
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Gerado pelo Ingo (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:390
+msgid "Greater than"
+msgstr "Maior que"
+
+#: lib/Storage.php:391
+msgid "Greater than or equal to"
+msgstr "Maior ou igual a"
+
+#: templates/rule/footer.inc:31
+msgid "Important"
+msgstr "Importante"
+
+#: rule.php:36
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr ""
+"Regras individuais não são suportadas pelo mecanismo de filtragem corrente."
+
+#: lib/Script/sieve.php:1864
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Caixa postal especificada para entrega não existe."
+
+#: lib/Storage.php:377
+msgid "Is"
+msgstr "É"
+
+#: lib/Storage.php:378
+msgid "Isn't"
+msgstr "Não é"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"Suporte LDAP é necessário mas o módulo LDAP não está disponível ou não está "
+"carregado."
+
+#: lib/Storage.php:388
+msgid "Less than"
+msgstr "Menor que"
+
+#: lib/Storage.php:389
+msgid "Less than or equal to"
+msgstr "Menor ou igual a"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "ID da Lista"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "Mar_car mensagem como removida"
+
+#: templates/rule/footer.inc:24
+msgid "Mark message as:"
+msgstr "Marcar mensagem como:"
+
+#: lib/Storage.php:386
+msgid "Matches (with placeholders)"
+msgstr "Corresponde a (com marcadores)"
+
+#: lib/api.php:57
+msgid "Maximum Number of Rules"
+msgstr "Número Máximo de Regras"
+
+#: lib/Storage.php:513
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Excedido o número máximo de endereços na lista negra (Total de endereços: %"
+"s, Máximo de endereços: %s).  Impossível adicionar novos endereços à lista "
+"negra."
+
+#: lib/Storage.php:566
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Excedido o número máximo de endereços na lista branca (Total de endereços: %"
+"s, Máximo de endereços: %s).  Impossível adicionar novos endereços à lista "
+"branca."
+
+#: lib/Script/sieve.php:2074
+msgid "Missing address to notify"
+msgstr "Endereço de notificação em falta"
+
+#: lib/Script/sieve.php:1732
+msgid "Missing address to redirect message to"
+msgstr "Endereço de redireccionamento em falta"
+
+#: lib/Script/sieve.php:1764
+msgid "Missing reason for reject"
+msgstr "Razão para rejeição em falta"
+
+#: lib/Script/sieve.php:1931
+msgid "Missing reason in vacation."
+msgstr "Razão para mensagem de ausência em falta."
+
+#: templates/filters/header.inc:49
+msgid "Move"
+msgstr "Mover"
+
+#: filters.php:130 filters.php:239
+msgid "Move Rule Down"
+msgstr "Mover Regra para Baixo"
+
+#: filters.php:131 filters.php:238
+msgid "Move Rule Up"
+msgstr "Mover Regra para Cima"
+
+#: templates/vacation/vacation.inc:42
+msgid "N_umber of days between vacation replies:"
+msgstr "_Número de dias entre as mensagens de ausência:"
+
+#: templates/filters/filter-none.inc:3 templates/filters/footer.inc:6
+#: lib/Storage.php:771
+msgid "New Rule"
+msgstr "Nova Regra"
+
+#: lib/Ingo.php:235 lib/Ingo.php:237
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "O elemento \"%s\" não foi encontrado na configuração de base."
+
+#: lib/Ingo.php:233
+msgid "No backend configured for this host"
+msgstr "Não há uma configuração de base para este servidor"
+
+#: lib/Ingo.php:210
+msgid "No backends configured in backends.php"
+msgstr "Nenhuma configuração de base em backends.php"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Nenhum filtro. Clique em \"%s\"' para criar um novo filtro."
+
+#: lib/Script/sieve.php:1332 lib/Script/sieve.php:1425
+#: lib/Script/sieve.php:1602
+msgid "No headers specified"
+msgstr "Nenhum cabeçalho especificado"
+
+#: script.php:67
+msgid "No script generated."
+msgstr "Nenhum \"script\" gerado."
+
+#: lib/Script/sieve.php:1618
+msgid "No strings specified"
+msgstr "Nenhuma cadeia de caracteres especificada"
+
+#: lib/Storage.php:393
+msgid "Not equal to"
+msgstr "Diferente de"
+
+#: lib/Storage.php:353
+msgid "Notify email address"
+msgstr "Endereço de correio electrónico de notificação"
+
+#: lib/Storage.php:347
+msgid "Only flag the message"
+msgstr "Apenas marcar a mensagem"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Opções sobre actualização de \"scripts\"."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Outras Opções"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Visão Geral"
+
+#: templates/javascript/new_folder.js:6
+msgid "Please enter the name of the new folder:"
+msgstr "Por favor introduza o nome da nova pasta:"
+
+#: templates/vacation/vacation.inc:60
+msgid "R_eason"
+msgstr "R_azão"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Recebida"
+
+#: lib/Storage.php:328
+msgid "Redirect to"
+msgstr "Redirecionar para"
+
+#: lib/Storage.php:385
+msgid "Regular expression"
+msgstr "Expressão regular"
+
+#: lib/Storage.php:343
+msgid "Reject with reason"
+msgstr "Rejeitar com razão"
+
+#: config/fields.php.dist:55
+msgid "Resent To"
+msgstr "Reenviada Para"
+
+#: config/fields.php.dist:51
+msgid "Resent-from"
+msgstr "Reenviada De"
+
+#: templates/rule/footer.inc:60
+msgid "Return to Filters List"
+msgstr "Voltar à Lista de Filtros"
+
+#: templates/whitelist/whitelist.inc:24 templates/blacklist/blacklist.inc:41
+#: templates/vacation/vacation.inc:71 templates/forward/forward.inc:34
+msgid "Return to Rules List"
+msgstr "Voltar à Lista de Regras"
+
+#: templates/filters/header.inc:47
+msgid "Rule"
+msgstr "Regra"
+
+#: filters.php:63
+msgid "Rule Copied"
+msgstr "Regra Copiada"
+
+#: filters.php:42
+msgid "Rule Deleted"
+msgstr "Regra Removida"
+
+#: filters.php:79
+msgid "Rule Disabled"
+msgstr "Regra Desactivada"
+
+#: filters.php:84
+msgid "Rule Enabled"
+msgstr "Regra Activada"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name"
+msgstr "Nome da Regra"
+
+#: lib/Script/sieve.php:2068
+msgid "Rule:"
+msgstr "Regra:"
+
+#: lib/Driver/ldap.php:88
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "STARTLS falhou: (%s) %s"
+
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:40
+#: templates/vacation/vacation.inc:70 templates/forward/forward.inc:33
+#: templates/rule/footer.inc:59
+msgid "Save"
+msgstr "Guardar"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Guardar Configurações"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "\"Script\""
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Atualização de \"Scripts\""
+
+#: lib/Ingo.php:186
+msgid "Script not updated."
+msgstr "\"Scripts\" não foi atualizado."
+
+#: lib/Ingo.php:141
+msgid "Script successfully activated."
+msgstr "\"Script\" activado com sucesso."
+
+#: lib/Ingo.php:140
+msgid "Script successfully deactivated."
+msgstr "\"Script\" desativado com sucesso."
+
+#: templates/rule/footer.inc:29
+msgid "Seen"
+msgstr "Lido"
+
+#: rule.php:190
+msgid "Select a field"
+msgstr "Seleccione o campo"
+
+#: lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "Seleccione a pasta alvo"
+
+#: rule.php:227
+msgid "Self-Defined Header"
+msgstr "Cabeçalho Personalizado"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Remetente"
+
+#: filters.php:98
+msgid "Settings successfully updated."
+msgstr "Configurações actualizadas com sucesso."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Mostrar \"Script\" Activo"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Mostrar \"Script\" Corrente"
+
+#: config/fields.php.dist:83
+msgid "Size"
+msgstr "Tamanho"
+
+#: templates/rule/footer.inc:49
+msgid "Stop checking if this rule matches?"
+msgstr "Parar a verificação quando esta regra for executada?"
+
+#: templates/vacation/vacation.inc:51
+msgid "Subje_ct of vacation message:"
+msgstr "A_ssunto da mensagem de ausência:"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Assunto"
+
+#: lib/Script/sieve.php:2067
+msgid "Subject:"
+msgstr "Assunto:"
+
+#: lib/api.php:85
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "O endereço \"%s\" foi adicionado à sua lista negra."
+
+#: lib/api.php:104
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "O endereço \"%s\" foi adicionado à sua lista branca."
+
+#: lib/Ingo.php:136
+msgid "The driver said: "
+msgstr "O mecanismo disse: "
+
+#: lib/Ingo.php:135
+msgid "There was an error activating the script."
+msgstr "Ocorreu um erro ao activar o \"script\"."
+
+#: lib/Ingo.php:134
+msgid "There was an error deactivating the script."
+msgstr "Ocorreu um erro ao desativar o \"script\"."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Para"
+
+#: templates/filters/filter.html:23
+msgid "To:"
+msgstr "Para:"
+
+#: lib/Script.php:127
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Impossível actualizar a definição de %s."
+
+#: filters.php:160 templates/vacation/vacation.inc:5
+#: lib/Script/procmail.php:262 lib/Script/sieve.php:352
+#: lib/Block/overview.php:60 lib/Block/overview.php:62
+msgid "Vacation"
+msgstr "Mensagens de Ausência"
+
+#: vacation.php:71
+msgid "Vacation Edit"
+msgstr "Editar Mensagens de Ausência"
+
+#: vacation.php:16
+msgid "Vacation is not supported in the current filtering driver."
+msgstr ""
+"Mensagens de ausência não são suportadas pelo mecanismo de filtragem "
+"corrente."
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Endereços na Lista _Branca:"
+
+#: filters.php:154 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:79 lib/Block/overview.php:82
+msgid "Whitelist"
+msgstr "Lista Branca"
+
+#: whitelist.php:55
+msgid "Whitelist Edit"
+msgstr "Editar Lista Branca"
+
+#: whitelist.php:18
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Lista Branca não é supportada pelo mecanismo de filtragem corrente."
+
+#: lib/Script/procmail.php:234 lib/Script/sieve.php:298
+#: lib/Script/maildrop.php:203
+msgid "Whitelisted Addresses"
+msgstr "Endereços na Lista Branca"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Prioridade"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Nível-de-Spam"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Classificação-de-Spam"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Estado-de-Spam"
+
+#: filters.php:56 rule.php:144
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Não tem autorização para criar mais do que %d regras."
+
+#: filters.php:48 rule.php:21
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Não tem autorização para criar ou alterar regras costumizadas."
+
+#: lib/Script/sieve.php:2065
+msgid "You have received a new message"
+msgstr "Recebeu uma nova mensagem."
+
+#: vacation.php:30
+msgid ""
+"You must specify at least one email address for which the vacation messages "
+"should be activated."
+msgstr ""
+"Tem de especificar pelo menos um endereço de correio electrónico para que a "
+"mensagem de ausência seja activada."
+
+#: lib/Script/imap.php:274 lib/Script/imap.php:297 lib/Script/imap.php:311
+msgid "[No Subject]"
+msgstr "[Sem Assunto]"
+
+#: templates/forward/forward.inc:24
+msgid "_Address(es) to forward to:"
+msgstr "_Endereço(s) para os quais redirecionar:"
+
+#: templates/vacation/vacation.inc:23
+msgid "_Addresses to not send responses to:"
+msgstr "_Endereço(s) ao(s) qual(is) não enviar respostas:"
+
+#: lib/Ingo.php:326
+msgid "_Blacklist"
+msgstr "Lista _Negra"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "Remo_ver mensagem completamente"
+
+#: templates/blacklist/blacklist.inc:31
+msgid "_Enter each address on a new line:"
+msgstr "_Introduza cada endereço em sua linha:"
+
+#: lib/Ingo.php:332
+msgid "_Forward"
+msgstr "_Redirecionamento"
+
+#: templates/forward/forward.inc:17
+msgid "_Keep a copy of messages in this account?"
+msgstr "_Manter uma cópia das mensagens nesta conta?"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "_Mover mensagem para a pasta:"
+
+#: templates/vacation/vacation.inc:13
+msgid "_My email addresses:"
+msgstr "_Meu(s) endereço(s) de correio electrónico:"
+
+#: lib/Ingo.php:335
+msgid "_Script"
+msgstr "\"_Script\""
+
+#: lib/Ingo.php:329
+msgid "_Vacation"
+msgstr "_Ausências"
+
+#: lib/Ingo.php:323
+msgid "_Whitelist"
+msgstr "Lista _Branca"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "activa"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "e"
+
+#: templates/filters/filter.html:13
+msgid "disabled - click to enable"
+msgstr "inactivo - clique para activar"
+
+#: filters.php:184
+msgid "field"
+msgstr "campo"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "inactiva"
+
+#: lib/Script/maildrop.php:121
+msgid "maildrop script generated by Ingo"
+msgstr "\"Script\" do procmail gerado pelo Ingo"
+
+#: filters.php:184
+msgid "match"
+msgstr "corresponde"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "ou"
+
+#: lib/Script/procmail.php:128
+msgid "procmail script generated by Ingo"
+msgstr "\"Script\" do procmail gerado pelo Ingo"
diff --git a/ingo/po/ro_RO.po b/ingo/po/ro_RO.po
new file mode 100644 (file)
index 0000000..8c94e5b
--- /dev/null
@@ -0,0 +1,494 @@
+# Romanian translations for Ingo package.
+# Copyright 2003-2009 The Horde Project
+# This file is distributed under the same license as the Ingo package.
+# Eugen Hoanca <eugenh@urban-grafx.ro>, 2003.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo 0.1\n"
+"POT-Creation-Date: 2003-03-04 13:46+0100\n"
+"PO-Revision-Date: 2005-05-28 13:01+0200\n"
+"Last-Translator: Eugen Hoanca <eugenh@urban-grafx.ro>\n"
+"Language-Team: Romanian <i18n@lists.horde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: templates/script/header.inc:13
+msgid "Activate this script"
+msgstr "Activeaza acest script"
+
+#: templates/vacation/vacation.inc:34
+msgid "Addresses not to send responses to"
+msgstr "Adresele la care sa nu se trimita raspunsuri"
+
+#: templates/rules/header.inc:26
+msgid "All of the following"
+msgstr "Toate din cele urmatoare"
+
+#: templates/rules/footer.inc:36
+msgid "Answered"
+msgstr "Raspunse"
+
+#: templates/rules/header.inc:29
+msgid "Any of the following"
+msgstr "Oricare din urmatoarele"
+
+#: config/prefs.php.dist:80
+msgid "Automatically update the script after each change?"
+msgstr "Improspatare automata a scriptului dupa fiecare schimbare?"
+
+#: config/tests.php.dist:71
+msgid "Bcc"
+msgstr "Bcc"
+
+#: config/tests.php.dist:18
+msgid "Begins With"
+msgstr "Incepe cu"
+
+#: templates/menu/menu.inc:7
+msgid "Blacklist"
+msgstr "Lista neagra"
+
+#: lib/Ingo.php:233
+msgid "Blacklisted Addresses"
+msgstr "Adrese din lista neagra"
+
+#: rule.php:127
+msgid "Case Sensitive"
+msgstr "Caz senzitiv"
+
+#: config/tests.php.dist:68
+msgid "Cc"
+msgstr "Cc"
+
+#: rule.php:168 vacation.php:25 blacklist.php:61
+msgid "Changes Saved"
+msgstr "Modificari salvate"
+
+#: config/tests.php.dist:6
+msgid "Contains"
+msgstr "Contin(e)"
+
+#: templates/filters/filter.inc:18
+msgid "Copy %s"
+msgstr "Copiere %s"
+
+#: templates/filters/footer.inc:11
+msgid "Copy Rule"
+msgstr "Regula copiere"
+
+#: filters.php:59
+msgid "Copy of %s"
+msgstr "Copie a %s"
+
+#: templates/filters/filter.inc:17
+msgid "Delete %s"
+msgstr "Stergere %s"
+
+#: templates/rules/filter.inc:27
+msgid "Delete Condition"
+msgstr "Stergere conditie"
+
+#: templates/filters/footer.inc:12
+msgid "Delete Rule"
+msgstr "Stergere regula"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Delete message completely"
+msgstr "Stergere completa mesaj"
+
+#: templates/rules/footer.inc:39
+msgid "Deleted"
+msgstr "Sters(e)"
+
+#: rule.php:42
+msgid "Deliver into my INBOX and Redirect to"
+msgstr "Livrare in INBOX si redirectare catre"
+
+#: rule.php:28
+msgid "Deliver this message into my INBOX"
+msgstr "Livrare a acestui mesaj in INBOX"
+
+#: rule.php:32
+msgid "Deliver to this mailbox"
+msgstr "Livrare inspre acest mailbox"
+
+#: rule.php:36
+msgid "Discard this message"
+msgstr "Renuntare la mesaj"
+
+#: templates/rules/footer.inc:8
+msgid "Do This:"
+msgstr "Fa asta:"
+
+#: templates/vacation/vacation.inc:44
+msgid "Do not send responses to messages that contain List-* headers"
+msgstr "Nu trimite raspunsuri catre mesaje care contin headere List-*"
+
+#: config/tests.php.dist:21
+msgid "Doesn't Begin With"
+msgstr "Nu incepe cu"
+
+#: config/tests.php.dist:9
+msgid "Doesn't Contain"
+msgstr "Nu contine"
+
+#: config/tests.php.dist:27
+msgid "Doesn't End With"
+msgstr "Nu se termina cu"
+
+#: config/tests.php.dist:33
+msgid "Doesn't Exist"
+msgstr "Nu exista"
+
+#: templates/filters/filter.inc:16 templates/filters/filter.inc:24
+msgid "Edit %s"
+msgstr "Editare %s"
+
+#: templates/filters/footer.inc:10
+msgid "Edit Rule"
+msgstr "Editare regula"
+
+#: templates/vacation/vacation.inc:19
+msgid "Enable Vacation messages"
+msgstr "Activare mesaje vacanta"
+
+#: config/tests.php.dist:24
+msgid "Ends With"
+msgstr "Se termina cu"
+
+#: templates/vacation/vacation.inc:29 templates/vacation/vacation.inc:38
+#: templates/blacklist/blacklist.inc:26
+msgid "Enter each address on a new line"
+msgstr "Introduceti fiecare adresa pe linie noua"
+
+#: templates/filters/header.inc:7
+msgid "Existing Rules"
+msgstr "Reguli existente"
+
+#: config/tests.php.dist:30
+msgid "Exists"
+msgstr "Exista"
+
+#: templates/rules/header.inc:8
+msgid "Filter Rule"
+msgstr "Regula filtru"
+
+#: templates/rules/header.inc:21
+msgid "For incoming message that match:"
+msgstr "Pentru mesaje care vin si se potrivesc:"
+
+#: config/tests.php.dist:65
+msgid "From"
+msgstr "De la"
+
+#: config/tests.php.dist:39
+msgid "Greater Than"
+msgstr "Mai mare ca"
+
+#: templates/menu/menu.inc:21
+msgid "Help"
+msgstr "Ajutor"
+
+#: templates/vacation/vacation.inc:28
+msgid ""
+"If you have more than one email address coming to this mailbox then specify "
+"them here."
+msgstr ""
+"Daca aveti mai multe adrese de email inspre acest mailbox trebuie "
+"specificate aici."
+
+#: templates/rules/footer.inc:33
+msgid "Important"
+msgstr "Important"
+
+#: templates/index/notconfigured.inc:4
+msgid "Ingo is not properly configured"
+msgstr "Ingo nu este corect configurat"
+
+#: config/tests.php.dist:12
+msgid "Is"
+msgstr "Este"
+
+#: config/tests.php.dist:15
+msgid "Isn't"
+msgstr "Nu este"
+
+#: config/prefs.php.dist:6
+msgid "Language"
+msgstr "Limba"
+
+#: config/tests.php.dist:36
+msgid "Less Than"
+msgstr "Mai putin decat"
+
+#: config/tests.php.dist:80
+msgid "List-ID"
+msgstr "Id-lista"
+
+#: lib/Sieve_Script.php:1082
+msgid "Mailbox Missing to deliver the message into"
+msgstr "Nu exista mailbox in care sa se livreze mesajul"
+
+#: templates/rules/footer.inc:26
+msgid "Mark Message as:"
+msgstr "Marcare mesaj ca:"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "Mark message as deleted"
+msgstr "Marcare mesaj ca sters"
+
+#: lib/Sieve_Script.php:945
+msgid "Missing Address to Redirect message to"
+msgstr "Nu exista adresa pentru redirectare mesaj"
+
+#: lib/Sieve_Script.php:979
+msgid "Missing Reason for Reject"
+msgstr "Nu exista explicatie pentru respingere"
+
+#: lib/Sieve_Script.php:1149
+msgid "Missing reason in vacation."
+msgstr "Nu exista explicatie pentru vacanta."
+
+#: templates/filters/filter.inc:31
+msgid "Move Rule Down"
+msgstr "Muta regula in jos"
+
+#: templates/filters/filter.inc:28
+msgid "Move Rule Up"
+msgstr "Muta regula in sus"
+
+#: templates/blacklist/blacklist.inc:19
+msgid "Move message to folder:"
+msgstr "Muta mesaje in dosar:"
+
+#: templates/vacation/vacation.inc:24
+msgid "My email addresses"
+msgstr "Adresele mele de e-mail"
+
+#: rule.php:18 templates/filters/filter-none.inc:4
+#: templates/filters/footer.inc:9
+msgid "New Rule"
+msgstr "Regula noua"
+
+#: templates/filters/filter-none.inc:4
+msgid "No Filters. Click '%s' to create a new filter"
+msgstr "Nici un filtru. Clic pe '%s' pentru creare de filtru nou"
+
+#: lib/Sieve_Script.php:822
+msgid "No Headers Specified"
+msgstr "Headere nespecificate"
+
+#: lib/Sieve_Script.php:837
+msgid "No Strings Specified"
+msgstr "Siruri nespecificate"
+
+#: script.php:33
+msgid "No backend configured for this host"
+msgstr "Nu exista suport configurat pentru acest host"
+
+#: lib/Ingo.php:177
+msgid "No backend configured for this host - script not updated."
+msgstr "Nu exista suport pentru acest host - script neimprospatat."
+
+#: lib/Sieve_Script.php:648
+msgid "Not headers specified"
+msgstr "Headere nespecificate"
+
+#: templates/menu/menu.inc:13
+msgid "Options"
+msgstr "Optiuni"
+
+#: config/prefs.php.dist:13
+msgid "Options about script updating."
+msgstr "Optiuni pentru improspatare script."
+
+#: config/prefs.php.dist:11
+msgid "Other Options"
+msgstr "Alte optiuni"
+
+#: templates/vacation/vacation.inc:55
+msgid "Reason"
+msgstr "Explicatie"
+
+#: rule.php:39
+msgid "Redirect this message to"
+msgstr "Redirectare mesaj catre"
+
+#: rule.php:46
+msgid "Reject this message with reason"
+msgstr "Respingere acest mesaj cu explicatie"
+
+#: config/tests.php.dist:77
+msgid "Resent To"
+msgstr "Retrimitere catre"
+
+#: config/tests.php.dist:74
+msgid "Resent-from"
+msgstr "Retrimitere-de la"
+
+#: filters.php:42
+msgid "Rule Deleted"
+msgstr "Regula stearsa"
+
+#: templates/rules/header.inc:14
+msgid "Rule Name"
+msgstr "Nume regula"
+
+#: templates/menu/menu.inc:6
+msgid "Rules"
+msgstr "Reguli"
+
+#: templates/rules/footer.inc:58 templates/vacation/vacation.inc:67
+#: templates/blacklist/blacklist.inc:36
+msgid "Save"
+msgstr "Salvare"
+
+#: templates/menu/menu.inc:10 templates/script/header.inc:4
+msgid "Script"
+msgstr "Script"
+
+#: config/prefs.php.dist:12
+msgid "Script Updating"
+msgstr "Improspatare script"
+
+#: lib/Ingo.php:119
+msgid "Script successfully activated."
+msgstr "Script activat cu succes."
+
+#: templates/rules/footer.inc:30
+msgid "Seen"
+msgstr "Vazut(e)"
+
+#: lib/Ingo.php:80
+msgid "Select Target Folder"
+msgstr "Selectare dosar tinta"
+
+#: rule.php:87
+msgid "Select a field"
+msgstr "Selectare camp"
+
+#: templates/blacklist/blacklist.inc:16
+msgid "Select what should happen to mails from blacklisted addresses:"
+msgstr "Selectare comportament in caz de emailuri din lista neagra de adrese:"
+
+#: config/prefs.php.dist:22
+msgid "Select your preferred language:"
+msgstr "Selectare limba favorita:"
+
+#: config/tests.php.dist:62
+msgid "Sender"
+msgstr "Expeditor"
+
+#: config/prefs.php.dist:7
+msgid "Set your preferred display language."
+msgstr "Setare limba favorita."
+
+#: config/prefs.php.dist:71
+msgid "Show the script icon?"
+msgstr "Afisare pictograma script?"
+
+#: config/tests.php.dist:92
+msgid "Size"
+msgstr "Marime"
+
+#: templates/index/notconfigured.inc:39
+msgid "Some of Ingo's configuration files are missing:"
+msgstr "Anumite fisiere de configurare Ingo lipsesc:"
+
+#: templates/rules/footer.inc:51
+msgid "Stop Checking if this rule matches"
+msgstr "Nu verifica in caz ca regula se potriveste"
+
+#: config/tests.php.dist:59
+msgid "Subject"
+msgstr "Subiect"
+
+#: templates/vacation/vacation.inc:49
+msgid "Subject of response message:"
+msgstr "Subiect mesaj raspuns:"
+
+#: lib/Ingo.php:121
+msgid "There was an error activating this script. The driver said: %s"
+msgstr "S-a produs o eroare in activarea acestui script. Driverul raporteaza: %s"
+
+#: templates/index/notconfigured.inc:65
+msgid ""
+"This file contains all possible mail header tests that can be selected by "
+"the users."
+msgstr ""
+"Acest fisier contine toate testele posibile de headere de e-mail ce pot "
+"fi selectate de utilizatori."
+
+#: templates/index/notconfigured.inc:51
+msgid "This file contains preferences for Ingo."
+msgstr "Acest fisier contine preferinte pentru Ingo."
+
+#: templates/index/notconfigured.inc:58
+msgid "This file controls what backends are available from Ingo."
+msgstr "Acest fisier verifica ce suporturi exista pentru Ingo."
+
+#: templates/index/notconfigured.inc:44
+msgid ""
+"This is the main Sieve configuration file. It contains options for all Ingo "
+"scripts."
+msgstr ""
+"Acesta este principalul fisier de configurare Sieve. Contine optiunile pentru "
+"toate scripturile Ingo."
+
+#: config/tests.php.dist:56
+msgid "To"
+msgstr "Catre"
+
+#: prefs.php:33
+msgid "User Options"
+msgstr "Optiuni utilizator"
+
+#: templates/menu/menu.inc:8 templates/vacation/vacation.inc:7
+msgid "Vacation"
+msgstr "Vacanta"
+
+#: lib/Ingo.php:322
+msgid "Vacation Message"
+msgstr "Mesaj vacanta"
+
+#: templates/vacation/vacation.inc:13
+msgid ""
+"Vacation messages are automatic responses sent to people when they email "
+"you. They are normally used when you are away for a long period of time."
+msgstr ""
+"Mesajele de vacanta sunt raspunsuri automate catre cei care v-au trimis "
+"e-mail. Sunt folositoare atunci cand sunteti plecat mult timp."
+
+#: templates/blacklist/blacklist.inc:27
+msgid "Wildcard addresses are okay but use carefully! (eg *@example.com)"
+msgstr "Adresele generale sunt ok, dar utilizate cu grija! (eg *@exemplu.ro)"
+
+#: config/tests.php.dist:89
+msgid "X-Priority"
+msgstr "X-Prioritate"
+
+#: config/tests.php.dist:83
+msgid "X-Spam-Level"
+msgstr "X-Nivel-Spam"
+
+#: config/tests.php.dist:86
+msgid "X-Spam-Status"
+msgstr "X-Stare-Spam"
+
+#: config/prefs.php.dist:5
+msgid "Your Information"
+msgstr "Detalii personale"
+
+#: templates/rules/filter.inc:7
+msgid "and the"
+msgstr "si"
+
+#: templates/rules/filter.inc:7
+msgid "or the"
+msgstr "sau"
+
+#: templates/rules/filter.inc:9
+msgid "the"
+msgstr " "
diff --git a/ingo/po/ru_RU.po b/ingo/po/ru_RU.po
new file mode 100644 (file)
index 0000000..72d8a4b
--- /dev/null
@@ -0,0 +1,1023 @@
+# Russian translations for Ingo package
+# Copyright 
+# Automatically generated, 2008.
+# Alexey Zakharov <baber@mosga.net>, 2008
+# This file is distributed under the same license as the Ingo package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo H3 (1.2)\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2008-01-22 17:27+0100\n"
+"PO-Revision-Date: 2008-01-22 17:27+0100\n"
+"Last-Translator: Alexey Zakharov <baber@mosga.net>\n"
+"Language-Team: Russian <i18n@lists.horde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CP1251\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: filters.php:223
+msgid " and"
+msgstr " è"
+
+#: filters.php:223
+msgid " or"
+msgstr " èëè"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Äåéñòâèå äëÿ ñîîáùåíèé èç ÷åðíîãî ñïèñêà:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Çàïóñòèòü ñêðèïò"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr ""
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Äîïîëíèòåëüíûå óñòàíîâêè"
+
+#: forward.php:43
+msgid "Address(es) to forward to:"
+msgstr "Àäðåñà äëÿ ïåðåíàïðàâëåíèÿ:"
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr ""
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr "Äîïîëíèòåëüíûå óñòàíîâêè:"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Âñå èç ïåðå÷èñëåííîãî"
+
+#: lib/api.php:68
+msgid "Allow Rules"
+msgstr ""
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Îòâå÷åííûå"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Ëþáîå èç ïåðå÷èñëåíîãî"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Ïðèìåíèòü ôèëüòðû"
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr "Óäàëèòü ýòî ïðàâèëî, âû óâåðåíû?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr ""
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr "Îñíîâíûå óñòàíîâêè"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr ""
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Íà÷èíàåòñÿ ñ"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr ""
+
+#: filters.php:174 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:95 lib/Block/overview.php:98
+msgid "Blacklist"
+msgstr "×åðíûé ñïèñîê"
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr "Ðåäàêòèðîâàíèå ÷åðíîãî ñïèñêà"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/procmail.php:209 lib/Script/sieve.php:269
+#: lib/Script/maildrop.php:197
+msgid "Blacklisted Addresses"
+msgstr "Àäðåñà èç ÷åðíîãî ñïèñêà"
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "Òåëî"
+
+#: filters.php:220 rule.php:322
+msgid "Case Sensitive"
+msgstr ""
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr ""
+
+#: spam.php:90 rule.php:141 whitelist.php:38 forward.php:56 vacation.php:81
+#: blacklist.php:70
+msgid "Changes saved."
+msgstr "Èçìåíåíèÿ ñîõðàíåíû"
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Îøèáêà ñîåäèíåíèÿ"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Ñîäåðæèò"
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr ""
+
+#: lib/Storage.php:993 lib/Storage/sql.php:618
+#, php-format
+msgid "Copy of %s"
+msgstr ""
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr ""
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr ""
+
+#: lib/Script/procmail.php:342 lib/Script/maildrop.php:362
+msgid "DISABLED: "
+msgstr ""
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr ""
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr ""
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr ""
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "Îêîí÷àòåëüíî óäàëèòü ñîîáùåíèå"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Óäàëåíî"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "Äîñòàâèòü âî Âõîäÿùèå"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr ""
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr ""
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr ""
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr ""
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr "Îòêëþ÷èòü %s"
+
+#: spam.php:149 forward.php:99 vacation.php:153
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+#: templates/rule/header.inc:26
+msgid "Disabled"
+msgstr ""
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Îòîáðàæàòü ñîîáùåíèå â ñëó÷àå êàæäîãî ïðèìåíåíèÿ ïðàâèëà?"
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr ""
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr ""
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr ""
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Íå ñîäåðæèò"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "Íå çàâåðøàåòñÿ íà"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "Íå ñóùåñòâóåò"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "Íå ñîâïàäàåò (ñ ìàñêîé)"
+
+#: templates/filters/header.inc:26 lib/Block/overview.php:63
+#: lib/Block/overview.php:72 lib/Block/overview.php:87
+#: lib/Block/overview.php:97 lib/Block/overview.php:107
+msgid "Edit"
+msgstr "Ðåäàêòèðîâàòü"
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr "Ïðàâèòü %s"
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr ""
+
+#: templates/filters/header.inc:28
+msgid "Enabled"
+msgstr "Àêòèâíî"
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr ""
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "Çàêàí÷èâàåòñÿ íà"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr ""
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr ""
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr ""
+
+#: templates/filters/header.inc:20
+msgid "Existing Rules"
+msgstr "Ñóùåñòâóþùèå ïðàâèëà"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Ñóùåñòâóåò"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr ""
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr ""
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr ""
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr ""
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "Ïîëå"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Âñå ñîîáùåíèÿ"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Òîëüêî ïðîñìîòðåííûå"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Òîëüêî íåïðîñìîòðåííûå"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Îáëàñòü ôèëüòðàöèè"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr ""
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr ""
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr ""
+
+#: lib/Ingo.php:379
+msgid "Filter _Rules"
+msgstr "Ïðàâèëà"
+
+#: lib/Script/imap.php:348
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr ""
+
+#: lib/Script/imap.php:334
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr ""
+
+#: lib/Script/imap.php:312
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr ""
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+
+#: lib/Script/imap.php:345
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+
+#: lib/Script/imap.php:329
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr ""
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr ""
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr ""
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr ""
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr ""
+
+#: filters.php:192 forward.php:97 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Ïåðåíàïðàâèòü"
+
+#: lib/Script/sieve.php:222
+msgid "Forward Keep Action"
+msgstr ""
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/procmail.php:288 lib/Script/sieve.php:232
+#: lib/Script/maildrop.php:246
+msgid "Forwards"
+msgstr ""
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr ""
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Îò"
+
+#: lib/Script/sieve.php:2927
+msgid "From:"
+msgstr "Îò:"
+
+#: lib/Script/sieve.php:118
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr ""
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Áîëüøå ÷åì"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Áîëüøå ÷åì èëè ðàâíî"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/sieve.php:2521
+msgid "Inexistant mailbox specified for message delivery."
+msgstr ""
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr ""
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr ""
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr ""
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Ìåíåå ÷åì"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Ìåíåå ÷åì èëè ðàâíî"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr ""
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr ""
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Îòìåòèòü ñîîáùåíèå êàê:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr ""
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr ""
+
+#: lib/api.php:71
+msgid "Maximum Number of Rules"
+msgstr "Ìàêñèìàëüíîå êîëè÷åñòâî ïðàâèë"
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+
+#: lib/Script/sieve.php:2941
+msgid "Missing address to notify"
+msgstr ""
+
+#: lib/Script/sieve.php:2322
+msgid "Missing address to redirect message to"
+msgstr ""
+
+#: lib/Script/sieve.php:2368
+msgid "Missing reason for reject"
+msgstr ""
+
+#: lib/Script/sieve.php:2671
+msgid "Missing reason in vacation."
+msgstr ""
+
+#: templates/filters/header.inc:32
+msgid "Move"
+msgstr "Ïåðåìåñòèòü"
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr "Ïåðåìåñòèòü íèæå"
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr "Ïåðåìåñòèòü âûøå"
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr ""
+
+#: templates/filters/filter-none.inc:3 templates/filters/footer.inc:6
+#: lib/Storage.php:889
+msgid "New Rule"
+msgstr "Íîâîå ïðàâèëî"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr ""
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr ""
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr ""
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr ""
+
+#: lib/Script/sieve.php:1679 lib/Script/sieve.php:1828
+#: lib/Script/sieve.php:2044
+msgid "No headers specified"
+msgstr ""
+
+#: script.php:69
+msgid "No script generated."
+msgstr ""
+
+#: lib/Script/sieve.php:2060 lib/Script/sieve.php:2144
+msgid "No strings specified"
+msgstr ""
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Íå ðàâíî"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr ""
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr ""
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr ""
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr ""
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Ïðî÷èå îïöèè"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr ""
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr ""
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr ""
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr "Ïðè÷èíà"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Ïîëó÷åíî"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Ïåðåíàïðàâèòü "
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Ðåãóëÿðíîå âûðàæåíèå"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr ""
+
+#: config/fields.php.dist:51
+msgid "Resent-From"
+msgstr ""
+
+#: config/fields.php.dist:55
+msgid "Resent-To"
+msgstr ""
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr ""
+
+#: spam.php:62 spam.php:130 forward.php:34 forward.php:88 vacation.php:34
+#: vacation.php:117 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "Âåðíóòüñÿ ê Ïðàâèëàì"
+
+#: templates/filters/header.inc:27
+msgid "Rule"
+msgstr "Ïðàâèëî"
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr "Ïðàâèëî ñêîïèðîâàíî"
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr "Ïðàâèëî óäàëåíî"
+
+#: spam.php:106 filters.php:94 forward.php:72 vacation.php:97
+msgid "Rule Disabled"
+msgstr "Ïðàâèëî îòìåíåíî"
+
+#: spam.php:97 filters.php:99 forward.php:63 vacation.php:88
+msgid "Rule Enabled"
+msgstr "Ïðàâèëî àêòèâèðîâàíî"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "Íàçâàíèå ïðàâèëà"
+
+#: lib/Script/sieve.php:2929
+msgid "Rule:"
+msgstr "Ïðàâèëî:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr ""
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "Ñïàì"
+
+#: spam.php:79 forward.php:45 vacation.php:62
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:41
+#: templates/rule/footer.inc:60
+msgid "Save"
+msgstr "Ñîõðàíèòü"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Ñîõðàíèòü"
+
+#: spam.php:100 spam.php:126 forward.php:66 forward.php:84 vacation.php:91
+#: vacation.php:113
+msgid "Save and Disable"
+msgstr "Ñîõðàíèòü è îòêëþ÷èòü"
+
+#: spam.php:91 spam.php:128 forward.php:57 forward.php:86 vacation.php:82
+#: vacation.php:115
+msgid "Save and Enable"
+msgstr "Ñîõðàíèòü è âêëþ÷èòü"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Ñêðèïò"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr ""
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr ""
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr ""
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr ""
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Ïðîñìîòðåíî"
+
+#: rule.php:218
+msgid "Select a field"
+msgstr "Âûáåðèòå ïîëå"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr ""
+
+#: rule.php:347 templates/blacklist/blacklist.inc:23 lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "Âûáåðèòå ïàïêó"
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr ""
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Îòïðàâèòåëü"
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr "Óñòàíîâêè óñïåøíî îáíîâëåíû"
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr ""
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr ""
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr ""
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "Ðàçìåð"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr ""
+
+#: filters.php:198 lib/Script/sieve.php:425 lib/Script/maildrop.php:301
+#: lib/Block/overview.php:105 lib/Block/overview.php:108
+msgid "Spam Filter"
+msgstr "Ôèëüòð ñïàìà"
+
+#: spam.php:147 spam.php:154
+msgid "Spam Filtering"
+msgstr "Ôèëüòðàöèÿ ñïàìà"
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr "Óðîâåíü ñïàìà: "
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr ""
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr ""
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Òåìà"
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr ""
+
+#: lib/Script/sieve.php:2928
+msgid "Subject:"
+msgstr "Òåìà:"
+
+#: lib/api.php:103
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "Àäðåñ \"%s\" äîáàâëåí â ÷åðíûé ñïèñîê"
+
+#: lib/api.php:126
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "Àäðåñ \"%s\" äîáàâëåí â áåëûé ñïèñîê"
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr ""
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr ""
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr ""
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr ""
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr "Êîìó:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr ""
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "Çàãîëîâîê ïîëüçîâàòåëÿ"
+
+#: filters.php:186 vacation.php:151 lib/Script/procmail.php:268
+#: lib/Script/sieve.php:399 lib/Script/maildrop.php:276
+#: lib/Block/overview.php:61 lib/Block/overview.php:64
+msgid "Vacation"
+msgstr ""
+
+#: vacation.php:158
+msgid "Vacation Edit"
+msgstr ""
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr ""
+
+#: rule.php:353
+msgid "Value"
+msgstr "Çíà÷åíèå"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Àäðåñà áåëîãî ñïèñêà:"
+
+#: filters.php:180 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:85 lib/Block/overview.php:88
+msgid "Whitelist"
+msgstr "Áåëûé ñïèñîê"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "Ðåäàêèðîâàíèå áåëîãî ñïèñêà"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/procmail.php:236 lib/Script/sieve.php:329
+#: lib/Script/maildrop.php:224
+msgid "Whitelisted Addresses"
+msgstr "Àäðåñà äëÿ Áåëîãî ñïèñêà"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr ""
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr ""
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr ""
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr ""
+
+#: filters.php:71 rule.php:172
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr ""
+
+#: filters.php:63 rule.php:23
+msgid "You are not allowed to create or edit custom rules."
+msgstr ""
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr ""
+
+#: filters.php:52 rule.php:151
+msgid "You do not have permission to delete filter rules."
+msgstr ""
+
+#: filters.php:45 filters.php:112 filters.php:123 rule.php:58 rule.php:165
+msgid "You do not have permission to edit filter rules."
+msgstr ""
+
+#: lib/Script/sieve.php:2926
+msgid "You have received a new message"
+msgstr ""
+
+#: lib/Script/imap.php:307 lib/Script/imap.php:330 lib/Script/imap.php:345
+msgid "[No Subject]"
+msgstr "[Íåò òåìû]"
+
+#: lib/Ingo.php:384
+msgid "_Blacklist"
+msgstr "×åðíûé ñïèñîê"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "Îêîí÷àòåëüíî óäàëèòü ñîîáùåíèå"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "Ââåäèòå êàæäûé àäðåñ ñ íîâîé ñòðîêè:"
+
+#: lib/Ingo.php:390
+msgid "_Forward"
+msgstr "Ïåðåñëàòü"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "Ïåðåìåñòèòü â ïàïêó:"
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "Ïðàâà"
+
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr "Ñêðèïò"
+
+#: lib/Ingo.php:387
+msgid "_Vacation"
+msgstr ""
+
+#: lib/Ingo.php:381
+msgid "_Whitelist"
+msgstr "Áåëûé ñïèñîê"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "àêòèâíî"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "è"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr ""
+
+#: filters.php:218
+msgid "field"
+msgstr "ïîëå"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "íåàêòèâíî"
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr ""
+
+#: filters.php:218
+msgid "match"
+msgstr "ðàâíî"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "èëè"
+
+#: lib/Script/procmail.php:130
+msgid "procmail script generated by Ingo"
+msgstr ""
diff --git a/ingo/po/sk_SK.po b/ingo/po/sk_SK.po
new file mode 100644 (file)
index 0000000..915a93f
--- /dev/null
@@ -0,0 +1,1038 @@
+# Slovak translations for Ingo package.
+# Copyright 2008-2009 The Horde Project
+# This file is distributed under the same license as the Ingo package.
+# Martin Matu¹ka <martin@matuska.org>, 2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo H3 (1.2-RC2)\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2008-05-12 11:43+0200\n"
+"PO-Revision-Date: 2008-03-19 12:00+0100\n"
+"Last-Translator: Martin Matuska <martin@matuska.org>\n"
+"Language-Team: i18n@lists.horde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-2\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n==1) ? 0 : (n>=2 && n<=4) ? 1 : 2;\n"
+
+#: filters.php:223
+msgid " and"
+msgstr " a"
+
+#: filters.php:223
+msgid " or"
+msgstr " alebo"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Operácia pre adresy z èiernej listiny:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Zapnú» skript"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "Chyba pri aktivácii skriptu pre \"%s\": (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Ïal¹ie nastavenia"
+
+#: forward.php:43
+msgid "Address(es) to forward to:"
+msgstr "Adresy, na ktoré sa má preposiela»:"
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr "Adresy, na ktoré sa nemá posiela» odpoveï:"
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr "Roz¹írené nastavenia"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "V¹etky z nasledujúcich"
+
+#: lib/api.php:68
+msgid "Allow Rules"
+msgstr "Povolujúce pravidlá"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Zodpovedané"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Ktorékoµvek z nasledújucich"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Aplikova» filtre"
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr "Naozaj chcete vymaza» toto pravidlo?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Automaticky po ka¾dej zmene aktualizova» skript?"
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr "Zálkadné nastavenia"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Bcc"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Zaèína na"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Pripojenie (bind) zlyhalo: (%s) %s"
+
+#: filters.php:174 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:95 lib/Block/overview.php:98
+msgid "Blacklist"
+msgstr "Èierna listina"
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr "Upravi» èiernu listinu"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "Èierna listina nie je podporovaná v aktuálnom ovladaèi filtrovania."
+
+#: lib/Script/procmail.php:219 lib/Script/maildrop.php:197
+#: lib/Script/sieve.php:269
+msgid "Blacklisted Addresses"
+msgstr "Adresy v èiernej listine"
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "Telo"
+
+#: filters.php:220 rule.php:322
+msgid "Case Sensitive"
+msgstr "Rozli¹ova» veµké/malé písmená"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: whitelist.php:38 spam.php:106 rule.php:141 forward.php:56 vacation.php:81
+#: blacklist.php:70
+msgid "Changes saved."
+msgstr "Zmeny boli ulo¾ené."
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Nastala chyba pri pokuse o spojenie"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Obsahuje"
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr "Kopírova» %s"
+
+#: lib/Storage.php:993 lib/Storage/sql.php:621
+#, php-format
+msgid "Copy of %s"
+msgstr "Kópia %s"
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "Nepodarilo sa ulo¾i» vytvorený vzorový súbor: '%s'."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Vytvori» nový prieèinok"
+
+#: lib/Script/procmail.php:352 lib/Script/maildrop.php:362
+msgid "DISABLED: "
+msgstr "VYPNUTÉ: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Vypnú» skript"
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr "Vymaza» %s"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "Podmienka vymazania"
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "Vymaza» správu"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Vymazané"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "Doruèi» do prieèinka s prijatou po¹tou"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr "Doruèi» do prieèinka s prijatou po¹tou a kopírova» do"
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Doruèi» do prieèinka s prijatou po¹tou a presmerova» na"
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "Doruèi» do prieèinka"
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "Cieµ (To,Cc,Bcc,atï.)"
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr "Vypnú» %s"
+
+#: spam.php:160 forward.php:99 vacation.php:153
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+#: templates/rule/header.inc:26
+msgid "Disabled"
+msgstr "Vypnuté"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Zobrazi» detailné upozornenie pri pou¾ití ka¾dého filtra?"
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr "Neposiela» odpoveï do e-mailových konferencií?"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Vyknoa» èinnos»:"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "Nezaèína na"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Neobsahuje"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "Nekonèí na"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "Neexistuje"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "Neodpovedá vzoru (s premennými)"
+
+#: templates/filters/header.inc:23 lib/Block/overview.php:63
+#: lib/Block/overview.php:72 lib/Block/overview.php:87
+#: lib/Block/overview.php:97 lib/Block/overview.php:107
+msgid "Edit"
+msgstr "Upravi»"
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr "Upravi» %s"
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr "Zapnú» %s"
+
+#: templates/filters/header.inc:25
+msgid "Enabled"
+msgstr "Zapnutý"
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr "Koniec neprítomnosti:"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "Konèí na"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "Rovná sa"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Nastala chyba pri naèítavaní aktuálneho skriptu: (%d) %s"
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr "Nastala chyba pri ukladaní zmien"
+
+#: templates/filters/header.inc:17
+msgid "Existing Rules"
+msgstr "Existujúce pravidlá"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Existuje"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "Oèakával sa 1 objekt, pri¹lo %d."
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr "Nastala chyba èítaní zo socketu:"
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr "Nastala chyba pri zapisovaní do socketu: "
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "Nastala chyba pri zapisovaní do socketu: (spojenie zlyhalo!)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "Pole"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Filtrova» v¹etky správy"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Filtrova» iba preèítané správy"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Filtrova» iba nepreèítané správy"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Nastavenia filtrovania"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Filtrovacie pravidlo"
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr "Filtrovacie pravidlá"
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr "Zobrazenie filtrovacieho skripta"
+
+#: lib/Ingo.php:379
+msgid "Filter _Rules"
+msgstr "Filtrovacie p_ravidlá"
+
+#: lib/Script/imap.php:348
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Aktivita filtra: %s správ bolo skopírovaných do prieèinka \"%s\"."
+
+#: lib/Script/imap.php:334
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Aktivita filtra: %s správ bolo vymazaných."
+
+#: lib/Script/imap.php:312
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Aktivita filtra: %s správ bolo presunutých do prieèinka \"%s\"."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Aktivita filtra: %s správ ktoré vyhovovali èiernej listine bolo vymazaných."
+
+#: lib/Script/imap.php:345
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Aktivita filtra: Správa \"%s\" od \"%s\" bola skopírovaná do prieèinka \"%s"
+"\"."
+
+#: lib/Script/imap.php:329
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Aktivita filtra: Správa \"%s\" od \"%s\" bola vymazaná."
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Aktivita filtra: Správa \"%s\" od \"%s\" bola presunutá do prieèinka \"%s\"."
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr "Filter nebol nájdený."
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "Oznaèená ako vzor"
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr "Prieèinok na odber nevy¾iadanej po¹ty:"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Pre pri¹lú správu ktorá odpovedá vzoru:"
+
+#: filters.php:192 forward.php:97 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Preposielanie"
+
+#: lib/Script/sieve.php:222
+msgid "Forward Keep Action"
+msgstr "Preposla» a ponecha»"
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Preposielanie nie je podporované aktuálnym ovladaèom filtrovania."
+
+#: lib/Script/procmail.php:298 lib/Script/maildrop.php:246
+#: lib/Script/sieve.php:232
+msgid "Forwards"
+msgstr "Presmerovania"
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr "Upravi» presmerovania"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Od"
+
+#: lib/Script/sieve.php:2927
+msgid "From:"
+msgstr "Od:"
+
+#: lib/Script/sieve.php:118
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Vytvorené programom Ingo (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Väè¹ie ako"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Väè¹ie ako alebo rovné ako"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr ""
+"Individuálne pravidlá nie sú podporované aktuálnym ovladaèom filtrovania."
+
+#: lib/Script/sieve.php:2521
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Zadaná schránka na doruèovanie po¹ty neexistuje."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "Je"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "Nie je"
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr "Ponecha» lokálnu kópiu správ?"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"Je po¾adovaná podpora LDAP, ale LDAP modul nie je dostupný alebo nahratý."
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Men¹ie ako"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Men¹ie ako alebo rovné ako"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "List-ID"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "_Oznaèi» správu ako vymazanú."
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Oznaèi» správu ako:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "Typ porovnania"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "Odpovedá vzoru (s premennými)"
+
+#: lib/api.php:71
+msgid "Maximum Number of Rules"
+msgstr "Maximálny poèet pravidiel."
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Maximálny poèet adries v èiernej listine bol dosiahnutý (Adries spolu: %s, "
+"maximálne: %s). Nemo¾né prida» nové adresy do èiernej listiny."
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Maximálny poèet adries v bielej listine bol dosiahnutý (Adries spolu: %s, "
+"maximálne: %s). Nemo¾né prida» nové adresy do bielej listiny."
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+"Správy so spamovým skóre vy¹¹ím alebo rovným tomuto èíslo budú pova¾ované za "
+"nevy¾iadanú po¹tu."
+
+#: lib/Script/sieve.php:2941
+msgid "Missing address to notify"
+msgstr "Chýba adresa na upozornenia"
+
+#: lib/Script/sieve.php:2322
+msgid "Missing address to redirect message to"
+msgstr "Chýba adresa na preposielanie po¹ty"
+
+#: lib/Script/sieve.php:2368
+msgid "Missing reason for reject"
+msgstr "Chýba dôvod na odmietnutie"
+
+#: lib/Script/sieve.php:2671
+msgid "Missing reason in vacation."
+msgstr "Chýba dôvod pre neprítomnos»."
+
+#: templates/filters/header.inc:29
+msgid "Move"
+msgstr "Presunú»"
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr "Presunú» pravidlo dolu"
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr "Presunú» pravidlo hore"
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr "Moja e-mailová adresa:"
+
+#: templates/filters/filter-none.inc:3 templates/filters/footer.inc:6
+#: lib/Storage.php:889
+msgid "New Rule"
+msgstr "Nové pravidlo"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "Prvok \"%s\" nebol nájdený v konfigurácii backendu."
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr "Nenájdené nastavenia backendu pre tento host"
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr "V súbore backends.php nie sú nastavené ¾iadne backendy"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "®iadne filre. Kliknite \"%s\" pre vytvorenie nového filtra."
+
+#: lib/Script/sieve.php:1679 lib/Script/sieve.php:1828
+#: lib/Script/sieve.php:2044
+msgid "No headers specified"
+msgstr "Neboli zadané ¾iadne hlavièky."
+
+#: script.php:69
+msgid "No script generated."
+msgstr "®iaden skript nebol vytvorený."
+
+#: lib/Script/sieve.php:2060 lib/Script/sieve.php:2144
+msgid "No strings specified"
+msgstr "®iadne re»azce neboli zadané."
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Nerovná sa"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr "E-mailová adresa na upozornenia"
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr "Poèet dní medzi odpoveïami na neprítomnos»:"
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr "Iba oznaèi» správu príznakom"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Nastavenia aktualizácie skruptu."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Ïal¹ie nastavenia"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Prehµad"
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr "Úèastník (From,To,atï.)"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Zadajte prosím meno pre nový prieèinok:"
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr "Dôvod:"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Prijaté"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Presmerova» na"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Regulárny výraz"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr "Odmietnu» s dôvodom"
+
+#: config/fields.php.dist:51
+msgid "Resent-From"
+msgstr "Preposlané od"
+
+#: config/fields.php.dist:55
+msgid "Resent-To"
+msgstr "Preposlané komu"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "Návrat na zoznam filtrov"
+
+#: spam.php:62 spam.php:141 forward.php:34 forward.php:88 vacation.php:34
+#: vacation.php:117 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "Návrat na zoznam pravidiel"
+
+#: templates/filters/header.inc:24
+msgid "Rule"
+msgstr "Pravidlo"
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr "Pravidlo bolo skopírované"
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr "Pravidlo bolo vymazané"
+
+#: spam.php:122 filters.php:94 forward.php:72 vacation.php:97
+msgid "Rule Disabled"
+msgstr "Pravidlo bolo vypnuté"
+
+#: spam.php:113 filters.php:99 forward.php:63 vacation.php:88
+msgid "Rule Enabled"
+msgstr "Pravidlo bolo zapnuté"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "Názov pravidla:"
+
+#: lib/Script/sieve.php:2929
+msgid "Rule:"
+msgstr "Pravidlo:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "Chyba pri STARTTLS: (%s) %s"
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "_Nevy¾iadaná po¹ta"
+
+#: spam.php:79 forward.php:45 vacation.php:62
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:41
+#: templates/rule/footer.inc:60
+msgid "Save"
+msgstr "Ulo¾i»"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Ulo¾i» nastavenia"
+
+#: spam.php:116 spam.php:137 forward.php:66 forward.php:84 vacation.php:91
+#: vacation.php:113
+msgid "Save and Disable"
+msgstr "Ulo¾i» a vypnú»"
+
+#: spam.php:107 spam.php:139 forward.php:57 forward.php:86 vacation.php:82
+#: vacation.php:115
+msgid "Save and Enable"
+msgstr "Ulo¾i» a zapnú»"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Skript"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Aktualizácia skriptu"
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr "Skript nebol aktualizovaný."
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr "Skript bol úspe¹ne zapnutý."
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr "Skript bol úspe¹ne vypnutý."
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Preèítané"
+
+#: rule.php:218
+msgid "Select a field"
+msgstr "Vyberte pole"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Vybra» skupinu pravidiel na zobrazenie:"
+
+#: rule.php:347 templates/blacklist/blacklist.inc:23 lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "Vybra» cieµový prieèinok"
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr "U¾ívateµom zadaná hlavièka"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Odosielateµ"
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr "Nastavenia boli úspe¹ne aktualizované."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Zobrazi» aktívny skript"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Zobrazi» aktuálny skript"
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr ""
+"Jednoduché filtrovanie nevy¾iadanej po¹ty nie je podporované aktuálnym "
+"ovladaèom filtrovania."
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "Veµkos»"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr "Zdroj (From,Reply-to,atï.)"
+
+#: filters.php:198 lib/Script/maildrop.php:301 lib/Script/sieve.php:425
+#: lib/Block/overview.php:105 lib/Block/overview.php:108
+msgid "Spam Filter"
+msgstr "Filter pre nevy¾iadanú po¹tu"
+
+#: spam.php:158 spam.php:165
+msgid "Spam Filtering"
+msgstr "Filtrovanie nevy¾iadanej po¹ty"
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr "Úroveò nevy¾iadanej po¹ty (SPAM):"
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr "Zaèiatok neprítomnosti:"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "Nepokraèova» ak správa vyhovuje tomuto pravidlu?"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Predmet"
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr "Predmet správy o neprítomnosti:"
+
+#: lib/Script/sieve.php:2928
+msgid "Subject:"
+msgstr "Predmet:"
+
+#: lib/api.php:103
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "Adresa \"%s\" bola pridaná do Va¹ej èiernej listiny."
+
+#: lib/api.php:126
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "Adresa \"%s\" bola pridaná do Va¹ej bielej listiny."
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "Ovládaè oznámil: "
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr "Nastala chyba pri zapínaní skriptu."
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr "Nastala chyba pri vypínaní skriptu."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Pre"
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr "Pre:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Nemo¾né nahra» definíciu %s."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "U¾ívateµská hlavièka"
+
+#: filters.php:186 vacation.php:151 lib/Script/procmail.php:278
+#: lib/Script/maildrop.php:276 lib/Script/sieve.php:399
+#: lib/Block/overview.php:61 lib/Block/overview.php:64
+msgid "Vacation"
+msgstr "Neprítomnos»"
+
+#: vacation.php:158
+msgid "Vacation Edit"
+msgstr "Upravi» neprítomnos»"
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr ""
+"Neprítomnos» (vacation) nie je podporovaná aktuálnym ovladaèom filtrovania."
+
+#: rule.php:353
+msgid "Value"
+msgstr "Hodnota"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Adresy v _bielej listine:"
+
+#: filters.php:180 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:85 lib/Block/overview.php:88
+msgid "Whitelist"
+msgstr "Biela listina"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "Upravi» bielu listinu"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Biela listina nie je podporovaná aktuálnym ovladaèom filtrovania."
+
+#: lib/Script/procmail.php:246 lib/Script/maildrop.php:224
+#: lib/Script/sieve.php:329
+msgid "Whitelisted Addresses"
+msgstr "Adresy v bielej listine"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: filters.php:71 rule.php:172
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Nemáte právo vytvori» viac ako %d pravidiel."
+
+#: filters.php:63 rule.php:23
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Nemáte právo vytvori» alebo upravi» u¾ívateµské pravidlá."
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr "Nemo¾no vytvára» prázdne podmienky. Prosím zadajte hodnotu pre \"%s\"."
+
+#: filters.php:52 rule.php:151
+msgid "You do not have permission to delete filter rules."
+msgstr "Nemáte právo na vymazanie filtrovacích pravidiel."
+
+#: filters.php:45 filters.php:112 filters.php:123 rule.php:58 rule.php:165
+msgid "You do not have permission to edit filter rules."
+msgstr "Nemáte právo na úpravu filtrovacích pravidiel."
+
+#: lib/Script/sieve.php:2926
+msgid "You have received a new message"
+msgstr "Máte novú správu"
+
+#: lib/Script/imap.php:307 lib/Script/imap.php:330 lib/Script/imap.php:345
+msgid "[No Subject]"
+msgstr "[Bez predmetu]"
+
+#: lib/Ingo.php:384
+msgid "_Blacklist"
+msgstr "Èierna _listina"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "_Vymaza» správu"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "_Zadajte ka¾dú adresu na samostatný riadok:"
+
+#: lib/Ingo.php:390
+msgid "_Forward"
+msgstr "_Preposla»"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "_Presunú» správu do prieèinka:"
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "_Práva"
+
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr "_Skript"
+
+#: lib/Ingo.php:387
+msgid "_Vacation"
+msgstr "_Neprítomnos»"
+
+#: lib/Ingo.php:381
+msgid "_Whitelist"
+msgstr "_Biela listina"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "zapnuté"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "a"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "vypnuté - kliknite na zapnutie"
+
+#: filters.php:218
+msgid "field"
+msgstr "pole"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "vypnutý"
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr "maildrop script vytvoreny programom Ingo"
+
+#: filters.php:218
+msgid "match"
+msgstr "obsahujúce"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "alebo"
+
+#: lib/Script/procmail.php:140
+msgid "procmail script generated by Ingo"
+msgstr "procmail script vytvoreny programom Ingo"
diff --git a/ingo/po/sl_SI.po b/ingo/po/sl_SI.po
new file mode 100644 (file)
index 0000000..312f894
--- /dev/null
@@ -0,0 +1,1016 @@
+# translation of sl_SI.po to Slovene
+# Slovenian translations for Ingo packaga
+# Slovenski prevod Ingo paketa
+# Copyright 2006-2009 The Horde Project
+# This file is distributed under the same license as the horde package.
+#
+# Automatically generated, 2007.
+# Marko Milost <marko.milost@obala.si>, 2007.
+# Duck <duck@obala.net>, 2007.
+msgid ""
+msgstr ""
+"Project-Id-Version: sl_SI\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2007-04-25 16:26+0200\n"
+"PO-Revision-Date: 2007-04-30 11:46+0200\n"
+"Last-Translator: Marko Milost <marko.milost@obala.si>\n"
+"Language-Team: Slovene <sl@li.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=UTF-8\n"
+"Content-Transfer-Encoding: 8bit\n"
+"X-Generator: KBabel 1.11.4\n"
+
+#: filters.php:221
+msgid " and"
+msgstr " in"
+
+#: filters.php:221
+msgid " or"
+msgstr " ali"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Ukaz za naslove v črne listi"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Aktivna navodila"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "Prišlo je do napake pri aktiviranju navodil za \"%s\": (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Dodatne nastavitve"
+
+#: forward.php:41
+msgid "Address(es) to forward to:"
+msgstr "Naslovi kamor posredujem mail:"
+
+#: vacation.php:54
+msgid "Addresses to not send responses to:"
+msgstr "Naslovi na katere ne pošiljamo odgovorov:"
+
+#: vacation.php:48
+msgid "Advanced Settings"
+msgstr "Napredne nastavitve"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Vsi sledeči"
+
+#: lib/api.php:54
+msgid "Allow Rules"
+msgstr "Dovoli pravila"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Odgovorjeno"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Katerikoli od sledečih"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Izvedi filtre"
+
+#: filters.php:250
+msgid "Are you sure you want to delete this rule?"
+msgstr "Resnično želite izbrisati to navodilo?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Samodejno ažuriraj navodila po vsaki spremembi?"
+
+#: vacation.php:39
+msgid "Basic Settings"
+msgstr "Osnovne nastavitve"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Skrita kopija"
+
+#: lib/Storage.php:345
+msgid "Begins with"
+msgstr "Začne z"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Povezava neuspešna: (%s) %s"
+
+#: filters.php:172 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:95 lib/Block/overview.php:98
+msgid "Blacklist"
+msgstr "Črna lista"
+
+#: blacklist.php:109
+msgid "Blacklist Edit"
+msgstr "Uredi črno listo"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "Črna lista ni podprta v trenutnem gonilniku."
+
+#: lib/Script/procmail.php:207 lib/Script/sieve.php:252
+#: lib/Script/maildrop.php:186
+msgid "Blacklisted Addresses"
+msgstr "Naslovi v črni listi"
+
+#: config/fields.php.dist:88
+msgid "Body"
+msgstr "Vsebina"
+
+#: filters.php:218 rule.php:300
+msgid "Case Sensitive"
+msgstr "Loči velike/male črtke"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Kopija"
+
+#: spam.php:91 rule.php:130 whitelist.php:38 forward.php:54 vacation.php:79
+#: blacklist.php:75
+msgid "Changes saved."
+msgstr "Spremembe so bile shranjene."
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Povezava neuspešna"
+
+#: lib/Storage.php:341
+msgid "Contains"
+msgstr "Vsebuje"
+
+#: filters.php:261 filters.php:262
+#, php-format
+msgid "Copy %s"
+msgstr "Kopija %s"
+
+#: lib/Storage.php:983 lib/Storage/sql.php:573
+#, php-format
+msgid "Copy of %s"
+msgstr "Kopija od %s"
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "Ne morem shraniti sestavljeno šablono '%s'."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Ustvari novo mapo"
+
+#: lib/Script/procmail.php:340 lib/Script/maildrop.php:317
+msgid "DISABLED: "
+msgstr "IZKLOPLJENO: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Izklopi navodila"
+
+#: filters.php:250 filters.php:251
+#, php-format
+msgid "Delete %s"
+msgstr "Izbriši %s"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "Pogoji izbrisa"
+
+#: lib/Storage.php:289
+msgid "Delete message completely"
+msgstr "Izbriši sporočilo v celoti"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Izbrisano"
+
+#: lib/Storage.php:277
+msgid "Deliver into my Inbox"
+msgstr "Dostavi v Inbox"
+
+#: lib/Storage.php:303
+msgid "Deliver into my Inbox and copy to"
+msgstr "Dostavi v moj Inbox in kopiraj v"
+
+#: lib/Storage.php:298
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Dostavi v moj Inbox in preusmeri v"
+
+#: lib/Storage.php:283
+msgid "Deliver to folder"
+msgstr "Dostavi v mapo"
+
+#: filters.php:275 filters.php:276
+#, php-format
+msgid "Disable %s"
+msgstr "Izklopi %s"
+
+#: spam.php:150 forward.php:97 vacation.php:159
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+#: templates/rule/header.inc:26
+msgid "Disabled"
+msgstr "Izklopljeno"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Prikaži podrobne infomacije kadar naložim vsak filter?"
+
+#: vacation.php:56
+msgid "Do not send responses to bulk or list messages?"
+msgstr "Ne odgovrjam na sporočila z množičnimi prejemniki?"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Naredi to:"
+
+#: lib/Storage.php:346
+msgid "Doesn't begin with"
+msgstr "Ne začne z"
+
+#: lib/Storage.php:342
+msgid "Doesn't contain"
+msgstr "Ne vsebuje"
+
+#: lib/Storage.php:348
+msgid "Doesn't end with"
+msgstr "Se ne konča z"
+
+#: lib/Storage.php:350
+msgid "Doesn't exist"
+msgstr "Ne obstaja"
+
+#: lib/Storage.php:353
+msgid "Doesn't match (with placeholders)"
+msgstr "Ne ustreza (z vstavnimi mesti)"
+
+#: templates/filters/header.inc:47 lib/Block/overview.php:63
+#: lib/Block/overview.php:72 lib/Block/overview.php:87
+#: lib/Block/overview.php:97 lib/Block/overview.php:107
+msgid "Edit"
+msgstr "Uredi"
+
+#: filters.php:239 filters.php:241 filters.php:245 filters.php:246
+#, php-format
+msgid "Edit %s"
+msgstr "Uredi %s"
+
+#: filters.php:285 filters.php:286
+#, php-format
+msgid "Enable %s"
+msgstr "Aktiviraj %s"
+
+#: templates/filters/header.inc:49
+msgid "Enabled"
+msgstr "Aktivirano"
+
+#: vacation.php:43
+msgid "End of vacation:"
+msgstr "Konec odsotnosti:"
+
+#: lib/Storage.php:347
+msgid "Ends with"
+msgstr "Konča z"
+
+#: lib/Storage.php:358
+msgid "Equal to"
+msgstr "Je enak"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Napaka pri prebiranju trenutnih navodil: (%d) %s"
+
+#: blacklist.php:73
+msgid "Error saving changes."
+msgstr "Napaka pri shranjevanju sprememb."
+
+#: templates/filters/header.inc:41
+msgid "Existing Rules"
+msgstr "Obstoječa pravila"
+
+#: lib/Storage.php:349
+msgid "Exists"
+msgstr "Obstaja"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "Pričakovan je bil 1 objekt, dobljenih pa je %d."
+
+#: lib/Driver/sivtest.php:205
+msgid "Failed to read from socket: "
+msgstr "Ne morem brati s povezave: "
+
+#: lib/Driver/sivtest.php:200
+msgid "Failed to write to socket: "
+msgstr "Ne morem pisat na povezavi: "
+
+#: lib/Driver/sivtest.php:195
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "Ne morem brati s povezave: (prekinjena povezava!)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "Polje"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Filtriraj vsa sporočila"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Filtriraj samo prebrana sporočila"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Filtriraj samo neprebrana sporočila"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Nastavitve filterja"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Pravilo filterja"
+
+#: filters.php:137
+msgid "Filter Rules"
+msgstr "Pravila filterjev"
+
+#: script.php:52
+msgid "Filter Script Display"
+msgstr "Prikaži navodilo filterja"
+
+#: lib/Ingo.php:378
+msgid "Filter _Rules"
+msgstr "Pravila filterjev"
+
+#: lib/Script/imap.php:342
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Dejanja filtra: %s sporočil je bilo kopiranih v mapo \"%s\"."
+
+#: lib/Script/imap.php:328
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Dejanja filtra: %s sporočil je bilo izbrisanih."
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Dejanja filtra: %s sporočil je bilo premaknjenihv mapo \"%s\"."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Dejanja filtra: %s sporočil je bilo izbrisanih, ker so pošiljatelji v črni "
+"listi."
+
+#: lib/Script/imap.php:339
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Dejanja filtra: Sporočilo \"%s\" iz \"%s\" je bilo skopirano v mapo \"%s\"."
+
+#: lib/Script/imap.php:323
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Dejanja filtra: Sporočilo \"%s\" od \"%s\" je bilo izbrisano."
+
+#: lib/Script/imap.php:300
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Dejanja filtra: Spročilo \"%s\" iz \"%s\" je bilo premaknjeno v mapo \"%s\"."
+
+#: rule.php:178
+msgid "Filter not found."
+msgstr "Ne najdem filtra."
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "Označen za premik gor"
+
+#: spam.php:75
+msgid "Folder to receive spam:"
+msgstr "Mapa kamor shranjujem spam:"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Za prihajajoča sporočila ki ustrezajo:"
+
+#: filters.php:190 forward.php:95 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Posreduj"
+
+#: forward.php:16
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Posredovanje ni podprto s strani trenutnega gonilnika."
+
+#: lib/Script/procmail.php:286 lib/Script/sieve.php:212
+#: lib/Script/maildrop.php:235
+msgid "Forwards"
+msgstr "Posredovanja"
+
+#: forward.php:102
+msgid "Forwards Edit"
+msgstr "Uredi posredovanja"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Od"
+
+#: lib/Script/sieve.php:2400
+msgid "From:"
+msgstr "Od:"
+
+#: lib/Script/sieve.php:111
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Ustvarjeno z ObalaNET (http://mail.obala.net)"
+
+#: lib/Storage.php:356
+msgid "Greater than"
+msgstr "Večji od"
+
+#: lib/Storage.php:357
+msgid "Greater than or equal to"
+msgstr "Večji ali enak"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "Individualna pravila niso podprta s strani trenutnega gonilnika."
+
+#: lib/Script/sieve.php:2062
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Izbrali ste neobstoječo mapo pošte za dostavo."
+
+#: lib/Storage.php:343
+msgid "Is"
+msgstr "Je"
+
+#: lib/Storage.php:344
+msgid "Isn't"
+msgstr "Ni"
+
+#: forward.php:39
+msgid "Keep a copy of messages in this account?"
+msgstr "Ohrani kopijo sporočila v tem poštnem predalu?"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr "LDAP podpora je potrebana za LDAP gonilnik."
+
+#: lib/Storage.php:354
+msgid "Less than"
+msgstr "Manj kot"
+
+#: lib/Storage.php:355
+msgid "Less than or equal to"
+msgstr "Manj ali enako"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "ID Liste"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "Označi sporočilo kot pobrisano"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Označi sporočilo kot:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "Tip ustreznosti"
+
+#: lib/Storage.php:352
+msgid "Matches (with placeholders)"
+msgstr "Ustreza (z vstavnimi mesti)"
+
+#: lib/api.php:57
+msgid "Maximum Number of Rules"
+msgstr "Največje število pravil"
+
+#: lib/Storage.php:479
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Preseženo največje število naslovov v črni listi (Skupaj: %s, od %s "
+"dovoljenih). Ne morem dodati novega naslova v črno listo."
+
+#: lib/Storage.php:532
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Preseženo največje število naslovov v beli listi (Skupaj: %s, od %s "
+"dovoljenih). Ne morem dodatni novega naslova v belo listo."
+
+#: spam.php:72
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+"Sporočilo s spam označbo večje ali enako sledeči številki bo smatran kot "
+"spam."
+
+#: lib/Script/sieve.php:2408
+msgid "Missing address to notify"
+msgstr "Manjka naslov za obestiti"
+
+#: lib/Script/sieve.php:1930
+msgid "Missing address to redirect message to"
+msgstr "Manjka naslov na katerega moramo preusmeriti"
+
+#: lib/Script/sieve.php:1962
+msgid "Missing reason for reject"
+msgstr "Manjka razlog za zavrnitev"
+
+#: lib/Script/sieve.php:2190
+msgid "Missing reason in vacation."
+msgstr "Manjka razlog dosotnosti"
+
+#: templates/filters/header.inc:51
+msgid "Move"
+msgstr "Premakni"
+
+#: filters.php:154 filters.php:271
+msgid "Move Rule Down"
+msgstr "Premakni pravilo dol"
+
+#: filters.php:155 filters.php:270
+msgid "Move Rule Up"
+msgstr "Premakni pravilo gor"
+
+#: vacation.php:51
+msgid "My email addresses:"
+msgstr "Moj email naslov:"
+
+#: templates/filters/filter-none.inc:3 templates/filters/footer.inc:6
+#: lib/Storage.php:879
+msgid "New Rule"
+msgstr "Novo pravilo"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "Ni \"%s\" elementa v nastavitvah gonilnika."
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr "Ni nastavljenih gonilnikov za ta strežnik"
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr "Ni nastavljenih gonilnikov v backends.php"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Ni filtrov. Klikni \"%s\" za tvorjenje novega."
+
+#: lib/Script/sieve.php:1460 lib/Script/sieve.php:1558
+#: lib/Script/sieve.php:1735
+msgid "No headers specified"
+msgstr "Glava sporočila ni bila določena"
+
+#: script.php:67
+msgid "No script generated."
+msgstr "Navodila niso bila tvorjena."
+
+#: lib/Script/sieve.php:1751 lib/Script/sieve.php:1815
+msgid "No strings specified"
+msgstr "Ni bilo nastavljenih besedil"
+
+#: lib/Storage.php:359
+msgid "Not equal to"
+msgstr "Ni enako ko"
+
+#: lib/Storage.php:319
+msgid "Notify email address"
+msgstr "Opozori na email naslov"
+
+#: vacation.php:58
+msgid "Number of days between vacation replies:"
+msgstr "Število dni med odgovori o odsotnosti:"
+
+#: lib/Storage.php:313
+msgid "Only flag the message"
+msgstr "Samo označi sporočilo"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Možnost osveževanja navodil."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Ostale možnosti."
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Pregled"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Vnesite ime nove mape"
+
+#: vacation.php:46
+msgid "Reason:"
+msgstr "Razlog:"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Prejet"
+
+#: lib/Storage.php:294
+msgid "Redirect to"
+msgstr "Preusmeri na"
+
+#: lib/Storage.php:351
+msgid "Regular expression"
+msgstr "Izraz (regex)"
+
+#: lib/Storage.php:309
+msgid "Reject with reason"
+msgstr "Zavrni z razlogom"
+
+#: config/fields.php.dist:55
+msgid "Resent To"
+msgstr "Ponovno pošlji na"
+
+#: config/fields.php.dist:51
+msgid "Resent-from"
+msgstr "Resent-from"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "Vrni se na spisek filtrov"
+
+#: spam.php:63 spam.php:131 forward.php:32 forward.php:86 vacation.php:32
+#: vacation.php:117 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "Vrni se na spisek pravil"
+
+#: templates/filters/header.inc:48
+msgid "Rule"
+msgstr "Pravilo"
+
+#: filters.php:76
+msgid "Rule Copied"
+msgstr "Pravilo skopirano"
+
+#: filters.php:55
+msgid "Rule Deleted"
+msgstr "Pravilo izbrisano"
+
+#: spam.php:107 filters.php:92 forward.php:70 vacation.php:96
+msgid "Rule Disabled"
+msgstr "Pravilo izklopljeno"
+
+#: spam.php:98 filters.php:97 forward.php:61 vacation.php:87
+msgid "Rule Enabled"
+msgstr "Pravilo vklopljeno"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "Ime pravila:"
+
+#: lib/Script/sieve.php:2402
+msgid "Rule:"
+msgstr "Pravilo:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "STARTTLS ni uspel: (%s) %s"
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "S_pam"
+
+#: spam.php:80 forward.php:43 vacation.php:60
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:41
+#: templates/rule/footer.inc:60
+msgid "Save"
+msgstr "Shrani"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Shrani nastavitve"
+
+#: spam.php:101 spam.php:127 forward.php:64 forward.php:82 vacation.php:90
+#: vacation.php:113
+msgid "Save and Disable"
+msgstr "Shrani in izklopi"
+
+#: spam.php:92 spam.php:129 forward.php:55 forward.php:84 vacation.php:81
+#: vacation.php:115
+msgid "Save and Enable"
+msgstr "Shrani in vklopi"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Navodila"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Osveževanje navodil"
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr "Navodila niso bila ažurirana"
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr "Navodila uspešno vkopljena."
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr "Navodila uspešno izklopljena."
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Prebrano"
+
+#: rule.php:208
+msgid "Select a field"
+msgstr "Izberi kot polje"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Izberite pravila za prikaz:"
+
+#: rule.php:326 templates/blacklist/blacklist.inc:23 lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "Izberi namensko mapo"
+
+#: rule.php:245
+msgid "Self-Defined Header"
+msgstr "Samo-nastavljena glava"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Pošiljatelj"
+
+#: filters.php:116
+msgid "Settings successfully updated."
+msgstr "Nastavitve uspešno ažurirane."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Prikaži aktivna navodila"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Prikaži trenutna navodila"
+
+#: spam.php:19
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr "Enostavno filtriranje reklamne pošte ni podrto v tem gonilniku."
+
+#: config/fields.php.dist:83
+msgid "Size"
+msgstr "Velikost"
+
+#: filters.php:196 lib/Script/sieve.php:429 lib/Block/overview.php:105
+#: lib/Block/overview.php:108
+msgid "Spam Filter"
+msgstr "Spam Filter"
+
+#: spam.php:148 spam.php:155
+msgid "Spam Filtering"
+msgstr "Spam filtriranje"
+
+#: spam.php:72
+msgid "Spam Level:"
+msgstr "Spam stopnja:"
+
+#: vacation.php:41
+msgid "Start of vacation:"
+msgstr "Pričetek odsotnosti:"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "Ustavi pregledovanje, če to pravilo ustreza?"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Naslov"
+
+#: vacation.php:44
+msgid "Subject of vacation message:"
+msgstr "Naslov sporočila za odsotnost:"
+
+#: lib/Script/sieve.php:2401
+msgid "Subject:"
+msgstr "Naslov:"
+
+#: lib/api.php:89
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "Naslov \"%s\" je bil dodan na črno listo."
+
+#: lib/api.php:112
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "Naslov \"%s\" je bil dodan na belo listo."
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "Gonilnik je sporočil: "
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr "Prišlo je od napake pri aktiviranju navodil."
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr "Prišlo je od napake pri dektiviranju navodil."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Za"
+
+#: templates/filters/filter.html:30
+msgid "To:"
+msgstr "Za:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Ne morem naložiti definicije za %s."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "Uporabniška glava"
+
+#: filters.php:184 vacation.php:157 lib/Script/procmail.php:266
+#: lib/Script/sieve.php:396 lib/Script/maildrop.php:265
+#: lib/Block/overview.php:61 lib/Block/overview.php:64
+msgid "Vacation"
+msgstr "Odsotnost"
+
+#: vacation.php:164
+msgid "Vacation Edit"
+msgstr "Uredi odsotnost"
+
+#: vacation.php:16
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "Odsotnost ni podprta s strani trenutnega gonilnika."
+
+#: rule.php:332
+msgid "Value"
+msgstr "Vrednost"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Naslovi v beli listi:"
+
+#: filters.php:178 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:85 lib/Block/overview.php:88
+msgid "Whitelist"
+msgstr "Bela lista"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "Uredi belo listo"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "Bela lista ni podprta s strani trenutnega gonilnika."
+
+#: lib/Script/procmail.php:234 lib/Script/sieve.php:315
+#: lib/Script/maildrop.php:213
+msgid "Whitelisted Addresses"
+msgstr "Naslov v beli listi"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "Prioriteta (X-Priority)"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "Spam stopnja (X-Spam-Level)"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "Vrednost spam filterja (X-Spam-Score)"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "Status spama (X-Spam-Score)"
+
+#: filters.php:69 rule.php:162
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Nimate pravice za tvorjenje več kot %d pravil."
+
+#: filters.php:61 rule.php:23
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Nimate pravice za tvorjenje svojih pravil."
+
+#: filters.php:50 rule.php:140
+msgid "You do not have permission to delete filter rules."
+msgstr "NImate pravic za brisanje filtrov."
+
+#: filters.php:43 filters.php:110 filters.php:121 rule.php:58 rule.php:155
+msgid "You do not have permission to edit filter rules."
+msgstr "Nimate pravice za urejanje pravil."
+
+#: lib/Script/sieve.php:2399
+msgid "You have received a new message"
+msgstr "Prejeli ste novo sporočilo"
+
+#: lib/Script/imap.php:301 lib/Script/imap.php:324 lib/Script/imap.php:339
+msgid "[No Subject]"
+msgstr "[NI naslova]"
+
+#: lib/Ingo.php:383
+msgid "_Blacklist"
+msgstr "Črna lista"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "Popolnoma odstrani sporočilo"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "Vnesi vsak naslov v novo vrstico:"
+
+#: lib/Ingo.php:389
+msgid "_Forward"
+msgstr "Posreduj"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "Premakni sporoilo v mapo:"
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "_Pravice"
+
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr "Navodilo"
+
+#: lib/Ingo.php:386
+msgid "_Vacation"
+msgstr "Odsotnost"
+
+#: lib/Ingo.php:380
+msgid "_Whitelist"
+msgstr "Bela lista"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "aktivna"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "in"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "deaktivirana - klinite za vkop"
+
+#: filters.php:216
+msgid "field"
+msgstr "polje"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "neaktivna"
+
+#: lib/Script/maildrop.php:127
+msgid "maildrop script generated by Ingo"
+msgstr "maildrop navodila narejena z Ingo"
+
+#: filters.php:216
+msgid "match"
+msgstr "ustreza"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "ali"
+
+#: lib/Script/procmail.php:128
+msgid "procmail script generated by Ingo"
+msgstr "procmail navodilo generirano z Ingo"
diff --git a/ingo/po/sv_SE.po b/ingo/po/sv_SE.po
new file mode 100644 (file)
index 0000000..a20128a
--- /dev/null
@@ -0,0 +1,806 @@
+# Swedish translations for Ingo package
+# Svenska översättningar för paket Ingo.
+# Copyright 2004 Anders Norrbring.
+# Anders Norrbring <anders@norrbring.biz>, 2004.
+# Andreas Dahlén <andreas@dahlen.ws>, 2005.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: INGO 1.1\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2005-03-29 14:44+0200\n"
+"PO-Revision-Date: 2005-03-30 08:48+0100\n"
+"Last-Translator: Andreas Dahlén <andreas@dahlen.ws>\n"
+"Language-Team: Swedish <i18n@lists.horde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-1\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=2; plural=(n != 1);\n"
+
+#: filters.php:167
+msgid " and"
+msgstr " och"
+
+#: filters.php:167
+msgid " or"
+msgstr " eller"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "Action for blacklisted addresses:"
+msgstr "Åtgärd för svartlistade adresser"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Aktivera skript"
+
+#: templates/filters/settings.inc:7
+msgid "Additional Settings"
+msgstr "Ytterligare inställningar"
+
+#: templates/rule/header.inc:46
+msgid "All of the following"
+msgstr "Alla följande"
+
+#: templates/rule/footer.inc:33
+msgid "Answered"
+msgstr "Besvarat"
+
+#: templates/rule/header.inc:47
+msgid "Any of the following"
+msgstr "Någon av följande"
+
+#: templates/filters/footer.inc:16
+msgid "Apply Filters"
+msgstr "Verkställ filter"
+
+#: filters.php:196
+msgid "Are you sure you want to delete this rule?"
+msgstr "Är du säker att du vill radera aktuell regel?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Uppdatera skriptet efter varje ändring?"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Bcc"
+
+#: lib/Storage.php:349
+msgid "Begins with"
+msgstr "Börjar med"
+
+#: filters.php:126 templates/blacklist/blacklist.inc:9
+msgid "Blacklist"
+msgstr "Spärrade adresser"
+
+#: blacklist.php:100
+msgid "Blacklist Edit"
+msgstr "Ändra spärrade adresser"
+
+#: blacklist.php:17
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "Spärrning av adresser stöds inte av aktuell filterdrivrutin."
+
+#: lib/Script/procmail.php:209
+msgid "Blacklisted Address"
+msgstr "Spärrade adresser"
+
+#: lib/Script/sieve.php:245
+msgid "Blacklisted Addresses"
+msgstr "Spärrade adresser"
+
+#: config/fields.php.dist:88
+msgid "Body"
+msgstr "Meddelandetext"
+
+#: rule.php:238 filters.php:164
+msgid "Case Sensitive"
+msgstr "Skiftlägeskänslig"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: blacklist.php:69 vacation.php:41 whitelist.php:36 rule.php:105
+#: forward.php:33
+msgid "Changes saved."
+msgstr "Ändringar sparade."
+
+#: lib/Storage.php:345
+msgid "Contains"
+msgstr "Innehåller"
+
+#: filters.php:204 filters.php:205
+#, php-format
+msgid "Copy %s"
+msgstr "Kopiera %s"
+
+#: lib/Storage.php:775
+#, php-format
+msgid "Copy of %s"
+msgstr "Kopia av %s"
+
+#: lib/Ingo.php:53
+msgid "Create new folder"
+msgstr "Skapa ny mapp"
+
+#: templates/filters/filter.html:16
+msgid "DISABLED"
+msgstr "AVSTÄNGD"
+
+#: lib/Script/procmail.php:354
+msgid "DISABLED: "
+msgstr "AVSTÄNGD: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Avaktivera skript"
+
+#: filters.php:196 filters.php:197
+#, php-format
+msgid "Delete %s"
+msgstr "Radera %s"
+
+#: templates/rule/filter.inc:30
+msgid "Delete Condition"
+msgstr "Radera villkor"
+
+#: lib/Storage.php:301
+msgid "Delete message completely"
+msgstr "Radera meddelande helt"
+
+#: templates/rule/footer.inc:35
+msgid "Deleted"
+msgstr "Raderad"
+
+#: lib/Storage.php:289
+msgid "Deliver into my INBOX"
+msgstr "Leverera till min INBOX"
+
+#: lib/Storage.php:315
+msgid "Deliver into my INBOX and copy to"
+msgstr "Leverera till min INBOX och kopiera till"
+
+#: lib/Storage.php:310
+msgid "Deliver into my INBOX and redirect to"
+msgstr "Leverera till min INBOX och omdirigera till"
+
+#: lib/Storage.php:295
+msgid "Deliver to folder"
+msgstr "Leverera till mapp"
+
+#: filters.php:218 filters.php:219
+#, php-format
+msgid "Disable %s"
+msgstr "Avaktivera %s"
+
+#: templates/rule/header.inc:30 templates/vacation/vacation.inc:10
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:11
+#: templates/forward/forward.inc:10
+msgid "Disabled"
+msgstr "Avaktiverad"
+
+#: templates/filters/settings.inc:13
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Visa detaljerad notifiering för varje filter när det körs?"
+
+#: templates/vacation/vacation.inc:33
+msgid "Do _not send responses to bulk or list messages"
+msgstr "Skicka _inga svar på list- och bulkmeddelanden"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Gör detta:"
+
+#: lib/Storage.php:350
+msgid "Doesn't begin with"
+msgstr "Inte börjar med"
+
+#: lib/Storage.php:346
+msgid "Doesn't contain"
+msgstr "Inte innehåller"
+
+#: lib/Storage.php:352
+msgid "Doesn't end with"
+msgstr "Inte slutar med"
+
+#: lib/Storage.php:354
+msgid "Doesn't exist"
+msgstr "Finns inte"
+
+#: lib/Storage.php:357
+msgid "Doesn't match (with placeholders)"
+msgstr ""
+
+#: templates/filters/header.inc:18
+msgid "Edit"
+msgstr "Ändra"
+
+#: filters.php:185 filters.php:187 filters.php:191 filters.php:192
+#, php-format
+msgid "Edit %s"
+msgstr "Ändra %s"
+
+#: filters.php:222 filters.php:223
+#, php-format
+msgid "Enable %s"
+msgstr "Aktivera %s"
+
+#: templates/filters/header.inc:20
+msgid "Enabled"
+msgstr "Aktiverad"
+
+#: lib/Storage.php:351
+msgid "Ends with"
+msgstr "Slutar med"
+
+#: lib/Storage.php:362
+msgid "Equal to"
+msgstr "Lika med"
+
+#: templates/filters/header.inc:8
+msgid "Existing Rules"
+msgstr "Befintliga regler"
+
+#: lib/Storage.php:353
+msgid "Exists"
+msgstr "Finns"
+
+#: templates/filters/settings.inc:20
+msgid "Filter All Messages"
+msgstr "Filtrera alla meddelanden"
+
+#: templates/filters/settings.inc:22
+msgid "Filter Only Seen Messages"
+msgstr "Filtrera enbart lästa meddelanden"
+
+#: templates/filters/settings.inc:21
+msgid "Filter Only Unseen Messages"
+msgstr "Filtrera enbart olästa meddelanden"
+
+#: templates/filters/settings.inc:18
+msgid "Filter Options"
+msgstr "Filterinställningar"
+
+#: templates/rule/header.inc:28
+msgid "Filter Rule"
+msgstr "Filterregel"
+
+#: filters.php:92
+msgid "Filter Rules"
+msgstr "Filterregler"
+
+#: script.php:52
+msgid "Filter Script Display"
+msgstr "Scriptfilterinställningar"
+
+#: lib/Ingo.php:269
+msgid "Filter _Rules"
+msgstr "Filter_regler"
+
+#: lib/Script/imap.php:321
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Filteraktivitet: %s meddelande(n) har flyttats till mappen '%s'."
+
+#: lib/Script/imap.php:308
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Filteraktivitet: %s meddelande(n) har raderats."
+
+#: lib/Script/imap.php:286
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Filteraktivitet: %s meddelande(n) har flyttats till mappen '%s'."
+
+#: lib/Script/imap.php:189
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+"Filteraktivitet: %s meddelande(n) som motsvarar svartlistan har raderats."
+
+#: lib/Script/imap.php:318
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr ""
+"Filteraktivitet: Meddelandet '%s' från '%s' har kopierats till mappen '%s'."
+
+#: lib/Script/imap.php:303
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Filteraktivitet: Meddelandet '%s'  från '%s' har raderats."
+
+#: lib/Script/imap.php:280
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Filteraktivitet: Meddelandet '%s' från '%s' har flyttats till mappen '%s'."
+
+#: rule.php:133
+msgid "Filter not found."
+msgstr "Filter saknas."
+
+#: templates/rule/header.inc:44
+msgid "For an incoming message that matches:"
+msgstr "För inkommande meddelanden som matchar:"
+
+#: filters.php:144 templates/forward/forward.inc:8
+msgid "Forward"
+msgstr "Vidarbefordra"
+
+#: forward.php:16
+msgid "Forward is not supported in the current filtering driver."
+msgstr "Vidarbordran stöds inte av aktuell filterdrivrutin."
+
+#: lib/Script/procmail.php:296
+msgid "Forwards"
+msgstr "Vidarbefordrar"
+
+#: forward.php:46
+msgid "Forwards Edit"
+msgstr "Ändra vidarbefordran"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Från"
+
+#: lib/Storage.php:360
+msgid "Greater than"
+msgstr "Större än"
+
+#: lib/Storage.php:361
+msgid "Greater than or equal to"
+msgstr "Större än eller lika med"
+
+#: templates/rule/footer.inc:31
+msgid "Important"
+msgstr "Viktigt"
+
+#: rule.php:26
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "Personliga regler stöds inte av aktuell filtreringsrutin."
+
+#: lib/Script/sieve.php:1848
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Angiven mapp för e-Post leverans saknas."
+
+#: lib/Storage.php:347
+msgid "Is"
+msgstr "Är"
+
+#: lib/Storage.php:348
+msgid "Isn't"
+msgstr "Är inte"
+
+#: lib/Storage.php:358
+msgid "Less than"
+msgstr "Mindre än"
+
+#: lib/Storage.php:359
+msgid "Less than or equal to"
+msgstr "Mindre än eller lika med"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "List-ID"
+
+#: templates/blacklist/blacklist.inc:21
+msgid "Mar_k message as deleted"
+msgstr "Mar_kera meddelande som raderat"
+
+#: templates/rule/footer.inc:24
+msgid "Mark message as:"
+msgstr "Markera meddelande som:"
+
+#: lib/Storage.php:356
+msgid "Matches (with placeholders)"
+msgstr ""
+
+#: lib/Storage.php:487
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"Maximalt antal svartlistade adresser är överskriden (Totalt: %s, Maximalt: %"
+"s). Kan inte lägga till adressen i listan över svartlistade  adresser."
+
+#: lib/Storage.php:541
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"Maximalt antal betrodda adresser är överskriden (Totalt: %s, Maximalt: %s). "
+"Kan inte lägga till adressen listan över betrodda adresser."
+
+#: lib/Script/sieve.php:1711
+msgid "Missing address to redirect message to"
+msgstr "Adress att skicka vidare till saknas"
+
+#: lib/Script/sieve.php:1745
+msgid "Missing reason for reject"
+msgstr "Anledning till att förkasta saknas"
+
+#: lib/Script/sieve.php:1915
+msgid "Missing reason in vacation."
+msgstr "Semesternotering saknas."
+
+#: templates/filters/header.inc:21
+msgid "Move"
+msgstr "Flytta"
+
+#: filters.php:109 filters.php:215
+msgid "Move Rule Down"
+msgstr "Flytta ner regel"
+
+#: filters.php:110 filters.php:214
+msgid "Move Rule Up"
+msgstr "Flytta upp regel"
+
+#: templates/vacation/vacation.inc:39
+msgid "N_umber of days between vacation replies:"
+msgstr "_Antal dagar mellan semestersvar:"
+
+#: lib/Storage.php:726 templates/filters/filter-none.inc:4
+#: templates/filters/footer.inc:13
+msgid "New Rule"
+msgstr "Ny regel"
+
+#: lib/Ingo.php:204 lib/Ingo.php:206
+#, php-format
+msgid "No '%s' element found in backend configuration."
+msgstr "Inget '%s' objekt finns i 'backend' konfigurationen"
+
+#: lib/Ingo.php:202
+msgid "No backend configured for this host"
+msgstr "Ingen 'backend' konfigurerade för denna värd"
+
+#: lib/Ingo.php:179
+msgid "No backends configured in backends.php"
+msgstr "Inga 'backends' konfigurerade"
+
+#: templates/filters/filter-none.inc:4
+#, php-format
+msgid "No filters. Click '%s' to create a new filter."
+msgstr "Filter saknas. Klicka på '%s' för att skapa ett nytt."
+
+#: lib/Script/sieve.php:1298 lib/Script/sieve.php:1398
+#: lib/Script/sieve.php:1580
+msgid "No headers specified"
+msgstr "Inte rubriker specificerade"
+
+#: script.php:67
+msgid "No script generated."
+msgstr "Skriptet skapades inte"
+
+#: lib/Script/sieve.php:1595
+msgid "No strings specified"
+msgstr "Inga strängar specificerade"
+
+#: lib/Storage.php:363
+msgid "Not equal to"
+msgstr "Inte lika med"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Alternativ om uppdatering av skript"
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Andra inställningar"
+
+#: templates/javascript/new_folder.js:6
+msgid "Please enter the name of the new folder:"
+msgstr "Ange namn på ny mapp:"
+
+#: templates/vacation/vacation.inc:53
+msgid "R_eason"
+msgstr "_Orsak"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Mottaget"
+
+#: lib/Storage.php:306
+msgid "Redirect to"
+msgstr "Eftersänd till"
+
+#: lib/Storage.php:355
+msgid "Regular expression"
+msgstr "Reguljära uttryck"
+
+#: lib/Storage.php:321
+msgid "Reject with reason"
+msgstr "Förkasta med orsaken"
+
+#: config/fields.php.dist:55
+msgid "Resent To"
+msgstr "Återsänt till"
+
+#: config/fields.php.dist:51
+msgid "Resent-from"
+msgstr "Återsänt från"
+
+#: templates/rule/footer.inc:60
+msgid "Return to Filters List"
+msgstr "Återvänt till filterlista"
+
+#: templates/vacation/vacation.inc:62 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:38 templates/forward/forward.inc:34
+msgid "Return to Rules List"
+msgstr "Återvänd till regellista"
+
+#: templates/filters/header.inc:19
+msgid "Rule"
+msgstr "Regel"
+
+#: filters.php:45
+msgid "Rule Copied"
+msgstr "Regel kopierad"
+
+#: filters.php:39
+msgid "Rule Deleted"
+msgstr "Regel raderad"
+
+#: filters.php:59
+msgid "Rule Disabled"
+msgstr "Regel raderad"
+
+#: filters.php:64
+msgid "Rule Enabled"
+msgstr "Regel aktiverad"
+
+#: templates/rule/header.inc:36
+msgid "Rule Name"
+msgstr "Regelnamn"
+
+#: templates/rule/footer.inc:59 templates/vacation/vacation.inc:61
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:37
+#: templates/forward/forward.inc:33
+msgid "Save"
+msgstr "Spara"
+
+#: templates/filters/settings.inc:29
+msgid "Save Settings"
+msgstr "Spara inställningar"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Skript"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Uppdaterar skript"
+
+#: lib/Ingo.php:229
+msgid "Script not updated."
+msgstr "Skriptet uppdaterades inte"
+
+#: lib/Ingo.php:136
+msgid "Script successfully activated."
+msgstr "Skriptet aktiverat"
+
+#: lib/Ingo.php:135
+msgid "Script successfully deactivated."
+msgstr "Skriptet avaktiverat"
+
+#: templates/rule/footer.inc:29
+msgid "Seen"
+msgstr "Sedd"
+
+#: rule.php:163
+msgid "Select a field"
+msgstr "Välj ett fält"
+
+#: lib/Ingo.php:50
+msgid "Select target folder"
+msgstr "Välj målmapp"
+
+#: rule.php:184
+msgid "Self-Defined Header"
+msgstr "Egendefinierade rubriker"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Avsändare"
+
+#: filters.php:78
+msgid "Settings successfully updated."
+msgstr "Inställningar uppdaterade."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Visa aktiva skript"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Visa aktuellt skript"
+
+#: config/fields.php.dist:83
+msgid "Size"
+msgstr "Storlek"
+
+#: templates/rule/footer.inc:49
+msgid "Stop checking if this rule matches?"
+msgstr "Sluta kontrollera om denna regel matchar?"
+
+#: templates/vacation/vacation.inc:46
+msgid "Subje_ct of vacation message:"
+msgstr "Ä_mne för svarsmeddelande:"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Ärende"
+
+#: lib/api.php:68
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "Adressen '%s' har lagts till i din svartlista."
+
+#: lib/api.php:87
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "Adressen '%s' har lagts till i din lista över betrodda."
+
+#: lib/Ingo.php:131
+msgid "The driver said: "
+msgstr "Drivrutinen svarade: "
+
+#: lib/Ingo.php:130
+msgid "There was an error activating the script."
+msgstr "Fel vid aktivering av skriptet."
+
+#: lib/Ingo.php:129
+msgid "There was an error deactivating the script."
+msgstr "Fel vid avaktivering av skriptet."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Till"
+
+#: lib/Script.php:116
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Kan inte ladda definitionen av %s."
+
+#: filters.php:138 lib/Script/procmail.php:272
+#: templates/vacation/vacation.inc:8
+msgid "Vacation"
+msgstr "Semester"
+
+#: vacation.php:66
+msgid "Vacation Edit"
+msgstr "Ändra semester"
+
+#: lib/Script/sieve.php:353
+msgid "Vacation Message"
+msgstr "Semestermeddelande"
+
+#: vacation.php:16
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "Semester stöds inte av aktuell filterdrivrutin."
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "_Betrodda adresser:"
+
+#: filters.php:132 templates/whitelist/whitelist.inc:8
+msgid "Whitelist"
+msgstr "Betrodda"
+
+#: whitelist.php:55
+msgid "Whitelist Edit"
+msgstr "Ändra betrodda"
+
+#: whitelist.php:18
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "'Betrodda adresser' stöds inte av aktuell fulterdrivrutin."
+
+#: lib/Script/procmail.php:240 lib/Script/sieve.php:299
+msgid "Whitelisted Addresses"
+msgstr "Betrodda adresser"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Priority"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Level"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Score"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Status"
+
+#: vacation.php:30
+msgid ""
+"You must specify at least one email address for which the vacation messages "
+"should be activated."
+msgstr ""
+"Du måste ange minst en e-postadress för vilken semestermeddelande skall "
+"aktiveras."
+
+#: lib/Script/imap.php:281 lib/Script/imap.php:304 lib/Script/imap.php:318
+msgid "[No Subject]"
+msgstr "[Inget ärende]"
+
+#: templates/forward/forward.inc:24
+msgid "_Address(es) to forward to:"
+msgstr "_Adress(er) att vidarbefodra till:"
+
+#: templates/vacation/vacation.inc:24
+msgid "_Addresses to not send responses to:"
+msgstr "_Adresser att inte skicka svar till"
+
+#: lib/Ingo.php:274
+msgid "_Blacklist"
+msgstr "_Spärrade adresser"
+
+#: templates/blacklist/blacklist.inc:19
+msgid "_Delete message completely"
+msgstr "_Radera meddelande helt"
+
+#: templates/blacklist/blacklist.inc:30
+msgid "_Enter each address on a new line:"
+msgstr "_Ange varje adress på en ny rad"
+
+#: lib/Ingo.php:280
+msgid "_Forward"
+msgstr "_Vidarbefordra"
+
+#: templates/forward/forward.inc:17
+msgid "_Keep a copy of messages in this account?"
+msgstr "_Spara en kopia av meddelandet för det här kontot?"
+
+#: templates/blacklist/blacklist.inc:23
+msgid "_Move message to folder:"
+msgstr "_Flytta meddelande till mapp:"
+
+#: templates/vacation/vacation.inc:16
+msgid "_My email addresses:"
+msgstr "_Mina e-postadresser"
+
+#: lib/Ingo.php:283
+msgid "_Script"
+msgstr "_Skript"
+
+#: lib/Ingo.php:277
+msgid "_Vacation"
+msgstr "_Semester"
+
+#: lib/Ingo.php:271
+msgid "_Whitelist"
+msgstr "_Betrodd"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "och"
+
+#: filters.php:162
+msgid "field"
+msgstr "fält"
+
+#: filters.php:162
+msgid "match"
+msgstr "matchar"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "eller"
+
+#: lib/Script/procmail.php:126
+msgid "procmail script generated by Ingo"
+msgstr "procmail skript skapat av Ingo"
+
+#: lib/Script/sieve.php:111
+msgid "sieve filter generated by Ingo"
+msgstr "Sieve filter skapat av Ingo"
diff --git a/ingo/po/tr_TR.po b/ingo/po/tr_TR.po
new file mode 100644 (file)
index 0000000..97ce54f
--- /dev/null
@@ -0,0 +1,1037 @@
+# Turkish translations for Ýngo package
+# Süzgeç paketi için Türkçe çeviriler.
+# Copyright 2008-2009 The Horde Project
+# This file is distributed under the same license as the Ýngo package.
+# horde-tr at metu.edu.tr, 2005-2008.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ýngo H3 (1.2-RC2)\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2008-04-15 12:57+0300\n"
+"PO-Revision-Date: 2008-04-15 12:57+0300\n"
+"Last-Translator: Onur Koþar\n"
+"Language-Team: i18n@lists.horde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=ISO-8859-9\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=1; plural=0;\n"
+
+#: filters.php:223
+msgid " and"
+msgstr " ve"
+
+#: filters.php:223
+msgid " or"
+msgstr " veya"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "Karalistedeki adresler için eylemler:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "Betikleri Etkinleþtir"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "\"%s\" betiði aktif hale getirilirken hata oluþtu:(%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Ýlave Ayarlar"
+
+#: forward.php:43
+msgid "Address(es) to forward to:"
+msgstr "Ýletilecek _Adresler:"
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr "Yanýt gönderilmeyecek _Adresler:"
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr "Ýleri seviye ayarlar"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Takip edenlerin hepsi"
+
+#: lib/api.php:68
+msgid "Allow Rules"
+msgstr "Kurallara izin ver"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Cevaplanmýþ"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Takip edenlerin herhangi biri"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Süzgeçleri Uygula"
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr "Bu kuralý silmek istediðinize emin misiniz?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "Betik her deðiþimden sonra otomatik olarak güncellensin mi?"
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr "Temel Ayarlar"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Gizli kk"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Baþlangýcý:"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "Baðlantý kurulamadý (%s) %s"
+
+#: filters.php:174 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:95 lib/Block/overview.php:98
+msgid "Blacklist"
+msgstr "Kara Liste"
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr "Karalisteyi Düzenle"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "Karaliste yürürlükte olan süzgeç sürücüsü tarafýndan desteklenmiyor."
+
+#: lib/Script/procmail.php:209 lib/Script/maildrop.php:197
+#: lib/Script/sieve.php:269
+msgid "Blacklisted Addresses"
+msgstr "Karalisteye Alýnmýþ Adresler"
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "Ýçerik"
+
+#: filters.php:220 rule.php:322
+msgid "Case Sensitive"
+msgstr "Büyük/Küçük Harf Duyarlý"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Kk"
+
+#: forward.php:56 spam.php:90 vacation.php:81 rule.php:141 blacklist.php:70
+#: whitelist.php:38
+msgid "Changes saved."
+msgstr "Deðiþiklikler kaydedildi."
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Baðlantý baþarýsýz"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "Ýçermektedir"
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr "Kopyala:%s"
+
+#: lib/Storage.php:993 lib/Storage/sql.php:618
+#, php-format
+msgid "Copy of %s"
+msgstr "Kopyasý: %s"
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "Derlenen geçici dosya, '%s' saklanamadý."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Yeni dizin yarat"
+
+#: lib/Script/procmail.php:342 lib/Script/maildrop.php:362
+msgid "DISABLED: "
+msgstr "SEÇÝLMEZ KILINDI: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Betiðin Etkinliðini Kaldýr"
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr "Sil: %s"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "Koþulu Sil"
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "Ýletiyi tamamen sil"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Silindi"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "Gelen kutusuna gönder"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr "Gelen kutusuna gönder ve kopyasýný al"
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Gelen kutusuna gönder ve yönlendir "
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "Dizine gönder"
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "Hedef (Kime, Kk, Gkk,vb)"
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr "Seçilemez Kýl %s"
+
+#: forward.php:99 spam.php:149 vacation.php:153
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+#: templates/rule/header.inc:26
+msgid "Disabled"
+msgstr "Seçilmez Kýlýndý"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "Her süzgecin ne zaman uygulanacaðýna dair detaylý bilgi verilsin mi?"
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr "Yýðýn yada liste iletilerine cevap gönderme"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Bunu yap:"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "ile Baþlamayan"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "Ýçermeyen"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "ile bitmeyen"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "Bulunmayan"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "Eþleþmeyen "
+
+#: templates/filters/header.inc:26 lib/Block/overview.php:63
+#: lib/Block/overview.php:72 lib/Block/overview.php:87
+#: lib/Block/overview.php:97 lib/Block/overview.php:107
+msgid "Edit"
+msgstr "Düzenle"
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr "Düzenle %s"
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr "Seçilir kýl: %s"
+
+#: templates/filters/header.inc:28
+msgid "Enabled"
+msgstr "Seçilir kýlýndý"
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr "Tatilin sonu"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "Biten"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "Eþittir"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Gücel betik çalýþtýrýlýrken hata oluþtu: (%d) %s "
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr "Deðiþiklikler kaydedilirken hata oluþtu."
+
+#: templates/filters/header.inc:20
+msgid "Existing Rules"
+msgstr "Varolan Kurallar"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "Var"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "1 nesne bekleniyor, alýnan %d."
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr "Soket'den okunurken hata oluþtu"
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr "Socket'e yazýlýrken hata oluþtu"
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "Socket'e yazýlýrken hata oluþtu (baðlantý kaybedildi!)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "Alan"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Bütün iletileri Süzgeçle"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Sadece Görülmüþ Ýletileri Süzgeçle"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Sadece Görülmemiþ Ýletileri Süzgeçle"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Süzgeç Seçenekleri"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Süzgeç Kuralý"
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr "Süzgeç Kurallarý"
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr "Süzgeç Betik Görüntüleme"
+
+#: lib/Ingo.php:379
+msgid "Filter _Rules"
+msgstr "Süzgeç _Kurallarý"
+
+#: lib/Script/imap.php:348
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Süzgeç etkinliði: %s ileti kopyalandý:\"%s\" dosyasýna kopyalandý."
+
+#: lib/Script/imap.php:334
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Süzgeç etkinliði: %s ileti silindi."
+
+#: lib/Script/imap.php:312
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Süzgeç etkinliði: %s ileti : \"%s\" dizinine taþýndý."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr "Süzgeç etkinliði: karalisteyle eþleþen %s ileti silindi."
+
+#: lib/Script/imap.php:345
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr "\"%s\" iletisi (\"%s\" den gelmekte) \"%s\" dizinine kopyalandý."
+
+#: lib/Script/imap.php:329
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Süzgeç etkinliði: \"%s\" iletisi (\"%s\" den gelmekte) silindi."
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr ""
+"Süzgeç etkinliði: \"%s\" iletisi (\"%s\" den gelmekte) \"%s\" dizine taþýndý."
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr "Süzgeç bulunamadý."
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "Ýzleme Ýçin Ýþaretlendi"
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr "Ýstenmeyen ileti klasörü"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "Gelen iletiler için eþleþme: "
+
+#: forward.php:97 filters.php:192 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Ýlet"
+
+#: lib/Script/sieve.php:222
+msgid "Forward Keep Action"
+msgstr "Ýleti yönlendirme eylemi"
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr ""
+"Ýletilen iletiler yürürlükteki süzgeç sürücü tarafýndan desteklenmiyor."
+
+#: lib/Script/procmail.php:288 lib/Script/maildrop.php:246
+#: lib/Script/sieve.php:232
+msgid "Forwards"
+msgstr "Ýlet"
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr "Ýletilecekleri Düzenle"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "Kimden"
+
+#: lib/Script/sieve.php:2927
+msgid "From:"
+msgstr "Kimden:"
+
+#: lib/Script/sieve.php:118
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Ingo tarafýndan oluþturuldu (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "Büyüktür"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "Büyük ya da eþittir"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "Kiþisel kurallar yürürlükteki süzgeç sürücü tarafýndan desteklenmiyor."
+
+#: lib/Script/sieve.php:2521
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "ileti teslimi için var olmayan bir posta kutusu belirtildi."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "Olan"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "Olmayan"
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr "_Ýletilerin bir kopyasý hesapta tutulsun mu?"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"LDAP desteði gerekiyor ancak LDAP modülü kullanýlabilir deðil ya da "
+"yüklenmedi."
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "Küçüktür"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "Küçük yada eþitir"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "Liste-ID"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "Ýletiyi silinece_k olarak iþaretle"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Ýletiyi iþaretle:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "Eþleþme tipi"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "Eþleþen"
+
+#: lib/api.php:71
+msgid "Maximum Number of Rules"
+msgstr "En Fazla Not Sayýsý"
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"En yüksek karaliste adres sayýsý aþýldý(Toplam adresler: %s, En yüksek adres "
+"sayýsý: %s). Karalisteye yeni bir adres ekleyemezsiniz."
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"En yüksek temiz adres sayýsý aþýldý(Toplam adresler: %s, En yüksek adres "
+"sayýsý: %s). Temiz listesine yeni bir adres ekleyemezsiniz."
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+"Ýstenmeyen ileti olasýlýk deðeri, bu sayýya eþit ya da büyük olan iletiler "
+"istenmeyen ileti olarak deðerlendirilecek."
+
+#: lib/Script/sieve.php:2941
+msgid "Missing address to notify"
+msgstr "Uyarýnýn yapýlacaðý adres eksik"
+
+#: lib/Script/sieve.php:2322
+msgid "Missing address to redirect message to"
+msgstr "Ýletinin yönlendirileceði adres eksik"
+
+#: lib/Script/sieve.php:2368
+msgid "Missing reason for reject"
+msgstr "Geri çevirme sebebi eksik"
+
+#: lib/Script/sieve.php:2671
+msgid "Missing reason in vacation."
+msgstr "Tatil sebebi eksik."
+
+#: templates/filters/header.inc:32
+msgid "Move"
+msgstr "Taþý"
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr "Kuralý Aþaðý Taþý"
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr "Kuralý Yukarý Taþý"
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr "Elektronik Posta Adresi_m:"
+
+#: templates/filters/footer.inc:6 templates/filters/filter-none.inc:3
+#: lib/Storage.php:889
+msgid "New Rule"
+msgstr "Yeni Kural"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "'%s' öðesi son yapýlanýþta bulunamadý."
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr "Bu anasistem için son yapýlanýþ eksik"
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr "backends.php dosyasýnda son uç yapýlanýþý yok"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "Süzgeç yok.Yaratmak için '%s'týklayýn."
+
+#: lib/Script/sieve.php:1679 lib/Script/sieve.php:1828
+#: lib/Script/sieve.php:2044
+msgid "No headers specified"
+msgstr "Baþlýk bilgisi belirtilmedi"
+
+#: script.php:69
+msgid "No script generated."
+msgstr "Betik yaratýlmadý."
+
+#: lib/Script/sieve.php:2060 lib/Script/sieve.php:2144
+msgid "No strings specified"
+msgstr "Dizgi  belirtilmedi."
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "Eþit deðil"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr "Uyarý yapýlacak e-Posta Adresi:"
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr "Tatil cevaplarý arasýndaki gü_n sayýsý"
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr "Sadece iletiyi iþaretle"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Betik güncelleme seçenekleri."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "Diðer Seçenekler"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Önizleme"
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr "Katýlýmcý (Kimden,Kime,vb)"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Lütfen yeni dizinin adýný girin:"
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr "Gerekçe"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Ulaþtý"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Yönlendir"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "Düzenli Ýfadeler"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr "Gerekçeyle reddet"
+
+#: config/fields.php.dist:51
+msgid "Resent-From"
+msgstr "Tarafýndan tekrar gönderilen "
+
+#: config/fields.php.dist:55
+msgid "Resent-To"
+msgstr "Tarafýna tekrar gönderilen"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "Süzgeç Listesine Geri Dön"
+
+#: forward.php:34 forward.php:88 spam.php:62 spam.php:130 vacation.php:34
+#: vacation.php:117 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "Kurallar Listesine Geri Dön"
+
+#: templates/filters/header.inc:27
+msgid "Rule"
+msgstr "Kural"
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr "Kural Kopyalandý"
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr "Kural Silindi"
+
+#: forward.php:72 spam.php:106 filters.php:94 vacation.php:97
+msgid "Rule Disabled"
+msgstr "Kural Geçersiz Kýlýndý"
+
+#: forward.php:63 spam.php:97 filters.php:99 vacation.php:88
+msgid "Rule Enabled"
+msgstr "Kural Geçerli Kýlýndý"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "Kural Adý"
+
+#: lib/Script/sieve.php:2929
+msgid "Rule:"
+msgstr "Kural"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "STARTTLS baþarýsýz: (%s) %s"
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "Ýstenmeyen Ý_leti"
+
+#: forward.php:45 spam.php:79 vacation.php:62
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:41
+#: templates/rule/footer.inc:60
+msgid "Save"
+msgstr "Kaydet"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Ayarlarý Kaydet"
+
+#: forward.php:66 forward.php:84 spam.php:100 spam.php:126 vacation.php:91
+#: vacation.php:113
+msgid "Save and Disable"
+msgstr "Kaydet ve Geçersiz kýl"
+
+#: forward.php:57 forward.php:86 spam.php:91 spam.php:128 vacation.php:82
+#: vacation.php:115
+msgid "Save and Enable"
+msgstr "Kaydet ve geçerli kýl"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "Betik"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "Betik Güncelleniyor"
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr "Betik Güncellenmedi."
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr "Betik baþarýyla etkinleþtirildi."
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr "Betiðin etkinliði baþarýyla kaldýrýldý."
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Görülmüþ"
+
+#: rule.php:218
+msgid "Select a field"
+msgstr "Bir alan seçin"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Görüntülenecek görev listesini seçin:"
+
+#: rule.php:347 templates/blacklist/blacklist.inc:23 lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "Bir hedef dizin seçin"
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr "Kendinden Tanýmlý Baþlýk Bilgisi"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "Gönderen"
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr "Ayarlar baþarýyla güncellendi."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Etkin Betiði Göster"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Yürürlükteki Betiði Göster"
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr ""
+"Basit istenmeyen ileti filtresi yürürlükteki süzgeç sürücüsü tarafýndan "
+"desteklenmemektedir."
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "Boyut"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr "Kaynak (Kimden, Cevapla,vb)"
+
+#: filters.php:198 lib/Block/overview.php:105 lib/Block/overview.php:108
+#: lib/Script/maildrop.php:301 lib/Script/sieve.php:425
+msgid "Spam Filter"
+msgstr "Ýstenmeyen ileti filtresi"
+
+#: spam.php:147 spam.php:154
+msgid "Spam Filtering"
+msgstr "Ýstenmeyen ileti Filtrelenmesi"
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr "Ýstenmeyen ileti Düzeyi"
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr "Tatil'in baþlangýcý:"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "Bu kuralýn eþleþip eþleþmediðini kontrol etmeyi durdur"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Konu"
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr "Tatil mesajýnýn Konusu:"
+
+#: lib/Script/sieve.php:2928
+msgid "Subject:"
+msgstr "Konu:"
+
+#: lib/api.php:103
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "\"%s\", adresi kara listenize eklendi."
+
+#: lib/api.php:126
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "\"%s\", adresi beyaz listesine eklendi."
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "Sürücünün belirttiði: "
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr "Betik etkinleþtirlirken bir hata oluþtu."
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr "Betiðin etkinliði kaldýrýlýrken bir hata oluþtu. "
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Kime"
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr "Kime:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "%s in tanýmý yüklenemedi."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "Kullanýcý baþlýðý"
+
+#: filters.php:186 vacation.php:151 lib/Block/overview.php:61
+#: lib/Block/overview.php:64 lib/Script/procmail.php:268
+#: lib/Script/maildrop.php:276 lib/Script/sieve.php:399
+msgid "Vacation"
+msgstr "Tatil"
+
+#: vacation.php:158
+msgid "Vacation Edit"
+msgstr "Tatil Düzenle"
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "Tatil yürürlükteki süzgeç sürücüsü tarafýndan desteklenmemektedir."
+
+#: rule.php:353
+msgid "Value"
+msgstr "Deðer"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "Beya_zliste Adresleri:"
+
+#: filters.php:180 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:85 lib/Block/overview.php:88
+msgid "Whitelist"
+msgstr "Beyaz Liste"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "Beyaz Listeyi Düzenle"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr ""
+"Beyaz Liste yürürlükteki süzgeç sürücüsü tarafýndan desteklenmemektedir."
+
+#: lib/Script/procmail.php:236 lib/Script/maildrop.php:224
+#: lib/Script/sieve.php:329
+msgid "Whitelisted Addresses"
+msgstr "Beyaz Listedeki Adresler"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-Önceliði"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam-Düzeyi"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam-Derecesi"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam-Durumu"
+
+#: filters.php:71 rule.php:172
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "%d den fazla kural oluþturma izniniz yok."
+
+#: filters.php:63 rule.php:23
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Genel kural oluþturma ve düzenleme yetkiniz yok."
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr "Boþ durumlar oluþturma yetkiniz yok, Lütfen \"%s\" deðerini giriniz."
+
+#: filters.php:52 rule.php:151
+msgid "You do not have permission to delete filter rules."
+msgstr "Filtre kurallarý silme yetkiniz yok."
+
+#: filters.php:45 filters.php:112 filters.php:123 rule.php:58 rule.php:165
+msgid "You do not have permission to edit filter rules."
+msgstr "Filtre kurallarý düzenleme yetkiniz yok ."
+
+#: lib/Script/sieve.php:2926
+msgid "You have received a new message"
+msgstr "Yeni bir ileti aldýnýz"
+
+#: lib/Script/imap.php:307 lib/Script/imap.php:330 lib/Script/imap.php:345
+msgid "[No Subject]"
+msgstr "[Konu Yok]"
+
+#: lib/Ingo.php:384
+msgid "_Blacklist"
+msgstr "_Kara Liste"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "Ýletitiyi tamamen _Sil"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "_Her adresi yeni bir satýrda girin:"
+
+#: lib/Ingo.php:390
+msgid "_Forward"
+msgstr "Ý_let"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "Ýletiyi dizine _Taþý:"
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "Ý_zinler"
+
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr "_Betik"
+
+#: lib/Ingo.php:387
+msgid "_Vacation"
+msgstr "_Tatil"
+
+#: lib/Ingo.php:381
+msgid "_Whitelist"
+msgstr "_Beyaz Liste"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "Aktif"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "ve"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "Faal deðil-faal olmasý için týklayýnýz"
+
+#: filters.php:218
+msgid "field"
+msgstr "alan"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "faal deðil"
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr "Ingo tarafýndan yaratýlan maildrop betiði"
+
+#: filters.php:218
+msgid "match"
+msgstr "eþleþen"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "veya"
+
+#: lib/Script/procmail.php:130
+msgid "procmail script generated by Ingo"
+msgstr "Ingo tarafýndan yaratýlan procmail betiði"
diff --git a/ingo/po/uk_UA.po b/ingo/po/uk_UA.po
new file mode 100644 (file)
index 0000000..bd42942
--- /dev/null
@@ -0,0 +1,1013 @@
+# Ukrainian win-1251 translations for Ingo package.
+# Copyright 2005-2009 The Horde Project
+# This file is distributed under the same license as the Ingo package.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Turba H3 (2.0.2)\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2007-06-18 13:25+0300\n"
+"PO-Revision-Date: 2007-06-19 12:00+0200\n"
+"Last-Translator: Andriy Kopystyansky <webmaster@polynet.lviv.ua>\n"
+"Language-Team: Ukrainian <anri@polynet.lviv.ua>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=CP1251\n"
+"Content-Transfer-Encoding: 8bit\n"
+"Plural-Forms: nplurals=3; plural=(n%10==1 && n%100!=11 ? 0 : n%10>=2 && n%"
+"10<=4 && (n%100<10 || n%100>=20) ? 1 : 2);\n"
+
+#: filters.php:221
+msgid " and"
+msgstr " ³"
+
+#: filters.php:221
+msgid " or"
+msgstr " àáî"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr ""
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr ""
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr ""
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "Äîäàòêîâ³ íàëàøòóâàííÿ"
+
+#: forward.php:41
+msgid "Address(es) to forward to:"
+msgstr "Àäðåñà(è) äëÿ ïåðåñèëàííÿ:"
+
+#: vacation.php:54
+msgid "Addresses to not send responses to:"
+msgstr ""
+
+#: vacation.php:48
+msgid "Advanced Settings"
+msgstr "Ðîçøèðåí³ íàëàøòóâàííÿ"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "Âñå ç íàñòóïíîãî"
+
+#: lib/api.php:54
+msgid "Allow Rules"
+msgstr "Äîçâîëèòè ïðàâèëà"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Ç â³äïîâ³ääþ"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "Áóäü-ùî ç íàñòóïíîãî"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Çàñòîñóâàòè ô³ëüòðè"
+
+#: filters.php:250
+msgid "Are you sure you want to delete this rule?"
+msgstr "Âïåâíåí³, ùî õî÷åòå âèòåðòè öå ïðàâèëî?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr ""
+
+#: vacation.php:39
+msgid "Basic Settings"
+msgstr "Îñíîâí³ íàëàøòóâàííÿ"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Bcc"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "Ïî÷èíàºòüñÿ ç"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "ϳä'ºäíàííÿ íåâäàëå: (%s) %s"
+
+#: filters.php:172 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:95 lib/Block/overview.php:98
+msgid "Blacklist"
+msgstr "×îðíèé ñïèñîê"
+
+#: blacklist.php:109
+msgid "Blacklist Edit"
+msgstr ""
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/maildrop.php:186 lib/Script/procmail.php:207
+#: lib/Script/sieve.php:252
+msgid "Blacklisted Addresses"
+msgstr ""
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "Ò³ëî"
+
+#: rule.php:300 filters.php:218
+msgid "Case Sensitive"
+msgstr "Âðàõîâóþ÷è ðåã³ñòð"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "Cc"
+
+#: blacklist.php:75 spam.php:91 vacation.php:79 whitelist.php:38 rule.php:130
+#: forward.php:54
+msgid "Changes saved."
+msgstr "Çì³íè çáåðåæåíî."
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Ïîìèëêà ç'ºäíàííÿ"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "ì³ñòèòü"
+
+#: filters.php:261 filters.php:262
+#, php-format
+msgid "Copy %s"
+msgstr ""
+
+#: lib/Storage.php:978 lib/Storage/sql.php:618
+#, php-format
+msgid "Copy of %s"
+msgstr ""
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "Íå ìîæó çáåðåãòè ñêîìï³ëüîâàíèé ôàéë øàáëîíó '%s'."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "Ñòâîðèòè íîâó ïàïêó"
+
+#: lib/Script/maildrop.php:317 lib/Script/procmail.php:340
+msgid "DISABLED: "
+msgstr ""
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr ""
+
+#: filters.php:250 filters.php:251
+#, php-format
+msgid "Delete %s"
+msgstr "Âèòåðòè %s"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr ""
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "Âèòåðòè ëèñò ïîâí³ñòþ"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "Âèòåðò³"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "Äîðó÷èòè â ì³é Inbox"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr "Äîðó÷èòè â ì³é Inbox ³ êîï³þ äî"
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr "Äîðó÷èòè â ì³é Inbox ³ ïåðåíàïðàâèòè äî"
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "Äîðó÷èòè â ïàïêó"
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "Ïðèçíà÷åííÿ (To,Cc,Bcc,òîùî)"
+
+#: filters.php:275 filters.php:276
+#, php-format
+msgid "Disable %s"
+msgstr ""
+
+#: spam.php:150 vacation.php:157 forward.php:97 templates/rule/header.inc:26
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+msgid "Disabled"
+msgstr ""
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr ""
+
+#: vacation.php:56
+msgid "Do not send responses to bulk or list messages?"
+msgstr ""
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr ""
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "íå ïî÷èíàºòüñÿ ç"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "íå ì³ñòèòü"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "íå çàê³í÷óºòüñÿ íà"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "íå ³ñíóº"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr ""
+
+#: templates/filters/header.inc:47 lib/Block/overview.php:63
+#: lib/Block/overview.php:72 lib/Block/overview.php:87
+#: lib/Block/overview.php:97 lib/Block/overview.php:107
+msgid "Edit"
+msgstr "Ðåäàãóâàòè"
+
+#: filters.php:239 filters.php:241 filters.php:245 filters.php:246
+#, php-format
+msgid "Edit %s"
+msgstr "Ðåäàãóâàòè %s"
+
+#: filters.php:285 filters.php:286
+#, php-format
+msgid "Enable %s"
+msgstr ""
+
+#: templates/filters/header.inc:49
+msgid "Enabled"
+msgstr ""
+
+#: vacation.php:43
+msgid "End of vacation:"
+msgstr "ʳíåöü âàêàö³é:"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "çàê³í÷óºòüñÿ íà"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr ""
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Ïîìèëêà îòðèìàííÿ ïîòî÷íîãî ñêðèïòà: (%d) %s"
+
+#: blacklist.php:73
+msgid "Error saving changes."
+msgstr "Ïîìèëêà çáåðåæåííÿ çì³í."
+
+#: templates/filters/header.inc:41
+msgid "Existing Rules"
+msgstr "²ñíóþ÷³ ïðàâèëà"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "³ñíóº"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "Î÷³êóâàâñÿ 1 îá'ºêò, îòðèìàíî %d."
+
+#: lib/Driver/sivtest.php:205
+msgid "Failed to read from socket: "
+msgstr ""
+
+#: lib/Driver/sivtest.php:200
+msgid "Failed to write to socket: "
+msgstr ""
+
+#: lib/Driver/sivtest.php:195
+msgid "Failed to write to socket: (connection lost!)"
+msgstr ""
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "Ïîëå"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "Ô³ëüòðóâàòè âñ³ ëèñòè"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "Ô³ëüòðóâàòè ò³ëüêè ÷èòàí³ ëèñòè"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "Ô³ëüòðóâàòè ò³ëüêè íå÷èòàí³ ëèñòè"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "Îïö³¿ ô³ëüòðóâàííÿ"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "Ïðàâèëî ô³ëüòðóâàííÿ"
+
+#: filters.php:137
+msgid "Filter Rules"
+msgstr "Ïðàâèëà ô³ëüòðóâàííÿ"
+
+#: script.php:52
+msgid "Filter Script Display"
+msgstr ""
+
+#: lib/Ingo.php:378
+msgid "Filter _Rules"
+msgstr "Ïðàâèëà ô³ëüòðóâàííÿ"
+
+#: lib/Script/imap.php:342
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "Ô³ëüòðóâàííÿ: %s ëèñò(³â) ñêîï³éîâàíî äî ïàïêè \"%s\"."
+
+#: lib/Script/imap.php:328
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "Ô³ëüòðóâàííÿ: %s ëèñò(³â) âèòåðòî."
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "Ô³ëüòðóâàííÿ: %s ëèñò(³â) ïåðåíåñåíî äî ïàïêè \"%s\"."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr ""
+
+#: lib/Script/imap.php:339
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr "Ô³ëüòðóâàííÿ: Ëèñò \"%s\" â³ä \"%s\" ñêîï³éîâàíî äî ïàïêè \"%s\"."
+
+#: lib/Script/imap.php:323
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "Ô³ëüòðóâàííÿ: Ëèñò \"%s\" â³ä \"%s\" âèòåðòî."
+
+#: lib/Script/imap.php:300
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr "Ô³ëüòðóâàííÿ: Ëèñò \"%s\" â³ä \"%s\" ïåðåíåñåíî â ïàïêó \"%s\"."
+
+#: rule.php:178
+msgid "Filter not found."
+msgstr "Ô³ëüòð íå çíàéäåíî."
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr ""
+
+#: spam.php:75
+msgid "Folder to receive spam:"
+msgstr "Ïàïêà äëÿ îòðèìàííÿ ñïàìó:"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr ""
+
+#: forward.php:95 filters.php:190 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "Ïåðåñëàòè"
+
+#: forward.php:16
+msgid "Forward is not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/maildrop.php:235 lib/Script/procmail.php:286
+#: lib/Script/sieve.php:212
+msgid "Forwards"
+msgstr ""
+
+#: forward.php:102
+msgid "Forwards Edit"
+msgstr ""
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "³ä"
+
+#: lib/Script/sieve.php:2400
+msgid "From:"
+msgstr ""
+
+#: lib/Script/sieve.php:111
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr ""
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "á³ëüøå í³æ"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "á³ëüøå àáî ð³âíå"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/sieve.php:2062
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Âêàçàíà íå³ñíóþ÷à ñêðèíüêà äëÿ äîðó÷åííÿ ëèñòà."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "º"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "íå º"
+
+#: forward.php:39
+msgid "Keep a copy of messages in this account?"
+msgstr ""
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr ""
+"Íåîáõ³äíà ï³äòðèìêà LDAP, àëå ìîäóëü LDAP â³äñóòí³é àáî íå çàâàíòàæíèé."
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "ìåíøå í³æ"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "ìåíøå àáî ð³âíå"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr ""
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "Ïîì³òèòè ëèñò ÿê âèòåðòèé"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "Ïîì³òèòè ëèñò ÿê:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr ""
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr ""
+
+#: lib/api.php:57
+msgid "Maximum Number of Rules"
+msgstr "Ìàêñèìàëüíà ê³ëüê³ñòü ïðàâèë"
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+
+#: spam.php:72
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr ""
+
+#: lib/Script/sieve.php:2408
+msgid "Missing address to notify"
+msgstr ""
+
+#: lib/Script/sieve.php:1930
+msgid "Missing address to redirect message to"
+msgstr ""
+
+#: lib/Script/sieve.php:1962
+msgid "Missing reason for reject"
+msgstr ""
+
+#: lib/Script/sieve.php:2190
+msgid "Missing reason in vacation."
+msgstr ""
+
+#: templates/filters/header.inc:51
+msgid "Move"
+msgstr "Ïåðåíåñòè"
+
+#: filters.php:154 filters.php:271
+msgid "Move Rule Down"
+msgstr "Ïîñóíóòè ïðàâèëî âíèç"
+
+#: filters.php:155 filters.php:270
+msgid "Move Rule Up"
+msgstr "Ïîñóíóòè ïðàâèëî âãîðó"
+
+#: vacation.php:51
+msgid "My email addresses:"
+msgstr "Ìî¿ àäðåñè å-ïîøòè:"
+
+#: templates/filters/filter-none.inc:3 templates/filters/footer.inc:6
+#: lib/Storage.php:874
+msgid "New Rule"
+msgstr "Íîâå ïðàâèëî"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr ""
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr ""
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr ""
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr ""
+
+#: lib/Script/sieve.php:1460 lib/Script/sieve.php:1558
+#: lib/Script/sieve.php:1735
+msgid "No headers specified"
+msgstr ""
+
+#: script.php:67
+msgid "No script generated."
+msgstr ""
+
+#: lib/Script/sieve.php:1751 lib/Script/sieve.php:1815
+msgid "No strings specified"
+msgstr ""
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr ""
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr ""
+
+#: vacation.php:58
+msgid "Number of days between vacation replies:"
+msgstr ""
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr ""
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr ""
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "²íø³ îïö³¿"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "Çàãàëüíèé îãëÿä"
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr ""
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "Ââåä³òü íàçâó íîâî¿ ïàïêè:"
+
+#: vacation.php:46
+msgid "Reason:"
+msgstr "Ïðè÷èíà:"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "Îòðèìàíèõ íà"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr ""
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr ""
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr ""
+
+#: config/fields.php.dist:55
+msgid "Resent To"
+msgstr ""
+
+#: config/fields.php.dist:51
+msgid "Resent-from"
+msgstr ""
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "Íàçàä äî ñïèñêó ô³ëüòð³â"
+
+#: spam.php:63 spam.php:131 vacation.php:32 vacation.php:115 forward.php:32
+#: forward.php:86 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "Íàçàä äî ñïèñêó ïðàâèë"
+
+#: templates/filters/header.inc:48
+msgid "Rule"
+msgstr "Ïðàâèëî"
+
+#: filters.php:76
+msgid "Rule Copied"
+msgstr ""
+
+#: filters.php:55
+msgid "Rule Deleted"
+msgstr ""
+
+#: spam.php:107 vacation.php:95 forward.php:70 filters.php:92
+msgid "Rule Disabled"
+msgstr ""
+
+#: spam.php:98 vacation.php:86 forward.php:61 filters.php:97
+msgid "Rule Enabled"
+msgstr ""
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "Íàçâà ïðàâèëà"
+
+#: lib/Script/sieve.php:2402
+msgid "Rule:"
+msgstr "Ïðàâèëî:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "Íåâäà÷à STARTTLS: (%s) %s"
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "Ñïàì"
+
+#: spam.php:80 vacation.php:60 forward.php:43 templates/rule/footer.inc:60
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:41
+msgid "Save"
+msgstr "Çáåðåãòè"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Çáåðåãòè íàëàøòóâàííÿ"
+
+#: spam.php:101 spam.php:127 vacation.php:89 vacation.php:111 forward.php:64
+#: forward.php:82
+msgid "Save and Disable"
+msgstr ""
+
+#: spam.php:92 spam.php:129 vacation.php:80 vacation.php:113 forward.php:55
+#: forward.php:84
+msgid "Save and Enable"
+msgstr ""
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr ""
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr ""
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr ""
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr ""
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr ""
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "Ïðî÷èòàí³"
+
+#: rule.php:208
+msgid "Select a field"
+msgstr "Âèáåð³òü ïîëå"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Âèáåð³òü íàá³ð ïðàâèë äëÿ ïîêàçó:"
+
+#: rule.php:326 templates/blacklist/blacklist.inc:23 lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "Âèáåð³òü ïàïêó ïðèçíà÷åííÿ"
+
+#: rule.php:245
+msgid "Self-Defined Header"
+msgstr ""
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "³äïðàâíèê"
+
+#: filters.php:116
+msgid "Settings successfully updated."
+msgstr "Íàëàøòóâàííÿ óñï³øíî îíîâëåíî."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr ""
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr ""
+
+#: spam.php:19
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr ""
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "Îá'ºì"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr ""
+
+#: filters.php:196 lib/Block/overview.php:105 lib/Block/overview.php:108
+#: lib/Script/sieve.php:429
+msgid "Spam Filter"
+msgstr ""
+
+#: spam.php:148 spam.php:155
+msgid "Spam Filtering"
+msgstr ""
+
+#: spam.php:72
+msgid "Spam Level:"
+msgstr ""
+
+#: vacation.php:41
+msgid "Start of vacation:"
+msgstr "Ïî÷àòîê âàêàö³é:"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr ""
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Òåìà"
+
+#: vacation.php:44
+msgid "Subject of vacation message:"
+msgstr ""
+
+#: lib/Script/sieve.php:2401
+msgid "Subject:"
+msgstr "Òåìà:"
+
+#: lib/api.php:89
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr ""
+
+#: lib/api.php:112
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr ""
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "Äðàéâåð ïîâ³äîìèâ: "
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr ""
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr ""
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "Äî"
+
+#: templates/filters/filter.html:30
+msgid "To:"
+msgstr "To:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "Íå ìîæó çàâàíòàæèòè âèçíà÷åííÿ äëÿ %s."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr ""
+
+#: vacation.php:155 filters.php:184 lib/Block/overview.php:61
+#: lib/Block/overview.php:64 lib/Script/maildrop.php:265
+#: lib/Script/procmail.php:266 lib/Script/sieve.php:396
+msgid "Vacation"
+msgstr "Âàêàö³ÿ"
+
+#: vacation.php:162
+msgid "Vacation Edit"
+msgstr ""
+
+#: vacation.php:16
+msgid "Vacation is not supported in the current filtering driver."
+msgstr ""
+
+#: rule.php:332
+msgid "Value"
+msgstr "Çíà÷åííÿ"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr ""
+
+#: filters.php:178 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:85 lib/Block/overview.php:88
+msgid "Whitelist"
+msgstr "Á³ëèé ñïèñîê"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr ""
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr ""
+
+#: lib/Script/maildrop.php:213 lib/Script/procmail.php:234
+#: lib/Script/sieve.php:315
+msgid "Whitelisted Addresses"
+msgstr ""
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr ""
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr ""
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr ""
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr ""
+
+#: rule.php:162 filters.php:69
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "Íå äîçâîëåíî ñòâîðþâàòè á³ëüøå, í³æ %d ïðàâèë."
+
+#: rule.php:23 filters.php:61
+msgid "You are not allowed to create or edit custom rules."
+msgstr "Âàì íå äîçâîëåíî ñòâîðþâàòè àáî ðåäàãóâàòè âëàñí³ ïðàâèëà."
+
+#: rule.php:140 filters.php:50
+msgid "You do not have permission to delete filter rules."
+msgstr "Âè íå ìàºòå ïðàâ äëÿ ñòèðàííÿ ïðàâèë ô³ëüòðóâàííÿ."
+
+#: rule.php:58 rule.php:155 filters.php:43 filters.php:110 filters.php:121
+msgid "You do not have permission to edit filter rules."
+msgstr "Âè íå ìàºòå ïðàâ äëÿ ðåäàãóâàííÿ ïðàâèë ô³ëüòðóâàííÿ."
+
+#: lib/Script/sieve.php:2399
+msgid "You have received a new message"
+msgstr "Âè îòðèìàëè íîâîãî ëèñòà"
+
+#: lib/Script/imap.php:301 lib/Script/imap.php:324 lib/Script/imap.php:339
+msgid "[No Subject]"
+msgstr "[Áåç òåìè]"
+
+#: lib/Ingo.php:383
+msgid "_Blacklist"
+msgstr "×îðíèé ñïèñîê"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr ""
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr ""
+
+#: lib/Ingo.php:389
+msgid "_Forward"
+msgstr ""
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr ""
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "Ïðàâà"
+
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr ""
+
+#: lib/Ingo.php:386
+msgid "_Vacation"
+msgstr ""
+
+#: lib/Ingo.php:380
+msgid "_Whitelist"
+msgstr "Á³ëèé ñïèñîê"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr ""
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "³"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr ""
+
+#: filters.php:216
+msgid "field"
+msgstr ""
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr ""
+
+#: lib/Script/maildrop.php:127
+msgid "maildrop script generated by Ingo"
+msgstr ""
+
+#: filters.php:216
+msgid "match"
+msgstr ""
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "àáî"
+
+#: lib/Script/procmail.php:128
+msgid "procmail script generated by Ingo"
+msgstr ""
diff --git a/ingo/po/zh_CN.po b/ingo/po/zh_CN.po
new file mode 100644 (file)
index 0000000..1ba07bc
--- /dev/null
@@ -0,0 +1,998 @@
+# Chinese translations for Ingo package
+# PACKAGE Èí¼þ°üµÄ¼òÌåÖÐÎÄ·­Òë.
+# Copyright 2007-2009 The Horde Project
+# This file is distributed under the same license as the Ingo package.
+# Automatically generated, 2007.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo H3 (1.1.3)\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2007-08-07 04:29-0400\n"
+"PO-Revision-Date: 2007-09-03 17:47+0800\n"
+"Last-Translator: Anna Chen <annachen2008@yahoo.com.cn>\n"
+"Language-Team: i18n@lists.horde.org\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=GB2312\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: filters.php:220
+msgid " and"
+msgstr "ºÍ"
+
+#: filters.php:220
+msgid " or"
+msgstr "»ò"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "¶ÔºÚÃûµ¥ÉϵĵØÖ·Ö´ÐеIJÙ×÷£º"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "¼¤»î½Å±¾"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "¼¤»î¡°%s¡±½Å±¾Ê§°Ü£º(%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "¸½¼ÓÉèÖÃ"
+
+#: forward.php:41
+msgid "Address(es) to forward to:"
+msgstr "ת·¢µØÖ·£º"
+
+#: vacation.php:50
+msgid "Addresses to not send responses to:"
+msgstr "²»·¢Ëͻظ´µÄµØÖ·£º"
+
+#: vacation.php:44
+msgid "Advanced Settings"
+msgstr "¸ß¼¶ÉèÖÃ"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "ÏÂÁÐËùÓÐÏî"
+
+#: lib/api.php:54
+msgid "Allow Rules"
+msgstr "Ó¦ÓùæÔò"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "Òѻظ´"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "ÏÂÁÐÈÎÒ»Ïî"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "Ó¦ÓùýÂËÆ÷"
+
+#: filters.php:249
+msgid "Are you sure you want to delete this rule?"
+msgstr "ÄúÈ·¶¨ÒªÉ¾³ý´Ë¹æ¸ñÂð£¿"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "ÿ´Î¸ü¸ÄºóÊÇ·ñ×Ô¶¯¸üнű¾£¿"
+
+#: vacation.php:39
+msgid "Basic Settings"
+msgstr "»ù±¾ÉèÖÃ"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "Ãܼþ³­ËÍ"
+
+#: lib/Storage.php:386
+msgid "Begins with"
+msgstr "¿ªÊ¼±ê¼Ç"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "°ó¶¨Ê§°Ü£º(%s) %s"
+
+#: filters.php:171 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:95 lib/Block/overview.php:98
+msgid "Blacklist"
+msgstr "ºÚÃûµ¥"
+
+#: blacklist.php:107
+msgid "Blacklist Edit"
+msgstr "±à¼­ºÚÃûµ¥"
+
+#: blacklist.php:17
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "µ±Ç°¹ýÂËÇý¶¯³ÌÐò²»Ö§³ÖºÚÃûµ¥¡£"
+
+#: lib/Script/procmail.php:207 lib/Script/sieve.php:251
+#: lib/Script/maildrop.php:186
+msgid "Blacklisted Addresses"
+msgstr "ºÚÃûµ¥ËùÁеØÖ·"
+
+#: config/fields.php.dist:88
+msgid "Body"
+msgstr "ÕýÎÄ"
+
+#: filters.php:217 rule.php:298
+msgid "Case Sensitive"
+msgstr "Çø·Ö´óСд"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "³­ËÍ"
+
+#: spam.php:89 rule.php:128 whitelist.php:36 forward.php:54 vacation.php:71
+#: blacklist.php:73
+msgid "Changes saved."
+msgstr "Òѱ£´æ¸ü¸Ä¡£"
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "Á¬½Óʧ°Ü"
+
+#: lib/Storage.php:382
+msgid "Contains"
+msgstr "°üº¬"
+
+#: filters.php:260 filters.php:261
+#, php-format
+msgid "Copy %s"
+msgstr "¸´ÖÆ %s"
+
+#: lib/Storage.php:972 lib/Storage/sql.php:573
+#, php-format
+msgid "Copy of %s"
+msgstr "%s ¸±±¾"
+
+#: lib/Template.php:236
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "ÎÞ·¨±£´æ±à¼­µÄÄ£°åÎļþ¡°%s¡±¡£"
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "´´½¨ÐÂÎļþ¼Ð"
+
+#: lib/Script/procmail.php:336 lib/Script/maildrop.php:317
+msgid "DISABLED: "
+msgstr "ÒѽûÓãº"
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "Í£Óýű¾"
+
+#: filters.php:249 filters.php:250
+#, php-format
+msgid "Delete %s"
+msgstr "ɾ³ý %s"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "ɾ³ýÌõ¼þ"
+
+#: lib/Storage.php:330
+msgid "Delete message completely"
+msgstr "Íêȫɾ³ýÓʼþ"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "ÒÑɾ³ý"
+
+#: lib/Storage.php:318
+msgid "Deliver into my Inbox"
+msgstr "·¢µ½ÎÒµÄÊÕ¼þÏä"
+
+#: lib/Storage.php:344
+msgid "Deliver into my Inbox and copy to"
+msgstr "·¢µ½ÎÒµÄÊÕ¼þÏä²¢¸´ÖƵ½"
+
+#: lib/Storage.php:339
+msgid "Deliver into my Inbox and redirect to"
+msgstr "·¢µ½ÎÒµÄÊÕ¼þÏ䲢ת·¢µ½"
+
+#: lib/Storage.php:324
+msgid "Deliver to folder"
+msgstr "·¢µ½Îļþ¼Ð"
+
+#: filters.php:274 filters.php:275
+#, php-format
+msgid "Disable %s"
+msgstr "½ûÓà%s"
+
+#: spam.php:148 forward.php:97 vacation.php:134
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+#: templates/rule/header.inc:26
+msgid "Disabled"
+msgstr "ÒѽûÓÃ"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "ÔÚÓ¦ÓÃÿ¸ö¹ýÂËÆ÷ʱ£¬ÊÇ·ñÏÔʾÏêϸ֪ͨ£¿"
+
+#: vacation.php:52
+msgid "Do not send responses to bulk or list messages?"
+msgstr "Çë²»Òª»Ø¸´Èº·¢»òÁбíÓʼþ£¿"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "Ö´ÐвÙ×÷"
+
+#: lib/Storage.php:387
+msgid "Doesn't begin with"
+msgstr "²»Ê¹ÓÿªÊ¼±ê¼Ç"
+
+#: lib/Storage.php:383
+msgid "Doesn't contain"
+msgstr "²»°üº¬"
+
+#: lib/Storage.php:389
+msgid "Doesn't end with"
+msgstr "²»Ê¹ÓýáÊø±ê¼Ç"
+
+#: lib/Storage.php:391
+msgid "Doesn't exist"
+msgstr "²»´æÔÚ"
+
+#: lib/Storage.php:394
+msgid "Doesn't match (with placeholders)"
+msgstr "²»Æ¥Åä(Óëռλ·û)"
+
+#: templates/filters/header.inc:47 lib/Block/overview.php:63
+#: lib/Block/overview.php:72 lib/Block/overview.php:87
+#: lib/Block/overview.php:97 lib/Block/overview.php:107
+msgid "Edit"
+msgstr "±à¼­"
+
+#: filters.php:238 filters.php:240 filters.php:244 filters.php:245
+#, php-format
+msgid "Edit %s"
+msgstr "±à¼­ %s"
+
+#: filters.php:284 filters.php:285
+#, php-format
+msgid "Enable %s"
+msgstr "ÆôÓà%s"
+
+#: templates/filters/header.inc:49
+msgid "Enabled"
+msgstr "ÒÑÆôÓÃ"
+
+#: lib/Storage.php:388
+msgid "Ends with"
+msgstr "½áÊø±ê¼Ç"
+
+#: lib/Storage.php:399
+msgid "Equal to"
+msgstr "µÈÓÚ"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "¼ìË÷µ±Ç°½Å±¾Ê±³ö´í£º(%d) %s"
+
+#: blacklist.php:71
+msgid "Error saving changes."
+msgstr "±£´æ¸ü¸Äʱ³ö´í¡£"
+
+#: templates/filters/header.inc:41
+msgid "Existing Rules"
+msgstr "ÏÖÓйæÔò"
+
+#: lib/Storage.php:390
+msgid "Exists"
+msgstr "ÏÖÓÐ"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "Ô¤ÆÚ 1 ¸ö¶ÔÏ󣬵õ½ %d ¸ö¡£"
+
+#: lib/Driver/sivtest.php:205
+msgid "Failed to read from socket: "
+msgstr "¶ÁÈ¡Ì×½Ó×Öʧ°Ü£º"
+
+#: lib/Driver/sivtest.php:200
+msgid "Failed to write to socket: "
+msgstr "дÈëÌ×½Ó×Öʧ°Ü£º"
+
+#: lib/Driver/sivtest.php:195
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "дÈëÌ×½Ó×Öʧ°Ü£º(Á¬½Ó¶ªÊ§£¡)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "×Ö¶Î"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "¹ýÂËËùÓÐÓʼþ"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "½ö¹ýÂËÒѶÁÓʼþ"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "½ö¹ýÂËδ¶ÁÓʼþ"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "¹ýÂËÑ¡Ïî"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "¹ýÂ˹æÔò"
+
+#: filters.php:136
+msgid "Filter Rules"
+msgstr "¹ýÂ˹æÔò"
+
+#: script.php:52
+msgid "Filter Script Display"
+msgstr "ÏÔʾ¹ýÂ˽ű¾"
+
+#: lib/Ingo.php:379
+msgid "Filter _Rules"
+msgstr "¹ýÂ˹æÔò_R"
+
+#: lib/Script/imap.php:342
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "¹ýÂËÆ÷²Ù×÷£ºÒѽ« %s Óʼþ¸´ÖƵ½Îļþ¼Ð¡°%s¡±ÖС£"
+
+#: lib/Script/imap.php:328
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "¹ýÂËÆ÷²Ù×÷£ºÒÑɾ³ý %s Óʼþ¡£"
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "¹ýÂËÆ÷²Ù×÷£ºÒѽ«Óʼþ %s Òƶ¯µ½Îļþ¼Ð¡°%s¡±ÖС£"
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr "¹ýÂËÆ÷²Ù×÷£ºÒѽ«ÔÚºÚÃûµ¥ÉϵĠ%s Óʼþɾ³ý¡£"
+
+#: lib/Script/imap.php:339
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr "¹ýÂËÆ÷²Ù×÷£ºÒѽ«À´×Ô¡°%s¡±µÄÓʼþ¡°%s¡±¸´ÖƵ½Îļþ¼Ð¡°%s¡±ÖС£"
+
+#: lib/Script/imap.php:323
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "¹ýÂËÆ÷²Ù×÷£ºÒѽ«À´×Ô¡°%s¡±µÄÓʼþ¡°%s¡±É¾³ý¡£"
+
+#: lib/Script/imap.php:300
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr "¹ýÂËÆ÷²Ù×÷£ºÒѽ«À´×Ô¡°%s¡±µÄÓʼþ¡°%s¡±Òƶ¯µ½Îļþ¼Ð¡°%s¡±ÖС£"
+
+#: rule.php:176
+msgid "Filter not found."
+msgstr "δÕÒµ½¹ýÂËÆ÷¡£"
+
+#: spam.php:73
+msgid "Folder to receive spam:"
+msgstr "½ÓÊÕÀ¬»øÓʼþµÄÎļþ¼Ð£º"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "·ûºÏ´Ë¹æÔòµÄÀ´¼þ£º"
+
+#: filters.php:189 forward.php:95 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "ת·¢"
+
+#: forward.php:16
+msgid "Forward is not supported in the current filtering driver."
+msgstr "µ±Ç°¹ýÂËÇý¶¯³ÌÐò²»Ö§³Öת·¢¹¦ÄÜ¡£"
+
+#: lib/Script/procmail.php:282 lib/Script/sieve.php:211
+#: lib/Script/maildrop.php:235
+msgid "Forwards"
+msgstr "ת·¢"
+
+#: forward.php:102
+msgid "Forwards Edit"
+msgstr "±à¼­×ª·¢Óʼþ"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "·¢¼þÈË"
+
+#: lib/Script/sieve.php:2149
+msgid "From:"
+msgstr "·¢¼þÈË£º"
+
+#: lib/Script/sieve.php:110
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "ÓÉ Ingo Éú³É (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:397
+msgid "Greater than"
+msgstr "´óÓÚ"
+
+#: lib/Storage.php:398
+msgid "Greater than or equal to"
+msgstr "´óÓÚ»òµÈÓÚ"
+
+#: templates/rule/footer.inc:32
+msgid "Important"
+msgstr "ÖØÒª"
+
+#: rule.php:36
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "µ±Ç° ¹ýÂËÆô¶¯³ÌÐò²»Ö§³Öµ¥¸ö¹æÔò¡£"
+
+#: lib/Script/sieve.php:1946
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "Ö¸¶¨µÄ·¢¼þÏä²»´æÔÚ¡£"
+
+#: lib/Storage.php:384
+msgid "Is"
+msgstr "ÊÇ"
+
+#: lib/Storage.php:385
+msgid "Isn't"
+msgstr "²»ÊÇ"
+
+#: forward.php:39
+msgid "Keep a copy of messages in this account?"
+msgstr "ÊÇ·ñ±£Áô´ËÕÊ»§µÄÓʼþ¸±±¾£¿"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr "ÐèÒª LDAP Ö§³Ö£¬µ« LDAP Ä£¿é²»¿ÉÓûòδ¼ÓÔØ¡£"
+
+#: lib/Storage.php:395
+msgid "Less than"
+msgstr "СÓÚ"
+
+#: lib/Storage.php:396
+msgid "Less than or equal to"
+msgstr "СÓÚ»òµÈÓÚ"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "Áбí ID"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "½«Óʼþ±ê¼ÇΪÒÑɾ³ý_K"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "½«Óʼþ±ê¼ÇΪ£º"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "Æ¥ÅäÀàÐÍ"
+
+#: lib/Storage.php:393
+msgid "Matches (with placeholders)"
+msgstr "Æ¥Åä(Óëռλ·û)"
+
+#: lib/api.php:57
+msgid "Maximum Number of Rules"
+msgstr "¹æÔò×î´óÊýÁ¿"
+
+#: lib/Storage.php:520
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr ""
+"³¬³öºÚÃûµ¥Ëùº¬µØÖ·ÊýµÄ×î´óÖµ(¹²£º%s£¬µØÖ·Êý×î´óÖµ£º%s)¡£ÎÞ·¨½«ÐµØÖ·Ìí¼Óµ½ºÚ"
+"Ãûµ¥ÖС£"
+
+#: lib/Storage.php:573
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr ""
+"³¬³ö°×Ãûµ¥Ëùº¬µØÖ·ÊýµÄ×î´óÖµ(¹²£º%s£¬µØÖ·Êý×î´óÖµ£º%s)¡£ÎÞ·¨½«ÐµØÖ·Ìí¼Óµ½°×"
+"Ãûµ¥ÖС£"
+
+#: spam.php:70
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr "½«´óÓÚ»òµÈÓÚ´Ë·ÖÊýµÄÓʼþÊÓΪÀ¬»øÓʼþ¡£"
+
+#: lib/Script/sieve.php:2157
+msgid "Missing address to notify"
+msgstr "¶ªÊ§Í¨ÖªµØÖ·"
+
+#: lib/Script/sieve.php:1814
+msgid "Missing address to redirect message to"
+msgstr "¶ªÊ§Öض¨ÏòÓʼþµØÖ·"
+
+#: lib/Script/sieve.php:1846
+msgid "Missing reason for reject"
+msgstr "¶ªÊ§¾ÜÊÕÔ­Òò"
+
+#: lib/Script/sieve.php:2013
+msgid "Missing reason in vacation."
+msgstr "¶ªÊ§¼ÙÆÚÔ­Òò¡£"
+
+#: templates/filters/header.inc:51
+msgid "Move"
+msgstr "ÒÆ¶¯"
+
+#: filters.php:153 filters.php:270
+msgid "Move Rule Down"
+msgstr "ÏÂÒÆ¹æÔò"
+
+#: filters.php:154 filters.php:269
+msgid "Move Rule Up"
+msgstr "ÉÏÒÆ¹æÔò"
+
+#: vacation.php:47
+msgid "My email addresses:"
+msgstr "Îҵĵç×ÓÓʼþµØÖ·£º"
+
+#: templates/filters/filter-none.inc:3 templates/filters/footer.inc:6
+#: lib/Storage.php:868
+msgid "New Rule"
+msgstr "н¨¹æÔò"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "δÔÚºó¶ËÅäÖÃÖÐÕÒµ½¡°%s¡±ÔªËØ¡£"
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr "δ¸ø´ËÖ÷»úÅäÖúó¶Ë"
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr "δÔÚ backends.php ÖÐÅäÖúó¶Ë"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "ÎÞ¹ýÂËÆ÷¡£Çëµ¥»÷¡°%s¡±´´½¨Ð¹ýÂËÆ÷¡£"
+
+#: lib/Script/sieve.php:1414 lib/Script/sieve.php:1507
+#: lib/Script/sieve.php:1684
+msgid "No headers specified"
+msgstr "δָ¶¨±êÌâ"
+
+#: script.php:67
+msgid "No script generated."
+msgstr "δÉú³É½Å±¾¡£"
+
+#: lib/Script/sieve.php:1700
+msgid "No strings specified"
+msgstr "δָ¶¨×Ö·û´®"
+
+#: lib/Storage.php:400
+msgid "Not equal to"
+msgstr "²»µÈÓÚ"
+
+#: lib/Storage.php:360
+msgid "Notify email address"
+msgstr "֪ͨµç×ÓÓʼþµØÖ·"
+
+#: vacation.php:54
+msgid "Number of days between vacation replies:"
+msgstr "¼ÙÆÚ»Ø¸´ÓʼþËù¸ôµÄÌìÊý£º"
+
+#: lib/Storage.php:354
+msgid "Only flag the message"
+msgstr "½ö±ê¼Ç´ËÓʼþ"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "½Å±¾¸üÐÂÑ¡Ïî¡£"
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "ÆäËûÑ¡Ïî"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "¸ÅÊö"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "ÇëÊäÈëÐÂÎļþ¼ÐÃû³Æ£º"
+
+#: vacation.php:42
+msgid "Reason:"
+msgstr "Ô­Òò£º"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "ÒѽÓÊÕ"
+
+#: lib/Storage.php:335
+msgid "Redirect to"
+msgstr "ÖØ¶¨Ïòµ½"
+
+#: lib/Storage.php:392
+msgid "Regular expression"
+msgstr "ÕýÔò±í´ïʽ"
+
+#: lib/Storage.php:350
+msgid "Reject with reason"
+msgstr "¾ÜÊÕÔ­Òò"
+
+#: config/fields.php.dist:55
+msgid "Resent To"
+msgstr "ÖØ·¢µ½"
+
+#: config/fields.php.dist:51
+msgid "Resent-from"
+msgstr "ÖØ·¢´ËÈËÀ´¼þ"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "·µ»Ø¹ýÂËÁбí"
+
+#: spam.php:61 spam.php:129 forward.php:32 forward.php:86 vacation.php:32
+#: vacation.php:106 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "·µ»Ø¹æÔòÁбí"
+
+#: templates/filters/header.inc:48
+msgid "Rule"
+msgstr "¹æÔò"
+
+#: filters.php:76
+msgid "Rule Copied"
+msgstr "Ëù¸´ÖƹæÔò"
+
+#: filters.php:55
+msgid "Rule Deleted"
+msgstr "Ëùɾ³ý¹æÔò"
+
+#: spam.php:105 filters.php:92 forward.php:70 vacation.php:87
+msgid "Rule Disabled"
+msgstr "Ëù½ûÓùæÔò"
+
+#: spam.php:96 filters.php:97 forward.php:61 vacation.php:78
+msgid "Rule Enabled"
+msgstr "ËùÆôÓùæÔò"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "¹æÔòÃû³Æ£º"
+
+#: lib/Script/sieve.php:2151
+msgid "Rule:"
+msgstr "¹æÔò£º"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "STARTTLS Ê§°Ü£º(%s) %s"
+
+#: lib/Ingo.php:394
+msgid "S_pam"
+msgstr "À¬»øÓʼþ_P"
+
+#: spam.php:78 forward.php:43 vacation.php:56
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:41
+#: templates/rule/footer.inc:60
+msgid "Save"
+msgstr "±£´æ"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "±£´æÉèÖÃ"
+
+#: spam.php:99 spam.php:125 forward.php:64 forward.php:82 vacation.php:81
+#: vacation.php:102
+msgid "Save and Disable"
+msgstr "±£´æºÍ½ûÓÃ"
+
+#: spam.php:90 spam.php:127 forward.php:55 forward.php:84 vacation.php:72
+#: vacation.php:104
+msgid "Save and Enable"
+msgstr "±£´æºÍÆôÓÃ"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "½Å±¾"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "½Å±¾¸üÐÂ"
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr "δ¸üнű¾¡£"
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr "³É¹¦¼¤»î½Å±¾¡£"
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr "³É¹¦Í£Óýű¾¡£"
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "ÒѶÁ"
+
+#: rule.php:206
+msgid "Select a field"
+msgstr "Ñ¡Ôñ×Ö¶Î"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "Ñ¡ÔñÒªÏÔʾµÄ¹æÔò¼¯£º"
+
+#: rule.php:324 templates/blacklist/blacklist.inc:23 lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "Ñ¡ÔñÄ¿±êÎļþ¼Ð"
+
+#: rule.php:243
+msgid "Self-Defined Header"
+msgstr "×Ô¶¨Òå±êÌâ"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "·¢¼þÈË"
+
+#: filters.php:116
+msgid "Settings successfully updated."
+msgstr "³É¹¦¸üÐÂÉèÖá£"
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "ÏÔʾ»î¶¯½Å±¾"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "ÏÔʾµ±Ç°½Å±¾"
+
+#: spam.php:17
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr "µ±Ç°¹ýÂËÇý¶¯³ÌÐò²»Ö§³Ö¼òÒ×ÐÍÀ¬»øÓʼþ¹ýÂË¡£"
+
+#: config/fields.php.dist:83
+msgid "Size"
+msgstr "´óС"
+
+#: filters.php:195 lib/Script/sieve.php:413 lib/Block/overview.php:105
+#: lib/Block/overview.php:108
+msgid "Spam Filter"
+msgstr "À¬»øÓʼþ¹ýÂËÆ÷"
+
+#: spam.php:146 spam.php:153
+msgid "Spam Filtering"
+msgstr "À¬»øÓʼþ¹ýÂËÆ÷"
+
+#: spam.php:70
+msgid "Spam Level:"
+msgstr "À¬»øÓʼþ¼¶±ð£º"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "Èç¹û·ûºÏ´Ë¹æÔò£¬ÊÇ·ñÍ£Ö¹¼ì²é£¿"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "Ö÷Ìâ"
+
+#: vacation.php:40
+msgid "Subject of vacation message:"
+msgstr "¼ÙÆÚÓʼþÖ÷Ì⣺"
+
+#: lib/Script/sieve.php:2150
+msgid "Subject:"
+msgstr "Ö÷Ì⣺"
+
+#: lib/api.php:89
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "Òѽ«´ËµØÖ·¡°%s¡±Ìí¼Óµ½ºÚÃûµ¥ÖС£"
+
+#: lib/api.php:112
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "Òѽ«´ËµØÖ·¡°%s¡±Ìí¼Óµ½°×Ãûµ¥ÖС£"
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "Çý¶¯³ÌÐò±¨¸æ£º"
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr "¼¤»î½Å±¾Ê±³ö´í¡£"
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr "Í£Óýű¾Ê±³ö´í¡£"
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "ÊÕ¼þÈË"
+
+#: templates/filters/filter.html:30
+msgid "To:"
+msgstr "ÊÕ¼þÈË£º"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "ÎÞ·¨¼ÓÔØ %s ¶¨Òå¡£"
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "Óû§±êÌâ"
+
+#: filters.php:183 vacation.php:132 lib/Script/procmail.php:262
+#: lib/Script/sieve.php:380 lib/Script/maildrop.php:265
+#: lib/Block/overview.php:61 lib/Block/overview.php:64
+msgid "Vacation"
+msgstr "¼ÙÆÚ"
+
+#: vacation.php:139
+msgid "Vacation Edit"
+msgstr "±à¼­¼ÙÆÚ"
+
+#: vacation.php:16
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "µ±Ç°¹ýÂËÇý¶¯³ÌÐò²»Ö§³Ö¼ÙÆÚ¹¦ÄÜ¡£"
+
+#: rule.php:330
+msgid "Value"
+msgstr "ֵ"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "°×Ãûµ¥µØÖ·_I£º"
+
+#: filters.php:177 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:85 lib/Block/overview.php:88
+msgid "Whitelist"
+msgstr "°×Ãûµ¥"
+
+#: whitelist.php:55
+msgid "Whitelist Edit"
+msgstr "±à¼­°×Ãûµ¥"
+
+#: whitelist.php:18
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "µ±Ç°¹ýÂËÇý¶¯³ÌÐò²»Ö§³Ö°×Ãûµ¥¡£"
+
+#: lib/Script/procmail.php:234 lib/Script/sieve.php:314
+#: lib/Script/maildrop.php:213
+msgid "Whitelisted Addresses"
+msgstr "°×Ãûµ¥ÉϵĵØÖ·"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "X-ÓÅÏȼ¶"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-À¬»øÓʼþ-¼¶±ð"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-À¬»øÓʼþ-·ÖÊý"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-À¬»øÓʼþ-״̬"
+
+#: filters.php:69 rule.php:160
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "´´½¨µÄ¹æÔò²»¿ÉÒÔ³¬¹ý %d Ìõ¡£ "
+
+#: filters.php:61 rule.php:21
+msgid "You are not allowed to create or edit custom rules."
+msgstr "²»ÔÊÐí´´½¨»ò±à¼­×Ô¶¨Ò广Ôò¡£"
+
+#: filters.php:50 rule.php:138
+msgid "You do not have permission to delete filter rules."
+msgstr "Äú²»¾ßÓÐɾ³ý¹ýÂ˹æÔòµÄȨÏÞ¡£"
+
+#: filters.php:43 filters.php:110 filters.php:121 rule.php:56 rule.php:153
+msgid "You do not have permission to edit filter rules."
+msgstr "Äú²»¾ßÓб༭¹ýÂ˹æÔòµÄȨÏÞ¡£"
+
+#: lib/Script/sieve.php:2148
+msgid "You have received a new message"
+msgstr "ÄúÓÐÐÂÓʼþ"
+
+#: lib/Script/imap.php:301 lib/Script/imap.php:324 lib/Script/imap.php:339
+msgid "[No Subject]"
+msgstr "[No Subject]"
+
+#: lib/Ingo.php:384
+msgid "_Blacklist"
+msgstr "ºÚÃûµ¥_B"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "Íêȫɾ³ýÓʼþ_D"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "Ò»ÐÐÊäÈëÒ»¸öµØÖ·_E£º"
+
+#: lib/Ingo.php:390
+msgid "_Forward"
+msgstr "ת·¢_F"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "½«ÓʼþÒÆ¶¯µ½Îļþ¼Ð_M£º"
+
+#: lib/Ingo.php:400
+msgid "_Permissions"
+msgstr "ȨÏÞ_P"
+
+#: lib/Ingo.php:397
+msgid "_Script"
+msgstr "½Å±¾_S"
+
+#: lib/Ingo.php:387
+msgid "_Vacation"
+msgstr "ÐݼÙ_V"
+
+#: lib/Ingo.php:381
+msgid "_Whitelist"
+msgstr "°×Ãûµ¥_W"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "ÆôÓÃ"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "ºÍ"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "ÒѽûÓà- µ¥»÷ÆôÓÃ"
+
+#: filters.php:215
+msgid "field"
+msgstr "×Ö¶Î"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "½ûÓÃ"
+
+#: lib/Script/maildrop.php:127
+msgid "maildrop script generated by Ingo"
+msgstr "Ingo Éú³ÉµÄ maildrop ½Å±¾"
+
+#: filters.php:215
+msgid "match"
+msgstr "Æ¥Åä"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "»ò"
+
+#: lib/Script/procmail.php:128
+msgid "procmail script generated by Ingo"
+msgstr "Ingo Éú³ÉµÄ procmail ½Å±¾"
diff --git a/ingo/po/zh_TW.po b/ingo/po/zh_TW.po
new file mode 100644 (file)
index 0000000..51a9e79
--- /dev/null
@@ -0,0 +1,1023 @@
+# INGO Traditional Chinese Translation
+# Copyright 2002 David Chang.±i¨}¤å,¥xÆW
+# This file is distributed under the same license as the INGO package.
+# David Chang <david@tmv.gov.tw>, 2002.
+#
+msgid ""
+msgstr ""
+"Project-Id-Version: Ingo 1.2\n"
+"Report-Msgid-Bugs-To: dev@lists.horde.org\n"
+"POT-Creation-Date: 2007-11-30 10:51+0800\n"
+"PO-Revision-Date: 2007-08-31 12:00+0800\n"
+"Last-Translator: David Chang <david@tmv.gov.tw>\n"
+"Language-Team: Traditional Chinese <i18n@lists.horde.org>\n"
+"MIME-Version: 1.0\n"
+"Content-Type: text/plain; charset=BIG5\n"
+"Content-Transfer-Encoding: 8bit\n"
+
+#: filters.php:223
+msgid " and"
+msgstr " ¦Ó¥B"
+
+#: filters.php:223
+msgid " or"
+msgstr " ©ÎªÌ"
+
+#: templates/blacklist/blacklist.inc:17
+msgid "Action for blacklisted addresses:"
+msgstr "¦C¤J¶Â¦W³æ«H¥óªº³B²z¤è¦¡:"
+
+#: templates/script/activate.inc:10
+msgid "Activate Script"
+msgstr "±Ò¥Î"
+
+#: lib/Driver/ldap.php:229
+#, php-format
+msgid "Activating the script for \"%s\" failed: (%d) %s"
+msgstr "±Ò¥Î¹LÂoµ{¦¡ \"%s\" ®É¥¢±Ñ: (%d) %s"
+
+#: templates/filters/settings.inc:8
+msgid "Additional Settings"
+msgstr "¶i¶¥"
+
+#: forward.php:43
+msgid "Address(es) to forward to:"
+msgstr "¦Û°ÊÂà±H¨ì¤U¦Cªº¹q¤l¶l¥ó¦í§}:"
+
+#: vacation.php:56
+msgid "Addresses to not send responses to:"
+msgstr "¥H¤Uªº¹q¤l¶l¥ó¦í§}¤£¦^À³:"
+
+#: vacation.php:50
+msgid "Advanced Settings"
+msgstr "¶i¶¥³]©w"
+
+#: templates/rule/header.inc:44
+msgid "All of the following"
+msgstr "©Ò¦³¤U¦C±ø¥ó"
+
+#: lib/api.php:68
+msgid "Allow Rules"
+msgstr "¤¹³\³W«h"
+
+#: templates/rule/footer.inc:34
+msgid "Answered"
+msgstr "¤w¦^ÂÐ"
+
+#: templates/rule/header.inc:45
+msgid "Any of the following"
+msgstr "¥ô¦ó¤U¦C±ø¥ó"
+
+#: templates/filters/footer.inc:8
+msgid "Apply Filters"
+msgstr "®M¥Î«H¥ó¹LÂo"
+
+#: filters.php:252
+msgid "Are you sure you want to delete this rule?"
+msgstr "§A½T©w­n§R°£³o­Ó³W«h¶Ü?"
+
+#: config/prefs.php.dist:33
+msgid "Automatically update the script after each change?"
+msgstr "¨C·í¦³²§°Ê®É¬O§_¦Û°Ê§ó·s¦¹¹LÂoµ{¦¡?"
+
+#: vacation.php:41
+msgid "Basic Settings"
+msgstr "°ò¥»³]©w"
+
+#: config/fields.php.dist:47
+msgid "Bcc"
+msgstr "¯µ¥ó°Æ¥»"
+
+#: lib/Storage.php:346
+msgid "Begins with"
+msgstr "¶}ÀY¬O"
+
+#: lib/Driver/ldap.php:106 lib/Driver/ldap.php:111
+#, php-format
+msgid "Bind failed: (%s) %s"
+msgstr "³sµ²¥¢±Ñ: (%s) %s"
+
+#: filters.php:174 templates/blacklist/blacklist.inc:7
+#: lib/Block/overview.php:95 lib/Block/overview.php:98
+msgid "Blacklist"
+msgstr "¶Â¦W³æ"
+
+#: blacklist.php:104
+msgid "Blacklist Edit"
+msgstr "½s¿è¶Â¦W³æ"
+
+#: blacklist.php:19
+msgid "Blacklist is not supported in the current filtering driver."
+msgstr "¥Ø«eªº¹LÂo¾¹ÅX°Êµ{¦¡¨Ã¥¼¤ä´©¶Â¦W³æªº¥\¯à."
+
+#: lib/Script/procmail.php:209 lib/Script/sieve.php:269
+#: lib/Script/maildrop.php:197
+msgid "Blacklisted Addresses"
+msgstr "¤w³Q¦C¬°¶Â¦W³æªº¶l¥ó¦a§}"
+
+#: config/fields.php.dist:100
+msgid "Body"
+msgstr "¥»¤å"
+
+#: filters.php:220 rule.php:322
+msgid "Case Sensitive"
+msgstr "°Ï¤À¤j¤p¼g"
+
+#: config/fields.php.dist:43
+msgid "Cc"
+msgstr "°Æ¥»"
+
+#: spam.php:90 rule.php:141 whitelist.php:38 forward.php:56 vacation.php:81
+#: blacklist.php:70
+msgid "Changes saved."
+msgstr "¤wÀx¦sÅܧó"
+
+#: lib/Driver/ldap.php:73
+msgid "Connection failure"
+msgstr "³sµ²¥¢±Ñ"
+
+#: lib/Storage.php:342
+msgid "Contains"
+msgstr "¥]§t"
+
+#: filters.php:263 filters.php:264
+#, php-format
+msgid "Copy %s"
+msgstr "½Æ»s %s"
+
+#: lib/Storage.php:993 lib/Storage/sql.php:618
+#, php-format
+msgid "Copy of %s"
+msgstr "%s ªº½Æ»s"
+
+#: lib/Template.php:235
+#, php-format
+msgid "Could not save the compiled template file '%s'."
+msgstr "µLªkÀx¦s¤w½sĶªº¼Ë¥»ÀÉ®× '%s'."
+
+#: lib/Ingo.php:62
+msgid "Create new folder"
+msgstr "«Ø¥ß·s«H¥ó§X"
+
+#: lib/Script/procmail.php:342 lib/Script/maildrop.php:362
+msgid "DISABLED: "
+msgstr "¤w°±¥Î: "
+
+#: templates/script/activate.inc:17
+msgid "Deactivate Script"
+msgstr "°±¥Î"
+
+#: filters.php:252 filters.php:253
+#, php-format
+msgid "Delete %s"
+msgstr "§R°£ %s"
+
+#: templates/rule/filter.inc:33
+msgid "Delete Condition"
+msgstr "§R°£±ø¥ó"
+
+#: lib/Storage.php:290
+msgid "Delete message completely"
+msgstr "¹ý©³§R°£«H¥ó"
+
+#: templates/rule/footer.inc:36
+msgid "Deleted"
+msgstr "¤w§R°£"
+
+#: lib/Storage.php:278
+msgid "Deliver into my Inbox"
+msgstr "»¼°e¨ì§Úªº¦¬¥ó½c"
+
+#: lib/Storage.php:304
+msgid "Deliver into my Inbox and copy to"
+msgstr "»¼°e¨ì§Úªº¦¬¥ó½c¨Ã¥B½Æ»s¨ì"
+
+#: lib/Storage.php:299
+msgid "Deliver into my Inbox and redirect to"
+msgstr "»¼°e¨ì§Úªº¦¬¥ó½c¨Ã¥BÂà§}»¼°e¨ì"
+
+#: lib/Storage.php:284
+msgid "Deliver to folder"
+msgstr "»¼°e¨ì«H¥ó§X"
+
+#: config/fields.php.dist:83
+msgid "Destination (To,Cc,Bcc,etc)"
+msgstr "¥Øªº (¦¬¥ó¤H To,°Æ¥» Cc,¯µ¥ó°Æ¥» Bcc,µ¥)"
+
+#: filters.php:277 filters.php:278
+#, php-format
+msgid "Disable %s"
+msgstr "°±¥Î %s"
+
+#: spam.php:149 forward.php:99 vacation.php:153
+#: templates/whitelist/whitelist.inc:10 templates/blacklist/blacklist.inc:10
+#: templates/rule/header.inc:26
+msgid "Disabled"
+msgstr "¤w°±¥Î"
+
+#: templates/filters/settings.inc:15
+msgid "Display detailed notification when each filter is applied?"
+msgstr "·í²Å¦X¹LÂo³W«hªº«H¥ó³Q®M¥Î®É,Åã¥Ü²Ó¸`¤º®e?"
+
+#: vacation.php:58
+msgid "Do not send responses to bulk or list messages?"
+msgstr "¦pªG¬O°Q½×¸s²Õ©Î¼s§i«H¥ó,«h¤£¶Ç°e°²´Á¦^À³?"
+
+#: templates/rule/footer.inc:10
+msgid "Do this:"
+msgstr "°õ¦æ¦¹¤@°Ê§@:"
+
+#: lib/Storage.php:347
+msgid "Doesn't begin with"
+msgstr "¶}ÀY¤£¬O"
+
+#: lib/Storage.php:343
+msgid "Doesn't contain"
+msgstr "¤£¥]§t"
+
+#: lib/Storage.php:349
+msgid "Doesn't end with"
+msgstr "µ²§À¤£¬O"
+
+#: lib/Storage.php:351
+msgid "Doesn't exist"
+msgstr "¤£¦s¦b"
+
+#: lib/Storage.php:354
+msgid "Doesn't match (with placeholders)"
+msgstr "¤£²Å¦X (¥H¦û¦ì²Å¸¹ªí¥Ü)"
+
+#: templates/filters/header.inc:26 lib/Block/overview.php:63
+#: lib/Block/overview.php:72 lib/Block/overview.php:87
+#: lib/Block/overview.php:97 lib/Block/overview.php:107
+msgid "Edit"
+msgstr "½s¿è"
+
+#: filters.php:241 filters.php:243 filters.php:247 filters.php:248
+#, php-format
+msgid "Edit %s"
+msgstr "½s¿è %s"
+
+#: filters.php:287 filters.php:288
+#, php-format
+msgid "Enable %s"
+msgstr "±Ò¥Î %s"
+
+#: templates/filters/header.inc:28
+msgid "Enabled"
+msgstr "¤w±Ò¥Î"
+
+#: vacation.php:45
+msgid "End of vacation:"
+msgstr "°²´Á¨´¤é:"
+
+#: lib/Storage.php:348
+msgid "Ends with"
+msgstr "µ²§À¬O"
+
+#: lib/Storage.php:359
+msgid "Equal to"
+msgstr "µ¥©ó"
+
+#: lib/Driver/ldap.php:138 lib/Driver/ldap.php:148 lib/Driver/ldap.php:157
+#: lib/Driver/ldap.php:167
+#, php-format
+msgid "Error retrieving current script: (%d) %s"
+msgstr "Ū¨ú²{¦æ¹LÂoµ{¦¡: (%d)  %s ®Éµo¥Í¿ù»~"
+
+#: blacklist.php:68
+msgid "Error saving changes."
+msgstr "Àx¦sÅܧó®Éµo¥Í¿ù»~."
+
+#: templates/filters/header.inc:20
+msgid "Existing Rules"
+msgstr "²{¦s³W«h"
+
+#: lib/Storage.php:350
+msgid "Exists"
+msgstr "¦s¦b"
+
+#: lib/Driver/ldap.php:143
+#, php-format
+msgid "Expected 1 object, got %d."
+msgstr "´Á«Ý 1 ­Óª«¥ó, ±o¨ì %d."
+
+#: lib/Driver/sivtest.php:204
+msgid "Failed to read from socket: "
+msgstr "¦ÛÀɮ׳q¹D(socket)Ū¨ú¥¢±Ñ: "
+
+#: lib/Driver/sivtest.php:199
+msgid "Failed to write to socket: "
+msgstr "¼g¤JÀɮ׳q¹D(socket)¥¢±Ñ: "
+
+#: lib/Driver/sivtest.php:194
+msgid "Failed to write to socket: (connection lost!)"
+msgstr "¼g¤JÀɮ׳q¹D(socket)¥¢±Ñ: (¿ò¥¢³sµ²!)"
+
+#: templates/rule/filter.inc:10
+msgid "Field"
+msgstr "Äæ¦ì"
+
+#: templates/filters/settings.inc:22
+msgid "Filter All Messages"
+msgstr "®M¥Î¹LÂo©ó©Ò¦³«H¥ó"
+
+#: templates/filters/settings.inc:24
+msgid "Filter Only Seen Messages"
+msgstr "¥u®M¥Î¹LÂo©ó¬Ý¹Lªº«H¥ó"
+
+#: templates/filters/settings.inc:23
+msgid "Filter Only Unseen Messages"
+msgstr "¥u®M¥Î¹LÂo©ó¥¼¬Ý¹Lªº«H¥ó"
+
+#: templates/filters/settings.inc:20
+msgid "Filter Options"
+msgstr "¹LÂo¾¹¿ï¶µ"
+
+#: templates/rule/header.inc:25
+msgid "Filter Rule"
+msgstr "¹LÂo³W«h"
+
+#: filters.php:139
+msgid "Filter Rules"
+msgstr "¹LÂo³W«h"
+
+#: script.php:54
+msgid "Filter Script Display"
+msgstr "Åã¥Ü¹LÂo¾¹µ{¦¡"
+
+#: lib/Ingo.php:379
+msgid "Filter _Rules"
+msgstr "¹LÂo³W«h_R"
+
+#: lib/Script/imap.php:348
+#, php-format
+msgid "Filter activity: %s message(s) have been copied to the folder \"%s\"."
+msgstr "¹LÂo¥Í®Ä: ¤w½Æ»s %s «Ê«H¥ó¦Ü«H¥ó§X \"%s\"."
+
+#: lib/Script/imap.php:334
+#, php-format
+msgid "Filter activity: %s message(s) have been deleted."
+msgstr "¹LÂo¥Í®Ä: ¤w§R°£ %s «Ê«H¥ó."
+
+#: lib/Script/imap.php:312
+#, php-format
+msgid "Filter activity: %s message(s) have been moved to the folder \"%s\"."
+msgstr "¹LÂo¥Í®Ä: ¤w·h²¾ %s «Ê«H¥ó¨ì«H¥ó§X \"%s\"."
+
+#: lib/Script/imap.php:206
+#, php-format
+msgid "Filter activity: %s message(s) that matched the blacklist were deleted."
+msgstr "¹LÂo¥Í®Ä: ¤w§R°£ %s «Ê²Å¦X¶Â¦W³æ±ø¥óªº«H¥ó."
+
+#: lib/Script/imap.php:345
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been copied to the "
+"folder \"%s\"."
+msgstr "¹LÂo¥Í®Ä: ±H¦Û \"%2$s\" ªº«H¥ó \"%1$s\" ¤w³Q½Æ»s¨ì«H¥ó§X \"%3$s\"."
+
+#: lib/Script/imap.php:329
+#, php-format
+msgid "Filter activity: The message \"%s\" from \"%s\" has been deleted."
+msgstr "¹LÂo¥Í®Ä: «H¥ó \"%s\" ±H¦Û \"%s\" ¤w³Q§R°£."
+
+#: lib/Script/imap.php:306
+#, php-format
+msgid ""
+"Filter activity: The message \"%s\" from \"%s\" has been moved to the folder "
+"\"%s\"."
+msgstr "¹LÂo¥Í®Ä: ±H¦Û \"%2$s\" ªº«H¥ó \"%1$s\" ¤w³Q·h²¾¦Ü«H¥ó§X \"%3$s\"."
+
+#: rule.php:188
+msgid "Filter not found."
+msgstr "§ä¤£¨ì¹LÂo¾¹."
+
+#: templates/rule/footer.inc:32
+msgid "Flagged For Followup"
+msgstr "­«­n"
+
+#: spam.php:74
+msgid "Folder to receive spam:"
+msgstr "¦¬¨ú¼s§i¶l¥óªº«H¥ó§X:"
+
+#: templates/rule/header.inc:42
+msgid "For an incoming message that matches:"
+msgstr "©Ò¦³±Hµ¹§Úªº«H¥ó¥u­n²Å¦X:"
+
+#: filters.php:192 forward.php:97 lib/Block/overview.php:71
+#: lib/Block/overview.php:73
+msgid "Forward"
+msgstr "¦Û°ÊÂà±H"
+
+#: lib/Script/sieve.php:222
+#, fuzzy
+msgid "Forward Keep Action"
+msgstr "¨ä¥L§@¥Î¤è¦¡"
+
+#: forward.php:18
+msgid "Forward is not supported in the current filtering driver."
+msgstr "¥Ø«eªº¹LÂo¾¹ÅX°Êµ{¦¡¨Ã¥¼¤ä´©¦Û°ÊÂà±Hªº¥\¯à."
+
+#: lib/Script/procmail.php:288 lib/Script/sieve.php:232
+#: lib/Script/maildrop.php:246
+msgid "Forwards"
+msgstr "¦Û°ÊÂà«H"
+
+#: forward.php:104
+msgid "Forwards Edit"
+msgstr "½s¿è¦Û°ÊÂà«H"
+
+#: config/fields.php.dist:39
+msgid "From"
+msgstr "±H¥ó¤H"
+
+#: lib/Script/sieve.php:2927
+msgid "From:"
+msgstr "±H¥ó¤H:"
+
+#: lib/Script/sieve.php:118
+msgid "Generated by Ingo (http://www.horde.org/ingo/)"
+msgstr "Ingo »s§@ (http://www.horde.org/ingo/)"
+
+#: lib/Storage.php:357
+msgid "Greater than"
+msgstr "¤j©ó"
+
+#: lib/Storage.php:358
+msgid "Greater than or equal to"
+msgstr "¤j©ó©Îµ¥©ó"
+
+#: rule.php:38
+msgid "Individual rules are not supported in the current filtering driver."
+msgstr "¥Ø«eªº¹LÂo¾¹ÅX°Êµ{¦¡¨Ã¥¼¤ä´©­Ó§O³W«h."
+
+#: lib/Script/sieve.php:2521
+msgid "Inexistant mailbox specified for message delivery."
+msgstr "«ü©w»¼°e«H¥óªº«H¥ó§X¨Ã¤£¦s¦b."
+
+#: lib/Storage.php:344
+msgid "Is"
+msgstr "¬O"
+
+#: lib/Storage.php:345
+msgid "Isn't"
+msgstr "¤£¬O"
+
+#: forward.php:41
+msgid "Keep a copy of messages in this account?"
+msgstr "«O¯d³o­Ó±b¸¹¤¤ªº«H¥ó?"
+
+#: lib/Driver/ldap.php:23
+msgid ""
+"LDAP support is required but the LDAP module is not available or not loaded."
+msgstr "¥²¶·­n¦³ LDAP ªº¤ä´©,¦ý¬O LDAP ¼Ò²Õ¤£¬O¥¼¦w¸Ë´N¬O¨S¦³¸ü¤J."
+
+#: lib/Storage.php:355
+msgid "Less than"
+msgstr "¤p©ó"
+
+#: lib/Storage.php:356
+msgid "Less than or equal to"
+msgstr "¤p©ó©Îµ¥©ó"
+
+#: config/fields.php.dist:59
+msgid "List-ID"
+msgstr "°Q½×¸s²Õ-ÃѧO¸¹½X"
+
+#: templates/blacklist/blacklist.inc:20
+msgid "Mar_k message as deleted"
+msgstr "¼Ð»x«H¥ó¬°¤w§R°£_k"
+
+#: templates/rule/footer.inc:25
+msgid "Mark message as:"
+msgstr "¼Ð»x«H¥ó¬°:"
+
+#: templates/rule/filter.inc:23
+msgid "Match type"
+msgstr "²Å¦X«¬ºA"
+
+#: lib/Storage.php:353
+msgid "Matches (with placeholders)"
+msgstr "²Å¦X (¥H¦û¦ì²Å¸¹ªí¥Ü)"
+
+#: lib/api.php:71
+msgid "Maximum Number of Rules"
+msgstr "³W«h¼Æ¥Ø¤W­­"
+
+#: lib/Storage.php:507
+#, php-format
+msgid ""
+"Maximum number of blacklisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to blacklist."
+msgstr "¶Â¦W³æ¼Æ¥Ø¤w¹F¤W­­(¤w¥Î: %s, ¤W­­: %s). µLªk·s¼W¦a§}¨ì¶Â¦W³æ."
+
+#: lib/Storage.php:560
+#, php-format
+msgid ""
+"Maximum number of whitelisted addresses exceeded (Total addresses: %s, "
+"Maximum addresses: %s).  Could not add new addresses to whitelist."
+msgstr "¤Íµ½¦W³æ¼Æ¥Ø¤w¹F¤W­­(¤w¥Î: %s, ¤W­­: %s). µLªk·s¼W¦a§}¨ì¤Íµ½¦W³æ."
+
+#: spam.php:71
+msgid ""
+"Messages with a likely spam score greater than or equal to this number will "
+"be treated as spam."
+msgstr "«H¥ó³Q½á©óªº¼s§iµû¤À¤j©ó©Îµ¥©ó³o­Ó¤À¼Æ®É±N³Qµø¬°¼s§i¶l¥ó."
+
+#: lib/Script/sieve.php:2941
+msgid "Missing address to notify"
+msgstr "¯Ê¤Ö¶l¥ó³qª¾¦a§}"
+
+#: lib/Script/sieve.php:2322
+msgid "Missing address to redirect message to"
+msgstr "¯Ê¤ÖÂà§}»¼°e©Ò»Ý­nªº«H¥ó¦a§}"
+
+#: lib/Script/sieve.php:2368
+msgid "Missing reason for reject"
+msgstr "¯Ê¤Ö°h¦^«H¥ó©Ò»Ý­nªº²z¥Ñ"
+
+#: lib/Script/sieve.php:2671
+msgid "Missing reason in vacation."
+msgstr "¯Ê¤Ö°²´Á³qª¾©Ò»Ý­nªº²z¥Ñ"
+
+#: templates/filters/header.inc:32
+msgid "Move"
+msgstr "·h²¾"
+
+#: filters.php:156 filters.php:273
+msgid "Move Rule Down"
+msgstr "¤U²¾(©µ«á®M¥Î)"
+
+#: filters.php:157 filters.php:272
+msgid "Move Rule Up"
+msgstr "¤W²¾(Àu¥ý®M¥Î)"
+
+#: vacation.php:53
+msgid "My email addresses:"
+msgstr "§Úªº¹q¤l¶l¥ó¦a§}:"
+
+#: templates/filters/filter-none.inc:3 templates/filters/footer.inc:6
+#: lib/Storage.php:889
+msgid "New Rule"
+msgstr "·s¼W³W«h"
+
+#: lib/Ingo.php:230 lib/Ingo.php:232
+#, php-format
+msgid "No \"%s\" element found in backend configuration."
+msgstr "¦b¦øªAºÝªº³]©w¸ê®Æ¤¤§ä¤£¨ìÃö©ó \"%s\" ªº¤¸¥ó."
+
+#: lib/Ingo.php:223
+msgid "No backend configured for this host"
+msgstr "¦¹¥D¾÷ªº¦øªAºÝ¥¼³]©w"
+
+#: lib/Ingo.php:199
+msgid "No backends configured in backends.php"
+msgstr "©|¥¼¦b backends.php ¤¤³]©w¦øªAºÝ¸ê°T"
+
+#: templates/filters/filter-none.inc:3
+#, php-format
+msgid "No filters. Click \"%s\" to create a new filter."
+msgstr "µL³W«h. ÂI¿ï \"%s\" «Ø¥ß·sªº¹LÂo³W«h"
+
+#: lib/Script/sieve.php:1679 lib/Script/sieve.php:1828
+#: lib/Script/sieve.php:2044
+msgid "No headers specified"
+msgstr "¥¼«ü©wªíÀY"
+
+#: script.php:69
+msgid "No script generated."
+msgstr "¹LÂoµ{¦¡¥¼²£¥Í."
+
+#: lib/Script/sieve.php:2060 lib/Script/sieve.php:2144
+msgid "No strings specified"
+msgstr "¥¼«ü©w¦r¦ê"
+
+#: lib/Storage.php:360
+msgid "Not equal to"
+msgstr "¤£µ¥©ó"
+
+#: lib/Storage.php:320
+msgid "Notify email address"
+msgstr "³qª¾¹q¤l¶l¥ó¦a§}"
+
+#: vacation.php:60
+msgid "Number of days between vacation replies:"
+msgstr "¦A¦^À³¦P¤@­Ó¤H¥²¶·¶¡¹jªº¤Ñ¼Æ:"
+
+#: lib/Storage.php:314
+msgid "Only flag the message"
+msgstr "¶È¼Ð°O¶l¥ó"
+
+#: config/prefs.php.dist:19
+msgid "Options about script updating."
+msgstr "Ãö©ó¹LÂoµ{¦¡§ó·sªº¿ï¶µ."
+
+#: config/prefs.php.dist:17
+msgid "Other Options"
+msgstr "¨ä¥L¿ï¶µ"
+
+#: lib/Block/overview.php:3
+msgid "Overview"
+msgstr "·§Æ["
+
+#: config/fields.php.dist:91
+msgid "Participant (From,To,etc)"
+msgstr "°Ñ»PªÌ (±H¥ó¤H From,¦¬¥ó¤H To,µ¥)"
+
+#: templates/javascript/new_folder.js:7
+msgid "Please enter the name of the new folder:"
+msgstr "½Ð¿é¤J·s«H¥ó§Xªº¦WºÙ:"
+
+#: vacation.php:48
+msgid "Reason:"
+msgstr "­ì¦]:"
+
+#: config/fields.php.dist:63
+msgid "Received"
+msgstr "ªíÀY¤¤ªº Received Äæ¦ì"
+
+#: lib/Storage.php:295
+msgid "Redirect to"
+msgstr "Âà§}»¼°e¨ì"
+
+#: lib/Storage.php:352
+msgid "Regular expression"
+msgstr "¥¿³W±`¦¡"
+
+#: lib/Storage.php:310
+msgid "Reject with reason"
+msgstr "¥H¦¹­ì¦]°h«H"
+
+#: config/fields.php.dist:51
+msgid "Resent-From"
+msgstr "­«·s±H°e-¦Û"
+
+#: config/fields.php.dist:55
+msgid "Resent-To"
+msgstr "­«·s±H°e-¨ì"
+
+#: templates/rule/footer.inc:61
+msgid "Return to Filters List"
+msgstr "¦^¨ì³W«hªí¦C"
+
+#: spam.php:62 spam.php:130 forward.php:34 forward.php:88 vacation.php:34
+#: vacation.php:117 templates/whitelist/whitelist.inc:24
+#: templates/blacklist/blacklist.inc:42
+msgid "Return to Rules List"
+msgstr "¦^¨ì³W«hªí¦C"
+
+#: templates/filters/header.inc:27
+msgid "Rule"
+msgstr "³W«h"
+
+#: filters.php:78
+msgid "Rule Copied"
+msgstr "³W«h¤w½Æ»s"
+
+#: filters.php:57
+msgid "Rule Deleted"
+msgstr "³W«h¤w§R°£"
+
+#: spam.php:106 filters.php:94 forward.php:72 vacation.php:97
+msgid "Rule Disabled"
+msgstr "³W«h¤w°±¥Î"
+
+#: spam.php:97 filters.php:99 forward.php:63 vacation.php:88
+msgid "Rule Enabled"
+msgstr "³W«h¤w±Ò¥Î"
+
+#: templates/rule/header.inc:33
+msgid "Rule Name:"
+msgstr "³W«h¦WºÙ:"
+
+#: lib/Script/sieve.php:2929
+msgid "Rule:"
+msgstr "³W«h:"
+
+#: lib/Driver/ldap.php:86
+#, php-format
+msgid "STARTTLS failed: (%s) %s"
+msgstr "STARTTLS ¥¢±Ñ: (%s) %s"
+
+#: lib/Ingo.php:393
+msgid "S_pam"
+msgstr "¼s§i«H¥ó_p"
+
+#: spam.php:79 forward.php:45 vacation.php:62
+#: templates/whitelist/whitelist.inc:23 templates/blacklist/blacklist.inc:41
+#: templates/rule/footer.inc:60
+msgid "Save"
+msgstr "Àx¦s"
+
+#: templates/filters/settings.inc:31
+msgid "Save Settings"
+msgstr "Àx¦s³]©w"
+
+#: spam.php:100 spam.php:126 forward.php:66 forward.php:84 vacation.php:91
+#: vacation.php:113
+msgid "Save and Disable"
+msgstr "Àx¦s¨Ã¥B°±¥Î"
+
+#: spam.php:91 spam.php:128 forward.php:57 forward.php:86 vacation.php:82
+#: vacation.php:115
+msgid "Save and Enable"
+msgstr "Àx¦s¨Ã¥B±Ò¥Î"
+
+#: templates/script/header.inc:2
+msgid "Script"
+msgstr "¹LÂoµ{¦¡"
+
+#: config/prefs.php.dist:18
+msgid "Script Updating"
+msgstr "¹LÂoµ{¦¡§ó·s"
+
+#: lib/Ingo.php:175
+msgid "Script not updated."
+msgstr "¹LÂoµ{¦¡¥¼³Q§ó·s"
+
+#: lib/Ingo.php:146
+msgid "Script successfully activated."
+msgstr "¹LÂoµ{¦¡¤w§¹¦¨±Ò¥Î."
+
+#: lib/Ingo.php:145
+msgid "Script successfully deactivated."
+msgstr "¹LÂoµ{¦¡¤w°±¥Î."
+
+#: templates/rule/footer.inc:30
+msgid "Seen"
+msgstr "¬Ý¹L"
+
+#: rule.php:218
+msgid "Select a field"
+msgstr "¿ï¾Ü¤@­ÓÄæ¦ì"
+
+#: templates/menu.inc:6 templates/menu.inc:8
+msgid "Select ruleset to display:"
+msgstr "¿ï¾Ü­nÅã¥Üªº³W«h¶°:"
+
+#: rule.php:347 templates/blacklist/blacklist.inc:23 lib/Ingo.php:59
+msgid "Select target folder"
+msgstr "¿ï¾Ü¥Ø¼Ð«H¥ó§X"
+
+#: rule.php:255
+msgid "Self-Defined Header"
+msgstr "¦Û­qªíÀY"
+
+#: config/fields.php.dist:35
+msgid "Sender"
+msgstr "ªíÀY¤¤ªº Sender Äæ¦ì"
+
+#: filters.php:118
+msgid "Settings successfully updated."
+msgstr "³]©w¤w§ó·s§¹¦¨."
+
+#: templates/script/activate.inc:24
+msgid "Show Active Script"
+msgstr "Åã¥Ü¥¿¦b°õ¦æ¤¤¹LÂoµ{¦¡"
+
+#: templates/script/activate.inc:31
+msgid "Show Current Script"
+msgstr "Åã¥Ü½s¿è¤¤ªº¹LÂoµ{¦¡"
+
+#: spam.php:18
+msgid "Simple spam filtering is not supported in the current filtering driver."
+msgstr "²©ö«¬¼s§i¹LÂo¥\¯à¨Ã¤£¤ä´©¥Ø«e©Ò¨Ï¥Îªº¹LÂoÅX°Êµ{¦¡."
+
+#: config/fields.php.dist:95
+msgid "Size"
+msgstr "¤j¤p"
+
+#: config/fields.php.dist:87
+msgid "Source (From,Reply-to,etc)"
+msgstr "¨Ó·½ (±H¥ó¤H From,¦^ÂШì Reply-to,µ¥)"
+
+#: filters.php:198 lib/Script/sieve.php:425 lib/Script/maildrop.php:301
+#: lib/Block/overview.php:105 lib/Block/overview.php:108
+msgid "Spam Filter"
+msgstr "¼s§i¹LÂo"
+
+#: spam.php:147 spam.php:154
+msgid "Spam Filtering"
+msgstr "¼s§i¹LÂo"
+
+#: spam.php:71
+msgid "Spam Level:"
+msgstr "Spam µ¥¯Å:"
+
+#: vacation.php:43
+msgid "Start of vacation:"
+msgstr "°²´Á°_¤é:"
+
+#: templates/rule/footer.inc:50
+msgid "Stop checking if this rule matches?"
+msgstr "«H¥ó¤@¥¹²Å¦X³o±ø³W«h´N°±¤îÄ~ÄòÀˬd¨ä¾lªº³W«h"
+
+#: config/fields.php.dist:31
+msgid "Subject"
+msgstr "¥D¦®"
+
+#: vacation.php:46
+msgid "Subject of vacation message:"
+msgstr "°²´Á¯d¨¥ªº¥D¦®:"
+
+#: lib/Script/sieve.php:2928
+msgid "Subject:"
+msgstr "¥D¦®:"
+
+#: lib/api.php:103
+#, php-format
+msgid "The address \"%s\" has been added to your blacklist."
+msgstr "¹q¤l¶l¥ó¦í§} \"%s\" ¤w¥[¤J¨ì¶Â¦W³æ¤¤."
+
+#: lib/api.php:126
+#, php-format
+msgid "The address \"%s\" has been added to your whitelist."
+msgstr "¹q¤l¶l¥ó¦í§} \"%s\" ¤w¥[¤J¨ì¤Íµ½¦W³æ¤¤."
+
+#: lib/Ingo.php:141
+msgid "The driver said: "
+msgstr "ÅX°Êµ{¦¡¦^À³: %s"
+
+#: lib/Ingo.php:140
+msgid "There was an error activating the script."
+msgstr "±Ò¥Î¹LÂoµ{¦¡®Éµo¥Í¤@­Ó¿ù»~."
+
+#: lib/Ingo.php:139
+msgid "There was an error deactivating the script."
+msgstr "°±¥Î¹LÂoµ{¦¡®Éµo¥Í¤@­Ó¿ù»~."
+
+#: config/fields.php.dist:27
+msgid "To"
+msgstr "¦¬¥ó¤H"
+
+#: templates/filters/filter.html:32
+msgid "To:"
+msgstr "²¾¨ì:"
+
+#: lib/Script.php:126
+#, php-format
+msgid "Unable to load the definition of %s."
+msgstr "µLªk¸ü¤J %s ªº©w¸q."
+
+#: templates/rule/filter.inc:15
+msgid "User header"
+msgstr "¨Ï¥ÎªÌªíÀY"
+
+#: filters.php:186 vacation.php:151 lib/Script/procmail.php:268
+#: lib/Script/sieve.php:399 lib/Script/maildrop.php:276
+#: lib/Block/overview.php:61 lib/Block/overview.php:64
+msgid "Vacation"
+msgstr "°²´Á³qª¾"
+
+#: vacation.php:158
+msgid "Vacation Edit"
+msgstr "½s¿è°²´Á³qª¾"
+
+#: vacation.php:18
+msgid "Vacation is not supported in the current filtering driver."
+msgstr "¥Ø«eªº¹LÂo¾¹ÅX°Êµ{¦¡¨Ã¥¼¤ä´©°²´Á³qª¾ªº¥\¯à."
+
+#: rule.php:353
+msgid "Value"
+msgstr "­È"
+
+#: templates/whitelist/whitelist.inc:16
+msgid "Wh_itelist addresses:"
+msgstr "¤Íµ½¦W³æªº¶l¥ó¦a§}:_i"
+
+#: filters.php:180 templates/whitelist/whitelist.inc:8
+#: lib/Block/overview.php:85 lib/Block/overview.php:88
+msgid "Whitelist"
+msgstr "¤Íµ½¦W³æ"
+
+#: whitelist.php:57
+msgid "Whitelist Edit"
+msgstr "½s¿è¤Íµ½¦W³æ"
+
+#: whitelist.php:20
+msgid "Whitelist is not supported in the current filtering driver."
+msgstr "¥Ø«eªº¹LÂo¾¹ÅX°Êµ{¦¡¨Ã¥¼¤ä´©¤Íµ½¦W³æªº¥\¯à."
+
+#: lib/Script/procmail.php:236 lib/Script/sieve.php:329
+#: lib/Script/maildrop.php:224
+msgid "Whitelisted Addresses"
+msgstr "¤w³Q¦C¬°¤Íµ½¦W³æªº¶l¥ó¦a§}"
+
+#: config/fields.php.dist:79
+msgid "X-Priority"
+msgstr "Àu¥ý¶¶§Ç"
+
+#: config/fields.php.dist:67
+msgid "X-Spam-Level"
+msgstr "X-Spam µ¥¯Å"
+
+#: config/fields.php.dist:71
+msgid "X-Spam-Score"
+msgstr "X-Spam ¤À¼Æ"
+
+#: config/fields.php.dist:75
+msgid "X-Spam-Status"
+msgstr "X-Spam ª¬ºA"
+
+#: filters.php:71 rule.php:172
+#, php-format
+msgid "You are not allowed to create more than %d rules."
+msgstr "§A¨S¦³«Ø¥ß¶W¹L %d ­Ó³W«hªºÅv­­."
+
+#: filters.php:63 rule.php:23
+msgid "You are not allowed to create or edit custom rules."
+msgstr "¤£¤¹³\§A«Ø¥ß©Î½s¿è¦Û­q³W«h."
+
+#: rule.php:96
+#, php-format
+msgid "You cannot create empty conditions. Please fill in a value for \"%s\"."
+msgstr "§AµLªk«Ø¥ßªÅ¥Õ±ø¥ó. ½Ð´À \"%s\" ¿é¤J¤@­Ó³]©w­È."
+
+#: filters.php:52 rule.php:151
+msgid "You do not have permission to delete filter rules."
+msgstr "§A¨S¦³§R°£¹LÂo³W«hªºÅv­­."
+
+#: filters.php:45 filters.php:112 filters.php:123 rule.php:58 rule.php:165
+msgid "You do not have permission to edit filter rules."
+msgstr "§A¨S¦³½s¿è¹LÂo³W«hªºÅv­­."
+
+#: lib/Script/sieve.php:2926
+msgid "You have received a new message"
+msgstr "§A¦³¤@«Ê·s¶l¥ó"
+
+#: lib/Script/imap.php:307 lib/Script/imap.php:330 lib/Script/imap.php:345
+msgid "[No Subject]"
+msgstr "[µL¥D¦®]"
+
+#: lib/Ingo.php:384
+msgid "_Blacklist"
+msgstr "¶Â¦W³æ_B"
+
+#: templates/blacklist/blacklist.inc:18
+msgid "_Delete message completely"
+msgstr "¹ý©³§R°£«H¥ó_D"
+
+#: templates/blacklist/blacklist.inc:32
+msgid "_Enter each address on a new line:"
+msgstr "¦b¨C¤@ªÅ¥Õ¦æ¤¤¿é¤J¤@­Ó¹q¤l¶l¥ó¦a§}:_E"
+
+#: lib/Ingo.php:390
+msgid "_Forward"
+msgstr "¦Û°ÊÂà±H_F"
+
+#: templates/blacklist/blacklist.inc:22
+msgid "_Move message to folder:"
+msgstr "·h²¾«H¥ó¨ì«H¥ó¹h:_M"
+
+#: lib/Ingo.php:399
+msgid "_Permissions"
+msgstr "Åv­­_P"
+
+#: lib/Ingo.php:396
+msgid "_Script"
+msgstr "¹LÂoµ{¦¡_S"
+
+#: lib/Ingo.php:387
+msgid "_Vacation"
+msgstr "°²´Á³qª¾_V"
+
+#: lib/Ingo.php:381
+msgid "_Whitelist"
+msgstr "¤Íµ½¦W³æ_W"
+
+#: lib/Block/overview.php:54
+msgid "active"
+msgstr "±Ò¥Î"
+
+#: templates/rule/filter.inc:4
+msgid "and"
+msgstr "¦Ó¥B"
+
+#: templates/filters/filter.html:19
+msgid "disabled - click to enable"
+msgstr "¤w°±¥Î - ±ý±Ò¥Î½ÐÂI¿ï³o¸Ì"
+
+#: filters.php:218
+msgid "field"
+msgstr "Äæ¦ì"
+
+#: lib/Block/overview.php:52
+msgid "inactive"
+msgstr "°±¥Î"
+
+#: lib/Script/maildrop.php:134
+msgid "maildrop script generated by Ingo"
+msgstr "maildrop ¹LÂoµ{¦¡¤w Ingo ©Ò²£¥Í."
+
+#: filters.php:218
+msgid "match"
+msgstr "¤Ç°t"
+
+#: templates/rule/filter.inc:4
+msgid "or"
+msgstr "©ÎªÌ"
+
+#: lib/Script/procmail.php:130
+msgid "procmail script generated by Ingo"
+msgstr "procmail ¹LÂoµ{¦¡¤w²£¥Í."
diff --git a/ingo/rule.php b/ingo/rule.php
new file mode 100644 (file)
index 0000000..9ef2578
--- /dev/null
@@ -0,0 +1,356 @@
+<?php
+/**
+ * Rules script.
+ *
+ * Copyright 2002-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author Mike Cochrane <mike@graftonhall.co.nz>
+ * @author Michael Slusarz <slusarz@horde.org>
+ */
+
+require_once dirname(__FILE__) . '/lib/base.php';
+
+/* Check rule permissions. */
+if (!Ingo::hasPermission('allow_rules')) {
+    $message = @htmlspecialchars(_("You are not allowed to create or edit custom rules."), ENT_COMPAT, NLS::getCharset());
+    if (!empty($conf['hooks']['permsdenied'])) {
+        $message = Horde::callHook('_perms_hook_denied', array('ingo:allow_rules'), 'horde', $message);
+    }
+    $notification->push($message, 'horde.error', array('content.raw'));
+    header('Location: ' . Horde::applicationUrl('filters.php', true));
+    exit;
+}
+
+/* Load the Ingo_Script:: driver. */
+$ingo_script = Ingo::loadIngoScript();
+
+/* Redirect if no rules are available. */
+$availActions = $ingo_script->availableActions();
+if (empty($availActions)) {
+    $notification->push(_("Individual rules are not supported in the current filtering driver."), 'horde.error');
+    header('Location: ' . Horde::applicationUrl('filters.php', true));
+    exit;
+}
+
+/* This provides the $ingo_fields array. */
+require INGO_BASE . '/config/fields.php';
+
+/* Get the current rules. */
+$filters = &$ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS);
+
+/* Run through action handlers. */
+$actionID = Util::getFormData('actionID');
+$edit_number = Util::getFormData('edit');
+switch ($actionID) {
+case 'create_folder':
+case 'rule_save':
+case 'rule_update':
+case 'rule_delete':
+    if (!Ingo::hasPermission('shares', PERMS_EDIT)) {
+        $notification->push(_("You do not have permission to edit filter rules."), 'horde.error');
+        header('Location: ' . Horde::applicationUrl('filters.php', true));
+        exit;
+    }
+
+    $rule = array(
+        'id' => Util::getFormData('id'),
+        'name' => Util::getFormData('name'),
+        'combine' => Util::getFormData('combine'),
+        'conditions' = array()
+    );
+
+    $field = Util::getFormData('field');
+    $match = Util::getFormData('match');
+    $userheader = Util::getFormData('userheader');
+    $value = Util::getFormData('value');
+    if ($ingo_script->caseSensitive()) {
+        $casesensitive = Util::getFormData('case');
+    }
+
+    $valid = true;
+    foreach ($field as $key => $val) {
+        if (!empty($val)) {
+            $condition = array();
+            if ($val == Ingo::USER_HEADER) {
+                $condition['field'] = (empty($userheader[$key])) ? '' : $userheader[$key];
+                $condition['type'] = Ingo_Storage::TYPE_HEADER;
+            } elseif (!isset($ingo_fields[$val])) {
+                $condition['field'] = $val;
+                $condition['type'] = Ingo_Storage::TYPE_HEADER;
+            } else {
+                $condition['field'] = $val;
+                $condition['type'] = $ingo_fields[$val]['type'];
+            }
+            $condition['match'] = isset($match[$key]) ? $match[$key] : '';
+
+            if ($actionID == 'rule_save'
+                && empty($value[$key])
+                && $condition['match'] != 'exists'
+                && $condition['match'] != 'not exist') {
+                $notification->push(sprintf(_("You cannot create empty conditions. Please fill in a value for \"%s\"."), $condition['field']), 'horde.error');
+                $valid = false;
+            }
+            $condition['value'] = isset($value[$key]) ? $value[$key] : '';
+
+            if (isset($casesensitive)) {
+                $condition['case'] = isset($casesensitive[$key]) ? $casesensitive[$key] : '';
+            }
+            $rule['conditions'][] = $condition;
+        }
+    }
+
+    if ($actionID == 'create_folder') {
+        $rule['action-value'] = Ingo::createFolder(Util::getFormData('new_folder_name'));
+    } else {
+        $rule['action-value'] = Util::getFormData('actionvalue');
+    }
+
+    $rule['action'] = Util::getFormData('action');
+    $rule['stop'] = Util::getFormData('stop');
+
+    $rule['flags'] = 0;
+    $flags = Util::getFormData('flags', array());
+    if (!empty($flags)) {
+        foreach ($flags as $val) {
+            $rule['flags'] |= $val;
+        }
+    }
+
+    /* Update the timestamp for the rules. */
+    $_SESSION['ingo']['change'] = time();
+
+    /* Save the rule. */
+    if ($actionID == 'rule_save' && $valid) {
+        if (is_null($edit_number)) {
+            if (Ingo::hasPermission('max_rules') !== true &&
+                Ingo::hasPermission('max_rules') <= count($filters->getFilterList())) {
+                header('Location: ' . Horde::applicationUrl('filters.php', true));
+                exit;
+            }
+            $filters->addRule($rule);
+        } else {
+            $filters->updateRule($rule, $edit_number);
+        }
+        $ingo_storage->store($filters);
+        $notification->push(_("Changes saved."), 'horde.success');
+
+        if ($prefs->getValue('auto_update')) {
+            Ingo::updateScript();
+        }
+
+        header('Location: ' . Horde::applicationUrl('filters.php'));
+        exit;
+    } elseif ($actionID == 'rule_delete') {
+        if (!Ingo::hasPermission('shares', PERMS_DELETE)) {
+            $notification->push(_("You do not have permission to delete filter rules."), 'horde.error');
+            header('Location: ' . Horde::applicationUrl('filters.php', true));
+            exit;
+        }
+        $cond_num = Util::getFormData('conditionnumber');
+        if (!is_null($cond_num)) {
+            unset($rule['conditions'][$cond_num]);
+            $rule['conditions'] = array_values($rule['conditions']);
+        }
+    }
+    break;
+
+default:
+    if (!Ingo::hasPermission('shares', PERMS_EDIT)) {
+        $notification->push(_("You do not have permission to edit filter rules."), 'horde.error');
+        header('Location: ' . Horde::applicationUrl('filters.php', true));
+        exit;
+    }
+    if (is_null($edit_number)) {
+        if (Ingo::hasPermission('max_rules') !== true &&
+            Ingo::hasPermission('max_rules') <= count($filters->getFilterList())) {
+            $message = @htmlspecialchars(sprintf(_("You are not allowed to create more than %d rules."), Ingo::hasPermission('max_rules')), ENT_COMPAT, NLS::getCharset());
+            if (!empty($conf['hooks']['permsdenied'])) {
+                $message = Horde::callHook('_perms_hook_denied', array('ingo:max_rules'), 'horde', $message);
+            }
+            $notification->push($message, 'horde.error', array('content.raw'));
+            header('Location: ' . Horde::applicationUrl('filters.php', true));
+            exit;
+        }
+        $rule = $filters->getDefaultRule();
+    } else {
+        $rule = $filters->getRule($edit_number);
+    }
+    break;
+}
+
+if (!$rule) {
+    $notification->push(_("Filter not found."), 'horde.error');
+    header('Location: ' . Horde::applicationUrl('filters.php', true));
+    exit;
+}
+
+if ($registry->hasMethod('mail/createFolder')) {
+    Horde::addScriptFile('new_folder.js');
+}
+
+$title = $rule['name'];
+require INGO_TEMPLATES . '/common-header.inc';
+require INGO_TEMPLATES . '/menu.inc';
+require INGO_TEMPLATES . '/rule/header.inc';
+
+/* Add new, blank condition. */
+$rule['conditions'][] = array();
+
+/* Available conditions. */
+$avail_types = $ingo_script->availableTypes();
+$lastcond = count($rule['conditions']) - 1;
+
+/* Display the conditions. */
+foreach ($rule['conditions'] as $cond_num => $condition) {
+    $lastfield = ($lastcond == $cond_num);
+
+    /* Create the field listing. */
+    $field_select = '';
+    $option_selected = !isset($condition['field']);
+
+    if ($lastfield) {
+        $field_select .= '<option value="">' . _("Select a field") . "</option>\n" .
+            "<option disabled=\"disabled\" value=\"\">- - - - - - - - -</option>\n";
+    }
+
+    foreach ($ingo_fields as $key => $val) {
+        if (in_array($val['type'], $avail_types)) {
+            $field_select .= '<option value="' . htmlspecialchars($key) . '"';
+            if (isset($condition['field'])) {
+                if ($key == $condition['field']) {
+                    $field_select .= ' selected="selected"';
+                    $option_selected = true;
+                }
+            }
+            $field_select .= '>' . htmlspecialchars($val['label']) . "</option>\n";
+        }
+    }
+
+    /* Add any special types. */
+    $special = $ingo_script->specialTypes();
+    if (count($special)) {
+        $field_select .= "<option disabled=\"disabled\" value=\"\">- - - - - - - - -</option>\n";
+        foreach ($special as $type) {
+            $selected = '';
+            if (isset($condition['field'])) {
+                if ($type == $condition['field']) {
+                    $selected = ' selected="selected"';
+                    $option_selected = true;
+                }
+            }
+            $field_select .= '<option value="' . htmlspecialchars($type) . '"' . $selected . '>' . htmlspecialchars($type) . '</option>';
+        }
+    }
+
+    /* Add user defined header option. */
+    $header_entry = false;
+    if ($conf['rules']['userheader']) {
+        $field_select .= "<option disabled=\"disabled\" value=\"\">- - - - - - - - -</option>\n" .
+            '<option value="' . Ingo::USER_HEADER . '"' . ((!$option_selected) ? ' selected="selected"' : '') . '>' . _("Self-Defined Header") . (($lastfield) ? '' : ':') . "</option>\n";
+        if (!$option_selected) {
+            $header_entry = true;
+            $userheader = Util::getFormData('userheader');
+            if (empty($userheader)) {
+                $userheader = isset($condition['field']) ? $condition['field'] : '';
+            } else {
+                $userheader = $userheader[$cond_num];
+            }
+        }
+    }
+
+    if ($lastfield) {
+        require INGO_TEMPLATES . '/rule/filter.inc';
+        continue;
+    }
+
+    /* Create the match listing. */
+    if (!isset($condition['field']) ||
+        ($condition['field'] == Ingo::USER_HEADER) ||
+        !isset($ingo_fields[$condition['field']]['tests'])) {
+        $avail_tests = $ingo_script->availableTests();
+    } else {
+        $avail_tests = $ingo_fields[$condition['field']]['tests'];
+    }
+
+    $match_select = '';
+    $selected_test = null;
+    if (!empty($condition['match'])) {
+        $selected_test = $condition['match'];
+    }
+
+    if (empty($avail_tests)) {
+        $match_select = "<option disabled=\"disabled\" value=\"\">- - - - - - - - -</option>\n";
+    } else {
+        $first_test = null;
+        foreach ($avail_tests as $test) {
+            if (is_null($selected_test)) {
+                $selected_test = $test;
+            }
+
+            $testOb = $ingo_storage->getTestInfo($test);
+            $match_select .= '<option value="' . htmlspecialchars($test) . '"';
+            if (!empty($condition['match'])) {
+                if ($test == $condition['match']) {
+                    $match_select .= ' selected="selected"';
+                }
+            }
+            $match_select .= '>' . htmlspecialchars($testOb->label) . "</option>\n";
+        }
+    }
+
+    /* Create the matching input elements. */
+    $testOb = $ingo_storage->getTestInfo(!empty($condition['match']) ? $condition['match'] : 'contains');
+    $value = isset($condition['value']) ? htmlspecialchars($condition['value']): '';
+
+    $match_value = '';
+    if (!in_array($selected_test, array('exists', 'not exist'))) {
+        $match_value = '<label for="value_' . (int)$cond_num . '" class="hidden">Value</label>' .
+            '<input id="value_' . (int)$cond_num . '" name="value[' . (int)$cond_num . ']" size="40" value="' . $value . '" />';
+    }
+
+    switch ($testOb->type) {
+    case 'text':
+        if ($ingo_script->caseSensitive()) {
+            $match_value .= '<input type="checkbox" id="case_' . (int)$cond_num . '" name="case[' . (int)$cond_num . ']" value="1" ' .
+                ((isset($condition['case']) && $condition['case']) ? 'checked="checked" ' : '') .
+                '/> ' . Horde::label('case_' . (int)$cond_num, _("Case Sensitive"));
+        }
+        break;
+    }
+    require INGO_TEMPLATES . '/rule/filter.inc';
+}
+
+/* Get the action select output. */
+$actionselect = '';
+foreach ($availActions as $val) {
+    $actionselect .= '<option value="' . htmlspecialchars($val) . '"';
+    $action = $ingo_storage->getActionInfo($val);
+    if ($val == $rule['action']) {
+        $actionselect .= ' selected="selected"';
+        $current_action = $action;
+        $action->label .= ':';
+    }
+    $actionselect .= '>' . htmlspecialchars($action->label) . "</option>\n";
+}
+
+/* Get the action value output. */
+$actionvaluelabel = '';
+$actionvalue = '';
+switch ($current_action->type) {
+case 'folder':
+    $actionvaluelabel = '<label for="actionvalue" class="hidden">' . _("Select target folder") . '</label>';
+    $actionvalue = Ingo::flistSelect($rule['action-value'], 'rule');
+    break;
+
+case 'text':
+case 'int':
+    $actionvaluelabel = '<label for="actionvalue" class="hidden">' . _("Value") . '</label>';
+    $actionvalue = '<input id="actionvalue" name="actionvalue" size="40" value="' . htmlspecialchars($rule['action-value']) . '" />';
+    break;
+}
+
+require INGO_TEMPLATES . '/rule/footer.inc';
+require $registry->get('templates', 'horde') . '/common-footer.inc';
diff --git a/ingo/script.php b/ingo/script.php
new file mode 100644 (file)
index 0000000..e873aef
--- /dev/null
@@ -0,0 +1,70 @@
+<?php
+/**
+ * Copyright 2002-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author Mike Cochrane <mike@graftonhall.co.nz>
+ */
+
+require_once dirname(__FILE__) . '/lib/base.php';
+
+/* Redirect if script updating is not available. */
+if (!$_SESSION['ingo']['script_generate']) {
+    header('Location: ' . Horde::applicationUrl('filters.php', true));
+    exit;
+}
+
+$script = '';
+
+/* Get the Ingo_Script:: backend. */
+$scriptor = Ingo::loadIngoScript();
+if ($scriptor) {
+    /* Generate the script. */
+    $script = $scriptor->generate();
+}
+
+/* Activate/deactivate script if requested.
+   activateScript() does its own $notification->push() on error. */
+$actionID = Util::getFormData('actionID');
+switch ($actionID) {
+case 'action_activate':
+    if (!empty($script)) {
+        Ingo::activateScript($script);
+    }
+    break;
+
+case 'action_deactivate':
+    Ingo::activateScript('', true);
+    break;
+
+case 'show_active':
+    $script = Ingo::getScript();
+    if (is_a($script, 'PEAR_Error')) {
+        $notification->push($script, 'horde.error');
+        $script = '';
+    }
+    break;
+}
+
+$title = _("Filter Script Display");
+require INGO_TEMPLATES . '/common-header.inc';
+require INGO_TEMPLATES . '/menu.inc';
+require INGO_TEMPLATES . '/script/header.inc';
+if (!empty($script)) {
+    require INGO_TEMPLATES . '/script/activate.inc';
+}
+require INGO_TEMPLATES . '/script/script.inc';
+if (!empty($script)) {
+    $lines = preg_split('(\r\n|\n|\r)', $script);
+    $i = 0;
+    foreach ($lines as $line) {
+        printf("%3d: %s\n", ++$i, htmlspecialchars($line));
+    }
+} else {
+    echo '[' . _("No script generated.") . ']';
+}
+
+require INGO_TEMPLATES . '/script/footer.inc';
+require $registry->get('templates', 'horde') . '/common-footer.inc';
diff --git a/ingo/scripts/.htaccess b/ingo/scripts/.htaccess
new file mode 100644 (file)
index 0000000..3a42882
--- /dev/null
@@ -0,0 +1 @@
+Deny from all
diff --git a/ingo/scripts/ingo-postfix-policyd b/ingo/scripts/ingo-postfix-policyd
new file mode 100755 (executable)
index 0000000..278fe02
--- /dev/null
@@ -0,0 +1,173 @@
+#!/usr/bin/env php
+<?php
+/**
+ * Usage: ingo-postfix-policyd [-v]
+ *
+ * Delegated Postfix SMTPD policy server that enforce's Ingo's
+ * blacklist and whitelist rules.  Logging is done through the
+ * standard Horde logger.
+ *
+ * How it works: each time a Postfix SMTP server process is started it
+ * connects to the policy service socket, and Postfix runs one
+ * instance of this PHP script.  By default, a Postfix SMTP server
+ * process terminates after 100 seconds of idle time, or after serving
+ * 100 clients. Thus, the cost of starting this script is smoothed out
+ * over time.
+ *
+ * To run this from /etc/postfix/master.cf (if necessary substituting
+ * a user that has permissions for your Horde configuration and
+ * logfiles for www-data):
+ *
+ *    policy  unix  -       n       n       -       -       spawn
+ *      user=www-data argv=/path/to/horde/ingo/scripts/ingo-postfix-policyd
+ *
+ * To use this from Postfix SMTPD, use in /etc/postfix/main.cf:
+ *
+ *    smtpd_recipient_restrictions =
+ *  ...
+ *  reject_unauth_destination
+ *  check_policy_service unix:private/policy
+ *  ...
+ *
+ * NOTE: specify check_policy_service AFTER reject_unauth_destination
+ * or else your system can become an open relay.
+ *
+ * To test this script by hand, execute:
+ *
+ *    % ingo-postfix-policyd
+ *
+ * Each query is a bunch of attributes. See
+ * http://www.postfix.org/SMTPD_POLICY_README.html and the example
+ * greylisting policy daemon for all of the possibilities. This script
+ * uses only:
+ *
+ *    sender=foo@bar.tld
+ *    recipient=bar@foo.tld
+ *
+ * And the query is terminated with an:
+ *    [empty line]
+ *
+ * The policy server script will answer in the same style, with an
+ * attribute list followed by a empty line:
+ *
+ *    action=DUNNO
+ *    [empty line]
+ *
+ * The possible actions are documented at
+ * http://www.postfix.org/access.5.html. We return "DUNNO" when the
+ * sender/recipient combination doesn't match any blacklist or
+ * whitelist rules, OK if the sender is whitelisted, and REJECT if the
+ * sender is blacklisted.
+ */
+
+@define('AUTH_HANDLER', true);
+
+// Do CLI checks and environment setup first.
+@define('HORDE_BASE', dirname(dirname(dirname(__FILE__))));
+require_once HORDE_BASE . '/lib/core.php';
+
+// Make sure no one runs this from the web.
+if (!Horde_CLI::runningFromCLI()) {
+    exit(1);
+}
+
+// Load the CLI environment - make sure there's no time limit, init some
+// variables, etc.
+Horde_CLI::init();
+
+// Include needed libraries.
+require_once dirname(dirname(__FILE__)) . '/lib/base.php';
+
+// Initialize authentication manager.
+$auth = &Auth::singleton($conf['auth']['driver']);
+
+// Initialize storage backend.
+$rules_storage = Ingo_Storage::factory();
+
+// Make sure output is unbuffered.
+ob_implicit_flush();
+
+// Main loop.
+$query = array();
+while (!feof(STDIN)) {
+    $line = fgets(STDIN);
+    if (strpos($line, '=') !== false) {
+        list($key, $value) = explode('=', trim($line), 2);
+        $query[$key] = $value;
+    } elseif ($line == "\n") {
+        if (empty($query['request']) || $query['request'] != 'smtpd_access_policy') {
+            Horde::logMessage('Unrecognized request: ' . substr(var_export($query, true), 0, 200), __FILE__, __LINE__, PEAR_LOG_ERR);
+            exit(1);
+        }
+
+        Horde::logMessage(var_export($query, true), __FILE__, __LINE__, PEAR_LOG_DEBUG);
+        $action = smtpd_access_policy($query);
+        Horde::logMessage("Action: $action", __FILE__, __LINE__, PEAR_LOG_DEBUG);
+        echo "action=$action\n\n";
+        @ob_flush();
+        $query = array();
+    } else {
+        Horde::logMessage('Ignoring garbage: ' . substr($line, 0, 100), __FILE__, __LINE__, PEAR_LOG_INFO);
+    }
+}
+
+exit(0);
+
+/**
+ * Do policy checks
+ *
+ * @param array $query Query parameter hash
+ *
+ * @return string The access policy response.
+ */
+function smtpd_access_policy($query)
+{
+    static $whitelists = array();
+    static $blacklists = array();
+
+    if (empty($query['sender']) || empty($query['recipient'])) {
+        return null;
+    }
+
+    // Try to determine the Horde username corresponding to the email recipient.
+    $user = $query['recipient'];
+    $pos = strpos($user, '@');
+    if ($pos !== false) {
+        $user = substr($user, 0, $pos);
+    }
+    $user = Horde::callHook('_ingo_hook_smtpd_access_policy_username', $query, 'ingo', $user);
+
+    // Get $user's rules if we don't have them already.
+    if (!isset($whitelists[$user])) {
+        // Default empty rules.
+        $whitelists[$user] = array();
+        $blacklists[$user] = array();
+
+        // Retrieve the data.
+        $GLOBALS['auth']->setAuth($user, array());
+        $_SESSION['ingo']['current_share'] = ':' . $user;
+        $wl = $GLOBALS['rules_storage']->retrieve(Ingo_Storage::ACTION_WHITELIST, false);
+        $bl = $GLOBALS['rules_storage']->retrieve(Ingo_Storage::ACTION_BLACKLIST, false);
+
+        // Fill in data from saved rules.
+        if (!is_a($wl, 'PEAR_Error')) {
+            $whitelists[$user] = $wl->getWhitelist();
+        }
+        if (!is_a($bl, 'PEAR_Error') && !$bl->getBlacklistFolder()) {
+            // We will only reject email at delivery time if the user
+            // wants blacklisted mail deleted completely, not filed
+            // into a separate folder.
+            $blacklists[$user] = $bl->getBlacklist();
+        }
+    }
+
+    // Check whitelist rules first so that mistaken overlap doesn't
+    // result in lost mail.
+    if (in_array($query['sender'], $whitelists[$user])) {
+        return 'OK';
+    } elseif (in_array($query['sender'], $blacklists[$user])) {
+        return 'REJECT';
+    } else {
+        return 'DUNNO';
+    }
+}
diff --git a/ingo/scripts/sql/ingo.oci8.sql b/ingo/scripts/sql/ingo.oci8.sql
new file mode 100644 (file)
index 0000000..586fb11
--- /dev/null
@@ -0,0 +1,99 @@
+CREATE TABLE ingo_rules (
+    rule_id INT NOT NULL,
+    rule_owner VARCHAR2(255) NOT NULL,
+    rule_name VARCHAR2(255) NOT NULL,
+    rule_action INT NOT NULL,
+    rule_value VARCHAR2(255),
+    rule_flags INT,
+    rule_conditions CLOB,
+    rule_combine INT,
+    rule_stop INT,
+    rule_active INT DEFAULT 1 NOT NULL,
+    rule_order INT DEFAULT 0 NOT NULL,
+--
+    PRIMARY KEY (rule_id)
+);
+
+CREATE INDEX rule_owner_idx ON ingo_rules (rule_owner);
+
+
+CREATE TABLE ingo_lists (
+    list_owner VARCHAR2(255) NOT NULL,
+    list_blacklist INT DEFAULT 0,
+    list_address VARCHAR2(255) NOT NULL
+);
+
+CREATE INDEX list_idx ON ingo_lists (list_owner, list_blacklist);
+
+
+CREATE TABLE ingo_forwards (
+    forward_owner VARCHAR2(255) NOT NULL,
+    forward_addresses CLOB,
+    forward_keep INT DEFAULT 0 NOT NULL,
+--
+    PRIMARY KEY (forward_owner)
+);
+
+
+CREATE TABLE ingo_vacations (
+    vacation_owner VARCHAR2(255) NOT NULL,
+    vacation_addresses CLOB,
+    vacation_subject VARCHAR2(255),
+    vacation_reason CLOB,
+    vacation_days INT DEFAULT 7,
+    vacation_start INT,
+    vacation_end INT,
+    vacation_excludes CLOB,
+    vacation_ignorelists INT DEFAULT 1,
+--
+    PRIMARY KEY (vacation_owner)
+);
+
+
+CREATE TABLE ingo_spam (
+    spam_owner VARCHAR2(255) NOT NULL,
+    spam_level INT DEFAULT 5,
+    spam_folder VARCHAR2(255),
+--
+    PRIMARY KEY (spam_owner)
+);
+
+
+CREATE TABLE ingo_shares (
+    share_id INT NOT NULL,
+    share_name VARCHAR2(255) NOT NULL,
+    share_owner VARCHAR2(255) NOT NULL,
+    share_flags SMALLINT NOT NULL DEFAULT 0,
+    perm_creator SMALLINT NOT NULL DEFAULT 0,
+    perm_default SMALLINT NOT NULL DEFAULT 0,
+    perm_guest SMALLINT NOT NULL DEFAULT 0,
+    attribute_name VARCHAR2(255) NOT NULL,
+    attribute_desc VARCHAR2(255),
+    PRIMARY KEY (share_id)
+);
+
+CREATE INDEX ingo_shares_share_name_idx ON ingo_shares (share_name);
+CREATE INDEX ingo_shares_share_owner_idx ON ingo_shares (share_owner);
+CREATE INDEX ingo_shares_perm_creator_idx ON ingo_shares (perm_creator);
+CREATE INDEX ingo_shares_perm_default_idx ON ingo_shares (perm_default);
+CREATE INDEX ingo_shares_perm_guest_idx ON ingo_shares (perm_guest);
+
+CREATE TABLE ingo_shares_groups (
+    share_id INT NOT NULL,
+    group_uid VARCHAR(255) NOT NULL,
+    perm SMALLINT NOT NULL
+);
+
+CREATE INDEX ingo_shares_groups_share_id_idx ON ingo_shares_groups (share_id);
+CREATE INDEX ingo_shares_groups_group_uid_idx ON ingo_shares_groups (group_uid);
+CREATE INDEX ingo_shares_groups_perm_idx ON ingo_shares_groups (perm);
+
+CREATE TABLE ingo_shares_users (
+    share_id INT NOT NULL,
+    user_uid VARCHAR2(255) NOT NULL,
+    perm SMALLINT NOT NULL
+);
+
+CREATE INDEX ingo_shares_users_share_id_idx ON ingo_shares_users (share_id);
+CREATE INDEX ingo_shares_users_user_uid_idx ON ingo_shares_users (user_uid);
+CREATE INDEX ingo_shares_users_perm_idx ON ingo_shares_users (perm);
diff --git a/ingo/scripts/sql/ingo.sql b/ingo/scripts/sql/ingo.sql
new file mode 100644 (file)
index 0000000..e0d69f2
--- /dev/null
@@ -0,0 +1,99 @@
+CREATE TABLE ingo_rules (
+    rule_id INT NOT NULL,
+    rule_owner VARCHAR(255) NOT NULL,
+    rule_name VARCHAR(255) NOT NULL,
+    rule_action INT NOT NULL,
+    rule_value VARCHAR(255),
+    rule_flags INT,
+    rule_conditions TEXT,
+    rule_combine INT,
+    rule_stop INT,
+    rule_active INT DEFAULT 1 NOT NULL,
+    rule_order INT DEFAULT 0 NOT NULL,
+--
+    PRIMARY KEY (rule_id)
+);
+
+CREATE INDEX rule_owner_idx ON ingo_rules (rule_owner);
+
+
+CREATE TABLE ingo_lists (
+    list_owner VARCHAR(255) NOT NULL,
+    list_blacklist INT DEFAULT 0,
+    list_address VARCHAR(255) NOT NULL
+);
+
+CREATE INDEX list_idx ON ingo_lists (list_owner, list_blacklist);
+
+
+CREATE TABLE ingo_forwards (
+    forward_owner VARCHAR(255) NOT NULL,
+    forward_addresses TEXT,
+    forward_keep INT DEFAULT 0 NOT NULL,
+--
+    PRIMARY KEY (forward_owner)
+);
+
+
+CREATE TABLE ingo_vacations (
+    vacation_owner VARCHAR(255) NOT NULL,
+    vacation_addresses TEXT,
+    vacation_subject VARCHAR(255),
+    vacation_reason TEXT,
+    vacation_days INT DEFAULT 7,
+    vacation_start INT,
+    vacation_end INT,
+    vacation_excludes TEXT,
+    vacation_ignorelists INT DEFAULT 1,
+--
+    PRIMARY KEY (vacation_owner)
+);
+
+
+CREATE TABLE ingo_spam (
+    spam_owner VARCHAR(255) NOT NULL,
+    spam_level INT DEFAULT 5,
+    spam_folder VARCHAR(255),
+--
+    PRIMARY KEY (spam_owner)
+);
+
+
+CREATE TABLE ingo_shares (
+    share_id INT NOT NULL,
+    share_name VARCHAR(255) NOT NULL,
+    share_owner VARCHAR(255) NOT NULL,
+    share_flags SMALLINT NOT NULL DEFAULT 0,
+    perm_creator SMALLINT NOT NULL DEFAULT 0,
+    perm_default SMALLINT NOT NULL DEFAULT 0,
+    perm_guest SMALLINT NOT NULL DEFAULT 0,
+    attribute_name VARCHAR(255) NOT NULL,
+    attribute_desc VARCHAR(255),
+    PRIMARY KEY (share_id)
+);
+
+CREATE INDEX ingo_shares_share_name_idx ON ingo_shares (share_name);
+CREATE INDEX ingo_shares_share_owner_idx ON ingo_shares (share_owner);
+CREATE INDEX ingo_shares_perm_creator_idx ON ingo_shares (perm_creator);
+CREATE INDEX ingo_shares_perm_default_idx ON ingo_shares (perm_default);
+CREATE INDEX ingo_shares_perm_guest_idx ON ingo_shares (perm_guest);
+
+CREATE TABLE ingo_shares_groups (
+    share_id INT NOT NULL,
+    group_uid VARCHAR(255) NOT NULL,
+    perm SMALLINT NOT NULL
+);
+
+CREATE INDEX ingo_shares_groups_share_id_idx ON ingo_shares_groups (share_id);
+CREATE INDEX ingo_shares_groups_group_uid_idx ON ingo_shares_groups (group_uid);
+CREATE INDEX ingo_shares_groups_perm_idx ON ingo_shares_groups (perm);
+
+CREATE TABLE ingo_shares_users (
+    share_id INT NOT NULL,
+    user_uid VARCHAR(255) NOT NULL,
+    perm SMALLINT NOT NULL
+);
+
+CREATE INDEX ingo_shares_users_share_id_idx ON ingo_shares_users (share_id);
+CREATE INDEX ingo_shares_users_user_uid_idx ON ingo_shares_users (user_uid);
+CREATE INDEX ingo_shares_users_perm_idx ON ingo_shares_users (perm);
diff --git a/ingo/scripts/sql/ingo.xml b/ingo/scripts/sql/ingo.xml
new file mode 100644 (file)
index 0000000..08871ee
--- /dev/null
@@ -0,0 +1,556 @@
+<?xml version="1.0" encoding="ISO-8859-1" ?>
+<database>
+
+ <name><variable>name</variable></name>
+ <create>false</create>
+ <overwrite>false</overwrite>
+
+ <table>
+
+  <name>ingo_forwards</name>
+
+  <declaration>
+
+   <field>
+    <name>forward_owner</name>
+    <type>text</type>
+    <notnull>true</notnull>
+    <length>255</length>
+   </field>
+
+   <field>
+    <name>forward_addresses</name>
+    <type>clob</type>
+    <notnull>false</notnull>
+   </field>
+
+   <field>
+    <name>forward_keep</name>
+    <type>integer</type>
+    <default>0</default>
+    <notnull>true</notnull>
+    <length>1</length>
+   </field>
+
+   <index>
+    <name>ingo_forwards_primary</name>
+    <primary>true</primary>
+    <field>
+     <name>forward_owner</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+  </declaration>
+
+ </table>
+
+ <table>
+
+  <name>ingo_lists</name>
+
+  <declaration>
+
+   <field>
+    <name>list_owner</name>
+    <type>text</type>
+    <notnull>true</notnull>
+    <length>255</length>
+   </field>
+
+   <field>
+    <name>list_blacklist</name>
+    <type>integer</type>
+    <default>0</default>
+    <notnull>true</notnull>
+    <length>4</length>
+   </field>
+
+   <field>
+    <name>list_address</name>
+    <type>text</type>
+    <notnull>true</notnull>
+    <length>255</length>
+   </field>
+
+   <index>
+    <name>ingo_lists_idx</name>
+    <field>
+     <name>list_owner</name>
+     <sorting>ascending</sorting>
+    </field>
+    <field>
+     <name>list_blacklist</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+  </declaration>
+
+ </table>
+
+ <table>
+
+  <name>ingo_rules</name>
+
+  <declaration>
+
+   <field>
+    <name>rule_id</name>
+    <type>integer</type>
+    <notnull>true</notnull>
+    <length>4</length>
+   </field>
+
+   <field>
+    <name>rule_owner</name>
+    <type>text</type>
+    <notnull>true</notnull>
+    <length>255</length>
+   </field>
+
+   <field>
+    <name>rule_name</name>
+    <type>text</type>
+    <notnull>true</notnull>
+    <length>255</length>
+   </field>
+
+   <field>
+    <name>rule_action</name>
+    <type>integer</type>
+    <notnull>true</notnull>
+    <length>4</length>
+   </field>
+
+   <field>
+    <name>rule_value</name>
+    <type>text</type>
+    <default></default>
+    <notnull>false</notnull>
+    <length>255</length>
+   </field>
+
+   <field>
+    <name>rule_flags</name>
+    <type>integer</type>
+    <notnull>false</notnull>
+    <length>4</length>
+   </field>
+
+   <field>
+    <name>rule_conditions</name>
+    <type>clob</type>
+    <notnull>false</notnull>
+   </field>
+
+   <field>
+    <name>rule_combine</name>
+    <type>integer</type>
+    <notnull>false</notnull>
+    <length>4</length>
+   </field>
+
+   <field>
+    <name>rule_stop</name>
+    <type>integer</type>
+    <notnull>false</notnull>
+    <length>4</length>
+   </field>
+
+   <field>
+    <name>rule_active</name>
+    <type>integer</type>
+    <default>1</default>
+    <notnull>true</notnull>
+    <length>4</length>
+   </field>
+
+   <field>
+    <name>rule_order</name>
+    <type>integer</type>
+    <default>0</default>
+    <notnull>true</notnull>
+    <length>4</length>
+   </field>
+
+   <index>
+    <name>ingo_rules_primary</name>
+    <primary>true</primary>
+    <field>
+     <name>rule_id</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+   <index>
+    <name>ingo_rules_rule_owner</name>
+    <field>
+     <name>rule_owner</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+  </declaration>
+
+ </table>
+
+ <table>
+
+  <name>ingo_shares</name>
+
+  <declaration>
+
+   <field>
+    <name>share_id</name>
+    <type>integer</type>
+    <notnull>true</notnull>
+    <length>4</length>
+   </field>
+
+   <field>
+    <name>share_name</name>
+    <type>text</type>
+    <notnull>true</notnull>
+    <length>255</length>
+   </field>
+
+   <field>
+    <name>share_owner</name>
+    <type>text</type>
+    <notnull>false</notnull>
+    <length>255</length>
+   </field>
+
+   <field>
+    <name>share_flags</name>
+    <type>integer</type>
+    <default>0</default>
+    <notnull>true</notnull>
+    <length>2</length>
+   </field>
+
+   <field>
+    <name>perm_creator</name>
+    <type>integer</type>
+    <default>0</default>
+    <notnull>true</notnull>
+    <length>2</length>
+   </field>
+
+   <field>
+    <name>perm_default</name>
+    <type>integer</type>
+    <default>0</default>
+    <notnull>true</notnull>
+    <length>2</length>
+   </field>
+
+   <field>
+    <name>perm_guest</name>
+    <type>integer</type>
+    <default>0</default>
+    <notnull>true</notnull>
+    <length>2</length>
+   </field>
+
+   <field>
+    <name>attribute_name</name>
+    <type>text</type>
+    <notnull>true</notnull>
+    <length>255</length>
+   </field>
+
+   <field>
+    <name>attribute_desc</name>
+    <type>text</type>
+    <notnull>false</notnull>
+    <length>255</length>
+   </field>
+
+   <index>
+    <name>ingo_shares_primary</name>
+    <primary>true</primary>
+    <field>
+     <name>share_id</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+   <index>
+    <name>ingo_shares_share_name</name>
+    <field>
+     <name>share_name</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+   <index>
+    <name>ingo_shares_share_owner</name>
+    <field>
+     <name>share_owner</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+   <index>
+    <name>ingo_shares_perm_creator</name>
+    <field>
+     <name>perm_creator</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+   <index>
+    <name>ingo_shares_perm_default</name>
+    <field>
+     <name>perm_default</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+   <index>
+    <name>ingo_shares_perm_guest</name>
+    <field>
+     <name>perm_guest</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+  </declaration>
+
+ </table>
+
+ <table>
+
+  <name>ingo_shares_groups</name>
+
+  <declaration>
+
+   <field>
+    <name>share_id</name>
+    <type>integer</type>
+    <notnull>true</notnull>
+    <length>4</length>
+   </field>
+
+   <field>
+    <name>group_uid</name>
+    <type>text</type>
+    <notnull>true</notnull>
+    <length>255</length>
+   </field>
+
+   <field>
+    <name>perm</name>
+    <type>integer</type>
+    <notnull>true</notnull>
+    <length>2</length>
+   </field>
+
+   <index>
+    <name>ingo_shares_groups_share_id</name>
+    <field>
+     <name>share_id</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+   <index>
+    <name>ingo_shares_groups_group_uid</name>
+    <field>
+     <name>group_uid</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+   <index>
+    <name>ingo_shares_groups_perm</name>
+    <field>
+     <name>perm</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+  </declaration>
+
+ </table>
+
+ <table>
+
+  <name>ingo_shares_users</name>
+
+  <declaration>
+
+   <field>
+    <name>share_id</name>
+    <type>integer</type>
+    <notnull>true</notnull>
+    <length>4</length>
+   </field>
+
+   <field>
+    <name>user_uid</name>
+    <type>text</type>
+    <notnull>false</notnull>
+    <length>255</length>
+   </field>
+
+   <field>
+    <name>perm</name>
+    <type>integer</type>
+    <notnull>true</notnull>
+    <length>2</length>
+   </field>
+
+   <index>
+    <name>ingo_shares_users_share_id</name>
+    <field>
+     <name>share_id</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+   <index>
+    <name>ingo_shares_users_user_uid</name>
+    <field>
+     <name>user_uid</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+   <index>
+    <name>ingo_shares_users_perm</name>
+    <field>
+     <name>perm</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+  </declaration>
+
+ </table>
+
+ <table>
+
+  <name>ingo_spam</name>
+
+  <declaration>
+
+   <field>
+    <name>spam_owner</name>
+    <type>text</type>
+    <notnull>true</notnull>
+    <length>255</length>
+   </field>
+
+   <field>
+    <name>spam_level</name>
+    <type>integer</type>
+    <default>5</default>
+    <notnull>false</notnull>
+    <length>4</length>
+   </field>
+
+   <field>
+    <name>spam_folder</name>
+    <type>text</type>
+    <notnull>false</notnull>
+    <length>255</length>
+   </field>
+
+   <index>
+    <name>ingo_spam_primary</name>
+    <primary>true</primary>
+    <field>
+     <name>spam_owner</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+  </declaration>
+
+ </table>
+
+ <table>
+
+  <name>ingo_vacations</name>
+
+  <declaration>
+
+   <field>
+    <name>vacation_owner</name>
+    <type>text</type>
+    <notnull>true</notnull>
+    <length>255</length>
+   </field>
+
+   <field>
+    <name>vacation_addresses</name>
+    <type>clob</type>
+    <notnull>false</notnull>
+   </field>
+
+   <field>
+    <name>vacation_subject</name>
+    <type>text</type>
+    <notnull>false</notnull>
+    <length>255</length>
+   </field>
+
+   <field>
+    <name>vacation_reason</name>
+    <type>clob</type>
+    <notnull>false</notnull>
+   </field>
+
+   <field>
+    <name>vacation_days</name>
+    <type>integer</type>
+    <default>7</default>
+    <notnull>false</notnull>
+    <length>4</length>
+   </field>
+
+   <field>
+    <name>vacation_excludes</name>
+    <type>clob</type>
+    <notnull>false</notnull>
+   </field>
+
+   <field>
+    <name>vacation_ignorelists</name>
+    <type>integer</type>
+    <default>1</default>
+    <notnull>false</notnull>
+    <length>4</length>
+   </field>
+
+   <field>
+    <name>vacation_start</name>
+    <type>integer</type>
+    <notnull>false</notnull>
+    <length>4</length>
+   </field>
+
+   <field>
+    <name>vacation_end</name>
+    <type>integer</type>
+    <notnull>false</notnull>
+    <length>4</length>
+   </field>
+
+   <index>
+    <name>ingo_vacations_primary</name>
+    <primary>true</primary>
+    <field>
+     <name>vacation_owner</name>
+     <sorting>ascending</sorting>
+    </field>
+   </index>
+
+  </declaration>
+
+ </table>
+
+</database>
diff --git a/ingo/scripts/upgrades/1.2.1_to_1.2.2.sql b/ingo/scripts/upgrades/1.2.1_to_1.2.2.sql
new file mode 100644 (file)
index 0000000..331e2ae
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE ingo_shares_groups CHANGE group_uid group_uid VARCHAR(255);
diff --git a/ingo/scripts/upgrades/1.2_to_1.2.1.sql b/ingo/scripts/upgrades/1.2_to_1.2.1.sql
new file mode 100644 (file)
index 0000000..d5f6ac2
--- /dev/null
@@ -0,0 +1,2 @@
+ALTER TABLE ingo_shares CHANGE share_owner share_owner VARCHAR(255);
+ALTER TABLE ingo_shares_users CHANGE user_uid user_uid VARCHAR(255);
diff --git a/ingo/scripts/upgrades/2007-04-25_add_timed_vacation.sql b/ingo/scripts/upgrades/2007-04-25_add_timed_vacation.sql
new file mode 100644 (file)
index 0000000..58abe3a
--- /dev/null
@@ -0,0 +1,2 @@
+ALTER TABLE ingo_vacations ADD vacation_start INT;
+ALTER TABLE ingo_vacations ADD vacation_end INT;
diff --git a/ingo/scripts/upgrades/2008-06-17_fix_varchar_lengths.sql b/ingo/scripts/upgrades/2008-06-17_fix_varchar_lengths.sql
new file mode 100644 (file)
index 0000000..d5f6ac2
--- /dev/null
@@ -0,0 +1,2 @@
+ALTER TABLE ingo_shares CHANGE share_owner share_owner VARCHAR(255);
+ALTER TABLE ingo_shares_users CHANGE user_uid user_uid VARCHAR(255);
diff --git a/ingo/scripts/upgrades/2008-09-23_fix_group_uid.sql b/ingo/scripts/upgrades/2008-09-23_fix_group_uid.sql
new file mode 100644 (file)
index 0000000..331e2ae
--- /dev/null
@@ -0,0 +1 @@
+ALTER TABLE ingo_shares_groups CHANGE group_uid group_uid VARCHAR(255);
diff --git a/ingo/scripts/upgrades/convert_datatree_shares_to_sql.php b/ingo/scripts/upgrades/convert_datatree_shares_to_sql.php
new file mode 100755 (executable)
index 0000000..820ae1e
--- /dev/null
@@ -0,0 +1,199 @@
+#!/usr/bin/env php
+<?php
+/**
+ * This script migrates Ingo's share data from the datatree Horde_Share
+ * driver to the new SQL Horde_Share driver. You should run the 1.1_to_1.2.sql
+ * upgrade script before executing this script.
+ */
+
+@define('AUTH_HANDLER', true);
+@define('HORDE_BASE', dirname(__FILE__) . '/../../..');
+
+/* Set up the CLI environment */
+require_once HORDE_BASE . '/lib/core.php';
+if (!Horde_CLI::runningFromCli()) {
+    exit("Must be run from the command line\n");
+}
+$cli = &Horde_CLI::singleton();
+$cli->init();
+
+/* Grab what we need to steal the DB config */
+require_once HORDE_BASE . '/config/conf.php';
+require_once 'MDB2.php';
+
+$config = $GLOBALS['conf']['sql'];
+unset($config['charset']);
+$db = MDB2::factory($config);
+
+$error_cnt = 0;
+$delete_dt_data = false;
+$answer = $cli->prompt('Do you want to keep your old datatree data or delete it?', array('Keep', 'Delete'));
+if ($answer == 1) {
+    $delete_dt_data = true;
+}
+$answer = $cli->prompt(sprintf("Data will be copied into the new tables, and %s be deleted from the datatree.\n Is this what you want?", (($delete_dt_data) ? 'WILL' : 'WILL NOT')), array('y' => 'Yes', 'n' => 'No'));
+if ($answer != 'y') {
+    exit;
+}
+
+/* Get the share entries */
+$sql = 'SELECT datatree_id, datatree_name FROM horde_datatree WHERE '
+    . 'group_uid = \'horde.shares.ingo\'';
+$shares_result = $db->query($sql);
+if (is_a($shares_result, 'PEAR_Error')) {
+    die($shares_result->toString());
+}
+
+while ($row = $shares_result->fetchRow(MDB2_FETCHMODE_ASSOC)) {
+    $share_id = $row['datatree_id'];
+    $share_name = $row['datatree_name'];
+
+    /* Build an array to hold the new row data */
+    $data = array('share_id' => $db->nextId('ingo_shares'),
+                  'share_name' => $share_name);
+
+    $sql = 'SELECT attribute_name, attribute_key, attribute_value FROM horde_datatree_attributes WHERE datatree_id = ?';
+    $query = $db->prepare($sql);
+    $query_result = $query->execute($share_id);
+    $rows = $query_result->fetchAll(MDB2_FETCHMODE_ASSOC);
+    $users = array();
+    $groups = array();
+
+    foreach ($rows as $row) {
+        if ($row['attribute_name'] == 'perm_groups') {
+            /* Group table entry */
+            $groups[] = array('share_id' => $data['share_id'],
+                              'group_uid' => $row['attribute_key'],
+                              'perm' => $row['attribute_value']);
+        } elseif ($row['attribute_name'] == 'perm_users') {
+            /* User table entry */
+            $users[] = array('share_id' => $data['share_id'],
+                             'user_uid' => $row['attribute_key'],
+                             'perm' => $row['attribute_value']);
+        } else {
+            /* Everything else goes in the main share table */
+            switch ($row['attribute_name']) {
+            case 'perm_creator':
+            case 'perm_default':
+            case 'perm_guest':
+                $data[$row['attribute_name']] = $row['attribute_value'];
+                break;
+
+            case 'owner':
+                $data['share_owner'] = $row['attribute_value'];
+                break;
+
+            case 'name':
+                // Note the key to the $data array is not related to
+                // the attribute_name field in the dt_attributes table.
+                $data['attribute_name'] = $row['attribute_value'];
+                break;
+
+            case 'desc':
+                $data['attribute_desc'] = $row['attribute_value'];
+                break;
+            }
+        }
+    }
+
+    /* Set flags */
+    $data['share_flags'] = 0;
+    if (count($users)) {
+        $data['share_flags'] |= 1;
+    }
+    if (count($groups)) {
+        $data['share_flags'] |= 2;
+    }
+
+    /* Insert the new data */
+    $cli->message('Migrating share data for share_id: ' . $share_id, 'cli.message');
+    $error = false;
+    $db->beginTransaction();
+    $result = insertData('ingo_shares', $data);
+    if (is_a($result, 'PEAR_Error')) {
+        $cli->message($result->toString(), 'cli.error');
+        $error = true;
+    }
+    if (count($groups)) {
+        foreach ($groups as $group) {
+            $result = insertData('ingo_shares_groups', $group);
+            if (is_a($result, 'PEAR_Error')) {
+                $cli->message($result->toString(), 'cli.error');
+                $error = true;
+            }
+        }
+    }
+    if (count($users)) {
+        foreach ($users as $user) {
+            $result = insertData('ingo_shares_users', $user);
+            if (is_a($result, 'PEAR_Error')) {
+                $cli->message($result->toString(), 'cli.error');
+                $error = true;
+            }
+        }
+    }
+
+    /* Delete the datatree data, but ONLY if it was requested */
+    if ($delete_dt_data && !$error) {
+        $cli->message('DELETING datatree data for share_id: ' . $share_id, 'cli.message');
+        $delete = $db->prepare('DELETE FROM horde_datatree_attributes WHERE datatree_id = ?', null, MDB2_PREPARE_MANIP);
+        if (is_a($delete, 'PEAR_Error')) {
+            $cli->message($delete->toString(), 'cli.error');
+            $error = true;
+        } else {
+            $delete_result = $delete->execute(array($share_id));
+            if (is_a($delete_result, 'PEAR_Error')) {
+                $cli->message($delete_result->toString(), 'cli.error');
+                $error = true;
+            }
+        }
+        $delete->free();
+
+        $delete = $db->prepare('DELETE FROM horde_datatree WHERE datatree_id = ?', null, MDB2_PREPARE_MANIP);
+        if (is_a($delete, 'PEAR_Error')) {
+            $cli->message($delete->toString(), 'cli.error');
+            $error = true;
+        } else {
+            $delete_result = $delete->execute(array($share_id));
+            if (is_a($delete_result, 'PEAR_Error')) {
+                $cli->message($delete_result->toString(), 'cli.error');
+                $error = true;
+            }
+        }
+        $delete->free();
+    }
+
+    /* Cleanup */
+    $query_result->free();
+    unset($row, $rows, $data, $groups, $users);
+    if ($error) {
+        $db->rollback();
+        $cli->message('Rollback for share data for share_id: ' . $share_id, 'cli.message');
+        ++$error_cnt;
+    } else {
+        $db->commit();
+        $cli->message('Commit for share data for share_id: ' . $share_id, 'cli.message');
+    }
+}
+if ($error_cnt) {
+    $cli->message(sprintf("Encountered %u errors.", $error_cnt));
+}
+echo "\nDone.\n";
+
+/**
+ * Helper function
+ */
+function insertData($table, $data)
+{
+    $fields = array_keys($data);
+    $values = array_values($data);
+
+    $insert = $GLOBALS['db']->prepare('INSERT INTO ' . $table . ' (' . implode(', ', $fields) . ') VALUES (' . str_repeat('?, ', count($values) - 1) . '?)',
+                                      null, MDB2_PREPARE_MANIP);
+    if (is_a($insert,'PEAR_Error')) {
+        return $insert;
+    }
+    $insert_result = $insert->execute($values);
+    $insert->free();
+    return $insert_result;
+}
diff --git a/ingo/scripts/upgrades/convert_prefs_to_sql.php b/ingo/scripts/upgrades/convert_prefs_to_sql.php
new file mode 100755 (executable)
index 0000000..8308f4a
--- /dev/null
@@ -0,0 +1,91 @@
+#!/usr/bin/php
+<?php
+/**
+ * Converts a user's filter rules from the preferences storage backend to the
+ * new SQL storage backend that has been added in Ingo 1.2.
+ *
+ * Usage: php convert_prefs_to_sql.php < filename
+ * Filename is a file that contains a list of users, one username per line.
+ * The username should be the same as how the preferences are stored in
+ * the preferences backend (e.g. usernames may have to be in the form
+ * user@example.com).
+ *
+ * Copyright 2006-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author Jan Schneider <jan@horde.org>
+ */
+
+@define('AUTH_HANDLER', true);
+
+/* Do CLI checks and environment setup first. */
+@define('HORDE_BASE', dirname(__FILE__) . '/../../..');
+require_once HORDE_BASE . '/lib/core.php';
+
+/* Make sure no one runs this from the web. */
+if (!Horde_CLI::runningFromCLI()) {
+    exit("Must be run from the command line\n");
+}
+
+/* Load the CLI environment - make sure there's no time limit, init some
+ * variables, etc. */
+Horde_CLI::init();
+$cli = &Horde_CLI::singleton();
+
+/* Initialize the needed libraries. */
+require_once dirname(dirname(dirname(__FILE__))) . '/lib/base.php';
+
+/* Initialize authentication backend. */
+$auth = &Auth::singleton($conf['auth']['driver']);
+
+/* Initialize storage backends. */
+if ($conf['storage']['driver'] != 'sql') {
+    $cli->fatal('You need to configure an SQL storage backend in Ingo\'s configuration', __FILE__, __LINE__);
+}
+$prefs_storage = Ingo_Storage::factory('prefs');
+$sql_storage = Ingo_Storage::factory('sql');
+if (is_a($sql_storage, 'PEAR_Error')) {
+    $cli->fatal($sql_storage, __FILE__, __LINE__);
+}
+
+/* Rules to convert. */
+$rules = array(Ingo_Storage::ACTION_FILTERS,
+               Ingo_Storage::ACTION_BLACKLIST,
+               Ingo_Storage::ACTION_WHITELIST,
+               Ingo_Storage::ACTION_VACATION,
+               Ingo_Storage::ACTION_FORWARD,
+               Ingo_Storage::ACTION_SPAM);
+
+/* Update each user. */
+while (!feof(STDIN)) {
+    $user = fgets(STDIN);
+    $count = 0;
+    $user = trim($user);
+    if (empty($user)) {
+        continue;
+    }
+
+    echo 'Converting filters for user: ' . $user;
+
+    $auth->setAuth($user, array());
+    $_SESSION['ingo']['current_share'] = ':' . $user;
+
+    foreach ($rules as $rule) {
+        $filter = $prefs_storage->retrieve($rule, false);
+        if ($rule == Ingo_Storage::ACTION_FILTERS) {
+            $new_filter = &$sql_storage->retrieve(Ingo_Storage::ACTION_FILTERS, true, true);
+            foreach ($filter->getFilterlist() as $rule) {
+                $new_filter->addRule($rule);
+                echo '.';
+            }
+        }
+        $result = $sql_storage->store($filter, false);
+        if (is_a($result, 'PEAR_Error')) {
+            $cli->writeln();
+            $cli->message($result->getMessage(), 'cli.error');
+        }
+    }
+    $cli->writeln($cli->green('done'));
+}
diff --git a/ingo/spam.php b/ingo/spam.php
new file mode 100644 (file)
index 0000000..2bfda06
--- /dev/null
@@ -0,0 +1,167 @@
+<?php
+/**
+ * Spam script.
+ *
+ * Copyright 2002-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author Jason Felice <jason.m.felice@gmail.com>
+ * @author Jan Schneider <jan@horde.org>
+ */
+
+/**
+ * Dummy class to hold the select box created by {@link Ingo::flistSelect()}.
+ *
+ * @see Horde_UI_VarRenderer_ingo
+ * @see Ingo::flistSelect()
+ */
+class Horde_Form_Type_ingo_folders extends Horde_Form_Type {
+
+    var $_folder;
+
+    function isValid(&$var, &$vars, $value, &$message)
+    {
+        return true;
+    }
+
+    function getFolder()
+    {
+        return $this->_folder;
+    }
+
+    function setFolder($folder)
+    {
+        $this->_folder = $folder;
+    }
+
+}
+
+
+require_once dirname(__FILE__) . '/lib/base.php';
+
+if (!in_array(Ingo_Storage::ACTION_SPAM, $_SESSION['ingo']['script_categories'])) {
+    $notification->push(_("Simple spam filtering is not supported in the current filtering driver."), 'horde.error');
+    header('Location: ' . Horde::applicationUrl('filters.php', true));
+    exit;
+}
+
+/* Load libraries. */
+require_once 'Horde/Variables.php';
+
+/* Get the spam object and rule. */
+$spam = &$ingo_storage->retrieve(INGO_STORAGE_ACTION_SPAM);
+$filters = &$ingo_storage->retrieve(INGO_STORAGE_ACTION_FILTERS);
+$spam_id = $filters->findRuleId(INGO_STORAGE_ACTION_SPAM);
+$spam_rule = $filters->getRule($spam_id);
+
+$vars = &Variables::getDefaultVariables();
+if ($vars->get('submitbutton') == _("Return to Rules List")) {
+    header('Location: ' . Horde::applicationUrl('filters.php', true));
+    exit;
+}
+
+/* Build form. */
+$form = new Horde_Form($vars);
+$renderer = new Horde_Form_Renderer(array('varrenderer_driver' => array('ingo', 'ingo'), 'encode_title' => false));
+
+$v = &$form->addVariable(_("Spam Level:"), 'level', 'int', false, false, _("Messages with a likely spam score greater than or equal to this number will be treated as spam."));
+$v->setHelp('spam-level');
+
+$folder_var = &$form->addVariable(_("Folder to receive spam:"), 'folder', 'ingo_folders', false);
+$folder_var->setHelp('spam-folder');
+$form->addHidden('', 'actionID', 'text', false);
+$form->addHidden('', 'new_folder_name', 'text', false);
+
+$form->setButtons(_("Save"));
+
+/* Perform requested actions. */
+if ($form->validate($vars)) {
+    $success = true;
+
+    // Create a new folder if requested.
+    if ($vars->get('actionID') == 'create_folder') {
+        $result = Ingo::createFolder($vars->get('new_folder_name'));
+        if (is_string($result)) {
+            $spam->setSpamFolder($result);
+        } else {
+            $success = false;
+            if (is_a($result, 'PEAR_Error')) {
+                $notification->push($result->getMessage());
+            }
+        }
+    } else {
+        $spam->setSpamFolder($vars->get('folder'));
+    }
+
+    $spam->setSpamLevel($vars->get('level'));
+
+    if (is_a($result = $ingo_storage->store($spam), 'PEAR_Error')) {
+        $notification->push($result);
+        $success = false;
+    } else {
+        $notification->push(_("Changes saved."), 'horde.success');
+        if ($vars->get('submitbutton') == _("Save and Enable")) {
+            $filters->ruleEnable($spam_id);
+            if (is_a($result = $ingo_storage->store($filters), 'PEAR_Error')) {
+                $notification->push($result);
+                $success = false;
+            } else {
+                $notification->push(_("Rule Enabled"), 'horde.success');
+                $spam_rule['disable'] = false;
+            }
+        } elseif ($vars->get('submitbutton') == _("Save and Disable")) {
+            $filters->ruleDisable($spam_id);
+            if (is_a($result = $ingo_storage->store($filters), 'PEAR_Error')) {
+                $notification->push($result);
+                $success = false;
+            } else {
+                $notification->push(_("Rule Disabled"), 'horde.success');
+                $spam_rule['disable'] = true;
+            }
+        }
+    }
+    if ($success && $prefs->getValue('auto_update')) {
+        Ingo::updateScript();
+    }
+
+    /* Update the timestamp for the rules. */
+    $_SESSION['ingo']['change'] = time();
+}
+
+/* Add buttons depending on the above actions. */
+if (empty($spam_rule['disable'])) {
+    $form->appendButtons(_("Save and Disable"));
+} else {
+    $form->appendButtons(_("Save and Enable"));
+}
+$form->appendButtons(_("Return to Rules List"));
+
+/* Set default values. */
+$folder_var->type->setFolder($spam->getSpamFolder());
+if (!$form->isSubmitted()) {
+    $vars->set('level', $spam->getSpamLevel());
+    $vars->set('folder', $spam->getSpamFolder());
+    $vars->set('actionID', '');
+    $vars->set('new_folder_name', '');
+}
+
+/* Include new folder JS if necessary. */
+if ($registry->hasMethod('mail/createFolder')) {
+    Horde::addScriptFile('new_folder.js');
+}
+
+/* Set form title. */
+$form_title = _("Spam Filtering");
+if (!empty($spam_rule['disable'])) {
+    $form_title .= ' [<span class="form-error">' . _("Disabled") . '</span>]';
+}
+$form_title .= ' ' . Help::link('ingo', 'spam');
+$form->setTitle($form_title);
+
+$title = _("Spam Filtering");
+require INGO_TEMPLATES . '/common-header.inc';
+require INGO_TEMPLATES . '/menu.inc';
+$form->renderActive($renderer, $vars, 'spam.php', 'post');
+require $registry->get('templates', 'horde') . '/common-footer.inc';
diff --git a/ingo/templates/blacklist/blacklist.inc b/ingo/templates/blacklist/blacklist.inc
new file mode 100644 (file)
index 0000000..1ae5a2e
--- /dev/null
@@ -0,0 +1,46 @@
+<form method="post" name="filters" action="<?php echo Horde::applicationUrl('blacklist.php') ?>">
+<?php Util::pformInput() ?>
+<input type="hidden" name="actionID" value="rule_update" />
+<input type="hidden" name="new_folder_name" value="" />
+
+<h1 class="header">
+ <?php echo _("Blacklist") ?>
+ <?php echo Help::link('ingo', 'blacklist') ?>
+<?php if (!empty($bl_rule['disable'])): ?>
+  &nbsp;[<span style="color:red"><?php echo _("Disabled") ?></span>]
+<?php endif; ?>
+</h1>
+
+<table width="100%" cellspacing="0">
+  <tr class="item0">
+    <td>
+      <?php echo _("Action for blacklisted addresses:") ?><br />
+      <input type="radio" name="action" id="action_delete" value="delete" <?php if (empty($blacklist_folder)) echo 'checked="checked" ' ?>/> <?php echo Horde::label('action_delete', _("_Delete message completely")) ?><br />
+<?php if ($have_mark): ?>
+      <input type="radio" name="action" id="action_mark" value="mark" <?php if ($blacklist_folder == Ingo::BLACKLIST_MARKER) echo 'checked="checked" ' ?>/> <?php echo Horde::label('action_mark', _("Mar_k message as deleted")) ?><br />
+<?php endif; ?>
+      <input type="radio" name="action" id="action_folder" value="folder" <?php if (!empty($blacklist_folder) && ($blacklist_folder != Ingo::BLACKLIST_MARKER)) echo 'checked="checked" ' ?>/> <?php echo Horde::label('action_folder', _("_Move message to folder:")) ?>
+      <label for="actionvalue" class="hidden"><?php echo _("Select target folder") ?></label>
+      <?php echo $folder_list ?>
+    </td>
+    <td width="40" align="right">
+      <?php echo Help::link('ingo', 'blacklist-action') ?>&nbsp;
+    </td>
+  </tr>
+  <tr class="item1">
+    <td align="left">
+      <?php echo Horde::label('blacklist', _("_Enter each address on a new line:")) ?><br />
+      <textarea name="blacklist" id="blacklist" rows="15" cols="80"><?php echo htmlspecialchars(implode("\n", $blacklist->getBlacklist())) ?></textarea>
+    </td>
+    <td width="40" align="right">
+      <?php echo Help::link('ingo', 'blacklist-addresses') ?>&nbsp;
+    </td>
+  </tr>
+  <tr>
+    <td class="control" colspan="2">
+      <input class="button" type="submit" value="&nbsp;<?php echo _("Save") ?>&nbsp;" />
+      <input class="button" type="button" onclick="document.location.href='<?php echo Horde::applicationUrl('filters.php', true) ?>'" value="<?php echo _("Return to Rules List") ?>" />
+    </td>
+  </tr>
+</table>
+</form>
diff --git a/ingo/templates/common-header.inc b/ingo/templates/common-header.inc
new file mode 100644 (file)
index 0000000..50c2fd3
--- /dev/null
@@ -0,0 +1,23 @@
+<?php
+if (isset($language)) {
+    header('Content-type: text/html; charset=' . NLS::getCharset());
+    header('Vary: Accept-Language');
+}
+$page_title = $GLOBALS['registry']->get('name');
+if (!empty($title)) {
+    $page_title .= ' :: ' . $title;
+}
+?>
+<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "DTD/xhtml1-transitional.dtd">
+<?php echo !empty($language) ? '<html lang="' . strtr($language, '_', '-') . '">' : '<html>' ?>
+<head>
+<?php if (!empty($refresh_time) && !empty($refresh_url)): ?>
+<meta http-equiv="refresh" content="<?php echo $refresh_time ?>;url=<?php echo $refresh_url ?>">
+<?php endif; ?>
+<?php Horde::includeScriptFiles(); ?>
+<title><?php echo htmlspecialchars($page_title) ?></title>
+<link href="<?php echo $GLOBALS['registry']->getImageDir()?>/favicon.ico" rel="SHORTCUT ICON" />
+<?php echo Horde::stylesheetLink('ingo') ?>
+</head>
+
+<body<?php if ($bc = Util::nonInputVar('bodyClass')) echo ' class="' . $bc . '"' ?><?php if ($bi = Util::nonInputVar('bodyId')) echo ' id="' . $bi . '"'; ?>>
diff --git a/ingo/templates/filters/filter-none.inc b/ingo/templates/filters/filter-none.inc
new file mode 100644 (file)
index 0000000..6a3976d
--- /dev/null
@@ -0,0 +1,5 @@
+<tr>
+ <td colspan="4" class="text">
+  <em><?php printf(_("No filters. Click \"%s\" to create a new filter."), _("New Rule")) ?></em>
+ </td>
+</tr>
diff --git a/ingo/templates/filters/filter.html b/ingo/templates/filters/filter.html
new file mode 100644 (file)
index 0000000..05834a4
--- /dev/null
@@ -0,0 +1,36 @@
+<loop:filter>
+<tr>
+ <td class="nowrap">
+<if:edit_allowed>
+  <tag:filter.editlink /><tag:filter.editimg /></a>
+</if:edit_allowed>
+<if:delete_allowed>
+<if:filter.dellink>
+  <tag:filter.dellink /><tag:filter.delimg /></a>
+</if:filter.dellink>
+</if:delete_allowed>
+<if:edit_allowed>
+<if:filter.copylink>
+  <tag:filter.copylink /><tag:filter.copyimg /></a>
+</if:filter.copylink>
+</if:edit_allowed>
+ </td>
+ <td>
+  <strong><tag:filter.number />.&nbsp;<if:filter.filterimg><tag:filter.filterimg />&nbsp;&nbsp;</if:filter.filterimg><tag:filter.descriplink /></strong>&nbsp;<if:filter.enablelink><strong>[<tag:filter.enablelink /><span style="color:red"><gettext>disabled - click to enable</gettext></span></a>]</strong></if:filter.enablelink>
+ </td>
+ <td style="text-align:center">
+  <if:filter.disablelink><tag:filter.disablelink /></if:filter.disablelink><tag:filter.disableimg /><if:filter.disablelink></a></if:filter.disablelink><if:filter.enablelink><tag:filter.enablelink /></if:filter.enablelink><tag:filter.enableimg /><if:filter.enablelink></a></if:filter.enablelink>
+ </td>
+<if:edit_allowed>
+ <td class="nowrap">
+  <if:filter.uplink><tag:filter.uplink /><tag:up_img /></a></if:filter.uplink>
+ </td>
+ <td class="nowrap">
+  <if:filter.downlink><tag:filter.downlink /><tag:down_img /></a></if:filter.downlink>
+ </td>
+ <td class="nowrap">
+  <label><gettext>To:</gettext>&nbsp;<input type="text" size="2" onchange="moveFromTo(<tag:filter.number />, this.value, '<tag:filter.upurl />', '<tag:filter.downurl />');"/></label>
+ </td>
+</if:edit_allowed>
+</tr>
+</loop:filter>
diff --git a/ingo/templates/filters/footer.inc b/ingo/templates/filters/footer.inc
new file mode 100644 (file)
index 0000000..ea0c5ff
--- /dev/null
@@ -0,0 +1,11 @@
+</tbody>
+</table>
+<?php if ($createrule || $canapply): ?>
+<div class="control" style="padding:2px">
+<?php if ($createrule): ?>
+ <input class="button" type="button" onclick="window.location='<?php echo addslashes($rule_url) ?>'" value="&nbsp;<?php echo _("New Rule") ?>&nbsp;" />
+<?php endif; if ($canapply): ?>
+ <input class="button" type="button" onclick="document.filters.actionID.value='apply_filters';document.filters.submit(); return true;" value="&nbsp;<?php echo _("Apply Filters") ?>&nbsp;" />
+<?php endif; endif; ?>
+</div>
+</form>
diff --git a/ingo/templates/filters/header.inc b/ingo/templates/filters/header.inc
new file mode 100644 (file)
index 0000000..749bfed
--- /dev/null
@@ -0,0 +1,33 @@
+<script type="text/javascript">
+function moveFromTo(from, to, upurl, downurl)
+{
+    var steps = to - from;
+    if (steps < 0) {
+        window.location = upurl + '&steps=' + -steps;
+    } else if (steps > 0) {
+        window.location = downurl + '&steps=' + steps;
+    }
+    return true;
+}
+</script>
+<form method="post" name="filters" action="<?php echo Horde::applicationUrl('filters.php') ?>">
+<?php Util::pformInput() ?>
+<input type="hidden" name="actionID" value="" />
+<div class="header">
+ <?php echo _("Existing Rules") . ' ' . Help::link('ingo', 'filters_rules') ?>
+</div>
+
+<table width="100%" cellspacing="0" class="striped">
+<thead>
+ <tr class="item">
+  <th width="1%"><?php echo _("Edit") ?></th>
+  <th class="leftAlign"><?php echo _("Rule") ?></th>
+  <th width="1%"><?php echo _("Enabled") ?></th>
+  <?php if ($edit_allowed): ?>
+  <th width="1%"></th>
+  <th width="1%"></th>
+  <th width="1%"><?php echo _("Move") ?></th>
+  <?php endif; ?>
+ </tr>
+</thead>
+<tbody>
diff --git a/ingo/templates/filters/settings.inc b/ingo/templates/filters/settings.inc
new file mode 100644 (file)
index 0000000..277a37e
--- /dev/null
@@ -0,0 +1,35 @@
+<br />
+
+<?php $flags_val = $prefs->getValue('filter_seen') ?>
+<form method="post" name="filtersettings" action="filters.php">
+<?php Util::pformInput() ?>
+<input type="hidden" name="actionID" value="settings_save" />
+<h1 class="header">
+ <?php echo _("Additional Settings") ?>
+</h1>
+
+<table width="100%" cellspacing="0">
+  <tr>
+    <td class="item" align="left">
+      <input type="checkbox" id="show_filter_msg" name="show_filter_msg"<?php if ($prefs->getValue('show_filter_msg')) echo ' checked="checked"' ?> />&nbsp;
+      <?php echo Horde::label('show_filter_msg', _("Display detailed notification when each filter is applied?")) ?>
+    </td><td class="item" align="right" width="1%">
+      <?php echo Help::link('ingo', 'pref-show_filter_msg') ?>
+    </td>
+  </tr><tr>
+    <td class="item" align="left" width="99%"><?php echo Horde::label('filter_seen', _("Filter Options")) ?>&nbsp;
+      <select id="filter_seen" name="filter_seen">
+        <option value="0"<?php if (empty($flags_val)) echo ' selected="selected"' ?>><?php echo _("Filter All Messages") ?></option>
+        <option value="<?php echo Ingo_Script::FILTER_UNSEEN ?>"<?php if ($flags_val == Ingo_Script::FILTER_UNSEEN) echo ' selected="selected"' ?>><?php echo _("Filter Only Unseen Messages") ?></option>
+        <option value="<?php echo Ingo_Script::FILTER_SEEN ?>"<?php if ($flags_val == Ingo_Script::FILTER_SEEN) echo ' selected="selected"' ?>><?php echo _("Filter Only Seen Messages") ?></option>
+      </select>
+    </td><td class="item" align="right" width="1%">
+      <?php echo Help::link('ingo', 'pref-filter_seen') ?>
+    </td>
+  </tr><tr>
+    <td colspan="2" class="control">
+      <input class="button" type="button" onclick="document.filtersettings.submit(); return true;" value="&nbsp;<?php echo _("Save Settings") ?>&nbsp;" />
+    </td>
+  </tr>
+</table>
+</form>
diff --git a/ingo/templates/javascript/new_folder.js b/ingo/templates/javascript/new_folder.js
new file mode 100644 (file)
index 0000000..e2c3ced
--- /dev/null
@@ -0,0 +1,17 @@
+function newFolderName(name, tagname)
+{
+    var form = document.getElementsByName(name);
+    var selector = form[0].elements.namedItem(tagname);
+
+    if (selector.selectedIndex == 1){
+        var folder = window.prompt('<?php echo addslashes(_("Please enter the name of the new folder:")) ?>\n', '');
+
+        if ((folder != null) && (folder != '')) {
+            form[0].actionID.value = 'create_folder';
+            form[0].new_folder_name.value = folder;
+            form[0].submit();
+        }
+    }
+
+    return true;
+}
diff --git a/ingo/templates/menu.inc b/ingo/templates/menu.inc
new file mode 100644 (file)
index 0000000..e0bd68d
--- /dev/null
@@ -0,0 +1,20 @@
+<form action="filters.php" method="post" name="rulesetsmenu">
+<?php echo Util::formInput() ?>
+<div id="menu">
+<?php if (!empty($ingo_shares) && count($all_rulesets) > 1): ?>
+ <div style="float:right">
+<label for="ruleset" class="hidden"><?php echo _("Select ruleset to display:") ?></label>
+<select id="ruleset" name="ruleset" onchange="document.rulesetsmenu.submit(); return false;">
+  <option value=""><?php echo _("Select ruleset to display:") ?></option>
+<?php foreach (array_keys($all_rulesets) as $id): ?>
+  <option value="<?php echo htmlspecialchars($id) ?>"<?php echo ($_SESSION['ingo']['current_share'] == $id ? ' selected="selected"' : '') . '>' . htmlspecialchars($all_rulesets[$id]->get('name')) ?></option>
+<?php endforeach; ?>
+</select>
+ </div>
+<?php endif; ?>
+
+ <?php echo Ingo::getMenu('string') ?>
+</div>
+</form>
+
+<?php $GLOBALS['notification']->notify(array('listeners' => 'status')) ?>
diff --git a/ingo/templates/rule/filter.inc b/ingo/templates/rule/filter.inc
new file mode 100644 (file)
index 0000000..86a71b1
--- /dev/null
@@ -0,0 +1,37 @@
+ <tr style="vertical-align:top">
+<?php if ($cond_num > 0): ?>
+  <td>
+   <strong><?php echo ($rule['combine'] == INGO_STORAGE_COMBINE_ALL) ? _("and") : _("or") ?></strong>
+  </td>
+<?php elseif (($cond_num == 0) && !$lastfield): ?>
+  <td>&nbsp;</td>
+<?php endif; ?>
+  <td>
+   <label for="field_<?php echo (int)$cond_num ?>" class="hidden"><?php echo _("Field") ?></label>
+   <select onchange="document.rule.submit(); return true;" id="field_<?php echo (int)$cond_num ?>" name="field[<?php echo (int)$cond_num ?>]">
+    <?php echo $field_select ?>
+   </select>
+<?php if ($header_entry): ?>
+   <label for="userheader_<?php echo (int)$cond_num ?>" class="hidden"><?php echo _("User header") ?></label>
+   <input id="userheader_<?php echo (int)$cond_num ?>" name="userheader[<?php echo (int)$cond_num ?>]" value="<?php echo htmlspecialchars($userheader) ?>" />
+<?php endif; ?>
+  </td>
+<?php if ($lastfield): ?>
+  <td colspan="2">&nbsp;</td>
+<?php else: ?>
+  <td>
+   <label for="match_<?php echo (int)$cond_num ?>" class="hidden"><?php echo _("Match type") ?></label>
+   <select onchange="document.rule.submit(); return true;" id="match_<?php echo (int)$cond_num ?>" name="match[<?php echo (int)$cond_num ?>]">
+    <?php echo $match_select ?>
+   </select>
+  </td>
+  <td>
+   <?php echo $match_value ?>
+  </td>
+<?php endif; ?>
+<?php if (!$lastfield): ?>
+  <td><?php echo Horde::link('javascript:delete_condition(' . (int)$cond_num . ');', _("Delete Condition")) . Horde::img('delete.png', _("Delete Condition"), null, $registry->getImageDir('horde')) ?></a></td>
+<?php elseif ($cond_num != 0): ?>
+  <td>&nbsp;</td>
+<?php endif; ?>
+ </tr>
diff --git a/ingo/templates/rule/footer.inc b/ingo/templates/rule/footer.inc
new file mode 100644 (file)
index 0000000..c225322
--- /dev/null
@@ -0,0 +1,65 @@
+      </table>
+    </td>
+    <td width="40" align="right">
+      <?php echo Help::link('ingo', 'rule-matches') ?>&nbsp;
+    </td>
+  </tr>
+
+  <tr class="item0">
+    <td>
+      <em><?php echo Horde::label('action', _("Do this:")) ?></em>
+      <br />
+      <select onchange="document.rule.submit(); return true;" id="action" name="action">
+        <?php echo $actionselect ?>
+      </select>
+      <?php echo $actionvaluelabel ?>
+      <?php echo $actionvalue ?>
+    </td><td width="40" align="right">
+      <?php echo Help::link('ingo', 'rule-action') ?>&nbsp;
+    </td>
+  </tr>
+
+<?php if ($current_action->flags && $ingo_script->imapFlags()): ?>
+  <tr class="item0">
+    <td>
+      <em><?php echo _("Mark message as:") ?></em>
+      <br />
+      <table cellspacing="0">
+        <tr>
+          <td>
+            <input type="checkbox" id="seen" name="flags[]" value="<?php echo INGO_STORAGE_FLAG_SEEN ?>"<?php echo (INGO_STORAGE_FLAG_SEEN & $rule['flags']) ? ' checked="checked" ' : '' ?>/><?php echo Horde::label('seen', _("Seen")) ?>&nbsp;
+          </td><td>
+            <input type="checkbox" id="flagged" name="flags[]" value="<?php echo INGO_STORAGE_FLAG_FLAGGED ?>"<?php echo (INGO_STORAGE_FLAG_FLAGGED & $rule['flags']) ? ' checked="checked" ' : '' ?>/><?php echo Horde::label('flagged', _("Flagged For Followup")) ?>&nbsp;
+          </td><td>
+            <input type="checkbox" id="answered" name="flags[]" value="<?php echo INGO_STORAGE_FLAG_ANSWERED ?>"<?php echo (INGO_STORAGE_FLAG_ANSWERED & $rule['flags']) ? ' checked="checked" ' : '' ?>/><?php echo Horde::label('answered', _("Answered")) ?>&nbsp;
+          </td><td>
+            <input type="checkbox" id="deleted" name="flags[]" value="<?php echo INGO_STORAGE_FLAG_DELETED ?>"<?php echo (INGO_STORAGE_FLAG_DELETED & $rule['flags']) ? ' checked="checked" ' : '' ?>/><?php echo Horde::label('deleted', _("Deleted")) ?>&nbsp;
+          </td>
+        </tr>
+      </table>
+    </td>
+    <td width="40" align="right">
+      <?php echo Help::link('ingo', 'rule-mark') ?>&nbsp;
+    </td>
+  </tr>
+<?php endif; ?>
+
+<?php if ($ingo_script->stopScript()): ?>
+  <tr class="item1">
+    <td align="left">
+      <input type="checkbox" id="stop" name="stop" value="1"<?php echo ($rule['stop']) ? ' checked="checked"' : '' ?> /> <?php echo Horde::label('stop', _("Stop checking if this rule matches?")) ?>
+    </td>
+    <td width="40" align="right">
+      <?php echo Help::link('ingo', 'rule-stop') ?>&nbsp;
+    </td>
+  </tr>
+<?php endif; ?>
+
+  <tr>
+    <td class="control" colspan="2">
+      <input class="button" type="button" onclick="document.rule.actionID.value='rule_save';document.rule.submit(); return true;" value="&nbsp;<?php echo _("Save") ?>&nbsp;" />
+      <input class="button" type="button" onclick="document.location.href='<?php echo Horde::applicationUrl('filters.php', true) ?>'" value="<?php echo _("Return to Filters List") ?>" />
+    </td>
+  </tr>
+</table>
+</form>
diff --git a/ingo/templates/rule/header.inc b/ingo/templates/rule/header.inc
new file mode 100644 (file)
index 0000000..2b570fc
--- /dev/null
@@ -0,0 +1,54 @@
+<script type="text/javascript">
+<!--
+function delete_condition(num)
+{
+    document.rule.actionID.value = 'rule_delete';
+    document.rule.conditionnumber.value = num;
+    document.rule.submit();
+    return true;
+}
+//-->
+</script>
+
+<form method="post" name="rule" action="<?php echo Horde::applicationUrl('rule.php') ?>">
+<?php Util::pformInput() ?>
+<input type="hidden" name="actionID" value="rule_update" />
+<input type="hidden" name="conditionnumber" value="-1" />
+<input type="hidden" name="new_folder_name" value="" />
+<?php if (!is_null($edit_number)): ?>
+<input type="hidden" name="edit" value="<?php echo $edit_number ?>" />
+<?php endif; if (isset($rule['id'])): ?>
+<input type="hidden" name="id" value="<?php echo $rule['id'] ?>" />
+<?php endif; ?>
+
+<div class="header">
+ <?php echo _("Filter Rule") ?>
+ <?php if (!empty($rule['disable'])): ?>[<span style="form-error"><?php echo _("Disabled") ?></span>]<?php endif; ?>
+ <?php echo Help::link('ingo', 'rule') ?>
+</div>
+
+<table width="100%" cellspacing="0">
+  <tr class="control">
+    <td>
+      <?php echo Horde::label('name', _("Rule Name:")) ?> <input class="input" id="name" name="name" size="50" value="<?php echo (isset($rule['name'])) ? @htmlspecialchars($rule['name'], ENT_COMPAT, NLS::getCharset()) : '' ?>" />
+    </td>
+    <td width="40" class="rightAlign">
+      <?php echo Help::link('ingo', 'rule-name') ?>&nbsp;
+    </td>
+  </tr>
+
+  <tr class="item0">
+    <td>
+      <em><?php echo _("For an incoming message that matches:") ?></em>
+      <br />
+      <input id="all" onclick="document.rule.submit(); return true;" type="radio" name="combine" value="<?php echo INGO_STORAGE_COMBINE_ALL ?>"<?php echo ($rule['combine'] == INGO_STORAGE_COMBINE_ALL) ? ' checked="checked"' : '' ?> /><?php echo Horde::label('all', _("All of the following")) ?>&nbsp;
+      <input id="any" onclick="document.rule.submit(); return true;" type="radio" name="combine" value="<?php echo INGO_STORAGE_COMBINE_ANY ?>"<?php echo ($rule['combine'] == INGO_STORAGE_COMBINE_ANY) ? ' checked="checked"' : '' ?> /><?php echo Horde::label('any', _("Any of the following")) ?>
+    </td>
+    <td width="40" class="rightAlign">
+      <?php echo Help::link('ingo', 'rule-combine') ?>&nbsp;
+    </td>
+  </tr>
+
+  <tr class="item0">
+    <td>
+      <table width="100%" cellspacing="0">
diff --git a/ingo/templates/script/activate.inc b/ingo/templates/script/activate.inc
new file mode 100644 (file)
index 0000000..f8ba5ed
--- /dev/null
@@ -0,0 +1,39 @@
+  <tr>
+    <td align="center">
+      <table>
+        <tr>
+<?php if ($actionID != 'show_active'): ?>
+          <td>
+            <form method="post" name="activate_script" action="<?php echo Horde::applicationUrl('script.php') ?>">
+              <?php Util::pformInput() ?>
+              <input type="hidden" name="actionID" value="action_activate" />
+              <input class="button" type="submit" name="submit" value="<?php echo _("Activate Script") ?>" />
+            </form>
+          </td>
+          <td>
+            <form method="post" name="deactivate_script" action="<?php echo Horde::applicationUrl('script.php') ?>">
+              <?php Util::pformInput() ?>
+              <input type="hidden" name="actionID" value="action_deactivate" />
+              <input class="button" type="submit" name="submit" value="<?php echo _("Deactivate Script") ?>" />
+            </form>
+          </td>
+          <td>
+            <form method="post" name="show_active_script" action="<?php echo Horde::applicationUrl('script.php') ?>">
+              <?php Util::pformInput() ?>
+              <input type="hidden" name="actionID" value="show_active" />
+              <input class="button" type="submit" name="submit" value="<?php echo _("Show Active Script") ?>" />
+            </form>
+          </td>
+<?php else: ?>
+          <td>
+            <form method="post" name="show_current_script" action="<?php echo Horde::applicationUrl('script.php') ?>">
+              <?php Util::pformInput() ?>
+              <input class="button" type="submit" name="submit" value="<?php echo _("Show Current Script") ?>" />
+            </form>
+          </td>
+<?php endif; ?>
+        </tr>
+      </table>
+    </td>
+  </tr>
+</table>
diff --git a/ingo/templates/script/footer.inc b/ingo/templates/script/footer.inc
new file mode 100644 (file)
index 0000000..9917c17
--- /dev/null
@@ -0,0 +1,4 @@
+      </pre>
+    </td>
+  </tr>
+</table>
diff --git a/ingo/templates/script/header.inc b/ingo/templates/script/header.inc
new file mode 100644 (file)
index 0000000..30dce1c
--- /dev/null
@@ -0,0 +1,4 @@
+<h1 class="header">
+  <?php echo _("Script") ?>
+</h1>
+<table width="100%" cellspacing="0">
diff --git a/ingo/templates/script/script.inc b/ingo/templates/script/script.inc
new file mode 100644 (file)
index 0000000..4f51b3d
--- /dev/null
@@ -0,0 +1,4 @@
+<table width="100%" cellspacing="0">
+  <tr>
+    <td class="item">
+      <pre>
diff --git a/ingo/templates/whitelist/whitelist.inc b/ingo/templates/whitelist/whitelist.inc
new file mode 100644 (file)
index 0000000..1b14e40
--- /dev/null
@@ -0,0 +1,28 @@
+<form method="post" name="filters" action="<?php echo Horde::applicationUrl('whitelist.php') ?>">
+<?php Util::pformInput() ?>
+<input type="hidden" name="actionID" value="rule_update" />
+<h1 class="header">
+  <?php echo _("Whitelist") ?>
+  <?php echo Help::link('ingo', 'whitelist') ?>
+<?php if (!empty($wl_rule['disable'])): ?>
+  &nbsp;[<span style="color:red"><?php echo _("Disabled") ?></span>]
+<?php endif; ?>
+</h1>
+<table cellspacing="0" cellpadding="0">
+  <tr class="item0">
+    <td align="left">
+      <?php echo Horde::label('whitelist', _("Wh_itelist addresses:")) ?><br />
+      <textarea name="whitelist" id="whitelist" rows="15" cols="80"><?php echo htmlspecialchars(implode("\n", $whitelist->getWhitelist())) ?></textarea>
+    </td>
+    <td align="right">
+      <?php echo Help::link('ingo', 'whitelist-addresses') ?>&nbsp;
+    </td>
+  </tr>
+  <tr>
+    <td colspan="2" class="control">
+      <input class="button" type="submit" value="&nbsp;<?php echo _("Save") ?>&nbsp;" />
+      <input class="button" type="button" onclick="document.location.href='<?php echo Horde::applicationUrl('filters.php', true) ?>'" value="<?php echo _("Return to Rules List") ?>" />
+    </td>
+  </tr>
+</table>
+</form>
diff --git a/ingo/test.php b/ingo/test.php
new file mode 100644 (file)
index 0000000..ab9b637
--- /dev/null
@@ -0,0 +1,100 @@
+<?php
+/**
+ * Ingo test script.
+ *
+ * Copyright 1999-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author Brent J. Nordquist <bjn@horde.org>
+ * @author Chuck Hagenbuch <chuck@horde.org>
+ */
+
+/* Include Horde's core.php file. */
+include_once '../lib/core.php';
+
+/* We should have loaded the String class, from the Horde_Util
+ * package, in core.php. If String:: isn't defined, then we're not
+ * finding some critical libraries. */
+if (!class_exists('String')) {
+    echo '<br /><h2 style="color:red">The Horde_Util package was not found. If PHP\'s error_reporting setting is high enough and display_errors is on, there should be error messages printed above that may help you in debugging the problem. If you are simply missing these files, then you need to get the <a href="http://cvs.horde.org/cvs.php/framework">framework</a> module from <a href="http://www.horde.org/source/">Horde CVS</a>, and install the packages in it with the install-packages.php script.</h2>';
+    exit;
+}
+
+/* Initialize the Horde_Test:: class. */
+if (!is_readable('../lib/Test.php')) {
+    echo 'ERROR: You must install Horde before running this script.';
+    exit;
+}
+require_once '../lib/Test.php';
+$horde_test = new Horde_Test;
+
+/* Ingo version. */
+$module = 'Ingo';
+require_once './lib/version.php';
+$module_version = INGO_VERSION;
+
+require TEST_TEMPLATES . 'header.inc';
+require TEST_TEMPLATES . 'version.inc';
+
+/* Display versions of other Horde applications. */
+$app_list = array(
+    'imp' => array(
+        'error' => 'IMP can be used to interface ingo with a mailserver.',
+        'version' => '5.0'
+    )
+);
+$app_output = $horde_test->requiredAppCheck($app_list);
+
+?>
+<h1>Other Horde Applications</h1>
+<ul>
+    <?php echo $app_output ?>
+</ul>
+<?php
+
+/* PHP module capabilities. */
+$module_list = array(
+    'ftp' => array(
+        'descrip' => 'FTP Support',
+        'error' => 'If you will be using the VFS FTP driver for procmail scripts, PHP must have FTP support. Compile PHP <code>--with-ftp</code> before continuing.'
+    ),
+    'ssh2' => array(
+        'descrip' => 'SSH2 Support',
+        'error' => 'You need the SSH2 PECL module if you plan to use the SSH2 VFS driver to store procmail scripts on the mail server.'
+    ),
+);
+
+/* Display PHP Version information. */
+$php_info = $horde_test->getPhpVersionInformation();
+require TEST_TEMPLATES . 'php_version.inc';
+
+/* PEAR */
+$pear_list = array(
+    'Net_Socket' => array(
+        'path' => 'Net/Socket.php',
+        'error' => 'If you will be using Sieve scripts, make sure you are using a version of PEAR which includes the Net_Socket class, or that you have installed the Net_Socket package seperately.'
+    ),
+    'Net_Sieve' => array(
+        'path' => 'Net/Sieve.php',
+        'error' => 'If you will be using Sieve scripts, make sure you are using a version of PEAR which includes the Net_Sieve class, or that you have installed the Net_Sieve package seperately.'
+    )
+);
+
+/* Get the status output now. */
+$module_output = $horde_test->phpModuleCheck($module_list);
+
+?>
+<h1>PHP Module Capabilities</h1>
+<ul>
+    <?php echo $module_output ?>
+</ul>
+
+<h1>PEAR Modules</h1>
+<ul>
+    <?php echo $horde_test->PEARModuleCheck($pear_list) ?>
+</ul>
+
+<?php
+require TEST_TEMPLATES . 'footer.inc';
diff --git a/ingo/themes/graphics/blacklist.png b/ingo/themes/graphics/blacklist.png
new file mode 100644 (file)
index 0000000..eac4395
Binary files /dev/null and b/ingo/themes/graphics/blacklist.png differ
diff --git a/ingo/themes/graphics/copy.png b/ingo/themes/graphics/copy.png
new file mode 100644 (file)
index 0000000..a5b47db
Binary files /dev/null and b/ingo/themes/graphics/copy.png differ
diff --git a/ingo/themes/graphics/disable.png b/ingo/themes/graphics/disable.png
new file mode 100644 (file)
index 0000000..eac4395
Binary files /dev/null and b/ingo/themes/graphics/disable.png differ
diff --git a/ingo/themes/graphics/enable.png b/ingo/themes/graphics/enable.png
new file mode 100644 (file)
index 0000000..21cfa00
Binary files /dev/null and b/ingo/themes/graphics/enable.png differ
diff --git a/ingo/themes/graphics/favicon.ico b/ingo/themes/graphics/favicon.ico
new file mode 100644 (file)
index 0000000..aae83b4
Binary files /dev/null and b/ingo/themes/graphics/favicon.ico differ
diff --git a/ingo/themes/graphics/forward.png b/ingo/themes/graphics/forward.png
new file mode 100644 (file)
index 0000000..0df5ae9
Binary files /dev/null and b/ingo/themes/graphics/forward.png differ
diff --git a/ingo/themes/graphics/ingo.png b/ingo/themes/graphics/ingo.png
new file mode 100644 (file)
index 0000000..89f1875
Binary files /dev/null and b/ingo/themes/graphics/ingo.png differ
diff --git a/ingo/themes/graphics/script.png b/ingo/themes/graphics/script.png
new file mode 100644 (file)
index 0000000..f5e829a
Binary files /dev/null and b/ingo/themes/graphics/script.png differ
diff --git a/ingo/themes/graphics/spam.png b/ingo/themes/graphics/spam.png
new file mode 100644 (file)
index 0000000..3798efe
Binary files /dev/null and b/ingo/themes/graphics/spam.png differ
diff --git a/ingo/themes/graphics/vacation.png b/ingo/themes/graphics/vacation.png
new file mode 100644 (file)
index 0000000..c7d8085
Binary files /dev/null and b/ingo/themes/graphics/vacation.png differ
diff --git a/ingo/themes/graphics/whitelist.png b/ingo/themes/graphics/whitelist.png
new file mode 100644 (file)
index 0000000..21cfa00
Binary files /dev/null and b/ingo/themes/graphics/whitelist.png differ
diff --git a/ingo/themes/screen.css b/ingo/themes/screen.css
new file mode 100644 (file)
index 0000000..a81e3e6
--- /dev/null
@@ -0,0 +1,9 @@
+/* Menu bottom margin, added for BC. */
+#menu {
+    margin-bottom: 8px;
+}
+
+/* Added for BC. */
+.hidden {
+    display: none;
+}
diff --git a/ingo/themes/silver/graphics/blacklist.png b/ingo/themes/silver/graphics/blacklist.png
new file mode 100644 (file)
index 0000000..1514d51
Binary files /dev/null and b/ingo/themes/silver/graphics/blacklist.png differ
diff --git a/ingo/themes/silver/graphics/copy.png b/ingo/themes/silver/graphics/copy.png
new file mode 100644 (file)
index 0000000..195dc6d
Binary files /dev/null and b/ingo/themes/silver/graphics/copy.png differ
diff --git a/ingo/themes/silver/graphics/disable.png b/ingo/themes/silver/graphics/disable.png
new file mode 100644 (file)
index 0000000..1514d51
Binary files /dev/null and b/ingo/themes/silver/graphics/disable.png differ
diff --git a/ingo/themes/silver/graphics/enable.png b/ingo/themes/silver/graphics/enable.png
new file mode 100644 (file)
index 0000000..a9925a0
Binary files /dev/null and b/ingo/themes/silver/graphics/enable.png differ
diff --git a/ingo/themes/silver/graphics/favicon.ico b/ingo/themes/silver/graphics/favicon.ico
new file mode 100644 (file)
index 0000000..461907c
Binary files /dev/null and b/ingo/themes/silver/graphics/favicon.ico differ
diff --git a/ingo/themes/silver/graphics/forward.png b/ingo/themes/silver/graphics/forward.png
new file mode 100644 (file)
index 0000000..4a6c5d3
Binary files /dev/null and b/ingo/themes/silver/graphics/forward.png differ
diff --git a/ingo/themes/silver/graphics/ingo.png b/ingo/themes/silver/graphics/ingo.png
new file mode 100644 (file)
index 0000000..44ccbf8
Binary files /dev/null and b/ingo/themes/silver/graphics/ingo.png differ
diff --git a/ingo/themes/silver/graphics/script.png b/ingo/themes/silver/graphics/script.png
new file mode 100644 (file)
index 0000000..56fcf84
Binary files /dev/null and b/ingo/themes/silver/graphics/script.png differ
diff --git a/ingo/themes/silver/graphics/spam.png b/ingo/themes/silver/graphics/spam.png
new file mode 100644 (file)
index 0000000..ebad933
Binary files /dev/null and b/ingo/themes/silver/graphics/spam.png differ
diff --git a/ingo/themes/silver/graphics/vacation.png b/ingo/themes/silver/graphics/vacation.png
new file mode 100644 (file)
index 0000000..0156c26
Binary files /dev/null and b/ingo/themes/silver/graphics/vacation.png differ
diff --git a/ingo/themes/silver/graphics/whitelist.png b/ingo/themes/silver/graphics/whitelist.png
new file mode 100644 (file)
index 0000000..a9925a0
Binary files /dev/null and b/ingo/themes/silver/graphics/whitelist.png differ
diff --git a/ingo/themes/silver/themed_graphics b/ingo/themes/silver/themed_graphics
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ingo/themes/tango-blue/graphics/blacklist.png b/ingo/themes/tango-blue/graphics/blacklist.png
new file mode 100644 (file)
index 0000000..716d648
Binary files /dev/null and b/ingo/themes/tango-blue/graphics/blacklist.png differ
diff --git a/ingo/themes/tango-blue/graphics/copy.png b/ingo/themes/tango-blue/graphics/copy.png
new file mode 100644 (file)
index 0000000..8dd48c4
Binary files /dev/null and b/ingo/themes/tango-blue/graphics/copy.png differ
diff --git a/ingo/themes/tango-blue/graphics/disable.png b/ingo/themes/tango-blue/graphics/disable.png
new file mode 100644 (file)
index 0000000..a21a814
Binary files /dev/null and b/ingo/themes/tango-blue/graphics/disable.png differ
diff --git a/ingo/themes/tango-blue/graphics/enable.png b/ingo/themes/tango-blue/graphics/enable.png
new file mode 100644 (file)
index 0000000..57fc33d
Binary files /dev/null and b/ingo/themes/tango-blue/graphics/enable.png differ
diff --git a/ingo/themes/tango-blue/graphics/favicon.ico b/ingo/themes/tango-blue/graphics/favicon.ico
new file mode 100644 (file)
index 0000000..aae83b4
Binary files /dev/null and b/ingo/themes/tango-blue/graphics/favicon.ico differ
diff --git a/ingo/themes/tango-blue/graphics/forward.png b/ingo/themes/tango-blue/graphics/forward.png
new file mode 100644 (file)
index 0000000..5c01ce4
Binary files /dev/null and b/ingo/themes/tango-blue/graphics/forward.png differ
diff --git a/ingo/themes/tango-blue/graphics/ingo.png b/ingo/themes/tango-blue/graphics/ingo.png
new file mode 100644 (file)
index 0000000..939bef0
Binary files /dev/null and b/ingo/themes/tango-blue/graphics/ingo.png differ
diff --git a/ingo/themes/tango-blue/graphics/script.png b/ingo/themes/tango-blue/graphics/script.png
new file mode 100644 (file)
index 0000000..ba510f4
Binary files /dev/null and b/ingo/themes/tango-blue/graphics/script.png differ
diff --git a/ingo/themes/tango-blue/graphics/spam.png b/ingo/themes/tango-blue/graphics/spam.png
new file mode 100644 (file)
index 0000000..a6def51
Binary files /dev/null and b/ingo/themes/tango-blue/graphics/spam.png differ
diff --git a/ingo/themes/tango-blue/graphics/vacation.png b/ingo/themes/tango-blue/graphics/vacation.png
new file mode 100644 (file)
index 0000000..12e2fe9
Binary files /dev/null and b/ingo/themes/tango-blue/graphics/vacation.png differ
diff --git a/ingo/themes/tango-blue/graphics/whitelist.png b/ingo/themes/tango-blue/graphics/whitelist.png
new file mode 100644 (file)
index 0000000..892054a
Binary files /dev/null and b/ingo/themes/tango-blue/graphics/whitelist.png differ
diff --git a/ingo/themes/tango-blue/themed_graphics b/ingo/themes/tango-blue/themed_graphics
new file mode 100644 (file)
index 0000000..e69de29
diff --git a/ingo/vacation.php b/ingo/vacation.php
new file mode 100644 (file)
index 0000000..c177e27
--- /dev/null
@@ -0,0 +1,159 @@
+<?php
+/**
+ * Vacation script.
+ *
+ * Copyright 2002-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author Mike Cochrane <mike@graftonhall.co.nz>
+ */
+
+require_once dirname(__FILE__) . '/lib/base.php';
+
+/* Redirect if vacation is not available. */
+if (!in_array(Ingo_Storage::ACTION_VACATION, $_SESSION['ingo']['script_categories'])) {
+    $notification->push(_("Vacation is not supported in the current filtering driver."), 'horde.error');
+    header('Location: ' . Horde::applicationUrl('filters.php', true));
+    exit;
+}
+
+/* Get vacation object and rules. */
+$vacation = &$ingo_storage->retrieve(Ingo_Storage::ACTION_VACATION);
+$filters = &$ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS);
+$vac_id = $filters->findRuleId(Ingo_Storage::ACTION_VACATION);
+$vac_rule = $filters->getRule($vac_id);
+
+/* Load libraries. */
+require_once 'Horde/Variables.php';
+$vars = Variables::getDefaultVariables();
+if ($vars->get('submitbutton') == _("Return to Rules List")) {
+    header('Location: ' . Horde::applicationUrl('filters.php', true));
+    exit;
+}
+
+/* Build form. */
+$form = new Horde_Form($vars);
+$form->setSection('basic', _("Basic Settings"));
+
+$v = &$form->addVariable(_("Start of vacation:"), 'start', 'monthdayyear', '');
+$v->setHelp('vacation-period');
+$form->addVariable(_("End of vacation:"), 'end', 'monthdayyear', '');
+$v = &$form->addVariable(_("Subject of vacation message:"), 'subject', 'text', false);
+$v->setHelp('vacation-subject');
+$v = &$form->addVariable(_("Reason:"), 'reason', 'longtext', false, false, null, array(10, 40));
+$v->setHelp('vacation-reason');
+$form->setSection('advanced', _("Advanced Settings"));
+if (empty($conf['hooks']['vacation_addresses']) ||
+    empty($conf['hooks']['vacation_only'])) {
+    $v = &$form->addVariable(_("My email addresses:"), 'addresses', 'longtext', true, false, null, array(5, 40));
+    $v->setHelp('vacation-myemail');
+}
+$v = &$form->addVariable(_("Addresses to not send responses to:"), 'excludes', 'longtext', false, false, null, array(10, 40));
+$v->setHelp('vacation-noresponse');
+$v = &$form->addVariable(_("Do not send responses to bulk or list messages?"), 'ignorelist', 'boolean', false);
+$v->setHelp('vacation-bulk');
+$v = &$form->addVariable(_("Number of days between vacation replies:"), 'days', 'int', false);
+$v->setHelp('vacation-days');
+$form->setButtons(_("Save"));
+
+/* Perform requested actions. */
+if ($form->validate($vars)) {
+    $form->getInfo($vars, $info);
+    $vacation->setVacationAddresses(isset($info['addresses']) ? $info['addresses'] : '');
+    $vacation->setVacationDays($info['days']);
+    $vacation->setVacationExcludes($info['excludes']);
+    $vacation->setVacationIgnorelist(($info['ignorelist'] == 'on'));
+    $vacation->setVacationReason($info['reason']);
+    $vacation->setVacationSubject($info['subject']);
+    $vacation->setVacationStart($info['start']);
+    $vacation->setVacationEnd($info['end']);
+
+    $success = true;
+    if (is_a($result = $ingo_storage->store($vacation), 'PEAR_Error')) {
+        $notification->push($result);
+        $success = false;
+    } else {
+        $notification->push(_("Changes saved."), 'horde.success');
+        if ($vars->get('submitbutton') == _("Save and Enable")) {
+            $filters->ruleEnable($vac_id);
+            if (is_a($result = $ingo_storage->store($filters), 'PEAR_Error')) {
+                $notification->push($result);
+                $success = false;
+            } else {
+                $notification->push(_("Rule Enabled"), 'horde.success');
+                $vac_rule['disable'] = false;
+            }
+        } elseif ($vars->get('submitbutton') == _("Save and Disable")) {
+            $filters->ruleDisable($vac_id);
+            if (is_a($result = $ingo_storage->store($filters), 'PEAR_Error')) {
+                $notification->push($result);
+                $success = false;
+            } else {
+                $notification->push(_("Rule Disabled"), 'horde.success');
+                $vac_rule['disable'] = true;
+            }
+        }
+    }
+
+    if ($success && $prefs->getValue('auto_update')) {
+        Ingo::updateScript();
+    }
+
+    /* Update the timestamp for the rules. */
+    $_SESSION['ingo']['change'] = time();
+}
+
+/* Add buttons depending on the above actions. */
+if (empty($vac_rule['disable'])) {
+    $form->appendButtons(_("Save and Disable"));
+} else {
+    $form->appendButtons(_("Save and Enable"));
+}
+$form->appendButtons(_("Return to Rules List"));
+
+/* Make sure we have at least one address. */
+if (!$vacation->getVacationAddresses()) {
+    require_once 'Horde/Identity.php';
+    $identity = &Identity::singleton('none');
+    $addresses = implode("\n", $identity->getAll('from_addr'));
+    /* Remove empty lines. */
+    $addresses = preg_replace('/\n+/', "\n", $addresses);
+    if (empty($addresses)) {
+        $addresses = Auth::getAuth();
+    }
+    $vacation->setVacationAddresses($addresses);
+}
+
+/* Set default values. */
+if (!$form->isSubmitted()) {
+    $vars->set('addresses', implode("\n", $vacation->getVacationAddresses()));
+    $vars->set('excludes', implode("\n", $vacation->getVacationExcludes()));
+    $vars->set('ignorelist', $vacation->getVacationIgnorelist());
+    $vars->set('days', $vacation->getVacationDays());
+    $vars->set('subject', $vacation->getVacationSubject());
+    $vars->set('reason', $vacation->getVacationReason());
+    $vars->set('start', $vacation->getVacationStart());
+    $vars->set('end', $vacation->getVacationEnd());
+    $vars->set('start_year', $vacation->getVacationStartYear());
+    $vars->set('start_month', $vacation->getVacationStartMonth() - 1);
+    $vars->set('start_day', $vacation->getVacationStartDay() - 1);
+    $vars->set('end_year', $vacation->getVacationEndYear());
+    $vars->set('end_month', $vacation->getVacationEndMonth() - 1);
+    $vars->set('end_day', $vacation->getVacationEndDay() - 1);
+}
+
+/* Set form title. */
+$form_title = _("Vacation");
+if (!empty($vac_rule['disable'])) {
+    $form_title .= ' [<span class="form-error">' . _("Disabled") . '</span>]';
+}
+$form_title .= ' ' . Help::link('ingo', 'vacation');
+$form->setTitle($form_title);
+
+$title = _("Vacation Edit");
+require INGO_TEMPLATES . '/common-header.inc';
+require INGO_TEMPLATES . '/menu.inc';
+$form->renderActive(new Horde_Form_Renderer(array('encode_title' => false)), $vars, 'vacation.php', 'post');
+require $registry->get('templates', 'horde') . '/common-footer.inc';
diff --git a/ingo/whitelist.php b/ingo/whitelist.php
new file mode 100644 (file)
index 0000000..2d14cc5
--- /dev/null
@@ -0,0 +1,60 @@
+<?php
+/**
+ * Whitelist script.
+ *
+ * Copyright 2002-2009 The Horde Project (http://www.horde.org/)
+ *
+ * See the enclosed file LICENSE for license information (ASL).  If you
+ * did not receive this file, see http://www.horde.org/licenses/asl.php.
+ *
+ * @author Mike Cochrane <mike@graftonhall.co.nz>
+ * @author Brent J. Nordquist <bjn@horde.org>
+ * @author Michael Slusarz <slusarz@horde.org>
+ */
+
+require_once dirname(__FILE__) . '/lib/base.php';
+
+/* Redirect if whitelist not available. */
+if (!in_array(Ingo_Storage::ACTION_WHITELIST, $_SESSION['ingo']['script_categories'])) {
+    $notification->push(_("Whitelist is not supported in the current filtering driver."), 'horde.error');
+    header('Location: ' . Horde::applicationUrl('filters.php', true));
+    exit;
+}
+
+$whitelist = &$ingo_storage->retrieve(Ingo_Storage::ACTION_WHITELIST);
+
+/* Perform requested actions. */
+$actionID = Util::getFormData('actionID');
+switch ($actionID) {
+case 'rule_update':
+    $ret = $whitelist->setWhitelist(Util::getFormData('whitelist'));
+    if (is_a($ret, 'PEAR_Error')) {
+        $notification->push($ret, $ret->getCode());
+    } else {
+        if (!$ingo_storage->store($whitelist)) {
+            $notification->push("Error saving changes.", 'horde.error');
+        } else {
+            $notification->push(_("Changes saved."), 'horde.success');
+
+            if ($prefs->getValue('auto_update')) {
+                /* This does its own $notification->push() on error: */
+                Ingo::updateScript();
+            }
+        }
+
+        /* Update the timestamp for the rules. */
+        $_SESSION['ingo']['change'] = time();
+    }
+
+    break;
+}
+
+/* Get the whitelist rule. */
+$filters = &$ingo_storage->retrieve(Ingo_Storage::ACTION_FILTERS);
+$wl_rule = $filters->findRule(Ingo_Storage::ACTION_WHITELIST);
+
+$title = _("Whitelist Edit");
+require INGO_TEMPLATES . '/common-header.inc';
+require INGO_TEMPLATES . '/menu.inc';
+require INGO_TEMPLATES . '/whitelist/whitelist.inc';
+require $registry->get('templates', 'horde') . '/common-footer.inc';